@fin.cx/einvoice 9.0.0 → 10.0.1
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 +2 -2
- package/dist_ts/einvoice.d.ts +12 -0
- package/dist_ts/einvoice.js +45 -3
- package/dist_ts/formats/base/base.decoder.d.ts +27 -2
- package/dist_ts/formats/base/base.decoder.js +52 -27
- package/dist_ts/formats/cii/cii.decoder.d.ts +89 -6
- package/dist_ts/formats/cii/cii.decoder.js +125 -30
- package/dist_ts/formats/cii/cii.encoder.d.ts +71 -1
- package/dist_ts/formats/cii/cii.encoder.js +191 -12
- package/dist_ts/formats/cii/cii.types.d.ts +2 -5
- package/dist_ts/formats/cii/cii.types.js +7 -9
- package/dist_ts/formats/cii/cii.validator.d.ts +13 -6
- package/dist_ts/formats/cii/cii.validator.js +29 -30
- package/dist_ts/formats/cii/facturx/facturx.decoder.js +15 -3
- package/dist_ts/formats/cii/facturx/facturx.encoder.d.ts +0 -6
- package/dist_ts/formats/cii/facturx/facturx.encoder.js +11 -25
- package/dist_ts/formats/cii/facturx/facturx.types.d.ts +0 -5
- package/dist_ts/formats/cii/facturx/facturx.types.js +1 -8
- package/dist_ts/formats/cii/facturx/facturx.validator.d.ts +0 -5
- package/dist_ts/formats/cii/facturx/facturx.validator.js +5 -29
- package/dist_ts/formats/cii/zugferd/zugferd.decoder.js +15 -2
- package/dist_ts/formats/cii/zugferd/zugferd.encoder.d.ts +0 -7
- package/dist_ts/formats/cii/zugferd/zugferd.encoder.js +9 -67
- package/dist_ts/formats/cii/zugferd/zugferd.types.d.ts +0 -5
- package/dist_ts/formats/cii/zugferd/zugferd.types.js +1 -8
- package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.d.ts +26 -0
- package/dist_ts/formats/cii/zugferd/zugferd.v1.decoder.js +43 -1
- package/dist_ts/formats/cii/zugferd/zugferd.validator.js +6 -2
- package/dist_ts/formats/semantic/semantic.adapter.js +20 -18
- package/dist_ts/formats/ubl/en16931.ubl.validator.d.ts +0 -4
- package/dist_ts/formats/ubl/en16931.ubl.validator.js +5 -42
- package/dist_ts/formats/ubl/generic/ubl.encoder.js +18 -24
- package/dist_ts/formats/ubl/ubl.decoder.d.ts +4 -0
- package/dist_ts/formats/ubl/ubl.decoder.js +9 -1
- package/dist_ts/formats/ubl/ubl.encoder.js +9 -5
- package/dist_ts/formats/ubl/ubl.validator.d.ts +13 -0
- package/dist_ts/formats/ubl/ubl.validator.js +28 -1
- package/dist_ts/formats/ubl/xrechnung/xrechnung.decoder.js +10 -1
- package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.d.ts +0 -7
- package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.js +30 -45
- package/dist_ts/formats/ubl/xrechnung.validator.d.ts +5 -4
- package/dist_ts/formats/ubl/xrechnung.validator.js +71 -68
- package/dist_ts/formats/utils/date.value.d.ts +35 -0
- package/dist_ts/formats/utils/date.value.js +98 -1
- package/dist_ts/formats/utils/format.detector.js +16 -10
- package/dist_ts/formats/utils/party.contact.d.ts +16 -0
- package/dist_ts/formats/utils/party.contact.js +16 -0
- package/dist_ts/formats/utils/party.identifier.d.ts +28 -0
- package/dist_ts/formats/utils/party.identifier.js +49 -0
- package/dist_ts/formats/utils/peppol.profile.d.ts +10 -0
- package/dist_ts/formats/utils/peppol.profile.js +12 -0
- package/dist_ts/formats/utils/seller.identifier.d.ts +46 -0
- package/dist_ts/formats/utils/seller.identifier.js +78 -0
- package/dist_ts/formats/utils/stated.values.d.ts +80 -0
- package/dist_ts/formats/utils/stated.values.js +418 -0
- package/dist_ts/formats/utils/vat.category.d.ts +30 -2
- package/dist_ts/formats/utils/vat.category.js +36 -6
- package/dist_ts/formats/utils/vat.id.d.ts +18 -0
- package/dist_ts/formats/utils/vat.id.js +22 -0
- package/dist_ts/formats/validation/conformance.harness.js +6 -6
- package/dist_ts/formats/validation/en16931.business-rules.validator.js +4 -21
- package/dist_ts/formats/validation/facturx.validator.js +6 -6
- package/dist_ts/formats/validation/integrated.validator.js +4 -13
- package/dist_ts/formats/validation/peppol.validator.js +6 -13
- package/dist_ts/formats/validation/validation.types.d.ts +5 -0
- package/dist_ts/formats/validation/validation.types.js +6 -1
- package/dist_ts/formats/validation/vat-categories.validator.d.ts +21 -42
- package/dist_ts/formats/validation/vat-categories.validator.js +137 -431
- package/dist_ts/formats/validation/xrechnung.validator.d.ts +11 -58
- package/dist_ts/formats/validation/xrechnung.validator.js +58 -324
- package/dist_ts/index.d.ts +1 -0
- package/dist_ts/index.js +1 -1
- package/dist_ts/interfaces/en16931-metadata.d.ts +0 -4
- package/dist_ts/interfaces/stated.values.d.ts +93 -0
- package/dist_ts/interfaces/stated.values.js +2 -0
- package/package.json +4 -4
- package/readme.md +152 -7
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/einvoice.ts +52 -2
- package/ts/formats/base/base.decoder.ts +55 -45
- package/ts/formats/cii/cii.decoder.ts +159 -32
- package/ts/formats/cii/cii.encoder.ts +206 -14
- package/ts/formats/cii/cii.types.ts +7 -9
- package/ts/formats/cii/cii.validator.ts +30 -32
- package/ts/formats/cii/facturx/facturx.decoder.ts +16 -2
- package/ts/formats/cii/facturx/facturx.encoder.ts +13 -25
- package/ts/formats/cii/facturx/facturx.types.ts +0 -9
- package/ts/formats/cii/facturx/facturx.validator.ts +5 -43
- package/ts/formats/cii/zugferd/zugferd.decoder.ts +16 -1
- package/ts/formats/cii/zugferd/zugferd.encoder.ts +10 -72
- package/ts/formats/cii/zugferd/zugferd.types.ts +0 -9
- package/ts/formats/cii/zugferd/zugferd.v1.decoder.ts +56 -0
- package/ts/formats/cii/zugferd/zugferd.validator.ts +5 -1
- package/ts/formats/semantic/semantic.adapter.ts +19 -17
- package/ts/formats/ubl/en16931.ubl.validator.ts +5 -64
- package/ts/formats/ubl/generic/ubl.encoder.ts +19 -23
- package/ts/formats/ubl/ubl.decoder.ts +12 -0
- package/ts/formats/ubl/ubl.encoder.ts +8 -4
- package/ts/formats/ubl/ubl.validator.ts +29 -0
- package/ts/formats/ubl/xrechnung/xrechnung.decoder.ts +8 -0
- package/ts/formats/ubl/xrechnung/xrechnung.encoder.ts +33 -45
- package/ts/formats/ubl/xrechnung.validator.ts +75 -127
- package/ts/formats/utils/date.value.ts +106 -0
- package/ts/formats/utils/format.detector.ts +15 -9
- package/ts/formats/utils/party.contact.ts +30 -0
- package/ts/formats/utils/party.identifier.ts +61 -0
- package/ts/formats/utils/peppol.profile.ts +13 -0
- package/ts/formats/utils/seller.identifier.ts +102 -0
- package/ts/formats/utils/stated.values.ts +499 -0
- package/ts/formats/utils/vat.category.ts +47 -5
- package/ts/formats/utils/vat.id.ts +24 -0
- package/ts/formats/validation/conformance.harness.ts +5 -5
- package/ts/formats/validation/en16931.business-rules.validator.ts +3 -28
- package/ts/formats/validation/facturx.validator.ts +5 -5
- package/ts/formats/validation/integrated.validator.ts +3 -16
- package/ts/formats/validation/peppol.validator.ts +5 -16
- package/ts/formats/validation/validation.types.ts +7 -1
- package/ts/formats/validation/vat-categories.validator.ts +179 -761
- package/ts/formats/validation/xrechnung.validator.ts +61 -382
- package/ts/index.ts +9 -0
- package/ts/interfaces/en16931-metadata.ts +3 -7
- package/ts/interfaces/stated.values.ts +94 -0
- package/ts/readme.md +1 -1
- package/dist_ts/formats/utils/eu.memberstates.d.ts +0 -11
- package/dist_ts/formats/utils/eu.memberstates.js +0 -16
- package/ts/formats/utils/eu.memberstates.ts +0 -16
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { BaseDecoder } from '../base/base.decoder.js';
|
|
2
|
-
import { CII_NAMESPACES
|
|
2
|
+
import { CII_NAMESPACES } from './cii.types.js';
|
|
3
3
|
import { DOMParser, xpath } from '../../plugins.js';
|
|
4
4
|
import { EInvoiceParsingError } from '../../errors.js';
|
|
5
5
|
import { getAccountingDocType } from '../utils/document.typecode.js';
|
|
6
|
+
import { readCiiStatedValues } from '../utils/stated.values.js';
|
|
6
7
|
const ciiParser = new DOMParser();
|
|
7
8
|
const ciiNamespaces = {
|
|
8
9
|
rsm: CII_NAMESPACES.RSM,
|
|
@@ -18,7 +19,6 @@ export class CIIBaseDecoder extends BaseDecoder {
|
|
|
18
19
|
doc;
|
|
19
20
|
namespaces;
|
|
20
21
|
select;
|
|
21
|
-
profile = CIIProfile.EN16931;
|
|
22
22
|
constructor(xml, skipValidation = false) {
|
|
23
23
|
super(xml, skipValidation);
|
|
24
24
|
// Parse XML document
|
|
@@ -27,17 +27,29 @@ export class CIIBaseDecoder extends BaseDecoder {
|
|
|
27
27
|
this.namespaces = ciiNamespaces;
|
|
28
28
|
// Create XPath selector with namespaces
|
|
29
29
|
this.select = ciiSelect;
|
|
30
|
-
// Detect profile
|
|
31
|
-
this.detectProfile();
|
|
32
30
|
}
|
|
33
31
|
getParsedDocument() {
|
|
34
32
|
return this.doc;
|
|
35
33
|
}
|
|
34
|
+
/** The values the document states, read by `decode` */
|
|
35
|
+
statedValues;
|
|
36
|
+
getStatedValues() {
|
|
37
|
+
return this.statedValues;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Reads the values a CII (D16B) document states, by their EN 16931 business
|
|
41
|
+
* terms
|
|
42
|
+
*/
|
|
43
|
+
readStatedValues() {
|
|
44
|
+
return this.assertStatedValuesReadable(readCiiStatedValues(this.doc), 'cii');
|
|
45
|
+
}
|
|
36
46
|
/**
|
|
37
47
|
* Decodes CII XML into an accounting document
|
|
38
48
|
* @returns Promise resolving to the accounting document
|
|
39
49
|
*/
|
|
40
50
|
async decode() {
|
|
51
|
+
// the values the document states, read first: an amount that is no number is refused
|
|
52
|
+
this.statedValues = this.readStatedValues();
|
|
41
53
|
// CII has one root for every document; the document type code (BT-3) alone tells them apart
|
|
42
54
|
const accountingDocType = getAccountingDocType(this.getText('/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode'));
|
|
43
55
|
if (accountingDocType === 'creditnote') {
|
|
@@ -45,31 +57,6 @@ export class CIIBaseDecoder extends BaseDecoder {
|
|
|
45
57
|
}
|
|
46
58
|
return this.decodeInvoice(accountingDocType);
|
|
47
59
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Detects the CII profile from the XML
|
|
50
|
-
*/
|
|
51
|
-
detectProfile() {
|
|
52
|
-
// Look for profile identifier
|
|
53
|
-
const profileNode = this.select('string(//rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID)', this.doc);
|
|
54
|
-
if (profileNode) {
|
|
55
|
-
const profileText = profileNode.toString();
|
|
56
|
-
if (profileText.includes('BASIC')) {
|
|
57
|
-
this.profile = CIIProfile.BASIC;
|
|
58
|
-
}
|
|
59
|
-
else if (profileText.includes('EN16931')) {
|
|
60
|
-
this.profile = CIIProfile.EN16931;
|
|
61
|
-
}
|
|
62
|
-
else if (profileText.includes('EXTENDED')) {
|
|
63
|
-
this.profile = CIIProfile.EXTENDED;
|
|
64
|
-
}
|
|
65
|
-
else if (profileText.includes('MINIMUM')) {
|
|
66
|
-
this.profile = CIIProfile.MINIMUM;
|
|
67
|
-
}
|
|
68
|
-
else if (profileText.includes('COMFORT')) {
|
|
69
|
-
this.profile = CIIProfile.COMFORT;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
60
|
/**
|
|
74
61
|
* Reads the preceding invoice references (BG-3) of the header settlement:
|
|
75
62
|
* the number (BT-25) and, when stated, the issue date (BT-26) of each.
|
|
@@ -139,6 +126,114 @@ export class CIIBaseDecoder extends BaseDecoder {
|
|
|
139
126
|
}
|
|
140
127
|
return this.parseRequiredCIIDate(deliveryDate, this.getText(`${deliveryDatePath}/@format`).trim());
|
|
141
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Reads the invoicing period (BG-14) of the header settlement: the start date
|
|
131
|
+
* (BT-73), the end date (BT-74), or both (BR-CO-19). A line's own period
|
|
132
|
+
* (BG-26) is not the document's.
|
|
133
|
+
*/
|
|
134
|
+
extractInvoicingPeriod() {
|
|
135
|
+
return this.readInvoicingPeriod('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod', (path) => this.getText(path).trim());
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Reads an invoicing period from its start and end date strings; each end is
|
|
139
|
+
* read when the document states it
|
|
140
|
+
* @param periodPath The path of the period element
|
|
141
|
+
* @param text The trimmed text a path selects, or ''
|
|
142
|
+
*/
|
|
143
|
+
readInvoicingPeriod(periodPath, text) {
|
|
144
|
+
const startPath = `${periodPath}/ram:StartDateTime/udt:DateTimeString`;
|
|
145
|
+
const endPath = `${periodPath}/ram:EndDateTime/udt:DateTimeString`;
|
|
146
|
+
const start = text(startPath);
|
|
147
|
+
const end = text(endPath);
|
|
148
|
+
return {
|
|
149
|
+
...(start ? { start: this.parseRequiredCIIDate(start, text(`${startPath}/@format`)) } : {}),
|
|
150
|
+
...(end ? { end: this.parseRequiredCIIDate(end, text(`${endPath}/@format`)) } : {}),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The accounting document fields of a stated invoicing period. With both
|
|
155
|
+
* dates it is `periodOfPerformance`. The envelope's period has both dates, so
|
|
156
|
+
* a period that states only its start or only its end keeps that date where
|
|
157
|
+
* the UBL decoder keeps it, in `metadata.extensions.dateInformation`
|
|
158
|
+
* (`periodStart` or `periodEnd`, the calendar day as YYYY-MM-DD); the CII and
|
|
159
|
+
* UBL encoders write it back from there.
|
|
160
|
+
* @param period The invoicing period the document states
|
|
161
|
+
*/
|
|
162
|
+
invoicingPeriodFields(period) {
|
|
163
|
+
if (period.start !== undefined && period.end !== undefined) {
|
|
164
|
+
return { periodOfPerformance: { from: period.start, to: period.end } };
|
|
165
|
+
}
|
|
166
|
+
// the calendar day of the UTC timestamp the decoders return for a date
|
|
167
|
+
const dayOf = (timestamp) => new Date(timestamp).toISOString().slice(0, 10);
|
|
168
|
+
if (period.start !== undefined) {
|
|
169
|
+
return { metadata: { extensions: { dateInformation: { periodStart: dayOf(period.start) } } } };
|
|
170
|
+
}
|
|
171
|
+
if (period.end !== undefined) {
|
|
172
|
+
return { metadata: { extensions: { dateInformation: { periodEnd: dayOf(period.end) } } } };
|
|
173
|
+
}
|
|
174
|
+
return {};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Reads the seller electronic address (BT-34),
|
|
178
|
+
* `ram:URIUniversalCommunication/ram:URIID` of the seller, with its scheme;
|
|
179
|
+
* undefined when the document states none.
|
|
180
|
+
*/
|
|
181
|
+
extractSellerElectronicAddress() {
|
|
182
|
+
const uriPath = '/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID';
|
|
183
|
+
const value = this.getText(uriPath).trim();
|
|
184
|
+
if (!value) {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
return { scheme: this.getText(`${uriPath}/@schemeID`).trim(), value };
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Reads the specification identifier (BT-24),
|
|
191
|
+
* `ram:GuidelineSpecifiedDocumentContextParameter/ram:ID` of the document
|
|
192
|
+
* context; undefined when the document states none.
|
|
193
|
+
*/
|
|
194
|
+
extractSpecificationIdentifier() {
|
|
195
|
+
return (this.getText('/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID').trim() ||
|
|
196
|
+
undefined);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The accounting document's `metadata`: the specification identifier (BT-24)
|
|
200
|
+
* as `customizationId`, which the validators read to tell an XRechnung, a
|
|
201
|
+
* PEPPOL or a Factur-X document, merged with the metadata of the invoicing
|
|
202
|
+
* period fields (`invoicingPeriodFields`), which it takes the place of in
|
|
203
|
+
* the decoded document.
|
|
204
|
+
* @param invoicingPeriod The invoicing period fields of the document
|
|
205
|
+
*/
|
|
206
|
+
metadataFields(invoicingPeriod) {
|
|
207
|
+
const customizationId = this.extractSpecificationIdentifier();
|
|
208
|
+
const periodMetadata = 'metadata' in invoicingPeriod ? invoicingPeriod.metadata : undefined;
|
|
209
|
+
if (customizationId === undefined && periodMetadata === undefined) {
|
|
210
|
+
return {};
|
|
211
|
+
}
|
|
212
|
+
return { metadata: { ...periodMetadata, ...(customizationId === undefined ? {} : { customizationId }) } };
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Reads the party identifiers (BT-29 seller, BT-46 buyer) of a trade party:
|
|
216
|
+
* `ram:ID` without a scheme and `ram:GlobalID` with its scheme, kept where the
|
|
217
|
+
* UBL decoder keeps them, as the party's `additionalIdentifiers`
|
|
218
|
+
* @param partyXPath XPath to the trade party
|
|
219
|
+
*/
|
|
220
|
+
extractPartyIdentifiers(partyXPath) {
|
|
221
|
+
const nodes = this.select(`${partyXPath}/ram:ID | ${partyXPath}/ram:GlobalID`, this.doc);
|
|
222
|
+
return (Array.isArray(nodes) ? nodes : [])
|
|
223
|
+
.map((node) => {
|
|
224
|
+
const element = node;
|
|
225
|
+
return { value: (element.textContent ?? '').trim(), scheme: element.localName === 'GlobalID' ? (element.getAttribute('schemeID') ?? '').trim() : '' };
|
|
226
|
+
})
|
|
227
|
+
.filter((identifier) => identifier.value !== '');
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Reads the buyer reference (BT-10), `ram:BuyerReference` of the header trade
|
|
231
|
+
* agreement; undefined when the document states none.
|
|
232
|
+
*/
|
|
233
|
+
extractBuyerReference() {
|
|
234
|
+
return (this.getText('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference').trim() ||
|
|
235
|
+
undefined);
|
|
236
|
+
}
|
|
142
237
|
/**
|
|
143
238
|
* Gets a text value from an XPath expression
|
|
144
239
|
* @param xpath XPath expression
|
|
@@ -200,4 +295,4 @@ export class CIIBaseDecoder extends BaseDecoder {
|
|
|
200
295
|
return false;
|
|
201
296
|
}
|
|
202
297
|
}
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lpLmRlY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3JtYXRzL2NpaS9jaWkuZGVjb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3JFLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7QUFDbEMsTUFBTSxhQUFhLEdBQUc7SUFDcEIsR0FBRyxFQUFFLGNBQWMsQ0FBQyxHQUFHO0lBQ3ZCLEdBQUcsRUFBRSxjQUFjLENBQUMsR0FBRztJQUN2QixHQUFHLEVBQUUsY0FBYyxDQUFDLEdBQUc7SUFDdkIsR0FBRyxFQUFFLGNBQWMsQ0FBQyxHQUFHO0NBQ3hCLENBQUM7QUFDRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXJEOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixjQUFlLFNBQVEsV0FBVztJQUM1QyxHQUFHLENBQVc7SUFDZCxVQUFVLENBQXlCO0lBQ25DLE1BQU0sQ0FBb0I7SUFDMUIsT0FBTyxHQUFlLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFFbkQsWUFBWSxHQUFXLEVBQUUsaUJBQTBCLEtBQUs7UUFDdEQsS0FBSyxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUUzQixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTdELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUVoQyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFFeEIsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRWUsaUJBQWlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE1BQU07UUFDakIsNEZBQTRGO1FBQzVGLE1BQU0saUJBQWlCLEdBQUcsb0JBQW9CLENBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsOERBQThELENBQUMsQ0FDN0UsQ0FBQztRQUNGLElBQUksaUJBQWlCLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ08sYUFBYTtRQUNyQiw4QkFBOEI7UUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FDN0IsOEZBQThGLEVBQzlGLElBQUksQ0FBQyxHQUFHLENBQ1QsQ0FBQztRQUVGLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRTNDLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDbEMsQ0FBQztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxDQUFDO2lCQUFNLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQWlCRDs7O09BR0c7SUFDTyxpQ0FBaUM7UUFDekMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FDaEMsNkhBQTZILEVBQzdILElBQUksQ0FBQyxHQUFHLENBQ1QsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFpQyxFQUFFLENBQUM7UUFDcEQsS0FBSyxNQUFNLGFBQWEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsYUFBcUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGlEQUFpRCxFQUFFLGFBQXFCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoSCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHlEQUF5RCxFQUFFLGFBQXFCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5SCxVQUFVLENBQUMsSUFBSSxDQUNiLFNBQVM7Z0JBQ1AsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxFQUFFO2dCQUNsRixDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FDbkIsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sZ0JBQWdCO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLHNGQUFzRixDQUFDO1FBQzdHLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGFBQWEsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sY0FBYztRQUN0QixNQUFNLFdBQVcsR0FDZixxS0FBcUssQ0FBQztRQUN4SyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFdBQVcsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7OztPQUdHO0lBQ08sV0FBVyxDQUFDLFNBQWlCLEVBQUUsT0FBMkIsRUFBRSxlQUF1QjtRQUMzRixPQUFPLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVEOzs7O09BSUc7SUFDTyx1QkFBdUI7UUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FDNUIseUtBQXlLLEVBQ3pLLElBQUksQ0FBQyxHQUFHLENBQ1QsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUUsSUFBYSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JILE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7O09BR0c7SUFDTyxtQkFBbUI7UUFDM0IsTUFBTSxnQkFBZ0IsR0FDcEIsMEtBQTBLLENBQUM7UUFDN0ssTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxPQUFPLENBQUMsU0FBaUIsRUFBRSxPQUFjO1FBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNPLGVBQWUsQ0FDdkIsU0FBaUIsRUFDakIsU0FBaUIsRUFDakIsT0FBYztRQUVkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyx3QkFBd0IsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xFLE1BQU0sRUFBRSxLQUFLO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sU0FBUyxDQUFDLFNBQWlCLEVBQUUsT0FBYztRQUNuRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM5QyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLE9BQU8sQ0FBQyxTQUFpQixFQUFFLE9BQWM7UUFDakQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUU3QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sTUFBTSxDQUFDLFNBQWlCLEVBQUUsT0FBYztRQUNoRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIn0=
|
|
298
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lpLmRlY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3JtYXRzL2NpaS9jaWkuZGVjb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFXaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUNsQyxNQUFNLGFBQWEsR0FBRztJQUNwQixHQUFHLEVBQUUsY0FBYyxDQUFDLEdBQUc7SUFDdkIsR0FBRyxFQUFFLGNBQWMsQ0FBQyxHQUFHO0lBQ3ZCLEdBQUcsRUFBRSxjQUFjLENBQUMsR0FBRztJQUN2QixHQUFHLEVBQUUsY0FBYyxDQUFDLEdBQUc7Q0FDeEIsQ0FBQztBQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGNBQWUsU0FBUSxXQUFXO0lBQzVDLEdBQUcsQ0FBVztJQUNkLFVBQVUsQ0FBeUI7SUFDbkMsTUFBTSxDQUFvQjtJQUVwQyxZQUFZLEdBQVcsRUFBRSxpQkFBMEIsS0FBSztRQUN0RCxLQUFLLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRTNCLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFD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
|
|
@@ -7,10 +7,18 @@ import { CIIProfile } from './cii.types.js';
|
|
|
7
7
|
export declare abstract class CIIBaseEncoder extends BaseEncoder {
|
|
8
8
|
protected profile: CIIProfile;
|
|
9
9
|
/**
|
|
10
|
-
* Sets the CII profile to use for encoding
|
|
10
|
+
* Sets the CII profile to use for encoding. EN16931 and its ZUGFeRD name
|
|
11
|
+
* COMFORT are written; MINIMUM, BASIC (and with it BASIC WL) and EXTENDED are
|
|
12
|
+
* refused with an `EInvoiceFormatError`.
|
|
11
13
|
* @param profile CII profile
|
|
12
14
|
*/
|
|
13
15
|
setProfile(profile: CIIProfile): void;
|
|
16
|
+
/**
|
|
17
|
+
* The specification identifier (BT-24) the document states: the EN 16931
|
|
18
|
+
* profile, the one profile whose content the encoders write. A refused
|
|
19
|
+
* profile a subclass assigned directly is refused here too.
|
|
20
|
+
*/
|
|
21
|
+
protected getProfileId(): string;
|
|
14
22
|
/**
|
|
15
23
|
* Encodes an accounting document into CII XML
|
|
16
24
|
* @param invoice Accounting document to encode
|
|
@@ -61,4 +69,66 @@ export declare abstract class CIIBaseEncoder extends BaseEncoder {
|
|
|
61
69
|
* @returns Formatted date string
|
|
62
70
|
*/
|
|
63
71
|
protected formatDate(timestamp: number, field: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Formats a date as YYYYMMDD, the CII date format 102. A value that is no
|
|
74
|
+
* valid timestamp is refused with an `EInvoiceFormatError` naming the field.
|
|
75
|
+
* @param timestamp Timestamp to format
|
|
76
|
+
* @param field The business term the date is written as
|
|
77
|
+
* @returns Formatted date string
|
|
78
|
+
*/
|
|
79
|
+
protected formatDateYYYYMMDD(timestamp: number, field: string): string;
|
|
80
|
+
/**
|
|
81
|
+
* Adds the seller electronic address (BT-34), `electronicAddress`, as
|
|
82
|
+
* `ram:URIUniversalCommunication/ram:URIID` of the seller, with its scheme
|
|
83
|
+
* (BR-62). EN 16931 asks nothing of the seller for it, so a person states one
|
|
84
|
+
* as a company does.
|
|
85
|
+
* @param doc XML document
|
|
86
|
+
* @param sellerElement The seller trade party
|
|
87
|
+
* @param invoice Invoice data
|
|
88
|
+
*/
|
|
89
|
+
protected addSellerElectronicAddress(doc: Document, sellerElement: Element, invoice: TAccountingDoc): void;
|
|
90
|
+
/**
|
|
91
|
+
* Adds the party identifiers (BT-29 seller, BT-46 buyer) the party carries:
|
|
92
|
+
* one with a scheme as `ram:GlobalID` with its scheme (BT-29-1, an ISO/IEC
|
|
93
|
+
* 6523 ICD code), one without as `ram:ID`, first in the trade party as the
|
|
94
|
+
* CII schema orders it. A SEPA creditor identifier, which UBL states as a
|
|
95
|
+
* seller identification with the scheme SEPA, is the bank assigned creditor
|
|
96
|
+
* identifier (BT-90) and no party identifier in CII; it is not written here.
|
|
97
|
+
* @param doc XML document
|
|
98
|
+
* @param partyElement The seller or buyer trade party
|
|
99
|
+
* @param party The seller or the buyer
|
|
100
|
+
*/
|
|
101
|
+
protected addPartyIdentifiers(doc: Document, partyElement: Element, party: unknown): void;
|
|
102
|
+
/**
|
|
103
|
+
* Adds the buyer reference (BT-10) as `ram:BuyerReference` of the header
|
|
104
|
+
* trade agreement, its first child in the CII schema; nothing when the
|
|
105
|
+
* document has none.
|
|
106
|
+
* @param doc XML document
|
|
107
|
+
* @param agreementElement The header trade agreement
|
|
108
|
+
* @param invoice Invoice data
|
|
109
|
+
*/
|
|
110
|
+
protected addBuyerReference(doc: Document, agreementElement: Element, invoice: TAccountingDoc): void;
|
|
111
|
+
/**
|
|
112
|
+
* Adds the invoicing period (BG-14) as `ram:BillingSpecifiedPeriod` of the
|
|
113
|
+
* header settlement, where the CII schema puts it: the start date (BT-73) and
|
|
114
|
+
* the end date (BT-74) of `periodOfPerformance`. Without it, the date or
|
|
115
|
+
* dates a decoded document kept in `metadata.extensions.dateInformation`
|
|
116
|
+
* (`periodStart`, `periodEnd`) are written, as the UBL encoders write them:
|
|
117
|
+
* a period may state only one of its dates (BR-CO-19).
|
|
118
|
+
* @param doc XML document
|
|
119
|
+
* @param settlementElement The header trade settlement
|
|
120
|
+
* @param invoice Invoice data
|
|
121
|
+
*/
|
|
122
|
+
protected addInvoicingPeriod(doc: Document, settlementElement: Element, invoice: TAccountingDoc): void;
|
|
123
|
+
/**
|
|
124
|
+
* The start (BT-73) and end (BT-74) dates of the invoicing period, in CII
|
|
125
|
+
* format 102: from `periodOfPerformance`, or else from the dates kept in
|
|
126
|
+
* `metadata.extensions.dateInformation`. A kept date is an `xsd:date`, as
|
|
127
|
+
* the UBL decoder keeps it and the CII decoders write it (YYYY-MM-DD); a time
|
|
128
|
+
* zone does not move the day it names (`parseXsdDateDay`), so the stated day
|
|
129
|
+
* is written. '' is no date, as the UBL decoder writes it. Any other value is
|
|
130
|
+
* refused with an `EInvoiceFormatError` naming the date.
|
|
131
|
+
* @param invoice Invoice data
|
|
132
|
+
*/
|
|
133
|
+
private getInvoicingPeriodDays;
|
|
64
134
|
}
|
|
@@ -1,23 +1,58 @@
|
|
|
1
1
|
import { BaseEncoder } from '../base/base.encoder.js';
|
|
2
2
|
import { EInvoiceFormatError } from '../../errors.js';
|
|
3
3
|
import { getPrecedingInvoiceReferences } from '../utils/preceding.invoice.js';
|
|
4
|
-
import { getWritableDate } from '../utils/date.value.js';
|
|
4
|
+
import { getWritableDate, parseXsdDateDay } from '../utils/date.value.js';
|
|
5
5
|
import { assertVatCategoryWritable } from '../utils/vat.category.js';
|
|
6
|
+
import { assertSellerIdentified } from '../utils/seller.identifier.js';
|
|
7
|
+
import { assertPartyIdentifiersWritable, getPartyIdentifiers } from '../utils/party.identifier.js';
|
|
6
8
|
import { computeDocumentTotals } from '../utils/document.totals.js';
|
|
7
9
|
import { getPaymentTotals } from '../utils/paid.amount.js';
|
|
8
|
-
import { CII_CHILD_SEQUENCES, CII_NAMESPACES, CIIProfile } from './cii.types.js';
|
|
10
|
+
import { CII_CHILD_SEQUENCES, CII_NAMESPACES, CII_PROFILE_IDS, CIIProfile } from './cii.types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Why a CII profile is not written. The CII encoders write the full EN 16931
|
|
13
|
+
* content, so the one profile they state is EN 16931 (`urn:cen.eu:en16931:2017`,
|
|
14
|
+
* named COMFORT in ZUGFeRD 2.x); stating another profile for that content would
|
|
15
|
+
* make a document that does not validate against the profile it names.
|
|
16
|
+
*/
|
|
17
|
+
const REFUSED_PROFILES = {
|
|
18
|
+
[CIIProfile.MINIMUM]: 'the content written is EN 16931, which the MINIMUM profile does not allow, and a MINIMUM document is not an e-invoice (BMF letter of 15 October 2024, Rn. 25 and 30)',
|
|
19
|
+
[CIIProfile.BASIC]: 'the content written is EN 16931, which neither the BASIC nor the BASIC WL profile allows, and a BASIC WL document is not an e-invoice (BMF letter of 15 October 2024, Rn. 25 and 30)',
|
|
20
|
+
[CIIProfile.EXTENDED]: 'the output has not been checked against the EXTENDED schema and rules',
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Refuses a profile the CII encoders do not write, naming the profile and why
|
|
24
|
+
* @param profile CII profile
|
|
25
|
+
*/
|
|
26
|
+
const assertWritableProfile = (profile) => {
|
|
27
|
+
const reason = REFUSED_PROFILES[profile];
|
|
28
|
+
if (reason !== undefined) {
|
|
29
|
+
throw new EInvoiceFormatError(`The CII encoders do not write the ${profile} profile: ${reason}; choose ${CIIProfile.EN16931}, the profile whose content they write`, { targetFormat: 'cii', unsupportedFeatures: [`profile ${profile}`] });
|
|
30
|
+
}
|
|
31
|
+
};
|
|
9
32
|
/**
|
|
10
33
|
* Base encoder for CII-based invoice formats
|
|
11
34
|
*/
|
|
12
35
|
export class CIIBaseEncoder extends BaseEncoder {
|
|
13
36
|
profile = CIIProfile.EN16931;
|
|
14
37
|
/**
|
|
15
|
-
* Sets the CII profile to use for encoding
|
|
38
|
+
* Sets the CII profile to use for encoding. EN16931 and its ZUGFeRD name
|
|
39
|
+
* COMFORT are written; MINIMUM, BASIC (and with it BASIC WL) and EXTENDED are
|
|
40
|
+
* refused with an `EInvoiceFormatError`.
|
|
16
41
|
* @param profile CII profile
|
|
17
42
|
*/
|
|
18
43
|
setProfile(profile) {
|
|
44
|
+
assertWritableProfile(profile);
|
|
19
45
|
this.profile = profile;
|
|
20
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* The specification identifier (BT-24) the document states: the EN 16931
|
|
49
|
+
* profile, the one profile whose content the encoders write. A refused
|
|
50
|
+
* profile a subclass assigned directly is refused here too.
|
|
51
|
+
*/
|
|
52
|
+
getProfileId() {
|
|
53
|
+
assertWritableProfile(this.profile);
|
|
54
|
+
return CII_PROFILE_IDS.EN16931;
|
|
55
|
+
}
|
|
21
56
|
/**
|
|
22
57
|
* Encodes an accounting document into CII XML
|
|
23
58
|
* @param invoice Accounting document to encode
|
|
@@ -26,17 +61,15 @@ export class CIIBaseEncoder extends BaseEncoder {
|
|
|
26
61
|
async encode(invoice) {
|
|
27
62
|
// a reverse charge document that lacks what EN 16931 requires of one is refused (BR-AE-02, BR-AE-05)
|
|
28
63
|
assertVatCategoryWritable(invoice, 'cii');
|
|
64
|
+
// a buyer identifier with the SEPA scheme is refused (BR-CL-10)
|
|
65
|
+
assertPartyIdentifiersWritable(invoice, 'cii');
|
|
29
66
|
// a paid amount the advance payments do not add up to, or with more decimals than the currency has, is refused
|
|
30
67
|
getPaymentTotals(invoice, computeDocumentTotals(invoice));
|
|
31
|
-
// MINIMUM has no preceding invoice reference (BG-3): a reference the document states cannot be written there
|
|
32
|
-
if (this.profile === CIIProfile.MINIMUM && getPrecedingInvoiceReferences(invoice).length > 0) {
|
|
33
|
-
throw new EInvoiceFormatError('The MINIMUM profile has no preceding invoice reference (BG-3); a document that refers to a preceding invoice needs a profile that carries it', { targetFormat: 'cii', unsupportedFeatures: ['BG-3 in profile MINIMUM'] });
|
|
34
|
-
}
|
|
35
68
|
// CII has one root for every document; the two paths differ in the type code they write
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return
|
|
69
|
+
const xml = invoice.accountingDocType === 'creditnote' ? await this.encodeCreditNote(invoice) : await this.encodeInvoice(invoice);
|
|
70
|
+
// a seller the written document does not identify is refused (BR-CO-26), never written silently
|
|
71
|
+
assertSellerIdentified(xml, 'cii', 'cii');
|
|
72
|
+
return xml;
|
|
40
73
|
}
|
|
41
74
|
/**
|
|
42
75
|
* Creates the XML declaration and root element
|
|
@@ -140,5 +173,151 @@ export class CIIBaseEncoder extends BaseEncoder {
|
|
|
140
173
|
formatDate(timestamp, field) {
|
|
141
174
|
return getWritableDate(timestamp, field, 'cii').toISOString().split('T')[0];
|
|
142
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Formats a date as YYYYMMDD, the CII date format 102. A value that is no
|
|
178
|
+
* valid timestamp is refused with an `EInvoiceFormatError` naming the field.
|
|
179
|
+
* @param timestamp Timestamp to format
|
|
180
|
+
* @param field The business term the date is written as
|
|
181
|
+
* @returns Formatted date string
|
|
182
|
+
*/
|
|
183
|
+
formatDateYYYYMMDD(timestamp, field) {
|
|
184
|
+
const date = getWritableDate(timestamp, field, 'cii');
|
|
185
|
+
// the UTC fields: a calendar day is its UTC midnight, whatever the server's zone
|
|
186
|
+
const year = date.getUTCFullYear();
|
|
187
|
+
const month = (date.getUTCMonth() + 1).toString().padStart(2, '0');
|
|
188
|
+
const day = date.getUTCDate().toString().padStart(2, '0');
|
|
189
|
+
return `${year}${month}${day}`;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Adds the seller electronic address (BT-34), `electronicAddress`, as
|
|
193
|
+
* `ram:URIUniversalCommunication/ram:URIID` of the seller, with its scheme
|
|
194
|
+
* (BR-62). EN 16931 asks nothing of the seller for it, so a person states one
|
|
195
|
+
* as a company does.
|
|
196
|
+
* @param doc XML document
|
|
197
|
+
* @param sellerElement The seller trade party
|
|
198
|
+
* @param invoice Invoice data
|
|
199
|
+
*/
|
|
200
|
+
addSellerElectronicAddress(doc, sellerElement, invoice) {
|
|
201
|
+
if (!invoice.electronicAddress) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const communicationElement = doc.createElement('ram:URIUniversalCommunication');
|
|
205
|
+
const uriElement = doc.createElement('ram:URIID');
|
|
206
|
+
uriElement.setAttribute('schemeID', invoice.electronicAddress.scheme);
|
|
207
|
+
uriElement.textContent = invoice.electronicAddress.value;
|
|
208
|
+
communicationElement.appendChild(uriElement);
|
|
209
|
+
sellerElement.appendChild(communicationElement);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Adds the party identifiers (BT-29 seller, BT-46 buyer) the party carries:
|
|
213
|
+
* one with a scheme as `ram:GlobalID` with its scheme (BT-29-1, an ISO/IEC
|
|
214
|
+
* 6523 ICD code), one without as `ram:ID`, first in the trade party as the
|
|
215
|
+
* CII schema orders it. A SEPA creditor identifier, which UBL states as a
|
|
216
|
+
* seller identification with the scheme SEPA, is the bank assigned creditor
|
|
217
|
+
* identifier (BT-90) and no party identifier in CII; it is not written here.
|
|
218
|
+
* @param doc XML document
|
|
219
|
+
* @param partyElement The seller or buyer trade party
|
|
220
|
+
* @param party The seller or the buyer
|
|
221
|
+
*/
|
|
222
|
+
addPartyIdentifiers(doc, partyElement, party) {
|
|
223
|
+
const identifiers = getPartyIdentifiers(party).filter((identifier) => identifier.scheme?.toUpperCase() !== 'SEPA');
|
|
224
|
+
for (const identifier of identifiers.reverse()) {
|
|
225
|
+
const idElement = doc.createElement(identifier.scheme ? 'ram:GlobalID' : 'ram:ID');
|
|
226
|
+
if (identifier.scheme) {
|
|
227
|
+
idElement.setAttribute('schemeID', identifier.scheme);
|
|
228
|
+
}
|
|
229
|
+
idElement.textContent = identifier.value;
|
|
230
|
+
partyElement.insertBefore(idElement, partyElement.firstChild);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Adds the buyer reference (BT-10) as `ram:BuyerReference` of the header
|
|
235
|
+
* trade agreement, its first child in the CII schema; nothing when the
|
|
236
|
+
* document has none.
|
|
237
|
+
* @param doc XML document
|
|
238
|
+
* @param agreementElement The header trade agreement
|
|
239
|
+
* @param invoice Invoice data
|
|
240
|
+
*/
|
|
241
|
+
addBuyerReference(doc, agreementElement, invoice) {
|
|
242
|
+
const buyerReference = invoice.buyerReference?.trim();
|
|
243
|
+
if (!buyerReference) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const buyerReferenceElement = doc.createElement('ram:BuyerReference');
|
|
247
|
+
buyerReferenceElement.textContent = buyerReference;
|
|
248
|
+
agreementElement.appendChild(buyerReferenceElement);
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Adds the invoicing period (BG-14) as `ram:BillingSpecifiedPeriod` of the
|
|
252
|
+
* header settlement, where the CII schema puts it: the start date (BT-73) and
|
|
253
|
+
* the end date (BT-74) of `periodOfPerformance`. Without it, the date or
|
|
254
|
+
* dates a decoded document kept in `metadata.extensions.dateInformation`
|
|
255
|
+
* (`periodStart`, `periodEnd`) are written, as the UBL encoders write them:
|
|
256
|
+
* a period may state only one of its dates (BR-CO-19).
|
|
257
|
+
* @param doc XML document
|
|
258
|
+
* @param settlementElement The header trade settlement
|
|
259
|
+
* @param invoice Invoice data
|
|
260
|
+
*/
|
|
261
|
+
addInvoicingPeriod(doc, settlementElement, invoice) {
|
|
262
|
+
const { start, end } = this.getInvoicingPeriodDays(invoice);
|
|
263
|
+
if (start === undefined && end === undefined) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const periodElement = doc.createElement('ram:BillingSpecifiedPeriod');
|
|
267
|
+
const appendDate = (name, day) => {
|
|
268
|
+
const dateElement = doc.createElement(name);
|
|
269
|
+
const dateStringElement = doc.createElement('udt:DateTimeString');
|
|
270
|
+
dateStringElement.setAttribute('format', '102');
|
|
271
|
+
dateStringElement.textContent = day;
|
|
272
|
+
dateElement.appendChild(dateStringElement);
|
|
273
|
+
periodElement.appendChild(dateElement);
|
|
274
|
+
};
|
|
275
|
+
if (start !== undefined) {
|
|
276
|
+
appendDate('ram:StartDateTime', start);
|
|
277
|
+
}
|
|
278
|
+
if (end !== undefined) {
|
|
279
|
+
appendDate('ram:EndDateTime', end);
|
|
280
|
+
}
|
|
281
|
+
settlementElement.appendChild(periodElement);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* The start (BT-73) and end (BT-74) dates of the invoicing period, in CII
|
|
285
|
+
* format 102: from `periodOfPerformance`, or else from the dates kept in
|
|
286
|
+
* `metadata.extensions.dateInformation`. A kept date is an `xsd:date`, as
|
|
287
|
+
* the UBL decoder keeps it and the CII decoders write it (YYYY-MM-DD); a time
|
|
288
|
+
* zone does not move the day it names (`parseXsdDateDay`), so the stated day
|
|
289
|
+
* is written. '' is no date, as the UBL decoder writes it. Any other value is
|
|
290
|
+
* refused with an `EInvoiceFormatError` naming the date.
|
|
291
|
+
* @param invoice Invoice data
|
|
292
|
+
*/
|
|
293
|
+
getInvoicingPeriodDays(invoice) {
|
|
294
|
+
if (invoice.periodOfPerformance) {
|
|
295
|
+
return {
|
|
296
|
+
start: this.formatDateYYYYMMDD(invoice.periodOfPerformance.from, 'BT-73 invoicing period start date'),
|
|
297
|
+
end: this.formatDateYYYYMMDD(invoice.periodOfPerformance.to, 'BT-74 invoicing period end date'),
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
const dateInformation = invoice.metadata?.extensions?.dateInformation;
|
|
301
|
+
if (typeof dateInformation !== 'object' || dateInformation === null) {
|
|
302
|
+
return {};
|
|
303
|
+
}
|
|
304
|
+
const keptDay = (key, field) => {
|
|
305
|
+
const value = dateInformation[key];
|
|
306
|
+
if (value === undefined || value === '') {
|
|
307
|
+
return undefined;
|
|
308
|
+
}
|
|
309
|
+
const day = typeof value === 'string' ? parseXsdDateDay(value) : undefined;
|
|
310
|
+
if (day === undefined) {
|
|
311
|
+
throw new EInvoiceFormatError(`${field} is no valid date: ${String(value)}`, {
|
|
312
|
+
targetFormat: 'cii',
|
|
313
|
+
unsupportedFeatures: [field],
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
return this.formatDateYYYYMMDD(day, field);
|
|
317
|
+
};
|
|
318
|
+
const start = keptDay('periodStart', 'BT-73 invoicing period start date');
|
|
319
|
+
const end = keptDay('periodEnd', 'BT-74 invoicing period end date');
|
|
320
|
+
return { ...(start === undefined ? {} : { start }), ...(end === undefined ? {} : { end }) };
|
|
321
|
+
}
|
|
143
322
|
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lpLmVuY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3JtYXRzL2NpaS9jaWkuZW5jb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGNBQWUsU0FBUSxXQUFXO0lBQzVDLE9BQU8sR0FBZSxVQUFVLENBQUMsT0FBTyxDQUFDO0lBRW5EOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxPQUFtQjtRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBdUI7UUFDekMscUdBQXFHO1FBQ3JHLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQywrR0FBK0c7UUFDL0csZ0JBQWdCLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUQsNkdBQTZHO1FBQzdHLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUMsT0FBTyxJQUFJ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
|
|
323
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lpLmVuY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3JtYXRzL2NpaS9jaWkuZW5jb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRzs7Ozs7R0FLRztBQUNILE1BQU0sZ0JBQWdCLEdBQXdDO0lBQzVELENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUNsQixzS0FBc0s7SUFDeEssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQ2hCLHNMQUFzTDtJQUN4TCxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFDbkIsdUVBQXVFO0NBQzFFLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBbUIsRUFBUSxFQUFFO0lBQzFELE1BQU0sTUFBTSxHQUFHLGdCQUFnQixDQUFDLE9BQU8s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
|
|
@@ -20,12 +20,9 @@ export declare enum CIIProfile {
|
|
|
20
20
|
MINIMUM = "MINIMUM"
|
|
21
21
|
}
|
|
22
22
|
export declare const CII_PROFILE_IDS: {
|
|
23
|
+
EN16931: string;
|
|
23
24
|
FACTURX_MINIMUM: string;
|
|
24
|
-
|
|
25
|
-
FACTURX_EN16931: string;
|
|
26
|
-
ZUGFERD_BASIC: string;
|
|
27
|
-
ZUGFERD_COMFORT: string;
|
|
28
|
-
ZUGFERD_EXTENDED: string;
|
|
25
|
+
FACTURX_BASIC_WL: string;
|
|
29
26
|
ZUGFERD_V1_BASIC: string;
|
|
30
27
|
ZUGFERD_V1_COMFORT: string;
|
|
31
28
|
ZUGFERD_V1_EXTENDED: string;
|