UNPKG

@fin.cx/einvoice

Version:

A TypeScript module for creating, manipulating, and embedding XML data within PDF files specifically tailored for electronic invoice (einvoice) packages.

46 lines 2.89 kB
import { BaseEncoder } from '../base/base.encoder.js'; import { UBLDocumentType, UBL_NAMESPACES } from './ubl.types.js'; /** * Base encoder for UBL-based invoice formats */ export class UBLBaseEncoder extends BaseEncoder { /** * Encodes a TInvoice object into UBL XML * @param invoice TInvoice object to encode * @returns UBL XML string */ async encode(invoice) { // TInvoice is always an invoice, treat it as debit note for encoding return this.encodeDebitNote(invoice); } /** * Creates the XML declaration and root element * @param documentType UBL document type * @returns XML string with declaration and root element */ createXmlRoot(documentType) { return `<?xml version="1.0" encoding="UTF-8"?> <${documentType} xmlns="urn:oasis:names:specification:ubl:schema:xsd:${documentType}-2" xmlns:cac="${UBL_NAMESPACES.CAC}" xmlns:cbc="${UBL_NAMESPACES.CBC}"> </${documentType}>`; } /** * Formats a date as an ISO string (YYYY-MM-DD) * @param timestamp Timestamp to format * @returns Formatted date string */ formatDate(timestamp) { // Ensure timestamp is valid if (!timestamp || isNaN(timestamp)) { timestamp = Date.now(); } const date = new Date(timestamp); // Check if date is valid if (isNaN(date.getTime())) { return new Date().toISOString().split('T')[0]; } return date.toISOString().split('T')[0]; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWJsLmVuY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3JtYXRzL3VibC91YmwuZW5jb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsY0FBZSxTQUFRLFdBQVc7SUFDdEQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBaUI7UUFDbkMscUVBQXFFO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFnQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQWdCRDs7OztPQUlHO0lBQ08sYUFBYSxDQUFDLFlBQTZCO1FBQ25ELE9BQU87R0FDUixZQUFZLHdEQUF3RCxZQUFZO2VBQ3BFLGNBQWMsQ0FBQyxHQUFHO2VBQ2xCLGNBQWMsQ0FBQyxHQUFHO0lBQzdCLFlBQVksR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sVUFBVSxDQUFDLFNBQWlCO1FBQ3BDLDRCQUE0QjtRQUM1QixJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ25DLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLHlCQUF5QjtRQUN6QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0YifQ==