Pedidos.apl 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. #include "PROTHEUS.CH"
  2. #include "RWMAKE.CH"
  3. #include "APWEBEX.CH"
  4. #include "TOPCONN.CH"
  5. #include "TBICONN.CH"
  6. /*__________________________________________________________________________
  7. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  8. ¦¦+-----------------------------------------------------------------------+¦¦
  9. ¦¦¦Funçäo ¦ Pedidos ¦ Autor ¦ Lucilene Mendes ¦ Data ¦02.05.24 ¦¦¦
  10. ¦¦+----------+------------------------------------------------------------¦¦¦
  11. ¦¦¦Descriçäo ¦ Grid com os pedidos do cliente. ¦¦¦
  12. ¦¦+-----------------------------------------------------------------------+¦¦
  13. ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
  14. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
  15. User Function Pedidos()
  16. Local cHtml
  17. Local cLink := ""
  18. Local cLinkTot := ""
  19. Local cEmpresa := ""
  20. Local cDataDe := ""
  21. Local cDataAte := ""
  22. Local cFiltDe := ""
  23. Local cFilAte := ""
  24. Local cEndServ := ""
  25. // Local cStatus := ""
  26. Local aEmpresas := {}
  27. Local aFiliais := {}
  28. Local _nI := 0
  29. Private cColunas:= ""
  30. Private cItens := ""
  31. Private cTopo := ""
  32. Private cFooter := ""
  33. Private cSite := "u_PortalLogin.apw"
  34. Private cPagina := "Pedidos"
  35. Private cTitle := ""
  36. Private lTableTools:= .T.
  37. Private lSidebar:= .F.
  38. Private cCodLogin := ""
  39. Private cLoginGet := ""
  40. Web Extended Init cHtml Start U_inSite()
  41. cVendLogin := u_GetUsrPR()
  42. cCodLogin := U_SetParPR(cVendLogin)
  43. If Empty(HttpSession->CodVend)
  44. cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL='+cSite+'">'
  45. Return cHtml
  46. Else
  47. If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend
  48. HttpSession->CodVend:= HttpSession->Superv
  49. Endif
  50. Endif
  51. // Pega do parâmetro com o Titulo do Portal
  52. cTitle := SuperGetMV("PS_TITLE", .T., "Portal SMS")
  53. // Define a funcao a ser chama no link
  54. cSite := "u_SMSPortal.apw?PR="+cCodLogin
  55. // Monta o cabeçalho para a pagina
  56. cHeader := U_PSHeader(cTitle, cSite)
  57. //Função que atualiza os menus
  58. cMenus := U_GetMenus(AllTrim(Upper(Procname())), cLoginGet)
  59. //Atualiza variáveis
  60. cEndServ := GetMv('MV_WFBRWSR')
  61. //Tratamento dos filtros
  62. If type("HttpPost->DataDe") <> "U"
  63. //Se vazio, usa as datas padrão para evitar erro na query
  64. If Empty(HttpPost->DataDe) .or. Empty(HttpPost->DataAte)
  65. cDataDe:= dtos(date()-30)
  66. cDataAte:= dtos(date())
  67. Else
  68. cDataDe:= dtos(ctod(HttpPost->DataDe))
  69. cDataAte:= dtos(ctod(HttpPost->DataAte))
  70. Endif
  71. //Atualiza as variáveis no valor do filtro
  72. cFiltDe:= dtoc(stod(cDataDe))
  73. cFilAte:= dtoc(stod(cDataAte))
  74. cEmpresa:= HttpPost->filempresa
  75. Else
  76. //Variáveis dos input dos filtros
  77. cFiltDe:= dtoc(date()-30)
  78. cFilAte:= dtoc(date())
  79. //Variáveis de filtro da query
  80. cDataDe:= dtos(date()-30)
  81. cDataAte:= dtos(date())
  82. Endif
  83. //Filtros
  84. cTopo:= '<div class="row form-group">'
  85. cTopo+= ' <div class="col-sm-12" align="">'
  86. If u_getAcesso('4','1')
  87. cTopo+= ' <div class="col-sm-2" style="padding: 20px;">'
  88. cTopo+= ' <button class="btn btn-primary" id="btAddOrc" name="btAddPed" onclick="javascript: getFilVend();">'
  89. // cTopo+= ' <button class="btn btn-primary" id="btAddOrc" name="btAddOrc" onclick="window.document.location='+"'"+cLink+"'"+'";>'
  90. cTopo+= ' <i class="fa fa-plus"></i> Novo Pedido</button>'
  91. cTopo+= ' </div>'
  92. Endif
  93. cTopo+= ' <br>'
  94. cTopo+= ' <form name="formGrid" id="formGrid" method="POST" action="U_Pedidos.apw?PR='+cCodLogin+'">'
  95. cTopo+= ' <label class="col-md-1 control-label">Empresa:</label>'
  96. cTopo+= ' <div class="col-sm-2">'
  97. cTopo+= ' <div class="input-group">'
  98. //cTopo+= ' <select data-plugin-selectTwo class="form-control populate placeholder" name="filempresa" id="filempresa" '
  99. cTopo+= ' <select data-plugin-selectTwo class="form-control populate mb-md" name="filempresa" id="filempresa" '
  100. //cTopo+= ' data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1","placeholder": "Selecione...", "allowClear": false}'+"'"+' required="" aria-required="true" value="'+cEmpresa+'">'
  101. cTopo+= ' data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1"}'+"'"+' required="" aria-required="true" value="'+cEmpresa+'">'
  102. cTopo+= ' <option value=""></option>'
  103. aEmpresas := FWAllCompany()
  104. For _nI := 1 To Len(aEmpresas)
  105. aAdd(aFiliais,{aEmpresas[_ni],Alltrim(FWArrFilAtu(cEmpant,aEmpresas[_nI])[19])})
  106. Next
  107. aSort(aFiliais, , , { |x,y| x[2] < y[2] })
  108. For _nI := 1 To Len(aFiliais)
  109. cTopo+= ' <option value="'+aFiliais[_nI,1]+'"'+Iif(cEmpresa == aFiliais[_nI,1],' selected','')+'>'+aFiliais[_nI,2]+'</option>'
  110. Next
  111. cTopo+= ' </select>'
  112. cTopo+= ' </div>'
  113. cTopo+= ' </div>'
  114. cTopo+= ' <label class="col-md-1 control-label">Emissão De:</label>'
  115. cTopo+= ' <div class="col-md-2">'
  116. cTopo+= ' <div class="input-group">'
  117. cTopo+= ' <span class="input-group-addon">'
  118. cTopo+= ' <i class="fa fa-calendar"></i>'
  119. cTopo+= ' </span>'
  120. cTopo+= ' <input data-plugin-datepicker="" data-plugin-options='+"'"+'{"autoclose": "true", "language": "pt-BR",'
  121. cTopo+= ' "daysOfWeekDisabled": "","daysOfWeekHighlighted":"[0]"}'+"'"+' value="'+cFiltDe+'" '
  122. cTopo+= ' placeholder="__/__/____" id="datade" name="datade" class="form-control only-numbers" type="text"></input>'
  123. cTopo+= ' </div>'
  124. cTopo+= ' </div>'
  125. cTopo+= ' <label class="col-md-1 control-label">Emissão Até:</label>'
  126. cTopo+= ' <div class="col-md-2">'
  127. cTopo+= ' <div class="input-group">'
  128. cTopo+= ' <span class="input-group-addon">'
  129. cTopo+= ' <i class="fa fa-calendar"></i>'
  130. cTopo+= ' </span>'
  131. cTopo+= ' <input data-plugin-datepicker="" data-plugin-options='+"'"+'{"autoclose": "true", "language": "pt-BR",'
  132. cTopo+= ' "daysOfWeekDisabled": "","daysOfWeekHighlighted":"[0]"}'+"'"+' value="'+cFilAte+'" '
  133. cTopo+= ' placeholder="__/__/____" id="dataate" name="dataate" class="form-control only-numbers" type="text"></input>'
  134. cTopo+= ' </div>'
  135. cTopo+= ' </div>'
  136. cTopo+= ' <div class="col-md-1">'
  137. cTopo+= ' <button class="btn btn-primary" id="btFiltro" value="" onclick="this.value= '+"'"+'Aguarde...'+"'"+';this.disabled= '+"'"+'disabled'+"'"+';Filtro()" name="btFiltro">'
  138. cTopo+= ' <i class="fa fa-filter"></i> Filtrar</button>'
  139. cTopo+= ' </div>'
  140. cTopo+= ' </form>'
  141. cTopo+= ' </div>'
  142. cTopo+= '</div>'
  143. // Busca as notas fiscais
  144. cQry := " SELECT DISTINCT C5_FILIAL, C5_NUM, C5_CLIENTE, C5_LOJACLI, A1_NREDUZ, A1_EMAIL, C5_EMISSAO, C5_VEND1 VEND, SUM(C6_VALOR) VALOR, C5_NOTA, C5_SERIE, SC5.R_E_C_N_O_ RECSC5, "
  145. cQry += " CASE "
  146. cQry += " WHEN C5_LIBEROK = '' AND C5_NOTA = '' AND C5_BLQ = '' AND SC5.R_E_C_D_E_L_ = 0 THEN 'ABERTO' "
  147. cQry += " WHEN C5_LIBEROK <> '' AND C5_NOTA = '' AND C5_BLQ = '' AND SC5.R_E_C_D_E_L_ = 0 THEN 'LIBERADO' "
  148. cQry += " WHEN C5_BLQ = '1' AND SC5.R_E_C_D_E_L_ = 0 THEN 'BLOQUEADO POR REGRA' "
  149. cQry += " WHEN C5_BLQ = '2' AND SC5.R_E_C_D_E_L_ = 0 THEN 'BLOQUEADO' " //BLOQUEADO POR VERBA
  150. cQry += " WHEN C5_NOTA <> '' AND SC5.R_E_C_D_E_L_ = 0 THEN 'FATURADO' "
  151. cQry += " WHEN SC5.R_E_C_D_E_L_ <> 0 THEN 'CANCELADO' "
  152. cQry += " ELSE 'ABERTO' "
  153. cQry += " END AS C5_STATUS "
  154. cQry += " FROM "+RetSqlName("SC5")+" SC5 "
  155. cQry += " INNER JOIN "+RetSqlName("SA1")+" SA1 ON A1_FILIAL = '"+xFilial("SA1")+"' AND SA1.A1_COD = SC5.C5_CLIENTE AND SA1.A1_LOJA = SC5.C5_LOJACLI AND SA1.D_E_L_E_T_ = ' ' "
  156. cQry += " INNER JOIN "+RetSqlName("SC6")+" SC6 ON C6_FILIAL = C5_FILIAL AND C6_NUM = C5_NUM AND SC6.D_E_L_E_T_ = ' ' "
  157. cQry += " WHERE " // AND C5_FILIAL = '"+xFilial("SF2")+"'
  158. cQry += " C5_CLIENTE = A1_COD AND C5_LOJACLI = A1_LOJA "
  159. If !Empty(cEmpresa)
  160. cQry += " AND SUBSTRING(C5_FILIAL,1,2) = '"+cEmpresa+"' "
  161. Endif
  162. If HttpSession->Interno <> 'S'
  163. If HttpSession->Tipo = 'S' //Supervisor acessa todos os orçamentos da sua equipe
  164. cQry+= " AND C5_VEND in "+FormatIn(HttpSession->Equipe,"|")+" "
  165. Else
  166. cQry+= " AND C5_VEND = '"+cVendLogin+"' "
  167. Endif
  168. Endif
  169. cQry += " AND C5_TIPO = 'N' "
  170. cQry += " AND C5_EMISSAO between '"+cDataDe+"' and '"+cDataAte+"' "
  171. cQry += " AND SC5.D_E_L_E_T_ = ' ' "
  172. cQry += " GROUP BY C5_FILIAL, C5_NUM, C5_CLIENTE, C5_LOJACLI, A1_NREDUZ, A1_EMAIL, C5_EMISSAO, C5_VEND1, C5_NOTA, C5_SERIE, C5_LIBEROK, C5_BLQ, C5_STATUS, SC5.R_E_C_N_O_, SC5.R_E_C_D_E_L_ "
  173. cQry += " ORDER BY C5_NUM, C5_EMISSAO "
  174. If Select("QRY") > 0
  175. QRY->(dbCloseArea())
  176. Endif
  177. APWExOpenQuery(ChangeQuery(cQry),'QRY',.T.)
  178. TcSetField("QRY","C5_EMISSAO","D")
  179. //Cabeçalho do grid
  180. cColunas+='<th>Empresa</th>'
  181. cColunas+='<th>Pedido</th>'
  182. cColunas+='<th>Emissão</th>'
  183. cColunas+='<th>Cliente</th>'
  184. cColunas+='<th>Nome Fantasia</th>'
  185. cColunas+='<th>Valor</th>'
  186. cColunas+='<th>Nota Fiscal</th>'
  187. cColunas+='<th>Série</th>'
  188. cColunas+='<th>Status</th>'
  189. // If HttpSession->Tipo = 'S' //Supervisor
  190. // cColunas+='<th>Vendedor</th>'
  191. // Endif
  192. aStatus:= StrTokArr(Posicione('SX3',2,'C5_STATUS','X3CBox()'),";")
  193. While QRY->(!Eof())
  194. cLink:= "U_MntPed.apw?PR="+cCodLogin+"&rec="+cValtoChar(QRY->RECSC5)"
  195. cLinkTot:='onclick="window.document.location='+"'"+cLink+"&opc=view'"+';"'
  196. cItens+='<tr>'+CRLF
  197. cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_FILIAL+'</td>'
  198. cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_NUM+'</td>'
  199. cItens+=' <td role="button" '+cLinkTot+' data-order="'+dtos(QRY->C5_EMISSAO)+'">'+DTOC(QRY->C5_EMISSAO)+'</td>'
  200. cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_CLIENTE+'/'+QRY->C5_LOJACLI+'</td>'
  201. cItens+=' <td role="button" '+cLinkTot+'>'+Alltrim(QRY->A1_NREDUZ)+'</td>'
  202. cItens+=' <td role="button" '+cLinkTot+'>'+Transform(QRY->VALOR,PesqPicT("SF2","F2_VALMERC"))+'</td>'
  203. cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_NOTA+'</td>'
  204. cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_SERIE+'</td>'
  205. // nPosStatus:= aScan(aStatus,{|x| Left(x,2)== QRY->C5_STATUS})
  206. // If nPosStatus > 0
  207. // cStatus:= Substr(aStatus[nPosStatus],4)
  208. // Else
  209. // cStatus:= ""
  210. // Endif
  211. // cItens+=' <td role="button" '+cLinkTot+'>'+cStatus+'</td>'
  212. cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_STATUS+'</td>'
  213. cItens+=' <td role="button" '+cLinkTot+'>'
  214. If Empty(QRY->C5_NOTA)
  215. If u_getAcesso('4','2')
  216. cItens+=' <a href="'+cLink+'&opc=edit" class="on-default" data-toggle="tooltip" data-original-title="Alterar Pedido"><i class="fa fa-pencil"></i></a>'
  217. Endif
  218. If u_getAcesso('4','3')
  219. cItens+=' <a href="'+cLink+'&opc=dele" class="on-default" data-toggle="tooltip" data-original-title="Excluir Pedido"><i class="fa fa-trash-o"></i></a>'
  220. Endif
  221. Endif
  222. cItens+=' </td>'
  223. // If QRY->C5_STATUS = "A"
  224. // cItens+=' <a href="'+cLink+'&opc=edit" class="on-default" data-toggle="tooltip" data-original-title="Alterar Pedido"><i class="fa fa-pencil"></i></a>'
  225. // cItens+=' <a href="'+cLink+'&opc=dele" class="on-default" data-toggle="tooltip" data-original-title="Excluir Pedido"><i class="fa fa-trash-o"></i></a>'
  226. // EndIf
  227. cItens+='</tr>'+CRLF
  228. QRY->(dbSkip())
  229. End
  230. //Retorna o HTML para construção da página
  231. cHtml := H_SMSGrid()
  232. Web Extended End
  233. Return (cHTML)