Error en XSLT del SAT provoca errores en la generación/validación de factura electrónica

Pues nuestros amigos del Sistema de Administración Tributaria (SAT), cambiaron o borraron una dependencia que se encuentra en los archivos de transformación de los XSLT’s que producen la cadena original que sirve para generar el “sello” de la factura electrónica.

Esta error produce que facturas previamente validadas y que aparecían como correctas ahora se vean como inválidas en su propio validador.

La dependencia que no se puede resolver es esta liga referenciada en el archivo cadenaorigina_2_0.xslt:

http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros.xslt

un work-around para que puedan seguir produciendo sus cadenas originales es este:

        <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/ecc/ecc.xslt"/>
        <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/psgecfd/psgecfd.xslt"/>
        <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/donat/donat.xslt"/>
        <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/divisas/divisas.xslt"/>
        <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/ecb/ecb.xslt"/>
        <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/detallista/detallista.xslt"/>
        <xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xslt"/>
        <!-- xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros.xslt"/ -->
        <!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador

Si se fijan, basta comentar esta linea y nosotros podemos generar la cadena original correcta.

Ahora bien, pueden bajar todas las dependencias en un directorio para poder facturar fuera de linea y evitar estos errores del SAT. Obtenemos las cadenas originales:

$ mkdir ~/SAT
$ mkdir ~/SAT/xslt
$ cd ~/SAT/xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/2/cadenaoriginal_2_0/cadenaoriginal_2_0.xslt
$ wget ftp://ftp2.sat.gob.mx/asistencia_servicio_ftp/publicaciones/solcedi/cadenaoriginal_3_0.xslt

Despues bajamos las dependencias:

$ cd ~/SAT/xslt
$ mkdir include
$ cd include
$ wget http://www.sat.gob.mx/sitio_internet/cfd/2/cadenaoriginal_2_0/utilerias.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/ecc/ecc.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/psgecfd/psgecfd.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/donat/donat.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/divisas/divisas.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/ecb/ecb.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/detallista/detallista.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/implocal/implocal.xslt
$ wget http://www.sat.gob.mx/sitio_internet/cfd/terceros/terceros.xslt

Y finalmente editamos nuestros archivos de “cadenaoriginal_2_0.xslt” y “cadenaoriginal_3_0.xslt” para que queden de manera local así:

        <!-- Con el siguiente método se establece que la salida deberá ser en texto -->
        <!-- <xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/> -->
        <xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
        <!--
                En esta sección se define la inclusión de las plantillas de utilería
        -->
        <xsl:include href="/Users/pop/SAT/xslt/include/utilerias.xslt"/>
        <!--
                En esta sección se define la inclusión de las demás plantillas de transformación para
                la generación de las cadenas originales de los complementos fiscales
        -->
        <xsl:include href="/Users/pop/SAT/xslt/include/ecc.xslt"/>
        <xsl:include href="/Users/pop/SAT/xslt/include/psgecfd.xslt"/>
        <xsl:include href="/Users/pop/SAT/xslt/include/donat.xslt"/>
        <xsl:include href="/Users/pop/SAT/xslt/include/divisas.xslt"/>
        <xsl:include href="/Users/pop/SAT/xslt/include/ecb.xslt"/>
        <xsl:include href="/Users/pop/SAT/xslt/include/detallista.xslt"/>
        <xsl:include href="/Users/pop/SAT/xslt/include/implocal.xslt"/>
        <xsl:include href="/Users/pop/SAT/xslt/include/terceros.xslt"/>
        <!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador || -->

En mi caso use el path “/Users/pop/”, pero aquí lo cambian a lo que necesiten.

Otro cambio en el validador es que ya no recibe facturas que usaban MD5, ahora solo revisa SHA1, aunque las facturas anteriores al 1o de enero son válidas con este algoritmo.

Sin embargo el mismo validador del SAT esta afectado por este descuido y esperemos que resuelvan a la brevedad esta problema.

Intenté contactarlos vía el portal del SAT, pero este también esta de vacaciones:

Gracias al cofrade tmsanchez por hacernos notar este error en el sistema del SAT.

Autor: Fernando “El Pop” Romo (pop at cofradia.org), twitter @El_Pop

Author: El Pop

Fernando "El Pop" Romo Nació y creció en la Ciudad de México, estudió y pasó de noche la carrera de Física en la Facultad de Ciencias de la UNAM, en su crisis existencial cursó algo de Ingeniería Electrónica en la UAM. En el pasado trabajó (o eso decía) en el Área de Ingeniería de Sistemas de Banamex, del cual harto del método laboral del banco, renuncia y pone su primera empresa de indias conocida como "Físicos Ingenieros y Matemáticos en Concertación, S.A. de C.V." (FIMAT), por razones de sanidad fiscal la cierra y abre la empresa "Origen de Sistemas, S.A. de C.V.", la cual vende y se va a trabajar a Acer Computec Latino América, toma cargo de la dirección de sistemas y lleva a cabo proyectos en la región. En una nueva crisis existencial, decide dejar Acer y abrir un portal dedicado al Software Libre llamado "La Cofradia Digital". Actualmente es presidente del Grupo de usuarios de Linux de México, A.C. (cargo para el cual ya se considera viejo), Director General de la empresa "Incuvox, S.A. de C.V.", Director de Tecnología de Neocenter, y cuando le queda tiempo libre trabaja en algo que le permita mantener a sus hijos.

2 thoughts on “Error en XSLT del SAT provoca errores en la generación/validación de factura electrónica”

  1. Yo tambien note este error durante el dia de ayer.
    Ademas de corregirlo como se comenta en post, me esta generando saltos de linea en la generacion de la cadena original, apartir del archivo xml, esto solo me lo esta dando en le parte de la razon social, tanto en emisor como receptor.

    Es muy raro, porque hasta diciembre del año pasado, todas las facturas que se generaron en el sistema, en su version impresa, la cadena original salia perfectamente bien.

    Aun sigo haciendo pruebas, para descartar algun fallo en mi codigo ó como consecuencia del error proveniente del SAT.

    Les agradeceria mucho cualquier aviso sobre alguna situacion parecida a la mia.

    Gracias

Leave a Reply