@design.estate/dees-document 3.3.0 → 3.4.0
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_bundle/bundle.js +296 -241
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.pdfservice.d.ts +3 -0
- package/dist_ts/classes.pdfservice.js +5 -1
- package/dist_ts_shared/index.d.ts +1 -0
- package/dist_ts_shared/index.js +2 -1
- package/dist_ts_shared/paidamount.d.ts +42 -0
- package/dist_ts_shared/paidamount.js +141 -0
- package/dist_ts_shared/translation.d.ts +11 -0
- package/dist_ts_shared/translation.js +23 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/contentinvoice.d.ts +29 -1
- package/dist_ts_web/elements/contentinvoice.js +125 -20
- package/dist_ts_web/elements/document.js +13 -1
- package/package.json +2 -2
- package/readme.md +11 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.pdfservice.ts +4 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/contentinvoice.ts +142 -19
- package/ts_web/elements/document.ts +11 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-document',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.4.0',
|
|
7
7
|
description: 'A sophisticated framework for dynamically generating and rendering business documents like invoices with modern web technologies, featuring PDF creation, templating, and automation.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSw4QkFBOEI7SUFDcEMsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHVMQUF1TDtDQUNyTSxDQUFBIn0=
|
|
@@ -19,6 +19,9 @@ export declare class PdfService {
|
|
|
19
19
|
stop(): Promise<void>;
|
|
20
20
|
/**
|
|
21
21
|
* creates an letter
|
|
22
|
+
*
|
|
23
|
+
* An accounting document whose advance payments do not add up to its paid
|
|
24
|
+
* amount is refused before anything is rendered: this rejects.
|
|
22
25
|
*/
|
|
23
26
|
createPdfFromLetterObject(optionsArg: {
|
|
24
27
|
letterData: plugins.tsclass.business.TLetter;
|
|
@@ -31,8 +31,12 @@ export class PdfService {
|
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* creates an letter
|
|
34
|
+
*
|
|
35
|
+
* An accounting document whose advance payments do not add up to its paid
|
|
36
|
+
* amount is refused before anything is rendered: this rejects.
|
|
34
37
|
*/
|
|
35
38
|
async createPdfFromLetterObject(optionsArg) {
|
|
39
|
+
plugins.shared.assertPaidAmountMatchesAdvancePayments(optionsArg.letterData);
|
|
36
40
|
const html = `
|
|
37
41
|
<script type="module">
|
|
38
42
|
${await helpers.getBundleAsString()}
|
|
@@ -44,4 +48,4 @@ export class PdfService {
|
|
|
44
48
|
return pdfResult;
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wZGZzZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5wZGZzZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBSXhDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDckIsU0FBUztJQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUNoQyxVQUF5QztRQUV6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVztJQUNYLE9BQU8sQ0FBZ0M7SUFFaEMsZ0JBQWdCLENBQTZCO0lBRXBELFlBQVksVUFBeUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxVQUd0QztRQUNDLE9BQU8sQ0FBQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sSUFBSSxHQUFHOztVQUVQLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixFQUFFOzsyREFFZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FDNUIsaUJBQWlCLE9BQU8sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuRCxVQUFVLENBQUMsVUFBVSxDQUN0QjtLQUNBLENBQUM7UUFDRixxQkFBcUI7UUFDckIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQ3ZFLElBQUksQ0FDTCxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
|
|
@@ -7,6 +7,7 @@ import * as translation from "./translation.js";
|
|
|
7
7
|
export { translation };
|
|
8
8
|
export * from "./accountingdoc.js";
|
|
9
9
|
export * from "./demoletter.js";
|
|
10
|
+
export * from "./paidamount.js";
|
|
10
11
|
export * from "./paymentcode.js";
|
|
11
12
|
export * from "./paymentreminder.js";
|
|
12
13
|
export * from "./unitnames.js";
|
package/dist_ts_shared/index.js
CHANGED
|
@@ -10,7 +10,8 @@ import * as translation from "./translation.js";
|
|
|
10
10
|
export { translation };
|
|
11
11
|
export * from "./accountingdoc.js";
|
|
12
12
|
export * from "./demoletter.js";
|
|
13
|
+
export * from "./paidamount.js";
|
|
13
14
|
export * from "./paymentcode.js";
|
|
14
15
|
export * from "./paymentreminder.js";
|
|
15
16
|
export * from "./unitnames.js";
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGdCQUFnQjtBQUN2QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZTtBQUN0RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtBQUVqRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQWE7SUFDbEMsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUV0QixPQUFPLEtBQUssV0FBVyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUV2QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQkFBZ0IsQ0FBQyJ9
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as plugins from "./plugins.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks the one rule tsclass sets between the paid amount and the advance
|
|
4
|
+
* payments: when a document lists `advancePayments`, its `paidAmount` equals
|
|
5
|
+
* their gross sum, the `net` plus the `vat` of every group of every payment,
|
|
6
|
+
* to the last decimal. A document that breaks it would print a deduction that
|
|
7
|
+
* does not add up to what it says was paid, so it is refused: this throws, and
|
|
8
|
+
* neither value is recomputed from the other. A letter that is no accounting
|
|
9
|
+
* document, none at all, and a document without advance payments, pass.
|
|
10
|
+
*/
|
|
11
|
+
export declare const assertPaidAmountMatchesAdvancePayments: (letterArg: plugins.tsclass.business.TLetter | null | undefined) => void;
|
|
12
|
+
/** The tax the advance payments contain at one rate. */
|
|
13
|
+
export interface IAdvancePaymentTax {
|
|
14
|
+
/** the VAT rate in percent */
|
|
15
|
+
percentage: number;
|
|
16
|
+
/** the sum of the `vat` of every advance payment's group at this rate */
|
|
17
|
+
vat: number;
|
|
18
|
+
}
|
|
19
|
+
/** What a document says was paid before it was issued, and what remains. */
|
|
20
|
+
export interface IPaidAmountSummary {
|
|
21
|
+
/** the gross sum received before the document was issued (EN 16931 BT-113), as stated */
|
|
22
|
+
paidAmount: number;
|
|
23
|
+
/**
|
|
24
|
+
* The gross total as printed less the paid amount (BT-115); zero when
|
|
25
|
+
* everything is paid and negative when more was paid than the total.
|
|
26
|
+
*/
|
|
27
|
+
amountDue: number;
|
|
28
|
+
/** the advance payments the document deducts, in the order it lists them; empty when it lists none */
|
|
29
|
+
advancePayments: plugins.tsclass.finance.TAdvancePayment[];
|
|
30
|
+
/** the tax the advance payments contain, per rate, the highest rate first; empty without advance payments */
|
|
31
|
+
advancePaymentTaxes: IAdvancePaymentTax[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The paid amount of an accounting document and the amount due, or null when
|
|
35
|
+
* the document states no paid amount or a paid amount of zero.
|
|
36
|
+
*
|
|
37
|
+
* The amount due is the gross total, rounded to the currency's decimals as
|
|
38
|
+
* the document prints it, less the paid amount as stated, computed in exact
|
|
39
|
+
* decimals. The advance payments are checked against the paid amount first
|
|
40
|
+
* (`assertPaidAmountMatchesAdvancePayments`); a mismatch throws.
|
|
41
|
+
*/
|
|
42
|
+
export declare const getPaidAmountSummary: (docArg: plugins.tsclass.finance.TAccountingDoc, totalGrossArg: number) => IPaidAmountSummary | null;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as plugins from "./plugins.js";
|
|
2
|
+
import { isAccountingDoc } from "./accountingdoc.js";
|
|
3
|
+
const DECIMAL_PATTERN = /^(-?)(\d+)(?:\.(\d+))?(?:e([+-]\d+))?$/;
|
|
4
|
+
/** The decimal a text of digits, an optional fraction and an optional exponent states. */
|
|
5
|
+
const parseDecimal = (textArg) => {
|
|
6
|
+
const parts = DECIMAL_PATTERN.exec(textArg);
|
|
7
|
+
if (!parts) {
|
|
8
|
+
throw new Error(`"${textArg}" is no decimal number`);
|
|
9
|
+
}
|
|
10
|
+
const [, sign, integerDigits, fractionDigits = "", exponentText = "0"] = parts;
|
|
11
|
+
const exponent = Number(exponentText);
|
|
12
|
+
let digits = integerDigits + fractionDigits;
|
|
13
|
+
let scale = fractionDigits.length - exponent;
|
|
14
|
+
if (scale < 0) {
|
|
15
|
+
digits += "0".repeat(-scale);
|
|
16
|
+
scale = 0;
|
|
17
|
+
}
|
|
18
|
+
const units = BigInt(digits);
|
|
19
|
+
return { units: sign === "-" ? -units : units, scale };
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* The decimal an amount states: its shortest representation, the one
|
|
23
|
+
* `String()` gives, so 1000.1 is exactly 1000.1 and nothing is rounded.
|
|
24
|
+
*/
|
|
25
|
+
const statedDecimal = (valueArg, nameArg) => {
|
|
26
|
+
if (!Number.isFinite(valueArg)) {
|
|
27
|
+
throw new Error(`${nameArg} is no finite number`);
|
|
28
|
+
}
|
|
29
|
+
return parseDecimal(String(valueArg));
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* The decimal of a computed amount as the document prints it: rounded to the
|
|
33
|
+
* currency's decimals on its exact value, as `Intl.NumberFormat` rounds it.
|
|
34
|
+
* From 10^21 on a double is a whole number and `toFixed()` gives an exponent,
|
|
35
|
+
* so the shortest representation is exact there.
|
|
36
|
+
*/
|
|
37
|
+
const printedDecimal = (valueArg, fractionDigitsArg) => parseDecimal(Math.abs(valueArg) < 1e21 ? valueArg.toFixed(fractionDigitsArg) : String(valueArg));
|
|
38
|
+
const rescale = (decimalArg, scaleArg) => decimalArg.units * 10n ** BigInt(scaleArg - decimalArg.scale);
|
|
39
|
+
const addDecimals = (...decimalsArg) => {
|
|
40
|
+
const scale = Math.max(0, ...decimalsArg.map((decimalArg) => decimalArg.scale));
|
|
41
|
+
return {
|
|
42
|
+
units: decimalsArg.reduce((sumArg, decimalArg) => sumArg + rescale(decimalArg, scale), 0n),
|
|
43
|
+
scale,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const negateDecimal = (decimalArg) => ({
|
|
47
|
+
units: -decimalArg.units,
|
|
48
|
+
scale: decimalArg.scale,
|
|
49
|
+
});
|
|
50
|
+
const decimalsEqual = (aArg, bArg) => {
|
|
51
|
+
const scale = Math.max(aArg.scale, bArg.scale);
|
|
52
|
+
return rescale(aArg, scale) === rescale(bArg, scale);
|
|
53
|
+
};
|
|
54
|
+
/** A decimal as a number, for formatting; the text round trip keeps it as close as a double can. */
|
|
55
|
+
const decimalToNumber = (decimalArg) => {
|
|
56
|
+
const negative = decimalArg.units < 0n;
|
|
57
|
+
const digits = (negative ? -decimalArg.units : decimalArg.units)
|
|
58
|
+
.toString()
|
|
59
|
+
.padStart(decimalArg.scale + 1, "0");
|
|
60
|
+
const integerDigits = digits.slice(0, digits.length - decimalArg.scale);
|
|
61
|
+
const fractionDigits = digits.slice(digits.length - decimalArg.scale);
|
|
62
|
+
return Number(`${negative ? "-" : ""}${integerDigits}${fractionDigits ? `.${fractionDigits}` : ""}`);
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The decimals a currency's amounts are printed with: 2 for the euro, 0 for
|
|
66
|
+
* the yen, 3 for the Bahraini dinar. An unknown code gets 2, as the content
|
|
67
|
+
* prints an amount in a currency `Intl.NumberFormat` does not take.
|
|
68
|
+
*/
|
|
69
|
+
const currencyFractionDigits = (currencyArg) => {
|
|
70
|
+
try {
|
|
71
|
+
return (new Intl.NumberFormat("en-US", { style: "currency", currency: currencyArg }).resolvedOptions()
|
|
72
|
+
.maximumFractionDigits ?? 2);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return 2;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
/** The advance payments a document lists; only a document that can be a final invoice has them. */
|
|
79
|
+
const advancePaymentsOf = (docArg) => "advancePayments" in docArg ? docArg.advancePayments ?? [] : [];
|
|
80
|
+
/** The gross sum of advance payments: the `net` plus the `vat` of every group of every payment. */
|
|
81
|
+
const advancePaymentsGross = (advancePaymentsArg) => addDecimals(...advancePaymentsArg.flatMap((paymentArg, paymentIndexArg) => paymentArg.vatGroups.flatMap((groupArg, groupIndexArg) => [
|
|
82
|
+
statedDecimal(groupArg.net, `advancePayments[${paymentIndexArg}].vatGroups[${groupIndexArg}].net`),
|
|
83
|
+
statedDecimal(groupArg.vat, `advancePayments[${paymentIndexArg}].vatGroups[${groupIndexArg}].vat`),
|
|
84
|
+
])));
|
|
85
|
+
/**
|
|
86
|
+
* Checks the one rule tsclass sets between the paid amount and the advance
|
|
87
|
+
* payments: when a document lists `advancePayments`, its `paidAmount` equals
|
|
88
|
+
* their gross sum, the `net` plus the `vat` of every group of every payment,
|
|
89
|
+
* to the last decimal. A document that breaks it would print a deduction that
|
|
90
|
+
* does not add up to what it says was paid, so it is refused: this throws, and
|
|
91
|
+
* neither value is recomputed from the other. A letter that is no accounting
|
|
92
|
+
* document, none at all, and a document without advance payments, pass.
|
|
93
|
+
*/
|
|
94
|
+
export const assertPaidAmountMatchesAdvancePayments = (letterArg) => {
|
|
95
|
+
if (!isAccountingDoc(letterArg)) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const advancePayments = advancePaymentsOf(letterArg);
|
|
99
|
+
if (advancePayments.length === 0) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const grossSum = advancePaymentsGross(advancePayments);
|
|
103
|
+
const paidAmount = letterArg.paidAmount;
|
|
104
|
+
if (paidAmount === undefined || !decimalsEqual(statedDecimal(paidAmount, "paidAmount"), grossSum)) {
|
|
105
|
+
throw new Error(`Accounting document ${letterArg.id}: paidAmount (${paidAmount ?? "absent"}) does not ` +
|
|
106
|
+
`equal the gross sum of its advancePayments (${decimalToNumber(grossSum)}), the net plus ` +
|
|
107
|
+
`the vat of every group of every payment. The document is not printed.`);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* The paid amount of an accounting document and the amount due, or null when
|
|
112
|
+
* the document states no paid amount or a paid amount of zero.
|
|
113
|
+
*
|
|
114
|
+
* The amount due is the gross total, rounded to the currency's decimals as
|
|
115
|
+
* the document prints it, less the paid amount as stated, computed in exact
|
|
116
|
+
* decimals. The advance payments are checked against the paid amount first
|
|
117
|
+
* (`assertPaidAmountMatchesAdvancePayments`); a mismatch throws.
|
|
118
|
+
*/
|
|
119
|
+
export const getPaidAmountSummary = (docArg, totalGrossArg) => {
|
|
120
|
+
assertPaidAmountMatchesAdvancePayments(docArg);
|
|
121
|
+
const paidAmount = docArg.paidAmount;
|
|
122
|
+
if (paidAmount === undefined || paidAmount === 0) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const advancePayments = advancePaymentsOf(docArg);
|
|
126
|
+
const taxesByRate = new Map();
|
|
127
|
+
advancePayments.forEach((paymentArg, paymentIndexArg) => paymentArg.vatGroups.forEach((groupArg, groupIndexArg) => {
|
|
128
|
+
const vat = statedDecimal(groupArg.vat, `advancePayments[${paymentIndexArg}].vatGroups[${groupIndexArg}].vat`);
|
|
129
|
+
const sum = taxesByRate.get(groupArg.percentage);
|
|
130
|
+
taxesByRate.set(groupArg.percentage, sum ? addDecimals(sum, vat) : vat);
|
|
131
|
+
}));
|
|
132
|
+
return {
|
|
133
|
+
paidAmount,
|
|
134
|
+
amountDue: decimalToNumber(addDecimals(printedDecimal(totalGrossArg, currencyFractionDigits(docArg.currency)), negateDecimal(statedDecimal(paidAmount, "paidAmount")))),
|
|
135
|
+
advancePayments,
|
|
136
|
+
advancePaymentTaxes: [...taxesByRate.entries()]
|
|
137
|
+
.map(([percentage, vat]) => ({ percentage, vat: decimalToNumber(vat) }))
|
|
138
|
+
.sort((aArg, bArg) => bArg.percentage - aArg.percentage),
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpZGFtb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX3NoYXJlZC9wYWlkYW1vdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQVdyRCxNQUFNLGVBQWUsR0FBRyx3Q0FBd0MsQ0FBQztBQUVqRSwwRkFBMEY7QUFDMUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFlLEVBQWtCLEVBQUU7SUFDdkQsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksT0FBTyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGNBQWMsR0FBRyxFQUFFLEVBQUUsWUFBWSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEdBQUcsYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUM1QyxJQUFJLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUM3QyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtB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SyxTQUFTLElBQUksVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO0lBQ3RELGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FDdEQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLEVBQUU7UUFDdkQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUN2QixRQUFRLENBQUMsR0FBRyxFQUNaLG1CQUFtQixlQUFlLGVBQWUsYUFBYSxPQUFPLENBQ3RFLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsT0FBTztRQUNMLFVBQVU7UUFDVixTQUFTLEVBQUUsZUFBZSxDQUN4QixXQUFXLENBQ1QsY0FBYyxDQUFDLGFBQWEsRUFBRSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDdEUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FDdkQsQ0FDRjtRQUNELGVBQWU7UUFDZixtQkFBbUIsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQzVDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztLQUMzRCxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -9,6 +9,11 @@
|
|
|
9
9
|
export declare const REVERSE_CHARGE_STATUTORY_PHRASE_DE = "Steuerschuldnerschaft des Leistungsempf\u00E4ngers";
|
|
10
10
|
export declare const EN_translations: {
|
|
11
11
|
address: string;
|
|
12
|
+
"advancePayment.invoice": string;
|
|
13
|
+
"advancePayment.invoiceDate": string;
|
|
14
|
+
"advancePayment.received": string;
|
|
15
|
+
"advancePayment.title": string;
|
|
16
|
+
"advancePayment.vat": string;
|
|
12
17
|
"bank.accountHolder": string;
|
|
13
18
|
"bank.bic": string;
|
|
14
19
|
"bank.iban": string;
|
|
@@ -67,9 +72,15 @@ export declare const EN_translations: {
|
|
|
67
72
|
"page.final": string;
|
|
68
73
|
page: string;
|
|
69
74
|
pageOf: string;
|
|
75
|
+
"payment.amountDue": string;
|
|
76
|
+
"payment.creditBalance": string;
|
|
77
|
+
"payment.nothingDue": string;
|
|
78
|
+
"payment.nothingDue.creditBalance": string;
|
|
79
|
+
"payment.paid": string;
|
|
70
80
|
"payment.qr": string;
|
|
71
81
|
"payment.qr.description": string;
|
|
72
82
|
"payment.terms": string;
|
|
83
|
+
"payment.terms.amountDue": string;
|
|
73
84
|
"payment.terms.direct": string;
|
|
74
85
|
"paymentReminder.deadline": string;
|
|
75
86
|
"paymentReminder.deadline.text": string;
|
|
@@ -10,6 +10,11 @@ export const REVERSE_CHARGE_STATUTORY_PHRASE_DE = "Steuerschuldnerschaft des Lei
|
|
|
10
10
|
// Define English translations without enforcing TTranslationImplementation yet
|
|
11
11
|
export const EN_translations = {
|
|
12
12
|
address: "Address",
|
|
13
|
+
"advancePayment.invoice": "on invoice no.",
|
|
14
|
+
"advancePayment.invoiceDate": "of",
|
|
15
|
+
"advancePayment.received": "received on",
|
|
16
|
+
"advancePayment.title": "Advance payment",
|
|
17
|
+
"advancePayment.vat": "of which VAT",
|
|
13
18
|
"bank.accountHolder": "beneficiary",
|
|
14
19
|
"bank.bic": "bic",
|
|
15
20
|
"bank.iban": "iban",
|
|
@@ -69,9 +74,15 @@ export const EN_translations = {
|
|
|
69
74
|
"page.final": "This is the final page of this document.",
|
|
70
75
|
page: "Page",
|
|
71
76
|
pageOf: "of",
|
|
77
|
+
"payment.amountDue": "Amount due",
|
|
78
|
+
"payment.creditBalance": "Credit balance",
|
|
79
|
+
"payment.nothingDue": "Nothing is due: the total has been paid.",
|
|
80
|
+
"payment.nothingDue.creditBalance": "Nothing is due. You have a credit balance of",
|
|
81
|
+
"payment.paid": "Paid in advance",
|
|
72
82
|
"payment.qr": "Pay via QR code",
|
|
73
83
|
"payment.qr.description": "Scan the QR code with you banking app",
|
|
74
84
|
"payment.terms": "Payment Terms",
|
|
85
|
+
"payment.terms.amountDue": "without deduction until",
|
|
75
86
|
"payment.terms.direct": "Without deduction until",
|
|
76
87
|
"paymentReminder.deadline": "Payment deadline",
|
|
77
88
|
"paymentReminder.deadline.text": "Please pay the total payable by",
|
|
@@ -110,6 +121,11 @@ export const EN_translations = {
|
|
|
110
121
|
// Define German translations
|
|
111
122
|
export const DE_translations = {
|
|
112
123
|
address: "Adresse",
|
|
124
|
+
"advancePayment.invoice": "zur Rechnung Nr.",
|
|
125
|
+
"advancePayment.invoiceDate": "vom",
|
|
126
|
+
"advancePayment.received": "eingegangen am",
|
|
127
|
+
"advancePayment.title": "Anzahlung",
|
|
128
|
+
"advancePayment.vat": "darin enthaltene USt",
|
|
113
129
|
"bank.accountHolder": "Kontoinhaber",
|
|
114
130
|
"bank.bic": "BIC",
|
|
115
131
|
"bank.iban": "IBAN",
|
|
@@ -170,9 +186,15 @@ export const DE_translations = {
|
|
|
170
186
|
"page.final": "Dies ist die letzte Seite dieses Dokuments.",
|
|
171
187
|
page: "Seite",
|
|
172
188
|
pageOf: "von",
|
|
189
|
+
"payment.amountDue": "Zu zahlen",
|
|
190
|
+
"payment.creditBalance": "Guthaben",
|
|
191
|
+
"payment.nothingDue": "Es ist nichts zu zahlen: Der Gesamtbetrag ist bezahlt.",
|
|
192
|
+
"payment.nothingDue.creditBalance": "Es ist nichts zu zahlen. Sie haben ein Guthaben von",
|
|
193
|
+
"payment.paid": "Bereits gezahlt",
|
|
173
194
|
"payment.qr": "Überweisen per QR-Code",
|
|
174
195
|
"payment.qr.description": "Den QR-Code einfach mit der Banking-App einscannen",
|
|
175
196
|
"payment.terms": "Zahlungsbedingungen",
|
|
197
|
+
"payment.terms.amountDue": "ohne Abzug bis zum",
|
|
176
198
|
"payment.terms.direct": "Ohne Abzug bis zum",
|
|
177
199
|
"paymentReminder.deadline": "Zahlungsfrist",
|
|
178
200
|
"paymentReminder.deadline.text": "Bitte zahlen Sie den Gesamtbetrag bis zum",
|
|
@@ -245,4 +267,4 @@ export const translate = (languageCode, key) => {
|
|
|
245
267
|
// an unknown key renders as itself, so a missing translation is visible instead of empty
|
|
246
268
|
return found ?? key;
|
|
247
269
|
};
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zaGFyZWQvdHJhbnNsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUM3QywrQ0FBK0MsQ0FBQztBQUVsRCwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLHdCQUF3QixFQUFFLGdCQUFnQjtJQUMxQyw0QkFBNEIsRUFBRSxJQUFJO0lBQ2xDLHlCQUF5QixFQUFFLGFBQWE7SUFDeEMsc0JBQXNCLEVBQUUsaUJBQWlCO0lBQ3pDLG9CQUFvQixFQUFFLGNBQWM7SUFDcEMsb0JBQW9CLEVBQUUsYUFBYTtJQUNuQyxVQUFVLEVBQUUsS0FBSztJQUNqQixXQUFXLEVBQUUsTUFBTTtJQUNuQixrQkFBa0IsRUFBRSxhQUFhO0lBQ2pDLHVCQUF1QixFQUFFLGlCQUFpQjtJQUMxQyxlQUFlLEVBQUUsUUFBUTtJQUN6QixvQkFBb0IsRUFBRSxvQkFBb0I7SUFDMUMsc0JBQXNCLEVBQUUsMkJBQTJCO0lBQ25ELHdCQUF3QixFQUFFLG1CQUFtQjtJQUM3QyxpQkFBaUIsRUFBRSxZQUFZO0lBQy9CLGdCQUFnQixFQUFFLFVBQVU7SUFDNUIsZUFBZSxFQUFFLFVBQVU7SUFDM0IsZUFBZSxFQUFFLFNBQVM7SUFDMUIsaUJBQWlCLEVBQUUsTUFBTTtJQUN6QixtQkFBbUIsRUFBRSxhQUFhO0lBQ2xDLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsZ0JBQWdCLEVBQUUsY0FBYztJQUNoQyw4QkFBOEIsRUFBRSxtQkFBbUI7SUFDbkQsbUNBQW1DLEVBQUUsV0FBVztJQUNoRCxpQ0FBaUMsRUFBRSxVQUFVO0lBQzdDLHVDQUF1QyxFQUFFLGdCQUFnQjtJQUN6RCxtQ0FBbUMsRUFBRSxZQUFZO0lBQ2pELG1DQUFtQyxFQUNqQywwRkFBMEY7SUFD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
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-document',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.4.0',
|
|
7
7
|
description: 'A sophisticated framework for dynamically generating and rendering business documents like invoices with modern web technologies, featuring PDF creation, templating, and automation.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsOEJBQThCO0lBQ3BDLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSx1TEFBdUw7Q0FDck0sQ0FBQSJ9
|
|
@@ -76,7 +76,9 @@ export declare class DeContentInvoice extends DeesElement {
|
|
|
76
76
|
private applyOffsetTrimming;
|
|
77
77
|
/**
|
|
78
78
|
* The due date, which only an accounting document and a payment reminder
|
|
79
|
-
* have: it counts `dueInDays` from the letter's date.
|
|
79
|
+
* have: it counts `dueInDays` from the letter's date. A document that
|
|
80
|
+
* states a paid amount names the amount due, since the total is not what
|
|
81
|
+
* remains to be paid.
|
|
80
82
|
*/
|
|
81
83
|
private renderPaymentTerms;
|
|
82
84
|
/**
|
|
@@ -85,6 +87,32 @@ export declare class DeContentInvoice extends DeesElement {
|
|
|
85
87
|
* currency or without the sender's IBAN does not have.
|
|
86
88
|
*/
|
|
87
89
|
private renderPaymentInfo;
|
|
90
|
+
/**
|
|
91
|
+
* The paid amount and the amount due, below the gross total, when the
|
|
92
|
+
* document states a paid amount (EN 16931 BT-113 and BT-115). The advance
|
|
93
|
+
* payments a final invoice deducts are deducted as the gross total received,
|
|
94
|
+
* with the tax it contains stated per rate, as Abschnitt 14.8 Abs. 7 Satz 3
|
|
95
|
+
* UStAE allows: "Statt der vorausgezahlten Entgelte oder Teilentgelte und
|
|
96
|
+
* der Steuerbeträge können auch die Gesamtbeträge der Voraus- oder
|
|
97
|
+
* Anzahlungen abgesetzt und die darin enthaltenen Steuerbeträge zusätzlich
|
|
98
|
+
* angegeben werden." More paid than the total prints as a credit balance.
|
|
99
|
+
*/
|
|
100
|
+
private renderPaidAmountSums;
|
|
101
|
+
/**
|
|
102
|
+
* The advance payments the paid amount deducts, one line each, by the
|
|
103
|
+
* advance invoice's number and date and the day the payment was received,
|
|
104
|
+
* as far as the document states them. Each line is its own block, so a long
|
|
105
|
+
* list flows across pages.
|
|
106
|
+
*/
|
|
107
|
+
private renderAdvancePayments;
|
|
108
|
+
/**
|
|
109
|
+
* What the document asks to be paid: the payment terms and the QR pay box
|
|
110
|
+
* for the gross total, or for the amount due when the document states a
|
|
111
|
+
* paid amount. When nothing is due, it says so, and names the credit
|
|
112
|
+
* balance when more was paid than the total; there are no terms and no QR
|
|
113
|
+
* pay box then.
|
|
114
|
+
*/
|
|
115
|
+
private renderPaymentRequest;
|
|
88
116
|
/**
|
|
89
117
|
* The reverse-charge statement. § 14a UStG requires the words
|
|
90
118
|
* "Steuerschuldnerschaft des Leistungsempfängers": Abs. 5 for a domestic
|