#include "PROTHEUS.CH" #include "RWMAKE.CH" #include "APWEBEX.CH" #include "TOPCONN.CH" #include "TBICONN.CH" /*__________________________________________________________________________ ����������������������������������������������������������������������������� ��+-----------------------------------------------------------------------+�� ���Fun��o � Pedidos � Autor � Lucilene Mendes � Data �02.05.24 ��� ��+----------+------------------------------------------------------------��� ���Descri��o � Grid com os pedidos do cliente. ��� ��+-----------------------------------------------------------------------+�� ����������������������������������������������������������������������������� ���������������������������������������������������������������������������*/ User Function Pedidos() Local cHtml Local cLink := "" Local cLinkTot := "" Local cEmpresa := "" Local cDataDe := "" Local cDataAte := "" Local cFiltDe := "" Local cFilAte := "" Local cEndServ := "" // Local cStatus := "" Local aEmpresas := {} Local aFiliais := {} Local _nI := 0 Private cColunas:= "" Private cItens := "" Private cTopo := "" Private cFooter := "" Private cSite := "u_PortalLogin.apw" Private cPagina := "Pedidos" Private cTitle := "" Private lTableTools:= .T. Private lSidebar:= .F. Private cCodLogin := "" Private cLoginGet := "" Web Extended Init cHtml Start U_inSite() cVendLogin := u_GetUsrPR() cCodLogin := U_SetParPR(cVendLogin) If Empty(HttpSession->CodVend) cHtml:= '<META HTTP-EQUIV="Refresh" CONTENT="0 ; URL='+cSite+'">' Return cHtml Else If !Empty(HttpSession->Superv) .and. HttpSession->Superv <> HttpSession->CodVend HttpSession->CodVend:= HttpSession->Superv Endif Endif // Pega do par�metro com o Titulo do Portal cTitle := SuperGetMV("PS_TITLE", .T., "Portal SMS") // Define a funcao a ser chama no link cSite := "u_SMSPortal.apw?PR="+cCodLogin // Monta o cabe�alho para a pagina cHeader := U_PSHeader(cTitle, cSite) //Fun��o que atualiza os menus cMenus := U_GetMenus(AllTrim(Upper(Procname())), cLoginGet) //Atualiza vari�veis cEndServ := GetMv('MV_WFBRWSR') //Tratamento dos filtros If type("HttpPost->DataDe") <> "U" //Se vazio, usa as datas padr�o para evitar erro na query If Empty(HttpPost->DataDe) .or. Empty(HttpPost->DataAte) cDataDe:= dtos(date()-30) cDataAte:= dtos(date()) Else cDataDe:= dtos(ctod(HttpPost->DataDe)) cDataAte:= dtos(ctod(HttpPost->DataAte)) Endif //Atualiza as vari�veis no valor do filtro cFiltDe:= dtoc(stod(cDataDe)) cFilAte:= dtoc(stod(cDataAte)) cEmpresa:= HttpPost->filempresa Else //Vari�veis dos input dos filtros cFiltDe:= dtoc(date()-30) cFilAte:= dtoc(date()) //Vari�veis de filtro da query cDataDe:= dtos(date()-30) cDataAte:= dtos(date()) Endif //Filtros cTopo:= '<div class="row form-group">' cTopo+= ' <div class="col-sm-12" align="">' cTopo+= ' <div class="col-sm-2" style="padding: 20px;">' cTopo+= ' <button class="btn btn-primary" id="btAddOrc" name="btAddPed" onclick="javascript: getFilVend();">' // cTopo+= ' <button class="btn btn-primary" id="btAddOrc" name="btAddOrc" onclick="window.document.location='+"'"+cLink+"'"+'";>' cTopo+= ' <i class="fa fa-plus"></i> Novo Pedido</button>' cTopo+= ' </div>' cTopo+= ' <br>' cTopo+= ' <form name="formGrid" id="formGrid" method="POST" action="U_Pedidos.apw?PR='+cCodLogin+'">' cTopo+= ' <label class="col-md-1 control-label">Empresa:</label>' cTopo+= ' <div class="col-sm-2">' cTopo+= ' <div class="input-group">' //cTopo+= ' <select data-plugin-selectTwo class="form-control populate placeholder" name="filempresa" id="filempresa" ' cTopo+= ' <select data-plugin-selectTwo class="form-control populate mb-md" name="filempresa" id="filempresa" ' //cTopo+= ' data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1","placeholder": "Selecione...", "allowClear": false}'+"'"+' required="" aria-required="true" value="'+cEmpresa+'">' cTopo+= ' data-plugin-options='+"'"+'{"minimumResultsForSearch": "-1"}'+"'"+' required="" aria-required="true" value="'+cEmpresa+'">' cTopo+= ' <option value=""></option>' aEmpresas := FWAllCompany() For _nI := 1 To Len(aEmpresas) aAdd(aFiliais,{aEmpresas[_ni],Alltrim(FWArrFilAtu(cEmpant,aEmpresas[_nI])[19])}) Next aSort(aFiliais, , , { |x,y| x[2] < y[2] }) For _nI := 1 To Len(aFiliais) cTopo+= ' <option value="'+aFiliais[_nI,1]+'"'+Iif(cEmpresa == aFiliais[_nI,1],' selected','')+'>'+aFiliais[_nI,2]+'</option>' Next cTopo+= ' </select>' cTopo+= ' </div>' cTopo+= ' </div>' cTopo+= ' <label class="col-md-1 control-label">Emiss�o De:</label>' cTopo+= ' <div class="col-md-2">' cTopo+= ' <div class="input-group">' cTopo+= ' <span class="input-group-addon">' cTopo+= ' <i class="fa fa-calendar"></i>' cTopo+= ' </span>' cTopo+= ' <input data-plugin-datepicker="" data-plugin-options='+"'"+'{"autoclose": "true", "language": "pt-BR",' cTopo+= ' "daysOfWeekDisabled": "","daysOfWeekHighlighted":"[0]"}'+"'"+' value="'+cFiltDe+'" ' cTopo+= ' placeholder="__/__/____" id="datade" name="datade" class="form-control only-numbers" type="text"></input>' cTopo+= ' </div>' cTopo+= ' </div>' cTopo+= ' <label class="col-md-1 control-label">Emiss�o At�:</label>' cTopo+= ' <div class="col-md-2">' cTopo+= ' <div class="input-group">' cTopo+= ' <span class="input-group-addon">' cTopo+= ' <i class="fa fa-calendar"></i>' cTopo+= ' </span>' cTopo+= ' <input data-plugin-datepicker="" data-plugin-options='+"'"+'{"autoclose": "true", "language": "pt-BR",' cTopo+= ' "daysOfWeekDisabled": "","daysOfWeekHighlighted":"[0]"}'+"'"+' value="'+cFilAte+'" ' cTopo+= ' placeholder="__/__/____" id="dataate" name="dataate" class="form-control only-numbers" type="text"></input>' cTopo+= ' </div>' cTopo+= ' </div>' cTopo+= ' <div class="col-md-1">' cTopo+= ' <button class="btn btn-primary" id="btFiltro" value="" onclick="this.value= '+"'"+'Aguarde...'+"'"+';this.disabled= '+"'"+'disabled'+"'"+';Filtro()" name="btFiltro">' cTopo+= ' <i class="fa fa-filter"></i> Filtrar</button>' cTopo+= ' </div>' cTopo+= ' </form>' cTopo+= ' </div>' cTopo+= '</div>' // Busca as notas fiscais 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, " cQry += " CASE " cQry += " WHEN C5_LIBEROK = '' AND C5_NOTA = '' AND C5_BLQ = '' AND SC5.R_E_C_D_E_L_ = 0 THEN 'ABERTO' " cQry += " WHEN C5_LIBEROK <> '' AND C5_NOTA = '' AND C5_BLQ = '' AND SC5.R_E_C_D_E_L_ = 0 THEN 'LIBERADO' " cQry += " WHEN C5_BLQ = '1' AND SC5.R_E_C_D_E_L_ = 0 THEN 'BLOQUEADO POR REGRA' " cQry += " WHEN C5_BLQ = '2' AND SC5.R_E_C_D_E_L_ = 0 THEN 'BLOQUEADO' " //BLOQUEADO POR VERBA cQry += " WHEN C5_NOTA <> '' AND SC5.R_E_C_D_E_L_ = 0 THEN 'FATURADO' " cQry += " WHEN SC5.R_E_C_D_E_L_ <> 0 THEN 'CANCELADO' " cQry += " ELSE 'ABERTO' " cQry += " END AS C5_STATUS " cQry += " FROM "+RetSqlName("SC5")+" SC5 " 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_ = ' ' " cQry += " INNER JOIN "+RetSqlName("SC6")+" SC6 ON C6_FILIAL = C5_FILIAL AND C6_NUM = C5_NUM AND SC6.D_E_L_E_T_ = ' ' " cQry += " WHERE " // AND C5_FILIAL = '"+xFilial("SF2")+"' cQry += " C5_CLIENTE = A1_COD AND C5_LOJACLI = A1_LOJA " If !Empty(cEmpresa) cQry += " AND SUBSTRING(C5_FILIAL,1,2) = '"+cEmpresa+"' " Endif cQry += " AND C5_TIPO = 'N' " cQry += " AND C5_EMISSAO between '"+cDataDe+"' and '"+cDataAte+"' " cQry += " AND SC5.D_E_L_E_T_ = ' ' " 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_ " cQry += " ORDER BY C5_NUM, C5_EMISSAO " If Select("QRY") > 0 QRY->(dbCloseArea()) Endif APWExOpenQuery(ChangeQuery(cQry),'QRY',.T.) TcSetField("QRY","C5_EMISSAO","D") //Cabe�alho do grid cColunas+='<th>Empresa</th>' cColunas+='<th>Pedido</th>' cColunas+='<th>Emiss�o</th>' cColunas+='<th>Cliente</th>' cColunas+='<th>Nome Fantasia</th>' cColunas+='<th>Valor</th>' cColunas+='<th>Nota Fiscal</th>' cColunas+='<th>S�rie</th>' cColunas+='<th>Status</th>' // If HttpSession->Tipo = 'S' //Supervisor // cColunas+='<th>Vendedor</th>' // Endif aStatus:= StrTokArr(Posicione('SX3',2,'C5_STATUS','X3CBox()'),";") While QRY->(!Eof()) cLink:= "U_MntPed.apw?PR="+cCodLogin+"&rec="+cValtoChar(QRY->RECSC5)" cLinkTot:='onclick="window.document.location='+"'"+cLink+"&opc=view'"+';"' cItens+='<tr>'+CRLF cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_FILIAL+'</td>' cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_NUM+'</td>' cItens+=' <td role="button" '+cLinkTot+' data-order="'+dtos(QRY->C5_EMISSAO)+'">'+DTOC(QRY->C5_EMISSAO)+'</td>' cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_CLIENTE+'/'+QRY->C5_LOJACLI+'</td>' cItens+=' <td role="button" '+cLinkTot+'>'+Alltrim(QRY->A1_NREDUZ)+'</td>' cItens+=' <td role="button" '+cLinkTot+'>'+Transform(QRY->VALOR,PesqPicT("SF2","F2_VALMERC"))+'</td>' cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_NOTA+'</td>' cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_SERIE+'</td>' // nPosStatus:= aScan(aStatus,{|x| Left(x,2)== QRY->C5_STATUS}) // If nPosStatus > 0 // cStatus:= Substr(aStatus[nPosStatus],4) // Else // cStatus:= "" // Endif // cItens+=' <td role="button" '+cLinkTot+'>'+cStatus+'</td>' cItens+=' <td role="button" '+cLinkTot+'>'+QRY->C5_STATUS+'</td>' cItens+=' <td role="button" '+cLinkTot+'>' // If cStatus = "00" .or. cStatus = "" cItens+=' <a href="'+cLink+'&opc=edit" class="on-default" data-toggle="tooltip" data-original-title="Alterar Pedido"><i class="fa fa-pencil"></i></a>' 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>' // Endif cItens+=' </td>' // If QRY->C5_STATUS = "A" // cItens+=' <a href="'+cLink+'&opc=edit" class="on-default" data-toggle="tooltip" data-original-title="Alterar Pedido"><i class="fa fa-pencil"></i></a>' // 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>' // EndIf cItens+='</tr>'+CRLF QRY->(dbSkip()) End //Retorna o HTML para constru��o da p�gina cHtml := H_SMSGrid() Web Extended End Return (cHTML)