- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Protheus desfazendo processo EXECAUTO FINA070
×
Linguagem de Programação ADVPL
Perguntas Protheus desfazendo processo EXECAUTO FINA070
- RFidelMG
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 5
- Obrigados Recebidos: 0
10 anos 8 meses atrás #21584
por RFidelMG
Protheus desfazendo processo EXECAUTO FINA070 foi criado por RFidelMG
Pessoal, vejam se podem me ajudar...rodei o código abaixo, que faz a leitura de um arquivo .RET de um dos nossos bancos...e a cada linha, processa a rotina Execauto do FINA070 (Baixa de títulos SE1)...o programa funcionou bacana...fez as baixas...lançou tudo na SE5 também, etc...mas depois de alguns minutos, sumiu tudo da SE5 e as baixas foram desfeitas...alguém sabe me explicar? Tenho pouco mais de 6 meses de experiência em ADVPL, Protheus e apesar de desenvolver bem, não tenho tanta experiência com os processos do Protheus...isso é normal? É alguma rotina de recuperação de integridade, algo assim? E se positivo, algo errado na rotina abaixo para gerar isso? Ou preciso passar mais informações no array (apesar da documentação só citar isso como básico)...outra coisa...a dDataBase no caso é retroativa...pode ser isso? Enfim...conto com suas observações!!! Abraço
Pedaço do código......
If !File(cFileOpen)
alert("Arquivo RET: "+cFileOpen+" não localizado")
Return
Endif
FT_FUSE(cFileOpen)
FT_FGOTOP()
ProcRegua(FT_FLASTREC())
While !FT_FEOF()
IncProc()
cBuffer := FT_FREADLN()
nIdReg := SubStr(cBuffer,109,2)
nNumBco := Substr(cBuffer,63,
nIdCnab := Substr(cBuffer,38,10)
DbSelectArea("SE1")
DbSetOrder(28) // E1_NUMBCO
DbSeek(xFilial("SE1")+nNumBco)
IF Found()
if nIdReg == '47'
cPrefixo := SE1->E1_PREFIXO
cParcela := SE1->E1_PARCELA
cTipodoc := SE1->E1_TIPO
cNumdoc := SE1->E1_NUM
nValRec := SE1->E1_VALOR
cCliente := SE1->E1_CLIENTE
cLoja := "01"
cNomcli := alltrim(posicione("SA1",1,xFilial("SA1")+cCliente+cLoja,"A1_NOME"))
aBaixa := {{"E1_PREFIXO" ,cPrefixo ,Nil },;
{"E1_NUM" ,cNumdoc ,Nil },;
{"E1_PARCELA" ,cParcela ,Nil },;
{"E1_TIPO" ,cTipodoc ,Nil },;
{"AUTMOTBX" ,"NOR" ,Nil },;
{"AUTBANCO" ,"341" ,Nil },;
{"AUTAGENCIA" ,"1399 " ,Nil },;
{"AUTCONTA" ,"37382 " ,Nil },;
{"AUTDTBAIXA" ,dDataBase ,Nil },;
{"AUTDTCREDITO",dDataBase ,Nil },;
{"AUTHIST" ,"BAIXA TITULOS DESC" ,Nil },;
{"AUTJUROS" ,0 ,Nil,.T.},;
{"AUTVALREC" ,nValRec ,Nil }}
lMsErroAuto := .F.
MSExecAuto({|x,y| Fina070(x,y)},aBaixa,3)
endif
else
DbSelectArea("SE1")
DbSetOrder(16) // E1_IDCNAB
DbSeek(xFilial("SE1")+nIdCnab)
If Found()
if nIdReg == '47'
cPrefixo := SE1->E1_PREFIXO
cParcela := SE1->E1_PARCELA
cTipodoc := SE1->E1_TIPO
cNumdoc := SE1->E1_NUM
nValRec := SE1->E1_VALOR
cCliente := SE1->E1_CLIENTE
cLoja := "01"
cNomcli := alltrim(posicione("SA1",1,xFilial("SA1")+cCliente+cLoja,"A1_NOME"))
aBaixa := {{"E1_PREFIXO" ,cPrefixo ,Nil },;
{"E1_NUM" ,cNumdoc ,Nil },;
{"E1_PARCELA" ,cParcela ,Nil },;
{"E1_TIPO" ,cTipodoc ,Nil },;
{"AUTMOTBX" ,"NOR" ,Nil },;
{"AUTBANCO" ,"341" ,Nil },;
{"AUTAGENCIA" ,"1399 " ,Nil },;
{"AUTCONTA" ,"37382 " ,Nil },;
{"AUTDTBAIXA" ,dDataBase ,Nil },;
{"AUTDTCREDITO",dDataBase ,Nil },;
{"AUTHIST" ,"BAIXA TITULOS DESC" ,Nil },;
{"AUTJUROS" ,0 ,Nil,.T.},;
{"AUTVALREC" ,nValRec ,Nil }}
lMsErroAuto := .F.
MSExecAuto({|x,y| Fina070(x,y)},aBaixa,3)
endif
endif
endif
if nIdReg == '47'
nValrTot += nValRec
endif
FT_FSKIP()
endDo
FT_FUSE()
Endif
dbCloseArea("SE1")
Pedaço do código......
If !File(cFileOpen)
alert("Arquivo RET: "+cFileOpen+" não localizado")
Return
Endif
FT_FUSE(cFileOpen)
FT_FGOTOP()
ProcRegua(FT_FLASTREC())
While !FT_FEOF()
IncProc()
cBuffer := FT_FREADLN()
nIdReg := SubStr(cBuffer,109,2)
nNumBco := Substr(cBuffer,63,
nIdCnab := Substr(cBuffer,38,10)
DbSelectArea("SE1")
DbSetOrder(28) // E1_NUMBCO
DbSeek(xFilial("SE1")+nNumBco)
IF Found()
if nIdReg == '47'
cPrefixo := SE1->E1_PREFIXO
cParcela := SE1->E1_PARCELA
cTipodoc := SE1->E1_TIPO
cNumdoc := SE1->E1_NUM
nValRec := SE1->E1_VALOR
cCliente := SE1->E1_CLIENTE
cLoja := "01"
cNomcli := alltrim(posicione("SA1",1,xFilial("SA1")+cCliente+cLoja,"A1_NOME"))
aBaixa := {{"E1_PREFIXO" ,cPrefixo ,Nil },;
{"E1_NUM" ,cNumdoc ,Nil },;
{"E1_PARCELA" ,cParcela ,Nil },;
{"E1_TIPO" ,cTipodoc ,Nil },;
{"AUTMOTBX" ,"NOR" ,Nil },;
{"AUTBANCO" ,"341" ,Nil },;
{"AUTAGENCIA" ,"1399 " ,Nil },;
{"AUTCONTA" ,"37382 " ,Nil },;
{"AUTDTBAIXA" ,dDataBase ,Nil },;
{"AUTDTCREDITO",dDataBase ,Nil },;
{"AUTHIST" ,"BAIXA TITULOS DESC" ,Nil },;
{"AUTJUROS" ,0 ,Nil,.T.},;
{"AUTVALREC" ,nValRec ,Nil }}
lMsErroAuto := .F.
MSExecAuto({|x,y| Fina070(x,y)},aBaixa,3)
endif
else
DbSelectArea("SE1")
DbSetOrder(16) // E1_IDCNAB
DbSeek(xFilial("SE1")+nIdCnab)
If Found()
if nIdReg == '47'
cPrefixo := SE1->E1_PREFIXO
cParcela := SE1->E1_PARCELA
cTipodoc := SE1->E1_TIPO
cNumdoc := SE1->E1_NUM
nValRec := SE1->E1_VALOR
cCliente := SE1->E1_CLIENTE
cLoja := "01"
cNomcli := alltrim(posicione("SA1",1,xFilial("SA1")+cCliente+cLoja,"A1_NOME"))
aBaixa := {{"E1_PREFIXO" ,cPrefixo ,Nil },;
{"E1_NUM" ,cNumdoc ,Nil },;
{"E1_PARCELA" ,cParcela ,Nil },;
{"E1_TIPO" ,cTipodoc ,Nil },;
{"AUTMOTBX" ,"NOR" ,Nil },;
{"AUTBANCO" ,"341" ,Nil },;
{"AUTAGENCIA" ,"1399 " ,Nil },;
{"AUTCONTA" ,"37382 " ,Nil },;
{"AUTDTBAIXA" ,dDataBase ,Nil },;
{"AUTDTCREDITO",dDataBase ,Nil },;
{"AUTHIST" ,"BAIXA TITULOS DESC" ,Nil },;
{"AUTJUROS" ,0 ,Nil,.T.},;
{"AUTVALREC" ,nValRec ,Nil }}
lMsErroAuto := .F.
MSExecAuto({|x,y| Fina070(x,y)},aBaixa,3)
endif
endif
endif
if nIdReg == '47'
nValrTot += nValRec
endif
FT_FSKIP()
endDo
FT_FUSE()
Endif
dbCloseArea("SE1")
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 8 meses atrás #21592
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 Protheus desfazendo processo EXECAUTO FINA070
Ricardo boa noite, o que vc vai precisar fazer é debugar, pois o protheus roda um rollback sim se um dos execautos der algum tipo de problema, o fato de estar usando data retroativa vc precisa verificar o parametro de fechamento do financeiro se não está com data superior.
Outra coisa, na linha abaixo do msexecauto coloca assim:
If lMsErroAuto
MostraErro()
EndIf
Ai vc vai conseguir identificar o problema.
Abraços.
Outra coisa, na linha abaixo do msexecauto coloca assim:
If lMsErroAuto
MostraErro()
EndIf
Ai vc vai conseguir identificar o problema.
Abraços.
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Protheus desfazendo processo EXECAUTO FINA070
Tempo para a criação da página:0.100 segundos