0.1.2 • Published 5 months ago
nodefact v0.1.2
NodeFact
Biblioteca para facturación electrónica en Perú, compatible con los requerimientos de SUNAT.
Instalación
npm install nodefact
Características
- Generación de XMLs según los esquemas UBL 2.1
- Firma digital de documentos XML
- Comunicación con los servicios web de SUNAT
- Validación de documentos
- Generación de representaciones imprimibles (PDF)
Documentos Soportados
- Facturas y Boletas (UBL 2.1)
- Notas de Crédito (UBL 2.1)
- Notas de Débito (UBL 2.1)
- Guías de Remisión (UBL estándar y 2022)
- Comprobantes de Retención
- Comprobantes de Percepción
- Resúmenes Diarios
- Comunicaciones de Baja
Uso Básico
Generación de XML
import { generateXML } from 'nodefact';
// Datos de la factura
const invoiceData = {
// ... datos de la factura
};
// Generar XML
const xml = generateXML(invoiceData, '01'); // 01 = Factura
Firma Digital
import { signXml } from 'nodefact';
// Opción 1: Usando archivos separados para clave privada y certificado
const signOptions = {
keyFile: 'path/to/private.key',
certFile: 'path/to/certificate.pem',
password: 'password'
};
// Opción 2: Usando un único archivo PEM que contiene tanto la clave privada como el certificado
// const signOptions = {
// pemFile: 'path/to/certificate.pem',
// password: 'password'
// };
// Firmar XML
const result = await signXml(xml, signOptions);
if (result.success) {
console.log('XML firmado:', result.signedXml);
} else {
console.error('Error al firmar:', result.error);
}
Envío a SUNAT
import { SunatEndpoints, createSunatClient } from 'nodefact';
// Crear cliente SUNAT
const client = createSunatClient({
endpoint: SunatEndpoints.HOMOLOGACION_FACTURA,
credentials: {
ruc: '20123456789',
usuario: 'MODDATOS',
clave: 'moddatos'
}
});
// Enviar documento
const result = await client.sendBill('20123456789-01-F001-1.zip', base64Content);
if (result.success) {
console.log('Documento aceptado:', result.cdr);
} else {
console.error('Error al enviar:', result.error);
}
Generación de PDF
import { generatePdf } from 'nodefact';
// Generar PDF
const result = await generatePdf(invoiceData, {
outputPath: 'factura.pdf',
logo: 'path/to/logo.png'
});
if (result.success) {
console.log('PDF generado en:', result.path);
} else {
console.error('Error al generar PDF:', result.error);
}
Licencia
MIT