0.1.2 • Published 5 months ago

nodefact v0.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

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