Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Produto:

Protheus.

Versões:

P12

Ocorrência:

Rotina automática da rotina Liquidação - Exemplo de Execauto FINA565

Passo a passo:

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 informações utilizadas nesta user function precisam estar previamente cadastradas na base que será utilizada.

É necessário ter cadastrados os seguintes lançamentos padrões:


O mesmo processo efetuado manualmente

Título a ser liquidado

Image Modified

Tela 1

Seleção de Títulos


Tela de Juros e Descontos

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

Resultado final

Exemplo de utilização para rotina automática:

#INCLUDE 'PROTHEUS.CH'

USER FUNCTION F565EXEC()
Local aTela1 := {}
Local aTela2 := {}
Local aChave := {}  // Não utilizado no momento
Local aEdtVlr := {}
Local aCols := {}
Local aItens := {}
Local cPrefixo := ' '
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.

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

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

// Critérios Array de Seleção de Títulos a Liquidardesvio de tela - Preencher somente o que for alterar
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', 0.00}) //- Até o Valor De:
*/
aAdd(aTela1, {'cMoeda565', '1'}) //- Moeda:
aAdd(aTela1, {'cOutrMoed', '1'}) //- Outras moedas:
aAdd(aTela1, {'cIntervalo', '1'}) //- Intervalo por:
aAdd(aTela1, {'dData565I', dDataBaseCTOD('08/09/2016')}) //- Data De:
aAdd(aTela1, {'dData565F', dDataBaseCTOD('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é:

//aChave := {}
//aAdd(aChave, {'D MG 01 '+cPrefixo+cTitulo+cParcela+cTipo+cFornec+cLoja})

//Configuração dos novos títulos

aAdd(aTela2, {'cLoja', cLoja }) //- Loja
aAdd(aTela2, {'cCondicao', '003' }) //- Condicao
aAdd(aTela2, {'cTipo', 'CH ' }) //- Tipo
aAdd(aTela2, {'cNatureza', 'FIN001CA' }) //- Natureza
aAdd(aTela2, {'nValorLiq', 6000 }) //- Vlr Liquido
aAdd(aTela2, {'nValorAcr', 0 }) //- Vlr Acrescimo
aAdd(aTela2, {'nValorDcr', 0 }) //- Vlr Decrescimo
aAdd(aTela2, {'nValorTot', 6000 6005 }) //- Vlr Total
aAdd(aTela2, {'cFornece', cFornec }) //- Fornecedor

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

aEdtVlr := {}
aAdd( aEdtVlr, {'Editar', .T. } ) //- Se necessario Editar Valores
aAdd( aEdtVlr, { {'chave','D MG 01 FIN565001 NF FINC8301'},;
    {'nCotMoed', 03},;
    {'nValJur', 5},;
    {'nValDes', 0},;
    {'nValLiq', 6005} } )

DBSELECTAREA('SE2')
SE2->(DBSETORDER(1))
SE2->(DBSEEK('D MG 01 FIN565001 NF FINC8301'))

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

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

Return NIL

Demais Informações:

Pontos de Entrada - FINA590

Lançamentos Padrão

Faturas a Pagar - FINA290

...