UNPKG

nodefact

Version:

Biblioteca para facturación electrónica en Perú con Node.js. Compatible con UBL 2.1 y servicios web de SUNAT.

90 lines (77 loc) 3.24 kB
/** * Módulo de Plantillas PDF - Exportación de plantillas para representaciones imprimibles * * Este módulo exporta todas las plantillas HTML para la generación de representaciones * imprimibles (PDF) de los documentos electrónicos. */ import * as fs from 'fs'; import * as path from 'path'; // Función para leer una plantilla function readTemplate(filename: string): string { try { // Primero intentamos leer desde el directorio actual (para desarrollo) const templatePath = path.join(__dirname, filename); return fs.readFileSync(templatePath, 'utf8'); } catch (err) { try { // Si falla, intentamos leer desde el directorio src/pdf/templates (para npm) const srcPath = path.join(process.cwd(), 'src', 'pdf', 'templates', filename); return fs.readFileSync(srcPath, 'utf8'); } catch (err2) { // Si ambos fallan, intentamos leer desde node_modules (para npm) const nodeModulesPath = path.join(process.cwd(), 'node_modules', 'nodefact', 'src', 'pdf', 'templates', filename); return fs.readFileSync(nodeModulesPath, 'utf8'); } } } // Plantillas para facturas y boletas export const invoiceTemplate = readTemplate('invoice.html.twig'); // Plantillas para notas de crédito export const creditNoteTemplate = readTemplate('notacr.html.twig'); // Plantillas para notas de débito export const debitNoteTemplate = readTemplate('notadb.html.twig'); // Plantillas para guías de remisión export const dispatchTemplate = readTemplate('dispatch.html.twig'); // Plantillas para comprobantes de retención export const retentionTemplate = readTemplate('retention.html.twig'); // Plantillas para comprobantes de percepción export const perceptionTemplate = readTemplate('perception.html.twig'); // Plantillas para resúmenes diarios export const summaryTemplate = readTemplate('summary.html.twig'); // Plantillas para comunicaciones de baja export const voidedTemplate = readTemplate('voided.html.twig'); // Exportar todas las plantillas en un objeto export const templates = { invoice: invoiceTemplate, creditNote: creditNoteTemplate, debitNote: debitNoteTemplate, dispatch: dispatchTemplate, retention: retentionTemplate, perception: perceptionTemplate, summary: summaryTemplate, voided: voidedTemplate, }; // Función para obtener una plantilla por tipo de documento export function getTemplateByDocumentType(documentType: string): string { switch (documentType) { case '01': // Factura case '03': // Boleta return invoiceTemplate; case '07': // Nota de crédito return creditNoteTemplate; case '08': // Nota de débito return debitNoteTemplate; case '09': // Guía de remisión return dispatchTemplate; case '20': // Comprobante de retención return retentionTemplate; case '40': // Comprobante de percepción return perceptionTemplate; case 'RC': // Resumen diario return summaryTemplate; case 'RA': // Comunicación de baja return voidedTemplate; default: throw new Error(`No se encontró una plantilla para el tipo de documento: ${documentType}`); } }