Histórico da Página
01.
...
VISÃO GERAL
Essa documentação contem detalhes para realizar execuções automáticas (MsExecAuto) de movimentações bancárias, através da rotina FINA100.
Essa funcionalidade possibilita automatizar o processo de movimentação bancária de entrada, saída ou transferência entre contas.
02. PARÂMETROS DA MSEXECAUTO
Devem ser passados 3 parâmetros na chamada da MsExecAuto da rotina FINA100, sendo eles:
1º parâmetro: Passar o conteúdo "0" (zero) para execuções automáticas;
2º parâmetro: Array contendo as informações para preenchimento dos campos para realizar a operação desejada. Dependendo da operação o array terá características diferentes, portanto consulte a sessão "Exemplos de utilização" para mais informações.
3º parâmetro: Opção a ser executada via rotina automática (se será uma movimentação a pagar, transferência, estorno, etc.). Seguem as opções disponíveis:
Código | Descrição |
---|---|
3 | Movimentação Bancária a Pagar (saída) |
4 | Movimentação Bancária a Receber (entrada) |
5 | Excluir Movimentação Bancária |
6 | Cancelar Movimentação Bancária |
7 | Transferência entre contas ou caixas |
8 | Estorno de Transferências |
9 | Classificação |
03. EXEMPLOS DE UTILIZAÇÃO
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE "Protheus.ch"
User Function TST100()
Local nOpc := 0
Local aFINA100 := {}
Private lMsErroAuto := .F.
While .T.
nOpc := 0
nOpc := Aviso("TESTE EXECAUTO DO FINA100", "Escolha a opção do menu da rotina FINA100 a ser executada via EXECAUTO",{"PAGAR","RECEBER","EXCLUIR","CANCELAR","TRANSF.","EST. TRANSF.","SAIR"})
//PAGAR
If nOpc == 1
aFINA100 := { {"E5_DATA" ,dDataBase ,Nil},;
|
02. SITUAÇÃO/REQUISITO
Exemplo de uma forma simples de se efetuar uma movimentação bancária a pagar, a receber ou transferências entre contas correntes de forma automática (sem a apresentação de telas).
03. EXEMPLO DE UTILIZAÇÃO
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#INCLUDE "Protheus.ch" User Function TST100() Local nOpc := 0 Local aFINA100 := {} Private lMsErroAuto := .F. While .T. nOpc := 0 nOpc := Aviso("TESTE EXECAUTO DO FINA100", "Escolha a opção do menu da rotina FINA100 a ser executada via EXECAUTO",{"PAGAR","RECEBER","EXCLUIR","CANCELAR","TRANSF.","EST. TRANSF.","SAIR"}) If nOpc == 1 aFINA100 := { {"E5_DATA" ,dDataBase ,Nil},; {"E5_MOEDA" ,"M1" ,Nil},; {"E5_VALOR" ,500 ,Nil},; {"E5_NATUREZ" ,"001" ,Nil},; {"E5_BANCO" ,"001" ,Nil},; {{"E5_AGENCIA" ,"001" ,Nil},; {"E5_CONTA" ,"001" ,Nil},; {"E5_VENCTO" ,dDataBase ,Nil},; {"E5_BENEF" ,"TESTE AUTO - BENEF" ,Nil},; {"E5_HISTOR" ,"TESTE AUTO - AUTO" ,Nil}},; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3) {"NCTBONLINE" If lMsErroAuto ,1 MostraErro() Else MsgAlert("Movto. Bancario Pagar incluido com sucesso !!!"),Nil}} //1=Sim;2=Não EndIf MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3) If lMsErroAuto ElseIf nOpc == 2 MostraErro() aFINA100 := { {"E5_DATA"Else ,dDataBase MsgAlert("Movto. Bancario Pagar incluido com sucesso !!!") EndIf ,Nil},; //RECEBER ElseIf nOpc == 2 aFINA100 := {"E5_MOEDA" ,"M1{"E5_DATA" ,dDataBase ,Nil},; {"E5_VALORMOEDA" ,1500 ,"M1" ,Nil},; {"E5_NATUREZVALOR" ,"001" ,1500 ,Nil},; {"E5_BANCONATUREZ" ,"001" ,Nil},; {"E5_AGENCIABANCO" ,"001" ,Nil},; {"E5_CONTAAGENCIA" ,"001" ,Nil},; {"E5_HISTORCONTA" ,"TESTE AUTO - AUTO001" ,Nil}} MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,4) ,Nil},; {"E5_VENCTO" ,dDataBase If lMsErroAuto MostraErro() ,Nil},; {"E5_BENEF" ,"TESTE Else AUTO - BENEF" ,Nil},; MsgAlert("Movto. Bancario Receber incluido com sucesso !!!") EndIf {"E5_HISTOR" ,"TESTE AUTO - ElseIfAUTO" nOpc == 3 ,Nil}} dbSelectArea("SE5") SE5->(dbSetOrder(1)MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,4) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) If lMsErroAuto aFINA100 := { {"E5_DATA" MostraErro() Else ,SE5->E5_DATA MsgAlert("Movto. Bancario ,Nil},; Receber incluido com sucesso !!!") EndIf //EXCLUIR {"E5_MOEDA" ElseIf nOpc == 3 ,SE5->E5_MOEDAdbSelectArea("SE5") ,Nil},;SE5->(dbSetOrder(1)) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) aFINA100 := { {"E5_VALORDATA" ,SE5->E5_VALORDATA ,Nil},; {"E5_NATUREZMOEDA" ,SE5->E5_NATUREZMOEDA ,Nil},; {"E5_BANCOVALOR" ,SE5->E5_BANCOVALOR ,Nil},; {"E5_AGENCIANATUREZ" ,SE5->E5_AGENCIANATUREZ ,Nil},; {"E5_CONTABANCO" ,SE5->E5_CONTA BANCO ,Nil},; {"E5_HISTORAGENCIA" ,SE5->E5_HISTORAGENCIA ,Nil},; {"E5_TIPOLANCONTA" ,SE5->E5_TIPOLANCONTA ,Nil},; } MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,5) If lMsErroAuto {"E5_HISTOR" ,SE5->E5_HISTOR MostraErro() Else ,Nil},; MsgAlert("Exclusão realizada com sucesso !!!") EndIf {"E5_TIPOLAN" ElseIf nOpc == 4 ,SE5->E5_TIPOLAN ,Nil} } dbSelectArea("SE5") SE5->(dbSetOrder(1))MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,5) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) ))If lMsErroAuto dbSkip() //colocado apenas para esta sequencia de testes MostraErro() aFINA100Else := { {"E5_DATA" MsgAlert("Exclusão realizada com sucesso !!!") ,SE5->E5_DATA EndIf ,Nil},; //CANCELAR ElseIf nOpc == 4 dbSelectArea("SE5") {"E5_MOEDA" SE5->(dbSetOrder(1)) ,SE5->E5_MOEDA SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) dbSkip() //colocado ,Nil},; apenas para esta sequencia de testes aFINA100 := { {"E5_VALORDATA" ,SE5->E5_VALORDATA ,Nil},; {"E5_NATUREZMOEDA" ,SE5->E5_NATUREZMOEDA ,Nil},; {"E5_BANCOVALOR" ,SE5->E5_BANCOVALOR ,Nil},; {"E5_AGENCIANATUREZ" ,SE5->E5_AGENCIANATUREZ ,Nil},; {"E5_CONTABANCO" ,SE5->E5_CONTABANCO ,Nil},; {"E5_HISTORAGENCIA" ,SE5->E5_HISTORAGENCIA ,Nil},; {"E5_TIPOLANCONTA" ,SE5->E5_TIPOLANCONTA ,Nil} },; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,6) If lMsErroAuto {"E5_HISTOR" ,SE5->E5_HISTOR MostraErro() Else,Nil},; MsgAlert("Cancelamento realizada com sucesso !!!") EndIf {"E5_TIPOLAN" ,SE5->E5_TIPOLAN ElseIf nOpc == 5 ,Nil} } aFINA100 := { {"CBCOORIG" MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,6) ,"001" If lMsErroAuto MostraErro() Else ,Nil},; MsgAlert("Cancelamento realizada com sucesso !!!") EndIf {"CAGENORIG" //TRANSFERENCIA BANCARIA ElseIf nOpc ,"001"== 5 aFINA100 := { {"CBCOORIG" ,Nil},; ,"001" ,Nil},; {"CCTAORIG" ,{"001CAGENORIG" ,"001" ,Nil},; {"CNATURORICCTAORIG" ,"001" ,Nil},; {"CBCODESTCNATURORI" ,"002" 001" ,Nil},; {"CAGENDESTCBCODEST" ,"002" ,Nil},; {"CCTADESTCAGENDEST" ,"002" ,Nil},; {"CNATURDESCCTADEST" ,"002" ,Nil},; {"CTIPOTRANCNATURDES" ,"CH" 002" ,Nil},; {"CDOCTRANCTIPOTRAN" ,"123456CH" ,Nil},; {"NVALORTRANCDOCTRAN" ,2500 ,"123456" ,Nil},; ,Nil},; {"NVALORTRAN" ,2500 {"CHIST100" ,"TESTE TRF VIA EXECAUTO" ,Nil},; {"CBENEF100CHIST100" ,"TESTE TRF VIA EXECAUTO" ,Nil} },; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,7) If lMsErroAuto {"CBENEF100" MostraErro() ,"TESTE TRF VIA EXECAUTO" ,Nil},; Else MsgAlert("Transferência executada com sucesso !!!") EndIf{"NAGLUTINA" ,2 ,Nil},; //Estorno da Transferencia 1=Sim;2=Não ElseIf nOpc == 6 aFINA100 := { {"AUTNRODOC" ,{"123456NCTBONLINE" ,1 ,Nil},; ,Nil}; //1=Sim;2=Não {"DDATACRED" {"AUTDTMOV",CTOD("25/09/20") ,Nil}; ,dDataBase ,Nil},; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,7) If lMsErroAuto {"AUTBANCO" MostraErro() ,"001" Else MsgAlert("Transferência executada ,Nil},;com sucesso !!!") EndIf {"AUTAGENCIA" ,"001" //Estorno da Transferencia ElseIf nOpc == 6 ,Nil},; aFINA100 := { {"AUTNRODOC" ,"123456" {"AUTCONTA" ,Nil},; ,"001" ,Nil} } {"AUTDTMOV" ,dDataBase MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,8),Nil},; If lMsErroAuto MostraErro() {"AUTBANCO" Else ,"001" MsgAlert("Transferência cancelada com sucesso !!!") ,Nil},; EndIf EndIf If nOpc == 0 .OR. nOpc == 7 {"AUTAGENCIA" ,"001" Exit Endif Enddo Return(Nil) |
04. DEMAIS INFORMAÇÕES
...
,Nil},;
{"AUTCONTA" ,"001" ,Nil} }
MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,8)
If lMsErroAuto
MostraErro()
Else
MsgAlert("Transferência cancelada com sucesso !!!")
EndIf
EndIf
If nOpc == 0 .OR. nOpc == 7
Exit
Endif
Enddo
Return(Nil)
|
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#INCLUDE "Protheus.ch"
/*/{Protheus.doc} TST102
MsExecauto do FINA100 para movimentação bancária a pagar com RATEIO CONTABIL
Obs: O ponto de entrada F050RAUT precisa estar compilado para o rateio funcionar via ExecAuto (está no final do exemplo).
@author Totvs
@param Nil
@return Nil
/*/
User Function TST102()
Local aFINA100 := {}
Local nDoc := 1
Private lMsErroAuto := .F.
Private cRecPag := "P" //P=Mov.Pagar ou R=Mov.Receber
Private lF050Auto := .T. //Manipula variavel privada do FINA050, devido o rateio do FINA100 se utilizar do mesmo componente
PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01' USER 'Administrador' PASSWORD '1234'
Conout("TST102 *********** INICIANDO O PROCESSAMENTO! *****************")
aFINA100 := { {"E5_DATA" ,dDataBase ,Nil},;
{"E5_MOEDA" ,"M1" ,Nil},;
{"E5_VALOR" ,500 ,Nil},;
{"E5_NATUREZ" ,"001" ,Nil},;
{"E5_BANCO" ,"001" ,Nil},;
{"E5_AGENCIA" ,"001" ,Nil},;
{"E5_CONTA" ,"001" ,Nil},;
{"E5_VENCTO" ,dDataBase ,Nil},;
{"E5_BENEF" ,"TESTE AUTO - BENEF" ,Nil},;
{"E5_HISTOR" ,"TESTE AUTO - AUTO" ,Nil},;
{"E5_RATEIO" ,"S" ,Nil},;
{"NCTBONLINE" ,1 ,Nil}}
MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3)
If lMsErroAuto
MostraErro()
Else
Conout(" *********** Inclusão realizada com sucesso !!! Doc: "+CVALTOCHAR(nDoc)+"*****************")
EndIf
Return(Nil)
/*/{Protheus.doc} F050RAUT
Ponto de entrada que permite a gravação do rateio contabil pre-configurado.
Valido para MsExecAuto de:
- Inclusão do contas a pagar (FINA050);
- Movimentação bancária a pagar (FINA100);
@author Totvs
@param Nil
@return Array com os valores a serem gravados na tabela de rateio CV4
aRet[1] = Tipo rateio: 1 Digitado, 2 - Pre-Configurado
aRet[2] = Código de rateio
aRet[3] = Histórico
aRet[4] = Conta Contábil débito
aRet[5] = Conta Contábil crédito
/*/
User Function F050RAUT()
Local aRet := {}
AADD(aRet, 2) //2-Rateio Pre-Configurado
AADD(aRet, "GCT001") // Codigo do Rateio
AADD(aRet, "Rateio automático F050RAUT") //Historico
AADD(aRet, "001") //Conta Contábil débito
AADD(aRet, "002") //Conta Contábil crédito
Return aRet
|
04. DEMAIS INFORMAÇÕES
Informações | ||
---|---|---|
| ||
Em relação a manipulação das perguntas da rotina Movimentação Bancária (tabela SX1) via execução automática, algumas delas estarão disponíveis no array do 2º parâmetro, que são:
Para as demais perguntas serão respeitados os conteúdos salvos no perfil do usuário utilizado para realizar a execução automática. |
Informações | ||
---|---|---|
| ||
Para disponibilizar a funcionalidade de Rateio Contábil (E5_RATEIO=S) na execução automática do FINA100, é necessário que seja utilizado o ponto de entrada F050RAUT. Como a rotina FINA100 se utilizada do componente de rateio da rotina FINA050, é necessário que seja utilizado esse ponto de entrada, conforme informado nessa FAQ (ver exemplo na sessão EXEMPLOS DE UTILIZAÇÃO desta página) O ponto de entrada permitirá definir qual o rateio pré-configurado deve ser considerado. |
05. ASSUNTOS RELACIONADOS
Documento de referencia FINA100
...