#include "PROTHEUS.CH" #include "RWMAKE.CH" #include "APWEBEX.CH" #include "TOPCONN.CH" #include "TBICONN.CH" /*__________________________________________________________________________ ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ¦¦+-----------------------------------------------------------------------+¦¦ ¦¦¦Funçäo ¦ Financeiro ¦ Autor ¦ Lucilene Mendes ¦ Data ¦03.12.17 ¦¦¦ ¦¦+----------+------------------------------------------------------------¦¦¦ ¦¦¦Descriçäo ¦ Grid com os títulos em aberto do vendedor. ¦¦¦ ¦¦+-----------------------------------------------------------------------+¦¦ ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/ User Function Financeiro() Local cHtml Local cValTit := "" Local cValPag := "" Local cSldTit := "" Local cFiltro := "" Local cDataDe := "" Local cDataAte := "" Local cFiltDe := "" Local cFilAte := "" Local nSeq := 0 Local _nVlrJuros:= 0 Local _nVlrDoc := 0 Local _nVlrAbat := 0 Private cColunas:= "" Private cItens := "" Private cTopo := "" Private cSite := "u_PortalLogin.apw" Private cPagina := "Financeiro" Private cTitle := "" Private lTableTools:= .T. Private lSidebar:= .F. Private cCodLogin := "" Private cVendLogin:= "" Private cJavaScr := "" Web Extended Init cHtml Start U_inSite() cVendLogin := u_GetUsrPR() cCodLogin := U_SetParPR(cVendLogin) If Empty(HttpSession->CodVend) cHtml:= '' 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 := cMenus := U_GetMenus(AllTrim(Upper(Procname())), cVendLogin) //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)) cFiltro:= HttpPost->tipoFiltro 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()) cFiltro:= '1' //1=Emissao, 2=Vencto, 3=Baixa Endif //Filtros cTopo:= '
' cTopo+= '
' cTopo+= '
' cTopo+= ' ' cTopo+= '
' cTopo+= '
' cTopo+= ' ' cTopo+= '
' cTopo+= '
' cTopo+= ' ' cTopo+= '
' cTopo+= '
' cTopo+= ' ' cTopo+= ' ' cTopo+= ' ' cTopo+= ' ' cTopo+= ' Filtrar' cTopo+= '
' cTopo+= ' ' /* cTopo+= '
' cTopo+= ' ' cTopo+= '
' */ cTopo+= '
' cTopo+= '
' // Buscar os Títulos cQry := " SELECT DISTINCT case when e1_saldo>0 then 'ABERTO' else 'BAIXADO' end STATUS, E1_FILIAL, E1_NUM, E1_CLIENTE, E1_LOJA, E1_PREFIXO, E1_PARCELA, E1_EMISSAO, " cQry += " E1_VENCREA, E1_BAIXA, E1_TIPO, E1_VALOR, E1_SALDO, E1_NUMBCO, E1_PORTADO, E1_ACRESC, E1_VALJUR, E1_DECRESC, SE1.R_E_C_N_O_ NUMREC, A1_CGC, A1_NREDUZ, A1_VEND VEND, A1_EMAIL " cQry += "FROM "+RetSqlName("SE1")+" SE1 " cQry += " JOIN " + RetSqlName("SA1")+" SA1 ON A1_FILIAL = '"+xFilial("SA1")+"' AND E1_CLIENTE = A1_COD AND E1_LOJA = A1_LOJA AND SA1.D_E_L_E_T_ = ' ' " If HttpSession->Tipo = 'S' //Supervisor acessa todos os clientes da sua equipe cQry+= " AND A1_VEND in "+FormatIn(HttpSession->Equipe,"|")+" " Else cQry+= " AND A1_VEND = '"+cVendLogin+"'" Endif cQry += " WHERE SE1.D_E_L_E_T_ = ' ' " If cFiltro = '1' //Emissão cQry+= " AND E1_EMISSAO between '"+cDataDe+"' and '"+cDataAte+"' " Elseif cFiltro = '2' //Vencimento cQry+= " AND E1_VENCREA between '"+cDataDe+"' and '"+cDataAte+"' " Elseif cFiltro = '3' //Baixa cQry+= " AND E1_BAIXA between '"+cDataDe+"' and '"+cDataAte+"' " Endif cQry += " AND E1_TIPO NOT IN ('NCC','RA') " cQry += " AND E1_TIPO NOT IN " + FormatIn(MVABATIM,"|") " cQry += " ORDER BY 1, E1_VENCREA, SE1.R_E_C_N_O_ " cQry := ChangeQuery(cQry) If Select("QRY") > 0 QRY->(dbCloseArea()) Endif APWExOpenQuery(ChangeQuery(cQry),'QRY',.T.) TcSetField("QRY","E1_EMISSAO","D") TcSetField("QRY","E1_VENCREA","D") TcSetField("QRY","E1_BAIXA","D") //Cabeçalho do grid //cColunas+='' cColunas+='Número' cColunas+='Parcela' cColunas+='Tipo' cColunas+='Cliente' cColunas+='CPF/CNPJ' cColunas+='Emissão' cColunas+='Vencimento' cColunas+='Baixa' cColunas+='Valor' cColunas+='Valor Pago' cColunas+='Saldo' cColunas+='Status' //cColunas+='' If HttpSession->Tipo = 'S' //Supervisor cColunas+='Vendedor' Endif While QRY->(!Eof()) nSeq++ If dDatabase > QRY->E1_VENCREA _nVlrJuros:= Round(QRY->E1_VALJUR * (dDatabase - QRY->E1_VENCREA),2) Else _nVlrJuros:= 0 Endif _nVlrDoc := 0 //Calcula o valor do título somente se o título possuir saldo If QRY->E1_SALDO > 0 cFilAnt:= QRY->E1_FILIAL _nVlrAbat :=SomaAbat(QRY->E1_PREFIXO,QRY->E1_NUM,QRY->E1_PARCELA,"R",1,dDatabase,QRY->E1_CLIENTE,QRY->E1_LOJA) _nVlrDoc := Round((((QRY->E1_SALDO+_nVlrJuros+QRY->E1_ACRESC)- QRY->E1_DECRESC)*100)-(_nVlrAbat*100),0)/100 Endif If QRY->E1_TIPO $ "NCC,IN-,IR-,CS-,PI-,CF-,IS-" cValTit:= TransForm(QRY->E1_VALOR*-1,"@E 999,999,999.99") cValPag:= TransForm((QRY->E1_VALOR-QRY->E1_SALDO)*-1,"@E 999,999,999.99") cSldTit:= TransForm(_nVlrDoc,"@E 999,999,999.99") Else cValTit:= TransForm(QRY->E1_VALOR ,"@E 999,999,999.99") cValPag:= TransForm(QRY->E1_VALOR-QRY->E1_SALDO ,"@E 999,999,999.99") cSldTit:= TransForm(_nVlrDoc,"@E 999,999,999.99") Endif cItens+='' //cItens+=' ' cItens+=' '+trim(QRY->E1_PREFIXO)+'/'+QRY->E1_NUM+'' cItens+=' '+QRY->E1_PARCELA+'' cItens+=' '+QRY->E1_TIPO+'' cItens+=' '+QRY->E1_CLIENTE+"/"+QRY->E1_LOJA+" - "+Alltrim(QRY->A1_NREDUZ)+'' cItens+=' '+Transform(QRY->A1_CGC,"@R 99.999.999/9999-99")+'' cItens+=' '+DTOC(QRY->E1_EMISSAO)+'' cItens+=' '+DTOC(QRY->E1_VENCREA)+'' cItens+=' '+DTOC(QRY->E1_BAIXA)+'' cItens+=' '+cValTit+'' cItens+=' '+cValPag+'' cItens+=' '+cSldTit+'' cItens+=' '+QRY->STATUS+'' /* cItens+=' ' If QRY->STATUS = "ABERTO" //.and. QRY->E1_PORTADO == "341" .and. !empty(QRY->E1_NUMBCO) cItens+=' A1_EMAIL)+"'"+');">' cItens+=' ' cItens+=' ' cItens+=' ' cItens+=' ' cItens+=' ' Endif cItens+=' ' */ If HttpSession->Tipo = 'S' //Supervisor cItens+=' '+QRY->VEND+' - '+Posicione("SA3",1,xFilial("SA3")+QRY->VEND,"A3_NREDUZ")+'' Endif cItens+='' QRY->(dbSkip()) End /* cItens+= montarForm("Boleto", "MaiPBol.apw?PR="+cCodLogin) cJavaScr += 'var aBolImp = [];' + CRLF cJavaScr += 'function ViewBoleto(idBoleto){' + CRLF cJavaScr += ' if (! aBolImp.includes(idBoleto)) {' + CRLF cJavaScr += ' aBolImp.push(idBoleto); ' + CRLF cJavaScr += ' $.ajax({ ' + CRLF cJavaScr += ' url: "U_MaiPBol.apw?PR='+cCodLogin+'",' + CRLF cJavaScr += ' type: "POST",' + CRLF cJavaScr += ' data: "email=&doc="+idBoleto,' + CRLF cJavaScr += ' cache: false, ' + CRLF cJavaScr += ' success: ' + CRLF cJavaScr += ' function(docBoleto) {' + CRLF cJavaScr += ' if (docBoleto.indexOf("= 0 ) {' + CRLF cJavaScr += ' $("html").html(docBoleto);' + CRLF cJavaScr += ' return;' + CRLF cJavaScr += ' }' + CRLF cJavaScr += ' if (docBoleto == "" ) {' + CRLF cJavaScr += ' bootbox.alert("Falha ao gerar o arquivo. Tente novamente mais tarde.");' + CRLF cJavaScr += ' }' + CRLF cJavaScr += ' if (docBoleto.substr(0,6) == "BOLETO") {' + CRLF cJavaScr += ' window.open("/anexos/boleto/"+docBoleto,"_blank")' + CRLF cJavaScr += ' }' + CRLF cJavaScr += ' for( var i = 0; i < aBolImp.length; i++){ ' + CRLF cJavaScr += ' if ( aBolImp[i] == idBoleto) { ' + CRLF cJavaScr += ' aBolImp.splice(i, 1); ' + CRLF cJavaScr += ' i--; ' + CRLF cJavaScr += ' }' + CRLF cJavaScr += ' }' + CRLF cJavaScr += ' }' + CRLF cJavaScr += ' });' + CRLF cJavaScr += ' }' + CRLF cJavaScr += '}' + CRLF */ //Retorna o HTML para construção da página cHtml := H_SMSGrid() Web Extended End Return (cHTML) // Montar o formulário para mandar por e-mail static function montarForm(cTitulo, cSubm) Local cRet:="" cRet+= ''+CRLF cRet+= ' '+CRLF // conout(cret) return cRet