Solución Factible Home
Login
Solución Factible®:Integration Center [SF:IC]
Buscar en SF:IC
 
  • Home
  • Emisión
  • Timbrado
  • Recepción
  • Autofactura
  • Validador CFD
Inicio  |  Timbrado  |  1.3. Cadena Original
  • Home
  • Emisión
  • Timbrado
  • Recepción
  • Autofactura
  • General
  • Herramientas
  • Validador CFD
Contenidos del capítulo
  • 1.3. Cadena Original
    • 1.3.1 Diagrama
    • 1.3.2. Ejemplos de código
    • 1.3.3. Herramienta

1.3. Cadena Original

De acuerdo con el SAT la cadena original se entiende como:

"La secuencia de datos formada con la información contenida dentro de la factura electrónica, establecida en el Rubro C del Anexo 20 de la Resolución Miscelánea Fiscal."

La cadena original se genera procesando la factura electrónica en formato .XML (o cualquier otro comprobante fiscal digital CFD) con una plantilla XSL o XSLT (es el mismo tipo de archivo, se le conoce como XSLT, pero se acostumbra dejar las extensiones de archivos con 3 letras por eso el XSL) que brinda el SAT de acuerdo a la versión de CFD que se quiera obtener.

La cadena original es un elemento muy importante y delicado de el comprobante fiscal digital, en ésta se incluye información que integra a la factura es por eso que su generación debe ser con sumo cuidado y para esto es preferible usar herramientas previamente aprobadas como librerías (JAR o DLL).

A continuación se muestra un ejemplo de como obtener la cadena original usando los siguientes elementos que brinda el SAT:

  • cadenaoriginal_3_0.xslt
  • ejemplo1 cfdv3.xml
  • En caso de no encontrar los archivos, puede descargarlos haciendo click aqui

Otros archivos con los que hacer pruebas:

  • cadenaoriginal_3_2.xslt
  • cfdv32.xsd

Resultado:

||3.0|2010-03-06T20:38:12|ingreso|PAGO EN UNA SOLA EXHIBICION|488.50|488.50|PPL961114GZ1|PHARMA PLUS SA DE CV|AV. RIO MIXCOAC|No. 140|ACACIAS|BENITO JUAREZ|MEXICO, D.F.|Mexico|03240|AV. UNIVERSIDAD|1858|OXTOPULCO|DISTRITO FEDERAL|Mexico|03910|PEPJ8001019Q8|JUAN PEREZ PEREZ|AV UNIVERSIDAD|16 EDF 3|DPTO 101|COPILCO UNIVERSIDAD|COYOACAN|DISTRITO FEDERAL|Mexico|04360|1.0|CAPSULAS|VIBRAMICINA 100MG 10|244.00|244.00|1.0|BOTELLA|CLORUTO 500M|137.93|137.93|1.0|TABLETAS|SEDEPRON 250MG 10|84.50|84.50|IVA|0.00|0.00|IVA|16.00|22.07||

Para obtener el resultado de cadena original en el ejemplo anterior se uso xsltproc:

  • Windows: Descargar las herramientas en el siguiente enlace libxml
  • Linux: Ya estan instaladas por default
$ xsltproc cadenaoriginal_3_0.xslt ejemplo1cfdv3.xml

1.3.1. Diagrama del proceso de generación

diagrama generar cadena original

1.3.2. Ejemplos de Código

Generar Cadena Original con JAVA

        import javax.xml.transform.Transformer;
        import javax.xml.transform.TransformerConfigurationException;
        import javax.xml.transform.TransformerException;
        import javax.xml.transform.TransformerFactory;
        import javax.xml.transform.stream.StreamResult;
        import javax.xml.transform.stream.StreamSource;

        public class Main{

            public static void main(String[] args){
                StreamSource sourceXSL = new StreamSource(new File("C:/SAT/cadenaoriginal_3_0.xslt"));
                StreamSource sourceXML = new StreamSource(new File("C:/SAT/ejemplo1cfdv3.xml"));

                TransformerFactory tFactory = TransformerFactory.newInstance();
                Transformer transformer = tFactory.newTransformer(sourceXSL);

                OutputStream output = new ByteArrayOutputStream();

                transformer.transform(sourceXML, new StreamResult(output));

                System.out.println(new String(((ByteArrayOutputStream) output).toByteArray()));
            }
        }
                

Generar Cadena Original con C# (CSharp)

        using System;
        using System.Xml.XPath;
        using System.Xml.Xsl;
        using System.Xml;
        using System.IO;

        namespace pruebas
        {
            public class GeneradorCadenas 
            {
                public GeneradorCadenas()
                {
                    //Cargar el XML
                    StreamReader reader = new StreamReader(@"C:\Users\Solucion\Factura_2319E_2012-02-20.xml");
                    XPathDocument myXPathDoc = new XPathDocument(reader);
                    
                    //Cargando el XSLT
                    XslCompiledTransform myXslTrans = new XslCompiledTransform();
                    myXslTrans.Load(@"C:\Users\Solucion\cadenaoriginal_3_0.xslt");
                    
                    StringWriter str = new StringWriter();
                    XmlTextWriter myWriter = new XmlTextWriter(str);

                    //Aplicando transformacion
                    myXslTrans.Transform(myXPathDoc, null, myWriter);

                    //Resultado
                    string result = str.ToString(); 


                    //Fin del programa.
                }
            }
        }

                

1.3.3. Herramienta

Generador de Cadena Original

Ésta herramienta toma una factura electrónica (CFD) (.xml) y obtiene su cadena original aplicando el XSLT que haya elegido en: Version de cadena

  • Modalidad "Generar", Procesa un XML previamente seleccionado, calcula su cadena original y la muestra
  • Modalidad "Descargar", Procesa un XML previamente seleccionado, calcula su cadena original y descarga un archivo .txt con la cadena
comments powered by Disqus