@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
JavaScript
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==