×
Linguagem de Programação ADVPL
Perguntas Código fonte
- tiagoaramos
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 9
- Obrigados Recebidos: 0
10 anos 5 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.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 5 meses atrás #23085
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
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)
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.308 segundos