Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

02. SITUAÇÃO/REQUISITO

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

...

Informações
titleInformaçõ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.

Informações
titleSeleçã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.

Totvs custom tabs box
tabsPasso 01, Passo 02, Passo 03, Passo 04, Passo 05, Passo 06
idspasso1,passo2,passo3,passo4,passo5,passo6

Exemplificação do passo a passo via browser. 

Totvs custom tabs box items
defaultyes
referenciapasso1

Título a ser liquidado.


Totvs custom tabs box items
defaultno
referenciapasso2

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


Totvs custom tabs box items
defaultno
referenciapasso3

Seleção de Títulos filtrados


Totvs custom tabs box items
defaultno
referenciapasso4

Tela de Juros e DescontosDescontos 


Totvs custom tabs box items
defaultno
referenciapasso5

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


Totvs custom tabs box items
defaultno
referenciapasso6

Resultado Final


Título Baixado:

Titulos gerados:

04. EXEMPLOS DE ROTINA AUTOMATICA


Bloco de código
languagejava
themeMidnight
titleExemplo de rotina automáticaLiquidação
collapsetrue
#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','D MG 01 FIN565001 NF FINC8301E2_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, aChaveNil, aTela2, aCols, aEdtVlr, .T. )

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

Return NIL

Bloco de código
languagejava
themeMidnight
titleCancelamento Liquidação
collapsetrue
#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
titleAviso!

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 já calculados(Para acréscimo e decréscimo utilizar esta forma - títulos gerados).

Bloco de código
languagejava
themeMidnight
titleNã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



...

Card documentos
InformacaoA 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.
TituloIMPORTANTE!

...