ExecAuto fina070

Bom dia Pessoal.

Fiz uma função de MsExecAuto fo Fina070, é chamado sem erros, porém não executa a baixa. Fiquei sem entender, pois o LmsErroAuto não é alterado, continua como .F. mas a baixa não é feita.


User Function MFIN03B(czFilBx, czPrefixo, czTitulo, czParcela, czTipo, nzValorRecebido, czBanco, czAgen, czConta, dTBaixa, DtMovi, czNossNum)

    Local aBaixa := {}
    Local cEmail := "email@email.com"
    Local cAssunto := "MFIN003 - Função MFIN03B"

    lMsErroAuto := .F.

    aBaixa :=   {{"E1_FILIAL",  czFilBx, Nil},;
                {"E1_PREFIXO",  czPrefixo, Nil},;
                {"E1_NUM",      czTitulo, Nil},;
                {"E1_PARCELA",  czParcela, Nil},;
                {"E1_TIPO" ,    czTipo, Nil},;
                {"AUTMOTBX",    'NOR', Nil},;
                {"AUTBANCO",    Padr(czBanco,3), Nil},;
                {"AUTAGENCIA",  Padr(czAgen, 5), Nil},;
                {"AUTCONTA",    Padr(czConta,12), Nil},;
                {"AUTDTBAIXA",  dTBaixa, Nil},;
                {"AUTDTCREDITO",DtMovi, Nil},;
                {"AUTVALREC",   nzValorRecebido, Nil }}

    AcessaPerg("FIN070", .F.)
    MsExecAuto({|x,y| Fina070(x,y)}, aBaixa, 3)
    aBaixa := {}

    If lMsErroAuto 
        MostraErro()
        AFAT046(cEmail, cAssunto, "Não foi possível baixar o título " + czPrefixo + '-' + czTitulo + ' Nosso Numero '+ czNossNum + ' Valor Recebido '+ nzValorRecebido)
    Else

        ZBS->(DbSelectArea("ZBS"))
        ZBS->(DbSetOrder(2))
        ZBS->(DbGoTop())

        If ZBS->(MsSeek(czFilBx + czNossNum))
            ZBS->(Reclock('ZBS',.F.))
            ZBS->ZBS_DTBAIX := dDataBase
            ZBS->(MsUnlock())
        EndIf

        ZBS->(DbCloseArea())
    EndIf

Return

1 curtida

Gustavo,

Pelo que olhei no código, não identifiquei nenhum ponto de atenção. Como cada ambiente é diferente não tem como supor o que pode ser, mas se for o caso pode realizar um teste. Tentei gerar uma baixa manual desse mesmo título. Veja se vai apresentar alguma crítica ou algo parecido. Outro ponto de atenção é se teria algum PONTO DE ENTRADA que possa validar a baixa, esse atambém pode ser o problema.

Att,

Flávio, agradeço a atenção. Eu solucionei posicionando o Título na SE1, dessa forma baixou corretamente.

Como ficou abaixo:


lMsErroAuto := .F.

    DbSelectArea("SE1")
    SE1->(DbSetOrder(19))
    SE1->(DbGoTop())

    If SE1->(MsSeek(Right(cNumBol,10)))
        If Empty(SE1->E1_BAIXA)
            If SE1->E1_NOSSONR = Right(cNumBol,17)

                aBaixa :=   {{"E1_FILIAL", SE1->E1_FILIAL, Nil},;
                            {"E1_PREFIXO", SE1->E1_PREFIXO, Nil},;
                            {"E1_NUM", SE1->E1_NUM, Nil},;
                            {"E1_PARCELA", SE1->E1_PARCELA, Nil},;
                            {"E1_TIPO" , SE1->E1_TIPO, Nil},;
                            {"E1_CLIENTE", SE1->E1_CLIENTE, Nil},;
                            {"E1_LOJA",  SE1->E1_LOJA, Nil},;
                            {"AUTMOTBX", 'NOR', Nil},;
                            {"AUTBANCO", Padr(SE1->E1_PORTADO,3), Nil},;
                            {"AUTAGENCIA", Padr(SE1->E1_AGEDEP, 5), Nil},;
                            {"AUTCONTA", Padr(SE1->E1_CONTA,12), Nil},;
                            {"AUTDTBAIXA", dTBaixa, Nil},;
                            {"AUTDTCREDITO", DtMovi, Nil},;
                            {"AUTVALREC", nzValPago, Nil }}

                AcessaPerg("FIN070", .F.)
                MsExecAuto({|x,y| Fina070(x,y)}, aBaixa, 3)

                If lMsErroAuto 
                    MostraErro()
                    AFAT046(cEmail, cAssunto, "Não foi possível baixar o título " + SE1->E1_PREFIXO + '-' + SE1->E1_NUM + ' Nosso Numero '+ SE1->E1_NOSSONR + ' Valor Recebido '+ nzValorRecebido)

                    aBaixa := {} 
                Else

                    ZBS->(DbSelectArea("ZBS"))
                    ZBS->(DbSetOrder(2))
                    ZBS->(DbGoTop())

                    If ZBS->(MsSeek(SE1->E1_FILIAL + SE1->E1_NOSSONR))
                        ZBS->(Reclock('ZBS',.F.))
                        ZBS->ZBS_DTBAIX := dDataBase
                        ZBS->(MsUnlock())
                    EndIf

                    ZBS->(DbCloseArea())
                EndIf
            EndIf
        EndIf
    EndIf

    SE1->(DbCloseArea())

1 curtida

Existe alguma forma de usar essa rotina automática com o Cliente e Loja? Pois estou com uma ocorrência, em minha base, onde tenho dois titulos com mesma filial + prefixo + numero + parcela + tipo, apenas diferenciados pelo cliente + loja.

Mesmo carregando o array dessa forma:

aBaixa := { { "E1_PREFIXO", cPre, Nil },; { "E1_NUM", cDoc, Nil },; { "E1_PARCELA", cPar, Nil },; { "E1_TIPO", cTip, Nil },; { "E1_CLIENTE", cCli, Nil },; { "E1_LOJA", cLoj, Nil },; { "AUTMOTBX", cTpB, Nil },; { "AUTDTBAIXA", dDte, Nil },; { "AUTDTCREDITO", dDte, Nil },; { "AUTHIST", cAux1, Nil },; { "AUTJUROS", 0, Nil },; { "AUTVALREC", nVal, Nil } }

Ele posiciona no primeiro, o qual não seria o correto, desconsiderando o cliente e loja informados

Alguem tem ideia do que pode ser?