@fin.cx/einvoice 5.0.2 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist_ts/00_commitinfo_data.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/package.json +13 -8
- 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
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ISO 4217 Currency utilities for EN16931 compliance
|
|
3
|
+
* Provides currency-aware rounding and decimal handling
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* ISO 4217 Currency minor units (decimal places)
|
|
7
|
+
* Based on ISO 4217:2015 standard
|
|
8
|
+
*
|
|
9
|
+
* Most currencies use 2 decimal places, but there are exceptions:
|
|
10
|
+
* - 0 decimals: JPY, KRW, CLP, etc.
|
|
11
|
+
* - 3 decimals: BHD, IQD, JOD, KWD, OMR, TND
|
|
12
|
+
* - 4 decimals: CLF (Chilean Unit of Account)
|
|
13
|
+
*/
|
|
14
|
+
export const ISO4217MinorUnits = {
|
|
15
|
+
// Major currencies
|
|
16
|
+
'EUR': 2, // Euro
|
|
17
|
+
'USD': 2, // US Dollar
|
|
18
|
+
'GBP': 2, // British Pound
|
|
19
|
+
'CHF': 2, // Swiss Franc
|
|
20
|
+
'CAD': 2, // Canadian Dollar
|
|
21
|
+
'AUD': 2, // Australian Dollar
|
|
22
|
+
'NZD': 2, // New Zealand Dollar
|
|
23
|
+
'CNY': 2, // Chinese Yuan
|
|
24
|
+
'INR': 2, // Indian Rupee
|
|
25
|
+
'MXN': 2, // Mexican Peso
|
|
26
|
+
'BRL': 2, // Brazilian Real
|
|
27
|
+
'RUB': 2, // Russian Ruble
|
|
28
|
+
'ZAR': 2, // South African Rand
|
|
29
|
+
'SGD': 2, // Singapore Dollar
|
|
30
|
+
'HKD': 2, // Hong Kong Dollar
|
|
31
|
+
'NOK': 2, // Norwegian Krone
|
|
32
|
+
'SEK': 2, // Swedish Krona
|
|
33
|
+
'DKK': 2, // Danish Krone
|
|
34
|
+
'PLN': 2, // Polish Zloty
|
|
35
|
+
'CZK': 2, // Czech Koruna
|
|
36
|
+
'HUF': 2, // Hungarian Forint (technically 2, though often shown as 0)
|
|
37
|
+
'RON': 2, // Romanian Leu
|
|
38
|
+
'BGN': 2, // Bulgarian Lev
|
|
39
|
+
'HRK': 2, // Croatian Kuna
|
|
40
|
+
'TRY': 2, // Turkish Lira
|
|
41
|
+
'ISK': 0, // Icelandic Króna (0 decimals)
|
|
42
|
+
// Zero decimal currencies
|
|
43
|
+
'JPY': 0, // Japanese Yen
|
|
44
|
+
'KRW': 0, // South Korean Won
|
|
45
|
+
'CLP': 0, // Chilean Peso
|
|
46
|
+
'PYG': 0, // Paraguayan Guaraní
|
|
47
|
+
'RWF': 0, // Rwandan Franc
|
|
48
|
+
'VND': 0, // Vietnamese Dong
|
|
49
|
+
'XAF': 0, // CFA Franc BEAC
|
|
50
|
+
'XOF': 0, // CFA Franc BCEAO
|
|
51
|
+
'XPF': 0, // CFP Franc
|
|
52
|
+
'BIF': 0, // Burundian Franc
|
|
53
|
+
'DJF': 0, // Djiboutian Franc
|
|
54
|
+
'GNF': 0, // Guinean Franc
|
|
55
|
+
'KMF': 0, // Comorian Franc
|
|
56
|
+
'MGA': 0, // Malagasy Ariary
|
|
57
|
+
'UGX': 0, // Ugandan Shilling
|
|
58
|
+
'VUV': 0, // Vanuatu Vatu
|
|
59
|
+
// Three decimal currencies
|
|
60
|
+
'BHD': 3, // Bahraini Dinar
|
|
61
|
+
'IQD': 3, // Iraqi Dinar
|
|
62
|
+
'JOD': 3, // Jordanian Dinar
|
|
63
|
+
'KWD': 3, // Kuwaiti Dinar
|
|
64
|
+
'LYD': 3, // Libyan Dinar
|
|
65
|
+
'OMR': 3, // Omani Rial
|
|
66
|
+
'TND': 3, // Tunisian Dinar
|
|
67
|
+
// Four decimal currencies
|
|
68
|
+
'CLF': 4, // Chilean Unit of Account (UF)
|
|
69
|
+
'UYW': 4, // Unidad Previsional (Uruguay)
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Rounding modes for currency calculations
|
|
73
|
+
*/
|
|
74
|
+
export var RoundingMode;
|
|
75
|
+
(function (RoundingMode) {
|
|
76
|
+
RoundingMode["HALF_UP"] = "HALF_UP";
|
|
77
|
+
RoundingMode["HALF_DOWN"] = "HALF_DOWN";
|
|
78
|
+
RoundingMode["HALF_EVEN"] = "HALF_EVEN";
|
|
79
|
+
RoundingMode["UP"] = "UP";
|
|
80
|
+
RoundingMode["DOWN"] = "DOWN";
|
|
81
|
+
RoundingMode["CEILING"] = "CEILING";
|
|
82
|
+
RoundingMode["FLOOR"] = "FLOOR"; // Round toward negative infinity
|
|
83
|
+
})(RoundingMode || (RoundingMode = {}));
|
|
84
|
+
/**
|
|
85
|
+
* Get minor units (decimal places) for a currency
|
|
86
|
+
*/
|
|
87
|
+
export function getCurrencyMinorUnits(currencyCode) {
|
|
88
|
+
const code = currencyCode.toUpperCase();
|
|
89
|
+
return ISO4217MinorUnits[code] ?? 2; // Default to 2 if unknown
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Round a value according to currency rules
|
|
93
|
+
*/
|
|
94
|
+
export function roundToCurrency(value, currencyCode, mode = RoundingMode.HALF_UP) {
|
|
95
|
+
const minorUnits = getCurrencyMinorUnits(currencyCode);
|
|
96
|
+
if (minorUnits === 0) {
|
|
97
|
+
// For zero decimal currencies, round to integer
|
|
98
|
+
return Math.round(value);
|
|
99
|
+
}
|
|
100
|
+
const multiplier = Math.pow(10, minorUnits);
|
|
101
|
+
const scaled = value * multiplier;
|
|
102
|
+
let rounded;
|
|
103
|
+
switch (mode) {
|
|
104
|
+
case RoundingMode.HALF_UP:
|
|
105
|
+
// Round half values away from zero
|
|
106
|
+
if (scaled >= 0) {
|
|
107
|
+
rounded = Math.floor(scaled + 0.5);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
rounded = Math.ceil(scaled - 0.5);
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
113
|
+
case RoundingMode.HALF_DOWN:
|
|
114
|
+
// Round half values toward zero
|
|
115
|
+
const fraction = Math.abs(scaled % 1);
|
|
116
|
+
if (fraction === 0.5) {
|
|
117
|
+
// Exactly 0.5 - round toward zero
|
|
118
|
+
rounded = scaled >= 0 ? Math.floor(scaled) : Math.ceil(scaled);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Not exactly 0.5 - use normal rounding
|
|
122
|
+
rounded = Math.round(scaled);
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
case RoundingMode.HALF_EVEN:
|
|
126
|
+
// Banker's rounding
|
|
127
|
+
const isHalf = Math.abs(scaled % 1) === 0.5;
|
|
128
|
+
if (isHalf) {
|
|
129
|
+
const floor = Math.floor(scaled);
|
|
130
|
+
rounded = floor % 2 === 0 ? floor : Math.ceil(scaled);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
rounded = Math.round(scaled);
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
case RoundingMode.UP:
|
|
137
|
+
rounded = scaled >= 0 ? Math.ceil(scaled) : Math.floor(scaled);
|
|
138
|
+
break;
|
|
139
|
+
case RoundingMode.DOWN:
|
|
140
|
+
rounded = Math.trunc(scaled);
|
|
141
|
+
break;
|
|
142
|
+
case RoundingMode.CEILING:
|
|
143
|
+
rounded = Math.ceil(scaled);
|
|
144
|
+
break;
|
|
145
|
+
case RoundingMode.FLOOR:
|
|
146
|
+
rounded = Math.floor(scaled);
|
|
147
|
+
break;
|
|
148
|
+
default:
|
|
149
|
+
rounded = Math.round(scaled);
|
|
150
|
+
}
|
|
151
|
+
return rounded / multiplier;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get tolerance for currency comparison
|
|
155
|
+
* Based on the smallest representable unit for the currency
|
|
156
|
+
*/
|
|
157
|
+
export function getCurrencyTolerance(currencyCode) {
|
|
158
|
+
const minorUnits = getCurrencyMinorUnits(currencyCode);
|
|
159
|
+
// Tolerance is half of the smallest unit
|
|
160
|
+
return 0.5 * Math.pow(10, -minorUnits);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Compare two monetary values with currency-aware tolerance
|
|
164
|
+
*/
|
|
165
|
+
export function areMonetaryValuesEqual(value1, value2, currencyCode) {
|
|
166
|
+
const tolerance = getCurrencyTolerance(currencyCode);
|
|
167
|
+
return Math.abs(value1 - value2) <= tolerance;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Format a value according to currency decimal places
|
|
171
|
+
*/
|
|
172
|
+
export function formatCurrencyValue(value, currencyCode) {
|
|
173
|
+
const minorUnits = getCurrencyMinorUnits(currencyCode);
|
|
174
|
+
return value.toFixed(minorUnits);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Validate if a value has correct decimal places for a currency
|
|
178
|
+
*/
|
|
179
|
+
export function hasValidDecimalPlaces(value, currencyCode) {
|
|
180
|
+
const minorUnits = getCurrencyMinorUnits(currencyCode);
|
|
181
|
+
const multiplier = Math.pow(10, minorUnits);
|
|
182
|
+
const scaled = Math.round(value * multiplier);
|
|
183
|
+
const reconstructed = scaled / multiplier;
|
|
184
|
+
return Math.abs(value - reconstructed) < Number.EPSILON;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Currency calculation context for EN16931 compliance
|
|
188
|
+
*/
|
|
189
|
+
export class CurrencyCalculator {
|
|
190
|
+
constructor(config) {
|
|
191
|
+
if (typeof config === 'string') {
|
|
192
|
+
this.currency = config;
|
|
193
|
+
this.minorUnits = getCurrencyMinorUnits(config);
|
|
194
|
+
this.roundingMode = RoundingMode.HALF_UP;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
this.currency = config.code;
|
|
198
|
+
this.minorUnits = config.minorUnits;
|
|
199
|
+
this.roundingMode = config.roundingMode;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Round a value according to configured rules
|
|
204
|
+
*/
|
|
205
|
+
round(value) {
|
|
206
|
+
return roundToCurrency(value, this.currency, this.roundingMode);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Calculate line net amount with rounding
|
|
210
|
+
* EN16931: Line net = (quantity × unit price) - line discounts
|
|
211
|
+
*/
|
|
212
|
+
calculateLineNet(quantity, unitPrice, discount = 0) {
|
|
213
|
+
const gross = quantity * unitPrice;
|
|
214
|
+
const net = gross - discount;
|
|
215
|
+
return this.round(net);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Calculate VAT amount with rounding
|
|
219
|
+
* EN16931: VAT amount = taxable amount × (rate / 100)
|
|
220
|
+
*/
|
|
221
|
+
calculateVAT(taxableAmount, rate) {
|
|
222
|
+
const vat = taxableAmount * (rate / 100);
|
|
223
|
+
return this.round(vat);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Compare values with currency-aware tolerance
|
|
227
|
+
*/
|
|
228
|
+
areEqual(value1, value2) {
|
|
229
|
+
return areMonetaryValuesEqual(value1, value2, this.currency);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get the tolerance for comparisons
|
|
233
|
+
*/
|
|
234
|
+
getTolerance() {
|
|
235
|
+
return getCurrencyTolerance(this.currency);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Format value for display
|
|
239
|
+
*/
|
|
240
|
+
format(value) {
|
|
241
|
+
return formatCurrencyValue(value, this.currency);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get version info for ISO 4217 data
|
|
246
|
+
*/
|
|
247
|
+
export function getISO4217Version() {
|
|
248
|
+
return '2015'; // Update when currency list is updated
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3JtYXRzL3V0aWxzL2N1cnJlbmN5LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQTJCO0lBQ3ZELG1CQUFtQjtJQUNuQixLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU87SUFDakIsS0FBSyxFQUFFLENBQUMsRUFBRSxZQUFZO0lBQ3RCLEtBQUssRUFBRSxDQUFDLEVBQUUsZ0JBQWdCO0lBQzFCLEtBQUssRUFBRSxDQUFDLEVBQUUsY0FBYztJQUN4QixLQUFLLEVBQUUsQ0FBQyxFQUFFLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQjtJQUM5QixLQUFLLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQjtJQUMvQixLQUFLLEVBQUUsQ0FBQyxFQUFFLGVBQWU7SUFDekIsS0FBSyxFQUFFLENBQUMsRUFBRSxlQUFlO0lBQ3pCLEtBQUssRUFBRSxDQUFDLEVBQUUsZUFBZTtJQUN6QixLQUFLLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQjtJQUMzQixLQUFLLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQjtJQUMxQixLQUFLLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQjtJQUMvQixLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQjtJQUM3QixLQUFLLEVBQUUsQ0FBQyxFQUFFLG1CQUFtQjtJQUM3QixLQUFLLEVBQUUsQ0FBQyxFQUFFLGtCQUFrQjtJQUM1QixLQUFLLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQjtJQUMxQixLQUFLLEVBQUUsQ0FBQyxFQUFFLGVBQWU7SUFDekIsS0FBSyxFQUFFLENBQUMsRUFBRSxlQUFlO0lBQ3pCLEtBQUssRUFBRSxDQUFDLEVBQUUsZUFBZTtJQUN6QixLQUFLLEVBQUUsQ0FBQyxFQUFFLDREQUE0RDtJQUN0RSxLQUFLLEVB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
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decimal Arithmetic Library for EN16931 Compliance
|
|
3
|
+
* Provides arbitrary precision decimal arithmetic to avoid floating-point errors
|
|
4
|
+
*
|
|
5
|
+
* Based on EN16931 requirements for financial calculations:
|
|
6
|
+
* - All monetary amounts must be calculated with sufficient precision
|
|
7
|
+
* - Rounding must be consistent and predictable
|
|
8
|
+
* - No loss of precision in intermediate calculations
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Decimal class for arbitrary precision arithmetic
|
|
12
|
+
* Internally stores the value as an integer with a scale factor
|
|
13
|
+
*/
|
|
14
|
+
export declare class Decimal {
|
|
15
|
+
private readonly value;
|
|
16
|
+
private readonly scale;
|
|
17
|
+
private static _ZERO;
|
|
18
|
+
private static _ONE;
|
|
19
|
+
private static _TEN;
|
|
20
|
+
private static _HUNDRED;
|
|
21
|
+
static get ZERO(): Decimal;
|
|
22
|
+
static get ONE(): Decimal;
|
|
23
|
+
static get TEN(): Decimal;
|
|
24
|
+
static get HUNDRED(): Decimal;
|
|
25
|
+
private static readonly DEFAULT_SCALE;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new Decimal from various input types
|
|
28
|
+
*/
|
|
29
|
+
constructor(value: string | number | bigint | Decimal, scale?: number);
|
|
30
|
+
/**
|
|
31
|
+
* Convert to string representation
|
|
32
|
+
*/
|
|
33
|
+
toString(decimalPlaces?: number): string;
|
|
34
|
+
/**
|
|
35
|
+
* Convert to number (may lose precision)
|
|
36
|
+
*/
|
|
37
|
+
toNumber(): number;
|
|
38
|
+
/**
|
|
39
|
+
* Convert to fixed decimal places string
|
|
40
|
+
*/
|
|
41
|
+
toFixed(decimalPlaces: number): string;
|
|
42
|
+
/**
|
|
43
|
+
* Add two decimals
|
|
44
|
+
*/
|
|
45
|
+
add(other: Decimal | number | string): Decimal;
|
|
46
|
+
/**
|
|
47
|
+
* Subtract another decimal
|
|
48
|
+
*/
|
|
49
|
+
subtract(other: Decimal | number | string): Decimal;
|
|
50
|
+
/**
|
|
51
|
+
* Multiply by another decimal
|
|
52
|
+
*/
|
|
53
|
+
multiply(other: Decimal | number | string): Decimal;
|
|
54
|
+
/**
|
|
55
|
+
* Divide by another decimal
|
|
56
|
+
*/
|
|
57
|
+
divide(other: Decimal | number | string, precision?: number): Decimal;
|
|
58
|
+
/**
|
|
59
|
+
* Calculate percentage (this * rate / 100)
|
|
60
|
+
*/
|
|
61
|
+
percentage(rate: Decimal | number | string): Decimal;
|
|
62
|
+
/**
|
|
63
|
+
* Round to specified decimal places using a specific rounding mode
|
|
64
|
+
*/
|
|
65
|
+
round(decimalPlaces: number, mode?: 'HALF_UP' | 'HALF_DOWN' | 'HALF_EVEN' | 'UP' | 'DOWN' | 'CEILING' | 'FLOOR'): Decimal;
|
|
66
|
+
/**
|
|
67
|
+
* Compare with another decimal
|
|
68
|
+
*/
|
|
69
|
+
compareTo(other: Decimal | number | string): number;
|
|
70
|
+
/**
|
|
71
|
+
* Check equality
|
|
72
|
+
*/
|
|
73
|
+
equals(other: Decimal | number | string, tolerance?: Decimal | number | string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Check if less than
|
|
76
|
+
*/
|
|
77
|
+
lessThan(other: Decimal | number | string): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Check if less than or equal
|
|
80
|
+
*/
|
|
81
|
+
lessThanOrEqual(other: Decimal | number | string): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Check if greater than
|
|
84
|
+
*/
|
|
85
|
+
greaterThan(other: Decimal | number | string): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Check if greater than or equal
|
|
88
|
+
*/
|
|
89
|
+
greaterThanOrEqual(other: Decimal | number | string): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Get absolute value
|
|
92
|
+
*/
|
|
93
|
+
abs(): Decimal;
|
|
94
|
+
/**
|
|
95
|
+
* Negate the value
|
|
96
|
+
*/
|
|
97
|
+
negate(): Decimal;
|
|
98
|
+
/**
|
|
99
|
+
* Check if zero
|
|
100
|
+
*/
|
|
101
|
+
isZero(): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Check if negative
|
|
104
|
+
*/
|
|
105
|
+
isNegative(): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Check if positive
|
|
108
|
+
*/
|
|
109
|
+
isPositive(): boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Rescale to a different number of decimal places
|
|
112
|
+
*/
|
|
113
|
+
private rescale;
|
|
114
|
+
/**
|
|
115
|
+
* Normalize by removing trailing zeros
|
|
116
|
+
*/
|
|
117
|
+
private normalize;
|
|
118
|
+
/**
|
|
119
|
+
* Create a Decimal from a percentage string (e.g., "19%" -> 0.19)
|
|
120
|
+
*/
|
|
121
|
+
static fromPercentage(value: string): Decimal;
|
|
122
|
+
/**
|
|
123
|
+
* Sum an array of decimals
|
|
124
|
+
*/
|
|
125
|
+
static sum(values: (Decimal | number | string)[]): Decimal;
|
|
126
|
+
/**
|
|
127
|
+
* Get the minimum value
|
|
128
|
+
*/
|
|
129
|
+
static min(...values: (Decimal | number | string)[]): Decimal;
|
|
130
|
+
/**
|
|
131
|
+
* Get the maximum value
|
|
132
|
+
*/
|
|
133
|
+
static max(...values: (Decimal | number | string)[]): Decimal;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Helper function to create a Decimal
|
|
137
|
+
*/
|
|
138
|
+
export declare function decimal(value: string | number | bigint | Decimal): Decimal;
|
|
139
|
+
/**
|
|
140
|
+
* Export commonly used rounding modes
|
|
141
|
+
*/
|
|
142
|
+
export declare const RoundingMode: {
|
|
143
|
+
readonly HALF_UP: "HALF_UP";
|
|
144
|
+
readonly HALF_DOWN: "HALF_DOWN";
|
|
145
|
+
readonly HALF_EVEN: "HALF_EVEN";
|
|
146
|
+
readonly UP: "UP";
|
|
147
|
+
readonly DOWN: "DOWN";
|
|
148
|
+
readonly CEILING: "CEILING";
|
|
149
|
+
readonly FLOOR: "FLOOR";
|
|
150
|
+
};
|
|
151
|
+
export type RoundingMode = typeof RoundingMode[keyof typeof RoundingMode];
|