ÍNDICE
En la página del SAT, en el apartado de la documentación técnica del CFDI 4.0, se establece que la vigencia de esta nueva versión inicia a partir del 1 de enero de 20
22, existiendo un periodo de convivencia entre la versión 3.3 y la versión 4.0 el cual comprende del 1 de enero al 30 de Junio de 2022.
Por tanto, será a partir del 1 de Julio de 2022 que se deje de utilizar la versión 3.3 y se generalice la obligación de emitir la versión 4.0.
Para cumplir con dicha reforma fiscal, se modifica el esquema del CFDI con los siguientes cambios:
Para mayor información de la Reforma Fiscal 2022, se recomienda revisar el siguiente enlace:
Actualización Factura Electrónica - Reforma Fiscal 2022
Para tener activa la Versión 4.0 del CFDI es necesario tener actualizadas con una fecha mayor o igual las siguientes rutinas:
Rutinas involucradas | Nombre Técnico | Fecha |
---|---|---|
LOCXNF | Notas Fiscales. | 12/03/2022 |
LOCXNF2 | Funciones Genéricas para Documentos Fiscales. | 07/03/2022 |
LOCXMEX | Funciones Genéricas para Documentos Fiscales para México. | 11/03/2022 |
LOCXFUNA | Funciones generales de documentos fiscales. | 07/03/2022 |
FISA800 | Timbrado masivo de CFDI. | 17/03/2022 |
FISA812 | Mantenimiento de Catálogos del SAT. | 08/03/2022 |
MATA468N | Generación automática de facturas. | 16/03/2022 |
FISA815 | CFDI con Complemento para Recepción de Pagos | 03/03/2022 |
SIGACUS | Funciones Genéricas. | 04/03/2022 |
MATR475 | Generación de PDF para Documentos Fiscales de Entrada/Salida. | 16/02/2022 |
MATA521 | Eliminación de documentos de Salida | 09/03/2022 |
Archivo relacionado | Nombre Técnico | Fecha |
---|---|---|
FATSMEX.INI | Script de generación de los archivos XML para Notas Fiscales de Salida. | 07/03/2022 |
FATEMEX.INI | Script de generación de los archivos XML para Notas Fiscales de Entrada. | 16/03/2022 |
Algunos de los procesos de versión 3.3 siguen funcionando de la misma manera y no fueron afectados por los ajustes para versión 4.0, para más información ver Documento Técnico de Factura Electrónica de México CFDI Versión 3.3 |
Facturas de Venta (Normal)
Los parámetros para Facturación Electrónica utilizados desde la versión 3.3, no sufrieron cambios. |
Para evitar errores de timbrado, es importante configurar el parámetro MV_IVATRAS con el código de los impuestos de traslado a ser desplozados en el XML, por ejemplo "IVA|IV0|IEPS". En caso de que el documento tenga retenciones se configura el parámetro MV_RETIVAM con el código de las retenciones de iva, por ejemplo "RIV". |
|
En los script de "Generación de XML de documentos de salida."(FATSMEX.INI) y "Generación de XML de documentos de entrada."(FATEMEX).INI) se realizan los ajustes para agregar los nuevos atributos Exportacion,DomicilioFiscaIReceptor y RegimenFiscalReceptor, además se actualizan las URL utilizadas para la versión CFDi 4.0.
Se recomienda editar el script actual de generación de CFDI (Archivo XML), actualizando las secciones de acuerdo al siguiente modelo, en donde las líneas resaltadas con color azul se agregaron o fueron modificadas para integrar la Versión 4.0 CFDi; las líneas resaltadas con color rojo fueron removidas:
//FATSMEX.INI V4.0 --- Modelo 2022 [XXX POSICIONAMENTOS] [XXX INICIALIZACION] (PREREG) FsQuery(_aTotal[097],1,"D2_DOC='" + SF2->F2_DOC + "' AND D2_SERIE='" + SF2->F2_SERIE + "' AND D2_CLIENTE='" + SF2->F2_CLIENTE + "' AND D2_LOJA='" + SF2->F2_LOJA + "'","SD2->D2_DOC=SF2->F2_DOC .AND. SD2->D2_SERIE=SF2->F2_SERIE .AND. SD2->D2_CLIENTE=SF2->F2_CLIENTE .AND. SD2->D2_LOJA=SF2->F2_LOJA","D2_ITEM") .And. .T. (PRE) fImptosD(SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),"SD2", SF2->F2_GLOBAL == "1",@(_aTotal[036]),_aTotal[104],@_aTotal[037], @_aTotal[038] ) [SD2 CADENAORIGINAL_SELLO] //Cadena Original | Complemento de Comercio Exterior (Mercancias) ///////////DATOS DE LA FACTURA///////////////// //////////////////////CFDI Relacionados////////////////////////// ///////////DATOS DEL EMISOR/////////////////////// //////////////////////DATOS DEL RECEPTOR////////////////////////// (PRE) (cCadOrig += fXMLFUN("CO",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) //Carta Porte (POS) IIf(lCCCE, cCadOrig += "1.1" + _aTotal[098], "") //Emisor //Receptor Domicilio (POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "") (POS) cCadOrig += _aTotal[098] //SELLO (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE), .T., .F.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (POS) cNodoCCE := IIf(lCCCE, ' <cce11:ComercioExterior' , "") (POS) cNodoCCE += IIf(lCCCE, ' xmlns:cfdi="http://www.sat.gob.mx/cfd/3"' , "") [XXX CFDIREL] [XXX EMISOR] [XXX RECEPTOR_CLIENTE] (PREREG) AllTrim(SF2->F2_ESPECIE) <> "NDI" (POS) cNodoCCE += IIf(lCCCE, ' <cce11:Emisor' , "") (POS) cNodoCCE += IIf(lCCCE, ' <cce11:Receptor' , "") (POS) cNodoCCE += IIf(lCCCE, ' <cce11:Domicilio' , "") (POS) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) [SD2 CONCEPTO] (PRE) DbGoTop() (PREREG) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancia' , ""),.T.) (POS) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) (POS) (_aTotal[034] := fXMLFUN("CO",.F., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) (PREREG) (_aTotal[001] := _aTotal[034] ,.T.) [XXX IMPUESTOS] //IMPUESTOS LOCALES// [XXX COMPLEMENT] [XXX COMERCIOEX] [XXX CARTAPORTE] [XXX IMPUESTOLOC] [XXX LEYENDASFIS]
//[XXX CAD_ORIG] [XXX FACTURA] |
Se recomienda editar el script actual de generación de CFDI (Archivo XML), actualizando las secciones de acuerdo al siguiente modelo, en donde las líneas resaltadas con color azul se agregaron o fueron modificadas para integrar la Versión 4.0 CFDi en las Notas de Crédito; las líneas resaltadas con color rojo fueron removidas:
//FATEMEX.INI V4.0 --- Modelo 2022 [XXX INICIALIZACION] (PREREG) FsQuery(_aTotal[097],1,"D1_DOC='" + SF1->F1_DOC + "' AND D1_SERIE='" + SF1->F1_SERIE + "' AND D1_FORNECE='" + SF1->F1_FORNECE + "' AND D1_LOJA='" + SF1->F1_LOJA + "'","SD1->D1_DOC=SF1->F1_DOC .AND. SD1->D1_SERIE=SF1->F1_SERIE .AND. SD1->D1_FORNECE=SF1->F1_FORNECE .AND. SD1->D1_LOJA=SF1->F1_LOJA","D1_ITEM") .And. .T. (PRE) fImptosD(SF1->F1_DOC,SF1->F1_SERIE,SF1->F1_FORNECE,SF1->F1_LOJA, .F. , "SD1", .F., @(_aTotal[036])) [SD1 CADENAORIGINAL_SELLO] //Cadena Original | Complemento de Comercio Exterior //Cadena Original | Complemento de Comercio Exterior ///////////DATOS DE LA FACTURA///////////////// //////////////////////CFDI Relacionados////////////////////////// ///////////DATOS DEL EMISOR/////////////////////// //////////////////////DATOS DEL RECEPTOR////////////////////////// (PRE) (cCadOrig += fXMLFUN("CO",.T., .F. ,.F.)) //Cadena Original | Complemento de Comercio Exterior //Emisor //Receptor Domicilio (POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "") (POS) cCadOrig += _aTotal[098] //SELLO [XXX CABECERA] [XXX FACTURA] (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF1->F1_TIPOPE), .T., .F.) (PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.) (POS) cNodoCCE := IIf(lCCCE, ' <cce11:ComercioExterior' , "") [XXX CFDIREL] [XXX EMISOR] [XXX RECEPTOR_CLIENTE] (PREREG) AllTrim(SF1->F1_ESPECIE) == "NCC"
//Receptor //Domicilio Receptor (POS) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) [SD1 CONCEPTO] (PRE) DbGoTop() (POS) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) (POS) (_aTotal[034] := fXMLFUN("CO",.F., .F. ,.F.)) [XXX IMPUESTOS] //IMPUESTOS LOCALES// [XXX COMPLEMENT] [XXX COMERCIOEX] [XXX IMPUESTOLOC] [XXX COMPLEMENT] //[XXX CAD_ORIG] [XXX FACTURA] |
Por medio de esta configuración es posible dejar de usar los archivos .INI.
Para la implementación de la generación de XML por rutina, es importante considerar los siguientes puntos:
Con esto se deja de usar los archivo .INI de la sección anterior y usara las nuevas rutinas FATSMEX.PRW y FATEMEX.PRW, para agregar personalizaciones deberá hacer uso del os nuevos puntos de entrada que se mencionan en los puntos 5.12 a 5.14 del indice general de este documento.
La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, por lo cual, se recomienda seguir utilizando la funcionalidad del uso del archivo FATSMEX.INI, para lo cual el parámetro MV_FEXML no debe existir o estar vacío. |
En la ruta configurada en el parámetro MV_CFDDIRS debe existir el archivo que se configuró en el parámetro MV_CFDI_CP, ya que con este archivo es generado el atributo Certificado en el XML del CFDI. |
Los ajustes al Diccionario de Datos:
Parámetros en el archivo SX6 – Parámetros:
Nombre de la Variable | MV_CFDI40 |
Tipo | Lógico |
Descripción | Uso de CFDI versión 4.0 |
Valor Estándar | .T. |
Campo | Valor |
---|---|
Nombre de Var. | MV_FEXML |
Tipo | 1 - Caracteres |
Cont. Esp | |
Descripción | Permite activar la funcionalidad para generar XML a través de rutina, evitando el uso de archivos .INI. S - Realizara la creación de archivos XML y no hará uso de los actuales archivo INI |
En la Tabla AI0 -Complemento del Cliente:
Se agregó el siguiente campo:
Campo | AI0_REGFIS |
Tipo | C - Carácter |
Tamaño | 3 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Rég. Fiscal |
Desc. Español | Régimen Fiscal |
Validación | Vazio() .Or. ValidF3I("S010",M->AI0_REGFIS,1,3) |
F3 | MEX010 |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Atributo requerido para incorporar la clave del régimen fiscal del contribuyente receptor al que aplicará el efecto fiscal de este comprobante. |
En la Tabla SF1 -Encabezado de Fact. de Entrada:
Se actualizó el help del siguiente campo:
Campo | F1_UUIDREL |
Tit. Español | UUID Relacs |
Help | Folio fiscal de un CFDI relacionado con el presente comprobante. Separar cada folio fiscal con un salto de línea. |
Tabla SF2 -Encabezado de Fact. de Salida:
Se actualizó el help del siguiente campo:
Campo | F2_UUIDREL |
Tit. Español | UUID Relacs |
Help | Folio fiscal de un CFDI relacionado con el presente comprobante. Separar cada folio fiscal con un salto de línea. |
Actualización Consulta Estándar en el archivo SXB – Consulta Estándar:
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
MEX010 | 1 | 01 | RE | Régimen fiscal | F3I |
MEX010 | 2 | 01 | 01 | Régimen fiscal | F812SXB("S010","RegiFiscal") |
MEX010 | 5 | 01 | VAR_IXB |
Producto | TOTVS Backoffice | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||||||||||||||||||||
Segmento: | Backoffice | |||||||||||||||||||||||||||||||||
Módulo: | SIGFAT - Facturación. | |||||||||||||||||||||||||||||||||
Función: |
| |||||||||||||||||||||||||||||||||
País: | México. | |||||||||||||||||||||||||||||||||
Paquete: | 010208 | |||||||||||||||||||||||||||||||||
Ticket: | 13529247 | |||||||||||||||||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-15012 |
Conforme a la actualización realizada al Servicio de Cancelación de CFDI ante el SAT (reforma fiscal 2022), para solicitar la Cancelación de una Factura de Venta (NF), Nota de Débito al Cliente (NDC) o Nota de Crédito al Cliente (NCC) se debe informar el Motivo de Cancelación, uno de estos motivos es el 01 - Comprobante emitido con errores con relación, el cual aplica para cuando el Documento cuyo Comprobante Fiscal Digital por Internet (CFDI) contiene un error en la Clave del Producto, Valor Unitario, Descuento o cualquier otro dato, por lo que se debe reexpedir. En este caso, primero se sustituye el documento y cuando se solicita la cancelación, se incorpora el UUID del Documento que sustituye al cancelado.
Lo anterior implica que se debe generar un nuevo Documento cuando aún no se cancela el documento que será reemplazado, sin embargo, con el funcionamiento actual del sistema existen las siguientes limitantes que impiden realizar este proceso:
Si se requiere Cancelar una Factura de Venta (NF) para la cual se utilizó un Tipo de Entrada/Salida (TES) que afecta a stock, es decir, el campo Act. Stock (F4_ESTOQUE) con valor S - Si, no se puede generar la nueva Factura de Venta (NF) porque el stock sigue ocupado por la Factura de Venta (NF) que se pretende cancelar.
SOLUCIÓN
Se realizaron ajustes a las siguientes rutinas:
Cancelación de CFDI (FISA817):
En la función que Genera los archivos timbradocfdi.ini y timbrado.bat para consumo del WS de solicitud cancelación o consulta de status (ProcesoWS), se agrega un nuevo parámetro que indica si se ejecuta la cancelación automática. Se realizan ajustes para que cuando el usuario seleccione el motivo de cancelación 01 - Compr. Emitido c/errores c/relac. para un documento, este se anule dentro del sistema Protheus y no mande la solicitud de cancelación al SAT.
Se agrega una nueva función, F817CanMot(), que permite detonar la solicitud de cancelación para los documentos pendientes para la cancelación.
Dentro de la definición del menú de la rutina (MenuDef) se agrega una nueva opción llamada Solic. Canc. Pendientes, la cual ejecuta a la función F817CanMot().
Se agrega la función F817ValDoc() que valida si el documento ya fue informado como documento a sustituir para la cancelación.
Funciones generales de documentos fiscales (LOCXFUNA):
Se realizaron ajustes en la función que genera el nodo cfdi:CfdiRelacionados, fGetFolRel(), para que al leer el campo de UUID Relacs (F1_UUIDREL/F2_UUIDREL) cuando son varios UUID, se tome como separador el salto de línea y si se informó el documento a sustituir, es decir, se informaron los campos Serie Sust. (F1_SERMAN/F2_SERMAN) y No. Doc Sust (F1_DOCMAN/F2_DOCMAN), se genere un nodo adicional de cfdi:CfdiRelacionados, donde el atributo TipoRelacion sea 04, de Sustitución de los CFDI Previos, tomando el UUID del campo UUID Doc. (F3_CNATREC) de la tabla SF3 - Libros Fiscales.
Notas Fiscales (LOCXNF):
Se modificó la función de exclusión de Notas Fiscales, LocxDelNF(), para realizar llamado a la función que realiza el marcado del registro del documento (NF,NDC,NCC) cuando se Anulan los documentos, LxActSF3(), actualizando los campos Motivo Canc. (F3_MOTIVO), Status Cance (F3_STATUS), UUID Doc. (F3_CNATREC) y Nom. XML Anu (F3_CODNFE).
Se modificó la función que relaciona documentos desde la acción Doc Orig, LxDocOri(), para llenar el campo UUID Relacs (F1_UUID), utilizando el separador de salto de línea para cuando existe más de un UUID Relacionado (para que la funcionalidad para versión de CDFI 4.0 aplique como lo hace la versión de CFDI 3.3 y el ajuste aplica para la versión Factura de la acción Doc Orig)
Funciones Genéricas para Documentos Fiscales (LOCXNF2):
Se eliminan las funciones que validaban los datos del campo UUID Relacs, ValUUIDRel() y LxVldF3I(), ya que no se utilizarán porque se deja funcionalidad de llenado del campo F1_UUIDRE/F2_UUIDREL para versión CFDI 4.0 como lo hace para la versión CFDI 3.3.
Se modificó la función que valida el Tipo de Relación CFDI y Uso CFDI, ValRetSat(), para que en Factura de Venta (NF), Nota de Débito al Cliente (NDC) y Nota de Crédito al Cliente (NCC) no se permita informar el valor 04 en el campo Relacion CFD (F1_RELSAT/F2_RELSAT).
Funciones Genéricas para Documentos Fiscales para México (LOCXMEX):
En la función que agrega campos en el encabezado de Notas Fiscales para el país México, LxCposMex(), se activaron los campos Serie Sust. (F2_SERMAN) y No. Doc Sust (F2_DOCMAN) para Facturas de Venta (NF) y Nota de Débito al Cliente (NDC), se activaron los campos Serie Sust. (F1_SERMAN) y No. Doc Sust (F1_DOCMAN) para Nota de Crédito al Cliente (NCC), adicional se dejó activado el campo Relacion CFD (F2_UUIDREL) para Facturas de Venta (NF) y Nota de Débito al Cliente (NDC) para versión de CFDI 4.0.
Se creó la función que realiza el marcado del registro del documento (NF,NDC,NCC) cuando se Anulan los documentos (LxActSF3) pero no se realiza la solicitud de Cancelación al SAT, actualizando los campos Motivo Canc. (F3_MOTIVO), Status Cance (F3_STATUS), UUID Doc. (F3_CNATREC) y Nom. XML Anu (F3_CODNFE).
Se creó la función LxVDocSuc() para realizar las siguientes validaciones al informar los campos Serie Sust. (F1_SERMAN/F2_SERMAN) y No. Doc Sust (F1_DOCMAN/F2_DOCMAN):
Timbrado CFDI (FISA800):
Se creó la función F800SolCan() para realizar la solicitud de Cancelación ante el SAT de los documentos que solo fueron anulados en Protheus (Campos F3_STATUS igual a 'S') pero no se realizó la solicitud de cancelación en el SAT con Motivo de Cancelación 01, informando al final del proceso el folio del nuevo documento que fue timbrado y el folio del documento que fue cancelado ante el SAT.
Funciones Genéricas para Documentos Fiscales (SIGACUS):
Se realizaron ajustes en la función F4NfOri() para que en el caso de la versión de CFDI 4.0 no se solicite llenar el campo Relacion CFD (F1_RELSAT) para cuando se ejecuta la acción Doc Orig al incluir una Nota de Crédito al Cliente (NCC), para la opción ítem, y al llenar el campo de UUID Relacs (F1_UUIDREL) no se llene con el UUID de la factura que se relaciona sin anteponer el Tipo de Relación.
Mantenimiento de Catálogos del SAT (FISA812):
En la función ValidF3I() que valida códigos de los catálogos del SAT, se considera el campo Relacion CFD (F1_RELSAT) de documentos de entrada, en validación actual para documentos de salida (F2_RELSAT) en donde se permite dejar vacío el campo.
Generación automática de facturas de venta (MATA468N):
Se modificaron varias funciones y se agregaron otras para el manejo de campos que ayudan al control de las cancelaciones y relación entre los documentos, cancelado y el que sustituye.
a468nFatura() - Generación de facturas: Agrega arreglo de facturas a generar (aFacs) como parámetro en la ejecución de las funciones a468nNotas() y a468nGera().
a468nGera() - Generación de la nota fiscal: Recibe por parámetro el arreglo de facturas a generar (aFacs) y lo envía a las funciones a468nGravF2() y a468nNotas().
a468nGravF2() - Graba registros en la tabla de documentos fiscales de salida SF2: Recibe por parámetro el arreglo de facturas a generar (aFacs) del cual toma los valores para grabar los campos Serie Sust. (F2_SERMAN) y No. Doc Sust (F2_DOCMAN).
a468nNotas() - Visualiza la lista de notas fiscales que serán generadas: Recibe por parámetro el arreglo de facturas a generar (aFacs).
Determina coordenadas y nuevos componentes de la ventana de facturas a generar, se agregan las columnas Serie Sust. (F2_SERMAN), No. Doc Sust (F2_DOCMAN) y UUID Relacs (F2_UUIDREL).
A468DblClic() - Permite editar algunas columnas de la ventana de facturas a generar: Si detecta doble clic en las columnas de Serie o Documento que Sustituye, ejecuta la función A468ChgRel().
A468ChgRel() - Edición de los campos Serie y Factura que sustituye: Visualiza ventana para editar la Serie y Factura que sustituye el nuevo documento.
A468ValRel() - Valida Serie/Folio del documento que se sustituye: Valida que el documento seleccionado esté cancelado en Protheus, pendiente de transmitir al SAT y que el folio fiscal correspondiente (UUID) no esté usado por otro documento.
PROCESO DE IMPLEMENTACIÓN
Cancelación ante SAT de Factura de Venta (NF) con Motivo de Cancelación 01 - Comprobante emitido con errores con relación:
Cancelación ante SAT de Nota de Débito al Cliente (NDC) con Motivo de Cancelación 01 - Comprobante emitido con errores con relación:
Cancelación ante SAT de Nota de Crédito al Cliente (NCC) con Motivo de Cancelación 01 - Comprobante emitido con errores con relación:
Cancelación ante el SAT de Factura de Venta (NF) generada desde Pedido de Venta, con Motivo de Cancelación 01 - Comprobante emitido con errores con relación:
DICCIONARIO DE DATOS:
Preguntas en el archivo SX1 - Preguntas
Grupo: F817CAN
Orden | Título | Tipo | Tamaño | Decimal | Objeto | Consulta estándar |
---|---|---|---|---|---|---|
01 | ¿Serie? | C | 3 | 0 | Get | DOCSUS |
02 | ¿Número de documento? | C | 20 | 0 | Get |
Consulta Estándar en el archivo SXB – Consulta Estándar:
Consulta: DOCSUS
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
DOCSUS | 1 | 01 | DB | Documento Sustituye | SF3 |
DOCSUS | 2 | 01 | 05 | Serie Fact. + Factur | |
DOCSUS | 4 | 01 | 01 | Serie | F3_SERIE |
DOCSUS | 4 | 01 | 02 | Número Documento | F3_NFISCAL |
DOCSUS | 4 | 01 | 03 | Cliente | F3_CLIEFOR |
DOCSUS | 4 | 01 | 04 | Tienda | F3_LOJA |
DOCSUS | 4 | 01 | 05 | UUID | F3_CNATREC |
DOCSUS | 5 | 01 | SF3->F3_SERIE | ||
DOCSUS | 5 | 02 | SF3->F3_NFISCAL | ||
DOCSUS | 6 | 01 | F3_TIPOMOV == "V" .And. F3_STATUS == "S" .And. F3_ESPECIE == cEspecie |
Configurar los siguientes campos en la tabla SF1 - Encabezado de Fact. de Entrada:
Atributo | Contenido |
---|---|
Campo | F1_SERMAN |
Tipo | C - Caracter |
Tamaño | 3 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Serie Sust. |
Desc. Español | Serie del Doc. Sustituye |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica la Serie del Documento que sustituye a un documento que será cancelado ante el SAT. Al informarse este campo será generado en automático un nodo cfdi:CfdiRelacionados donde el atributo TipoRelacion sea 04 (Sustitución de los CFDI Previos). |
Atributo | Contenido |
---|---|
Campo | F1_DOCMAN |
Tipo | C - Caracter |
Tamaño | 20 |
Decimal | 0 |
Formato | @! |
Condición | LxVDocSus(M->F1_SERMAN, M->F1_DOCMAN) |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | No. Doc Sust |
Desc. Español | No. de Doc. Sustituye |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica la Número del Documento que sustituye a un documento que será cancelado ante el SAT. Al informarse este campo será generado en automático un nodo cfdi:CfdiRelacionados donde el atributo TipoRelacion sea 04 (Sustitución de los CFDI Previos). |
Campo | Contenido |
---|---|
Campo | F1_TIPNOTA |
Tipo | C- Carácter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Mot.Cancela |
Desc. Español | Motivo de cancelación |
Lista Español | 01=Compr. Emitido c/errores c/relac.;02=Compr. emitido c/errores s/relac.;03=No se llevó a cabo la oper.;04=Oper. nominativa. |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica el motivo de Cancelación que aplica para el CFDI: |
Configurar los siguientes campos en la tabla SF2 - Encabezado de Fact. de Salida:
Atributo | Contenido |
---|---|
Campo | F2_SERMAN |
Tipo | C - Caracter |
Tamaño | 3 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Serie Sust. |
Desc. Español | Serie del Doc. Sustituye |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica la Serie del Documento que sustituye a un documento que será cancelado ante el SAT. Al informarse este campo será generado en automático un nodo cfdi:CfdiRelacionados donde el atributo TipoRelacion sea 04 (Sustitución de los CFDI Previos). |
Atributo | Contenido |
---|---|
Campo | F2_DOCMAN |
Tipo | C - Caracter |
Tamaño | 20 |
Decimal | 0 |
Formato | @! |
Condición | LxVDocSus(M->F2_SERMAN, M->F2_DOCMAN) |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | No. Doc Sust |
Desc. Español | No. de Doc. Sustituye |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica la Número del Documento que sustituye a un documento que será cancelado ante el SAT. Al informarse este campo será generado en automático un nodo cfdi:CfdiRelacionados donde el atributo TipoRelacion sea 04. |
Campo | Contenido |
---|---|
Campo | F2_TIPNOTA |
Tipo | C- Carácter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Mot.Cancela |
Desc. Español | Motivo de cancelación |
Lista Español | 01=Compr. Emitido c/errores c/relac.;02=Compr. emitido c/errores s/relac.;03=No se llevó a cabo la oper.;04=Oper. nominativa. |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica el motivo de Cancelación que aplica para el CFDI: |
Configurar los siguientes campos en la tabla SF3 - Libros Fiscales:
Atributo | Contenido |
Campo | F3_STATUS |
Tipo | C - Caracter |
Tamaño | 1 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Status Cance |
Desc. Español | Status de la Cancelación |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica si el documento fue a Anulado en Protheus y está pendiente de solicitud de Cancelación ante el SAT. ('S' es Si y vacío es No). |
Atributo | Contenido |
Campo | F3_CODNFE |
Tipo | C - Caracter |
Tamaño | 35 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Nom. XML Anu |
Desc. Español | Nombre de XML Anulado |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica el nombre del archivo XML del documento que fue a Anulado en Protheus y está pendiente de solicitud de Cancelación ante el SAT. |
Atributo | Contenido |
Campo | F3_MOTIVO |
Tipo | C - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Motivo Canc. |
Desc. Español | Motivo de Cancelación |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica el motivo de Cancelación del documento fiscal de acuerdo al catálogo de Motivos de cancelación definido por el SAT. |
Atributo | Contenido |
Campo | F3_CNATREC |
Tipo | C - Caracter |
Tamaño | 36 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | UUID Doc. |
Desc. Español | UUID Doc. Anulado |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Indica el UUID del documento fiscal que fue anulado pero que se tiene pendiente la Solicitud de Cancelación ante el SAT. |
Producto | TOTVS Backoffice | ||||||
---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||
Segmento: | Backoffice | ||||||
Módulo: | SIGAFAT - Facturación | ||||||
Función: |
| ||||||
País: | México | ||||||
Ticket: | 14627447 | ||||||
Pacote: | 010920 | ||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-16413 |
De acuerdo con la información emitida en la reforma fiscal 2022 acerca del Servicio de Cancelación de CFDI, para solicitar la Cancelación de una Factura de Venta (NF), Nota de Débito al Cliente (NDC) o Nota de Crédito al Cliente (NCC) se debe informar el Motivo de Cancelación.
Cuando el motivo indicado es el 01 - Comprobante emitido con errores con relación, primero se sustituye el documento y cuando se solicita la cancelación, se incorpora el UUID del Documento que sustituye al cancelado.
Al realizar el proceso con los servicios del Proveedor Autorizado de Certificación (PAC), el sistema indica que el documento fue cancelado, pero al hacer la verificación en el portal del SAT el documento aún no se encuentra cancelado.
El proveedor indica que la actualización del UUID del documento que sustituye al original puede tardar algunos minutos, por lo que se solicita la actualización para que al realizar el timbrado del nuevo documento, no se detone de inmediato la cancelación del documento original, si no que el usuario pueda realizarlo posteriormente a través de la FISA817 – Cancelación de CFDi.
SOLUCIÓN
Se realiza ajuste en la rutina FISA800 (Timbrado masivo de CFDi) para que al realizar el Timbrado del documento que sustituye al anterior, no se detone la cancelación automática si el parámetro MV_CANAUT es igual a 'N'.
Una vez que se genera el Timbre Fiscal, el sistema también emite un mensaje indicando que el documento original aún no ha sido cancelado.“El documento XXXXX quedo pendiente de cancelación ante el SAT, no olvide realizar dicha cancelación”.
Al configurar el parámetro MV_CANAUT = N , se desactivará la cancelación automática del documento que sustituye por lo cual recordar realizar dicha solicitud de cancelación desde la Cancelación de CFDI (FISA817) en el menú de "Otras acciones > Solic. Canc. Pendientes". Dicha configuración podrá ser utilizada por cualquier PAC por delay en el timbrado de la factura que sustituye y cancelación de la factura relacionada. Si el parámetro está vació o con S la funcionalidad actual de la cancelación de facturas relacionadas no tendrá ningún cambio. |
DICCIONARIO DE DATOS
Parámetros (SX6)
Ítems/Carpetas | Descripción |
---|---|
Tipo | C |
Nombre de Var. | MV_CANAUT |
Descripción | Permite omitir la sol. de canc. ante el SAT de docs. cancelados con Motivo 01, al timbrar el doc. que lo sustituye. N = Desactiva canc. automática. |
Cont. Esp |
Producto | TOTVS Backoffice | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||
Segmento: | Backoffice | |||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||
Función: |
| |||||||||||||||
País: | México | |||||||||||||||
Ticket: | 14883985 | |||||||||||||||
Pacote: | 011130 | |||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-16668 |
Se requiere permitir modificar y/o indicar la Forma de Pago del Documento desde que se está generando, por lo tanto se requiere activar un campo donde se indique la "Forma de Pago" en el encabezado de los documentos: "Pedido de Venta (MATA410), Factura (MATA467N), Nota de Débito (MATA465N) y Remisión de ventas (MATA462N)"
SOLUCIÓN
En la rutina Funciones Genéricas para Documentos Fiscales para México "LOCXMEX":
Se agrega el campo Forma de Pago (F2_TPDOC) para que se visualice en la pantalla de los documentos de tipo Factura (MATA467N), Nota de Débito (MATA465N) y Remisión de ventas (MATA462N).
Se crea la función LxMxHab() y la función LxMxFPago() que cumplen con la siguiente regla de negocio:
En la rutina Generación de Remitos de Venta "MATA462AN":
Se modifica la función de Generación de Remito Automático (A462ANGera), para que se realice el guardado del campo Forma de Pago (F2_TPDOC), a partir del campo Forma de Pago (C5_TPDOC) al generar la Factura a partir de la Remisión.
En la rutina Generación de Notas Fiscales "MATA468N":
Se modifica la función que Genera Registros en SF2 y Acumula Valores (A468nGravF2), para que realice el guardado del campo Forma de Pago (F2_TPDOC), a partir del campo Forma de Pago (C5_TPDOC) al generar la Factura a partir de un "Pedido" y de un "Pedido a Remisión".
Se requiere editar el script actual de generación de CFDI (Archivo XML), actualizando las secciones de acuerdo al siguiente modelo, en donde se agregaron o fueron modificadas líneas para integrar esta nueva funcionalidad.
En el apartado de [XXX INICIALIZACION] Se agrega la línea: (PRE) _aTotal[107] := IIf(SF2->(ColumnPos("F2_TPDOC")) > 0,ALLTRIM(SF2->F2_TPDOC),ALLTRIM(AI0->AI0_MPAGO)) En el apartado de ///////////DATOS DE LA FACTURA///////////////// Se modifica la línea: //FormaPago Por la línea: //FormaPago En el apartado de [XXX FACTURA] Se modifica la línea: (PRE) _aTotal[001] += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", ' FormaPago="' + IIf(SF2->F2_GLOBAL == '1',FormPagGlo(SF2->F2_DOC,SF2->F2_SERIE),IIf(Empty(AI0->AI0_MPAGO),"99",Alltrim(AI0->AI0_MPAGO))) + '"' ) Por la siguiente línea (PRE) _aTotal[001] += IIf(Alltrim(SF2->F2_TIPODOC) == "21", "", ' FormaPago="' + IIf(SF2->F2_GLOBAL == '1',FormPagGlo(SF2->F2_DOC,SF2->F2_SERIE),IIf(Empty(_aTotal[107]) .Or. Alltrim(SE4->E4_MPAGSAT) == "PPD","99",_aTotal[107])) + '"' ) |
Nota de Crédito
Producto | TOTVS Backoffice | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||
Segmento: | Backoffice | |||||||||
Módulo: | SIGAFAT - Facturación | |||||||||
Función: |
| |||||||||
País: | México | |||||||||
Ticket: | N/A | |||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-16686 (Pacote: 011130) |
Se requiere permitir modificar y/o indicar la Forma de Pago del Documento desde que se está generando, por lo tanto se requiere activar un campo donde se indique la "Forma de Pago" en el encabezado de la Nota de Crédito (MATA465N), así como agregar la validación al guardar la Nota de Crédito donde se verifique la Forma de pago(F1_TPDOC) es igual a 15, si existen Facturas relacionadas estás deben tener saldo mayor a cero en Cuentas por Cobrar.
Solución
En la rutina Funciones Genéricas para Documentos Fiscales para México "LOCXMEX":
Se agrega el campo Forma de Pago (F1_TPDOC) para que se visualice en la pantalla de la Nota de Crédito (MATA465N), por default este campo se mostrará con valor "99"
Se crea la función LxMxPagoNC() que cumplen con la siguiente regla de negocio:
Actualmente si se indica una Forma de Pago diferente al valor "99" se debe indicar un Método de Pago diferente a "PPD - Pago en Parcialidades |
Para más información de ajustes y proceso de validación ver Documento Técnico de Activación de la Forma de Pago en la NCC y no en el Cliente
DICCIONARIO DE DATOS
Creación de campos en el archivo SX3 – Campos:
Tabla SC5 - Pedidos de Venta.
Campo | C5_TPDOC |
---|---|
Tipo | C - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Título | Forma de Pago |
Descripción | Forma de Pago SAT |
Modo edición | LxMxHab("C5",.T.) |
Consulta | MEX005 |
Validación de sistema | Vazio() .or. ValidF3I("S005", M->C5_TPDOC,1,2) |
Nivel | 1 |
Obligatorio | Sí |
Utilizado | Sí |
Browse | No |
Help | Informe la Forma de Pago SAT para el Documento generado, de acuerdo al catálogo cFormaPago definido por el SAT. Si la condición de Pago usa un Método de pago "PPD O PID" no se permitirá su edición. |
Tabla SF2 - Encabezado de Fact. de Salida.
Campo | F2_TPDOC |
---|---|
Tipo | C - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Título | Forma de Pago |
Descripción | Forma de Pago SAT |
Modo edición | LxMxHab("F2",.T.) |
Consulta | MEX005 |
Validación de sistema | Vazio() .or. ValidF3I("S005", M->F2_TPDOC,1,2) |
Nivel | 1 |
Obligatorio | Sí |
Utilizado | Sí |
Browse | No |
Help | Informe la Forma de Pago SAT para el Documento generado, de acuerdo al catálogo cFormaPago definido por el SAT. Si la condición de Pago usa un Método de pago "PPD O PID" no se permitirá su edición. |
Tabla SF1 - Encabezado de Fact. de Entrada.
Campo | F1_TPDOC |
---|---|
Tipo | C - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Título | Forma Pago |
Descripción | Forma de Pago SAT |
Iniciador Estandar | '99' |
Consulta | MEX005 |
Validación de sistema | Vazio() .or. ValidF3I("S005", M->F1_TPDOC,1,2) |
Nivel | 1 |
Obligatorio | Sí |
Utilizado | Sí |
Browse | No |
Help | Informe la Forma de Pago SAT para el Documento generado, de acuerdo al catálogo cFormaPago definido por el SAT. |
Creación de Disparadores en el archivo SX7 – Disparadores:
Campo Dominio | C5_CLIENTE |
Secuencia | 001 |
Regla | LxMxHab("C5",.T.) |
Campo Ctr. Dominio | C5_TPDOC |
Tipo | P - Primario |
Seek | N - No |
Campo Dominio | C5_CLIENTELOJA |
Secuencia | 001 |
Regla | LxMxHab("C5",.T.) |
Campo Ctr. Dominio | C5_TPDOC |
Tipo | P - Primario |
Seek | N - No |
Campo Dominio | F2_CLIENTE |
Secuencia | 001 |
Regla | LxMxHab("F2",.T.) |
Campo Ctr. Dominio | F2_TPDOC |
Tipo | P - Primario |
Seek | N - No |
Campo Dominio | F2_LOJA |
Secuencia | 001 |
Regla | LxMxHab("F2",.T.) |
Campo Ctr. Dominio | F2_TPDOC |
Tipo | P - Primario |
Seek | N - No |
Producto | TOTVS Backoffice | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||
Segmento: | Backoffice | |||||||||
Módulo: | SIGAFAT - Facturación | |||||||||
Función: |
| |||||||||
País: | México | |||||||||
Ticket: | No aplica | |||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-16793 |
Con fecha 18 de julio de 2022 el Servicio de Administración Tributaria (SAT) da a conocer una nueva revisión del Complemento de Comercio Exterior (CCX) del Comprobante Fiscal Digital por Internet (CFDI). Este complemento mantiene la versión 1.1, pero es ahora Revisión “E”.
Fundamento: Comercio Exterior versión 11 Revision E
SOLUCIÓN
En la rutina de Funciones Genéricas para Documentos Fiscales para México (LOCXMEX):
Se realiza ajuste para activar los siguientes campos para funcionalidad de Comercio Exterior, para la inclusión de Facturas de Venta de tipo Traslado (21), cuando el parámetro MV_CFDIEXP está configurado con el valor .T.:
Se agregó una validación para que si el Tipo de Documento es Traslado (21), cuando se tiene activada la funcionalidad de Facturación Electrónica, y el campo Mot. Tras. (F2_TRASLA) se encuentra vacío, se presente el siguiente mensaje y no se permita el guardado del documento:
Para Documentos de tipo Traslado con Complemento de Comercio Exterior, es necesario informar el campo Mot. Tras. (F2_TRASLA).
Si el XML es de una Factura de tipo Traslado, y en el nodo cfdi:Comprobante\cfdi:Complemento\cce11:ComercioExterior no existe el atributo MotivoTraslado, se recibe el siguiente rechazo: [Error #CCE999] Error no clasificado Folio: 00000000000000000250. Serie: A. El TipoDeComprobante es "T" Traslado el atributo "ComercioExterior:MotivoTraslado" debe existir. |
En el archivo de Generación de XML de Documentos de Salida (FATSMEX.INI):
Se realizaron los siguientes ajustes:
Si se encuentra configurado el parámetro MV_CFDIEXP con el valor .T., se informa el campo Tipo Opera (F2_TIPOPE) o el tipo de Documento es Traslado (F2_TIPODOC igual a 21) y se indicó que si tiene Carta Porte (F2_TPCOMPL igual a S), en el nodo cfdi:Comprobante\cfdi:Receptor los atributos Rfc, Nombre, DomicilioFiscalReceptor y RegimenFiscalReceptor son informados con los datos de los campos CNPJ o CPF (M0_CGC), Nombre Comercial (M0_NOMECOM), CP Fiscal Entrega (M0_CEPENT) y Actividad Económica (M0_DSCCNA) de la Sucursal.
Se mueven los datos que aplican para el complemento de Carta Porte, para que en la cadena original se muestren después de los datos que aplican para el complemento de Comercio Exterior.
Si el RCF del Cliente es XEXX010101000 en el nodo cfdi:Comprobante\cfdi:Complemento\cce11:Receptor se genera el atributo NumRegIdTrib con el valor del campo Reg. Fiscal (F2_IDTRIB)
Para más información de ajustes y proceso de validación ver Docmento Técnico de Ajustes para Complemento de Comercio Exterior 1.1 Revisión E México
La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, por lo cual, se recomienda seguir utilizando la funcionalidad del uso del archivo FATSMEX.INI, para lo cual el parámetro MV_FEXML no debe existir o estar vacío |
Producto | TOTVS Backoffice | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||
Segmento: | Backoffice | ||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||
Función: |
| ||||||||||||
País: | México (Pacote: 011320) | ||||||||||||
Ticket: | No aplica | ||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-17245 |
Se solicita activar la funcionalidad para que la generación del Comprobante Fiscal Digital por Internet (CFDI) para la Factura de Venta de tipo Normal, sea realizada a través del uso de la rutina FATSMEX.PRW, para evitar el uso del archivo FATSMEX.INI.
SOLUCIÓN
Se crea la rutina de Generación de XML para Documentos de Salida (FATSMEX), para la generación del Comprobante Fiscal Digital por Internet (CFDI) de documentos de tipo Salida, la cual genera los siguientes nodos:
Así como los atributos para visualizar los Totales por Impuestos:
En la rutina de Funciones genéricas para Facturación - MI (FATXFUMI),se crean las funciones:
Para activar la funcionalidad de generación del XML a través de la rutina FATSMEX.PRW se debe crear el parámetro MV_FEXML en la tabla SX6 - Parámetros y configurarse con el valor S:
Campo | Valor |
---|---|
Nombre de Var. | MV_FEXML |
Tipo | 1 - Caracteres |
Cont. Esp | |
Descripción | Permite activar la funcionalidad para generar XML a través de rutina, evitando el uso de archivos .INI. S - Realizara la creación de archivos XML y no hará uso de los actuales archivo INI. |
Consideraciones importantes para el timbrado a través del uso de la rutina FATSMEX.PRW:
Producto | TOTVS Backoffice | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||
Segmento: | Backoffice | |||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||
Función: |
| |||||||||||||||
País: | México | |||||||||||||||
Ticket: | 15663253/15642890/15662513 | |||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-17711 / DMINA-17694 / DMINA-17713 |
Se solicita realizar la habilitación de las Facturas Globales desde la rutina Facturación (MATA467N) de las cuales se requiere emitir un CFDI Global versión 4.0, ya que actual del sistema no se contempla la emisión de CFDI Global desde dicha rutina debido a que no se pueden capturar los datos que requiere el nodo: InformacionGlobal.
Se realizaron los siguientes ajustes:
Funciones generales de documentos fiscales (LOCXFUNA):
Funciones Genéricas para Documentos Fiscales para México (LOCXMEX):
Definición de Catálogos del SAT (FISA814):
Generación de PDF para Documentos Fiscales de Entrada/Salida.
Creación de Consulta Estándar en el archivo SXB - Consultas Estándar:
Alias | Tipo | Secuencia | Columna | Descripción | Contiene |
---|---|---|---|---|---|
MEX029 | 1 | 01 | RE | Periodicidad | F3I |
MEX029 | 2 | 01 | 01 | F812SXB("S029","Period") | |
MEX029 | 5 | 01 | VAR_IXB |
Alias | Tipo | Secuencia | Columna | Descripción | Contiene |
---|---|---|---|---|---|
MEX030 | 1 | 01 | RE | Meses | F3I |
MEX030 | 2 | 01 | 01 | F812SXB("S029","Meses") | |
MEX030 | 5 | 01 | VAR_IXB |
Creación de campos en el archivo SX3 – Campos:
Tabla SF2 - Encabezado de Fact. de Salida.
Campo | F2_GLOBAL |
---|---|
Tipo | C - Caracter |
Tamaño | 1 |
Decimal | 0 |
Formato | |
Título | Es Global? |
Descripción | Determ. si es factura glob |
Lista Español | 1=Si;2=No |
Inic. Estandar | "2" |
Nivel | 1 |
Utilizado | Sí |
Browse | No |
Help | Determina si el documento es una factura |
Campo | F2_IDCBAJA |
---|---|
Tipo | C - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Título | Periodicidad |
Descripción | Periodicidad de Emisión |
Consulta | MEX029 |
Validación de sistema | Vazio() .or. ValidF3I("S029", M->F2_IDCBAJA,1,2) |
Nivel | 1 |
Utilizado | Sí |
Browse | No |
Help | Informe el período al que corresponde a la información del comprobante global. |
Campo | F2_MODCONS |
---|---|
Tipo | C - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Título | Mes Emisión |
Descripción | Mes de Emisión de Fact |
Consulta | MEX030 |
Validación de sistema | Vazio() .or. ValidF3I("S030", M->F2_MODCONS,1,2) |
Nivel | 1 |
Utilizado | Sí |
Browse | No |
Help | Indicar la clave del mes o los meses al que corresponde la información de las operaciones celebradas con el público en general, las distintas claves vigentes se encuentran incluidas en el catálogo c_Meses . |
Campo | F2_PTOEMIS |
---|---|
Tipo | C - Caracter |
Tamaño | 4 |
Decimal | 0 |
Formato | @! |
Título | Año Emisión |
Descripción | Año Emisión de Fact Global |
Estandar | |
Consulta | |
Validación de sistema | |
Nivel | 1 |
Utilizado | Sí |
Browse | No |
Help | Se debe registrar el año al que corresponde la información del comprobante global. El valor registrado debe ser igual al año en curso o al año inmediato anterior considerando el registrado en la Fecha de emisión del comprobante. |
Creación del parámetro en la tabla SX6 - Parámetros:
Campo | Valor |
---|---|
Nombre de Var. | MV_NFGLOBA |
Tipo | 1 - Caracteres |
Cont. Esp | |
Descripción | Permite activar la funcionalidad para generar Facturas Globales a través de rutina. Valor S para habilitar los campos requeridos. |
Ejemplo de envió de Factura Global por rutina automática.
#include "Protheus.ch" User Function M467Auto() Processa( { || GeneraNF() } , "", "Generando Factura Global..." ) Return Static Function GeneraNF() Local aCab := {} Local aLinha := {} Local aItens := {} Local cSerie := "A " Local cDoc := "" Local cCertFol := SuperGetMv("MV_CFDI_CS",,"") Local cProd := PadR("TST000000000037",20) Private lMsErroAuto := .F. // Consecutivo factura SX5->(DBSetOrder(1)) SX5->(MsSeek(xFilial("SX5")+"01"+cSerie)) cDoc := IIf( SX5->(Found()), PadR(Trim(X5Descri()),20) , StrZero(126,20,0) ) // Encabezado de factura AAdd( aCab, { "F2_CLIENTE", "016082" , Nil } ) AAdd( aCab, { "F2_LOJA" , "01" , Nil } ) AAdd( aCab, { "F2_SERIE" , cSerie , Nil } ) AAdd( aCab, { "F2_DOC" , cDoc , Nil } ) AAdd( aCab, { "F2_COND" , "015" , Nil } ) AAdd( aCab, { "F2_EMISSAO", dDataBase , Nil } ) AAdd( aCab, { "F2_EST" , "QRO" , Nil } ) AAdd( aCab, { "F2_TIPO" , "N" , Nil } ) AAdd( aCab, { "F2_ESPECIE", "NF " , Nil } ) AAdd( aCab, { "F2_PREFIXO", "A" , Nil } ) AAdd( aCab, { "F2_MOEDA" , 1 , Nil } ) AAdd( aCab, { "F2_TXMOEDA", 1 , Nil } ) AAdd( aCab, { "F2_FORMUL" , "S" , Nil } ) AAdd( aCab, { "F2_TIPODOC", "01" , Nil } ) AAdd( aCab, { "F2_USOCFDI", "S01" , Nil } ) AAdd( aCab, { "F2_GLOBAL" , "1" , Nil } ) // Indica si es Factura Global 1-Si / 2-No. AAdd( aCab, { "F2_IDCBAJA", "01" , Nil } ) // Indicar la Periodicidad de emisión de la Factura Global. AAdd( aCab, { "F2_MODCONS", "01" , Nil } ) // Indicar los Meses de emisión de la Factura Global. AAdd( aCab, { "F2_PTOEMIS", "2022" , Nil } ) // Indicar el año de emisión de la Factura Global. AAdd( aCab, { "F2_APROFOL", "1" , Nil } ) AAdd( aCab, { "F2_CERTFOL", cCertFol , Nil } ) // Ítems de la factura aLinha := {} AAdd( aLinha, { "D2_COD" , cProd , Nil } ) AAdd( aLinha, { "D2_UM" , "UN" , Nil } ) AAdd( aLinha, { "D2_QUANT" , 1 , Nil } ) AAdd( aLinha, { "D2_PRCVEN" , 1000 , Nil } ) AAdd( aLinha, { "D2_TOTAL" , 1000 , Nil } ) AAdd( aLinha, { "D2_PESO" , 1 , Nil } ) AAdd( aLinha, { "D2_TES" , "501" , Nil } ) AAdd( aLinha, { "D2_ESPECIE", "NF " , Nil } ) AAdd( aItens, aLinha) // Rutina automática MSExecAuto( { |x,y,z,w| Mata467n(x,y,z,,,,w) }, aCab, aItens, 3, ) //3-Incluir, 5-Excluir e 6-Cancelar If lMsErroAuto MsgStop("Error en la grabación de la Factura global.") MostraErro() Else MsgAlert("Factura global incluida con éxito.") EndIf Return |
Para más información de ajustes y proceso de validación ver DT Factura Global CFDI 4.0 MATA467N MEX
Producto | TOTVS Backoffice | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||
Segmento: | Backoffice | |||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||
Función: |
| |||||||||||||||
País: | México | |||||||||||||||
Ticket: | 15946342 (Pacote: 0011736) | |||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-18213 |
Se solicita se permita el reenvió de una solicitud de cancelación cuando se realiza la Solicitud de Cancelación ante el SAT de una Factura de Venta que tiene el estatus "Cancelable con Aceptación", y esta es RECHAZADA por el Cliente, al intentar reenviar la Solicitud de cancelación de esa misma Factura en la rutina Cancelación de CFDI (FISA817) desde Otras acciones | Solic. Can. Pendientes.
En la rutina de Cancelación de CFDI (FISA817), para los documentos con estatus "Cancelable con aceptación" con tipo de motivo de cancelación "01", donde al realizar la cancelación del documento le indique la marca de "E" que fue enviado a solicitud de cancelación y estará disponible el documento para la consulta del estatus en el SAT mediante el Proveedor Autorizado de Certificación (PAC) MasterEdi donde con base al estatus que retorna el PAC se realiza la siguiente regla de negocio:
En el caso de las cancelaciones con motivo diferente a "01 - Comprobante emitido con errores con relación de documento", se realizo ajuste cuando sean documentos "Cancelables con aceptación" una vez seleccionado el motivo de cancelación no se eliminarán del browser hasta que la petición de solicitud de cancelación haya sido aceptada en caso contrario podrá actualizar el estatus o reenviar la solicitud de cancelación en caso de ser necesario como se indica en el DT DT_Factura_Electronica_Mexico_CFDI_Version_3_3#7.2ProcedimientodeUtilizaci%C3%B3n.
Funcionalidad con cualquier motivo.
Estatus | Acción protheus | Respuesta Protheus | ||||||
---|---|---|---|---|---|---|---|---|
Vigente | Actualiza Status | Cambia estatus a Vigente Cancelable Con Aceptación | ||||||
Cambia estatus a Vigente Cancelable Sin Aceptación | ||||||||
Vigente Cancelable Con Aceptación | Cancelar e indicar Motivo |
|
Funcionalidad con motivo diferente a "01 - Comprobante emitido con errores con relación de documento"
Estatus | Acción protheus | Respuesta Protheus |
---|---|---|
En proceso | Actualiza Status | Solicitud de Cancelación Rechazada |
No cancelable , contiene documentos relacionados | ||
Acepta cancelación (Se elimina el registro). | ||
Solicitud de Cancelación Rechazada | Cancelar e indicar Motivo | Cambia a estatus "En proceso" |
Este cambio solo aplica para el Proveedor Autorizado de Certificación (PAC) MasterEdi |
Ajuste al diccionario de Datos:
Consulta Estándar en el archivo SXB – Consulta Estándar:
Consulta: DOCSUS
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
DOCSUS | 1 | 01 | DB | Documento Sustituye | SF3 |
DOCSUS | 2 | 01 | 05 | Serie Fact. + Factur | |
DOCSUS | 4 | 01 | 01 | Serie | F3_SERIE |
DOCSUS | 4 | 01 | 02 | Número Documento | F3_NFISCAL |
DOCSUS | 4 | 01 | 03 | Cliente | F3_CLIEFOR |
DOCSUS | 4 | 01 | 04 | Tienda | F3_LOJA |
DOCSUS | 4 | 01 | 05 | UUID | F3_CNATREC |
DOCSUS | 5 | 01 | SF3->F3_SERIE | ||
DOCSUS | 5 | 02 | SF3->F3_NFISCAL | ||
DOCSUS | 6 | 01 | F3_TIPOMOV == "V" .And. F3_STATUS $ "S|A" .And. F3_ESPECIE == cEspecie |
01. DATOS GENERALES
Producto | TOTVS Backoffice | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||
Segmento: | Backoffice | ||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||
Función: |
| ||||||||||||
País: | México | ||||||||||||
Ticket: | No aplica (Pacote: 0011806) | ||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-18471 |
02. SITUACIÓN/REQUISITO
De acuerdo a las actualizaciones en el catálogo de c_Exportación realizadas por el SAT el pasado 24 de febrero del 2022 , se requiere que para el Complemento de Comercio Exterior, cuando la clave de pedimento sea distinta de A1 o que no exista enajenación en términos del Código Fiscal de la Federación (CFF), en el atributo "Exportación" se deberá indicar el valor "04", de acuerdo a lo definido por el SAT:
c_Exportacion | Descripción |
---|---|
04 | Definitiva con clave distinta a A1 o cuando no existe enajenación en términos del CFF |
Para la inclusión de Documentos Fiscales (LOCXNF), cuando se tiene activa la funcionalidad de Comercio Exterior (el parámetro MV_CFDIEXP se encuentra configurado con valor .T.), se realizaron ajustes para dar seguimiento a la siguiente regla de negocio:
Los campos necesarios para la generación del nodo de Complemento de Comercio Exterior, solo serán obligatorios si el campo Tipo Opera (F2_TIPOPE) es informado y el campo Clv. Ped. (F2_CVEPED) es igual a "A1".
En el CFDI del Documento, el atributo Exportacion tomará los siguientes valores:
Los siguientes campos, son los necesarios para la funcionalidad del Complemento de Comercio Exterior:
En caso de tener personalizaciones en el archivo FATSMEX.INI se debe hacer los ajustes que se enmarcan a continuación:
FATSMEX.INI
[XXX POSICIONAMENTOS] [XXX INICIALIZACION] (PRE) fImptosD(SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),"SD2", SF2->F2_GLOBAL == "1",@(_aTotal[036]),_aTotal[104],@_aTotal[037], @_aTotal[038] ) [SD2 CADENAORIGINAL_SELLO] //Cadena Original | Complemento de Comercio Exterior (Mercancias) ///////////DATOS DE LA FACTURA///////////////// //////////////////////CFDI Relacionados////////////////////////// ///////////DATOS DEL EMISOR/////////////////////// //////////////////////DATOS DEL RECEPTOR////////////////////////// (PRE) (cCadOrig += fXMLFUN("CO",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) (POS) IIf(lCCCE , cCadOrig += "1.1" + _aTotal[098], "") //Emisor //Receptor Domicilio (POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "") //Carta Porte (POS) cCadOrig += _aTotal[098] //SELLO (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE) .And. _aTotal[114], .T., .F.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (POS) cNodoCCE := IIf(lCCCE, ' <cce11:ComercioExterior' , "") [XXX CFDIREL] [XXX FACTURA GLOBAL] [XXX EMISOR] [XXX RECEPTOR_CLIENTE] (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE) .And. _aTotal[114], .T., .F.) (PREREG) AllTrim(SF2->F2_ESPECIE) <> "NDI" (POS) cNodoCCE += IIf(lCCCE, ' <cce11:Emisor' , "") (POS) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) [SD2 CONCEPTO] (PRE) DbGoTop() (PREREG) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancia' , ""),.T.) (POS) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) (POS) (_aTotal[034] := fXMLFUN("CO",.F., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) (PREREG) (_aTotal[001] := _aTotal[034] ,.T.) [XXX IMPUESTOS] //IMPUESTOS LOCALES// [XXX COMPLEMENT] [XXX COMERCIOEX] [XXX CARTAPORTE] [XXX IMPUESTOLOC] [XXX LEYENDASFIS]
//[XXX CAD_ORIG] [XXX FACTURA] |
En caso de tener personalizaciones en el archivo FATEMEX.INI se debe hacer los ajustes que se enmarcan a continuación:
//FATEMEX.INI V4.0 --- Modelo 2022 [XXX INICIALIZACION] (PREREG) FsQuery(_aTotal[097],1,"D1_DOC='" + SF1->F1_DOC + "' AND D1_SERIE='" + SF1->F1_SERIE + "' AND D1_FORNECE='" + SF1->F1_FORNECE + "' AND D1_LOJA='" + SF1->F1_LOJA + "'","SD1->D1_DOC=SF1->F1_DOC .AND. SD1->D1_SERIE=SF1->F1_SERIE .AND. SD1->D1_FORNECE=SF1->F1_FORNECE .AND. SD1->D1_LOJA=SF1->F1_LOJA","D1_ITEM") .And. .T. (PRE) fImptosD(SF1->F1_DOC,SF1->F1_SERIE,SF1->F1_FORNECE,SF1->F1_LOJA, .F. , "SD1", .F., @(_aTotal[036])) [SD1 CADENAORIGINAL_SELLO] //Cadena Original | Complemento de Comercio Exterior //Cadena Original | Complemento de Comercio Exterior ///////////DATOS DE LA FACTURA///////////////// //////////////////////CFDI Relacionados////////////////////////// ///////////DATOS DEL EMISOR/////////////////////// //////////////////////DATOS DEL RECEPTOR////////////////////////// (PRE) (cCadOrig += fXMLFUN("CO",.T., .F. ,.F.)) //Cadena Original | Complemento de Comercio Exterior //Emisor //Receptor Domicilio (POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "") (POS) cCadOrig += _aTotal[098] //SELLO [XXX CABECERA] [XXX FACTURA] (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF1->F1_TIPOPE) .And. _aTotal[104], .T., .F.) (PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.) (POS) cNodoCCE := IIf(lCCCE, ' <cce11:ComercioExterior' , "") [XXX CFDIREL] [XXX EMISOR] [XXX RECEPTOR_CLIENTE] (PREREG) AllTrim(SF1->F1_ESPECIE) == "NCC" //Emisor //Receptor //Domicilio Receptor (POS) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) [SD1 CONCEPTO] (PRE) DbGoTop() (POS) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) (POS) (_aTotal[034] := fXMLFUN("CO",.F., .F. ,.F.)) [XXX IMPUESTOS] //IMPUESTOS LOCALES// [XXX COMPLEMENT] [XXX COMERCIOEX] [XXX IMPUESTOLOC] [XXX COMPLEMENT] //[XXX CAD_ORIG] [XXX FACTURA] |
Ajuste al diccionario de Datos:
Se modifican los campos de la tabla SF1 - Encabezado de Doc de Entrada
Campo | F1_TIPOPE |
---|---|
Titulo | Tipo Opera |
Opciones | 1=Exportación de servicios;2=Exportación;3=Exportación sin enajenación |
Val Sistema | Vazio() .Or. (Pertence('123') .And. ValTipoOpe(1)) |
Se modifican los campos de la tabla SF2 - Encabezado de Doc de Salida
Campo | F2_TIPOPE |
---|---|
Titulo | Tipo Opera |
Opciones | 1=Exportación de servicios;2=Exportación;3=Exportación sin enajenación |
Val Sistema | Vazio() .Or. (Pertence('123') .And. ValTipoOpe(2)) |
La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, por lo cual, se recomienda seguir utilizando la funcionalidad del uso del archivo FATEMEX.INI, para lo cual el parámetro MV_FEXML no debe existir o estar vacío. |
Producto | TOTVS Backoffice | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||
Segmento: | Backoffice | |||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||
Función: |
| |||||||||||||||
País: | México | |||||||||||||||
Ticket: | No aplica | |||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-19160 |
Se solicita activar la funcionalidad para que la generación del Comprobante Fiscal Digital por Internet (CFDI) para Nota de Crédito, sea realizada a través del uso de la rutina FATEMEX.PRW, para evitar el uso del archivo FATEMEX.INI.
SOLUCION
Se crea la rutina de Generación de XML para Documentos de Entrada (FATEMEX), para la generación del Comprobante Fiscal Digital por Internet (CFDI) de documentos de tipo Entrada, la cual genera los siguientes nodos:
En la rutina de Funciones genéricas para Notas Fiscales (LOCXFUNA), se habilita la funcionalidad de la generación del archivo XML por medio de la rutina FATEMEX.PRW cuando es una Nota de Crédito y se encuentra configurado el parámetro MV_FEXML = S.
Para activar la funcionalidad de generación del XML a través de la rutina FATEMEX.PRW se debe crear el parámetro MV_FEXML en la tabla SX6 - Parámetros y configurarse con el valor S:
Campo | Valor |
---|---|
Nombre de Var. | MV_FEXML |
Tipo | 1 - Caracteres |
Cont. Esp | |
Descripción | Permite activar la funcionalidad para generar XML a través de rutina, evitando el uso de archivos .INI. S - Realizara la creación de archivos XML y no hará uso de los actuales archivo INI. |
Consideraciones importantes para el timbrado a través del uso de la rutina FATEMEX.PRW:
Producto | TOTVS Backoffice | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||||||||||||||
Segmento: | Backoffice | ||||||||||||||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||||||||||||||
Función: |
| ||||||||||||||||||||||||
País: | México (Pacote: 012477) | ||||||||||||||||||||||||
Ticket: | 17141182 | ||||||||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-19736 |
Se solicita habilitar para el CFDI de las Facturas de Venta (NF) con Complemento de Comercio Exterior, el nodo cce11:Destinatario, ya que de acuerdo a lo indicado por el SAT, el nodo Destinatario sirve para expresar los datos del destinatario de la mercancía cuando este sea distinto del Receptor del comprobante, o bien cuando el domicilio se trate de alguna sucursal. Por lo tanto en los casos que el envío sea a una dirección diferente a la de la empresa deberá informase en este nodo.
Sustento Legal: http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/GuiaComercioExterior311221.pdf (Pág. 46).
En la rutina de Funciones Complementarias de Registro de Clientes (MATN030):
En la función que permite la Actualización de los Clientes (A30Altera), se activa el llamado a la función FATXMI030() para permitir agregar Otras acciones para Mercado internacional.
Se creó la rutina Registro de Destinatarios del Cliente (MATA489), para permitir relacionar uno o varios Destinatarios al Cliente, utilizando la tabla AIT.
En la rutina de Funciones genéricas para Facturación - Mercado Internacional (FAXFUMI):
Se creó la Función para agregar acciones en modificación de clientes - Mercado Internacional (FATXMI030) para permitir agregar Otras acciones para Mercado internacional.
Se creó la Función que genera el nodo cce11:Destinatario en el XML y Cadena Original en el Complemento de Comercio exterior (LxCEDest), el nodo solo es generado si el campo Destinos (F2_ACOPLA) tiene registros, generado el nodo con los siguientes atributos:
Atributo | Campo | Nodo |
---|---|---|
Nombre | AIT_TIPO | \cfdi:Complemento\cce11:Destinatario |
NumRegIdTrib | AIT_CODTRI | \cfdi:Complemento\cce11:Destinatario |
Calle | AIT_REG | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
NumeroExterior | AIT_NUMEXT | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
NumeroInterior | AIT_NUMINT | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
Colonia | AIT_COLON | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
Localidad | AIT_LOCALI | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
Municipio | AIT_MUNICI | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
Estado | AIT_ESTADO | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
País | AIT_PAIS | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
CodigoPostal | AIT_CODPOS | \cfdi:Complemento\cce11:Destinatario\cce11:Domicilio |
En la rutina de Funciones de Genéricas de Documentos Fiscales para el país México (LOCXMEX):
Se activa el campo Destinos (F2_ACOPLA), para que sea visualizado para las Facturas de Venta de tipo Ingreso (Normal) y Traslado.
Se creó la Función que despliega los Destinatarios relacionados al Cliente en la tabla AIT (LxMexDest), para que se seleccionen y que sean informados los Código de ítem (AIT_CODRES) en el campo Destinos (F2_ACOPLA)
Se creó la Función que valida valor de Destinos en el campo Destinos (F2_ACOPLA) (LxVldDest), para realizar la siguientes validaciones:
El campo Destinos (F2_ACOPLA), solo se visualizará para los Documentos de Factura de Venta de tipo Normal y Traslado. |
Diccionario de Datos
SX2 -Tabla
Clave | AIT |
---|---|
Nombre | Destinatarios |
Modo | C - Compartido |
SIX- Índice
Clave | AIT_FILIAL+AIT_CODCLI+AIT_LOJA+AIT_CODRES |
---|---|
Descripción | Cód. Cliente + Tienda + Item |
SX3 - Campos
Campo | AIT_FILIAL |
---|---|
Tipo | C - Caracter |
Tamaño | 8 |
Formato | @! |
Título | Sucursal |
Descripción | Sucursal |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Campo | AIT_CODCLI |
---|---|
Tipo | C - Caracter |
Tamaño | 6 |
Formato | @! |
Título | Cód. Cliente |
Descripción | Código Cliente |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Código que individualiza a cada uno de los clientes de la empresa. Se complementa con el código de la tienda. |
Campo | AIT_LOJA |
---|---|
Tipo | C - Caracter |
Tamaño | 2 |
Formato | @! |
Título | Tienda |
Descripción | Código de la Tienda |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Código de la Tienda del cliente al que se le indicarán los destinatarios |
Campo | AIT_CODRES |
---|---|
Tipo | C - Caracter |
Tamaño | 2 |
Formato | @! |
Título | Item |
Descripción | Número de Item |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Número de ítem del destinatario |
Campo | AIT_CODTRI |
---|---|
Tipo | C - Caracter |
Tamaño | 40 |
Formato | @! |
Título | Núm. ID Trib |
Descripción | Número de Item |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Número de identificación o registro fiscal, del país de residencia para efectos fiscales del destinatario de la mercancía exportada y puede conformarse desde 6 hasta 40 caracteres numéricos. |
Campo | AIT_TIPO |
---|---|
Tipo | C - Caracter |
Tamaño | 50 |
Formato | @! |
Título | Nombre |
Descripción | Nombre Destinatario |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Nombre completo, denominación o razón social del destinatario de la mercancía exportada. |
Campo | AIT_REG |
---|---|
Tipo | C - Caracter |
Tamaño | 40 |
Formato | @! |
Título | Calle |
Descripción | Calle Destinatario |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Calle en que está ubicado el domicilio del destinatario de la mercancía. |
Campo | AIT_NUMEXT |
---|---|
Tipo | C - Caracter |
Tamaño | 5 |
Formato | @! |
Título | Núm. Ext. |
Descripción | Número Exterior |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Número exterior en donde se ubica el domicilio del destinatario de la mercancía. |
Campo | AIT_NUMINT |
---|---|
Tipo | C - Caracter |
Tamaño | 5 |
Formato | @! |
Título | Núm. Int. |
Descripción | Número Interior |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Número interior en donde se ubica el domicilio del destinatario de la mercancía. |
Campo | AIT_COLON |
---|---|
Tipo | C - Caracter |
Tamaño | 50 |
Formato | @! |
Título | Colonia |
Descripción | Colonia Destinatario |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Nombre de la colonia o dato análogo en donde se ubica el domicilio del destinatario de la mercancía. |
Campo | AIT_LOCALI |
---|---|
Tipo | C - Caracter |
Tamaño | 50 |
Formato | @! |
Título | Localidad |
Descripción | Localidad Destinatario |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Nombre de la ciudad, población, distrito u otro análogo en donde se ubica el domicilio del destinatario de la mercancía. |
Campo | AIT_REF |
---|---|
Tipo | C - Caracter |
Tamaño | 30 |
Formato | @! |
Título | Referencia |
Descripción | Referencia |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Referencia geográfica de la dirección del destinatario, donde se realizará la entrega. Por ejemplo, las coordenadas GPS. |
Campo | AIT_MUNICI |
---|---|
Tipo | C - Caracter |
Tamaño | 50 |
Formato | @! |
Título | Municipio |
Descripción | Municipio Destinario |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Nombre del municipio, delegación, condado u otro análogo en donde se encuentra ubicado el destinatario de la mercancía. |
Campo | AIT_ESTADO |
---|---|
Tipo | C - Caracter |
Tamaño | 3 |
Formato | @! |
Título | Estado |
Descripción | Estado Destinario |
Nivel | 1 |
Consulta | MEX025 |
Val. Sistema | Vazio() .or. ValidF3I("S025", M->AIT_ESTADO,1,3) |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Código del estado en donde se encuentra ubicado el destinatario de la mercancía. |
Campo | AIT_PAIS |
---|---|
Tipo | C - Caracter |
Tamaño | 3 |
Formato | @! |
Título | País |
Descripción | País Destinario |
Nivel | 1 |
Consulta | MEX009 |
Val. Sistema | Vazio() .or. ValidF3I("S009", M->AIT_PAIS,1,3) |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Clave del país donde se encuentra ubicado el destinatario de la mercancía, conforme con el catálogo S009-Paises. |
Campo | AIT_CODPOS |
---|---|
Tipo | C - Caracter |
Tamaño | 5 |
Formato | @! |
Título | C.P. |
Descripción | C.P. Destinario |
Nivel | 1 |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Código postal (PO, BOX) en donde se encuentra ubicado el domicilio del destinatario de la mercancía. |
Campo | F2_ACOPLA |
---|---|
Tipo | C - Caracter |
Tamaño | 30 |
Formato | @! |
Título | Destinos |
Descripción | Destinos |
Nivel | 1 |
Val. Sistema | LxMexDest(M->F2_CLIENTE,M->F2_LOJA) .And. LxVldDest(M->F2_ACOPLA) |
Utilizado | Si |
Obligatorio | No |
Browse | No |
Help | Seleccione uno o varios de los destinos de la entrega de mercancía para Comercio Exterior. |
La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, por lo cual, se recomienda seguir utilizando la funcionalidad del uso del archivo FATSMEX.INI, para lo cual el parámetro MV_FEXML no debe existir o estar vacío. |
Producto | TOTVS Backoffice | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||
Segmento: | Backoffice | ||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||
Función: |
| ||||||||||||
País: | México | ||||||||||||
Ticket: | No aplica | ||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-17258 |
Se solicita que cuando el parámetro MV_FEXML se encuentre configurado con el valor S, al realizarse la generación del Comprobante Fiscal Digital por Internet (CFDI) en la Factura de Venta de tipo Traslado, sea realizada a través del uso de la rutina FATSMEX.PRW, y se permita la generación del nodo para el Complemento de Comercio Exterior versión 1.1 y Carta Porte versión 2.0.
SOLUCION
En la rutina de Generación de XML para Documentos de Salida (FATSMEX.PRW):
Se realiza ajuste para realizar el llamado a la función que Genera la cadena original y nodo para complemento de Carta Porte (LxFunaCaPo), para que si el campo ¿Carta Porte? (F2_TPCOMPL) existe y está configurado con el valor S - Sí, se genere el nodo cfdi:Complemento\cartaporte20:CartaPorte.
Se agrega el URL "http://www.sat.gob.mx/CartaPorte20 http://www.sat.gob.mx/sitio_internet/cfd/CartaPorte/CartaPorte20.xsd" cuando el documento generado se trata de una Carta Porte.
En la rutina de Funciones genéricas para Facturación - Mercado Internacional (FATXFUMI):
En la rutina de Generación de XML para Documentos de Salida (FATSMEX):
En la rutina de Funciones Genéricas para Notas Fiscales (LOCXFUNA):
Se realiza ajuste en la función que llena el arreglo para hacer cuadre por centavos a estructura y cadena de XML (fImptosD) para almacenar en un arreglo con los valores que se informarán en el nodo cce11:Mercancia del nodo cfdi:Comprobante\cfdi:Complemento\cce11:ComercioExterior\cce11:Mercancias.
La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, para lo cual el parámetro MV_FEXML no debe existir o estar vacío. |
Producto | TOTVS Backoffice | ||||||
---|---|---|---|---|---|---|---|
Línea de prducto: | Línea Protheus | ||||||
Segmento: | Backoffice | ||||||
Módulo: | SIGAFAT - Facturación | ||||||
Función: |
| ||||||
País: | México (MEX) | ||||||
Ticket: | No aplica. | ||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-20949 |
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 activar un Punto de Entrada, que permitan las siguientes acciones:
SOLUCION
En la rutina de Funciones genéricas para Facturación - Mercado Internacional - (FATXFUMI):
Se activó el Punto de Entrada PEEMIREC, que permite modificar los atributos RFC, Nombre y RegimenFiscal nodo cfdi:Emisor y los atributos RFC, Nombre, DomicilioFiscalReceptor y RegimenFiscal del nodo cfdi:Receptor, según las posiciones enviadas en el Punto de Entrada, cuando exista esté validará que contenga información en la posición correspondiente en caso contrario indicará la información que se tiene por estándar.
El Punto de Entrada PEEMIREC recibe como parámetro la opción de tipo Caracter, mediante el cual se tienen disponibles las siguientes opciones: Si opción es "E", se permite la modificación del Nodo de cfdi:Emisor, tomando en cuenta las siguientes posiciones:
Si opción es "R", se permite la modificación del Nodo de cfdi:Receptor, tomando en cuenta las siguientes posiciones:
|
Ejemplo de los Puntos de Entrada:
User Function PEEMIREC() Local cArea := GetArea() Local cOpcion := PARAMIXB[1] // E - Emisor o R - Receptor Local aEmiRec := {"","","",""} // Arreglo que contiene la información del Emisor o Receptor. /* Posiciones del atributo que se puede modificar en el XML para Emisor y Receptor aEmiRec[1] := RFC aEmiRec[2] := Nombre aEmiRec[3] := RegimenFiscal aEmiRec[4] := DomicilioFiscal Solo Receptor */ If cOpcion =='E' aEmiRec[2] := "TOTVS SA" EndIf If cOpcion =='R' .And. Alltrim(cEspecie) $ "NF" aEmiRec[2] := "Prueba PE Receptor RFC" aEmiRec[3] := "605" aEmiRec[4] := "54910" EndIf Return aEmiRec |
En el Punto de Entrada PEEMIREC, se tienen disponibles los siguientes datos: La variable cEspecie, la cual puede ser utilizada para personalizar para que la funcionalidad aplique solo para ciertos documentos, ya que contiene la especie del documento (por ejemplo NF para Factura de Venta, NDC para Nota de Débito de Cliente o NCC para Nota de Crédito de Cliente). Posicionamiento del registro del Documento en la tabla SF1 - Encabezado de Fact. de Entrada para los documento de Entrada. Posicionamiento del registro del Documento en la tabla SF2 - Encabezado de Fact. de Salida para los documento de Salida. En el Punto de Entrada PEEMIREC, se debe inicializar la variable de retorno de tipo arreglo, con 4 posiciones de tipo caracter vacías, por ejemplo: Local aEmiRec := {"","","",""} y solo actualizar la posición que sea personalizar en el nodo. |
Producto | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | |||||||||||||
Segmento: | |||||||||||||
Módulo: | SIGAFAT- Facturación | ||||||||||||
Función: |
| ||||||||||||
País: | México (MEX) | ||||||||||||
Ticket: | No aplica | ||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-20950 |
SITUACIÓN:
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 activar Puntos de Entrada, que permitan las siguientes acciones:
SOLUCIÓN:
En la rutina de Funciones Genéricas de Localizaciones (LOCXFUNA):
Se realizó ajuste para que el Punto de Entrada LOCXCONCEP, permita:
Se activó el Punto de Entrada PEDETIMP, el cual permite:
Modificar en el nodo cfdi:Comprobante\cfdi:Conceptos\cfdi:Concepto el nodo cfdi:Impuestos por ítem.
El punto de Entrada PEDETIMP, recibe 4 parámetros, donde: El primer parámetro es de tipo carácter, con las opciones IT para personalizar el nodo cfdi:Impuestos para Impuestos de Traslados e IR para personalizar el nodo cfdi:Impuestos para Impuestos de Retenciones. El segundo parámetro recibe el valor lógico .T. o .F., que indica si se va a generar la Cadena Original o el XML (.T. es igual a generar la Cadena Original y .F. es igual a generar el XML). El tercer parámetro corresponde del código del Producto. El cuarto parámetro corresponde del número del ítem. El retorno debe ser un arreglo con valores de tipo caracter. |
Se activó el Punto de Entrada PECOMPCON, el cual permite:
El punto de Entrada PECOMPCON, recibe 2 parámetros, donde: El primer parámetro es de tipo carácter, con las opciones IA para personalizar el nodo de Información Aduanera, CP para personalizar el nodo de Cuenta Predial y P para personalizar el nodo de Partes. El segundo parámetro recibe el valor lógico .T. o .F., que indica si se va a generar la Cadena Original o el XML (.T. es igual a generar la Cadena Original y .F. es igual a generar el XML). El retorno debe ser un valor de tipo carácter. |
En la rutinas de Generación de XML para Documentos de Salida (FATSMEX.PRW) y Generación de XML para Documentos de Entrada (FATEMEX.PRW):
Se activó el Punto de Entrada PEXMLDOC, el cual permite:
El punto de Entrada PEXMLDOC, recibe 2 parámetros, donde: El primer parámetro es de tipo caracter, con las siguientes opciones:
El segundo parámetro recibe el valor lógico .T. o .F., que indica si se va a generar la Cadena Original o el XML (.T. es igual a generar la Cadena Original y .F. es igual a generar el XML, y este parámetro no aplica para las opciones ST - Subtotal y T - Total). El retorno debe ser un valor de tipo carácter. |
Para los Puntos de Entrada PECOMPCON, PEXMLDOC, PEDETIMP y LOCXCONCEP se tiene acceso a las tablas SF1 - Encabezado de Fact. de Entrada y SF2 - Encabezado de Fact. de Salida. |
Ejemplos de los Puntos de Entrada:
#include 'protheus.ch' #INCLUDE "FWMVCDEF.CH" #include "FILEIO.CH" User Function PECOMPCON() Local cXMLCon := "" Local cCRLF := (chr(13)+chr(10)) Local cOpc := PARAMIXB[1] //Opción donde IA - Información Aduanera, CP - Cuenta Predial Local lCadO := PARAMIXB[2] //Indica si es Cadena Original .T. = Si y .F. = No Local cSepa := "|" Local cNPed := "23 47 3807 8003832" Local cCtaP := "15956011002" Local cClaveP:= "10101504" Local cNoId := "9642000000000002" Local cCant := "1" Local cUnid := "UN" Local cDesc := "MOUSE" If Alltrim(cEspecie) $ "NF|NCC" If lCadO If cOpc == "IA" //Información Aduanera cXMLCon := StrTran(cNPed," "," ") + cSepa ElseIf cOpc == "CP" //Cuenta Predial cXMLCon := cCtaP + cSepa ElseIf cOpc == "P" //Partes cXMLCon := cClaveP + cSepa + cNoId + cSepa + cCant + cSepa + cUnid + cSepa + cDesc + cSepa EndIf Else If cOpc == "IA" //Información Aduanera cXMLCon := Space(12) + '<cfdi:InformacionAduanera NumeroPedimento="' + cNPed + '"/>' + cCRLF ElseIf cOpc == "CP" //Cuenta Predial cXMLCon := Space(12) + '<cfdi:CuentaPredial Numero="' + cCtaP + '"/>' + cCRLF ElseIf cOpc == "CP" //Cuenta Predial cXMLCon := Space(12) + ' <cfdi:Parte ClaveProdServ="'+ cClaveP +'" NoIdentificacion="'+ cNoId +'" Cantidad="'+ cCant +'" Unidad="'+cUnid+'" Descripcion="'+cDesc+'"/> '+ cCRLF EndIf EndIf EndIf Return cXMLCon |
#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 == "FE" //Fecha de emisión cXMLRet := "" ElseIf cOpc == "FP" //FormaPago cXMLRet := "" ElseIf cOpc == "TC" //TipoCambio cXMLRet := "" ElseIf cOpc == "LE" //LugarExpedición cXMLRet := "" ElseIf cOpc == "MO" //Moneda cXMLRet := "" ElseIf cOpc == "E" //Exportación cXMLRet := IIf(!Empty(SF2->F2_TIPOPE) .And. Alltrim(SF2->F2_ESPECIE) == "NF","02", "01") 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 |
Para las opciones MO para Moneda, TC para TipoCambio y LE para LugarExpedición la rutina FATEMEX.PRW debe tener fecha igual o superior a 13/02/2024 y la rutina FATSMEX.PRW debe tener fecha igual o superior a 15/02/2024. |
#include 'protheus.ch' #INCLUDE "FWMVCDEF.CH" #include "FILEIO.CH" User function LOCXCONCEP() Local cArea := GetArea() Local cCodProd := PARAMIXB[1] // Código del producto. Local cItem := PARAMIXB[2] // Número Item Local aDetFac := {"","",0,"","","","","",""} // Arreglo que contiene la información del producto. /* aDetFac[1] := ClaveProdSer aDetFac[2] := No. Identificación aDetFac[3] := Cantidad aDetFac[4] := ClaveUnidad aDetFac[5] := Unidad aDetFac[6] := Descripcion aDetFac[7] := ValorUnitario aDetFac[8] := Importe aDetFac[9] := Descuento */ If Alltrim(cEspecie) $ "NF|NCC" aDetFac[7] := "0.01" aDetFac[8] := "0.01" aDetFac[9] := "0.00" EndIf RestArea(cArea) Return aDetFac |
#include 'protheus.ch' #INCLUDE "FWMVCDEF.CH" #include "FILEIO.CH" User Function PEDETIMP() Local cOpc := PARAMIXB[1] //Opción donde IA - Información Aduanera, CP - Cuenta Predial Local lCadO := PARAMIXB[2] //Indica si es Cadena Original .T. = Si y .F. = No Local cProd := PARAMIXB[3] //Código del Producto Local cItem := PARAMIXB[4] //Número de ítem Local aImpDet := {} Local cRetImp := "" Local cBaseI := "0.01" Local cImpto := "002" Local cTipoF := "Tasa" Local cTsaC := "0.000000" Local cImpI := "0.00" Local cCRLF := (chr(13)+chr(10)) Local cSepa := "|" If Alltrim(cEspecie) $ "NF|NCC" If lCadO If cOpc == "IT" cRetImp := cBaseI + cSepa + cImpto + cSepa + cTipoF + cSepa + cTsaC + cSepa + cImpI + cSepa EndIf Else If cOpc == "IT" cRetImp := Space(20) + '<cfdi:Traslado Base="' + cBaseI + '" Impuesto="' + cImpto + '" TipoFactor="' + cTipoF + '" TasaOCuota="' + cTsaC + '" Importe="' + cImpI + '"/>' + cCRLF EndIf EndIf aAdd(aImpDet, cRetImp) EndIf Return aImpDet |
Producto | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | ||||||||||
Segmento: | ||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||
Función: |
| |||||||||
País: | México (MEX) | |||||||||
Ticket: | No aplica. | |||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-20951 |
SITUACIÓN:
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 activar Puntos de Entrada, que permitan :
SOLUCIÓN:
En la rutinas de Generación de XML para Documentos de Salida (FATSMEX.PRW) y Generación de XML para Documentos de Entrada (FATEMEX.PRW):
Se activó el Punto de Entrada PEXMLADIC, el cual permite:
La presente funcionalidad se encuentra en fase de desarrollo, y no ha sido liberada de manera oficial, por lo cual, se recomienda seguir utilizando la funcionalidad del uso de los archivos FATSMEX.INI y FATEMEX.ini, para lo cual el parámetro MV_FEXML no debe existir o estar vacío. Para el Puntos de Entrada se tiene acceso a las tablas SF1 - Encabezado de Fact. de Entrada y SF2 - Encabezado de Fact. de Salida. |
Ejemplo de los Puntos de Entrada:
#include "protheus.ch" User Function PEXMLADIC() Local cCRLF := (chr(13)+chr(10)) Local cXMLPE := "" If Alltrim(cEspecie) $ "NF|NCC" cXMLPE += ' <cfdi:Addenda>' + cCRLF cXMLPE += ' <Addenda xmlns:Addenda="http://www.Addenda/" schemaLocation="http://www.addenda.xsd" version="1.0">' + cCRLF cXMLPE += ' <Addenda:Datos>' + cCRLF cXMLPE += ' <Addenda:Detalle>abc</Addenda:Detalle>' + cCRLF cXMLPE += ' </Addenda:Datos>' + cCRLF cXMLPE += ' </Addenda>' + cCRLF cXMLPE += ' </cfdi:Addenda>' + cCRLF EndIf Return cXMLPE |
La variable cEspecie, la cual puede ser utilizada para personalizar para que la funcionalidad aplique solo para ciertos documentos, ya que contiene la especie del documento (por ejemplo NF para Factura de Venta, NDC para Nota de Débito de Cliente o NCC para Nota de Crédito de Cliente). |
Producto | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | ||||||||||||||||
Segmento: | ||||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||
Función: |
| |||||||||||||||
País: | México | |||||||||||||||
Ticket: | No aplica. | |||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-20951 |
SITUACIÓN:
Para la generación de Pedido de Venta, si el parámetro MV_CFDIEXP (¿Genera Complemento de Comercio Exterior en CFDI?) está configurado con el valor .T. y el campo Tipo Opera. (C5_TIPOPE) contiene información, se solicitan los siguientes ajustes:
Para la generación de Factura de Venta (NF), desde la rutina Facturaciones (MATA467), si el parámetro MV_CFDIEXP está configurado con el valor .T. y el campo Tipo Opera. (F2_TIPOPE) es diferente de vacío, se solicitan los siguientes ajustes:
Crear una nueva función que permita sustituir por un espacio cuando existen más de un espacio entre palabra de una cadena de texto.
SOLUCIÓN:
En la rutina de Funciones Genéricas para Documentos Fiscales para México (LOCXMEX):
Se creó la función LxFraccAra(), que retorna la Fracción Arancelaria del campo Fracc Arance (B1_CODICE), realizando búsqueda por el Código del Producto.
Se creÓ la función LxUMFracc(), que retorna la Unidad de Medida Aduanera, obteniendo el valor del campo UnidMedi de la tabla S014 - Catálogo Fraccion Arancelaria del Mantenimiento de Catálogos (Tablas F3H y F3I) que corresponde para la Fracción Arancelaria.
En la rutina Funciones genéricas para Facturación - Mercado Internacional (FATXFUMI):
Se creó la función FxDelExp(), que permite eliminar más de espacio entre palabras en una cadena de texto, y colocando solo un espacio.
En la función FATXMIRECE(), al generar el atributo Nombre, del nodo cfdi:Receptor, se hace uso de la función FxDelExp, para dar tratamiento a los espacios de más y que solo se muestre un espacio en la separación de palabas que contiene el Nombre del Cliente (el ajuste aplica cuando el parámetro MV_FEXML está configurado con el parámetro con el valor S y también se utiliza para la cadena original).
En los archivos de la Generación de XML para Documentos de Salida (FATSMEX.INI) y Generación de XML para Documentos de Entrada (FATEMEX.INI):
Se agrega el uso de la función FxDelExp, para dar tratamiento a los espacios de más y que solo se muestre un espacio en la separación de palabas que contiene el Nombre del Cliente (el ajuste aplica cuando el parámetro MV_FEXML está configurado con el parámetro con el valor S y también se utiliza para la cadena original).
DICCIONARIO DE DATOS:
Configurar los siguientes Disparadores en el archivo SX7 - Disparadores:
Campo | C6_PRODUTO |
Secuencia | 007 |
Cnt. Dominio | C6_FRACCA |
Tipo | 1 - Primario |
Regla | IIf(FINDFUNCTION("LxFraccAra"),LxFraccAra(M->C6_PRODUTO, M->C5_TIPOPE),"") |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Campo | C6_PRODUTO |
Secuencia | 008 |
Cnt. Dominio | C6_UNIADU |
Tipo | 1 - Primario |
Regla | IIf(FINDFUNCTION("LxUMFracc"),LxUMFracc(M->C6_FRACCA, M->C5_TIPOPE),"") |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Campo | C6_FRACCA |
Secuencia | 002 |
Cnt. Dominio | C6_UNIADU |
Tipo | 1 - Primario |
Regla | IIf(FINDFUNCTION("LxUMFracc"),LxUMFracc(M->C6_FRACCA, M->C5_TIPOPE),"") |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Campo | D2_COD |
Secuencia | 008 |
Cnt. Dominio | D2_FRACCA |
Tipo | 1 - Primario |
Regla | IIf(FINDFUNCTION("LxFraccAra"),LxFraccAra(M->D2_COD, M->F2_TIPOPE),"") |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Campo | D2_COD |
Secuencia | 009 |
Cnt. Dominio | D2_UNIADU |
Tipo | 1 - Primario |
Regla | IIf(FINDFUNCTION("LxUMFracc"),LxUMFracc(M->D2_FRACCA, M->F2_TIPOPE),"") |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Campo | D2_FRACCA |
Secuencia | 002 |
Cnt. Dominio | D2_UNIADU |
Tipo | 1 - Primario |
Regla | IIf(FINDFUNCTION("LxUMFracc"),LxUMFracc(M->D2_FRACCA, M->F2_TIPOPE),"") |
Posiciona | 2 - No |
Alias | |
Orden | 0 |
Clave | |
Condición |
Configurar el siguiente campo en el archivo SX3 - Campos:
Campo | B1_CODICE |
Tipo | C - Caracter |
Tamaño | 10 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Fracc Arance |
Desc. Español | Fracción arancelaria |
Consulta Estándar | MEX014 |
Validación | Vazio() .or. ValidF3I("S014", M->B1_CODICE,1,8) |
Obligatorio | No |
Usado | Si |
Exhibe en Browse | No |
Help | Fracción Arancelaria aplicable a la mercancía según corresponda, conforme a la TIGIE. |
Producto | TOTVS Backoffice | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||
Segmento: | Backoffice | |||||||||
Módulo: | SIGAFAT - Facturación | |||||||||
Función: |
| |||||||||
País: | México | |||||||||
Ticket: | No aplica. | |||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-20893 |
SITUACIÓN
Se requiere que al realizar la Cancelación del CFDI de los documentos "Factura de Venta (NF), Nota de Débito y Crédito (NDC/NCC)", guarde los acuses de cancelación así como XML y PDF del documento cancelado en una carpeta local y no solo en el servidor.
SOLUCIÓN
En las rutinas de Cancelación CFDI (FISA817):
Se crea función F817CopAcu() que guarda en la ruta indicada en el parámetro MV_CFDCARF los archivos ".sol", ".xml", ".pdf" de los documentos Factura de Venta (NF), Nota de Débito y Crédito (NDC/NCC)", cuando se realiza la cancelación de estos y envía mensaje al usuario indicando la ruta donde se almacenaron dichos archivos.
En las rutinas de Timbrado CFDI (FISA800):
Se realiza ajuste para cuando se cancela un documento con tipo de motivo de cancelación "01" y se realiza el timbrado del nuevo documento que lo sustituye, guarde en la ruta indicada en el parámetro MV_CFDCARF los archivos ".sol", ".xml", ".pdf" del documento que fue cancelado y envía mensaje con el folio y ruta donde se almacenaron dichos archivos.
PROCEDIMIENTO
INFORMACIÓN ADICIONAL
Parámetros (SX6)
Ítems/Carpetas | Descripción |
---|---|
Tipo | C |
Nombre de Var. | MV_CFDCARF |
Descripción | Ruta local donde se guardarán los acuses de los documentos cancelados (.sol,.xml y .pdf) |
Cont. Esp |
Producto | TOTVS Backoffice | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||
Segmento: | Backoffice | |||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||
Función: |
| |||||||||||||||
País: | México | |||||||||||||||
Ticket: | 18161768 | |||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-21137 |
SITUACIÓN
Se solicita realizar ajustes para permitir al usuario modificar el valor del atributo ObjetoImp, para el timbrado de Facturas de Venta (NF) de tipo Ingreso (Normal), permitiendo utilizar los valores que se definen en el catálogo del SAT c_ObjetoImp:
SOLUCIÓN
En la rutina de Funciones Genéricas de Notas Fiscales (LOCXFUNA):
Se realizaron ajustes para:
En el archivo de Funciones Genéricas para Documentos Fiscales para México (LOCXMEX):
Se realizaron los siguientes ajustes:
La funcionalidad del campo Objeto Imp (D2_NIT), solo aplica para Facturas y en caso de no existir el campo o estar vacío, se tomará la funcionalidad anterior para la generación del nodo de Impuestos por Concepto. |
INFORMACIÓN ADICIONAL
En el archivo FATSMEX.INI, se deberán realizar los siguientes ajustes:
[XXX POSICIONAMENTOS] [XXX INICIALIZACION] (PRE) fImptosD(SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),"SD2", SF2->F2_GLOBAL == "1",@(_aTotal[036]),_aTotal[104],@_aTotal[037], @_aTotal[038], ,@_aTotal[115]) [SD2 CADENAORIGINAL_SELLO] //Cadena Original | Complemento de Comercio Exterior (Mercancias) ///////////DATOS DE LA FACTURA///////////////// //////////////////////CFDI Relacionados////////////////////////// ///////////DATOS DEL EMISOR/////////////////////// //////////////////////DATOS DEL RECEPTOR////////////////////////// (PRE) (cCadOrig += fXMLFUN("CO",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) (POS) IIf(lCCCE, cCadOrig += "1.1" + _aTotal[098], "") //Emisor //Receptor Domicilio (POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "") //Carta Porte (POS) (cCadOrig += fXMLFUN("IL",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.)),.T.) (POS) cCadOrig += _aTotal[098] //SELLO (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE) .And. _aTotal[114], .T., .F.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (POS) cNodoCCE := IIf(lCCCE, ' <cce11:ComercioExterior' , "") [XXX CFDIREL] [XXX FACTURA GLOBAL] [XXX EMISOR] [XXX RECEPTOR_CLIENTE] (PREREG) AllTrim(SF2->F2_ESPECIE) <> "NDI" (POS) cNodoCCE += IIf(lCCCE, ' <cce11:Emisor' , "") (POS) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) [SD2 CONCEPTO] (PRE) DbGoTop() (PREREG) (cNodoCCE += IIf(lCCCE, ' <cce11:Mercancia' , ""),.T.) (POS) (cNodoCCE += IIf(lCCCE, ' </cce11:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) (POS) (_aTotal[034] := fXMLFUN("CO",.F., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) (PREREG) (_aTotal[001] := _aTotal[034] ,.T.) [XXX IMPUESTOS] //IMPUESTOS LOCALES// [XXX COMPLEMENT] [XXX COMERCIOEX] [XXX CARTAPORTE] [XXX IMPUESTOLOC] [XXX LEYENDASFIS]
//[XXX CAD_ORIG] [XXX FACTURA] |
Catálogo de Objeto Impuesto:
Actualizaciones en la tabla SXB-Consultas Estándar.
Creación de la consulta específica MEX031 - Objeto Impuesto.
Alias | Tipo | Secuencia | Columna | Descripción | Contenido |
---|---|---|---|---|---|
MEX031 | 1 | 01 | RE | Objeto Impuesto | F3I |
MEX031 | 2 | 01 | 01 | F812SXB("S031","Codigo") | |
MEX031 | 5 | 01 | VAR_IXB |
Activar el siguiente campo en la tabla SD2 - Ítems de Venta de la Fact:
Campo | Contenido |
---|---|
Campo | D2_NIT |
Tipo | 1 - Caracter |
Tamaño | 2 |
Decimal | 0 |
Formato | @! |
Contexto | Real |
Propiedad | Modificar |
Tit. Español | Objeto Imp |
Des. Español | Objeto Impuesto |
Validación | Vazio() .or. ValidF3I("S031", M->D2_NIT,1,2) |
Usado | Si |
Help | Indica si el Concepto del CFDI es Objeto de Impuesto, y el valor debe corresponder a un valor del catálogo c_ObjetoImp definido por el SAT. (Tabla S031 - Catálogo Objeto Impuesto), si el código es 01, 03 o 04 no se generará el nodo de Impuestos del Concepto. |
Producto | TOTVS Backoffice | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||||||||||||||
Segmento: | Backoffice | |||||||||||||||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||||||||||||||
Función: |
| |||||||||||||||||||||||||||
País: | MEX | |||||||||||||||||||||||||||
Ticket: | 19082264 | |||||||||||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-22099 |
SITUACIÓN/REQUISITO
De acuerdo a lo publicado por el SAT el 18/01/2024 entró en vigor los cambios del complemento de comercio exterior 2.0, sin embargo actualmente el sistema solo considera la versión 1.1 de dicho complemento. Por lo anterior, se solicita la funcionalidad y/o documentación para implementar el complemento de comercio exterior 2.0.
Sustento Legal:
Factura de Comercio Exterior 2.0 SAT
Estándar del Complemento de Comercio Exterior 2.0
SOLUCIÓN
Dentro de la rutina Funciones Genéricas para Documentos Fiscales para México(LOCXMEX), se realizan los siguientes ajustes:
Dentro de la rutina Funciones genéricas para Facturación - Mercado Internacional(FATXFUMI), se realizan los siguientes ajustes:
INFORMACIÓN ADICIONAL
Configuración de archivos INI.
En los script de "Generación de XML de documentos de salida."(FATSMEX.INI) y "Generación de XML de documentos de entrada."(FATEMEX).INI) se realizan los ajustes:
|
|
|
A continuación se muestran marcados con color rojo los cambios que son necesarios realizar en los archivos de configuración FATSMEX.ini y FATEMEX.ini:
//FATSMEX.INI V4.0 --- Modelo 2022 [XXX POSICIONAMENTOS] [XXX INICIALIZACION] (PRE) fImptosD(SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA,IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),"SD2", SF2->F2_GLOBAL == "1",@(_aTotal[036]),_aTotal[104],@_aTotal[037], @_aTotal[038], ,@_aTotal[115]) [SD2 CADENAORIGINAL_SELLO] //Cadena Original | Complemento de Comercio Exterior (Mercancias) ///////////DATOS DE LA FACTURA///////////////// //////////////////////CFDI Relacionados////////////////////////// ///////////DATOS DEL EMISOR/////////////////////// //////////////////////DATOS DEL RECEPTOR////////////////////////// (PRE) (cCadOrig += fXMLFUN("CO",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) (POS) IIf(lCCCE, cCadOrig += "2.0" + _aTotal[098], "") //Emisor //Receptor Domicilio //Destinatarios (POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "") //Carta Porte (POS) (cCadOrig += fXMLFUN("IL",.T., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.)),.T.) (POS) cCadOrig += _aTotal[098] //SELLO (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF2->F2_TIPOPE) .And. _aTotal[114], .T., .F.) (PRE) If(AllTrim(SF2->F2_ESPECIE)=="NDI",SYA->(MsSeek(xFilial("SYA")+SA2->A2_PAIS)) , .T.) (POS) cNodoCCE := IIf(lCCCE, ' <cce20:ComercioExterior' , "") [XXX CFDIREL] [XXX FACTURA GLOBAL] [XXX EMISOR] [XXX RECEPTOR_CLIENTE] (PREREG) AllTrim(SF2->F2_ESPECIE) <> "NDI" (POS) cNodoCCE += IIf(lCCCE, ' <cce20:Emisor' , "") [SD2 CONCEPTO] (PRE) DbGoTop() (PREREG) (cNodoCCE += IIf(lCCCE, ' <cce20:Mercancia' , ""),.T.) (POS) (cNodoCCE += IIf(lCCCE, ' </cce20:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) (POS) (_aTotal[034] := fXMLFUN("CO",.F., IIf(ALLTRIM(SF2->F2_TIPODOC) == "21",.T.,.F.),_aTotal[104]),.T.) (PREREG) (_aTotal[001] := _aTotal[034] ,.T.) [XXX IMPUESTOS] //IMPUESTOS LOCALES// [XXX COMPLEMENT] [XXX COMERCIOEX] [XXX CARTAPORTE] [XXX IMPUESTOLOC] [XXX LEYENDASFIS]
//[XXX CAD_ORIG] [XXX FACTURA] |
//FATEMEX.INI V4.0 --- Modelo 2022 [XXX INICIALIZACION] (PREREG) FsQuery(_aTotal[097],1,"D1_DOC='" + SF1->F1_DOC + "' AND D1_SERIE='" + SF1->F1_SERIE + "' AND D1_FORNECE='" + SF1->F1_FORNECE + "' AND D1_LOJA='" + SF1->F1_LOJA + "'","SD1->D1_DOC=SF1->F1_DOC .AND. SD1->D1_SERIE=SF1->F1_SERIE .AND. SD1->D1_FORNECE=SF1->F1_FORNECE .AND. SD1->D1_LOJA=SF1->F1_LOJA","D1_ITEM") .And. .T. (PRE) fImptosD(SF1->F1_DOC,SF1->F1_SERIE,SF1->F1_FORNECE,SF1->F1_LOJA, .F. , "SD1", .F., @(_aTotal[036])) [SD1 CADENAORIGINAL_SELLO] //Cadena Original | Complemento de Comercio Exterior //Cadena Original | Complemento de Comercio Exterior ///////////DATOS DE LA FACTURA///////////////// //////////////////////CFDI Relacionados////////////////////////// ///////////DATOS DEL EMISOR/////////////////////// //////////////////////DATOS DEL RECEPTOR////////////////////////// (PRE) (cCadOrig += fXMLFUN("CO",.T., .F. ,.F.)) //Cadena Original | Complemento de Comercio Exterior //Emisor //Receptor Domicilio (POS) cCadOrig += IIf(!Empty(cCadOriCCE), cCadOriCCE, "") (POS) cCadOrig += _aTotal[098] //SELLO [XXX CABECERA] [XXX FACTURA] (PRE) lCCCE := IIf(SuperGetMV("MV_CFDIEXP",.F.,.F.) .And. !Empty(SF1->F1_TIPOPE) .And. _aTotal[104], .T., .F.) (PRE) If(AllTrim(SF1->F1_ESPECIE)=="NCC",SYA->(MsSeek(xFilial("SYA")+SA1->A1_PAIS)) , .T.) (POS) cNodoCCE := IIf(lCCCE, ' <cce20:ComercioExterior' , "") [XXX CFDIREL] [XXX EMISOR] [XXX RECEPTOR_CLIENTE] (PREREG) AllTrim(SF1->F1_ESPECIE) == "NCC" //Emisor //Receptor //Domicilio Receptor (POS) (cNodoCCE += IIf(lCCCE, ' <cce20:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) [SD1 CONCEPTO] (PRE) DbGoTop() (POS) (cNodoCCE += IIf(lCCCE, ' </cce20:Mercancias>' + ( chr(13)+chr(10) ), ""),.T.) (POS) (_aTotal[034] := fXMLFUN("CO",.F., .F. ,.F.)) [XXX IMPUESTOS] //IMPUESTOS LOCALES// [XXX COMPLEMENT] [XXX COMERCIOEX] [XXX IMPUESTOLOC] [XXX COMPLEMENT] [XXX CAD_ORIG] [XXX FACTURA] |
Producto | TOTVS Backoffice | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||||||||||||||
Segmento: | Backoffice | ||||||||||||||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||||||||||||||
Función: |
| ||||||||||||||||||||||||
País: | México | ||||||||||||||||||||||||
Ticket: | 18161768 | ||||||||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-21137 (pacote 031390) |
SITUACIÓN
Se solicita realizar ajustes para permitir al usuario modificar el valor del atributo ObjetoImp, para el timbrado de Facturas de Venta (NF) de tipo Ingreso (Normal) generadas a partir de un Pedido de Venta (MATA410), permitiendo utilizar los valores que se definen en el catálogo del SAT c_ObjetoImp:
SOLUCIÓN
En el archivo de Funciones Genéricas para Documentos Fiscales para México (LOCXMEX):
Se realizaron los siguientes ajustes:
En el archivo de Generación de Notas (MATA468N):
Se realizaron los siguientes ajustes:
IMPORTANTE La funcionalidad del campo Objeto Imp (C6_NIT), en caso de no existir el campo o estar vacío, se tomará la funcionalidad anterior para la generación del nodo de Impuestos por Concepto. |
INFORMACIÓN ADICIONAL
Realizar los cambios de INI y diccionario indicados en la sección 5.17 Ajustes en atributo "ObjetoImp" de la NF
Activar el siguiente campo en la tabla SC6 - Ítems de Pedido de Venta:
Campo | Contenido |
---|---|
Validación | Vazio() .or. ValidF3I("S031", M->C6_NIT,1,2) |
Usado | Si |
Tit. Español | Objeto Imp |
Tipo | 1 - Caracter |
Tamaño | 2 |
Propiedad | Modificar |
Help | Indica si el Concepto del CFDI es Objeto de Impuesto, y el valor debe corresponder a un valor del catálogo c_ObjetoImp definido por el SAT. (Tabla S031 - Catálogo Objeto Impuesto), si el código es 01, 03 o 04 no se generará el nodo de Impuestos del Concepto. |
Formato | @! |
Des. Español | Objeto Impuesto |
Decimal | 0 |
Contexto | Real |
Campo | C6_NIT |
Producto | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | |||||||||||||
Segmento: | |||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||
Función: |
| ||||||||||||
País: | México (MEX) | ||||||||||||
Ticket: | No aplica. | ||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-23099 |
SITUACIÓN:
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:
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:
Calle
Colonia
Municipio
Estado
Pais
CodigoPostal
Calle
NumeroExterior
NumeroInterior
Colonia
Municipio
Estado
Pais
CodigoPostal
NoIdentificacion
FraccionArancelaria
CantidadAduana
UnidadAduana
ValorUnitarioAduana
ValorDolares
El punto de Entrada PEXMLCCE, recibe 2 parámetros, donde: El primer parámetro es de tipo caracter, con las siguientes opciones:
El segundo parámetro recibe es un arreglo de información, el cual cuenta con los datos del Emisor, Receptos o Mercancia dependiendo del valor del primer parámetro:
El retorno debe ser el arreglo con las mismas dimensiones y solo de debe personalizar los datos que se requieran, los demás datos se quedarán con el valor estándar. |
EJEMPLO DE PUNTO DE ENTRADA:
#include 'protheus.ch' #INCLUDE "FWMVCDEF.CH" #include "FILEIO.CH" User Function PEXMLCCE() Local cOpc := PARAMIXB[1] //Opión donde EM - Información Emisor Complemento de comercio, // RE - Información Receptor Complemento de comercio // ME - Información Mercancia Complemento de comercio Local aData := PARAMIXB[2] //Arreglo con los datos para personalización. //Datos Emisor If cOpc == "EM" Endif //Datos Receptor If cOpc == "RE" //Personalización atributo CodigoPostal aData[11] := Alltrim(SA1->A1_COD_MUN) Endif //Datos Mercancia If cOpc == "MER" Endif Return aData |
A continuación se encuentran las instrucciones para la actualización de los ejecutables homologados de los diferentes PAC's (Proveedores Autorizados de Certificados), con los que TOTVS mantiene los servicios de timbrado de CFDI's (Comprobantes Fiscales Digitales).
Los ejecutables se encuentra dentro de la carpeta RDMAKES_LOCALIZACIONES, en la ruta México\CFDI. Dentro de esta ruta se encuentran las carpetas comprimidas(archivos .zip) con el nombre de cada PAC, como se muestra en la siguiente imagen: