@fin.cx/einvoice 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/classes.decoder.d.ts +40 -0
- package/dist_ts/classes.decoder.js +320 -0
- package/dist_ts/classes.encoder.d.ts +51 -0
- package/dist_ts/classes.encoder.js +293 -0
- package/dist_ts/classes.xinvoice.d.ts +136 -0
- package/dist_ts/classes.xinvoice.js +352 -0
- package/dist_ts/einvoice.d.ts +217 -0
- package/dist_ts/einvoice.js +505 -0
- package/dist_ts/errors.d.ts +121 -0
- package/dist_ts/errors.js +241 -0
- package/dist_ts/formats/base/base.decoder.d.ts +32 -0
- package/dist_ts/formats/base/base.decoder.js +52 -0
- package/dist_ts/formats/base/base.encoder.d.ts +13 -0
- package/dist_ts/formats/base/base.encoder.js +7 -0
- package/dist_ts/formats/base/base.validator.d.ts +44 -0
- package/dist_ts/formats/base/base.validator.js +39 -0
- package/dist_ts/formats/base.decoder.d.ts +19 -0
- package/dist_ts/formats/base.decoder.js +130 -0
- package/dist_ts/formats/base.validator.d.ts +44 -0
- package/dist_ts/formats/base.validator.js +39 -0
- package/dist_ts/formats/cii/cii.decoder.d.ts +61 -0
- package/dist_ts/formats/cii/cii.decoder.js +111 -0
- package/dist_ts/formats/cii/cii.encoder.d.ts +43 -0
- package/dist_ts/formats/cii/cii.encoder.js +48 -0
- package/dist_ts/formats/cii/cii.types.d.ts +31 -0
- package/dist_ts/formats/cii/cii.types.js +40 -0
- package/dist_ts/formats/cii/cii.validator.d.ts +56 -0
- package/dist_ts/formats/cii/cii.validator.js +146 -0
- package/dist_ts/formats/cii/facturx/facturx.decoder.d.ts +43 -0
- package/dist_ts/formats/cii/facturx/facturx.decoder.js +207 -0
- package/dist_ts/formats/cii/facturx/facturx.encoder.d.ts +82 -0
- package/dist_ts/formats/cii/facturx/facturx.encoder.js +400 -0
- package/dist_ts/formats/cii/facturx/facturx.types.d.ts +10 -0
- package/dist_ts/formats/cii/facturx/facturx.types.js +15 -0
- package/dist_ts/formats/cii/facturx/facturx.validator.d.ts +32 -0
- package/dist_ts/formats/cii/facturx/facturx.validator.js +138 -0
- package/dist_ts/formats/cii/zugferd/zugferd.decoder.d.ts +43 -0
- package/dist_ts/formats/cii/zugferd/zugferd.decoder.js +218 -0
- package/dist_ts/formats/cii/zugferd/zugferd.encoder.d.ts +97 -0
- package/dist_ts/formats/cii/zugferd/zugferd.encoder.js +550 -0
- package/dist_ts/formats/cii/zugferd/zugferd.types.d.ts +10 -0
- package/dist_ts/formats/cii/zugferd/zugferd.types.js +15 -0
- package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.d.ts +49 -0
- package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.js +229 -0
- package/dist_ts/formats/cii/zugferd/zugferd.validator.d.ts +16 -0
- package/dist_ts/formats/cii/zugferd/zugferd.validator.js +29 -0
- package/dist_ts/formats/decoder.factory.d.ts +15 -0
- package/dist_ts/formats/decoder.factory.js +46 -0
- package/dist_ts/formats/factories/decoder.factory.d.ts +13 -0
- package/dist_ts/formats/factories/decoder.factory.js +56 -0
- package/dist_ts/formats/factories/encoder.factory.d.ts +14 -0
- package/dist_ts/formats/factories/encoder.factory.js +40 -0
- package/dist_ts/formats/factories/validator.factory.d.ts +12 -0
- package/dist_ts/formats/factories/validator.factory.js +110 -0
- package/dist_ts/formats/factorx.decoder.d.ts +18 -0
- package/dist_ts/formats/factorx.decoder.js +178 -0
- package/dist_ts/formats/factorx.encoder.d.ts +51 -0
- package/dist_ts/formats/factorx.encoder.js +293 -0
- package/dist_ts/formats/facturx.decoder.d.ts +18 -0
- package/dist_ts/formats/facturx.decoder.js +210 -0
- package/dist_ts/formats/facturx.encoder.d.ts +51 -0
- package/dist_ts/formats/facturx.encoder.js +293 -0
- package/dist_ts/formats/facturx.validator.d.ts +67 -0
- package/dist_ts/formats/facturx.validator.js +266 -0
- package/dist_ts/formats/pdf/extractors/associated.extractor.d.ts +14 -0
- package/dist_ts/formats/pdf/extractors/associated.extractor.js +68 -0
- package/dist_ts/formats/pdf/extractors/base.extractor.d.ts +92 -0
- package/dist_ts/formats/pdf/extractors/base.extractor.js +319 -0
- package/dist_ts/formats/pdf/extractors/index.d.ts +4 -0
- package/dist_ts/formats/pdf/extractors/index.js +5 -0
- package/dist_ts/formats/pdf/extractors/standard.extractor.d.ts +13 -0
- package/dist_ts/formats/pdf/extractors/standard.extractor.js +74 -0
- package/dist_ts/formats/pdf/extractors/text.extractor.d.ts +45 -0
- package/dist_ts/formats/pdf/extractors/text.extractor.js +151 -0
- package/dist_ts/formats/pdf/pdf.embedder.d.ts +69 -0
- package/dist_ts/formats/pdf/pdf.embedder.js +183 -0
- package/dist_ts/formats/pdf/pdf.extractor.d.ts +49 -0
- package/dist_ts/formats/pdf/pdf.extractor.js +98 -0
- package/dist_ts/formats/pdf/robust-pdf.extractor.d.ts +40 -0
- package/dist_ts/formats/pdf/robust-pdf.extractor.js +324 -0
- package/dist_ts/formats/ubl/en16931.ubl.validator.d.ts +18 -0
- package/dist_ts/formats/ubl/en16931.ubl.validator.js +169 -0
- package/dist_ts/formats/ubl/generic/ubl.encoder.d.ts +151 -0
- package/dist_ts/formats/ubl/generic/ubl.encoder.js +892 -0
- package/dist_ts/formats/ubl/ubl.decoder.d.ts +61 -0
- package/dist_ts/formats/ubl/ubl.decoder.js +95 -0
- package/dist_ts/formats/ubl/ubl.encoder.d.ts +38 -0
- package/dist_ts/formats/ubl/ubl.encoder.js +46 -0
- package/dist_ts/formats/ubl/ubl.types.d.ts +16 -0
- package/dist_ts/formats/ubl/ubl.types.js +21 -0
- package/dist_ts/formats/ubl/ubl.validator.d.ts +50 -0
- package/dist_ts/formats/ubl/ubl.validator.js +112 -0
- package/dist_ts/formats/ubl/xrechnung/xrechnung.decoder.d.ts +34 -0
- package/dist_ts/formats/ubl/xrechnung/xrechnung.decoder.js +424 -0
- package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.d.ts +75 -0
- package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.js +555 -0
- package/dist_ts/formats/ubl/xrechnung.validator.d.ts +15 -0
- package/dist_ts/formats/ubl/xrechnung.validator.js +107 -0
- package/dist_ts/formats/ubl.validator.d.ts +82 -0
- package/dist_ts/formats/ubl.validator.js +306 -0
- package/dist_ts/formats/utils/format.detector.d.ts +62 -0
- package/dist_ts/formats/utils/format.detector.js +249 -0
- package/dist_ts/formats/validation/en16931.validator.d.ts +23 -0
- package/dist_ts/formats/validation/en16931.validator.js +119 -0
- package/dist_ts/formats/validator.factory.d.ts +18 -0
- package/dist_ts/formats/validator.factory.js +78 -0
- package/dist_ts/formats/xinvoice.decoder.d.ts +28 -0
- package/dist_ts/formats/xinvoice.decoder.js +332 -0
- package/dist_ts/formats/xinvoice.encoder.d.ts +19 -0
- package/dist_ts/formats/xinvoice.encoder.js +282 -0
- package/dist_ts/index.d.ts +51 -0
- package/dist_ts/index.js +90 -0
- package/dist_ts/interfaces/common.d.ts +79 -0
- package/dist_ts/interfaces/common.js +24 -0
- package/dist_ts/interfaces.d.ts +87 -0
- package/dist_ts/interfaces.js +23 -0
- package/dist_ts/plugins.d.ts +14 -0
- package/dist_ts/plugins.js +31 -0
- package/npmextra.json +35 -0
- package/package.json +71 -0
- package/readme.hints.md +1107 -0
- package/readme.howtofixtests.md +38 -0
- package/readme.literature.md +1 -0
- package/readme.md +998 -0
- package/readme.plan.md +481 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/einvoice.ts +603 -0
- package/ts/errors.ts +341 -0
- package/ts/formats/base/base.decoder.ts +68 -0
- package/ts/formats/base/base.encoder.ts +14 -0
- package/ts/formats/base/base.validator.ts +64 -0
- package/ts/formats/cii/cii.decoder.ts +139 -0
- package/ts/formats/cii/cii.encoder.ts +64 -0
- package/ts/formats/cii/cii.types.ts +44 -0
- package/ts/formats/cii/cii.validator.ts +171 -0
- package/ts/formats/cii/facturx/facturx.decoder.ts +243 -0
- package/ts/formats/cii/facturx/facturx.encoder.ts +483 -0
- package/ts/formats/cii/facturx/facturx.types.ts +18 -0
- package/ts/formats/cii/facturx/facturx.validator.ts +180 -0
- package/ts/formats/cii/zugferd/zugferd.decoder.ts +256 -0
- package/ts/formats/cii/zugferd/zugferd.encoder.ts +661 -0
- package/ts/formats/cii/zugferd/zugferd.types.ts +18 -0
- package/ts/formats/cii/zugferd/zugferd.v1.decoder.ts +267 -0
- package/ts/formats/cii/zugferd/zugferd.validator.ts +31 -0
- package/ts/formats/factories/decoder.factory.ts +62 -0
- package/ts/formats/factories/encoder.factory.ts +47 -0
- package/ts/formats/factories/validator.factory.ts +134 -0
- package/ts/formats/pdf/extractors/associated.extractor.ts +78 -0
- package/ts/formats/pdf/extractors/base.extractor.ts +355 -0
- package/ts/formats/pdf/extractors/index.ts +4 -0
- package/ts/formats/pdf/extractors/standard.extractor.ts +86 -0
- package/ts/formats/pdf/extractors/text.extractor.ts +162 -0
- package/ts/formats/pdf/pdf.embedder.ts +242 -0
- package/ts/formats/pdf/pdf.extractor.ts +141 -0
- package/ts/formats/ubl/en16931.ubl.validator.ts +216 -0
- package/ts/formats/ubl/generic/ubl.encoder.ts +1041 -0
- package/ts/formats/ubl/ubl.decoder.ts +121 -0
- package/ts/formats/ubl/ubl.encoder.ts +63 -0
- package/ts/formats/ubl/ubl.types.ts +22 -0
- package/ts/formats/ubl/ubl.validator.ts +133 -0
- package/ts/formats/ubl/xrechnung/xrechnung.decoder.ts +471 -0
- package/ts/formats/ubl/xrechnung/xrechnung.encoder.ts +619 -0
- package/ts/formats/ubl/xrechnung.validator.ts +185 -0
- package/ts/formats/utils/format.detector.ts +306 -0
- package/ts/formats/validation/en16931.validator.ts +135 -0
- package/ts/index.ts +164 -0
- package/ts/interfaces/common.ts +90 -0
- package/ts/interfaces.ts +98 -0
- package/ts/plugins.ts +61 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { CIIBaseDecoder } from '../cii.decoder.js';
|
|
2
|
+
import type { TCreditNote, TDebitNote } from '../../../interfaces/common.js';
|
|
3
|
+
/**
|
|
4
|
+
* Decoder for ZUGFeRD invoice format
|
|
5
|
+
*/
|
|
6
|
+
export declare class ZUGFeRDDecoder extends CIIBaseDecoder {
|
|
7
|
+
/**
|
|
8
|
+
* Decodes a ZUGFeRD credit note
|
|
9
|
+
* @returns Promise resolving to a TCreditNote object
|
|
10
|
+
*/
|
|
11
|
+
protected decodeCreditNote(): Promise<TCreditNote>;
|
|
12
|
+
/**
|
|
13
|
+
* Decodes a ZUGFeRD debit note (invoice)
|
|
14
|
+
* @returns Promise resolving to a TDebitNote object
|
|
15
|
+
*/
|
|
16
|
+
protected decodeDebitNote(): Promise<TDebitNote>;
|
|
17
|
+
/**
|
|
18
|
+
* Extracts common invoice data from ZUGFeRD XML
|
|
19
|
+
* @returns Common invoice data
|
|
20
|
+
*/
|
|
21
|
+
private extractCommonData;
|
|
22
|
+
/**
|
|
23
|
+
* Extracts party information from ZUGFeRD XML
|
|
24
|
+
* @param partyXPath XPath to the party node
|
|
25
|
+
* @returns Party information as TContact
|
|
26
|
+
*/
|
|
27
|
+
private extractParty;
|
|
28
|
+
/**
|
|
29
|
+
* Extracts invoice items from ZUGFeRD XML
|
|
30
|
+
* @returns Array of invoice items
|
|
31
|
+
*/
|
|
32
|
+
private extractItems;
|
|
33
|
+
/**
|
|
34
|
+
* Extracts notes from ZUGFeRD XML
|
|
35
|
+
* @returns Array of notes
|
|
36
|
+
*/
|
|
37
|
+
private extractNotes;
|
|
38
|
+
/**
|
|
39
|
+
* Creates a default date for empty date fields
|
|
40
|
+
* @returns Default date as timestamp
|
|
41
|
+
*/
|
|
42
|
+
private createDefaultDate;
|
|
43
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { CIIBaseDecoder } from '../cii.decoder.js';
|
|
2
|
+
import { business, finance } from '../../../plugins.js';
|
|
3
|
+
import { EN16931Validator } from '../../validation/en16931.validator.js';
|
|
4
|
+
/**
|
|
5
|
+
* Decoder for ZUGFeRD invoice format
|
|
6
|
+
*/
|
|
7
|
+
export class ZUGFeRDDecoder extends CIIBaseDecoder {
|
|
8
|
+
/**
|
|
9
|
+
* Decodes a ZUGFeRD credit note
|
|
10
|
+
* @returns Promise resolving to a TCreditNote object
|
|
11
|
+
*/
|
|
12
|
+
async decodeCreditNote() {
|
|
13
|
+
// Get common invoice data
|
|
14
|
+
const commonData = await this.extractCommonData();
|
|
15
|
+
// Create a credit note with the common data
|
|
16
|
+
return {
|
|
17
|
+
...commonData,
|
|
18
|
+
accountingDocType: 'creditnote'
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Decodes a ZUGFeRD debit note (invoice)
|
|
23
|
+
* @returns Promise resolving to a TDebitNote object
|
|
24
|
+
*/
|
|
25
|
+
async decodeDebitNote() {
|
|
26
|
+
// Get common invoice data
|
|
27
|
+
const commonData = await this.extractCommonData();
|
|
28
|
+
// Create a debit note with the common data
|
|
29
|
+
return {
|
|
30
|
+
...commonData,
|
|
31
|
+
accountingDocType: 'debitnote'
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extracts common invoice data from ZUGFeRD XML
|
|
36
|
+
* @returns Common invoice data
|
|
37
|
+
*/
|
|
38
|
+
async extractCommonData() {
|
|
39
|
+
// Extract invoice ID
|
|
40
|
+
const invoiceId = this.getText('//rsm:ExchangedDocument/ram:ID');
|
|
41
|
+
// Extract issue date
|
|
42
|
+
const issueDateStr = this.getText('//ram:IssueDateTime/udt:DateTimeString');
|
|
43
|
+
const issueDateFormat = this.getText('//ram:IssueDateTime/udt:DateTimeString/@format');
|
|
44
|
+
const issueDate = this.parseCIIDate(issueDateStr, issueDateFormat);
|
|
45
|
+
// Extract seller information
|
|
46
|
+
const seller = this.extractParty('//ram:SellerTradeParty');
|
|
47
|
+
// Extract buyer information
|
|
48
|
+
const buyer = this.extractParty('//ram:BuyerTradeParty');
|
|
49
|
+
// Extract items
|
|
50
|
+
const items = this.extractItems();
|
|
51
|
+
// Extract due date
|
|
52
|
+
const dueDateStr = this.getText('//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString');
|
|
53
|
+
const dueDate = dueDateStr ? new Date(dueDateStr).getTime() : Date.now();
|
|
54
|
+
const dueInDays = Math.round((dueDate - issueDate) / (1000 * 60 * 60 * 24));
|
|
55
|
+
// Extract currency
|
|
56
|
+
const currencyCode = this.getText('//ram:InvoiceCurrencyCode') || 'EUR';
|
|
57
|
+
// Extract total amount (not used in this implementation but could be useful)
|
|
58
|
+
// const totalAmount = this.getNumber('//ram:GrandTotalAmount');
|
|
59
|
+
// Extract notes
|
|
60
|
+
const allNotes = this.extractNotes();
|
|
61
|
+
// Extract subject and notes separately
|
|
62
|
+
// If we have notes, the first one might be the subject
|
|
63
|
+
let subject = `Invoice ${invoiceId}`;
|
|
64
|
+
let notes = [...allNotes];
|
|
65
|
+
// If the first note doesn't look like a payment term or other standard note,
|
|
66
|
+
// treat it as the subject
|
|
67
|
+
if (allNotes.length > 0 && !allNotes[0].toLowerCase().includes('due in') &&
|
|
68
|
+
!allNotes[0].toLowerCase().includes('payment')) {
|
|
69
|
+
subject = allNotes[0];
|
|
70
|
+
notes = allNotes.slice(1); // Remove subject from notes
|
|
71
|
+
}
|
|
72
|
+
// Check for reverse charge
|
|
73
|
+
const reverseCharge = this.exists('//ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[text()="62"]');
|
|
74
|
+
// Create the common invoice data
|
|
75
|
+
const invoiceData = {
|
|
76
|
+
type: 'accounting-doc',
|
|
77
|
+
accountingDocType: 'invoice',
|
|
78
|
+
id: invoiceId,
|
|
79
|
+
accountingDocId: invoiceId,
|
|
80
|
+
date: issueDate,
|
|
81
|
+
accountingDocStatus: 'issued',
|
|
82
|
+
versionInfo: {
|
|
83
|
+
type: 'final',
|
|
84
|
+
version: '1.0.0'
|
|
85
|
+
},
|
|
86
|
+
language: 'en',
|
|
87
|
+
incidenceId: invoiceId,
|
|
88
|
+
from: seller,
|
|
89
|
+
to: buyer,
|
|
90
|
+
subject: subject,
|
|
91
|
+
items: items,
|
|
92
|
+
dueInDays: dueInDays,
|
|
93
|
+
reverseCharge: reverseCharge,
|
|
94
|
+
currency: currencyCode,
|
|
95
|
+
notes: notes,
|
|
96
|
+
deliveryDate: issueDate,
|
|
97
|
+
objectActions: []
|
|
98
|
+
};
|
|
99
|
+
// Validate mandatory EN16931 fields unless validation is skipped
|
|
100
|
+
if (!this.skipValidation) {
|
|
101
|
+
EN16931Validator.validateMandatoryFields(invoiceData);
|
|
102
|
+
}
|
|
103
|
+
return invoiceData;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Extracts party information from ZUGFeRD XML
|
|
107
|
+
* @param partyXPath XPath to the party node
|
|
108
|
+
* @returns Party information as TContact
|
|
109
|
+
*/
|
|
110
|
+
extractParty(partyXPath) {
|
|
111
|
+
// Extract name
|
|
112
|
+
const name = this.getText(`${partyXPath}/ram:Name`);
|
|
113
|
+
// Extract address
|
|
114
|
+
const streetName = this.getText(`${partyXPath}/ram:PostalTradeAddress/ram:LineOne`);
|
|
115
|
+
const city = this.getText(`${partyXPath}/ram:PostalTradeAddress/ram:CityName`);
|
|
116
|
+
const postalCode = this.getText(`${partyXPath}/ram:PostalTradeAddress/ram:PostcodeCode`);
|
|
117
|
+
const country = this.getText(`${partyXPath}/ram:PostalTradeAddress/ram:CountryID`);
|
|
118
|
+
// Try to extract house number from street if possible
|
|
119
|
+
let houseNumber = '';
|
|
120
|
+
const streetParts = streetName.match(/^(.*?)\s+(\d+.*)$/);
|
|
121
|
+
if (streetParts) {
|
|
122
|
+
// If we can split into street name and house number
|
|
123
|
+
houseNumber = streetParts[2];
|
|
124
|
+
}
|
|
125
|
+
// Create address object
|
|
126
|
+
const address = {
|
|
127
|
+
streetName: streetName,
|
|
128
|
+
houseNumber: houseNumber,
|
|
129
|
+
city: city,
|
|
130
|
+
postalCode: postalCode,
|
|
131
|
+
countryCode: country
|
|
132
|
+
};
|
|
133
|
+
// Extract VAT ID
|
|
134
|
+
const vatId = this.getText(`${partyXPath}/ram:SpecifiedTaxRegistration/ram:ID[@schemeID="VA"]`) || '';
|
|
135
|
+
// Extract registration ID
|
|
136
|
+
const registrationId = this.getText(`${partyXPath}/ram:SpecifiedTaxRegistration/ram:ID[@schemeID="FC"]`) || '';
|
|
137
|
+
// Create contact object
|
|
138
|
+
return {
|
|
139
|
+
type: 'company',
|
|
140
|
+
name: name,
|
|
141
|
+
description: '',
|
|
142
|
+
address: address,
|
|
143
|
+
status: 'active',
|
|
144
|
+
foundedDate: this.createDefaultDate(),
|
|
145
|
+
registrationDetails: {
|
|
146
|
+
vatId: vatId,
|
|
147
|
+
registrationId: registrationId,
|
|
148
|
+
registrationName: ''
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Extracts invoice items from ZUGFeRD XML
|
|
154
|
+
* @returns Array of invoice items
|
|
155
|
+
*/
|
|
156
|
+
extractItems() {
|
|
157
|
+
const items = [];
|
|
158
|
+
// Get all item nodes
|
|
159
|
+
const itemNodes = this.select('//ram:IncludedSupplyChainTradeLineItem', this.doc);
|
|
160
|
+
// Process each item
|
|
161
|
+
if (Array.isArray(itemNodes)) {
|
|
162
|
+
for (let i = 0; i < itemNodes.length; i++) {
|
|
163
|
+
const itemNode = itemNodes[i];
|
|
164
|
+
// Extract item data
|
|
165
|
+
const name = this.getText('ram:SpecifiedTradeProduct/ram:Name', itemNode);
|
|
166
|
+
const articleNumber = this.getText('ram:SpecifiedTradeProduct/ram:SellerAssignedID', itemNode);
|
|
167
|
+
const unitQuantity = this.getNumber('ram:SpecifiedLineTradeDelivery/ram:BilledQuantity', itemNode);
|
|
168
|
+
const unitType = this.getText('ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode', itemNode) || 'EA';
|
|
169
|
+
const unitNetPrice = this.getNumber('ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', itemNode);
|
|
170
|
+
const vatPercentage = this.getNumber('ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent', itemNode);
|
|
171
|
+
// Create item object
|
|
172
|
+
items.push({
|
|
173
|
+
position: i + 1,
|
|
174
|
+
name: name,
|
|
175
|
+
articleNumber: articleNumber,
|
|
176
|
+
unitType: unitType,
|
|
177
|
+
unitQuantity: unitQuantity,
|
|
178
|
+
unitNetPrice: unitNetPrice,
|
|
179
|
+
vatPercentage: vatPercentage
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return items;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Extracts notes from ZUGFeRD XML
|
|
187
|
+
* @returns Array of notes
|
|
188
|
+
*/
|
|
189
|
+
extractNotes() {
|
|
190
|
+
const notes = [];
|
|
191
|
+
// Get all note nodes
|
|
192
|
+
const noteNodes = this.select('//ram:IncludedNote', this.doc);
|
|
193
|
+
// Process each note
|
|
194
|
+
if (Array.isArray(noteNodes)) {
|
|
195
|
+
for (let i = 0; i < noteNodes.length; i++) {
|
|
196
|
+
const noteNode = noteNodes[i];
|
|
197
|
+
const noteText = this.getText('ram:Content', noteNode);
|
|
198
|
+
if (noteText) {
|
|
199
|
+
notes.push(noteText);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return notes;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Creates a default date for empty date fields
|
|
207
|
+
* @returns Default date as timestamp
|
|
208
|
+
*/
|
|
209
|
+
createDefaultDate() {
|
|
210
|
+
// Create a date object that will be compatible with TContact
|
|
211
|
+
return {
|
|
212
|
+
year: 2000,
|
|
213
|
+
month: 1,
|
|
214
|
+
day: 1
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienVnZmVyZC5kZWNvZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHMvZm9ybWF0cy9jaWkvenVnZmVyZC96dWdmZXJkLmRlY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFekU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLGNBQWM7SUFDaEQ7OztPQUdHO0lBQ08sS0FBSyxDQUFDLGdCQUFnQjtRQUM5QiwwQkFBMEI7UUFDMUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVsRCw0Q0FBNEM7UUFDNUMsT0FBTztZQUNMLEdBQUcsVUFBVTtZQUNiLGlCQUFpQixFQUFFLFlBQXFCO1NBQ2YsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sS0FBSyxDQUFDLGVBQWU7UUFDN0IsMEJBQTBCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFbEQsMkNBQTJDO1FBQzNDLE9BQU87WUFDTCxHQUFHLFVBQVU7WUFDYixpQkFBaUIsRUFBRSxXQUFvQjtTQUNmLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxpQkFBaUI7UUFDN0IscUJBQXFCO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUVqRSxxQkFBcUI7UUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FB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
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { CIIBaseEncoder } from '../cii.encoder.js';
|
|
2
|
+
import type { TCreditNote, TDebitNote } from '../../../interfaces/common.js';
|
|
3
|
+
/**
|
|
4
|
+
* Encoder for ZUGFeRD invoice format
|
|
5
|
+
*/
|
|
6
|
+
export declare class ZUGFeRDEncoder extends CIIBaseEncoder {
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* Encodes a credit note into ZUGFeRD XML
|
|
10
|
+
* @param creditNote Credit note to encode
|
|
11
|
+
* @returns ZUGFeRD XML string
|
|
12
|
+
*/
|
|
13
|
+
protected encodeCreditNote(creditNote: TCreditNote): Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Encodes a debit note (invoice) into ZUGFeRD XML
|
|
16
|
+
* @param debitNote Debit note to encode
|
|
17
|
+
* @returns ZUGFeRD XML string
|
|
18
|
+
*/
|
|
19
|
+
protected encodeDebitNote(debitNote: TDebitNote): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a base ZUGFeRD XML document
|
|
22
|
+
* @returns XML document with basic structure
|
|
23
|
+
*/
|
|
24
|
+
private createBaseXml;
|
|
25
|
+
/**
|
|
26
|
+
* Adds ZUGFeRD profile information to the XML document
|
|
27
|
+
* @param doc XML document
|
|
28
|
+
*/
|
|
29
|
+
private addProfile;
|
|
30
|
+
/**
|
|
31
|
+
* Sets the document type code in the XML document
|
|
32
|
+
* @param doc XML document
|
|
33
|
+
* @param typeCode Document type code (380 for invoice, 381 for credit note)
|
|
34
|
+
*/
|
|
35
|
+
private setDocumentTypeCode;
|
|
36
|
+
/**
|
|
37
|
+
* Adds common invoice data to the XML document
|
|
38
|
+
* @param doc XML document
|
|
39
|
+
* @param invoice Invoice data
|
|
40
|
+
*/
|
|
41
|
+
private addCommonInvoiceData;
|
|
42
|
+
/**
|
|
43
|
+
* Adds agreement section with seller and buyer information
|
|
44
|
+
* @param doc XML document
|
|
45
|
+
* @param transactionElement Transaction element
|
|
46
|
+
* @param invoice Invoice data
|
|
47
|
+
*/
|
|
48
|
+
private addAgreementSection;
|
|
49
|
+
/**
|
|
50
|
+
* Adds party information to an element
|
|
51
|
+
* @param doc XML document
|
|
52
|
+
* @param partyElement Party element
|
|
53
|
+
* @param party Party data
|
|
54
|
+
*/
|
|
55
|
+
private addPartyInfo;
|
|
56
|
+
/**
|
|
57
|
+
* Adds delivery section with delivery information
|
|
58
|
+
* @param doc XML document
|
|
59
|
+
* @param transactionElement Transaction element
|
|
60
|
+
* @param invoice Invoice data
|
|
61
|
+
*/
|
|
62
|
+
private addDeliverySection;
|
|
63
|
+
/**
|
|
64
|
+
* Adds settlement section with payment terms and totals
|
|
65
|
+
* @param doc XML document
|
|
66
|
+
* @param transactionElement Transaction element
|
|
67
|
+
* @param invoice Invoice data
|
|
68
|
+
*/
|
|
69
|
+
private addSettlementSection;
|
|
70
|
+
/**
|
|
71
|
+
* Adds tax details to the settlement section
|
|
72
|
+
* @param doc XML document
|
|
73
|
+
* @param settlementElement Settlement element
|
|
74
|
+
* @param invoice Invoice data
|
|
75
|
+
*/
|
|
76
|
+
private addTaxDetails;
|
|
77
|
+
/**
|
|
78
|
+
* Adds monetary summation to the settlement section
|
|
79
|
+
* @param doc XML document
|
|
80
|
+
* @param settlementElement Settlement element
|
|
81
|
+
* @param invoice Invoice data
|
|
82
|
+
*/
|
|
83
|
+
private addMonetarySummation;
|
|
84
|
+
/**
|
|
85
|
+
* Adds line items to the XML document
|
|
86
|
+
* @param doc XML document
|
|
87
|
+
* @param transactionElement Transaction element
|
|
88
|
+
* @param invoice Invoice data
|
|
89
|
+
*/
|
|
90
|
+
private addLineItems;
|
|
91
|
+
/**
|
|
92
|
+
* Formats a date as YYYYMMDD
|
|
93
|
+
* @param timestamp Timestamp to format
|
|
94
|
+
* @returns Formatted date string
|
|
95
|
+
*/
|
|
96
|
+
private formatDateYYYYMMDD;
|
|
97
|
+
}
|