Árvore de páginas

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGAFAT - Facturación
Función:
RutinaNombreFecha
FATEMEX.prwGeneración de XML para Documentos de Entrada13/02/2024
FATSMEX.prwGeneración de XML para Documentos de Salida15/02/2024
FATXFUMI.prwFunciones genéricas para Facturación - Mercado Internacional13/02/2024
País:México (MEX)
Ticket:No aplica.
Requisito/Story/Issue (informe el requisito vinculado):DMINA-22097


02. SITUACIÓN/REQUISITO

Para la funcionalidad de generación del XML de los Comprobantes Fiscales Digitales por Internet (CFDI), a través de las rutinas de Generación de XML para Documentos de Salida (FATSMEX.PRW) y Generación de XML para Documentos de Entrada (FATEMEX.PRW) para el país México, es decir, cuando el parámetro MV_FEXML se encuentra configurado con el valor S, se solicita realizar la implementación de personalizaciones por medio de puntos de entrada disponibles, que permitan las siguientes acciones:

  • En el nodo cfdi:Comprobante, permitir personalizar los atributos "Moneda, TipoCambio y LugarExpedición".

03. SOLUCIÓN

En la rutina Generación de XML para Documentos de Entrada (FATEMEX) y la rutina Generación de XML para Documentos de Salida (FATSMEX) , se realizan los siguientes ajustes:

  • En el Punto de Entrada PEXMLDOC se activaron las siguientes opciones para personalizar los siguientes atributos MO para Moneda,  TC para TipoCambio y LE para LugarExpedición.

En la rutina Funciones genéricas para Facturación - Mercado Internacional (FATXFUMI), se realizan los siguientes ajustes:

  • Se realizan los ajustes para que no se genere el nodo NumRegIdTrib, cuando no es Complemento de Comercio Exterior.



  1. Realizar un respaldo del repositorio del ambiente (archivo RPO).
  2. Aplicar el parche correspondiente al issue DMINA-22097.
  3. Validar que las rutinas incluidas en el parche coincidan con las mencionadas en la sección "Función" del encabezado del presente Documento Técnico, así como las fechas.
  4. Configurar el parámetro MV_FEXML, con el valor igual a S.
  5. Configurar el parámetro MV_CFDDIRS con la ruta donde se encuentran las llaves y certificados.
  6. Configurar el parámetro MV_CFDI_CP con el nombre y extensión del Archivo de la clave privada (.pem).
  7. Configurar los puntos de entrada correspondientes para personalizar los nodos del  XML: PEXMLDOC


Generación de Facturas

  1. Ingresar al módulo Facturación (SIGAFAT), ir al menú "Actualizaciones | Facturación | Facturaciones (MATA467N)
  2. Indicar los parámetros de la rutina, informando la pregunta ¿Normal/Benef./Anticipo? con la opción Normal.
  3. Incluir una Factura de Venta (NF):
    • Informar los datos del Encabezado de la Factura de Venta.
    • Informar los datos de los ítems de la Factura de Venta.
  4. Confirmar el grabado de la Factura de Venta.
  5. Confirmar la generación y timbrado exitoso del Comprobante Fiscal Digital para Internet (Ésta confirmación puede presentarse o no de acuerdo a la configuración del parámetro MV_CFDUSO).
  6. Validar que en el XML sean informados los atributos especificados en los Puntos de Entrada.


Generación de Notas de Crédito.

  1. Ingresar al módulo Facturación (SIGAFAT), ir al menú "Actualizaciones | Facturación | Generac. de Notas de Crédito y Débito (MATA465N)
  2. Incluir una Nota de Crédito de Cliente:
    • Informar los datos del Encabezado de la Nota de Crédito de Cliente (NCC).
    • Informar los datos de los ítems de la  Nota de Crédito de Cliente (NCC).
  3. Confirmar el grabado de la  Nota de Crédito de Cliente (NCC).
  4. Confirmar la generación y timbrado exitoso del Comprobante Fiscal Digital para Internet (Ésta confirmación puede presentarse o no de acuerdo a la configuración del parámetro MV_CFDUSO).
  5. Validar que en el XML sean informados los atributos especificados en el Punto de Entrada.


04. INFORMACIÓN ADICIONAL

Ejemplos de los Puntos de Entrada:

PEXMLDOC
#include 'protheus.ch'
#INCLUDE "FWMVCDEF.CH"
#include "FILEIO.CH"
 
User Function PEXMLDOC()
    Local cOpc    := PARAMIXB[1] //Opción para indicar el atributo o el nodo a personalizar
    Local lCadO   := PARAMIXB[2] //Indica si es Cadena Original .T. = Si y .F. = No
    Local cXMLRet := ""
    Local cSepa   := "|"
    Local cSubT   := "0.01"
    Local cTot    := "0.01"
    Local cCRLF   := (chr(13)+chr(10))
 
    //Datos Impuestos Totales
    Local cTotIT := "0.00"
    Local cBasIT := "0.01"
    Local cImpT  := "002"
    Local cTpFac := "Tasa"
    Local cTasCuo := "0.000000"
    Local cValor  := "0.00"
 
    If Alltrim(cEspecie) $ "NF|NCC"
        If cOpc == "ST" //SubTotal
            cXMLRet := cSubT
        ElseIf cOpc == "T" //Total
            cXMLRet := cTot
        ElseIf cOpc == "D" //Descuento
            cXMLRet := "20.00"
        ElseIf cOpc == "TC" //TipoCambio
            cXMLRet := ""
        ElseIf cOpc == "LE" // LugarExpedición
            cXMLRet := ""
        ElseIf cOpc == "MO" // Moneda
            cXMLRet := ""
        EndIf      
 
        If lCadO
            If cOpc == "CO"
                cXMLRet := U_GROUPCAD(SF2->F2_DOC)
            elseIf cOpc == "TI" //Total de Impuestos
                cXMLRet := cBasIT + cSepa + cImpT + cSepa + cTpFac + cSepa + cTasCuo + cSepa + cValor + cSepa + cTotIT + cSepa
            EndIf
        Else
            If cOpc == "CO"
                cXMLRet := space(3) + '<cfdi:Conceptos>' + cCRLF
                cXMLRet += U_GROUPPED(SF2->F2_DOC)  
                cXMLRet += space(3) + '</cfdi:Conceptos>' + cCRLF
            elseIf cOpc == "TI" ////Total de Impuestos
                cXMLRet := cCRLF + Space(5) + '<cfdi:Impuestos TotalImpuestosTrasladados="' + cTotIT + '" >' + cCRLF
                cXMLRet += Space(10) + '<cfdi:Traslados>' + cCRLF
                cXMLRet += Space(15) + '<cfdi:Traslado Base="' + cBasIT + '" Impuesto="' + cImpT + '" TipoFactor="' + cTpFac + '" TasaOCuota="' + cTasCuo + '" Importe="' + cValor + '"/>' + cCRLF
                cXMLRet += Space(10) + '</cfdi:Traslados>' + cCRLF
                cXMLRet += Space(5) + '</cfdi:Impuestos>' + cCRLF
            EndIf
        EndIf
    EndIf
Return cXMLRet


¡IMPORTANTE!

La presente solución aplica para versión 12.1.2210 o superior, y es necesario tener activa la funcionalidad de CFDI versión 4.0 o superior.

05. ASUNTOS RELACIONADOS