Árvore de páginas

Versões comparadas

Chave

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

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ódigoDescrição
3Movimentação Bancária a Pagar (saída)
4Movimentação Bancária a Receber (entrada)
5Excluir Movimentação Bancária
6Cancelar Movimentação Bancária 
7Transferência entre contas ou caixas
8Estorno de Transferências
9Classificação

03. EXEMPLOS DE UTILIZAÇÃO


Bloco de código
languagejava
themeMidnight
titleExemplo contendo diversas operações
linenumberstrue
collapsetrue
#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   

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
languagejava
themeMidnight
titleExemplo de rotina automatica
#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},;
        aFINA100 := {    {"E5_DATA"        ,dDataBase      {"E5_MOEDA"          ,"M1Nil},;
                         {"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    ,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"             ,SE5->E5_MOEDA            ,Nil},;
                            {"E5_VALOR"             ,SE5,SE5->E5_VALOR       	     ,Nil},;
                            {"E5_NATUREZ"        ,SE5->E5_NATUREZ         ,Nil},;
                            {"E5_BANCO"            ,SE5->E5_BANCO            ,Nil},;
                            {"E5_AGENCIA"         ,SE5->E5_AGENCIA         ,Nil},;
                            {"E5_CONTA"         ,SE5->E5_CONTA            ,Nil},;
                            {"E5_HISTOR"        ,SE5->E5_HISTOR          ,Nil},;
                            {"E5_TIPOLAN"        ,SE5->E5_TIPOLAN         ,Nil} }
    
        MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,5)
    
        If lMsErroAuto
            MostraErro()
        Else
            MsgAlert("Exclusão realizada com sucesso !!!")
        EndIf       

	//CANCELAR
    ElseIf nOpc == 4
        dbSelectArea("SE5")
        SE5->(dbSetOrder(1))
        SE5->(dbSeek(xFilial("SE5")+DToS(dDataBase) ))
        dbSkip() //colocado apenas para esta sequencia de testes
        aFINA100 := {       {"E5_DATA"             ,SE5->E5_DATA            ,Nil},;
                            {"E5_MOEDA"             ,SE5->E5_MOEDA            ,Nil},;
                            {"E5_VALOR"             ,SE5->E5_VALOR         	   ,Nil},;
                            {"E5_NATUREZ"        ,SE5->E5_NATUREZ         ,Nil},;
                            {"E5_BANCO"            ,SE5->E5_BANCO            ,Nil},;
                            {"E5_AGENCIA"         ,SE5->E5_AGENCIA         ,Nil},;
                            {"E5_CONTA"         ,SE5->E5_CONTA            ,Nil},;
                            {"E5_HISTOR"        ,SE5->E5_HISTOR          ,Nil},;
                            {"E5_TIPOLAN"        ,SE5->E5_TIPOLAN         ,Nil} }
    
        MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,6)
    
        If lMsErroAuto
            MostraErro()
        Else
            MsgAlert("Cancelamento realizada com sucesso !!!")
        EndIf       

    //TRANSFERENCIA BANCARIA
    ElseIf nOpc == 5
        aFINA100 := {    {"CBCOORIG"             ,"001"                     ,Nil},;
                            {"CAGENORIG"         ,"001"                     ,Nil},;
                            {"CCTAORIG"          ,"001"                     ,Nil},;
                            {"CNATURORI"         ,"001"                     ,Nil},;
                            {"CBCODEST"          ,"002"                     ,Nil},;
                            {"CAGENDEST"         ,"002"                     ,Nil},;
                            {"CCTADEST"          ,"002"                     ,Nil},;
                            {"CNATURDES"         ,"002"                     ,Nil},;
                            {"CTIPOTRAN"         ,"CH"                      ,Nil},;
                            {"CDOCTRAN"          ,"123456"                  ,Nil},;
                            {"NVALORTRAN"        ,2500                      ,Nil},;
                            {"CHIST100"          ,"TESTE TRF VIA EXECAUTO"  ,Nil},;
                            {"CBENEF100"         ,"TESTE TRF VIA EXECAUTO"  ,Nil},;
                            {"NAGLUTINA"         ,2                    		,Nil},; //1=Sim;2=Não
                            {"NCTBONLINE"        ,1                    		,Nil}; //1=Sim;2=Não
							{"DDATACRED"         ,CTOD("25/09/20")     		,Nil}; 
                    }
    
        MSExecAuto({|x,y,z| FinA100(x,y,z)},0,aFINA100,7)
    
        If lMsErroAuto
            MostraErro()
        Else
            MsgAlert("Transferência executada com sucesso !!!")
        EndIf       
                    
    //Estorno da Transferencia
    ElseIf nOpc == 6
        aFINA100 := {       {"AUTNRODOC"         ,"123456"                ,Nil},;
                            {"AUTDTMOV"            ,dDataBase                ,Nil},;
                            {"AUTBANCO"             ,","001"                    ,Nil},;
                            {"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
    If nOpc == 0 .OR. nOpc == 7
        Exit
    Endif
Enddo
    
Return(Nil)


04. DEMAIS INFORMAÇÕES

...

Bloco de código
languagejava
themeMidnight
titleExemplo de movimentação bancária a pagar com rateio contábil
linenumberstrue
collapsetrue
#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
titlePerguntas da rotina (botão F12)

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:

  • Na inclusão de Movimentos a Pagar e Movimentos a Receber é possível  alterar a pergunta "Contabiliza On Line?", passando no array o identificador NCTBONLINE com o conteúdo 1 (Sim) ou 2 (Não);
  • Na Transferência Bancária é possível controlar a pergunta "Contabiliza On Line ?", passando no array o identificador NCTBONLINE com o conteúdo 1 (Sim) ou 2 (Não);
  • Também na Transferência Bancária é possível controlar a pergunta "Aglut Lancamentos ?", passando no array o identificador NAGLUTINA com o conteúdo 1 (Sim) ou 2 (Nã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
titleMovimentação Bancária com Rateio Contábil

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

...