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.

152 lines (151 loc) 4.88 kB
import { UBLBaseEncoder } from '../ubl.encoder.js'; import type { TCreditNote, TDebitNote } from '../../../interfaces/common.js'; /** * UBL Encoder implementation * Provides encoding functionality for UBL 2.1 invoice and credit note documents */ export declare class UBLEncoder extends UBLBaseEncoder { /** * Encodes a credit note into UBL XML * @param creditNote Credit note to encode * @returns UBL XML string */ protected encodeCreditNote(creditNote: TCreditNote): Promise<string>; /** * Encodes a debit note (invoice) into UBL XML * @param debitNote Debit note to encode * @returns UBL XML string */ protected encodeDebitNote(debitNote: TDebitNote): Promise<string>; /** * Adds common document elements to both invoice and credit note * @param doc XML document * @param invoice Invoice or credit note data * @param documentType Document type (Invoice or CreditNote) */ private addCommonElements; /** * Adds credit note specific data to the document * @param doc XML document * @param creditNote Credit note data */ private addCreditNoteSpecificData; /** * Adds invoice specific data to the document * @param doc XML document * @param invoice Invoice data */ private addInvoiceSpecificData; /** * Adds party information (supplier or customer) * @param doc XML document * @param parentElement Parent element * @param elementName Element name (AccountingSupplierParty or AccountingCustomerParty) * @param party Party data */ private addParty; /** * Adds payment terms information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addPaymentTerms; /** * Adds payment means information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addPaymentMeans; /** * Adds tax total information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addTaxTotal; /** * Adds legal monetary total information * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addLegalMonetaryTotal; /** * Adds invoice lines * @param doc XML document * @param parentElement Parent element * @param invoice Invoice data */ private addInvoiceLines; /** * Helper method to append a simple element with text content * @param doc XML document * @param parentElement Parent element * @param elementName Element name * @param textContent Text content */ private appendElement; /** * Helper method to get country code from country name * Simple implementation that assumes the country name is already a code * @param countryName Country name * @returns Country code (2-letter ISO code) */ private getCountryCode; /** * Preserves metadata from invoice to enhance UBL XML output * @param doc XML document * @param root Root element * @param invoice Invoice data */ private preserveMetadata; /** * Adds business references from metadata to UBL document * @param doc XML document * @param root Root element * @param businessReferences Business references from metadata */ private addBusinessReferencesToUBL; /** * Enhances payment information from metadata in UBL document * @param doc XML document * @param root Root element * @param paymentInfo Payment information from metadata */ private enhancePaymentInformationUBL; /** * Adds date information from metadata to UBL document * @param doc XML document * @param root Root element * @param dateInfo Date information from metadata */ private addDateInformationUBL; /** * Enhances party information with contact details from metadata * @param doc XML document * @param invoice Invoice data */ private enhancePartyInformationUBL; /** * Enhances a party with GLN, additional identifiers, and contact info * @param doc XML document * @param partySelector Party selector * @param partyData Party data */ private enhancePartyUBL; /** * Adds contact information to a party in UBL document * @param doc XML document * @param partySelector Party selector * @param contactInfo Contact information from metadata */ private addContactToPartyUBL; /** * Enhances line items with metadata in UBL document * @param doc XML document * @param invoice Invoice data */ private enhanceLineItemsUBL; }