ÍNDICE

01. VISIÓN GENERAL

Ejemplos de ejecución por medio de la rutina automática en la rutina de asientos contables automáticos(CTBA102), mostrando ejemplos de utilización y tablas relacionadas.

02. EJEMPLO DE UTILIZACIÓN

A continuación mostraremos ejemplos de utilización.


La ejecución automática está disponible solamente para la inclusión de asientos contables.

En la utilización de execAuto considere los siguientes critérios:

  •  - Pasar el campo CT2_CONVER como 15555, demás monedas se deben hacer por la inclusión de un nuevo aItens
  •  - Pasar el campo CT2_CRITER, a las otras monedas solamente incluye como conversión, no permitiendo la inclusión de CT2_VALOR en cero.
  •  - Para modificación del registro pase nuevamente el aCab.
  •  - El sistema no bloquea el asiento por medio del execauto cuando el débito y el crédito están diferentes, respetando los parámetros MV_CONTBAT = S y MV_CONTSB = N, cuando esto ocurre, este genera los asientos como tipo 9 Asiento previo para que ocurra posteriormente una verificación.

Para garantizar la grabación correcta de los campos Logs y Auditoría (CT2_USERGI y CT2_USERGA) al utilizarlos, esw necesario informar el Usuario y la Contraseña del Protheus durante la preparación del entorno, para saber más, acceda a:

Logs y Auditoría

RpcSetEnv

Prepare Environment


02.1. Inclusión:

02.1.1. Asiento sin AE:

#INCLUDE "PROTHEUS.CH"
 
//-------------------------------------------------------------------
/*/{Protheus.doc} MyCTBA102Inc    
 
 Inclusión de Asiento automático CTBA102
 
@author Totvs
@since 23/06/2022
@version 2.0
 
/*/
//-------------------------------------------------------------------
 
User Function MyCTBA102Inc()
 
Local aArea  := GetArea()
Local aCab   := {}
Local aItens := {}

Private lMsErroAuto     := .F.
Private lMsHelpAuto     := .T.
Private CTF_LOCK        := 0
Private lSubLote        := .T.
 

    RpcSetEnv( 'T1', 'D MG 01 ',,,'CTB')

    aAdd(aCab,  {'DDATALANC'     ,dDataBase        ,NIL} )
    aAdd(aCab,  {'CLOTE'         ,'333333'         ,NIL} )
    aAdd(aCab,  {'CSUBLOTE'      ,'001'            ,NIL} )
    aAdd(aCab,  {'CPADRAO'       ,''               ,NIL} )
    aAdd(aCab,  {'NTOTINF'       ,0                ,NIL} )
    aAdd(aCab,  {'NTOTINFLOT'    ,0                ,NIL} )
 
    aAdd(aItens,{  {'CT2_FILIAL'      ,xFilial('CT2'), NIL},;
                   {'CT2_LINHA'      , '001'         , NIL},;
                   {'CT2_MOEDLC'      ,'01'          , NIL},;
                   {'CT2_DC'           ,'3'          , NIL},;
                   {'CT2_DEBITO'      ,'101010100'   , NIL},;
                   {'CT2_CREDIT'      ,'201010100'   , NIL},;
                   {'CT2_VALOR'      , 3000          , NIL},;
                   {'CT2_ORIGEM'     ,'MSEXECAUT'    , NIL},;
                   {'CT2_HP'           ,''           , NIL},;
                   {'CT2_CONVER'    ,'11'            , NIL},;
                   {'CT2_HIST'       ,'MSEXECCT2'    , NIL} } )         
 
    MSExecAuto({|x, y,z| CTBA102(x,y,z)}, aCab ,aItens, 3)
 
    If lMsErroAuto
        lMsErroAuto := .F.
        MostraErro()
    Endif
    
RestArea(aArea)

 
Return


02.1.2. Asiento con AE:


El ítem CPADRAO del encabezado (aCab) se utiliza para alimentar la variable cPadrao.
Esta variable es responsable por vincular y validar el Asiento estándar (AE) utilizado en la rutina automática.

Al informar, el sistema valida el Asiento estándar y completa automáticamente los campos previstos en su configuración, si no fueran informados en ExecAuto.
Entre los principales campos completados de manera automática están:

  • Cuentas contables.

  • Centro de costos.

  • Valores.

  • Historial.
  • Entre outras informaciones configuradas en el Asiento estándar.

⚠️ IMPORTANTE

  • Si alguna información obligatoria no estuviera configurada en el AE, esta debe informarse en aItens.

  • Ejemplo: los campos CT2_DEBITO y CT2_CREDIT.

  • Si estas cuentas no estuvieran definidas en el AE y tampoco se transfieran a ExecAuto, la rutina devolverá error, pues no habrá estos datos obligatorios para formar parte del asiento.



Cumplimentación del campo CT2_LP

El campo CT2_LP necesaariamente debe estar marcado como “usado” en el diccionario de datos.
Para que su grabación ocurra en la tabla, este debe informarse en el array aItens en el momento de la activación de ExecAuto.

Importante:

  • La información transferida al campo CT2_LP de aItens solamente se grabará en el asiento.

  • El sistema validará solamente si el AE informado existiera y estuviera activo.

  • La cumplimentación automática de cuentas, centros de costo o valores no se realizará a partir de este campo. Para este propósito, debe utilizarse CPADRAO.

  • Resaltamos la necesidad de atención a la cumplimentación de este campo con relación al encabezado CPADRAO, pues el sistema permite que las informaciones sean diferentes. Si no quisiera esta diferencia, el mismo valor debe informarse en ambos arrays (aCab y aItens).


OBS: En el siguiente ejemplo, los campos CT2_DEBITO, CT2_CREDIT y CT2_HIST se retiraron, pues serán completados automáticamente por el Asiento estándar 001.

#INCLUDE "PROTHEUS.CH"
 
//-------------------------------------------------------------------
/*/{Protheus.doc} MyCTBA102Inc    
 
 Inclusión de asiento automático CTBA102
 
@author Totvs
@since 23/06/2022
@version 2.0
 
/*/
//-------------------------------------------------------------------
 
User Function MyCTBA102Inc()
 
Local aArea  := GetArea()
Local aCab   := {}
Local aItens := {}

Private lMsErroAuto     := .F.
Private lMsHelpAuto     := .T.
Private CTF_LOCK        := 0
Private lSubLote        := .T.
 

    RpcSetEnv( 'T1', 'D MG 01 ',,,'CTB')

    aAdd(aCab,  {'DDATALANC'     ,dDataBase        ,NIL} )
    aAdd(aCab,  {'CLOTE'         ,'333333'         ,NIL} )
    aAdd(aCab,  {'CSUBLOTE'      ,'001'            ,NIL} )
    aAdd(aCab,  {'CPADRAO'       ,''               ,NIL} )
    aAdd(aCab,  {'NTOTINF'       ,0                ,NIL} )
    aAdd(aCab,  {'NTOTINFLOT'    ,0                ,NIL} )
 
    aAdd(aItens,{  {'CT2_FILIAL'      ,xFilial('CT2'), NIL},;
                   {'CT2_LINHA'      , '001'         , NIL},;
                   {'CT2_MOEDLC'      ,'01'          , NIL},;
                   {'CT2_DC'           ,'3'          , NIL},;
                   {'CT2_DEBITO'      ,'101010100'   , NIL},;
                   {'CT2_CREDIT'      ,'201010100'   , NIL},;
                   {'CT2_VALOR'      , 3000          , NIL},;
                   {'CT2_ORIGEM'     ,'MSEXECAUT'    , NIL},;
                   {'CT2_HP'           ,''           , NIL},;
                   {'CT2_CONVER'    ,'11'            , NIL},;
                   {'CT2_HIST'       ,'MSEXECCT2'    , NIL} } )         
 
    MSExecAuto({|x, y,z| CTBA102(x,y,z)}, aCab ,aItens, 3)
 
    If lMsErroAuto
        lMsErroAuto := .F.
        MostraErro()
    Endif
    
RestArea(aArea)

 
Return

02.2. Inclusión con más de un asiento:


#INCLUDE "PROTHEUS.CH"
 
//-------------------------------------------------------------------
/*/{Protheus.doc} MyCTBA102Inc   
  
 Inclusión de asiento automático CTBA102
  
@author Totvs
@since 23/06/2022
@version 2.0
  
/*/
//-------------------------------------------------------------------

User Function MyCTBA102Inc()


Local aArea  := GetArea()
Local aCab   := {}
Local aItens := {}
Local nLinha := 2
Local nX     := 0
 
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private CTF_LOCK    := 0
Private lSubLote    := .T.
 

    RpcSetEnv( 'T1', 'D MG 01 ',,,'CTB')

    aAdd(aCab, {'DDATALANC' ,dDataBase ,NIL} )
    aAdd(aCab, {'CLOTE' ,'333333' ,NIL} )
    aAdd(aCab, {'CSUBLOTE' ,'001' ,NIL} )
    aAdd(aCab, {'CPADRAO' ,'' ,NIL} )
    aAdd(aCab, {'NTOTINF' ,0 ,NIL} )
    aAdd(aCab, {'NTOTINFLOT' ,0 ,NIL} )

    For nX := 1 To nLinha
        aAdd(aItens,  {;
            {'CT2_FILIAL' , xFilial('CT2')                       , NIL},;
            {'CT2_LINHA'  , StrZero(nX,3)                        , NIL},;
            {'CT2_MOEDLC' ,'01'                                  , NIL},;
            {'CT2_DC'     ,'3'                                   , NIL},;
            {'CT2_DEBITO' ,'101010100'                           , NIL},;
            {'CT2_CREDIT' ,'201010100'                           , NIL},;
            {'CT2_VALOR'  , 3000                                 , NIL},;
            {'CT2_ORIGEM' ,'MSEXECAUT'                           , NIL},;
            {'CT2_HP'     ,''                                    , NIL},;
            {'CT2_CONVER' ,'11'                                  , NIL},;
            {'CT2_HIST'   ,'MSEXECCT LANCAMENTO '+cValtoChar(nX) , NIL} })
    Next nX
 
    MSExecAuto({|x, y,z| CTBA102(x,y,z)}, aCab ,aItens, 3)
    
    If lMsErroAuto
        lMsErroAuto := .F.
        MostraErro()
    EndIf


RestArea(aArea)
 
Return 


03. TABLAS UTILIZADAS