Histórico da Página
01. DATOS GENERALES
Producto |
| ||||||
---|---|---|---|---|---|---|---|
Línea de producto: |
| ||||||
Segmento: |
| ||||||
Módulo: | SIGAFAT - Facturación | ||||||
Función: |
| ||||||
País: | México | ||||||
Ticket: | 16350719 | ||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-18777 |
02. SITUACIÓN/REQUISITO
Se solicita la activación de un Punto de Entrada que permita personalizar el detalle del XML de CFDI de Documentos Fiscales, y un Punto de Entrada que permita personalizar completamente la generación del XML de CFDI de Documentos Fiscales.
03. SOLUCIÓN
En la rutina Funciones Genéricas de Notas Fiscales (LOCXFUNA):
- Se activó el Punto de Entrada PEXMLDETA, el cual permite alterar la generación de los Conceptos, Impuestos y Retenciones por Concepto e Impuestos y Retenciones por Documento.
Para el Punto Entrada PEXMLDETA,se deben tener en cuenta las siguientes consideraciones:
Se debe retornar un arreglo con 2 posiciones:
La Primer posición debe contener la siguiente estructura:
Posición 1: Valor que corresponde al atributo ClaveProdServ del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 2: Valor que corresponde al atributo NoIdentificacion del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 3: Valor que corresponde al atributo Cantidad del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 4: Valor que corresponde al atributo ClaveUnidad del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 5: Valor que corresponde al atributo Unidad del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 6: Valor que corresponde al atributo Descripcion del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 7: Valor que corresponde al atributo ValorUnitario del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 8: Valor que corresponde al atributo Importe del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 9: Valor que corresponde al atributo Descuento del nodo cfdi:Conceptos\cfdi:Concepto.
Posición 12: Array con valores de Impuestos de Traslado por ítem, donde:
Posición Impuestos 1: Código de impuesto Portheus.
Posición Impuestos 2: Indica si el impuesto de un Impuesto o Traslado Local (Exclusivo para funcionalidad del Complemento de Impuestos Locales, se recomienda enviar vacío si no aplica)
Posición Impuestos 3: Base del Impuesto por ítem.
Posición Impuestos 4: Código de Impuesto SAT, de acuerdo al catálogo c_Impuesto definido por el SAT.
Posición Impuestos 5: Alícuota del Impuesto por ítem.
Posición Impuestos 6: Valor del Impuesto por ítem.
Posición Impuestos 7: Descripción del impuesto (Puede ser la descripción del impuesto de Protheus)
Posición Impuestos 8: T para Traslados y R para retenciones.
Posición Impuestos 9: Enviar 0.
Posición Impuestos 10: Enviar 0.
Posición Impuestos 11: Indica si es impuesto incluido (.T. es igual a Si y .F. igual a No)
Posición 11: Array con valores de Impuestos de Traslado por ítem, donde:
Posición Traslado 1: Base del Impuesto por ítem.
Posición Traslado 2: Código de Impuesto SAT, de acuerdo al catálogo c_Impuesto definido por el SAT.
Posición Traslado 3: Alícuota que aplica para el cálculo del impuesto (mostrado alícuota sobre cien, por ejemplo 0.16).
Posición Traslado 4: Valor del Impuesto por ítem.
Posición 13: Valor que corresponde al atributo NumeroPedimento del nodo cfdi:InformacionAduanera.
Posición 14: Valor que corresponde al atributo Numero del nodo cfdi:CuentaPredial.
Posición 15: Arreglo con datos para la generación del nodo cfdi:Parte, donde:
Posición Partes 1: Valor del atributo ClaveProdServ.
Posición Partes 2: Valor del atributo NoIdentificacion.
Posición Partes 3: Valor del atributo Cantidad.
Posición Partes 4: Valor del atributo Unidad.
Posición Partes 5: Valor del atributo Descripcion.
Posición Partes 6: Valor del atributo ValorUnitario.
Posición 16: .T. si el ítem es Exento de Impuestos.
Posición 17: .Número de ítem, por ejemplo "01", "02".
La Segunda posición debe contener la siguiente estructura:
Posición 1: Campo de Libro Fiscal del Impuesto (No aplica para funcionalidad de Punto de Entrada, se puede enviar con un string vacío)
Posición 2: Enviar con un string vacío.
Posición 3: Valor del Impuesto.
Posición 4: Código del Impuesto (Puede enviarse con el código del Impuesto variable de Protheus o un string vacío).
Posición 5: Código de Impuesto SAT, de acuerdo al catálogo c_Impuesto definido por el SAT.
Posición 6: Descripción del Impuesto (Puede enviarse con el código del Impuesto variable de Protheus o un string vacío).
Posición 7: T para Traslados y R para retenciones.
Posición 8: Alícuota que aplica para el cálculo del impuesto (mostrado alícuota sobre cien, por ejemplo 0.16).
Posición 9: Indica si el impuesto es incluido.
Posición 10: Base del Impuesto.
Totvs custom tabs box | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||
|
04. INFORMACIÓN ADICIONAL
Ejemplo del Punto de Entrada PEXMLDETA:
Bloco de código |
---|
#include 'protheus.ch' #INCLUDE "FWMVCDEF.CH" User Function PEXMLDETA() Local aDetFE := {} Local aPartes := {} Local aImpos := {} Local aImpNF := {} Local aRet := {} Local aImpTras := {} Local aIFact := {} //Ítem 01 aImpNF := {"IVA", "", 2000, "002", 16, 320, "IVA ESTADAR", "T",0,0,.F. } aAdd(aImpTras,{2000, "002", (16/100), 320}) aAdd(aDetFE, {"01010101","OXXO-3526518", 1,"CLT","UN","VENTE OXXO-3526518",2000,2000,0,aAdd(aImpos,{aImpNF}),aImpTras,aRet,"", "", aPartes,.F.,"01"}) //Ítem 02 aImpTras := {} aAdd(aImpTras,{2000, "002", (16/100), 320}) aImpNF := {"IVA", "", 2000, "002", 16, 320, "IVA ESTADAR", "T",0,0,.F. } aAdd(aDetFE, {"01010101","OXXO-3526519", 1,"CLT","UN","VENTE OXXO-3526519",2000,2000,0,aAdd(aImpos,{aImpNF}),aImpTras,aRet,"", "", aPartes,.F.,"02"}) aAdd(aIFact,{"1", "", 640, "IVA", "002", "IVA ESTADAR", "T", (16/100),.F.,4000}) Return {aDetFE,aIFact} |
Card documentos Informacao La presente solución aplica para versión 12.1.33 o superior, y es responsabilidad del usuario la personalización del XML del CFDI y el impacto en que pudiera tener el no realizar la correcta definición de la lógica en el Punto de Entrada. Titulo ¡IMPORTANTE!
05. ASUNTOS RELACIONADOS
- No aplica.
Templatedocumentos