01. DATOS GENERALES
Producto | TOTVS Backoffice | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||
Segmento: | Servicios | ||||||||||||
Módulo: | SIGACOM - Compras | ||||||||||||
Función: |
| ||||||||||||
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.
- Realizar respaldo del repositorio (RPO).
- 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. Configurar los siguientes parámetros:
MV_MULNATP="T"// Multimodalidad en cuentas por pagar.
MV_MULNATS=".T."// Prorrateo de centro de costo.Contar con un proveedor registrado en la tabla de Proveedores (SA2).
Contar con al menos 2 Centros de Costos dados de alta (CTT).
- 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)
AAdd( aCab, { "F1_FILIAL" ,cSucursal ,Nil })
AAdd( aCab, { "F1_FORNECE" ,cProve ,Nil })
AAdd( aCab, { "F1_LOJA" ,cTienda ,Nil })
AAdd( aCab, { "F1_SERIE" ,cSerie ,Nil })
AAdd( aCab, { "F1_DOC" ,cNumDoc ,Nil })
AAdd( aCab, { "F1_CODMUN" ,"AL001" ,Nil })
AAdd( aCab, { "F1_EST" ,"AL" ,Nil })
AAdd( aCab, { "F1_PROVENT" ,"AL001" ,Nil })
AAdd( aCab, { "F1_ZONGEO" ,"AL" ,Nil })
AAdd( aCab, { "F1_EMISSAO" ,dDataBase ,Nil })
AAdd( aCab, { "F1_ESPECIE" ,"NF" ,Nil })
// AAdd( aCab, { "F1_REFMOED" ,1 ,Nil })
AAdd( aCab, { "F1_MOEDA" ,1 ,Nil })
AAdd( aCab, { "F1_TXMOEDA" ,1 ,Nil })
AAdd( aCab, { "F1_TIPODOC" ,"10" ,Nil })
AAdd( aCab, { "F1_COND" ,cCondPago ,Nil })
AAdd( aCab, { "F1_PREFIXO" ,cSerie ,Nil })
AAdd( aCab, { "F1_TIPO" ,"N" ,Nil })
AAdd( aCab, { "F1_FORMUL" ,"N" ,Nil })
aLinha := {}
AAdd( aLinha, { "D1_FILIAL" ,cSucursal ,Nil })
AAdd( aLinha, { "D1_ITEM" ,"01" ,Nil })
AAdd( aLinha, { "D1_COD" ,cCodPro ,Nil })
AAdd( aLinha, { "D1_QUANT" ,1.00 ,Nil })
AAdd( aLinha, { "D1_VUNIT" ,1200.00 ,Nil })
AAdd( aLinha, { "D1_TOTAL" ,1200.00 ,Nil })
AAdd( aLinha, { "D1_TES" ,cTes ,Nil })
AAdd( aLinha, { "D1_CF" ,cCfo ,Nil })
AAdd( aLinha, { "D1_DOC" ,cNumDoc ,Nil })
// AAdd( aLinha, { "D1_EST" ,"13" ,Nil })
AAdd( aItens, 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:={}
aAdd( aAuxEz ,{"EZ_CCUSTO" , '00001 ' , nil })//centro de custo da natureza
aAdd( aAuxEz ,{"EZ_ITEMCTA" , ' ' , nil })//item conta da natureza
aAdd( aAuxEz ,{"EZ_VALOR" , 400.00 , nil })//valor do rateio neste centro de custo
aAdd( aAuxEz ,{"EZ_CLVL" , " " , nil })
aAdd(aRatEz,aAuxEz)
//segundo centro de custo
aAuxEz:={}
aAdd( aAuxEz , {"EZ_CCUSTO" , '00002 ' , nil } )//centro de custo da natureza
aAdd( aAuxEz , {"EZ_ITEMCTA" , ' ' , nil } )//item conta da natureza
aAdd( aAuxEz , {"EZ_VALOR" , 800.00 , nil } )//valor do rateio neste centro de custo
aAdd( aAuxEz , {"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:={}
aAdd( aAuxEz ,{"EZ_CCUSTO" , '00001 ' , nil })//centro de custo da natureza
aAdd( aAuxEz ,{"EZ_ITEMCTA" , ' ' , nil })//item conta da natureza
aAdd( aAuxEz ,{"EZ_VALOR" , 100.00 , nil })//valor do rateio neste centro de custo
aAdd( aAuxEz ,{"EZ_CLVL" , " " , nil })
aAdd(aRatEz,aAuxEz)
//segundo centro de custo
aAuxEz:={}
aAdd( aAuxEz , {"EZ_CCUSTO" , '00002 ' , nil } )//centro de custo da natureza
aAdd( aAuxEz , {"EZ_ITEMCTA" , ' ' , nil } )//item conta da natureza
aAdd( aAuxEz , {"EZ_VALOR" , 200.00 , nil } )//valor do rateio neste centro de custo
aAdd( aAuxEz , {"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:={}
aAdd( aAuxEz ,{"EZ_CCUSTO" , '00001 ' , nil })//centro de custo da natureza
aAdd( aAuxEz ,{"EZ_ITEMCTA" , ' ' , nil })//item conta da natureza
aAdd( aAuxEz ,{"EZ_VALOR" , 150.00 , nil })//valor do rateio neste centro de custo
aAdd( aAuxEz ,{"EZ_CLVL" , " " , nil })
aAdd(aRatEz,aAuxEz)
//segundo centro de custo
aAuxEz:={}
aAdd( aAuxEz , {"EZ_CCUSTO" , '00002 ' , nil } )//centro de custo da natureza
aAdd( aAuxEz , {"EZ_ITEMCTA" , ' ' , nil } )//item conta da natureza
aAdd( aAuxEz , {"EZ_VALOR" , 750.00 , nil } )//valor do rateio neste centro de custo
aAdd( aAuxEz , {"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:={}
aAdd( aAuxEz ,{"EZ_CCUSTO" , '00001 ' , nil })//centro de custo da natureza
aAdd( aAuxEz ,{"EZ_ITEMCTA" , ' ' , nil })//item conta da natureza
aAdd( aAuxEz ,{"EZ_VALOR" , 175.00 , nil })//valor do rateio neste centro de custo
aAdd( aAuxEz ,{"EZ_CLVL" , " " , nil })
aAdd(aRatEz,aAuxEz)
//segundo centro de custo
aAuxEz:={}
aAdd( aAuxEz , {"EZ_CCUSTO" , '00002 ' , nil } )//centro de custo da natureza
aAdd( aAuxEz , {"EZ_ITEMCTA" , ' ' , nil } )//item conta da natureza
aAdd( aAuxEz , {"EZ_VALOR" , 275.00 , nil } )//valor do rateio neste centro de custo
aAdd( aAuxEz , {"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,a| Mata101n(x,y,z,,,,a) }, aCab, aItens, 3 ,aRatEvEz)
If lMsErroAuto
MsgStop("Erro de grabación.")
MostraErro()
Else
MsgAlert('Incluido con éxito.')
EndIf
Return
- 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.
- Ejecutar el registro de Factura de Entrada (MATA101N) por rutina automática hasta la inclusión exitosa de la Factura.
- Ingresar al módulo SIGACOM y acceder a Factura de Entrada desde el menú Updates | Transactions | Inflow Invoice (MATA101N)
- 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.
- 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.
- Ingresar al módulo SIGAFIN y acceder a Cuentas por Pagar desde el menú Updates | Accounts payable | Accounts payable (FINA050)
- Revisar que los valores de la cuenta por pagar correspondan con los valores de la Factura de Entrada.
04. INFORMACIÓN ADICIONAL
La solución aplica para el país EUA, en las versiones 12.1.17 o posteriores.¡IMPORTANTE!
05. ASUNTOS RELACIONADOS
- N/A
- documento_tecnico
- totvs_backoffice
- linea_protheus
- servicios
- mi
- sigacom
- compras
- locxnf
- locxnf2
- generacion_de_notas_fiscales
- finxnat
- funciones_genericas_modalidades
- rutina_automatica_mata101n
- parametro_aratevez
- multi_modalidad
- prorrateo_centros_de_costo
- 12_1_17
- 12_1_23
- 12_1_25
- 12_1_27
- eua
- dmina_9940
- ticket_9412960
- mercado_internacional
- backoffice
- protheus
- mata101n