@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
TypeScript
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;
}