@fin.cx/einvoice 5.0.3 → 5.1.3
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.js +1 -1
- package/dist_ts/einvoice.d.ts +4 -8
- package/dist_ts/einvoice.js +46 -7
- package/dist_ts/formats/converters/xml-to-einvoice.converter.d.ts +21 -0
- package/dist_ts/formats/converters/xml-to-einvoice.converter.js +127 -0
- package/dist_ts/formats/semantic/bt-bg.model.d.ts +445 -0
- package/dist_ts/formats/semantic/bt-bg.model.js +12 -0
- package/dist_ts/formats/semantic/semantic.adapter.d.ts +87 -0
- package/dist_ts/formats/semantic/semantic.adapter.js +538 -0
- package/dist_ts/formats/semantic/semantic.validator.d.ts +48 -0
- package/dist_ts/formats/semantic/semantic.validator.js +596 -0
- package/dist_ts/formats/utils/currency.calculator.decimal.d.ts +98 -0
- package/dist_ts/formats/utils/currency.calculator.decimal.js +212 -0
- package/dist_ts/formats/utils/currency.utils.d.ts +99 -0
- package/dist_ts/formats/utils/currency.utils.js +250 -0
- package/dist_ts/formats/utils/decimal.d.ts +151 -0
- package/dist_ts/formats/utils/decimal.js +435 -0
- package/dist_ts/formats/validation/codelist.validator.d.ts +49 -0
- package/dist_ts/formats/validation/codelist.validator.js +188 -0
- package/dist_ts/formats/validation/conformance.harness.d.ts +99 -0
- package/dist_ts/formats/validation/conformance.harness.js +471 -0
- package/dist_ts/formats/validation/en16931.business-rules.validator.d.ts +58 -0
- package/dist_ts/formats/validation/en16931.business-rules.validator.js +459 -0
- package/dist_ts/formats/validation/facturx.validator.d.ts +75 -0
- package/dist_ts/formats/validation/facturx.validator.js +522 -0
- package/dist_ts/formats/validation/integrated.validator.d.ts +82 -0
- package/dist_ts/formats/validation/integrated.validator.js +311 -0
- package/dist_ts/formats/validation/peppol.validator.d.ts +77 -0
- package/dist_ts/formats/validation/peppol.validator.js +529 -0
- package/dist_ts/formats/validation/schematron.downloader.d.ts +71 -0
- package/dist_ts/formats/validation/schematron.downloader.js +254 -0
- package/dist_ts/formats/validation/schematron.integration.d.ts +60 -0
- package/dist_ts/formats/validation/schematron.integration.js +230 -0
- package/dist_ts/formats/validation/schematron.validator.d.ts +79 -0
- package/dist_ts/formats/validation/schematron.validator.js +288 -0
- package/dist_ts/formats/validation/schematron.worker.d.ts +50 -0
- package/dist_ts/formats/validation/schematron.worker.js +185 -0
- package/dist_ts/formats/validation/validation.types.d.ts +163 -0
- package/dist_ts/formats/validation/validation.types.js +181 -0
- package/dist_ts/formats/validation/vat-categories.validator.d.ts +87 -0
- package/dist_ts/formats/validation/vat-categories.validator.js +497 -0
- package/dist_ts/formats/validation/xrechnung.validator.d.ts +92 -0
- package/dist_ts/formats/validation/xrechnung.validator.js +417 -0
- package/dist_ts/interfaces/common.d.ts +1 -0
- package/dist_ts/interfaces/en16931-metadata.d.ts +83 -0
- package/dist_ts/interfaces/en16931-metadata.js +6 -0
- package/dist_ts/plugins.d.ts +3 -1
- package/dist_ts/plugins.js +7 -2
- package/dist_ts_install/download-schematron.d.ts +6 -0
- package/dist_ts_install/download-schematron.js +62 -0
- package/dist_ts_install/download-test-samples.d.ts +19 -0
- package/dist_ts_install/download-test-samples.js +169 -0
- package/dist_ts_install/download-xrechnung-rules.d.ts +7 -0
- package/dist_ts_install/download-xrechnung-rules.js +146 -0
- package/dist_ts_install/index.d.ts +8 -0
- package/dist_ts_install/index.js +246 -0
- package/npmextra.json +1 -1
- package/package.json +12 -6
- package/readme.md +255 -810
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/einvoice.ts +63 -14
- package/ts/formats/converters/xml-to-einvoice.converter.ts +142 -0
- package/ts/formats/semantic/bt-bg.model.ts +524 -0
- package/ts/formats/semantic/semantic.adapter.ts +600 -0
- package/ts/formats/semantic/semantic.validator.ts +654 -0
- package/ts/formats/utils/currency.calculator.decimal.ts +323 -0
- package/ts/formats/utils/currency.utils.ts +299 -0
- package/ts/formats/utils/decimal.ts +509 -0
- package/ts/formats/validation/codelist.validator.ts +317 -0
- package/ts/formats/validation/conformance.harness.ts +591 -0
- package/ts/formats/validation/en16931.business-rules.validator.ts +694 -0
- package/ts/formats/validation/facturx.validator.ts +579 -0
- package/ts/formats/validation/integrated.validator.ts +405 -0
- package/ts/formats/validation/peppol.validator.ts +589 -0
- package/ts/formats/validation/schematron.downloader.ts +304 -0
- package/ts/formats/validation/schematron.integration.ts +285 -0
- package/ts/formats/validation/schematron.validator.ts +348 -0
- package/ts/formats/validation/schematron.worker.ts +221 -0
- package/ts/formats/validation/validation.types.ts +274 -0
- package/ts/formats/validation/vat-categories.validator.ts +845 -0
- package/ts/formats/validation/xrechnung.validator.ts +494 -0
- package/ts/interfaces/common.ts +1 -0
- package/ts/interfaces/en16931-metadata.ts +104 -0
- package/ts/plugins.ts +8 -0
- package/ts/tspublish.json +3 -0
- package/dist_ts/classes.decoder.d.ts +0 -40
- package/dist_ts/classes.decoder.js +0 -320
- package/dist_ts/classes.encoder.d.ts +0 -51
- package/dist_ts/classes.encoder.js +0 -293
- package/dist_ts/classes.xinvoice.d.ts +0 -136
- package/dist_ts/classes.xinvoice.js +0 -352
- package/dist_ts/formats/base.decoder.d.ts +0 -19
- package/dist_ts/formats/base.decoder.js +0 -130
- package/dist_ts/formats/base.validator.d.ts +0 -44
- package/dist_ts/formats/base.validator.js +0 -39
- package/dist_ts/formats/decoder.factory.d.ts +0 -15
- package/dist_ts/formats/decoder.factory.js +0 -46
- package/dist_ts/formats/factorx.decoder.d.ts +0 -18
- package/dist_ts/formats/factorx.decoder.js +0 -178
- package/dist_ts/formats/factorx.encoder.d.ts +0 -51
- package/dist_ts/formats/factorx.encoder.js +0 -293
- package/dist_ts/formats/facturx.decoder.d.ts +0 -18
- package/dist_ts/formats/facturx.decoder.js +0 -210
- package/dist_ts/formats/facturx.encoder.d.ts +0 -51
- package/dist_ts/formats/facturx.encoder.js +0 -293
- package/dist_ts/formats/facturx.validator.d.ts +0 -67
- package/dist_ts/formats/facturx.validator.js +0 -266
- package/dist_ts/formats/pdf/robust-pdf.extractor.d.ts +0 -40
- package/dist_ts/formats/pdf/robust-pdf.extractor.js +0 -324
- package/dist_ts/formats/ubl.validator.d.ts +0 -82
- package/dist_ts/formats/ubl.validator.js +0 -306
- package/dist_ts/formats/validator.factory.d.ts +0 -18
- package/dist_ts/formats/validator.factory.js +0 -78
- package/dist_ts/formats/xinvoice.decoder.d.ts +0 -28
- package/dist_ts/formats/xinvoice.decoder.js +0 -332
- package/dist_ts/formats/xinvoice.encoder.d.ts +0 -19
- package/dist_ts/formats/xinvoice.encoder.js +0 -282
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
import * as plugins from './plugins.js';
|
|
2
|
-
import { business, finance } from './plugins.js';
|
|
3
|
-
import { InvoiceFormat, ValidationLevel } from './interfaces/common.js';
|
|
4
|
-
// PDF-related imports are handled by the PDF utilities
|
|
5
|
-
// Import factories
|
|
6
|
-
import { DecoderFactory } from './formats/factories/decoder.factory.js';
|
|
7
|
-
import { EncoderFactory } from './formats/factories/encoder.factory.js';
|
|
8
|
-
import { ValidatorFactory } from './formats/factories/validator.factory.js';
|
|
9
|
-
// Import PDF utilities
|
|
10
|
-
import { PDFEmbedder } from './formats/pdf/pdf.embedder.js';
|
|
11
|
-
import { PDFExtractor } from './formats/pdf/pdf.extractor.js';
|
|
12
|
-
// Import format detector
|
|
13
|
-
import { FormatDetector } from './formats/utils/format.detector.js';
|
|
14
|
-
/**
|
|
15
|
-
* Main class for working with electronic invoices.
|
|
16
|
-
* Supports various invoice formats including Factur-X, ZUGFeRD, UBL, and XRechnung
|
|
17
|
-
* Implements TInvoice interface for seamless integration with existing systems
|
|
18
|
-
*/
|
|
19
|
-
export class XInvoice {
|
|
20
|
-
/**
|
|
21
|
-
* Creates a new XInvoice instance
|
|
22
|
-
* @param options Configuration options
|
|
23
|
-
*/
|
|
24
|
-
constructor(options) {
|
|
25
|
-
// TInvoice interface properties
|
|
26
|
-
this.id = '';
|
|
27
|
-
this.invoiceId = '';
|
|
28
|
-
this.invoiceType = 'debitnote';
|
|
29
|
-
this.versionInfo = {
|
|
30
|
-
type: 'draft',
|
|
31
|
-
version: '1.0.0'
|
|
32
|
-
};
|
|
33
|
-
this.type = 'invoice';
|
|
34
|
-
this.date = Date.now();
|
|
35
|
-
this.status = 'invoice';
|
|
36
|
-
this.subject = '';
|
|
37
|
-
this.incidenceId = '';
|
|
38
|
-
this.language = 'en';
|
|
39
|
-
this.objectActions = [];
|
|
40
|
-
this.pdf = null;
|
|
41
|
-
this.pdfAttachments = null;
|
|
42
|
-
this.accentColor = null;
|
|
43
|
-
this.logoUrl = null;
|
|
44
|
-
// Additional properties for invoice data
|
|
45
|
-
this.items = [];
|
|
46
|
-
this.dueInDays = 30;
|
|
47
|
-
this.reverseCharge = false;
|
|
48
|
-
this.currency = 'EUR';
|
|
49
|
-
this.notes = [];
|
|
50
|
-
// XInvoice specific properties
|
|
51
|
-
this.xmlString = '';
|
|
52
|
-
this.detectedFormat = InvoiceFormat.UNKNOWN;
|
|
53
|
-
this.validationErrors = [];
|
|
54
|
-
this.options = {
|
|
55
|
-
validateOnLoad: false,
|
|
56
|
-
validationLevel: ValidationLevel.SYNTAX
|
|
57
|
-
};
|
|
58
|
-
// PDF utilities
|
|
59
|
-
this.pdfEmbedder = new PDFEmbedder();
|
|
60
|
-
this.pdfExtractor = new PDFExtractor();
|
|
61
|
-
// Initialize empty contact objects
|
|
62
|
-
this.from = this.createEmptyContact();
|
|
63
|
-
this.to = this.createEmptyContact();
|
|
64
|
-
// Apply options if provided
|
|
65
|
-
if (options) {
|
|
66
|
-
this.options = { ...this.options, ...options };
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Creates an empty TContact object
|
|
71
|
-
*/
|
|
72
|
-
createEmptyContact() {
|
|
73
|
-
return {
|
|
74
|
-
name: '',
|
|
75
|
-
type: 'company',
|
|
76
|
-
description: '',
|
|
77
|
-
address: {
|
|
78
|
-
streetName: '',
|
|
79
|
-
houseNumber: '0',
|
|
80
|
-
city: '',
|
|
81
|
-
country: '',
|
|
82
|
-
postalCode: ''
|
|
83
|
-
},
|
|
84
|
-
status: 'active',
|
|
85
|
-
foundedDate: {
|
|
86
|
-
year: 2000,
|
|
87
|
-
month: 1,
|
|
88
|
-
day: 1
|
|
89
|
-
},
|
|
90
|
-
registrationDetails: {
|
|
91
|
-
vatId: '',
|
|
92
|
-
registrationId: '',
|
|
93
|
-
registrationName: ''
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Creates a new XInvoice instance from XML
|
|
99
|
-
* @param xmlString XML content
|
|
100
|
-
* @param options Configuration options
|
|
101
|
-
* @returns XInvoice instance
|
|
102
|
-
*/
|
|
103
|
-
static async fromXml(xmlString, options) {
|
|
104
|
-
const xinvoice = new XInvoice(options);
|
|
105
|
-
// Load XML data
|
|
106
|
-
await xinvoice.loadXml(xmlString);
|
|
107
|
-
return xinvoice;
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Creates a new XInvoice instance from PDF
|
|
111
|
-
* @param pdfBuffer PDF buffer
|
|
112
|
-
* @param options Configuration options
|
|
113
|
-
* @returns XInvoice instance
|
|
114
|
-
*/
|
|
115
|
-
static async fromPdf(pdfBuffer, options) {
|
|
116
|
-
const xinvoice = new XInvoice(options);
|
|
117
|
-
// Load PDF data
|
|
118
|
-
await xinvoice.loadPdf(pdfBuffer);
|
|
119
|
-
return xinvoice;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Loads XML data into the XInvoice instance
|
|
123
|
-
* @param xmlString XML content
|
|
124
|
-
* @param validate Whether to validate the XML
|
|
125
|
-
* @returns This instance for chaining
|
|
126
|
-
*/
|
|
127
|
-
async loadXml(xmlString, validate = false) {
|
|
128
|
-
this.xmlString = xmlString;
|
|
129
|
-
// Detect format
|
|
130
|
-
this.detectedFormat = FormatDetector.detectFormat(xmlString);
|
|
131
|
-
try {
|
|
132
|
-
// Initialize the decoder with the XML string using the factory
|
|
133
|
-
const decoder = DecoderFactory.createDecoder(xmlString);
|
|
134
|
-
// Decode the XML into a TInvoice object
|
|
135
|
-
const invoice = await decoder.decode();
|
|
136
|
-
// Copy data from the decoded invoice
|
|
137
|
-
this.copyInvoiceData(invoice);
|
|
138
|
-
// Validate the XML if requested or if validateOnLoad is true
|
|
139
|
-
if (validate || this.options.validateOnLoad) {
|
|
140
|
-
await this.validate(this.options.validationLevel);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
catch (error) {
|
|
144
|
-
console.error('Error loading XML:', error);
|
|
145
|
-
throw error;
|
|
146
|
-
}
|
|
147
|
-
return this;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Loads PDF data into the XInvoice instance
|
|
151
|
-
* @param pdfBuffer PDF buffer
|
|
152
|
-
* @param validate Whether to validate the extracted XML
|
|
153
|
-
* @returns This instance for chaining
|
|
154
|
-
*/
|
|
155
|
-
async loadPdf(pdfBuffer, validate = false) {
|
|
156
|
-
try {
|
|
157
|
-
// Extract XML from PDF using the consolidated extractor
|
|
158
|
-
const extractResult = await this.pdfExtractor.extractXml(pdfBuffer);
|
|
159
|
-
// Store the PDF buffer
|
|
160
|
-
this.pdf = {
|
|
161
|
-
name: 'invoice.pdf',
|
|
162
|
-
id: `invoice-${Date.now()}`,
|
|
163
|
-
metadata: {
|
|
164
|
-
textExtraction: '',
|
|
165
|
-
format: extractResult.success ? extractResult.format?.toString() : undefined
|
|
166
|
-
},
|
|
167
|
-
buffer: pdfBuffer instanceof Buffer ? new Uint8Array(pdfBuffer) : pdfBuffer
|
|
168
|
-
};
|
|
169
|
-
// Handle extraction result
|
|
170
|
-
if (!extractResult.success || !extractResult.xml) {
|
|
171
|
-
const errorMessage = extractResult.error ? extractResult.error.message : 'Unknown error extracting XML from PDF';
|
|
172
|
-
console.warn('XML extraction failed:', errorMessage);
|
|
173
|
-
throw new Error(`No XML found in PDF: ${errorMessage}`);
|
|
174
|
-
}
|
|
175
|
-
// Load the extracted XML
|
|
176
|
-
await this.loadXml(extractResult.xml, validate);
|
|
177
|
-
// Store the detected format
|
|
178
|
-
this.detectedFormat = extractResult.format || InvoiceFormat.UNKNOWN;
|
|
179
|
-
return this;
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
console.error('Error loading PDF:', error);
|
|
183
|
-
throw error;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Copies data from a TInvoice object
|
|
188
|
-
* @param invoice Source invoice data
|
|
189
|
-
*/
|
|
190
|
-
copyInvoiceData(invoice) {
|
|
191
|
-
// Copy basic properties
|
|
192
|
-
this.id = invoice.id;
|
|
193
|
-
this.invoiceId = invoice.invoiceId || invoice.id;
|
|
194
|
-
this.invoiceType = invoice.invoiceType;
|
|
195
|
-
this.versionInfo = { ...invoice.versionInfo };
|
|
196
|
-
this.type = invoice.type;
|
|
197
|
-
this.date = invoice.date;
|
|
198
|
-
this.status = invoice.status;
|
|
199
|
-
this.subject = invoice.subject;
|
|
200
|
-
this.from = { ...invoice.from };
|
|
201
|
-
this.to = { ...invoice.to };
|
|
202
|
-
this.incidenceId = invoice.incidenceId;
|
|
203
|
-
this.language = invoice.language;
|
|
204
|
-
this.legalContact = invoice.legalContact ? { ...invoice.legalContact } : undefined;
|
|
205
|
-
this.objectActions = [...invoice.objectActions];
|
|
206
|
-
this.pdf = invoice.pdf;
|
|
207
|
-
this.pdfAttachments = invoice.pdfAttachments;
|
|
208
|
-
// Copy invoice-specific properties
|
|
209
|
-
if (invoice.items)
|
|
210
|
-
this.items = [...invoice.items];
|
|
211
|
-
if (invoice.dueInDays)
|
|
212
|
-
this.dueInDays = invoice.dueInDays;
|
|
213
|
-
if (invoice.reverseCharge !== undefined)
|
|
214
|
-
this.reverseCharge = invoice.reverseCharge;
|
|
215
|
-
if (invoice.currency)
|
|
216
|
-
this.currency = invoice.currency;
|
|
217
|
-
if (invoice.notes)
|
|
218
|
-
this.notes = [...invoice.notes];
|
|
219
|
-
if (invoice.periodOfPerformance)
|
|
220
|
-
this.periodOfPerformance = { ...invoice.periodOfPerformance };
|
|
221
|
-
if (invoice.deliveryDate)
|
|
222
|
-
this.deliveryDate = invoice.deliveryDate;
|
|
223
|
-
if (invoice.buyerReference)
|
|
224
|
-
this.buyerReference = invoice.buyerReference;
|
|
225
|
-
if (invoice.electronicAddress)
|
|
226
|
-
this.electronicAddress = { ...invoice.electronicAddress };
|
|
227
|
-
if (invoice.paymentOptions)
|
|
228
|
-
this.paymentOptions = { ...invoice.paymentOptions };
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Validates the XML against the appropriate format rules
|
|
232
|
-
* @param level Validation level (syntax, semantic, business)
|
|
233
|
-
* @returns Validation result
|
|
234
|
-
*/
|
|
235
|
-
async validate(level = ValidationLevel.SYNTAX) {
|
|
236
|
-
if (!this.xmlString) {
|
|
237
|
-
throw new Error('No XML to validate');
|
|
238
|
-
}
|
|
239
|
-
try {
|
|
240
|
-
// Initialize the validator with the XML string
|
|
241
|
-
const validator = ValidatorFactory.createValidator(this.xmlString);
|
|
242
|
-
// Run validation
|
|
243
|
-
const result = validator.validate(level);
|
|
244
|
-
// Store validation errors
|
|
245
|
-
this.validationErrors = result.errors;
|
|
246
|
-
return result;
|
|
247
|
-
}
|
|
248
|
-
catch (error) {
|
|
249
|
-
console.error('Error validating XML:', error);
|
|
250
|
-
const errorResult = {
|
|
251
|
-
valid: false,
|
|
252
|
-
errors: [{
|
|
253
|
-
code: 'VAL-ERROR',
|
|
254
|
-
message: `Validation error: ${error instanceof Error ? error.message : String(error)}`
|
|
255
|
-
}],
|
|
256
|
-
level
|
|
257
|
-
};
|
|
258
|
-
this.validationErrors = errorResult.errors;
|
|
259
|
-
return errorResult;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Checks if the invoice is valid
|
|
264
|
-
* @returns True if no validation errors were found
|
|
265
|
-
*/
|
|
266
|
-
isValid() {
|
|
267
|
-
return this.validationErrors.length === 0;
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Gets validation errors from the last validation
|
|
271
|
-
* @returns Array of validation errors
|
|
272
|
-
*/
|
|
273
|
-
getValidationErrors() {
|
|
274
|
-
return this.validationErrors;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Exports the invoice as XML in the specified format
|
|
278
|
-
* @param format Target format (e.g., 'facturx', 'xrechnung')
|
|
279
|
-
* @returns XML string in the specified format
|
|
280
|
-
*/
|
|
281
|
-
async exportXml(format = 'facturx') {
|
|
282
|
-
// Create encoder for the specified format
|
|
283
|
-
const encoder = EncoderFactory.createEncoder(format);
|
|
284
|
-
// Generate XML
|
|
285
|
-
return await encoder.encode(this);
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Exports the invoice as a PDF with embedded XML
|
|
289
|
-
* @param format Target format (e.g., 'facturx', 'zugferd', 'xrechnung', 'ubl')
|
|
290
|
-
* @returns PDF object with embedded XML
|
|
291
|
-
*/
|
|
292
|
-
async exportPdf(format = 'facturx') {
|
|
293
|
-
if (!this.pdf) {
|
|
294
|
-
throw new Error('No PDF data available. Use loadPdf() first or set the pdf property.');
|
|
295
|
-
}
|
|
296
|
-
// Generate XML in the specified format
|
|
297
|
-
const xmlContent = await this.exportXml(format);
|
|
298
|
-
// Determine filename based on format
|
|
299
|
-
let filename = 'invoice.xml';
|
|
300
|
-
let description = 'XML Invoice';
|
|
301
|
-
switch (format.toLowerCase()) {
|
|
302
|
-
case 'facturx':
|
|
303
|
-
filename = 'factur-x.xml';
|
|
304
|
-
description = 'Factur-X XML Invoice';
|
|
305
|
-
break;
|
|
306
|
-
case 'zugferd':
|
|
307
|
-
filename = 'zugferd-invoice.xml';
|
|
308
|
-
description = 'ZUGFeRD XML Invoice';
|
|
309
|
-
break;
|
|
310
|
-
case 'xrechnung':
|
|
311
|
-
filename = 'xrechnung.xml';
|
|
312
|
-
description = 'XRechnung XML Invoice';
|
|
313
|
-
break;
|
|
314
|
-
case 'ubl':
|
|
315
|
-
filename = 'ubl-invoice.xml';
|
|
316
|
-
description = 'UBL XML Invoice';
|
|
317
|
-
break;
|
|
318
|
-
}
|
|
319
|
-
// Embed XML into PDF
|
|
320
|
-
const result = await this.pdfEmbedder.createPdfWithXml(this.pdf.buffer, xmlContent, filename, description, this.pdf.name, this.pdf.id);
|
|
321
|
-
// Handle potential errors
|
|
322
|
-
if (!result.success || !result.pdf) {
|
|
323
|
-
const errorMessage = result.error ? result.error.message : 'Unknown error embedding XML into PDF';
|
|
324
|
-
console.error('Error exporting PDF:', errorMessage);
|
|
325
|
-
throw new Error(`Failed to export PDF: ${errorMessage}`);
|
|
326
|
-
}
|
|
327
|
-
return result.pdf;
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Gets the raw XML content
|
|
331
|
-
* @returns XML string
|
|
332
|
-
*/
|
|
333
|
-
getXml() {
|
|
334
|
-
return this.xmlString;
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Gets the invoice format as an enum value
|
|
338
|
-
* @returns InvoiceFormat enum value
|
|
339
|
-
*/
|
|
340
|
-
getFormat() {
|
|
341
|
-
return this.detectedFormat;
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Checks if the invoice is in the specified format
|
|
345
|
-
* @param format Format to check
|
|
346
|
-
* @returns True if the invoice is in the specified format
|
|
347
|
-
*/
|
|
348
|
-
isFormat(format) {
|
|
349
|
-
return this.detectedFormat === format;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy54aW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMueGludm9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RSx1REFBdUQ7QUFFdkQsbUJBQW1CO0FBQ25CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFNUUsdUJBQXVCO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQseUJBQXlCO0FBQ3pCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVwRTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFpRG5COzs7T0FHRztJQUNILFlBQVksT0FBeUI7UUFwRHJDLGdDQUFnQztRQUN6QixPQUFFLEdBQVcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBK0IsV0FBVyxDQUFDO1FBQ3RELGdCQUFXLEdBQTJEO1lBQzNFLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUNLLFNBQUksR0FBYyxTQUFTLENBQUM7UUFDNUIsU0FBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQixXQUFNLEdBQThDLFNBQVMsQ0FBQztRQUM5RCxZ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
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
/**
|
|
3
|
-
* Base decoder class for all invoice XML formats.
|
|
4
|
-
* Provides common functionality and interfaces for different format decoders.
|
|
5
|
-
*/
|
|
6
|
-
export declare abstract class BaseDecoder {
|
|
7
|
-
protected xmlString: string;
|
|
8
|
-
constructor(xmlString: string);
|
|
9
|
-
/**
|
|
10
|
-
* Abstract method that each format-specific decoder must implement.
|
|
11
|
-
* Converts XML into a structured letter object based on the XML format.
|
|
12
|
-
*/
|
|
13
|
-
abstract getLetterData(): Promise<plugins.tsclass.business.ILetter>;
|
|
14
|
-
/**
|
|
15
|
-
* Creates a default letter object with minimal data.
|
|
16
|
-
* Used as a fallback when parsing fails.
|
|
17
|
-
*/
|
|
18
|
-
protected createDefaultLetter(): plugins.tsclass.business.ILetter;
|
|
19
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
/**
|
|
3
|
-
* Base decoder class for all invoice XML formats.
|
|
4
|
-
* Provides common functionality and interfaces for different format decoders.
|
|
5
|
-
*/
|
|
6
|
-
export class BaseDecoder {
|
|
7
|
-
constructor(xmlString) {
|
|
8
|
-
if (!xmlString) {
|
|
9
|
-
throw new Error('No XML string provided to decoder');
|
|
10
|
-
}
|
|
11
|
-
this.xmlString = xmlString;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Creates a default letter object with minimal data.
|
|
15
|
-
* Used as a fallback when parsing fails.
|
|
16
|
-
*/
|
|
17
|
-
createDefaultLetter() {
|
|
18
|
-
// Create a default seller
|
|
19
|
-
const seller = {
|
|
20
|
-
name: 'Unknown Seller',
|
|
21
|
-
type: 'company',
|
|
22
|
-
description: 'Unknown Seller',
|
|
23
|
-
address: {
|
|
24
|
-
streetName: 'Unknown',
|
|
25
|
-
houseNumber: '0',
|
|
26
|
-
city: 'Unknown',
|
|
27
|
-
country: 'Unknown',
|
|
28
|
-
postalCode: 'Unknown',
|
|
29
|
-
},
|
|
30
|
-
registrationDetails: {
|
|
31
|
-
vatId: 'Unknown',
|
|
32
|
-
registrationId: 'Unknown',
|
|
33
|
-
registrationName: 'Unknown'
|
|
34
|
-
},
|
|
35
|
-
foundedDate: {
|
|
36
|
-
year: 2000,
|
|
37
|
-
month: 1,
|
|
38
|
-
day: 1
|
|
39
|
-
},
|
|
40
|
-
closedDate: {
|
|
41
|
-
year: 9999,
|
|
42
|
-
month: 12,
|
|
43
|
-
day: 31
|
|
44
|
-
},
|
|
45
|
-
status: 'active'
|
|
46
|
-
};
|
|
47
|
-
// Create a default buyer
|
|
48
|
-
const buyer = {
|
|
49
|
-
name: 'Unknown Buyer',
|
|
50
|
-
type: 'company',
|
|
51
|
-
description: 'Unknown Buyer',
|
|
52
|
-
address: {
|
|
53
|
-
streetName: 'Unknown',
|
|
54
|
-
houseNumber: '0',
|
|
55
|
-
city: 'Unknown',
|
|
56
|
-
country: 'Unknown',
|
|
57
|
-
postalCode: 'Unknown',
|
|
58
|
-
},
|
|
59
|
-
registrationDetails: {
|
|
60
|
-
vatId: 'Unknown',
|
|
61
|
-
registrationId: 'Unknown',
|
|
62
|
-
registrationName: 'Unknown'
|
|
63
|
-
},
|
|
64
|
-
foundedDate: {
|
|
65
|
-
year: 2000,
|
|
66
|
-
month: 1,
|
|
67
|
-
day: 1
|
|
68
|
-
},
|
|
69
|
-
closedDate: {
|
|
70
|
-
year: 9999,
|
|
71
|
-
month: 12,
|
|
72
|
-
day: 31
|
|
73
|
-
},
|
|
74
|
-
status: 'active'
|
|
75
|
-
};
|
|
76
|
-
// Create default invoice data
|
|
77
|
-
const invoiceData = {
|
|
78
|
-
id: 'Unknown',
|
|
79
|
-
status: null,
|
|
80
|
-
type: 'debitnote',
|
|
81
|
-
billedBy: seller,
|
|
82
|
-
billedTo: buyer,
|
|
83
|
-
deliveryDate: Date.now(),
|
|
84
|
-
dueInDays: 30,
|
|
85
|
-
periodOfPerformance: null,
|
|
86
|
-
printResult: null,
|
|
87
|
-
currency: 'EUR',
|
|
88
|
-
notes: [],
|
|
89
|
-
items: [
|
|
90
|
-
{
|
|
91
|
-
name: 'Unknown Item',
|
|
92
|
-
unitQuantity: 1,
|
|
93
|
-
unitNetPrice: 0,
|
|
94
|
-
vatPercentage: 0,
|
|
95
|
-
position: 0,
|
|
96
|
-
unitType: 'units',
|
|
97
|
-
}
|
|
98
|
-
],
|
|
99
|
-
reverseCharge: false,
|
|
100
|
-
};
|
|
101
|
-
// Return a default letter
|
|
102
|
-
return {
|
|
103
|
-
versionInfo: {
|
|
104
|
-
type: 'draft',
|
|
105
|
-
version: '1.0.0',
|
|
106
|
-
},
|
|
107
|
-
type: 'invoice',
|
|
108
|
-
date: Date.now(),
|
|
109
|
-
subject: 'Unknown Invoice',
|
|
110
|
-
from: seller,
|
|
111
|
-
to: buyer,
|
|
112
|
-
content: {
|
|
113
|
-
invoiceData: invoiceData,
|
|
114
|
-
textData: null,
|
|
115
|
-
timesheetData: null,
|
|
116
|
-
contractData: null,
|
|
117
|
-
},
|
|
118
|
-
needsCoverSheet: false,
|
|
119
|
-
objectActions: [],
|
|
120
|
-
pdf: null,
|
|
121
|
-
incidenceId: null,
|
|
122
|
-
language: null,
|
|
123
|
-
legalContact: null,
|
|
124
|
-
logoUrl: null,
|
|
125
|
-
pdfAttachments: null,
|
|
126
|
-
accentColor: null,
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5kZWNvZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZm9ybWF0cy9iYXNlLmRlY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsTUFBTSxPQUFnQixXQUFXO0lBRy9CLFlBQVksU0FBaUI7UUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBUUQ7OztPQUdHO0lBQ08sbUJBQW1CO1FBQzNCLDBCQUEwQjtRQUMxQixNQUFNLE1BQU0sR0FBc0M7WUFDaEQsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsT0FBTyxFQUFFO2dCQUNQLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixXQUFXLEVBQUUsR0FBRztnQkFDaEIsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLFVBQVUsRUFBRSxTQUFTO2FBQ3RCO1lBQ0QsbUJBQW1CLEVBQUU7Z0JBQ25CLEtBQUssRUFBRSxTQUFTO2dCQUNoQixjQUFjLEVBQUUsU0FBUztnQkFDekIsZ0JBQWdCLEVBQUUsU0FBUzthQUM1QjtZQUNELFdBQVcsRUFBRTtnQkFDWCxJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsQ0FBQztnQkFDUixHQUFHLEVBQUUsQ0FBQzthQUNQO1lBQ0QsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxFQUFFO2dCQUNULEdBQUcsRUFBRSxFQUFFO2FBQ1I7WUFDRCxNQUFNLEVBQUUsUUFBUTtTQUNqQixDQUFDO1FBRUYseUJBQXlCO1FBQ3pCLE1BQU0sS0FBSyxHQUFzQztZQUMvQyxJQUFJLEVBQUUsZUFBZTtZQUNyQixJQUFJLEVBQUUsU0FBUztZQUNmLFdBQVcsRUFBRSxlQUFlO1lBQzVCLE9BQU8sRUFBRTtnQkFDUCxVQUFVLEVBQUUsU0FBUztnQkFDckIsV0FBVyxFQUFFLEdBQUc7Z0JBQ2hCLElBQUksRUFBRSxTQUFTO2dCQUNmLE9BQU8sRUFBRSxTQUFTO2dCQUNsQixVQUFVLEVBQUUsU0FBUzthQUN0QjtZQUNELG1CQUFtQixFQUFFO2dCQUNuQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsY0FBYyxFQUFFLFNBQVM7Z0JBQ3pCLGdCQUFnQixFQUFFLFNBQVM7YUFDNUI7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsR0FBRyxFQUFFLENBQUM7YUFDUDtZQUNELFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsRUFBRTtnQkFDVCxHQUFHLEVBQUUsRUFBRTthQUNSO1lBQ0QsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQztRQUVGLDhCQUE4QjtRQUM5QixNQUFNLFdBQVcsR0FBcUM7WUFDcEQsRUFBRSxFQUFFLFNBQVM7WUFDYixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxXQUFXO1lBQ2pCLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEIsU0FBUyxFQUFFLEVBQUU7WUFDYixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFFBQVEsRUFBRSxLQUEwQztZQUNwRCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRTtnQkFDTDtvQkFDRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsWUFBWSxFQUFFLENBQUM7b0JBQ2YsWUFBWSxFQUFFLENBQUM7b0JBQ2YsYUFBYSxFQUFFLENBQUM7b0JBQ2hCLFFBQVEsRUFBRSxDQUFDO29CQUNYLFFBQVEsRUFBRSxPQUFPO2lCQUNsQjthQUNGO1lBQ0QsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQztRQUVGLDBCQUEwQjtRQUMxQixPQUFPO1lBQ0wsV0FBVyxFQUFFO2dCQUNYLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1lBQ0QsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNoQixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLElBQUksRUFBRSxNQUFNO1lBQ1osRUFBRSxFQUFFLEtBQUs7WUFDVCxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixZQUFZLEVBQUUsSUFBSTthQUNuQjtZQUNELGVBQWUsRUFBRSxLQUFLO1lBQ3RCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLEdBQUcsRUFBRSxJQUFJO1lBQ1QsV0FBVyxFQUFFLElBQUk7WUFDakIsUUFBUSxFQUFFLElBQUk7WUFDZCxZQUFZLEVBQUUsSUFBSTtZQUNsQixPQUFPLEVBQUUsSUFBSTtZQUNiLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { ValidationLevel } from '../interfaces.js';
|
|
2
|
-
import type { ValidationResult, ValidationError } from '../interfaces.js';
|
|
3
|
-
/**
|
|
4
|
-
* Base validator class that defines common validation functionality
|
|
5
|
-
* for all invoice format validators
|
|
6
|
-
*/
|
|
7
|
-
export declare abstract class BaseValidator {
|
|
8
|
-
protected xml: string;
|
|
9
|
-
protected errors: ValidationError[];
|
|
10
|
-
constructor(xml: string);
|
|
11
|
-
/**
|
|
12
|
-
* Validates XML against the specified level of validation
|
|
13
|
-
* @param level Validation level (syntax, semantic, business)
|
|
14
|
-
* @returns Result of validation
|
|
15
|
-
*/
|
|
16
|
-
abstract validate(level?: ValidationLevel): ValidationResult;
|
|
17
|
-
/**
|
|
18
|
-
* Gets all validation errors found during validation
|
|
19
|
-
* @returns Array of validation errors
|
|
20
|
-
*/
|
|
21
|
-
getValidationErrors(): ValidationError[];
|
|
22
|
-
/**
|
|
23
|
-
* Checks if the document is valid
|
|
24
|
-
* @returns True if no validation errors were found
|
|
25
|
-
*/
|
|
26
|
-
isValid(): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Validates XML against schema
|
|
29
|
-
* @returns True if schema validation passed
|
|
30
|
-
*/
|
|
31
|
-
protected abstract validateSchema(): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Validates business rules
|
|
34
|
-
* @returns True if business rule validation passed
|
|
35
|
-
*/
|
|
36
|
-
protected abstract validateBusinessRules(): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* Adds an error to the validation errors list
|
|
39
|
-
* @param code Error code
|
|
40
|
-
* @param message Error message
|
|
41
|
-
* @param location Location in the XML where the error occurred
|
|
42
|
-
*/
|
|
43
|
-
protected addError(code: string, message: string, location?: string): void;
|
|
44
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { ValidationLevel } from '../interfaces.js';
|
|
2
|
-
/**
|
|
3
|
-
* Base validator class that defines common validation functionality
|
|
4
|
-
* for all invoice format validators
|
|
5
|
-
*/
|
|
6
|
-
export class BaseValidator {
|
|
7
|
-
constructor(xml) {
|
|
8
|
-
this.errors = [];
|
|
9
|
-
this.xml = xml;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Gets all validation errors found during validation
|
|
13
|
-
* @returns Array of validation errors
|
|
14
|
-
*/
|
|
15
|
-
getValidationErrors() {
|
|
16
|
-
return this.errors;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Checks if the document is valid
|
|
20
|
-
* @returns True if no validation errors were found
|
|
21
|
-
*/
|
|
22
|
-
isValid() {
|
|
23
|
-
return this.errors.length === 0;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Adds an error to the validation errors list
|
|
27
|
-
* @param code Error code
|
|
28
|
-
* @param message Error message
|
|
29
|
-
* @param location Location in the XML where the error occurred
|
|
30
|
-
*/
|
|
31
|
-
addError(code, message, location = '') {
|
|
32
|
-
this.errors.push({
|
|
33
|
-
code,
|
|
34
|
-
message,
|
|
35
|
-
location
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9mb3JtYXRzL2Jhc2UudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUduRDs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLGFBQWE7SUFJakMsWUFBWSxHQUFXO1FBRmIsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFHdkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQVNEOzs7T0FHRztJQUNJLG1CQUFtQjtRQUN4QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBY0Q7Ozs7O09BS0c7SUFDTyxRQUFRLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBRSxXQUFtQixFQUFFO1FBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSTtZQUNKLE9BQU87WUFDUCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { BaseDecoder } from './base.decoder.js';
|
|
2
|
-
/**
|
|
3
|
-
* Factory class for creating the appropriate decoder based on XML format.
|
|
4
|
-
* Analyzes XML content and returns the best decoder for the given format.
|
|
5
|
-
*/
|
|
6
|
-
export declare class DecoderFactory {
|
|
7
|
-
/**
|
|
8
|
-
* Creates a decoder for the given XML content
|
|
9
|
-
*/
|
|
10
|
-
static createDecoder(xmlString: string): BaseDecoder;
|
|
11
|
-
/**
|
|
12
|
-
* Detects the XML invoice format using string pattern matching
|
|
13
|
-
*/
|
|
14
|
-
private static detectFormat;
|
|
15
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { BaseDecoder } from './base.decoder.js';
|
|
2
|
-
import { FacturXDecoder } from './facturx.decoder.js';
|
|
3
|
-
import { XInvoiceDecoder } from './xinvoice.decoder.js';
|
|
4
|
-
/**
|
|
5
|
-
* Factory class for creating the appropriate decoder based on XML format.
|
|
6
|
-
* Analyzes XML content and returns the best decoder for the given format.
|
|
7
|
-
*/
|
|
8
|
-
export class DecoderFactory {
|
|
9
|
-
/**
|
|
10
|
-
* Creates a decoder for the given XML content
|
|
11
|
-
*/
|
|
12
|
-
static createDecoder(xmlString) {
|
|
13
|
-
if (!xmlString) {
|
|
14
|
-
throw new Error('No XML string provided for decoder selection');
|
|
15
|
-
}
|
|
16
|
-
const format = DecoderFactory.detectFormat(xmlString);
|
|
17
|
-
switch (format) {
|
|
18
|
-
case 'XInvoice/UBL':
|
|
19
|
-
return new XInvoiceDecoder(xmlString);
|
|
20
|
-
case 'FacturX/ZUGFeRD':
|
|
21
|
-
default:
|
|
22
|
-
// Default to FacturX/ZUGFeRD decoder
|
|
23
|
-
return new FacturXDecoder(xmlString);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Detects the XML invoice format using string pattern matching
|
|
28
|
-
*/
|
|
29
|
-
static detectFormat(xmlString) {
|
|
30
|
-
// XInvoice/UBL format
|
|
31
|
-
if (xmlString.includes('oasis:names:specification:ubl') ||
|
|
32
|
-
xmlString.includes('Invoice xmlns') ||
|
|
33
|
-
xmlString.includes('xrechnung')) {
|
|
34
|
-
return 'XInvoice/UBL';
|
|
35
|
-
}
|
|
36
|
-
// ZUGFeRD/Factur-X (CII format)
|
|
37
|
-
if (xmlString.includes('CrossIndustryInvoice') ||
|
|
38
|
-
xmlString.includes('un/cefact') ||
|
|
39
|
-
xmlString.includes('rsm:')) {
|
|
40
|
-
return 'FacturX/ZUGFeRD';
|
|
41
|
-
}
|
|
42
|
-
// Default to FacturX/ZUGFeRD
|
|
43
|
-
return 'FacturX/ZUGFeRD';
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZm9ybWF0cy9kZWNvZGVyLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekI7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQWlCO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RCxRQUFRLE1BQU0sRUFBRSxDQUFDO1lBQ2YsS0FBSyxjQUFjO2dCQUNqQixPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRXhDLEtBQUssaUJBQWlCLENBQUM7WUFDdkI7Z0JBQ0UscUNBQXFDO2dCQUNyQyxPQUFPLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQWlCO1FBQzNDLHNCQUFzQjtRQUN0QixJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUM7WUFDbkQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDbkMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO1lBQzFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0NBQ0YifQ==
|