Árvore de páginas


01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:Serviços
Módulo:Financeiro


02. SITUAÇÃO/REQUISITO

Rotina automática da liquidação a pagar - Exemplo de Execauto FINA565.

03. EXEMPLO DE UTILIZAÇÃO


Informações

FINA565(nPosArotina, aGetAut1, aChvAut, aGetAut2, aColItens, aEdit, lAutomato)

Na rotina automática de Liquidação Contas a Pagar (FINA565) é possível gerar novos títulos a partir de títulos. As variáveis aChvAut e lAutomato são de uso interno e não devem ser enviadas na chamada.

As informações utilizadas nesta user function precisam estar previamente cadastradas na base que será utilizada.

Para o cancelamento da liquidação, devem ser passadas as seguintes informações: 

nPosArotina := 4

AADD(aGetAut1,{"CLIQCAN",cNumLiq})

A posição 1 do array, deve ser a string fixa "CLIQCAN".

A variável cNumLiq é o número da liquidação a ser cancelada, que pode ser obtida através do campo E2_NUMLIQ.

Seleção de Filiais

Na rotina automática de Liquidação Contas a Pagar (FINA565) não é possível enviar dados para seleção de filiais e ou realizar a busca multi-filial dos registros desejados. Sendo assim, a seleção dos títulos no processamento será realizada na abertura do ambiente no momento da chamada da rotina.

Exemplificação do passo a passo via browser. 

Título a ser liquidado.


Tela 1 - Configuração dos parâmetros para filtragem dos títulos. 


Seleção de Títulos filtrados


Tela de Juros e Descontos 


Tela 2 - Condição de pagamento e aCols de cheques.


Resultado Final


Título Baixado:

Titulos gerados:

04. EXEMPLOS DE ROTINA AUTOMATICA


Liquidação
#INCLUDE 'PROTHEUS.CH'

USER FUNCTION F565EXEC()
    Local aTela1 := {}
    Local aTela2 := {}
    Local aEdtVlr := {}
    Local aCols := {}
    Local aItens := {}
    Local cPrefixo := 'GER'
    Local cFornec  := 'FINC83'
    Local cLoja    := '01'
    Local nRotina  := 2 // Liquidar


    Local nI := 0

    // Variáveis utilizadas para o controle de erro da rotina automática
    Private lMsErroAuto := .F.
    Private lAutoErrNoFile := .T.

	PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " USER "admin" PASSWORD "" TABLES "SE1,SA1,SE2" MODULO "FIN"

    // Define a DataBase da movimentação
    dDataBase := cToD("08/09/2016")

    // Define Parâmetros da Rotina
    Pergunte('FIN565',.F.)

    // Array de desvio de tela - Caso não seja passado nenhum dos parametros
    // a liquidação ira considerar o título posicionado
    aAdd(aTela1, {'cFornDe', 'FINC83'}) //- Fornecedor De:
    aAdd(aTela1, {'cLojaDe', '01' }) //- Loja De:
    aAdd(aTela1, {'cFornAte', 'FINC83'}) //- Fornecedor Até:
    aAdd(aTela1, {'cLojaAte', '01' }) //- Loja Até: 
    aAdd(aTela1, {'cForn565', 'FINC83'}) //- Gerar p/:
    aAdd(aTela1, {'cLoja', '01'}) //- Loja:
    aAdd(aTela1, {'nValorMax', 0.00}) //- Valor:
    aAdd(aTela1, {'nValorDe', 0.00}) //- Titulos no valor De: 
    aAdd(aTela1, {'nValorAte', 999999999999}) //- Até o Valor De:
    aAdd(aTela1, {'cMoeda565', '1'}) //- Moeda:
    aAdd(aTela1, {'cOutrMoed', '1'}) //- Outras moedas:
    aAdd(aTela1, {'cIntervalo', '1'}) //- Intervalo por:
    aAdd(aTela1, {'dData565I', CTOD('08/09/2016')}) //- Data De:
    aAdd(aTela1, {'dData565F', CTOD('08/09/2016')}) //- Data Até:
    aAdd(aTela1, {'cPrefDe', ' '}) //- Prefx De: 
    aAdd(aTela1, {'cPrefAte', 'zzz'}) //- Prefx Até:
    aAdd(aTela1, {'cNumDe', 'FIN565001'}) //- Titulo De:
    aAdd(aTela1, {'cNumAte', 'FIN565001'}) //- Titulo Até:


    //aHeader - Cabeçalho
    aAdd(aTela2, {'cLoja', cLoja }) //- Loja
    aAdd(aTela2, {'cCondicao', '003' }) //- Condicao (opcional)
    aAdd(aTela2, {'cTipo', 'CH ' }) //- Tipo
    aAdd(aTela2, {'cNatureza', 'FIN001CA' }) //- Natureza
    aAdd(aTela2, {'NTXLIQ', 4}) //- TX Moeda (opcional)
    aAdd(aTela2, {'cFornece', cFornec }) //- Fornecedor

    // Itens/aCols
    //Utilizando condição de pagamento torna-se obrigatório apenas esses campos
    aItens := {}
    AADD(aItens, {'E2_PREFIXO', cPrefixo}) //- Prefixo 
    AADD(aItens, {'E2_BCOCHQ' , '001'}) //- Banco
    AADD(aItens, {'E2_AGECHQ' , '0001'}) //- Agencia
    AADD(aItens, {'E2_CTACHQ' , '00001'}) //- Conta
    AADD(aItens, {'E2_NUM' , 'CHQ001'}) //- Num Cheque
    AADD(aCols, ACLONE(aItens))

    //Array que controla edição dos títulos a serem liquidados.
    aEdtVlr := {}
    AAdd( aEdtVlr, {'Editar', .T. } ) //- Se necessario Editar Valores
    aAdd( aEdtVlr, { {'chave','E2_FILIAL+E2_PREFIXO+E2_NUM+E2_PARCELA+E2_TIPO+E2_FORNECE+E2_LOJA'},;
        {'nCotMoed', 3},;
        {'nValJur', 0},;
        {'nValDes', 0},; 
        {'nValLiq', 6005} } )

    MSEXECAUTO( { |a, b, c, d, e, f, g| FINA565( a, b, c, d, e, f, g )}, nRotina, aTela1, Nil, aTela2, aCols, aEdtVlr, .T. )

    If lMsErroAuto
        MostraErro()
    Else
        Conout("Liquidação gerada com sucesso!")
    EndIf

Return NIL

Cancelamento Liquidação
#INCLUDE "TOTVS.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
 
USER FUNCTION F565CNCL()    
 
    Local nRotina   As Numeric
    Local aTela1    As ARRAY
    Local cNumLiq   As Character 
 
    Private lMsErroAuto := .F.
    Private lAutoErrNoFile := .T.
 
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " USER "admin" PASSWORD "" TABLES "SE1,SA1,SE2" MODULO "FIN"
  
    nRotina := 4
    aTela1  := {}   
    cNumLiq := "000002"
 
    AADD(aTela1,{"CLIQCAN",cNumLiq})  
     
    // Define a DataBase da movimentação
    dDataBase := CTOD("08/09/2016")
 
    MSEXECAUTO( { |a, b, c, d, e, f, g| FINA565( a, b, c, d, e, f, g )}, nRotina, aTela1, Nil, Nil, Nil, Nil, .T. )
 
    If lMsErroAuto
        MostraErro()
    Else
        Conout("Liquidação cancelada com sucesso!")
    EndIf
  
Return          

Aviso!

Caso seja informada uma condição de pagamento é necessário apenas informar os campos:

  • E2_PREFIXO
  • E2_BCOCHQ
  • E2_AGECHQ
  • E2_CTACHQ
  • E2_NUM

Não informando uma condição de pagamento devera ser preenchido todos os campos que compõem o aCols (Para acréscimo e decréscimo utilizar esta forma - títulos gerados).

Não informado condição de pagamento
Exemplo de duas parcelas:

For nI := 1 To 2 
    aItens := {}
    AADD(aItens, {'E2_PREFIXO', cPrefixo}) //- Prefixo 
    AADD(aItens, {'E2_TIPO' , 'CH'}) //- Tipo
    AADD(aItens, {'E2_BCOCHQ' , '100'}) //- Banco
    AADD(aItens, {'E2_AGECHQ' , '001'}) //- Agencia
    AADD(aItens, {'E2_CTACHQ' , '1001'}) //- Conta
    AADD(aItens, {'E2_NUM' , 'FLQ'+STRZERO(nI,4)}) //- Num Cheque
    AADD(aItens, {'E2_VENCTO' , dDataBase+(nI*15)}) //- Dt Vencimento
    AADD(aItens, {'E2_VLCRUZ' , 3002.50}) //- Valor
    AADD(aItens, {'E2_ACRESC' , 0}) //- Acrescimo
    AADD(aItens, {'E2_DECRESC', 0}) //- Decrescimo
    AADD(aItens, {'E2_VALOR' , 3002.50}) //- Valor Total
    AADD(aCols, ACLONE(aItens))
Next nI




04. DEMAIS INFORMAÇÕES


IMPORTANTE!

A rotina realizara a liquidação de todos os títulos encontrados pelo filtro - configurado através do array que corresponde aos parâmetros apresentados na primeira tela.


05. ASSUNTOS RELACIONADOS

       Não há