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},;
|
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" BENEF" ,"TESTE AUTO - BENEF" ,dDataBase,Nil},; {"E5_HISTOR" ,"TESTE AUTO - AUTO" ,Nil},; {"NCTBONLINE" ,1 {"E5_MOEDA" ,"M1" ,Nil}} //1=Sim;2=Não MSExecAuto({|x,y,z| ,Nil},;FinA100(x,y,z)},0,aFINA100,3) If lMsErroAuto MostraErro() {"E5_VALOR" Else ,500 MsgAlert("Movto. Bancario Pagar incluido com sucesso !!!") EndIf ,Nil},; //RECEBER ElseIf nOpc == 2 aFINA100 := { {"E5_NATUREZDATA" ,"001" ,dDataBase ,Nil},; {"E5_BANCOMOEDA" ,"001M1" ,Nil},; {"E5_AGENCIAVALOR" ,"001" ,1500 ,Nil},; {"E5_CONTANATUREZ" ,"001" ,Nil},; {"E5_BANCO" {"E5_BENEF" ,"001" ,"TESTE AUTO - BENEF" ,Nil},; {"E5_HISTORAGENCIA" ,"TESTE AUTO - AUTO"001" ,Nil}},; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3) {"E5_CONTA" If lMsErroAuto ,"001" MostraErro() Else ,Nil},; {"E5_VENCTO" ,dDataBase MsgAlert("Movto. Bancario Pagar incluido com sucesso !!!") ,Nil},; {"E5_BENEF" EndIf ,"TESTE AUTO - BENEF" ,Nil},; ElseIf nOpc == 2 aFINA100 := { {"E5_DATAHISTOR" ,"TESTE AUTO - ,dDataBaseAUTO" ,Nil}} MSExecAuto({|x,y,z| ,Nil},;FinA100(x,y,z)},0,aFINA100,4) If lMsErroAuto MostraErro() {"E5_MOEDA" Else ,"M1"MsgAlert("Movto. Bancario Receber incluido com sucesso !!!") EndIf //EXCLUIR ElseIf nOpc ,Nil},;== 3 dbSelectArea("SE5") SE5->(dbSetOrder(1)) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) {"E5_VALOR" aFINA100 := { ,1500 {"E5_DATA" ,SE5->E5_DATA ,Nil},; {"E5_NATUREZMOEDA" ,"001" ,SE5->E5_MOEDA ,Nil},; {"E5_BANCOVALOR" ,"001" ,SE5->E5_VALOR ,Nil},; {"E5_AGENCIANATUREZ" ,"001" ,SE5->E5_NATUREZ ,Nil},; {"E5_CONTA" ,"001BANCO" ,SE5->E5_BANCO ,Nil},; {"E5_HISTORAGENCIA" ,"TESTE AUTO ,SE5->E5_AGENCIA AUTO" ,Nil}},; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,4) If lMsErroAuto {"E5_CONTA" MostraErro() Else ,SE5->E5_CONTA ,Nil},; MsgAlert("Movto. Bancario Receber incluido com sucesso !!!") EndIf {"E5_HISTOR" ElseIf nOpc == 3 ,SE5->E5_HISTOR dbSelectArea("SE5") ,Nil},; SE5->(dbSetOrder(1)) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) aFINA100 := { {"E5_DATATIPOLAN" ,SE5->E5_DATATIPOLAN ,Nil},; } MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,5) If lMsErroAuto {"E5_MOEDA" MostraErro() ,SE5->E5_MOEDAElse ,Nil},; MsgAlert("Exclusão realizada com sucesso !!!") EndIf //CANCELAR ElseIf nOpc == 4 {"E5_VALOR" dbSelectArea("SE5") ,SE5->E5_VALOR>(dbSetOrder(1)) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) ,Nil},; dbSkip() //colocado apenas para esta sequencia de testes aFINA100 := { {"E5_NATUREZDATA" ,SE5->E5_NATUREZDATA ,Nil},; {"E5_BANCOMOEDA" ,SE5->E5_BANCOMOEDA ,Nil},; {"E5_AGENCIAVALOR" ,SE5->E5_AGENCIAVALOR ,Nil},; {"E5_CONTANATUREZ" ,SE5->E5_CONTANATUREZ ,Nil},; {"E5_HISTORBANCO" ,SE5->E5_HISTORBANCO ,Nil},; {"E5_TIPOLANAGENCIA" ,SE5->E5_TIPOLANAGENCIA ,Nil} } ,; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,5) {"E5_CONTA" If lMsErroAuto ,SE5->E5_CONTA MostraErro(),Nil},; Else MsgAlert("Exclusão realizada com sucesso !!!") {"E5_HISTOR" EndIf ,SE5->E5_HISTOR ElseIf nOpc == 4 ,Nil},; dbSelectArea("SE5") SE5->(dbSetOrder(1)) SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) )) {"E5_TIPOLAN" ,SE5->E5_TIPOLAN dbSkip() //colocado apenas para esta sequencia de testes ,Nil} } aFINA100 := MSExecAuto({ {"E5_DATA" |x,y,z| FinA100(x,y,z)},0,aFINA100,6) If lMsErroAuto ,SE5->E5_DATA ,Nil},;MostraErro() Else MsgAlert("Cancelamento realizada com sucesso !!!") {"E5_MOEDA" EndIf ,SE5->E5_MOEDA //TRANSFERENCIA BANCARIA ElseIf nOpc ,Nil},;== 5 aFINA100 := { {"CBCOORIG" {,"E5_VALOR001" ,SE5->E5_VALOR ,Nil},; {"E5_NATUREZCAGENORIG" ,SE5->E5_NATUREZ"001" ,Nil},; {"E5_BANCOCCTAORIG" ,SE5->E5_BANCO,"001" ,Nil},; {"E5_AGENCIA"CNATURORI" ,"001" ,SE5->E5_AGENCIA ,Nil},; {"E5_CONTACBCODEST" ,SE5->E5_CONTA"002" ,Nil},; {"E5_HISTORCAGENDEST" ,SE5->E5_HISTOR ,"002" ,Nil},; ,Nil},; {"E5_TIPOLAN" ,SE5->E5_TIPOLAN ,Nil} } {"CCTADEST" ,"002" MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,6) If lMsErroAuto ,Nil},; MostraErro() Else MsgAlert("Cancelamento realizada com sucesso !!!") {"CNATURDES" ,"002" EndIf ElseIf nOpc == 5 ,Nil},; aFINA100 := { {"CBCOORIG" ,{"001CTIPOTRAN" ,"CH" ,Nil},; {"CAGENORIGCDOCTRAN" ,"001123456" ,Nil},; {"CCTAORIGNVALORTRAN" ,"001",2500 ,Nil},; {"CNATURORICHIST100" ,"001"TESTE TRF VIA EXECAUTO" ,Nil},; {"CBENEF100" ,"TESTE TRF VIA EXECAUTO" ,Nil},; {"CBCODESTNAGLUTINA" ,"002"2 ,Nil},; //1=Sim;2=Não {"CAGENDESTNCTBONLINE" ,"002"1 ,Nil},; ; //1=Sim;2=Não {"DDATACRED" ,CTOD("25/09/20") ,Nil}; {"CCTADEST" } ,"002" MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,7) If lMsErroAuto ,Nil},; MostraErro() Else {"CNATURDES" ,"002"MsgAlert("Transferência executada com sucesso !!!") EndIf ,Nil},; //Estorno da Transferencia ElseIf nOpc == 6 aFINA100 := {"CTIPOTRAN" ,{"CHAUTNRODOC" ,"123456" ,Nil},; {"CDOCTRANAUTDTMOV" ,"123456" ,dDataBase ,Nil},; {"NVALORTRANAUTBANCO" ,2500 "001" ,Nil},; {"CHIST100AUTAGENCIA" ,"001" ,"TESTE TRF VIA EXECAUTO" ,Nil},; {"CBENEF100AUTCONTA" ,"TESTE TRF VIA EXECAUTO""001" ,Nil} } MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,78) If lMsErroAuto MostraErro() Else MsgAlert("Transferência executada com sucesso !!!")"Transferência cancelada com sucesso !!!") EndIf EndIf EndIfIf 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 ElseIf nOpc == 6 aFINA100 := { {"AUTNRODOC" ,"123456" ,Nil},; {"AUTDTMOV" ,dDataBase ,Nil},; 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 := { {"AUTBANCO" E5_DATA" ,"001"dDataBase ,Nil},; {"AUTAGENCIAE5_MOEDA" ,"001M1" ,Nil},; {"AUTCONTAE5_VALOR" ,500 ,"001" ,Nil} },; MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,8) If lMsErroAuto {"E5_NATUREZ" ,"001" MostraErro() Else ,Nil},; MsgAlert("Transferência cancelada com sucesso !!!") EndIf {"E5_BANCO" EndIf Return | ||||||||||
Bloco de código | ||||||||||
| ||||||||||
#include "rwmake.ch" #include 'tbiconn.ch' User Function Auto450() ,"001" Local aAutoCab := {,Nil} Local aArea,; := GetArea() {"E5_AGENCIA" Local cTabSe1 := ,"TMPSE1A" 001" Local cTabSe2 := "TMPSE2A" Local aSE1450 := {,Nil},; Local aSE2450 := {} Local aFilCmp := {} Private lMsHelpAuto := .F. {"E5_CONTA" Private lMsErroAuto := .F. ,"001" BeginSql Alias cTabSe1 SELECT R_E_C_N_O_ as RECNO FROM %Table:SE1% SE1 WHERE SE1.E1_FILIAL = 'D MG 01 ' AND SE1.E1_PREFIXO = 'CPT' AND SE1.E1_NUM = 'VT001' AND SE1.E1_TIPO = 'NF' AND SE1.E1_CLIENTE = 'FIN001' AND SE1.E1_LOJA = '01' AND SE1.%NotDel% EndSql While (cTabSe1)->(!EOF()) ,Nil},; {"E5_VENCTO" SE1->(DbGoto((cTabSe1)->RECNO)) ,dDataBase AAdd(aSE1450, {SE1->E1_FILIAL+SE1->E1_PREFIXO+SE1->E1_NUM+SE1->E1_PARCELA+SE1->E1_TIPO}) ,Nil},; If ascan(aFilCmp,SE1->E1_FILIAL) == 0 Aadd(aFilCmp, SE1->E1_FILIAL){"E5_BENEF" ,"TESTE AUTO - BENEF" ,Nil},; EndIf (cTabSe1)->(DbSkip()) {"E5_HISTOR" Enddo (cTabSe1)->(DbCloseArea()) BeginSql Alias cTabSe2 SELECT R_E_C_N_O_ as RECNO FROM %Table:SE2% SE2 WHERE SE2.E2_FILIAL = 'D MG 02 ' AND SE2.E2_PREFIXO = 'CPT' AND SE2.E2_NUM = 'VT001' AND SE2.E2_TIPO = 'NF' AND SE2.E2_FORNECE = 'FIN001' AND SE2.E2_LOJA = '01' AND SE2.%NotDel% EndSql While (cTabSe2)->(!EOF()) ,"TESTE AUTO - AUTO" ,Nil},; {"E5_RATEIO" ,"S" SE2->(DbGoto((cTabSe2)->RECNO)) AAdd(aSE2450, {SE2->E2_FILIAL+SE2->E2_PREFIXO+SE2->E2_NUM+SE2->E2_PARCELA+SE2->E2_TIPO+SE2->E2_FORNECE+SE2->E2_LOJA}) ,Nil},; If ascan(aFilCmp,SE2->E2_FILIAL) == 0 Aadd(aFilCmp, SE2->E2_FILIAL) EndIf (cTabSe2)->(DbSkip()) {"NCTBONLINE" Enddo ,1 (cTabSe2)->(DbCloseArea()) aAutoCab :={ {"AUTDVENINI450", cTod('27/08/19') , nil},; ,Nil}} {"AUTDVENFIM450", cTod('27/08/19') , nil},;MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,3) If lMsErroAuto MostraErro() {"AUTNLIM450" ,8000, nil},; Else Conout(" *********** Inclusão realizada com sucesso {"AUTCCLI450" , "FIN001" , nil},;!!! Doc: "+CVALTOCHAR(nDoc)+"*****************") EndIf Return(Nil) /*/{Protheus.doc} F050RAUT Ponto {"AUTCLJCLI" , "01" , nil},; de entrada que permite a gravação do rateio contabil pre-configurado. Valido para MsExecAuto de: - Inclusão {"AUTCFOR450" , "FIN001" , nil},do contas a pagar (FINA050); - Movimentação bancária a pagar (FINA100); @author Totvs @param Nil @return Array com os valores a serem gravados {"AUTCLJFOR" , "01" , nil},;na tabela de rateio CV4 aRet[1] = Tipo rateio: 1 Digitado, 2 - Pre-Configurado {"AUTCMOEDA450" , "01" , nil},; aRet[2] = Código de rateio aRet[3] = Histórico aRet[4] = Conta Contábil débito {"AUTNDEBCRED" , 1 , nil},; aRet[5] = Conta Contábil crédito /*/ User Function F050RAUT() Local aRet := {} {"AUTLTITFUTURO"AADD(aRet, .F. , nil},;2) //2-Rateio Pre-Configurado AADD(aRet, "GCT001") // Codigo do Rateio AADD(aRet, "Rateio automático {"AUTARECCHAVE" ,aSE1450, nil},; F050RAUT") //Historico AADD(aRet, "001") //Conta Contábil débito AADD(aRet, "002") //Conta Contábil crédito {"AUTAPAGCHAVE" , aSE2450 , nil},; {"AUTAFILCOMP" , aFilCmp , nil}} MSExecAuto({|x,y,z| Fina450(x,y,z)}, nil , aAutoCab , 3 ) If !lMsErroAuto ConOut("Incluido com sucesso! ") confirmsx8() Else ConOut("Erro na inclusao!") rollbacksx8() MostraErro() EndIf RestArea(aArea) Return |
Card documentos | ||||
---|---|---|---|---|
|
04. DEMAIS INFORMAÇÕES
Não há.
05. ASSUNTOS RELACIONADOS
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 FINA100Não há
Templatedocumentos |
---|
HTML |
---|
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style> |
...