@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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-document',
6
- version: '3.3.0',
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wZGZzZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5wZGZzZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBSXhDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFDckIsU0FBUztJQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUNoQyxVQUF5QztRQUV6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxNQUFNLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVztJQUNYLE9BQU8sQ0FBZ0M7SUFFaEMsZ0JBQWdCLENBQTZCO0lBRXBELFlBQVksVUFBeUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4RCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxVQUd0QztRQUNDLE1BQU0sSUFBSSxHQUFHOztVQUVQLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixFQUFFOzsyREFFZ0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQ3BGLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FDNUIsaUJBQWlCLE9BQU8sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuRCxVQUFVLENBQUMsVUFBVSxDQUN0QjtLQUNBLENBQUM7UUFDRixxQkFBcUI7UUFDckIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQ3ZFLElBQUksQ0FDTCxDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIn0=
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";
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGdCQUFnQjtBQUN2QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZTtBQUN0RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYTtBQUVqRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQWE7SUFDbEMsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLENBQUM7QUFFRCxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUV0QixPQUFPLEtBQUssV0FBVyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUV2QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUMifQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zaGFyZWQvdHJhbnNsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUM3QywrQ0FBK0MsQ0FBQztBQUVsRCwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLG9CQUFvQixFQUFFLGFBQWE7SUFDbkMsVUFBVSxFQUFFLEtBQUs7SUFDakIsV0FBVyxFQUFFLE1BQU07SUFDbkIsa0JBQWtCLEVBQUUsYUFBYTtJQUNqQyx1QkFBdUIsRUFBRSxpQkFBaUI7SUFDMUMsZUFBZSxFQUFFLFFBQVE7SUFDekIsb0JBQW9CLEVBQUUsb0JBQW9CO0lBQzFDLHNCQUFzQixFQUFFLDJCQUEyQjtJQUNuRCx3QkFBd0IsRUFBRSxtQkFBbUI7SUFDN0MsaUJBQWlCLEVBQUUsWUFBWTtJQUMvQixnQkFBZ0IsRUFBRSxVQUFVO0lBQzVCLGVBQWUsRUFBRSxVQUFVO0lBQzNCLGVBQWUsRUFBRSxTQUFTO0lBQzFCLGlCQUFpQixFQUFFLE1BQU07SUFDekIsbUJBQW1CLEVBQUUsYUFBYTtJQUNsQyxrQkFBa0IsRUFBRSxhQUFhO0lBQ2pDLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsOEJBQThCLEVBQUUsbUJBQW1CO0lBQ25ELG1DQUFtQyxFQUFFLFdBQVc7SUFDaEQsaUNBQWlDLEVBQUUsVUFBVTtJQUM3Qyx1Q0FBdUMsRUFBRSxnQkFBZ0I7SUFDekQsbUNBQW1DLEVBQUUsWUFBWTtJQUNqRCxtQ0FBbUMsRUFDakMsMEZBQTBGO0lBQzVGLGlDQUFpQyxFQUMvQiw0REFBNEQ7SUFDOUQsdUNBQXVDLEVBQ3JDLGtEQUFrRDtJQUNwRCwyQ0FBMkMsRUFBRSwrQkFBK0I7SUFDNUUsMkNBQTJDLEVBQ3pDLG9EQUFvRDtJQUN0RCxvQ0FBb0MsRUFDbEMs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
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.3.0',
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