@nodecfdi/cfdi-expresiones

Librería que contiene objetos de ayuda para crear expresiones de CFDI 3.2, CFDI 3.3 y RET 1.0 de acuerdo a la información técnica del SAT en el Anexo 20.

Usage no npm install needed!

<script type="module">
  import nodecfdiCfdiExpresiones from 'https://cdn.skypack.dev/@nodecfdi/cfdi-expresiones';
</script>

README

@nodecfdi/cfdi-expresiones

Source Code Software License Latest Version Discord

Library to generate expressions for CFDI 3.3, CFDI 3.2 and RET 1.0

:us: The documentation of this project is in spanish as this is the natural language for intended audience.

:mexico: La documentación del proyecto está en español porque ese es el lenguaje principal de los usuarios.

Esta librería contiene objetos de ayuda para crear expresiones de CFDI 3.2, CFDI 3.3 y RET 1.0 de acuerdo a la información técnica del SAT en el Anexo 20. Librería inspirada por la versión para php https://github.com/phpcfdi/cfdi-expresiones

Estas expresiones se utilizan principalmente para dos motivos:

  1. Generar el código QR de una representación impresa de un CFDI o RET.
  2. Consultar el WebService del SAT de estado de un CFDI.

Ejemplo de expresión para CFDI 3.3:

https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=CEE4BE01-ADFA-4DEB-8421-ADD60F0BEDAC&re=POT9207213D6&rr=DIM8701081LA&tt=2010.01&fe=/OAgdg==

Ejemplo de expresión para CFDI 3.2:

?re=AAA010101AAA&rr=COSC8001137NA&tt=0000001234.567800&id=CEE4BE01-ADFA-4DEB-8421-ADD60F0BEDAC

Ejemplo de expresión para RET 1.0:

?&re=XAXX010101000&nr=12345678901234567890%tt=1234567890.123456&id=ad662d33-6934-459c-a128-BDf0393f0f44

Instalación

npm i @nodecfdi/cfdi-expresiones --save

o

yarn add @nodecfdi/cfdi-expresiones

Ejemplo básico de uso

Dado que en node como tal no se tiene acceso al api del navegador, más bien es un ambiente de servidor, no tenemos acceso a Document, por lo que para poder pasar el document a la lib usaremos la lib xmldom, que nos permitirá crear nuestro documento y pasárselo a esta lib.

import {readFileSync} from 'fs';
import {DiscoverExtractor} from '@nodecfdi/cfdi-expresiones';
import {DOMParser} from 'xmldom';
// creamos el extractor
const extractor = new DiscoverExtractor();
// Accedemos al contenido en nuestro archivo XML
const content = readFileSync('archivo-cfdi.xml').toString();
// generamos el documento con ayuda de DOMParser
const document = new DOMParser().parseFromString(content, 'text/xml');
// obtenemos la expresión
const expression = extractor.extract(document);
// y también podemos obtener los valores inviduales
const values = extractor.obtain(document);

Nota: Actualmente la librería requiere que le pases un objeto de tipo Document, existen muchas libs en node que te dan el objeto que implementa esa interfaz, en esta lib usamos para pruebas la librería xmldom. Y se recomienda usar dicha lib para evitar cualquier error.