@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.
Files changed (171) hide show
  1. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  2. package/dist_ts/00_commitinfo_data.js +9 -0
  3. package/dist_ts/classes.decoder.d.ts +40 -0
  4. package/dist_ts/classes.decoder.js +320 -0
  5. package/dist_ts/classes.encoder.d.ts +51 -0
  6. package/dist_ts/classes.encoder.js +293 -0
  7. package/dist_ts/classes.xinvoice.d.ts +136 -0
  8. package/dist_ts/classes.xinvoice.js +352 -0
  9. package/dist_ts/einvoice.d.ts +217 -0
  10. package/dist_ts/einvoice.js +505 -0
  11. package/dist_ts/errors.d.ts +121 -0
  12. package/dist_ts/errors.js +241 -0
  13. package/dist_ts/formats/base/base.decoder.d.ts +32 -0
  14. package/dist_ts/formats/base/base.decoder.js +52 -0
  15. package/dist_ts/formats/base/base.encoder.d.ts +13 -0
  16. package/dist_ts/formats/base/base.encoder.js +7 -0
  17. package/dist_ts/formats/base/base.validator.d.ts +44 -0
  18. package/dist_ts/formats/base/base.validator.js +39 -0
  19. package/dist_ts/formats/base.decoder.d.ts +19 -0
  20. package/dist_ts/formats/base.decoder.js +130 -0
  21. package/dist_ts/formats/base.validator.d.ts +44 -0
  22. package/dist_ts/formats/base.validator.js +39 -0
  23. package/dist_ts/formats/cii/cii.decoder.d.ts +61 -0
  24. package/dist_ts/formats/cii/cii.decoder.js +111 -0
  25. package/dist_ts/formats/cii/cii.encoder.d.ts +43 -0
  26. package/dist_ts/formats/cii/cii.encoder.js +48 -0
  27. package/dist_ts/formats/cii/cii.types.d.ts +31 -0
  28. package/dist_ts/formats/cii/cii.types.js +40 -0
  29. package/dist_ts/formats/cii/cii.validator.d.ts +56 -0
  30. package/dist_ts/formats/cii/cii.validator.js +146 -0
  31. package/dist_ts/formats/cii/facturx/facturx.decoder.d.ts +43 -0
  32. package/dist_ts/formats/cii/facturx/facturx.decoder.js +207 -0
  33. package/dist_ts/formats/cii/facturx/facturx.encoder.d.ts +82 -0
  34. package/dist_ts/formats/cii/facturx/facturx.encoder.js +400 -0
  35. package/dist_ts/formats/cii/facturx/facturx.types.d.ts +10 -0
  36. package/dist_ts/formats/cii/facturx/facturx.types.js +15 -0
  37. package/dist_ts/formats/cii/facturx/facturx.validator.d.ts +32 -0
  38. package/dist_ts/formats/cii/facturx/facturx.validator.js +138 -0
  39. package/dist_ts/formats/cii/zugferd/zugferd.decoder.d.ts +43 -0
  40. package/dist_ts/formats/cii/zugferd/zugferd.decoder.js +218 -0
  41. package/dist_ts/formats/cii/zugferd/zugferd.encoder.d.ts +97 -0
  42. package/dist_ts/formats/cii/zugferd/zugferd.encoder.js +550 -0
  43. package/dist_ts/formats/cii/zugferd/zugferd.types.d.ts +10 -0
  44. package/dist_ts/formats/cii/zugferd/zugferd.types.js +15 -0
  45. package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.d.ts +49 -0
  46. package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.js +229 -0
  47. package/dist_ts/formats/cii/zugferd/zugferd.validator.d.ts +16 -0
  48. package/dist_ts/formats/cii/zugferd/zugferd.validator.js +29 -0
  49. package/dist_ts/formats/decoder.factory.d.ts +15 -0
  50. package/dist_ts/formats/decoder.factory.js +46 -0
  51. package/dist_ts/formats/factories/decoder.factory.d.ts +13 -0
  52. package/dist_ts/formats/factories/decoder.factory.js +56 -0
  53. package/dist_ts/formats/factories/encoder.factory.d.ts +14 -0
  54. package/dist_ts/formats/factories/encoder.factory.js +40 -0
  55. package/dist_ts/formats/factories/validator.factory.d.ts +12 -0
  56. package/dist_ts/formats/factories/validator.factory.js +110 -0
  57. package/dist_ts/formats/factorx.decoder.d.ts +18 -0
  58. package/dist_ts/formats/factorx.decoder.js +178 -0
  59. package/dist_ts/formats/factorx.encoder.d.ts +51 -0
  60. package/dist_ts/formats/factorx.encoder.js +293 -0
  61. package/dist_ts/formats/facturx.decoder.d.ts +18 -0
  62. package/dist_ts/formats/facturx.decoder.js +210 -0
  63. package/dist_ts/formats/facturx.encoder.d.ts +51 -0
  64. package/dist_ts/formats/facturx.encoder.js +293 -0
  65. package/dist_ts/formats/facturx.validator.d.ts +67 -0
  66. package/dist_ts/formats/facturx.validator.js +266 -0
  67. package/dist_ts/formats/pdf/extractors/associated.extractor.d.ts +14 -0
  68. package/dist_ts/formats/pdf/extractors/associated.extractor.js +68 -0
  69. package/dist_ts/formats/pdf/extractors/base.extractor.d.ts +92 -0
  70. package/dist_ts/formats/pdf/extractors/base.extractor.js +319 -0
  71. package/dist_ts/formats/pdf/extractors/index.d.ts +4 -0
  72. package/dist_ts/formats/pdf/extractors/index.js +5 -0
  73. package/dist_ts/formats/pdf/extractors/standard.extractor.d.ts +13 -0
  74. package/dist_ts/formats/pdf/extractors/standard.extractor.js +74 -0
  75. package/dist_ts/formats/pdf/extractors/text.extractor.d.ts +45 -0
  76. package/dist_ts/formats/pdf/extractors/text.extractor.js +151 -0
  77. package/dist_ts/formats/pdf/pdf.embedder.d.ts +69 -0
  78. package/dist_ts/formats/pdf/pdf.embedder.js +183 -0
  79. package/dist_ts/formats/pdf/pdf.extractor.d.ts +49 -0
  80. package/dist_ts/formats/pdf/pdf.extractor.js +98 -0
  81. package/dist_ts/formats/pdf/robust-pdf.extractor.d.ts +40 -0
  82. package/dist_ts/formats/pdf/robust-pdf.extractor.js +324 -0
  83. package/dist_ts/formats/ubl/en16931.ubl.validator.d.ts +18 -0
  84. package/dist_ts/formats/ubl/en16931.ubl.validator.js +169 -0
  85. package/dist_ts/formats/ubl/generic/ubl.encoder.d.ts +151 -0
  86. package/dist_ts/formats/ubl/generic/ubl.encoder.js +892 -0
  87. package/dist_ts/formats/ubl/ubl.decoder.d.ts +61 -0
  88. package/dist_ts/formats/ubl/ubl.decoder.js +95 -0
  89. package/dist_ts/formats/ubl/ubl.encoder.d.ts +38 -0
  90. package/dist_ts/formats/ubl/ubl.encoder.js +46 -0
  91. package/dist_ts/formats/ubl/ubl.types.d.ts +16 -0
  92. package/dist_ts/formats/ubl/ubl.types.js +21 -0
  93. package/dist_ts/formats/ubl/ubl.validator.d.ts +50 -0
  94. package/dist_ts/formats/ubl/ubl.validator.js +112 -0
  95. package/dist_ts/formats/ubl/xrechnung/xrechnung.decoder.d.ts +34 -0
  96. package/dist_ts/formats/ubl/xrechnung/xrechnung.decoder.js +424 -0
  97. package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.d.ts +75 -0
  98. package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.js +555 -0
  99. package/dist_ts/formats/ubl/xrechnung.validator.d.ts +15 -0
  100. package/dist_ts/formats/ubl/xrechnung.validator.js +107 -0
  101. package/dist_ts/formats/ubl.validator.d.ts +82 -0
  102. package/dist_ts/formats/ubl.validator.js +306 -0
  103. package/dist_ts/formats/utils/format.detector.d.ts +62 -0
  104. package/dist_ts/formats/utils/format.detector.js +249 -0
  105. package/dist_ts/formats/validation/en16931.validator.d.ts +23 -0
  106. package/dist_ts/formats/validation/en16931.validator.js +119 -0
  107. package/dist_ts/formats/validator.factory.d.ts +18 -0
  108. package/dist_ts/formats/validator.factory.js +78 -0
  109. package/dist_ts/formats/xinvoice.decoder.d.ts +28 -0
  110. package/dist_ts/formats/xinvoice.decoder.js +332 -0
  111. package/dist_ts/formats/xinvoice.encoder.d.ts +19 -0
  112. package/dist_ts/formats/xinvoice.encoder.js +282 -0
  113. package/dist_ts/index.d.ts +51 -0
  114. package/dist_ts/index.js +90 -0
  115. package/dist_ts/interfaces/common.d.ts +79 -0
  116. package/dist_ts/interfaces/common.js +24 -0
  117. package/dist_ts/interfaces.d.ts +87 -0
  118. package/dist_ts/interfaces.js +23 -0
  119. package/dist_ts/plugins.d.ts +14 -0
  120. package/dist_ts/plugins.js +31 -0
  121. package/npmextra.json +35 -0
  122. package/package.json +71 -0
  123. package/readme.hints.md +1107 -0
  124. package/readme.howtofixtests.md +38 -0
  125. package/readme.literature.md +1 -0
  126. package/readme.md +998 -0
  127. package/readme.plan.md +481 -0
  128. package/ts/00_commitinfo_data.ts +8 -0
  129. package/ts/einvoice.ts +603 -0
  130. package/ts/errors.ts +341 -0
  131. package/ts/formats/base/base.decoder.ts +68 -0
  132. package/ts/formats/base/base.encoder.ts +14 -0
  133. package/ts/formats/base/base.validator.ts +64 -0
  134. package/ts/formats/cii/cii.decoder.ts +139 -0
  135. package/ts/formats/cii/cii.encoder.ts +64 -0
  136. package/ts/formats/cii/cii.types.ts +44 -0
  137. package/ts/formats/cii/cii.validator.ts +171 -0
  138. package/ts/formats/cii/facturx/facturx.decoder.ts +243 -0
  139. package/ts/formats/cii/facturx/facturx.encoder.ts +483 -0
  140. package/ts/formats/cii/facturx/facturx.types.ts +18 -0
  141. package/ts/formats/cii/facturx/facturx.validator.ts +180 -0
  142. package/ts/formats/cii/zugferd/zugferd.decoder.ts +256 -0
  143. package/ts/formats/cii/zugferd/zugferd.encoder.ts +661 -0
  144. package/ts/formats/cii/zugferd/zugferd.types.ts +18 -0
  145. package/ts/formats/cii/zugferd/zugferd.v1.decoder.ts +267 -0
  146. package/ts/formats/cii/zugferd/zugferd.validator.ts +31 -0
  147. package/ts/formats/factories/decoder.factory.ts +62 -0
  148. package/ts/formats/factories/encoder.factory.ts +47 -0
  149. package/ts/formats/factories/validator.factory.ts +134 -0
  150. package/ts/formats/pdf/extractors/associated.extractor.ts +78 -0
  151. package/ts/formats/pdf/extractors/base.extractor.ts +355 -0
  152. package/ts/formats/pdf/extractors/index.ts +4 -0
  153. package/ts/formats/pdf/extractors/standard.extractor.ts +86 -0
  154. package/ts/formats/pdf/extractors/text.extractor.ts +162 -0
  155. package/ts/formats/pdf/pdf.embedder.ts +242 -0
  156. package/ts/formats/pdf/pdf.extractor.ts +141 -0
  157. package/ts/formats/ubl/en16931.ubl.validator.ts +216 -0
  158. package/ts/formats/ubl/generic/ubl.encoder.ts +1041 -0
  159. package/ts/formats/ubl/ubl.decoder.ts +121 -0
  160. package/ts/formats/ubl/ubl.encoder.ts +63 -0
  161. package/ts/formats/ubl/ubl.types.ts +22 -0
  162. package/ts/formats/ubl/ubl.validator.ts +133 -0
  163. package/ts/formats/ubl/xrechnung/xrechnung.decoder.ts +471 -0
  164. package/ts/formats/ubl/xrechnung/xrechnung.encoder.ts +619 -0
  165. package/ts/formats/ubl/xrechnung.validator.ts +185 -0
  166. package/ts/formats/utils/format.detector.ts +306 -0
  167. package/ts/formats/validation/en16931.validator.ts +135 -0
  168. package/ts/index.ts +164 -0
  169. package/ts/interfaces/common.ts +90 -0
  170. package/ts/interfaces.ts +98 -0
  171. package/ts/plugins.ts +61 -0
@@ -0,0 +1,424 @@
1
+ import { UBLBaseDecoder } from '../ubl.decoder.js';
2
+ import { business, finance } from '../../../plugins.js';
3
+ import { UBLDocumentType } from '../ubl.types.js';
4
+ import { EN16931Validator } from '../../validation/en16931.validator.js';
5
+ /**
6
+ * Decoder for XRechnung (UBL) format
7
+ * Implements decoding of XRechnung invoices to TInvoice
8
+ */
9
+ export class XRechnungDecoder extends UBLBaseDecoder {
10
+ /**
11
+ * Decodes a UBL credit note
12
+ * @returns Promise resolving to a TCreditNote object
13
+ */
14
+ async decodeCreditNote() {
15
+ // Extract common data
16
+ const commonData = await this.extractCommonData();
17
+ // Return the invoice data as a credit note
18
+ return {
19
+ ...commonData,
20
+ accountingDocType: 'creditnote'
21
+ };
22
+ }
23
+ /**
24
+ * Decodes a UBL debit note (invoice)
25
+ * @returns Promise resolving to a TDebitNote object
26
+ */
27
+ async decodeDebitNote() {
28
+ // Extract common data
29
+ const commonData = await this.extractCommonData();
30
+ // Return the invoice data as a debit note
31
+ return {
32
+ ...commonData,
33
+ accountingDocType: 'debitnote'
34
+ };
35
+ }
36
+ /**
37
+ * Extracts common invoice data from XRechnung XML
38
+ * @returns Common invoice data
39
+ */
40
+ async extractCommonData() {
41
+ try {
42
+ // Default values
43
+ const invoiceId = this.getText('//cbc:ID', this.doc) || `INV-${Date.now()}`;
44
+ const issueDateText = this.getText('//cbc:IssueDate', this.doc);
45
+ const issueDate = issueDateText ? new Date(issueDateText).getTime() : Date.now();
46
+ const currencyCode = this.getText('//cbc:DocumentCurrencyCode', this.doc) || 'EUR';
47
+ // Extract payment terms
48
+ let dueInDays = 30; // Default
49
+ const dueDateText = this.getText('//cac:PaymentTerms/cbc:PaymentDueDate', this.doc);
50
+ if (dueDateText) {
51
+ const dueDateObj = new Date(dueDateText);
52
+ const issueDateObj = new Date(issueDate);
53
+ const diffTime = Math.abs(dueDateObj.getTime() - issueDateObj.getTime());
54
+ dueInDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
55
+ }
56
+ // Extract items
57
+ const items = [];
58
+ const invoiceLines = this.select('//cac:InvoiceLine', this.doc);
59
+ if (invoiceLines && Array.isArray(invoiceLines)) {
60
+ for (let i = 0; i < invoiceLines.length; i++) {
61
+ const line = invoiceLines[i];
62
+ const position = i + 1;
63
+ const name = this.getText('./cac:Item/cbc:Name', line) || `Item ${position}`;
64
+ const description = this.getText('./cac:Item/cbc:Description', line) || '';
65
+ const articleNumber = this.getText('./cac:Item/cac:SellersItemIdentification/cbc:ID', line) || '';
66
+ const buyerItemID = this.getText('./cac:Item/cac:BuyersItemIdentification/cbc:ID', line) || '';
67
+ const standardItemID = this.getText('./cac:Item/cac:StandardItemIdentification/cbc:ID', line) || '';
68
+ const commodityClassification = this.getText('./cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode', line) || '';
69
+ const unitType = this.getText('./cbc:InvoicedQuantity/@unitCode', line) || 'EA';
70
+ let unitQuantity = 1;
71
+ const quantityText = this.getText('./cbc:InvoicedQuantity', line);
72
+ if (quantityText) {
73
+ unitQuantity = parseFloat(quantityText) || 1;
74
+ }
75
+ let unitNetPrice = 0;
76
+ const priceText = this.getText('./cac:Price/cbc:PriceAmount', line);
77
+ if (priceText) {
78
+ unitNetPrice = parseFloat(priceText) || 0;
79
+ }
80
+ let vatPercentage = 0;
81
+ const percentText = this.getText('./cac:Item/cac:ClassifiedTaxCategory/cbc:Percent', line);
82
+ if (percentText) {
83
+ vatPercentage = parseFloat(percentText) || 0;
84
+ }
85
+ // Create item with extended metadata
86
+ const item = {
87
+ position,
88
+ name,
89
+ articleNumber,
90
+ unitType,
91
+ unitQuantity,
92
+ unitNetPrice,
93
+ vatPercentage
94
+ };
95
+ // Extract order line reference
96
+ const orderLineReference = this.getText('./cac:OrderLineReference/cac:OrderReference/cbc:ID', line) || '';
97
+ const orderLineReferenceId = this.getText('./cac:OrderLineReference/cbc:LineID', line) || '';
98
+ // Extract additional item properties
99
+ const additionalProps = {};
100
+ const propNodes = this.select('./cac:Item/cac:AdditionalItemProperty', line);
101
+ if (propNodes && Array.isArray(propNodes)) {
102
+ for (const propNode of propNodes) {
103
+ const propName = this.getText('./cbc:Name', propNode);
104
+ const propValue = this.getText('./cbc:Value', propNode);
105
+ if (propName && propValue) {
106
+ additionalProps[propName] = propValue;
107
+ }
108
+ }
109
+ }
110
+ // Store additional item data in metadata
111
+ if (description || buyerItemID || standardItemID || commodityClassification || orderLineReference || Object.keys(additionalProps).length > 0) {
112
+ item.metadata = {
113
+ description,
114
+ buyerItemID,
115
+ standardItemID,
116
+ commodityClassification,
117
+ orderLineReference,
118
+ orderLineReferenceId,
119
+ additionalProperties: additionalProps
120
+ };
121
+ }
122
+ items.push(item);
123
+ }
124
+ }
125
+ // Extract business references
126
+ const buyerReference = this.getText('//cbc:BuyerReference', this.doc);
127
+ const orderReference = this.getText('//cac:OrderReference/cbc:ID', this.doc);
128
+ const contractReference = this.getText('//cac:ContractDocumentReference/cbc:ID', this.doc);
129
+ const projectReference = this.getText('//cac:ProjectReference/cbc:ID', this.doc);
130
+ // Extract payment information
131
+ const paymentMeansCode = this.getText('//cac:PaymentMeans/cbc:PaymentMeansCode', this.doc);
132
+ const paymentID = this.getText('//cac:PaymentMeans/cbc:PaymentID', this.doc);
133
+ const paymentDueDate = this.getText('//cac:PaymentMeans/cbc:PaymentDueDate', this.doc);
134
+ const iban = this.getText('//cac:PaymentMeans/cac:PayeeFinancialAccount/cbc:ID', this.doc);
135
+ const bic = this.getText('//cac:PaymentMeans/cac:PayeeFinancialAccount/cac:FinancialInstitutionBranch/cbc:ID', this.doc);
136
+ const bankName = this.getText('//cac:PaymentMeans/cac:PayeeFinancialAccount/cac:FinancialInstitutionBranch/cbc:Name', this.doc);
137
+ const accountName = this.getText('//cac:PaymentMeans/cac:PayeeFinancialAccount/cbc:Name', this.doc);
138
+ // Extract payment terms with discount
139
+ const paymentTermsNote = this.getText('//cac:PaymentTerms/cbc:Note', this.doc);
140
+ const discountPercent = this.getText('//cac:PaymentTerms/cbc:SettlementDiscountPercent', this.doc);
141
+ // Extract period information
142
+ const periodStart = this.getText('//cac:InvoicePeriod/cbc:StartDate', this.doc);
143
+ const periodEnd = this.getText('//cac:InvoicePeriod/cbc:EndDate', this.doc);
144
+ const deliveryDate = this.getText('//cac:Delivery/cbc:ActualDeliveryDate', this.doc);
145
+ // Extract notes (excluding PaymentTerms notes)
146
+ const allNotes = [];
147
+ const noteNodes = this.select('//cbc:Note[not(parent::cac:PaymentTerms)]', this.doc);
148
+ if (noteNodes && Array.isArray(noteNodes)) {
149
+ for (let i = 0; i < noteNodes.length; i++) {
150
+ const noteText = noteNodes[i].textContent || '';
151
+ if (noteText) {
152
+ allNotes.push(noteText);
153
+ }
154
+ }
155
+ }
156
+ // Extract subject and notes separately
157
+ // If we have notes, the first one might be the subject
158
+ let subject = `Invoice ${invoiceId}`;
159
+ let notes = [...allNotes];
160
+ // If the first note doesn't look like a payment term or other standard note,
161
+ // treat it as the subject
162
+ if (allNotes.length > 0 && !allNotes[0].toLowerCase().includes('due in') &&
163
+ !allNotes[0].toLowerCase().includes('payment')) {
164
+ subject = allNotes[0];
165
+ notes = allNotes.slice(1); // Remove subject from notes
166
+ }
167
+ // Extract seller and buyer information
168
+ const seller = this.extractParty('//cac:AccountingSupplierParty/cac:Party');
169
+ const buyer = this.extractParty('//cac:AccountingCustomerParty/cac:Party');
170
+ // Create the common invoice data with metadata for business references
171
+ const invoiceData = {
172
+ type: 'accounting-doc',
173
+ accountingDocType: 'invoice',
174
+ id: invoiceId,
175
+ accountingDocId: invoiceId,
176
+ date: issueDate,
177
+ accountingDocStatus: 'issued',
178
+ versionInfo: {
179
+ type: 'final',
180
+ version: '1.0.0'
181
+ },
182
+ language: 'en',
183
+ incidenceId: invoiceId,
184
+ from: seller,
185
+ to: buyer,
186
+ subject: subject,
187
+ items: items,
188
+ dueInDays: dueInDays,
189
+ reverseCharge: false,
190
+ currency: currencyCode,
191
+ notes: notes,
192
+ objectActions: [],
193
+ metadata: {
194
+ format: 'xrechnung',
195
+ version: '1.0.0',
196
+ extensions: {
197
+ businessReferences: {
198
+ buyerReference,
199
+ orderReference,
200
+ contractReference,
201
+ projectReference
202
+ },
203
+ paymentInformation: {
204
+ paymentMeansCode,
205
+ paymentID,
206
+ paymentDueDate,
207
+ iban,
208
+ bic,
209
+ bankName,
210
+ accountName,
211
+ paymentTermsNote,
212
+ discountPercent
213
+ },
214
+ dateInformation: {
215
+ periodStart,
216
+ periodEnd,
217
+ deliveryDate
218
+ }
219
+ }
220
+ }
221
+ };
222
+ // Validate mandatory EN16931 fields unless validation is skipped
223
+ if (!this.skipValidation) {
224
+ EN16931Validator.validateMandatoryFields(invoiceData);
225
+ }
226
+ return invoiceData;
227
+ }
228
+ catch (error) {
229
+ // Re-throw validation errors
230
+ if (error.message && error.message.includes('EN16931 validation failed')) {
231
+ throw error;
232
+ }
233
+ console.error('Error extracting common data:', error);
234
+ // Return default data
235
+ return {
236
+ type: 'accounting-doc',
237
+ accountingDocType: 'invoice',
238
+ id: `INV-${Date.now()}`,
239
+ accountingDocId: `INV-${Date.now()}`,
240
+ date: Date.now(),
241
+ accountingDocStatus: 'issued',
242
+ versionInfo: {
243
+ type: 'final',
244
+ version: '1.0.0'
245
+ },
246
+ language: 'en',
247
+ incidenceId: `INV-${Date.now()}`,
248
+ from: this.createEmptyContact(),
249
+ to: this.createEmptyContact(),
250
+ subject: 'Invoice',
251
+ items: [],
252
+ dueInDays: 30,
253
+ reverseCharge: false,
254
+ currency: 'EUR',
255
+ notes: [],
256
+ objectActions: []
257
+ };
258
+ }
259
+ }
260
+ /**
261
+ * Extracts party information from XML
262
+ * @param partyPath XPath to the party element
263
+ * @returns TContact object
264
+ */
265
+ extractParty(partyPath) {
266
+ try {
267
+ // Default values
268
+ let name = '';
269
+ let streetName = '';
270
+ let houseNumber = '0';
271
+ let city = '';
272
+ let postalCode = '';
273
+ let country = '';
274
+ let countryCode = '';
275
+ let vatId = '';
276
+ let registrationId = '';
277
+ let registrationName = '';
278
+ let contactPhone = '';
279
+ let contactEmail = '';
280
+ let contactName = '';
281
+ let gln = '';
282
+ const additionalIdentifiers = [];
283
+ // Try to extract party information
284
+ const partyNodes = this.select(partyPath, this.doc);
285
+ if (partyNodes && Array.isArray(partyNodes) && partyNodes.length > 0) {
286
+ const party = partyNodes[0];
287
+ // Extract GLN from EndpointID
288
+ const endpointId = this.getText('./cbc:EndpointID[@schemeID="0088"]', party);
289
+ if (endpointId) {
290
+ gln = endpointId;
291
+ }
292
+ // Extract additional party identifications
293
+ const partyIdNodes = this.select('./cac:PartyIdentification', party);
294
+ if (partyIdNodes && Array.isArray(partyIdNodes)) {
295
+ for (const idNode of partyIdNodes) {
296
+ const idValue = this.getText('./cbc:ID', idNode);
297
+ const idElement = idNode.getElementsByTagName('cbc:ID')[0];
298
+ const schemeId = idElement?.getAttribute('schemeID');
299
+ if (idValue) {
300
+ additionalIdentifiers.push({
301
+ value: idValue,
302
+ scheme: schemeId || ''
303
+ });
304
+ }
305
+ }
306
+ }
307
+ // Extract name
308
+ name = this.getText('./cac:PartyName/cbc:Name', party) || '';
309
+ // Extract address
310
+ const addressNodes = this.select('./cac:PostalAddress', party);
311
+ if (addressNodes && Array.isArray(addressNodes) && addressNodes.length > 0) {
312
+ const address = addressNodes[0];
313
+ streetName = this.getText('./cbc:StreetName', address) || '';
314
+ houseNumber = this.getText('./cbc:BuildingNumber', address) || '0';
315
+ city = this.getText('./cbc:CityName', address) || '';
316
+ postalCode = this.getText('./cbc:PostalZone', address) || '';
317
+ const countryNodes = this.select('./cac:Country', address);
318
+ if (countryNodes && Array.isArray(countryNodes) && countryNodes.length > 0) {
319
+ const countryNode = countryNodes[0];
320
+ country = this.getText('./cbc:Name', countryNode) || '';
321
+ countryCode = this.getText('./cbc:IdentificationCode', countryNode) || '';
322
+ }
323
+ }
324
+ // Extract tax information
325
+ const taxSchemeNodes = this.select('./cac:PartyTaxScheme', party);
326
+ if (taxSchemeNodes && Array.isArray(taxSchemeNodes) && taxSchemeNodes.length > 0) {
327
+ vatId = this.getText('./cbc:CompanyID', taxSchemeNodes[0]) || '';
328
+ }
329
+ // Extract registration information
330
+ const legalEntityNodes = this.select('./cac:PartyLegalEntity', party);
331
+ if (legalEntityNodes && Array.isArray(legalEntityNodes) && legalEntityNodes.length > 0) {
332
+ registrationId = this.getText('./cbc:CompanyID', legalEntityNodes[0]) || '';
333
+ registrationName = this.getText('./cbc:RegistrationName', legalEntityNodes[0]) || name;
334
+ }
335
+ // Extract contact information
336
+ const contactNodes = this.select('./cac:Contact', party);
337
+ if (contactNodes && Array.isArray(contactNodes) && contactNodes.length > 0) {
338
+ const contact = contactNodes[0];
339
+ contactPhone = this.getText('./cbc:Telephone', contact) || '';
340
+ contactEmail = this.getText('./cbc:ElectronicMail', contact) || '';
341
+ contactName = this.getText('./cbc:Name', contact) || '';
342
+ }
343
+ }
344
+ // Create contact with additional metadata for contact information
345
+ const contact = {
346
+ type: 'company',
347
+ name: name,
348
+ description: '',
349
+ address: {
350
+ streetName: streetName,
351
+ houseNumber: houseNumber,
352
+ city: city,
353
+ postalCode: postalCode,
354
+ country: country,
355
+ countryCode: countryCode
356
+ },
357
+ status: 'active',
358
+ foundedDate: {
359
+ year: 2000,
360
+ month: 1,
361
+ day: 1
362
+ },
363
+ registrationDetails: {
364
+ vatId: vatId,
365
+ registrationId: registrationId,
366
+ registrationName: registrationName
367
+ }
368
+ };
369
+ // Store contact information and additional identifiers in metadata if available
370
+ const metadata = {};
371
+ if (contactPhone || contactEmail || contactName) {
372
+ metadata.contactInformation = {
373
+ phone: contactPhone,
374
+ email: contactEmail,
375
+ name: contactName
376
+ };
377
+ }
378
+ if (gln) {
379
+ contact.gln = gln;
380
+ }
381
+ if (additionalIdentifiers.length > 0) {
382
+ contact.additionalIdentifiers = additionalIdentifiers;
383
+ }
384
+ if (Object.keys(metadata).length > 0) {
385
+ contact.metadata = metadata;
386
+ }
387
+ return contact;
388
+ }
389
+ catch (error) {
390
+ console.error('Error extracting party information:', error);
391
+ return this.createEmptyContact();
392
+ }
393
+ }
394
+ /**
395
+ * Creates an empty TContact object
396
+ * @returns Empty TContact object
397
+ */
398
+ createEmptyContact() {
399
+ return {
400
+ type: 'company',
401
+ name: '',
402
+ description: '',
403
+ address: {
404
+ streetName: '',
405
+ houseNumber: '0',
406
+ city: '',
407
+ country: '',
408
+ postalCode: ''
409
+ },
410
+ status: 'active',
411
+ foundedDate: {
412
+ year: 2000,
413
+ month: 1,
414
+ day: 1
415
+ },
416
+ registrationDetails: {
417
+ vatId: '',
418
+ registrationId: '',
419
+ registrationName: ''
420
+ }
421
+ };
422
+ }
423
+ }
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHJlY2hudW5nLmRlY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9mb3JtYXRzL3VibC94cmVjaG51bmcveHJlY2hudW5nLmRlY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXpFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUFjO0lBQ2xEOzs7T0FHRztJQUNPLEtBQUssQ0FBQyxnQkFBZ0I7UUFDOUIsc0JBQXNCO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFbEQsMkNBQTJDO1FBQzNDLE9BQU87WUFDTCxHQUFHLFVBQVU7WUFDYixpQkFBaUIsRUFBRSxZQUFxQjtTQUNmLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLEtBQUssQ0FBQyxlQUFlO1FBQzdCLHNCQUFzQjtRQUN0QixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRWxELDBDQUEwQztRQUMxQyxPQUFPO1lBQ0wsR0FBRyxVQUFVO1lBQ2IsaUJBQWlCLEVBQUUsV0FBb0I7U0FDZixDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxLQUFLLENBQUMsaUJBQWlCO1FBQzdCLElBQUksQ0FBQztZQUNILGlCQUFpQjtZQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMs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
@@ -0,0 +1,75 @@
1
+ import { UBLEncoder } from '../generic/ubl.encoder.js';
2
+ import type { TCreditNote, TDebitNote } from '../../../interfaces/common.js';
3
+ /**
4
+ * Encoder for XRechnung (UBL) format
5
+ * Extends the generic UBL encoder with XRechnung-specific customizations
6
+ */
7
+ export declare class XRechnungEncoder extends UBLEncoder {
8
+ /**
9
+ * Encodes a credit note into XRechnung XML
10
+ * @param creditNote Credit note to encode
11
+ * @returns XRechnung XML string
12
+ */
13
+ protected encodeCreditNote(creditNote: TCreditNote): Promise<string>;
14
+ /**
15
+ * Encodes a debit note (invoice) into XRechnung XML
16
+ * @param debitNote Debit note to encode
17
+ * @returns XRechnung XML string
18
+ */
19
+ protected encodeDebitNote(debitNote: TDebitNote): Promise<string>;
20
+ /**
21
+ * Applies XRechnung-specific customizations to the document
22
+ * @param doc XML document
23
+ * @param invoice Invoice data
24
+ */
25
+ private applyXRechnungCustomizations;
26
+ /**
27
+ * Adds electronic address to party if not already present
28
+ * @param doc XML document
29
+ * @param partyType Party type selector
30
+ * @param party Party data
31
+ */
32
+ private addElectronicAddressToParty;
33
+ /**
34
+ * Fixes German country codes in the document
35
+ * @param doc XML document
36
+ */
37
+ private fixGermanCountryCodes;
38
+ /**
39
+ * Adds business references from metadata to the document
40
+ * @param doc XML document
41
+ * @param businessReferences Business references from metadata
42
+ */
43
+ private addBusinessReferences;
44
+ /**
45
+ * Enhances payment information from metadata
46
+ * @param doc XML document
47
+ * @param paymentInfo Payment information from metadata
48
+ */
49
+ private enhancePaymentInformation;
50
+ /**
51
+ * Adds date information from metadata
52
+ * @param doc XML document
53
+ * @param dateInfo Date information from metadata
54
+ */
55
+ private addDateInformation;
56
+ /**
57
+ * Enhances party information with contact details from metadata
58
+ * @param doc XML document
59
+ * @param invoice Invoice data
60
+ */
61
+ private enhancePartyInformation;
62
+ /**
63
+ * Adds contact information to a party
64
+ * @param doc XML document
65
+ * @param partySelector Party selector
66
+ * @param contactInfo Contact information from metadata
67
+ */
68
+ private addContactToParty;
69
+ /**
70
+ * Enhances line items with metadata
71
+ * @param doc XML document
72
+ * @param invoice Invoice data
73
+ */
74
+ private enhanceLineItems;
75
+ }