#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+= '
'
// 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+='