× Linguagem de Programação ADVPL

Perguntas Protheus desfazendo processo EXECAUTO FINA070

Mais
10 anos 8 meses atrás #21584 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,8)
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.

Mais
10 anos 8 meses atrás #21592 por lalberto
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.

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.100 segundos
Joomla templates by a4joomla