ExecAuto FINA090

Bom dia Pessoal,

Alguém tem um exemplo de fonte usando ExecAuto do FINA090?

Estou com dificuldade em rodar esse ExecAuto.

Obrigado

Mateus encontrei no TDN então não é garantia que vai funcionar segue o exemplo:

Rotina de Baixas a Pagar Automática através de ExecAuto

Descrição do uso da rotina automática (ExecAuto) FINA090 - Baixas a Pagar Automática, sendo possível utilizar esse procedimento em customizações ou rotinas facilitadoras.

Deve ser passado um array (aTitulos), com oito posições, sendo que cada posição deverá conter a seguinte composição:

Composição de aTitulos

  • aTitulos [1]:= aRecnos (array contendo os Recnos dos registros a serem baixados)
    • aTitulos [2]:= cBanco (Banco da baixa)
    • aTitulos [3]:= cAgencia (Agência da baixa)
    • aTitulos [4]:= cConta (Conta da baixa)
    • aTitulos [5]:= cCheque (Cheque da Baixa)
    • aTitulos [6]:= cLoteFin (Lote Financeiro da baixa)
    • aTitulos [7]:= cNatureza (Natureza do movimento bancário)
    • aTitulos [8]:= dBaixa (Data da baixa)

Caso a contabilização seja online e a tela de contabilização possa ser mostrada em caso de erro no lançamento (falta de conta, débito/crédito não batem, etc) a baixa automática em lote não poderá ser utilizada.

Somente será processada se:

  1. MV_PRELAN = S
    1. MV_CT105MS = N
    2. MV_ALTLCTO = N

Exemplo da chamada da ExecAuto:


User Function TST090AUTO()
    Local aTitulos      := Array(8)
    Private lMsErroAuto := .F.

    aTitulos[1]         := {3 , 4 , 5}
    aTitulos[2]         := "000"
    aTitulos[3]         := "00000"
    aTitulos[4]         := "0000000000"
    aTitulos[5]         := "001"
    aTitulos[6]         := "1"
    aTitulos[7]         := "1"
    aTitulos[8]         := dDataBase

    MSExecAuto({|x, y| Fina090(x,y)},3,aTitulos)

    If lMsErroAuto
        MostraErro()
    Endif

Return Nil

Cara então… essa documentação tá bem mal feita, não consegui fazer com apenas a documentação do TDN. Acabei usando o Fina080.

Mas valeu mesmo assim João

Segue como nós utilizamos internamente para realizar a baixa de PAs. Pode ser adaptado para qualquer tipo de título.

No nosso caso, a SE2 deve estar posicionada no título a ser baixado.


Local cOperacao := 3
Local aTitulos := Array(19)
Local aAutoErro
Private lMsHelpAuto     := .T.
Private lMsErroAuto     := .F.
Private lAutoErrNoFile     := .T.


aTitulos[1] := {SE2->(Recno())}
aTitulos[2] := Padr(_BANCO  , TamSX3("A6_COD")[1])      // Banco da baixa
aTitulos[3] := Padr(_AGENCIA, TamSX3("A6_AGENCIA")[1])  // Agência da baixa
aTitulos[4] := Padr(_CONTA  , TamSX3("A6_NUMCON")[1])   // Conta da baixa
aTitulos[5] := ""                                       // Cheque da Baixa
aTitulos[6] := ""                                       // Lote Financeiro da baixa
aTitulos[7] := ""                                       // Natureza do movimento bancario - apenas Contas a Pagar
aTitulos[8] := SE2->E2_VENCREA                          // Data da baixa
aTitulos[9] := 1                                        // (1 = Baixa somente titulos que não estao em bordero ou nTipoBx -> 2 = Baixa somente titulos em bordero)
aTitulos[10]:= "   "                                    // Portador de
aTitulos[11]:= "ZZZ"                                    // Portador Até
aTitulos[12]:= DaySub(SE2->E2_VENCREA, 2)               // Vencimento Inicial
aTitulos[13]:= SE2->E2_VENCREA                          // Vencimento Final
aTitulos[14]:= "      "                                 // Borderô Inicial
aTitulos[15]:= "ZZZZZZ"                                 // Borderô  Final
aTitulos[16]:= ""                                       // Beneficiário do Cheque
aTitulos[17]:= ""                                       // Historico do Cheque
aTitulos[18]:= .F.                                      // Rateio Multiplas naturezas
aTitulos[19]:= {"02"}                                   // Array para a baixa de vendor

MSExecAuto({|x,y| Fina090(x,y)}, cOperacao, aTitulos)

If lMsErroAuto
    aAutoErro := GETAUTOGRLOG()
    // Seu tratamento de erro (alerta, log, banco de dados, etc)
Endif

Um cuidado que se deve tomar, é com os campos Vencimento Inicial e Final (Posição 12 e 13 do array). Por alguma razão, mesmo que você passe o RecNo do registro que quer baixar na posição 1 do array, ele busca o registro por um select filtrando por estas datas, e se não houver registros no retorno do select, ele dá a mensagem "RECNO - Não existe registro com arquivo em pauta".

Opa, Valeu mestre, vai me ajudar bastante.

Mas uma dúvida, na unica documentação q encontrei, só cita 8 parametros. Tens alguma outra documentação ?

Não tem, quem me passou este código foi um consultor que trabalhou na TOTVS.

Israel, bom dia.

Belo post, você sabe me dizer se o execauto acima preenche as tabelas FK´s ?

Respondento tardiamento a pergunta do Clístenis Batista: Sim, ela preenche as tabelas FKs

Boa tarde

Por favor, verifique a documentação mais atual da rotina de Baixas Automáticas CP (FINA090).

https://tdn.totvs.com/pages/viewpage.action?pageId=645486009

No final da seção 03 - Execução, tem um exemplo de rotina automática para Baixa, Cancelamento e Baixa por Vendor.

Espero ter ajudado.

Boa tarde, eu sei que o post já tem mais de 7 meses, mas estou com uma dúvida: Eu consegui implementar a baixa, porém, quando executo ela manualmente disparando via debug ou a tela de parâmetros iniciais do protheus, o execauto está trazendo a tela para preenchimento do histórico. Esta correto isso ? Como fazer para isso não ocorrer ?

Olá amigo bom dia.
Poderia compartilhar esta baixa automatica via execauto ?
clistenis@gmail.com
Obrigado.