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)
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.
- 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
Para instalar el módulo en su proyecto node, ejecute el siguiente comando:
npm install facturacionelectronicapy-ts-xmlgen
Cuando se produce un error puede ser una instancia de Error
(error imprevisto) o una instancia de ZodError (error de validación).
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.
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);
}
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);
}
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);