× Linguagem de Programação ADVPL

Perguntas Código fonte

Mais
10 anos 10 meses atrás #23081 por tiagoaramos
Código fonte foi criado por tiagoaramos
Alguém tem o código fonte da função CrdTitAberto, to com um problema que nem os consultor ta sabendo achar...

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 10 meses atrás #23085 por lalberto
Respondido por lalberto no tópico Código fonte
Function CrdTitAberto( cCliente , cLoja , nTipo , cPeriodo, ;
aSaldoMeses ,aNCCVenda , nTotNCC, lCRM010)


Local nValor := 0
Local nValorMAL := 0
Local nValorSE1 := 0
Local nX := 0
Local nI := 0 // Variavel para o For
Local nValorNCC := 0 // Valor das NCCS em aberto
Local nTamE1_NUMCRD := TamSx3("E1_NUMCRD")[1] // Tamanho do campo E1_NUMCRD

Local aLjFilWS := StrToKArr(SuperGetMV("MV_LJFILWS"), ",")
Local lMAHExc
Local lMALExc
Local lSE1Exc
Local lUsaQuery := .F.
Local lAchou := .T.

Local cStrMAH := ""
Local cStrMAL := ""
Local cSubString := ""
Local cMVCRDTPLC := SuperGetMV("MV_CRDTPLC",,"FI") // Tipos dos titulos que entrarao na soma dos titulos em aberto para abater do limite do cliente
Local cMV_CRDTIT := SuperGetMV("MV_CRDTIT",,"1") // Controla se deve considerar apenas os titulos jah avaliados pelo SIGACRD(E1_NUMCRD preenchido) ou todos
Local cAliasTrb // Alias da area de trabalho
Local cMVCRNEG := MV_CRNEG // Conteudo do parametro MV_CRNEG
Local aMVCRNEG := {} // Array para manipular o parametro MV_CRNEG
Local aMVCRDTPLC := {} // Array para manipular a variavel cMVCRDTPLC
Local aStru := {} // Estrutura do campo SE1 e MAL para TCSetField
Local nMVLjChVst := SuperGetMV("MV_LJCHVST",,-1) // Quantos dias considera um cheque a vista. Se for -1 nao trata o parametro
Local nRecnoSE1 := 0 // Recno do SE1 para verificar se a NCC foi selecionada para compensacao
Local nPosRecno := 0 // Posicao do registro da NCC no SE1
Local aFilSE1 := {} // Guarda as filiais em que o cliente possui titulos
Local lVerEmpres := Lj950Acres(SM0->M0_CGC) // Verifica as filiais da trabalharam com acrescimento separado
Local cSepRec := If("|"$MVRECANT,"|",",") // Tratamento para recebimento antecipado
Local lR5 := GetRpoRelease("R5") // Indica se o release e 11.5

DEFAULT aSaldoMeses := {}
DEFAULT nTipo := 0
DEFAULT cPeriodo := Substr(Dtos(dDatabase),1,6)
DEFAULT aNCCVenda := {} // Array com as NCCs pendentes do cliente. O valor da NCC deve ser abatido da soma dos titulos em aberto
DEFAULT nTotNCC := 0 // Retorno do valor de NCC em aberto do cliente
DEFAULT lCRM010 := .F.

#IFDEF TOP
If AllTrim(TcSrvType()) <> "AS/400"
lUsaQuery := .T.
Endif
#Endif


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Atualiza o log de processamento ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Conout("CRDXFUN.CrdTitAberto.INICIO")

DbSelectArea("SX2")
DbSetOrder(1)
DbSeek("MAH")
lMAHExc := X2_MODO = "E"

DbSelectArea("SX2")
DbSetOrder(1)
DbSeek("MAL")
lMALExc := X2_MODO = "E"

DbSelectArea("SX2")
DbSetOrder(1)
DbSeek("SE1")
lSE1Exc := X2_MODO = "E"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Chama a select area somente para o Protheus abrir os arquivos³
//³ no caso de WebService ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SE1")
DbSelectArea("MAL")
DbSelectArea("MAH")

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Posiciona o arquivo MA7 ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If !( Upper( Trim( FunName() ) ) $ "CRDA080/CRDA010/CRDA180") //No programa de Liberacao, o MA7 ja e posicionado
DbSelectArea("MA7")
DbSetOrder(1) // FILIAL + CODCLI + LOJA
lAchou := DbSeek(xFilial("MA7")+cCliente+cLoja)
Endif

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Verifica como serao pesquisado os titulos ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lAchou
If nTipo == 0
nTipo = 2 // pega o saldo de todas as parcelas
Endif

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Faz a pesquisa do valor em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lUsaQuery
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Ajusta a variavel cMVCRDTPLC para incluir na Query ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aMVCRDTPLC := StrToKArr( cMVCRDTPLC, "," )
cMVCRDTPLC := "("
aEval( aMVCRDTPLC, { |x| cMVCRDTPLC += "'" + x + "'," } )
cMVCRDTPLC := Substr(cMVCRDTPLC,1,Len(cMVCRDTPLC)-1) + ")"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Preenche array de estruturas para TCSetField ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aStru := {}
CrdCriaStru("MAL" ,@aStru)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Trata as diferencas para Oracle e Informix ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
IF !( AllTrim( Upper( TcGetDb() ) ) $ "ORACLE_INFORMIX" )
cSubstring := "SUBSTRING"
Else
cSubstring := "SUBSTR"
Endif

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Seleciona as parcelas no MAL dos contratos efetuados ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cQuery := "SELECT "
cQuery += "'MAL' AS ALIAS, "+cSubstring + "( MAL.MAL_VENCTO,1,6 ) AS VENCTO, (SUM(MAL.MAL_SALDO)) AS SALDO "
cQuery += "FROM " + RetSQLName("MAL") + " MAL, " + RetSQLName("MAH") + " MAH "
cQuery += "WHERE "

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Filtra as filiais de acordo com o modo de abertura ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lMAHExc
cQuery += "MAH.MAH_FILIAL >= '" + aLJFilWS[1] + "' AND "
cQuery += "MAH.MAH_FILIAL <= '" + aLJFilWS[2] + "' AND "
Else
cQuery += "MAH.MAH_FILIAL = '" + xFilial("MAH") + "' AND "
Endif

If lMALExc
cQuery += "MAL.MAL_FILIAL >= '" + aLJFilWS[1] + "' AND "
cQuery += "MAL.MAL_FILIAL <= '" + aLJFilWS[2] + "' AND "
Else
cQuery += "MAL.MAL_FILIAL = '" + xFilial("MAL") + "' AND "
Endif

cQuery += "MAL.MAL_SALDO > 0 AND "
cQuery += "MAL.MAL_CONTRA = MAH.MAH_CONTRA AND "
cQuery += "MAL.MAL_FILIAL = MAH.MAH_FILIAL AND "
cQuery += "MAH.MAH_CODCLI = '" + cCliente + "' AND "
cQuery += "MAH.MAH_LOJA = '" + cLoja + "' AND "
cQuery += "MAH.MAH_TRANS = '1' AND " //Contratos OK

If nTipo == 1 // pega soh as parcelas do mes
cQuery += cSubstring + "( MAL.MAL_VENCTO,1,6 ) = '" + Substr( Dtos(dDatabase),1,6 ) + "' AND "
Endif

cQuery += "MAH.D_E_L_E_T_ <> '*' AND "
cQuery += "MAL.D_E_L_E_T_ <> '*' "
cQuery += "GROUP BY "+cSubstring + "( MAL.MAL_VENCTO,1,6 )"

cQuery := ChangeQuery(cQuery)
MemoWrite("CRDXTITAB1.SQL",cQuery)

cAliasTrb := GetNextAlias()
dbUseArea(.T.,"TOPCONN", TCGENQRY(,,cQuery),cAliasTrb, .F., .T.)

For nX := 1 To Len(aStru)
TcSetField(cAliasTRB,aStru[nX,1],aStru[nX,2],aStru[nX,3],aStru[nX,4])
Next nX

nValor := 0
DbSelectArea(cAliasTrb)
DbGoTop()
aSaldoMeses := {}
While !Eof()
CrdGuardaMes(&(cAliasTrb+"->SALDO") ,SubStr(&(cAliasTrb+"->VENCTO"),1,6) ,@aSaldoMeses)
nValor += &(cAliasTrb+"->SALDO")
DbSkip()
End

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Fecha a area de trabalho ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea(cAliasTrb)
dbCloseArea()

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Seleciona os titulos em aberto do cliente analisado ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Preenche array de estruturas para TCSetField ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aStru := {}
CrdCriaStru("SE1" ,@aStru)

cQuery := "SELECT "
cQuery += "'SE1' AS ALIAS, "
cQuery += cSubstring + "( SE1.E1_VENCTO,1,6 ) AS VENCTO, "
cQuery += "(SUM(SE1.E1_SALDO)) AS SALDO, "

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³INCLUIR O ACRESCIMO FINANCEIRO NA COMPOSICAO DO SALDO DOS TITULOS EM ABERTO ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lVerEmpres .OR. (lR5 .AND. SuperGetMV("MV_LJICMJR",,.F.) .AND. cPaisLoc == "BRA")
cQuery += "(SUM(SE1.E1_ACRESC)) AS ACRESC, "
Endif

cQuery += "SE1.E1_TIPO AS TIPO, "
cQuery += "SE1.E1_VENCTO AS DTVENCTO " //Data de vencimento completa
cQuery += "FROM " + RetSQLName("SE1") + " SE1 "
cQuery += "WHERE "

If lSE1Exc
cQuery += "SE1.E1_FILIAL >= '" + aLJFilWS[1] + "' AND "
cQuery += "SE1.E1_FILIAL <= '" + aLJFilWS[2] + "' AND "
Else
cQuery += "SE1.E1_FILIAL = '" + xFilial("SE1") + "' AND "
Endif

cQuery += "SE1.E1_CLIENTE = '" + cCliente + "' AND "
cQuery += "SE1.E1_LOJA = '" + cLoja + "' AND "
cQuery += "SE1.E1_SALDO > 0 AND "
cQuery += "LTRIM(RTRIM(SE1.E1_TIPO)) IN " + cMVCRDTPLC + " AND "
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Verifica se deve considerar apenas os titulos ja avaliados pelo SIGACRD ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If cMV_CRDTIT == "1"
cQuery += "SE1.E1_NUMCRD <> '"+Space(nTamE1_NUMCRD)+"' AND " //Trazer soh titulos com num. de contrato (SIGACRD)
Endif

If nTipo == 1 // pega soh as parcelas do mes
cQuery += cSubstring + "( SE1.E1_VENCTO,1,6 ) = '" + Substr( Dtos(dDatabase),1,6 ) + "' AND "
Endif
cQuery += "SE1.D_E_L_E_T_ <> '*' "
cQuery += "GROUP BY "+cSubstring + "( SE1.E1_VENCTO,1,6 ), SE1.E1_VENCTO, SE1.E1_TIPO "

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Faz o tratamento/compatibilidade com o Top Connect ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cQuery := ChangeQuery(cQuery)
MemoWrite("CRDXTITAB2.SQL",cQuery)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Pega uma sequencia de alias para o temporario. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cAliasTrb := GetNextAlias()

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Cria o ALIAS do arquivo temporario ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbUseArea(.T.,"TOPCONN", TCGENQRY(,,cQuery),cAliasTrb, .F., .T.)

For nX := 1 To Len(aStru)
TcSetField(cAliasTRB,aStru[nX,1],aStru[nX,2],aStru[nX,3],aStru[nX,4])
Next nX

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Pega o valor dos titulos em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea(cAliasTrb)
DbGoTop()
While !Eof()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Se for cheque, deve considerar MV_LJCHVST ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If IIf(Alltrim(&(cAliasTrb+"->TIPO")) == Alltrim(MVCHEQUE),(nMVLjChVst == -1 .OR. &(cAliasTrb+"->DTVENCTO") >= dDataBase + nMVLjChVst),.T.)

CrdGuardaMes(&(cAliasTrb+"->SALDO") ,SubStr(&(cAliasTrb+"->VENCTO"),1,6) ,@aSaldoMeses)
nValor += &(cAliasTrb+"->SALDO")
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³INCLUIR O ACRESCIMO FINANCEIRO NA COMPOSICAO DO SALDO DOS TITULOS EM ABERTO ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lVerEmpres .OR. (lR5 .AND. SuperGetMV("MV_LJICMJR",,.F.) .AND. cPaisLoc == "BRA")
nValor += &(cAliasTrb+"->ACRESC")
Endif
Endif
DbSkip()
End

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Fecha a area de trabalho ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea(cAliasTrb)
dbCloseArea()

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Ajusta a variavel cMVCRNEG para incluir na Query ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aMVCRNEG := StrToKArr( cMVCRNEG, "," )
cMVCRNEG := "("
aEval( aMVCRNEG, { |x| cMVCRNEG += "'" + x + "'," } )
cMVCRNEG := Substr(cMVCRNEG,1,Len(cMVCRNEG)-1) + ")"

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Seleciona notas de credito para abater do saldo de titulos em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cQuery := "SELECT "
cQuery += "SE1.R_E_C_N_O_ AS SE1RECNO, "
cQuery += "SE1.E1_SALDO AS SALDO, "
cQuery += "SE1.E1_VENCTO AS DTVENCTO "
cQuery += "FROM " + RetSQLName("SE1") + " SE1 "
cQuery += "WHERE "

If lSE1Exc
cQuery += "SE1.E1_FILIAL >= '" + aLJFilWS[1] + "' AND "
cQuery += "SE1.E1_FILIAL <= '" + aLJFilWS[2] + "' AND "
Else
cQuery += "SE1.E1_FILIAL = '" + xFilial("SE1") + "' AND "
Endif

cQuery += "SE1.E1_CLIENTE = '" + cCliente + "' AND "
cQuery += "SE1.E1_LOJA = '" + cLoja + "' AND "
cQuery += "SE1.E1_SALDO > 0 AND "
cQuery += "( LTRIM(RTRIM(SE1.E1_TIPO)) IN " + cMVCRNEG + " "
cQuery += " OR SE1.E1_TIPO IN " + FormatIn(MVRECANT,cSepRec) + " ) AND "
If nTipo == 1 // pega soh as parcelas do mes
cQuery += cSubstring + "( SE1.E1_VENCTO,1,6 ) = '" + Substr( Dtos(dDatabase),1,6 ) + "' AND "
Endif
cQuery += "SE1.D_E_L_E_T_ <> '*' "

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Faz o tratamento/compatibilidade com o Top Connect ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cQuery := ChangeQuery(cQuery)
MemoWrite("CRDXTITAB3.SQL",cQuery)

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Pega uma sequencia de alias para o temporario. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
cAliasTrb := GetNextAlias()

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Cria o ALIAS do arquivo temporario ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbUseArea(.T.,"TOPCONN", TCGENQRY(,,cQuery),cAliasTrb, .F., .T.)

For nX := 1 To Len(aStru)
TcSetField(cAliasTRB,aStru[nX,1],aStru[nX,2],aStru[nX,3],aStru[nX,4])
Next nX

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Pega o valor das NCCs em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea(cAliasTrb)
DbGoTop()
nValorNCC := 0
nTotNCC := 0
While !Eof()
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Caso a rotina tenha sido chamado pelo analista de credito,³
//³o valor de NCCs e mostrado separadamente e nao deve ser ³
//³abatido das parcelas em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lCRM010
nTotNCC += &(cAliasTrb+"->SALDO")
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Se a NCC foi selecionada para compensacao nao deve abater do ³
//³saldo em aberto do cliente ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If LEN(aNCCVenda) > 0
nRecnoSE1 := &(cAliasTrb+"->SE1RECNO")
nPosRecno := Ascan(aNCCVenda,{|x| x[5] == nRecnoSE1})
If nPosRecno > 0 .AND. aNCCVenda[nPosRecno][1]
DbSkip()
Loop
Endif
Endif
nValorNCC += &(cAliasTrb+"->SALDO")
Endif
DbSkip()
End
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Fecha a area de trabalho ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea(cAliasTrb)
dbCloseArea()

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Abate o valor das NCCs do saldo de titulos em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nValor := nValor - nValorNCC

Conout("1. CRDXFUN CrdtitAberto, nValor " + ALLTRIM(STR(nValor)))
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Posiciona os arquivos ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
MAL->(DbSetOrder(1)) // FILIAL + CONTRA

DbSelectArea("MAH")
DbSetOrder( 2 ) // FILIAL + CODCLI + LOJA + CONTRA

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Filtra as filiais de acordo com o modo de abertura ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lMAHExc
DbSeek(aLJFilWS[1]+cCliente+cLoja)
cStrMAH := {||!Eof() .AND. (MAH->MAH_FILIAL >= aLJFilWS[1] .AND.;
MAH->MAH_FILIAL <= aLJFilWS[2]) .AND.;
MAH->MAH_CODCLI+MAH->MAH_LOJA == cCliente+cLoja }
Else
DbSeek(xFilial("MAH")+cCliente+cLoja)
cStrMAH := {||!Eof() .AND. MAH->MAH_FILIAL+MAH->MAH_CODCLI+MAH->MAH_LOJA == xFilial('MAH')+cCliente+cLoja }
Endif

nValorMal := 0
nValorSE1 := 0
nValorNCC := 0
While Eval(cStrMAH)
If Val(MAH->MAH_TRANS) == TRANS_OK
DbSelectArea("MAL")

If lMALExc
DbSeek(aLJFilWS[1]+MAH->MAH_CONTRA)
cStrMAL := {||!Eof().AND. (MAL->MAL_FILIAL >= aLJFilWS[1] .AND.;
MAL->MAL_FILIAL <= aLJFilWS[2]) .AND.;
MAL->MAL_CONTRA == MAH->MAH_CONTRA }
Else
DbSeek(xFilial("MAH")+MAH->MAH_CONTRA)
cStrMAL := {||!Eof().AND. MAL->MAL_FILIAL+MAL->MAL_CONTRA == xFilial("MAL")+MAH->MAH_CONTRA }
Endif

While Eval(cStrMAL)

If (nTipo == 2) .OR. (nTipo == 1 .AND. Substr(Dtos(MAL->MAL_VENCTO),1,6) <= cPeriodo)
CrdGuardaMes(MAL->MAL_SALDO ,SubStr(DtoS(MAL->MAL_VENCTO),1,6) ,@aSaldoMeses)
nValorMAL += MAL->MAL_SALDO
Endif
DbSkip()
End
Endif
DbSelectArea("MAH")
DbSkip()
End

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Faz a somatoria do SE1 e pesquisa se o cliente possui titulos em aberto em todas as filiais ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SE1")
DbSetOrder(2) // Filial + Cliente + Loja + Prefixo + Num + Parcela + Tipo
If lSE1Exc
DbSelectArea("SM0")
DbGoTop()
While !Eof()
If M0_CODIGO <> cEmpAnt
DbSkip()
Loop
Endif
If FWGETCODFILIAL < aLJFilWS[1] .OR. FWGETCODFILIAL > aLJFilWS[2]
DbSkip()
Loop
Endif

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Atualiza no array apenas as filiais em que o cliente possui titulos³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
DbSelectArea("SE1")
DbSetOrder(2)
If DbSeek(FWGETCODFILIAL+cCliente+cLoja)
Aadd(aFilSE1, FWGETCODFILIAL)
Endif

DbSelectArea("SM0")
DbSkip()
End
Else
Aadd(aFilSE1, xFilial("SE1"))
Endif

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Compoe o saldo de titulos em aberto de acordo com as filiais³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
For nI := 1 to Len(aFilSE1)
DbSelectArea("SE1")
DbSetOrder(2)
DbSeek(aFilSE1[nI]+cCliente+cLoja)
While (SE1->E1_FILIAL + SE1->E1_CLIENTE + SE1->E1_LOJA) == (aFilSE1[nI] + cCliente + cLoja)

If SE1->E1_SALDO == 0
DbSkip()
Loop
Endif

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Seleciona notas de credito para abater do saldo de titulos em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If ALLTRIM(SE1->E1_TIPO) $ MV_CRNEG
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Considera apenas as parcelas do mes³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If nTipo == 1
If SUBSTR(SE1->E1_VENCTO,1,6) <> SUBSTR(DTOS(dDatabase),1,6)
DbSkip()
Loop
Endif
Endif

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Caso a rotina tenha sido chamado pelo analista de credito,³
//³o valor de NCCs e mostrado separadamente e nao deve ser ³
//³abatido das parcelas em aberto ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lCRM010
nTotNCC += SE1->E1_SALDO
Else
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Se a NCC foi selecionada para compensacao nao deve abater do ³
//³saldo em aberto do cliente ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If LEN(aNCCVenda) > 0
nRecnoSE1 := SE1->(Recno())
nPosRecno := Ascan(aNCCVenda,{|x| x[5] == nRecnoSE1})
If nPosRecno > 0 .AND. aNCCVenda[nPosRecno][1]
DbSkip()
Loop
Endif
Endif
nValorNCC += SE1->E1_SALDO
Endif
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Verifica se o saldo do titulo eh maior que zero; ³
//³ se o tipo do titulo está contido no parametro MV_CRDTPLC; ³
//³ se for titulo em cheque se eh pre-datado. ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ElseIf ALLTRIM(SE1->E1_TIPO) $ cMVCRDTPLC .AND. IIf(ALLTRIM(SE1->E1_TIPO) == ALLTRIM(MVCHEQUE) .AND. ;
nMVLjChVst > -1,(SE1->E1_VENCTO >= dDataBase + nMVLjChVst),.T.)

If IIf(cMV_CRDTIT == "1",SE1->E1_NUMCRD <> Space(nTamE1_NUMCRD),.T.)
If (nTipo == 2) .OR. (nTipo == 1 .AND. Substr(Dtos(MAL->MAL_VENCTO),1,6) <= cPeriodo)
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³INCLUIR O ACRESCIMO FINANCEIRO NA COMPOSICAO DO SALDO DOS TITULOS EM ABERTO ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If lVerEmpres .OR. (lR5 .AND. SuperGetMV("MV_LJICMJR",,.F.) .AND. cPaisLoc == "BRA")
CrdGuardaMes(SE1->E1_SALDO+SE1->E1_ACRESC,SubStr(DtoS(SE1->E1_VENCTO),1,6) ,@aSaldoMeses)
nValorSE1 += SE1->E1_SALDO + SE1->E1_ACRESC
Else
CrdGuardaMes(SE1->E1_SALDO ,SubStr(DtoS(SE1->E1_VENCTO),1,6) ,@aSaldoMeses)
nValorSE1 += SE1->E1_SALDO
Endif
Endif
Endif
Endif

DbSelectArea("SE1")
DbSkip()
End
Next nI
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Soma os valores dos titulos em aberto para o cliente ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
nValor := (nValorMAL + nValorSE1) - nValorNCC
Endif
Endif

Conout("2.CRDXFUN - CrdTitAberto - Valor dos titulos em aberto do cliente : " +;
If( Empty(cCliente), "", cCliente) + "/" +;
If( Empty(cLoja), "", cLoja) +;
" Valor: "+ ALLTRIM(Str(nValor)))

Return (nValor)

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.102 segundos
Joomla templates by a4joomla