UNPKG

facturacionelectronicapy-ts-xmlgen

Version:

Genera el contenido del archivo XML del Documento electrónico exigido por la SET

124 lines (88 loc) 5.62 kB
# Facturación Electrónica - Generación de XML para la SET (Paraguay) Módulo NodeJS que genera el **archivo XML** para enviar a la **SET** _(Subsecretaria de Estado de Tributación del Ministerio de Hacienda)_ para el proceso y generación del documento electrónico, a partir de una estructura de datos en formato JSON. Basado en la [documentación técnica de e-kuatia (Manual Técnico: **150**)](https://www.dnit.gov.py/web/e-kuatia/documentacion-tecnica) Este paquete pretende servir de **modelo de transferencia estandarizado** para la comunicación con la **SET** contemplando la totalidad de los campos exigidos para cada bloque y tipos de documentos electrónicos. El mismo es utilizado y mantenido por el autor y otorgado a la comunidad de desarrolladores de forma gratuita bajo licencia **MIT** El módulo está preparado de forma a proveer una fácil integración dentro de su entorno **NodeJS** y con cualquier otro lenguaje, sistema o librería que lo requiera, por ejemplo publicando el método desde un REST. ## Indices - [Características](#características) - [Instalación](#instalación) - [Ejemplo de uso](#ejemplo-de-uso) - [Generación de documento electrónico](#generación-de-documento-electrónico) - [Generación de evento](#generación-de-evento) - [Base de datos](#base-de-datos) - [Estructuras](#estructuras) - [Proyectos relacionados](#proyectos-relacionados) ## Características - Genera el CDC automáticamente de acuerdo a los datos del documento electrónico - Implementa el Algoritmo del dígito verificador del CDC - Permite sobrescribir el valor del código de seguridad, de acuerdo a las necesidades del implementador - Realiza la validación de los datos de entrada conforme el manual técnico de la SET ## Instalación Para instalar el módulo en su proyecto node, ejecute el siguiente comando: ```bash npm install facturacionelectronicapy-ts-xmlgen ``` ## Ejemplo de uso Cuando se produce un error puede ser una instancia de `Error` (error imprevisto) o una instancia de [ZodError](https://zod.dev/?id=error-handling) (error de validación). ### Generación de documento electrónico El método requiere 2 argumentos para general el XML. El primero es un argumento `params` con las informaciones estáticas del Contribuyente emisor, y el segundo es `data` con los datos variables para cada documento electrónico a generar. ```ts import EDocument from 'facturacionelectronicapy-ts-xmlgen'; // incluye todos los esquemas y el tipo de resultado de cada uno import * as EDSchemas from 'facturacionelectronicapy-ts-xmlgen/schemas'; // incluye todos los enums que puedes usar en el documento import * as EDTypes from 'facturacionelectronicapy-ts-xmlgen/types'; const params: EDSchemas.EDocParamsInput = {}; const data: EDSchemas.EDocDataInput = {}; const options: EDTypes.XmlGenConfig = {}; try { const xml = await EDocument.generateXMLDocument(params, data, options); console.log(xml); } catch (error) { console.log(error); } ``` ### Generación de evento ```ts import * as EDTypes from 'facturacionelectronicapy-ts-xmlgen/types'; import EDocument from 'facturacionelectronicapy-ts-xmlgen'; const id: number = 0; const data: EDTypes.EventData = {...}; try { const xml = await EDocument.generateXMLEvent(id, data); console.log(xml); } catch (error) { console.log(error); } ``` ### Base de datos ```ts import EDocument from 'facturacionelectronicapy-ts-xmlgen'; import { EDocumentType } from 'facturacionelectronicapy-ts-xmlgen/types'; // retorna el sevicio de base de datos const db = EDocument.db(); // resultado: ['_id', 'description'] const documentTypesHeaders = db.documentTypes.headers; // tipo del resultado: [EDocumentType, string][] const documentTypesRows = db.documentTypes.data; // resultado: { _id: 1, description: 'Factura electrónica' } const elctronicInvoiceData = await db.eDocumentTypes.findById(EDocumentType.FACTURA_ELECTRONICA); ``` ## Estructuras - [data](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/data.md) - [params](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/params.md) - [cancellationEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/cancellationEvent.md) - [disablingEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/disablingEvent.md) - [conformityEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/conformityEvent.md) - [disconformityEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/disconformityEvent.md) - [ignoranceEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/ignoranceEvent.md) - [notificationEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/notificationEvent.md) - [nominationEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/nominationEvent.md) - [transportUpdateEvent](https://github.com/Gabriel-ISS/facturacionelectronicapy-ts-xmlgen/blob/main/docs/transportUpdateEvent.md) ## Proyectos relacionados - [Generación de XML (proyecto original)](https://www.npmjs.com/package/facturacionelectronicapy-xmlgen) - [Firma de XML](https://www.npmjs.com/package/facturacionelectronicapy-xmlsign) - [Generación de QR](https://www.npmjs.com/package/facturacionelectronicapy-qrgen) - [API de la SET](https://www.npmjs.com/package/facturacionelectronicapy-setapi) - [Generación KUDE](https://www.npmjs.com/package/facturacionelectronicapy-kude)