Árvore de páginas

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Servicios

Módulo:SIGACOM - Compras
Función:
Rutina(s)Nombre TécnicoFecha
LOCXNFGeneración de Notas Fiscales.26/02/2021
LOCXNF2Documentos Fiscales.26/02/2021
FINXNATFunciones genéricas Modalidades.25/02/2021
País:EUA
Ticket:9412960
Requisito/Story/Issue (informe el requisito vinculado):DMINA-9940


02. SITUACIÓN/REQUISITO

La rutina automática de Factura de Entrada (MATA101N) no posee parámetro para enviar la multi modalidad y el prorrateo por centro de costo. Se solicita la inclusión de un parámetro (aRatEvEz) para recibir información de prorrateo en la rutina automática MATA101N.


03. SOLUCIÓN

En la Factura de Entrada, a través del execauto, habilitar el prorrateo por Centro de Costo, considerando para dicha funcionalidad si los parámetros MV_MULNATP y MV_MULNATS están activados.

Dentro del fuente LOCXNF, en la función mata101n() y Locxnf() se asigna el array xRatEvEz que contendrá la información de la multi modalidad y prorrateo de centro de costo.

En la función GravaNFGeral() se declaran variables privadas que almacenarán la información de los parámetros MV_MULNATP (multi modalidad) y MV_MULNATS (prorrateo de centro de costo), así como el array aRatEvEz (multi modalidad y prorrateo de centro de costo. ), se invoca la función FinSEVAuto(), que validará el contenido del array aRatEvEz.

Dentro del fuente LOCXNF2 se crea la función FinSEVAuto() para validar los datos contenidos en el array aRatEvEz y preparar la información que será procesada en la función GravaSEV(), para después realizar el guardado en las tablas SEV (Múltiples Modalidades por Título) y SEZ (Distrib. de Modalidades en CC).

Dentro del fuente FINXNAT, en la función MulNatCC(), se asignan las validaciones necesarias relacionadas al país EUA para que éste sea considerado en el proceso de rutina automática.


  1. Realizar respaldo del repositorio (RPO).
  2. Aplicar el parche correspondiente al issue DMINA-9940:
    Validar que la rutina corresponda a la fecha mencionada en el encabezado del presente Documento Técnico.
  3. Configurar los siguientes parámetros:
    MV_MULNATP
    ="T"// Multimodalidad en cuentas por pagar.
    MV_MULNATS=".T."// Prorrateo de centro de costo.

  4. Contar con un proveedor registrado en la tabla de Proveedores (SA2).

  5. Contar con al menos 2 Centros de Costos dados de alta (CTT).

  6. Estructura de aRatEvEz en la función de usuario que ejecuta la rutina de Factura de Entrada (MATA101N) por rutina automática:


Rutina automática MATA101N

Include "PROTHEUS.CH"


User Function MYMATA101N()

    Local aCab          := {}
    Local aLinha        := {}
    Local aItens        := {}
    Local cSucursal     := "01"
    Local cCondPago     := "001"                    
    Local cCfo          := "111"
    Local cProve        := "00001 "
    Local cTienda       := "01"
    Local cNumDoc       := "AUTO000017"
    Local cTes          := "001"
    Local cSerie        := "NF  "
    // Local cSerieU        := "A     "
    Local cCodPro       := "000001         "

    Local aAuxEz        := {}
    Local aAuxEv        := {}
    Local aRatEvEz      := {}
    Local aRatEz        := {}
    
    Private lMsErroAuto := .F.

    // cNumDoc := Obtnumdoc(cSerieU)

    AAddaCab, { "F1_FILIAL"   ,cSucursal  ,Nil })
    AAddaCab, { "F1_FORNECE"  ,cProve     ,Nil })
    AAddaCab, { "F1_LOJA"     ,cTienda    ,Nil })
    AAddaCab, { "F1_SERIE"    ,cSerie     ,Nil })
    AAddaCab, { "F1_DOC"      ,cNumDoc    ,Nil })
    AAddaCab, { "F1_CODMUN"   ,"AL001"    ,Nil })
    AAddaCab, { "F1_EST"      ,"AL"       ,Nil })
    AAddaCab, { "F1_PROVENT"  ,"AL001"    ,Nil })
    AAddaCab, { "F1_ZONGEO"   ,"AL"       ,Nil })
    AAddaCab, { "F1_EMISSAO"  ,dDataBase  ,Nil })
    AAddaCab, { "F1_ESPECIE"  ,"NF"       ,Nil })

    // AAdd( aCab, { "F1_REFMOED"   ,1          ,Nil })
    AAddaCab, { "F1_MOEDA"    ,1          ,Nil })
    AAddaCab, { "F1_TXMOEDA"  ,1          ,Nil })
    AAddaCab, { "F1_TIPODOC"  ,"10"       ,Nil })
    AAddaCab, { "F1_COND"     ,cCondPago  ,Nil })
    AAddaCab, { "F1_PREFIXO"  ,cSerie     ,Nil })

    AAddaCab, { "F1_TIPO"     ,"N"        ,Nil })
    AAddaCab, { "F1_FORMUL"   ,"N"        ,Nil })

    aLinha := {}
                
    AAddaLinha, { "D1_FILIAL"     ,cSucursal  ,Nil })
    AAddaLinha, { "D1_ITEM"       ,"01"       ,Nil })
    AAddaLinha, { "D1_COD"        ,cCodPro    ,Nil })
    AAddaLinha, { "D1_QUANT"      ,1.00       ,Nil })
    AAddaLinha, { "D1_VUNIT"      ,1200.00        ,Nil })
    AAddaLinha, { "D1_TOTAL"      ,1200.00        ,Nil })
    AAddaLinha, { "D1_TES"        ,cTes       ,Nil })
    AAddaLinha, { "D1_CF"         ,cCfo       ,Nil })
    AAddaLinha, { "D1_DOC"        ,cNumDoc    ,Nil })
    // AAdd( aLinha, { "D1_EST"     ,"13"       ,Nil })
    AAddaItens, aLinha)


Modalidad sin prorrateo por centro de costo

  //rateio multinaturezs = sim
    //Adicionando o vetor da natureza
    aAdd(aAuxEv,    {"EV_NATUREZ"  , "INSS      "  , nil }  )//natureza a ser rateada
    aAdd(aAuxEv,    {"EV_VALOR"  , 1200.00    , nil }   )//valor do rateio na natureza
    aAdd(aAuxEv,    {"EV_PERC"  , 100    , nil }    )//percentual do rateio na natureza
    aAdd(aAuxEv,    {"EV_RATEICC"  , "2"    , nil } )//indicando que há rateio por centro de custo
    aAdd(aAuxEv,    {"EV_PORCENT"  , 0    , nil }   )//indicando Porcent. Distribuido modalida
    aAdd(aAuxEv,    {"EV_IDDOC"  , "                                "    , nil }    )//indicando ID Movto Originador      

    aAdd(aRatEvEz,aAuxEv)//adicionando a natureza ao rateio de multiplas naturezas


    

Modalidad con prorrateo por centro de costo.

//rateio multinaturezs = sim
    //Adicionando o vetor da natureza
    aAdd(aAuxEv,    {"EV_NATUREZ"  , "INSS      "  , nil }  )//natureza a ser rateada
    aAdd(aAuxEv,    {"EV_VALOR"  , 1200.00    , nil }   )//valor do rateio na natureza
    aAdd(aAuxEv,    {"EV_PERC"  , 100    , nil }    )//percentual do rateio na natureza
    aAdd(aAuxEv,    {"EV_RATEICC"  , "1"    , nil } )//indicando que há rateio por centro de custo
    aAdd(aAuxEv,    {"EV_PORCENT"  , 0    , nil }   )//indicando Porcent. Distribuido modalida
    aAdd(aAuxEv,    {"EV_IDDOC"  , "                                "    , nil }    )//indicando ID Movto Originador      

   //Adicionando multiplos centros de custo
    //primeiro centro de custo
    aAuxEz:={}
    aAddaAuxEz ,{"EZ_CCUSTO"      , '00001    '        , nil })//centro de custo da natureza
    aAddaAuxEz ,{"EZ_ITEMCTA"     , '        '            , nil })//item conta da natureza
    aAddaAuxEz ,{"EZ_VALOR"       , 400.00                , nil })//valor do rateio neste centro de custo
    aAddaAuxEz ,{"EZ_CLVL"        , "        "        , nil })
    aAdd(aRatEz,aAuxEz)

    //segundo centro de custo
    aAuxEz:={}
    aAddaAuxEz ,  {"EZ_CCUSTO"      ,  '00002    '        , nil } )//centro de custo da natureza
    aAddaAuxEz ,  {"EZ_ITEMCTA"      , '        '        , nil }  )//item conta da natureza
    aAddaAuxEz ,  {"EZ_VALOR"      , 800.00          , nil }  )//valor do rateio neste centro de custo
    aAddaAuxEz ,  {"EZ_CLVL"        , "        "        , nil }   )
    aAdd(aRatEz,aAuxEz)

    aAdd(aAuxEv,   {"AUTRATEICC"      , aRatEz    , nil }  )//recebendo dentro do array da natureza os multiplos centros de custo

    aAdd(aRatEvEz,aAuxEv)//adicionando a natureza ao rateio de multiplas naturezas



Dos modalidades con prorrateo por centro de costo

//rateio multinaturezs = sim
    //Adicionando o vetor da natureza
    aAdd(aAuxEv,    {"EV_NATUREZ"  , "INSS      "  , nil }  )//natureza a ser rateada
    aAdd(aAuxEv,    {"EV_VALOR"  , 300.00    , nil }    )//valor do rateio na natureza
    aAdd(aAuxEv,    {"EV_PERC"  , 25    , nil } )//percentual do rateio na natureza
    aAdd(aAuxEv,    {"EV_RATEICC"  , "1"    , nil } )//indicando que há rateio por centro de custo
    aAdd(aAuxEv,    {"EV_PORCENT"  , 0    , nil }   )//indicando Porcent. Distribuido modalida
    aAdd(aAuxEv,    {"EV_IDDOC"  , "                                "    , nil }    )//indicando ID Movto Originador      


   //Adicionando multiplos centros de custo
    //primeiro centro de custo
    aAuxEz:={}
    aAddaAuxEz ,{"EZ_CCUSTO"      , '00001    '        , nil })//centro de custo da natureza
    aAddaAuxEz ,{"EZ_ITEMCTA"     , '        '            , nil })//item conta da natureza
    aAddaAuxEz ,{"EZ_VALOR"       , 100.00                , nil })//valor do rateio neste centro de custo
    aAddaAuxEz ,{"EZ_CLVL"        , "        "        , nil })
    aAdd(aRatEz,aAuxEz)

    //segundo centro de custo
    aAuxEz:={}
    aAddaAuxEz ,  {"EZ_CCUSTO"      ,  '00002    '        , nil } )//centro de custo da natureza
    aAddaAuxEz ,  {"EZ_ITEMCTA"      , '        '        , nil }  )//item conta da natureza
    aAddaAuxEz ,  {"EZ_VALOR"      , 200.00          , nil }  )//valor do rateio neste centro de custo
    aAddaAuxEz ,  {"EZ_CLVL"        , "        "        , nil }   )
    aAdd(aRatEz,aAuxEz)

    aAdd(aAuxEv,    {"AUTRATEICC"      , aRatEz    , nil }  )//recebendo dentro do array da natureza os multiplos centros de custo
    aAdd(aRatEvEz,aAuxEv)//adicionando a natureza ao rateio de multiplas naturezas

    aRatEz:= {}
    aAuxEv :={}
 //rateio multinaturezs = sim
    //Adicionando o vetor da natureza
    aAdd(aAuxEv,    {"EV_NATUREZ"  , "ISS       "  , nil }  )//natureza a ser rateada
    aAdd(aAuxEv,    {"EV_VALOR"  , 900.00    , nil }    )//valor do rateio na natureza
    aAdd(aAuxEv,    {"EV_PERC"  , 75    , nil } )//percentual do rateio na natureza
    aAdd(aAuxEv,    {"EV_RATEICC"  , "1"    , nil } )//indicando que há rateio por centro de custo
    aAdd(aAuxEv,    {"EV_PORCENT"  , 0    , nil }   )//indicando Porcent. Distribuido modalida
    aAdd(aAuxEv,    {"EV_IDDOC"  , "                                "    , nil }    )//indicando ID Movto Originador     

    //Adicionando multiplos centros de custo
    //primeiro centro de custo
    aAuxEz:={}
    aAddaAuxEz ,{"EZ_CCUSTO"      , '00001    '        , nil })//centro de custo da natureza
    aAddaAuxEz ,{"EZ_ITEMCTA"     , '        '            , nil })//item conta da natureza
    aAddaAuxEz ,{"EZ_VALOR"       , 150.00                , nil })//valor do rateio neste centro de custo
    aAddaAuxEz ,{"EZ_CLVL"        , "        "        , nil })

    aAdd(aRatEz,aAuxEz)

    //segundo centro de custo
    aAuxEz:={}
    aAddaAuxEz ,  {"EZ_CCUSTO"      ,  '00002    '        , nil } )//centro de custo da natureza
    aAddaAuxEz ,  {"EZ_ITEMCTA"      , '        '        , nil }  )//item conta da natureza
    aAddaAuxEz ,  {"EZ_VALOR"      , 750.00          , nil }  )//valor do rateio neste centro de custo
    aAddaAuxEz ,  {"EZ_CLVL"        , "        "        , nil }   )

    aAdd(aRatEz,aAuxEz)

    aAdd(aAuxEv,    {"AUTRATEICC"      , aRatEz    , nil }  )//recebendo dentro do array da natureza os multiplos centros de custo
    aAdd(aRatEvEz,aAuxEv)//adicionando a natureza ao rateio de multiplas naturezas



Dos modalidades , solo una con prorrateo por centro de costo.

//rateio multinaturezs = sim
    //Adicionando o vetor da natureza
    aAdd(aAuxEv,    {"EV_NATUREZ"  , "INSS      "  , nil }  )//natureza a ser rateada
    aAdd(aAuxEv,    {"EV_VALOR"  , 450.00    , nil }    )//valor do rateio na natureza
    aAdd(aAuxEv,    {"EV_PERC"  , 37.5    , nil }   )//percentual do rateio na natureza
    aAdd(aAuxEv,    {"EV_RATEICC"  , "1"    , nil } )//indicando que há rateio por centro de custo
    aAdd(aAuxEv,    {"EV_PORCENT"  , 0    , nil }   )//indicando Porcent. Distribuido modalida
    aAdd(aAuxEv,    {"EV_IDDOC"  , "                                "    , nil }    )//indicando ID Movto Originador      


   //Adicionando multiplos centros de custo
    //primeiro centro de custo
    aAuxEz:={}
    aAddaAuxEz ,{"EZ_CCUSTO"      , '00001    '        , nil })//centro de custo da natureza
    aAddaAuxEz ,{"EZ_ITEMCTA"     , '        '            , nil })//item conta da natureza
    aAddaAuxEz ,{"EZ_VALOR"       , 175.00                , nil })//valor do rateio neste centro de custo
    aAddaAuxEz ,{"EZ_CLVL"        , "        "        , nil })
    aAdd(aRatEz,aAuxEz)

    //segundo centro de custo
    aAuxEz:={}
    aAddaAuxEz ,  {"EZ_CCUSTO"      ,  '00002    '        , nil } )//centro de custo da natureza
    aAddaAuxEz ,  {"EZ_ITEMCTA"      , '        '        , nil }  )//item conta da natureza
    aAddaAuxEz ,  {"EZ_VALOR"      , 275.00          , nil }  )//valor do rateio neste centro de custo
    aAddaAuxEz ,  {"EZ_CLVL"        , "        "        , nil }   )
    aAdd(aRatEz,aAuxEz)

    aAdd(aAuxEv,    {"AUTRATEICC"      , aRatEz    , nil }  )//recebendo dentro do array da natureza os multiplos centros de custo
    aAdd(aRatEvEz,aAuxEv)//adicionando a natureza ao rateio de multiplas naturezas

    aAuxEv :={}
 //rateio multinaturezs = sim
    //Adicionando o vetor da natureza
    aAdd(aAuxEv,    {"EV_NATUREZ"  , "ISS       "  , nil }  )//natureza a ser rateada
    aAdd(aAuxEv,    {"EV_VALOR"  , 750.00    , nil }    )//valor do rateio na natureza
    aAdd(aAuxEv,    {"EV_PERC"  , 62.5    , nil }   )//percentual do rateio na natureza
    aAdd(aAuxEv,    {"EV_RATEICC"  , "2"    , nil } )//indicando que há rateio por centro de custo
    aAdd(aAuxEv,    {"EV_PORCENT"  , 0    , nil }   )//indicando Porcent. Distribuido modalida
    aAdd(aAuxEv,    {"EV_IDDOC"  , "                                "    , nil }    )//indicando ID Movto Originador     

    aAdd(aRatEvEz,aAuxEv)//adicionando a natureza ao rateio de multiplas naturezas



     MSExecAuto( { |x,y,z,aMata101n(x,y,z,,,,a) }, aCab, aItens, 3 ,aRatEvEz

    If lMsErroAuto
        MsgStop("Erro de grabación.")   
        MostraErro()
    Else    
        MsgAlert('Incluido con éxito.'
    EndIf

Return 



  1. Utilizar los casos sugeridos en las Pre -Condiciones para la inclusión de modalidades y prorrateo de centros de costo en la función de usuario que ejecutará la rutina de Factura de Entrada (MATA101N) por rutina automática.
  2. Ejecutar el registro de Factura de Entrada (MATA101N) por rutina automática hasta la inclusión exitosa de la Factura.
  3. Ingresar al módulo SIGACOM y acceder a Factura de Entrada desde el menú Updates | Transactions | Inflow Invoice (MATA101N)
    1. Revisar que los valores de la Factura de Entrada correspondan a los asignados desde la función de usuario que ejecuta la rutina automática.
    2. Revisar en las tablas SEV (Múltiples Modalidades por Título) y SEZ (Distrib. de Modalidades en CC), que los valores correspondan a los asignados por rutina automática desde la función de usuario.
  4. Ingresar al módulo SIGAFIN y acceder a Cuentas por Pagar desde  el menú Updates | Accounts payable | Accounts payable (FINA050)
    1. Revisar que los valores de la cuenta por pagar correspondan con los valores de la Factura de Entrada.


04. INFORMACIÓN ADICIONAL


¡IMPORTANTE!

La solución aplica para el país EUA, en las versiones 12.1.17 o posteriores.


05. ASUNTOS RELACIONADOS

  • N/A