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},;
{"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},;
{"NCTBONLINE" ,1 ,Nil}} //1=Sim;2=Não
MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3)
If lMsErroAuto
MostraErro()
Else
MsgAlert("Movto. Bancario Pagar incluido com sucesso !!!")
EndIf
//RECEBER
ElseIf nOpc == 2
aFINA100 := { {"E5_DATA" ,dDataBase ,Nil},;
{"E5_MOEDA" ,"M1" ,Nil},;
{"E5_VALOR" ,1500 ,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,4)
If lMsErroAuto
MostraErro()
Else
MsgAlert("Movto. Bancario Receber incluido com sucesso !!!")
EndIf
//EXCLUIR
ElseIf nOpc == 3
dbSelectArea("SE5")
SE5->(dbSetOrder(1))
SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) ))
aFINA100 := { {"E5_DATA" ,SE5->E5_DATA ,Nil},;
{"E5_MOEDA" |
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. 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.","Fechar"}) If nOpc == 1 aFINA100 := { {"E5_DATA" ,dDataBase ,SE5->E5_MOEDA ,Nil},; {"E5_MOEDA"VALOR" ,SE5->E5_VALOR ,"M1",Nil},; {"E5_NATUREZ" ,SE5->E5_NATUREZ ,Nil},; {"E5_VALORBANCO" ,500 SE5->E5_BANCO ,Nil},; {"E5_NATUREZAGENCIA" ,"001" ,SE5->E5_AGENCIA ,Nil},; {"E5_BANCOCONTA" ,"001" ,SE5->E5_CONTA ,Nil},; ,Nil},; {"E5_HISTOR" ,SE5->E5_HISTOR {"E5_AGENCIA" ,"001",Nil},; ,Nil},; {"E5_TIPOLAN" ,SE5->E5_TIPOLAN ,Nil} } {"E5_CONTA" ,"001"MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,5) If lMsErroAuto ,Nil},;MostraErro() Else MsgAlert("Exclusão realizada com sucesso !!!") {"E5_BENEF" EndIf ,"TESTE AUTO - BENEF" //CANCELAR ,Nil},; ElseIf nOpc == 4 dbSelectArea("SE5") SE5->(dbSetOrder(1)) {"E5_HISTOR" SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) ,"TESTE AUTO - AUTO" dbSkip() //colocado apenas para esta sequencia ,Nil}} de testes MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3) aFINA100 := { {"E5_DATA" If lMsErroAuto ,SE5->E5_DATA MostraErro() Else,Nil},; MsgAlert("Movto. Bancario Pagar incluido com sucesso !!!") EndIf {"E5_MOEDA" ,SE5->E5_MOEDA ElseIf nOpc == 2 ,Nil},; aFINA100 := { {"E5_DATA" ,dDataBase {"E5_VALOR" ,SE5->E5_VALOR ,Nil},; {"E5_MOEDA"NATUREZ" ,SE5->E5_NATUREZ ,"M1" ,Nil},; ,Nil},; {"E5_BANCO" ,SE5->E5_BANCO ,Nil},; {"E5_VALOR" ,1500 {"E5_AGENCIA" ,SE5->E5_AGENCIA ,Nil},; {"E5_NATUREZCONTA" ,"001" ,SE5->E5_CONTA ,Nil},; {"E5_BANCOHISTOR" ,"001" SE5->E5_HISTOR ,Nil},; {"E5_AGENCIA" ,"001TIPOLAN" ,SE5->E5_TIPOLAN ,Nil} },; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,6) {"E5_CONTA"If lMsErroAuto ,"001" MostraErro() Else ,Nil},; MsgAlert("Cancelamento realizada com sucesso !!!") EndIf {"E5_HISTOR" ,"TESTE AUTO - AUTO" ,Nil}} //TRANSFERENCIA BANCARIA ElseIf nOpc == 5 aFINA100 := { MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,4) {"CBCOORIG" If lMsErroAuto ,"001" MostraErro() Else,Nil},; MsgAlert("Movto. Bancario Receber incluido com sucesso !!!") EndIf {"CAGENORIG" ,"001" ElseIf nOpc == 3 dbSelectArea("SE5") ,Nil},; SE5->(dbSetOrder(1)) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) aFINA100 := { {"E5_DATA"CCTAORIG" ,"001" ,SE5->E5_DATA ,Nil},; {"E5_MOEDA"CNATURORI" ,"001" ,SE5->E5_MOEDA ,Nil},; {"E5_VALOR"CBCODEST" ,"002" ,SE5->E5_VALOR ,Nil},; {"CAGENDEST" {,"E5_NATUREZ"002" ,SE5->E5_NATUREZ ,Nil},; {"E5_BANCO"CCTADEST" ,"002" ,SE5->E5_BANCO ,Nil},; {"E5_AGENCIACNATURDES" ,SE5->E5_AGENCIA"002" ,Nil},; {"E5_CONTA""CTIPOTRAN" ,"CH" ,SE5->E5_CONTA ,Nil},; {"E5_HISTORCDOCTRAN" ,SE5->E5_HISTOR ,"123456" ,Nil},; {"E5_TIPOLANNVALORTRAN" ,SE5->E5_TIPOLAN2500 ,Nil} } MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,5) ,Nil},; If lMsErroAuto MostraErro() {"CHIST100" Else ,"TESTE TRF VIA MsgAlert(EXECAUTO"Exclusão realizada com sucesso !!!") ,Nil},; EndIf ElseIf nOpc == 4 dbSelectArea({"SE5") SE5->(dbSetOrder(1)) CBENEF100" SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) ,"TESTE TRF VIA EXECAUTO" ,Nil},; dbSkip() //colocado apenas para esta sequencia de testes aFINA100 := { {"E5_DATA"NAGLUTINA" ,2 ,SE5->E5_DATA ,Nil},; //1=Sim;2=Não {"E5_MOEDANCTBONLINE" ,1 ,SE5->E5_MOEDA ,Nil},; ; //1=Sim;2=Não {"DDATACRED" ,CTOD("25/09/20") ,Nil}; {"E5_VALOR" } ,SE5->E5_VALOR ,Nil},;MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,7) If lMsErroAuto {"E5_NATUREZ"MostraErro() ,SE5->E5_NATUREZElse ,Nil},; MsgAlert("Transferência executada com sucesso !!!") EndIf {"E5_BANCO" ,SE5->E5_BANCO //Estorno da Transferencia ,Nil},; ElseIf nOpc == 6 aFINA100 := { {"AUTNRODOC" {,"E5_AGENCIA123456" ,SE5->E5_AGENCIA ,Nil},; {"E5_CONTAAUTDTMOV" ,SE5->E5_CONTAdDataBase ,Nil},; {"E5_HISTORAUTBANCO" ,SE5->E5_HISTOR ,"001" ,Nil},; {"E5_TIPOLANAUTAGENCIA" ,SE5->E5_TIPOLAN "001" ,Nil} } MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,6) ,Nil},; If lMsErroAuto MostraErro() Else {"AUTCONTA" ,"001" MsgAlert("Cancelamento realizada com sucesso !!!") EndIf ,Nil} } ElseIf nOpc == 5 aFINA100 := { {"CBCOORIG" MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,8) ,"001" If lMsErroAuto MostraErro() Else ,Nil},; MsgAlert("Transferência cancelada com sucesso !!!") EndIf {"CAGENORIG"EndIf If nOpc == ,"001" 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 ,Nil},; {"CCTAORIG" ,"001" ,Nil},; {"CNATURORI" ,"001" 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" ,Nil},; ,dDataBase ,Nil},; {"CBCODEST" ,{"002E5_MOEDA" ,"M1" ,Nil},; {"CAGENDESTE5_VALOR" ,"002" ,500 ,Nil},; {"CCTADEST" E5_NATUREZ" ,"002" 001" ,Nil},; {"CNATURDES" ,"002" E5_BANCO" ,"001" ,Nil},; {"CTIPOTRANE5_AGENCIA" ,"CH001" ,Nil},; ,Nil},; {"E5_CONTA" ,"001" {"CDOCTRAN" ,"123456",Nil},; ,Nil},; {"E5_VENCTO" ,dDataBase {"NVALORTRAN",Nil},; ,2500 {"E5_BENEF" ,"TESTE AUTO - BENEF" ,Nil},; {"CHIST100" E5_HISTOR" ,"TESTE TRFAUTO VIA- EXECAUTOAUTO" ,Nil},; {"CBENEF100E5_RATEIO" ,"S"TESTE TRF VIA EXECAUTO" ,Nil} } MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,7) ,Nil},; If lMsErroAuto MostraErro() Else MsgAlert("Transferência executada com sucesso !!!") {"NCTBONLINE" ,1 EndIf ,Nil}} MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3) If lMsErroAuto MostraErro() ElseIf nOpc == 6Else aFINA100 := { {"AUTNRODOC" ,"123456" Conout(" *********** Inclusão realizada com sucesso !!! Doc: "+CVALTOCHAR(nDoc)+"*****************") EndIf Return(Nil) /*/{Protheus.doc} F050RAUT Ponto de entrada que ,Nil},; 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 {"AUTDTMOV" ,dDataBasepagar (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 ,Nil},;- Pre-Configurado aRet[2] = Código de rateio aRet[3] = Histórico aRet[4] = Conta Contábil débito {"AUTBANCO" aRet[5] = Conta Contábil crédito /*/ User Function F050RAUT() ,"001" Local aRet := {} AADD(aRet, 2) //2-Rateio Pre-Configurado AADD(aRet, "GCT001") // Codigo do ,Nil},;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 {"AUTAGENCIA" ,"001" ,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 Return |
04. DEMAIS INFORMAÇÕES
...
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
...