@nodecfdi/cfdi-expresiones
Library to generate expressions for CFDI 4.0, CFDI 3.3, CFDI 3.2, RET 2.0 and RET 1.0
Esta librería contiene objetos de ayuda para crear expresiones de CFDI 3.2, CFDI 3.3, CFDI 4.0, RET 2.0 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:
- Generar el código QR de una representación impresa de un CFDI o RET.
- Consultar el WebService del SAT de estado de un CFDI.
Ejemplo de expresión para CFDI 3.3 && CFDI 4.0:
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
Ejemplo de expresión para RET 2.0:
https://prodretencionverificacion.clouda.sat.gob.mx/?id=ad662d33-6934-459c-a128-BDf0393f0f44&re=XAXX010101000&nr=12345678901234567890&tt=1234567890.12&fe=/OAgdg==
Instalación
NPM
npm i @nodecfdi/cfdi-expresiones --save
YARN
yarn add @nodecfdi/cfdi-expresiones
PNPM
pnpm add @nodecfdi/cfdi-expresiones
CDN - Browser
Usa la versión mas reciente publicada cambiando <latest-version>
por la última version. Ex. ...cfdi-expresiones@2.1.6/dist...
<script src="https://unpkg.com/@nodecfdi/cfdi-expresiones@<latest-version>/dist/cfdi-expresiones.global.js"></script>
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/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. Para browser se recomienda usar los nativos del Api Web.
Soporte
Puedes obtener soporte abriendo un ticket en Github.
Adicionalmente, esta librería pertenece a la comunidad OcelotlStudio, así que puedes usar los mismos canales de comunicación para obtener ayuda de algún miembro de la comunidad.
Compatibilidad
Esta librería se mantendrá compatible con al menos la versión con soporte activo de Node más reciente.
También utilizamos Versionado Semántico 2.0.0 por lo que puedes usar esta librería sin temor a romper tu aplicación.
Contribuciones
Las contribuciones con bienvenidas. Por favor lee CONTRIBUTING para más detalles y recuerda revisar el archivo CHANGELOG.
Copyright and License
The @nodecfdi/cfdi-expresiones
library is copyright © NodeCfdi - OcelotlStudio and licensed for use under the MIT License (MIT). Please see LICENSE for more information.