@design.estate/dees-document 1.6.9 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist_bundle/bundle.js +622 -605
  2. package/dist_bundle/bundle.js.map +4 -4
  3. package/dist_ts/00_commitinfo_data.js +1 -1
  4. package/dist_ts/classes.pdfservice.d.ts +3 -3
  5. package/dist_ts/classes.pdfservice.js +6 -3
  6. package/dist_ts/helpers.d.ts +1 -1
  7. package/dist_ts/helpers.js +2 -2
  8. package/dist_ts/paths.js +4 -2
  9. package/dist_ts/plugins.d.ts +2 -0
  10. package/dist_ts/plugins.js +3 -1
  11. package/dist_ts_shared/demoletter.d.ts +3 -3
  12. package/dist_ts_shared/demoletter.js +223 -192
  13. package/dist_ts_shared/index.d.ts +6 -7
  14. package/dist_ts_shared/index.js +10 -8
  15. package/dist_ts_shared/interfaces/document.d.ts +15 -2
  16. package/dist_ts_shared/interfaces/document.js +1 -1
  17. package/dist_ts_shared/translation.d.ts +79 -28
  18. package/dist_ts_shared/translation.js +121 -107
  19. package/dist_ts_web/ts_shared/translation.d.ts +82 -0
  20. package/dist_ts_web/ts_shared/translation.js +134 -0
  21. package/dist_ts_web/{00_commitinfo_data.js → ts_web/00_commitinfo_data.js} +2 -2
  22. package/dist_ts_web/{elements → ts_web/elements}/contentinvoice.d.ts +12 -6
  23. package/dist_ts_web/ts_web/elements/contentinvoice.js +466 -0
  24. package/dist_ts_web/{elements → ts_web/elements}/document.d.ts +10 -10
  25. package/dist_ts_web/ts_web/elements/document.demo.js +9 -0
  26. package/dist_ts_web/ts_web/elements/document.js +306 -0
  27. package/dist_ts_web/ts_web/elements/index.d.ts +10 -0
  28. package/dist_ts_web/ts_web/elements/index.js +11 -0
  29. package/dist_ts_web/ts_web/elements/letterheader.d.ts +18 -0
  30. package/dist_ts_web/ts_web/elements/letterheader.js +224 -0
  31. package/dist_ts_web/ts_web/elements/page.d.ts +25 -0
  32. package/dist_ts_web/ts_web/elements/page.js +335 -0
  33. package/dist_ts_web/{elements → ts_web/elements}/pagecontainer.d.ts +4 -4
  34. package/dist_ts_web/ts_web/elements/pagecontainer.js +114 -0
  35. package/dist_ts_web/{elements → ts_web/elements}/pagecontent.d.ts +7 -6
  36. package/dist_ts_web/ts_web/elements/pagecontent.js +177 -0
  37. package/dist_ts_web/ts_web/elements/pagefooter.d.ts +17 -0
  38. package/dist_ts_web/ts_web/elements/pagefooter.js +234 -0
  39. package/dist_ts_web/ts_web/elements/pageheader.d.ts +17 -0
  40. package/dist_ts_web/ts_web/elements/pageheader.js +165 -0
  41. package/dist_ts_web/ts_web/elements/paymentcode.d.ts +19 -0
  42. package/dist_ts_web/ts_web/elements/paymentcode.js +162 -0
  43. package/dist_ts_web/{elements → ts_web/elements}/viewer.d.ts +5 -5
  44. package/dist_ts_web/ts_web/elements/viewer.demo.js +9 -0
  45. package/dist_ts_web/ts_web/elements/viewer.js +150 -0
  46. package/dist_ts_web/{index.js → ts_web/index.js} +1 -1
  47. package/dist_ts_web/{pages → ts_web/pages}/index.js +1 -1
  48. package/dist_ts_web/ts_web/pages/page1.js +21 -0
  49. package/dist_ts_web/{pages → ts_web/pages}/page2.js +1 -1
  50. package/dist_ts_web/ts_web/plugins.js +14 -0
  51. package/dist_ts_web/ts_web/style.js +38 -0
  52. package/license +2 -2
  53. package/package.json +21 -19
  54. package/readme.hints.md +40 -1
  55. package/readme.md +202 -125
  56. package/ts/00_commitinfo_data.ts +1 -1
  57. package/ts/classes.pdfservice.ts +15 -7
  58. package/ts/helpers.ts +1 -1
  59. package/ts/paths.ts +3 -1
  60. package/ts/plugins.ts +3 -0
  61. package/ts_web/00_commitinfo_data.ts +1 -1
  62. package/ts_web/elements/contentinvoice.ts +272 -250
  63. package/ts_web/elements/document.demo.ts +7 -4
  64. package/ts_web/elements/document.ts +68 -82
  65. package/ts_web/elements/index.ts +10 -9
  66. package/ts_web/elements/letterheader.ts +106 -39
  67. package/ts_web/elements/page.ts +106 -48
  68. package/ts_web/elements/pagecontainer.ts +14 -13
  69. package/ts_web/elements/pagecontent.ts +34 -53
  70. package/ts_web/elements/pagefooter.ts +125 -45
  71. package/ts_web/elements/pageheader.ts +22 -16
  72. package/ts_web/elements/paymentcode.ts +95 -0
  73. package/ts_web/elements/viewer.demo.ts +7 -4
  74. package/ts_web/elements/viewer.ts +26 -12
  75. package/ts_web/pages/page1.ts +10 -6
  76. package/ts_web/style.ts +34 -3
  77. package/dist_ts_shared/interfaces/translation.d.ts +0 -19
  78. package/dist_ts_shared/interfaces/translation.js +0 -2
  79. package/dist_ts_web/elements/contentinvoice.js +0 -388
  80. package/dist_ts_web/elements/document.demo.js +0 -6
  81. package/dist_ts_web/elements/document.js +0 -272
  82. package/dist_ts_web/elements/index.d.ts +0 -9
  83. package/dist_ts_web/elements/index.js +0 -10
  84. package/dist_ts_web/elements/letterheader.d.ts +0 -16
  85. package/dist_ts_web/elements/letterheader.js +0 -124
  86. package/dist_ts_web/elements/page.d.ts +0 -25
  87. package/dist_ts_web/elements/page.js +0 -219
  88. package/dist_ts_web/elements/pagecontainer.js +0 -67
  89. package/dist_ts_web/elements/pagecontent.js +0 -143
  90. package/dist_ts_web/elements/pagefooter.d.ts +0 -17
  91. package/dist_ts_web/elements/pagefooter.js +0 -138
  92. package/dist_ts_web/elements/pageheader.d.ts +0 -17
  93. package/dist_ts_web/elements/pageheader.js +0 -109
  94. package/dist_ts_web/elements/viewer.demo.js +0 -6
  95. package/dist_ts_web/elements/viewer.js +0 -101
  96. package/dist_ts_web/pages/page1.js +0 -17
  97. package/dist_ts_web/plugins.js +0 -14
  98. package/dist_ts_web/style.js +0 -7
  99. package/dist_watch/bundle.js +0 -40318
  100. package/dist_watch/bundle.js.map +0 -7
  101. package/dist_watch/index.html +0 -25
  102. /package/dist_ts_web/{00_commitinfo_data.d.ts → ts_web/00_commitinfo_data.d.ts} +0 -0
  103. /package/dist_ts_web/{elements → ts_web/elements}/document.demo.d.ts +0 -0
  104. /package/dist_ts_web/{elements → ts_web/elements}/viewer.demo.d.ts +0 -0
  105. /package/dist_ts_web/{index.d.ts → ts_web/index.d.ts} +0 -0
  106. /package/dist_ts_web/{pages → ts_web/pages}/index.d.ts +0 -0
  107. /package/dist_ts_web/{pages → ts_web/pages}/page1.d.ts +0 -0
  108. /package/dist_ts_web/{pages → ts_web/pages}/page2.d.ts +0 -0
  109. /package/dist_ts_web/{plugins.d.ts → ts_web/plugins.d.ts} +0 -0
  110. /package/dist_ts_web/{style.d.ts → ts_web/style.d.ts} +0 -0
@@ -1,31 +1,82 @@
1
1
  export declare const EN_translations: {
2
- readonly address: "Address";
3
- readonly bankConnection: "Bank Connection";
4
- readonly contactInfo: "Contact Info";
5
- readonly description: "Description";
6
- readonly invoice: "Invoice";
7
- readonly itemPos: "Item Pos.";
8
- readonly quantity: "Quantity";
9
- readonly registrationInfo: "Registration Info";
10
- readonly reverseVatNote: "VAT arises on a reverse charge basis and is payable by the customer.";
11
- readonly totalNetPrice: "Total Net Price";
12
- readonly unitNetPrice: "Unit Net Price";
13
- readonly unitType: "Unit Type";
14
- readonly yourCustomerId: "Your Customer ID:";
15
- readonly yourVatId: "Your vat id on file:";
16
- readonly continuesOnPage: "Continues on page";
17
- readonly finalPageStatement: "This is the final page of this document.";
18
- readonly page: "Page";
19
- readonly vatShort: "VAT";
2
+ address: string;
3
+ "bank.accountHolder": string;
4
+ "bank.bic": string;
5
+ "bank.iban": string;
6
+ "bank.institution": string;
7
+ "bankConnection@@title": string;
8
+ "contact@@title": string;
9
+ "customer.number": string;
10
+ description: string;
11
+ "empty.logo": string;
12
+ "empty.number.customer": string;
13
+ empty: string;
14
+ fax: string;
15
+ introStatement: string;
16
+ "invoice.number": string;
17
+ invoice: string;
18
+ "item.position": string;
19
+ mail: string;
20
+ "overlay@@draft": string;
21
+ "page.continueNext": string;
22
+ "page.final": string;
23
+ page: string;
24
+ pageOf: string;
25
+ "payment.qr": string;
26
+ "payment.qr.description": string;
27
+ "payment.terms": string;
28
+ "payment.terms.direct": string;
29
+ "periodOfPerformance.day": string;
30
+ "periodOfPerformance.range": string;
31
+ phone: string;
32
+ "price.total.net": string;
33
+ "price.unit.net": string;
34
+ price: string;
35
+ quantity: string;
36
+ referencedContract: string;
37
+ "referencedContract.text": string;
38
+ "registration.label": string;
39
+ subject: string;
40
+ sum: string;
41
+ totalGross: string;
42
+ "unit.type": string;
43
+ "vat.position": string;
44
+ "vat.reverseCharge.note": string;
45
+ "vat.short": string;
46
+ "vat.yourId": string;
47
+ vat: string;
20
48
  };
21
- export type TTranslationKey = keyof typeof EN_translations;
22
- export type TTranslationImplementation = {
23
- [key in TTranslationKey]: string;
49
+ /**
50
+ * For example:
51
+ * - price
52
+ */
53
+ type RawTranslationKeys = keyof typeof EN_translations;
54
+ /**
55
+ * For example:
56
+ * - price.item
57
+ * - price.sum
58
+ * - price.unit
59
+ * - vat.yourId
60
+ */
61
+ type NestedTranslationKeys = RawTranslationKeys | `${RawTranslationKeys}.${string}` | `${RawTranslationKeys}.${string}.${string}` | `${RawTranslationKeys}.${string}.${string}.${string}` | `${RawTranslationKeys}.${string}.${string}.${string}.${string}`;
62
+ /**
63
+ * For example:
64
+ * - contact@@mail
65
+ * - vat = 'VAT'
66
+ * - vat.yourId = 'your vat id'
67
+ * - footer@@vat.yourId = 'your vat id'
68
+ * - header@@vat.yourId = 'THIS IS YOUR VAT'
69
+ */
70
+ type LocationBasedTranslationKeys = `${string}@@${NestedTranslationKeys}`;
71
+ /**
72
+ * Mix of everything
73
+ */
74
+ export type TranslationKey = NestedTranslationKeys | LocationBasedTranslationKeys;
75
+ export type Dictionary = {
76
+ [key in TranslationKey]: string;
24
77
  };
25
- export declare const DE_translations: TTranslationImplementation;
26
- export declare const ES_translations: TTranslationImplementation;
27
- export declare const FR_translations: TTranslationImplementation;
28
- export declare const IT_translations: TTranslationImplementation;
29
- export declare const languageCodeMap: Record<string, TTranslationImplementation>;
30
- export type TLanguageCode = keyof typeof languageCodeMap;
31
- export declare const translate: (languageCode: TLanguageCode, key: TTranslationKey, defaultValue: string) => string;
78
+ export declare const DE_translations: Dictionary;
79
+ export declare const languageCodeMap: Record<string, Dictionary>;
80
+ export type LanguageCode = keyof typeof languageCodeMap;
81
+ export declare const translate: (languageCode: LanguageCode, key: TranslationKey) => string;
82
+ export {};
@@ -1,120 +1,134 @@
1
- import * as interfaces from './interfaces/index.js';
2
1
  // Define English translations without enforcing TTranslationImplementation yet
3
2
  export const EN_translations = {
4
- address: 'Address',
5
- bankConnection: 'Bank Connection',
6
- contactInfo: 'Contact Info',
7
- description: 'Description',
8
- invoice: 'Invoice',
9
- itemPos: 'Item Pos.',
10
- quantity: 'Quantity',
11
- registrationInfo: 'Registration Info',
12
- reverseVatNote: 'VAT arises on a reverse charge basis and is payable by the customer.',
13
- totalNetPrice: 'Total Net Price',
14
- unitNetPrice: 'Unit Net Price',
15
- unitType: 'Unit Type',
16
- yourCustomerId: 'Your Customer ID:',
17
- yourVatId: 'Your vat id on file:',
18
- continuesOnPage: 'Continues on page',
19
- finalPageStatement: 'This is the final page of this document.',
20
- page: 'Page',
21
- vatShort: 'VAT',
3
+ address: "Address",
4
+ "bank.accountHolder": "beneficiary",
5
+ "bank.bic": "bic",
6
+ "bank.iban": "iban",
7
+ "bank.institution": "institution",
8
+ "bankConnection@@title": "Bank Connection",
9
+ "contact@@title": "Contact Info",
10
+ "customer.number": "Your Customer ID",
11
+ description: "Description",
12
+ "empty.logo": "no logo provided",
13
+ "empty.number.customer": "not registered",
14
+ empty: "not provided",
15
+ fax: "Fax",
16
+ introStatement: "We hereby invoice the following products and services",
17
+ "invoice.number": "Invoice number",
18
+ invoice: "Invoice",
19
+ "item.position": "Pos.",
20
+ mail: "Mail",
21
+ "overlay@@draft": "Draft",
22
+ "page.continueNext": "Continues on page",
23
+ "page.final": "This is the final page of this document.",
24
+ page: "Page",
25
+ pageOf: "of",
26
+ "payment.qr": "Pay via QR code",
27
+ "payment.qr.description": "Scan the QR code with you banking app",
28
+ "payment.terms": "Payment Terms",
29
+ "payment.terms.direct": "Without deduction until",
30
+ "periodOfPerformance.day": "Delivery Date",
31
+ "periodOfPerformance.range": "Delivery Period",
32
+ phone: "Phone",
33
+ "price.total.net": "Total Net Price",
34
+ "price.unit.net": "Unit Net Price",
35
+ price: "Price",
36
+ quantity: "Quantity",
37
+ referencedContract: "Referenced contract",
38
+ "referencedContract.text": "This invoice is adhering to agreements made by contract between the parties on",
39
+ "registration.label": "Registration Info",
40
+ subject: "Subject",
41
+ sum: "Sum",
42
+ totalGross: "Total gross",
43
+ "unit.type": "Unit Type",
44
+ "vat.position": "on item positions",
45
+ "vat.reverseCharge.note": "VAT arises on a reverse charge basis and is payable by the customer.",
46
+ "vat.short": "VAT",
47
+ "vat.yourId": "Your vat id on file",
48
+ vat: "Valued Added Tax",
22
49
  };
23
50
  // Define German translations
24
51
  export const DE_translations = {
25
- address: 'Adresse',
26
- bankConnection: 'Bankverbindung',
27
- contactInfo: 'Kontaktinformationen',
28
- description: 'Beschreibung',
29
- invoice: 'Rechnung',
30
- itemPos: 'Pos.',
31
- quantity: 'Anzahl',
32
- registrationInfo: 'HRA/HRB Info',
33
- reverseVatNote: 'Umkehr der Umsatzsteuerpflicht: Der Rechnungsempfänger ist für die korrekte Abrechnung der Umsatzsteuer zuständig.',
34
- totalNetPrice: 'Summe netto',
35
- unitNetPrice: 'Einheit netto',
36
- unitType: 'Einheit',
37
- yourCustomerId: 'Ihre Kundennummer:',
38
- yourVatId: 'Ihre Umsatzsteuer-ID:',
39
- continuesOnPage: 'Fortsetzung auf Seite',
40
- finalPageStatement: 'Dies ist die letzte Seite dieses Dokuments.',
41
- page: 'Seite',
42
- vatShort: 'USt',
43
- };
44
- // Define Spanish translations
45
- export const ES_translations = {
46
- address: 'Dirección',
47
- bankConnection: 'Conexión bancaria',
48
- contactInfo: 'Información de contacto',
49
- description: 'Descripción',
50
- invoice: 'Factura',
51
- itemPos: 'Pos.',
52
- quantity: 'Cantidad',
53
- registrationInfo: 'Información de registro',
54
- reverseVatNote: 'El IVA se aplica por inversión del sujeto pasivo y debe ser pagado por el cliente.',
55
- totalNetPrice: 'Precio total neto',
56
- unitNetPrice: 'Precio unitario neto',
57
- unitType: 'Tipo de unidad',
58
- yourCustomerId: 'Su número de cliente:',
59
- yourVatId: 'Su ID de IVA:',
60
- continuesOnPage: 'Continúa en la página',
61
- finalPageStatement: 'Esta es la última página de este documento.',
62
- page: 'Página',
63
- vatShort: 'IVA',
64
- };
65
- // Define French translations
66
- export const FR_translations = {
67
- address: 'Adresse',
68
- bankConnection: 'Coordonnées bancaires',
69
- contactInfo: 'Informations de contact',
70
- description: 'Description',
71
- invoice: 'Facture',
72
- itemPos: 'Position',
73
- quantity: 'Quantité',
74
- registrationInfo: "Informations d'enregistrement",
75
- reverseVatNote: "La TVA s'applique selon le mécanisme d'autoliquidation et est à payer par le client.",
76
- totalNetPrice: 'Prix net total',
77
- unitNetPrice: 'Prix unitaire net',
78
- unitType: "Type d'unité",
79
- yourCustomerId: 'Votre numéro de client :',
80
- yourVatId: 'Votre numéro de TVA :',
81
- continuesOnPage: 'Continue sur la page',
82
- finalPageStatement: 'Ceci est la dernière page de ce document.',
83
- page: 'Page',
84
- vatShort: 'TVA',
85
- };
86
- // Define Italian translations
87
- export const IT_translations = {
88
- address: 'Indirizzo',
89
- bankConnection: 'Coordinate bancarie',
90
- contactInfo: 'Informazioni di contatto',
91
- description: 'Descrizione',
92
- invoice: 'Fattura',
93
- itemPos: 'Pos.',
94
- quantity: 'Quantità',
95
- registrationInfo: 'Informazioni di registrazione',
96
- reverseVatNote: "L'IVA è applicata con inversione contabile ed è a carico del cliente.",
97
- totalNetPrice: 'Prezzo netto totale',
98
- unitNetPrice: 'Prezzo netto unitario',
99
- unitType: 'Tipo di unità',
100
- yourCustomerId: 'Il tuo numero cliente:',
101
- yourVatId: 'Il tuo numero di partita IVA:',
102
- continuesOnPage: 'Continua alla pagina',
103
- finalPageStatement: 'Questa è l\'ultima pagina di questo documento.',
104
- page: 'Pagina',
105
- vatShort: 'IVA',
52
+ address: "Adresse",
53
+ "bank.accountHolder": "Kontoinhaber",
54
+ "bank.bic": "BIC",
55
+ "bank.iban": "IBAN",
56
+ "bank.institution": "Bankinstitut",
57
+ "bankConnection@@title": "Bankverbindung",
58
+ "contact@@title": "Kontaktinformationen",
59
+ "customer.number": "Ihre Kundennummer",
60
+ description: "Beschreibung",
61
+ "empty.logo": "Kein Logo gesetzt",
62
+ "empty.number.customer": "nicht registriert",
63
+ empty: "nicht angegeben",
64
+ fax: "Fax",
65
+ introStatement: "Wir stellen Ihnen hiermit folgende Produkte und Dienstleistungen in Rechnung",
66
+ "invoice.number": "Rechnungsnr.",
67
+ invoice: "Rechnung",
68
+ "item.position": "Pos.",
69
+ mail: "E-Mail",
70
+ "overlay@@draft": "Entwurf",
71
+ "page.continueNext": "Fortsetzung auf Seite",
72
+ "page.final": "Dies ist die letzte Seite dieses Dokuments.",
73
+ page: "Seite",
74
+ pageOf: "von",
75
+ "payment.qr": "Überweisen per QR-Code",
76
+ "payment.qr.description": "Den QR-Code einfach mit der Banking-App einscannen",
77
+ "payment.terms": "Zahlungsbedingungen",
78
+ "payment.terms.direct": "Ohne Abzug bis zum",
79
+ "periodOfPerformance.day": "Lieferdatum",
80
+ "periodOfPerformance.range": "Lieferzeitraum",
81
+ phone: "Telefon",
82
+ "price.total.net": "Gesamtpreis",
83
+ "price.unit.net": "Stückpreis",
84
+ price: "Preis",
85
+ quantity: "Menge",
86
+ referencedContract: "Referenzierter Vertrag",
87
+ "referencedContract.text": "Diese Rechnung bezieht sich auf die getroffenen Vertragsvereinbarungen vom",
88
+ "registration.label": "Registrierungsinfo",
89
+ subject: "Betreff",
90
+ sum: "Summe",
91
+ totalGross: "Gesamtbetrag brutto",
92
+ "unit.type": "Einheit",
93
+ "vat.position": "auf Positionen",
94
+ "vat.reverseCharge.note": "Die Umsatzsteuer entsteht im Reverse-Charge-Verfahren und ist vom Kunden zu zahlen.",
95
+ "vat.short": "MwSt.",
96
+ "vat.yourId": "Ihre hinterlegte USt-Id",
97
+ vat: "Umsatzsteuer",
106
98
  };
107
99
  // Language Code Map
108
100
  export const languageCodeMap = {
109
101
  EN: EN_translations,
110
102
  DE: DE_translations,
111
- ES: ES_translations,
112
- FR: FR_translations,
113
- IT: IT_translations,
114
103
  };
104
+ function* getTranslationKeyHierarchy(key) {
105
+ yield key;
106
+ const areaSplit = key.split("@@");
107
+ let rest = areaSplit[1];
108
+ if (rest) {
109
+ yield rest;
110
+ }
111
+ else {
112
+ rest = areaSplit[0];
113
+ }
114
+ if (!rest.includes("."))
115
+ return;
116
+ const parts = rest.split(".");
117
+ for (let i = parts.length - 1; i > 0; i--) {
118
+ yield parts.slice(0, i).join(".");
119
+ }
120
+ }
115
121
  // Translate Function
116
- export const translate = (languageCode, key, defaultValue) => {
117
- const translations = languageCodeMap[languageCode] || EN_translations;
118
- return translations[key] || defaultValue;
122
+ export const translate = (languageCode, key) => {
123
+ const dictionary = languageCodeMap[languageCode] || EN_translations;
124
+ const lookupHierarchy = getTranslationKeyHierarchy(key);
125
+ let found;
126
+ for (let keyOption of lookupHierarchy) {
127
+ found = dictionary[keyOption] || EN_translations[keyOption];
128
+ if (found) {
129
+ break;
130
+ }
131
+ }
132
+ return found;
119
133
  };
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zaGFyZWQvdHJhbnNsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGFBQWE7SUFDMUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFdBQVc7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsZ0JBQWdCLEVBQUUsbUJBQW1CO0lBQ3JDLGNBQWMsRUFBRSxzRUFBc0U7SUFDdEYsYUFBYSxFQUFFLGlCQUFpQjtJQUNoQyxZQUFZLEVBQUUsZ0JBQWdCO0lBQzlCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLGNBQWMsRUFBRSxtQkFBbUI7SUFDbkMsU0FBUyxFQUFFLHNCQUFzQjtJQUNqQyxlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLGtCQUFrQixFQUFFLDBDQUEwQztJQUM5RCxJQUFJLEVBQUUsTUFBTTtJQUNaLFFBQVEsRUFBRSxLQUFLO0NBQ1AsQ0FBQztBQVVYLDZCQUE2QjtBQUM3QixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQStCO0lBQ3pELE9BQU8sRUFBRSxTQUFTO0lBQ2xCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsV0FBVyxFQUFFLHNCQUFzQjtJQUNuQyxXQUFXLEVBQUUsY0FBYztJQUMzQixPQUFPLEVBQUUsVUFBVTtJQUNuQixPQUFPLEVBQUUsTUFBTTtJQUNmLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsY0FBYyxFQUNaLG9IQUFvSDtJQUN0SCxhQUFhLEVBQUUsYUFBYTtJQUM1QixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFR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
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19zaGFyZWQvdHJhbnNsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBQy9FLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixPQUFPLEVBQUUsU0FBUztJQUNsQixvQkFBb0IsRUFBRSxhQUFhO0lBQ25DLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFdBQVcsRUFBRSxNQUFNO0lBQ25CLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsdUJBQXVCLEVBQUUsaUJBQWlCO0lBQzFDLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsaUJBQWlCLEVBQUUsa0JBQWtCO0lBQ3JDLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFlBQVksRUFBRSxrQkFBa0I7SUFDaEMsdUJBQXVCLEVBQUUsZ0JBQWdCO0lBQ3pDLEtBQUssRUFBRSxjQUFjO0lBQ3JCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsY0FBYyxFQUFFLHVEQUF1RDtJQUN2RSxnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsZUFBZSxFQUFFLE1BQU07SUFDdkIsSUFBSSxFQUFFLE1BQU07SUFDWixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLG1CQUFtQixFQUFFLG1CQUFtQjtJQUN4QyxZQUFZLEVBQUUsMENBQTBDO0lBQ3hELElBQUksRUFBRSxNQUFNO0lBQ1osTUFBTSxFQUFFLElBQUk7SUFDWixZQUFZLEVBQUUsaUJBQWlCO0lBQy9CLHdCQUF3QixFQUFFLHVDQUF1QztJQUNqRSxlQUFlLEVBQUUsZUFBZTtJQUNoQyxzQkFBc0IsRUFBRSx5QkFBeUI7SUFDakQseUJBQXlCLEVBQUUsZUFBZTtJQUMxQywyQkFBMkIsRUFBRSxpQkFBaUI7SUFDOUMsS0FBSyxFQUFFLE9BQU87SUFDZCxpQkFBaUIsRUFBRSxpQkFBaUI7SUFDcEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLEtBQUssRUFB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
@@ -0,0 +1,82 @@
1
+ export declare const EN_translations: {
2
+ address: string;
3
+ "bank.accountHolder": string;
4
+ "bank.bic": string;
5
+ "bank.iban": string;
6
+ "bank.institution": string;
7
+ "bankConnection@@title": string;
8
+ "contact@@title": string;
9
+ "customer.number": string;
10
+ description: string;
11
+ "empty.logo": string;
12
+ "empty.number.customer": string;
13
+ empty: string;
14
+ fax: string;
15
+ introStatement: string;
16
+ "invoice.number": string;
17
+ invoice: string;
18
+ "item.position": string;
19
+ mail: string;
20
+ "overlay@@draft": string;
21
+ "page.continueNext": string;
22
+ "page.final": string;
23
+ page: string;
24
+ pageOf: string;
25
+ "payment.qr": string;
26
+ "payment.qr.description": string;
27
+ "payment.terms": string;
28
+ "payment.terms.direct": string;
29
+ "periodOfPerformance.day": string;
30
+ "periodOfPerformance.range": string;
31
+ phone: string;
32
+ "price.total.net": string;
33
+ "price.unit.net": string;
34
+ price: string;
35
+ quantity: string;
36
+ referencedContract: string;
37
+ "referencedContract.text": string;
38
+ "registration.label": string;
39
+ subject: string;
40
+ sum: string;
41
+ totalGross: string;
42
+ "unit.type": string;
43
+ "vat.position": string;
44
+ "vat.reverseCharge.note": string;
45
+ "vat.short": string;
46
+ "vat.yourId": string;
47
+ vat: string;
48
+ };
49
+ /**
50
+ * For example:
51
+ * - price
52
+ */
53
+ type RawTranslationKeys = keyof typeof EN_translations;
54
+ /**
55
+ * For example:
56
+ * - price.item
57
+ * - price.sum
58
+ * - price.unit
59
+ * - vat.yourId
60
+ */
61
+ type NestedTranslationKeys = RawTranslationKeys | `${RawTranslationKeys}.${string}` | `${RawTranslationKeys}.${string}.${string}` | `${RawTranslationKeys}.${string}.${string}.${string}` | `${RawTranslationKeys}.${string}.${string}.${string}.${string}`;
62
+ /**
63
+ * For example:
64
+ * - contact@@mail
65
+ * - vat = 'VAT'
66
+ * - vat.yourId = 'your vat id'
67
+ * - footer@@vat.yourId = 'your vat id'
68
+ * - header@@vat.yourId = 'THIS IS YOUR VAT'
69
+ */
70
+ type LocationBasedTranslationKeys = `${string}@@${NestedTranslationKeys}`;
71
+ /**
72
+ * Mix of everything
73
+ */
74
+ export type TranslationKey = NestedTranslationKeys | LocationBasedTranslationKeys;
75
+ export type Dictionary = {
76
+ [key in TranslationKey]: string;
77
+ };
78
+ export declare const DE_translations: Dictionary;
79
+ export declare const languageCodeMap: Record<string, Dictionary>;
80
+ export type LanguageCode = keyof typeof languageCodeMap;
81
+ export declare const translate: (languageCode: LanguageCode, key: TranslationKey) => string;
82
+ export {};
@@ -0,0 +1,134 @@
1
+ // Define English translations without enforcing TTranslationImplementation yet
2
+ export const EN_translations = {
3
+ address: "Address",
4
+ "bank.accountHolder": "beneficiary",
5
+ "bank.bic": "bic",
6
+ "bank.iban": "iban",
7
+ "bank.institution": "institution",
8
+ "bankConnection@@title": "Bank Connection",
9
+ "contact@@title": "Contact Info",
10
+ "customer.number": "Your Customer ID",
11
+ description: "Description",
12
+ "empty.logo": "no logo provided",
13
+ "empty.number.customer": "not registered",
14
+ empty: "not provided",
15
+ fax: "Fax",
16
+ introStatement: "We hereby invoice the following products and services",
17
+ "invoice.number": "Invoice number",
18
+ invoice: "Invoice",
19
+ "item.position": "Pos.",
20
+ mail: "Mail",
21
+ "overlay@@draft": "Draft",
22
+ "page.continueNext": "Continues on page",
23
+ "page.final": "This is the final page of this document.",
24
+ page: "Page",
25
+ pageOf: "of",
26
+ "payment.qr": "Pay via QR code",
27
+ "payment.qr.description": "Scan the QR code with you banking app",
28
+ "payment.terms": "Payment Terms",
29
+ "payment.terms.direct": "Without deduction until",
30
+ "periodOfPerformance.day": "Delivery Date",
31
+ "periodOfPerformance.range": "Delivery Period",
32
+ phone: "Phone",
33
+ "price.total.net": "Total Net Price",
34
+ "price.unit.net": "Unit Net Price",
35
+ price: "Price",
36
+ quantity: "Quantity",
37
+ referencedContract: "Referenced contract",
38
+ "referencedContract.text": "This invoice is adhering to agreements made by contract between the parties on",
39
+ "registration.label": "Registration Info",
40
+ subject: "Subject",
41
+ sum: "Sum",
42
+ totalGross: "Total gross",
43
+ "unit.type": "Unit Type",
44
+ "vat.position": "on item positions",
45
+ "vat.reverseCharge.note": "VAT arises on a reverse charge basis and is payable by the customer.",
46
+ "vat.short": "VAT",
47
+ "vat.yourId": "Your vat id on file",
48
+ vat: "Valued Added Tax",
49
+ };
50
+ // Define German translations
51
+ export const DE_translations = {
52
+ address: "Adresse",
53
+ "bank.accountHolder": "Kontoinhaber",
54
+ "bank.bic": "BIC",
55
+ "bank.iban": "IBAN",
56
+ "bank.institution": "Bankinstitut",
57
+ "bankConnection@@title": "Bankverbindung",
58
+ "contact@@title": "Kontaktinformationen",
59
+ "customer.number": "Ihre Kundennummer",
60
+ description: "Beschreibung",
61
+ "empty.logo": "Kein Logo gesetzt",
62
+ "empty.number.customer": "nicht registriert",
63
+ empty: "nicht angegeben",
64
+ fax: "Fax",
65
+ introStatement: "Wir stellen Ihnen hiermit folgende Produkte und Dienstleistungen in Rechnung",
66
+ "invoice.number": "Rechnungsnr.",
67
+ invoice: "Rechnung",
68
+ "item.position": "Pos.",
69
+ mail: "E-Mail",
70
+ "overlay@@draft": "Entwurf",
71
+ "page.continueNext": "Fortsetzung auf Seite",
72
+ "page.final": "Dies ist die letzte Seite dieses Dokuments.",
73
+ page: "Seite",
74
+ pageOf: "von",
75
+ "payment.qr": "Überweisen per QR-Code",
76
+ "payment.qr.description": "Den QR-Code einfach mit der Banking-App einscannen",
77
+ "payment.terms": "Zahlungsbedingungen",
78
+ "payment.terms.direct": "Ohne Abzug bis zum",
79
+ "periodOfPerformance.day": "Lieferdatum",
80
+ "periodOfPerformance.range": "Lieferzeitraum",
81
+ phone: "Telefon",
82
+ "price.total.net": "Gesamtpreis",
83
+ "price.unit.net": "Stückpreis",
84
+ price: "Preis",
85
+ quantity: "Menge",
86
+ referencedContract: "Referenzierter Vertrag",
87
+ "referencedContract.text": "Diese Rechnung bezieht sich auf die getroffenen Vertragsvereinbarungen vom",
88
+ "registration.label": "Registrierungsinfo",
89
+ subject: "Betreff",
90
+ sum: "Summe",
91
+ totalGross: "Gesamtbetrag brutto",
92
+ "unit.type": "Einheit",
93
+ "vat.position": "auf Positionen",
94
+ "vat.reverseCharge.note": "Die Umsatzsteuer entsteht im Reverse-Charge-Verfahren und ist vom Kunden zu zahlen.",
95
+ "vat.short": "MwSt.",
96
+ "vat.yourId": "Ihre hinterlegte USt-Id",
97
+ vat: "Umsatzsteuer",
98
+ };
99
+ // Language Code Map
100
+ export const languageCodeMap = {
101
+ EN: EN_translations,
102
+ DE: DE_translations,
103
+ };
104
+ function* getTranslationKeyHierarchy(key) {
105
+ yield key;
106
+ const areaSplit = key.split("@@");
107
+ let rest = areaSplit[1];
108
+ if (rest) {
109
+ yield rest;
110
+ }
111
+ else {
112
+ rest = areaSplit[0];
113
+ }
114
+ if (!rest.includes("."))
115
+ return;
116
+ const parts = rest.split(".");
117
+ for (let i = parts.length - 1; i > 0; i--) {
118
+ yield parts.slice(0, i).join(".");
119
+ }
120
+ }
121
+ // Translate Function
122
+ export const translate = (languageCode, key) => {
123
+ const dictionary = languageCodeMap[languageCode] || EN_translations;
124
+ const lookupHierarchy = getTranslationKeyHierarchy(key);
125
+ let found;
126
+ for (let keyOption of lookupHierarchy) {
127
+ found = dictionary[keyOption] || EN_translations[keyOption];
128
+ if (found) {
129
+ break;
130
+ }
131
+ }
132
+ return found;
133
+ };
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19zaGFyZWQvdHJhbnNsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBQy9FLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixPQUFPLEVBQUUsU0FBUztJQUNsQixvQkFBb0IsRUFBRSxhQUFhO0lBQ25DLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFdBQVcsRUFBRSxNQUFNO0lBQ25CLGtCQUFrQixFQUFFLGFBQWE7SUFDakMsdUJBQXVCLEVBQUUsaUJBQWlCO0lBQzFDLGdCQUFnQixFQUFFLGNBQWM7SUFDaEMsaUJBQWlCLEVBQUUsa0JBQWtCO0lBQ3JDLFdBQVcsRUFBRSxhQUFhO0lBQzFCLFlBQVksRUFBRSxrQkFBa0I7SUFDaEMsdUJBQXVCLEVBQUUsZ0JBQWdCO0lBQ3pDLEtBQUssRUFBRSxjQUFjO0lBQ3JCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsY0FBYyxFQUFFLHVEQUF1RDtJQUN2RSxnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsZUFBZSxFQUFFLE1BQU07SUFDdkIsSUFBSSxFQUFFLE1BQU07SUFDWixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLG1CQUFtQixFQUFFLG1CQUFtQjtJQUN4QyxZQUFZLEVBQUUsMENBQTBDO0lBQ3hELElBQUksRUFBRSxNQUFNO0lBQ1osTUFBTSxFQUFFLElBQUk7SUFDWixZQUFZLEVBQUUsaUJBQWlCO0lBQy9CLHdCQUF3QixFQUFFLHVDQUF1QztJQUNqRSxlQUFlLEVBQUUsZUFBZTtJQUNoQyxzQkFBc0IsRUFBRSx5QkFBeUI7SUFDakQseUJBQXlCLEVBQUUsZUFBZTtJQUMxQywyQkFBMkIsRUFBRSxpQkFBaUI7SUFDOUMsS0FBSyxFQUFFLE9BQU87SUFDZCxpQkFBaUIsRUFBRSxpQkFBaUI7SUFDcEMsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLEtBQUss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
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-document',
6
- version: '1.6.9',
6
+ version: '2.0.2',
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsOEJBQThCO0lBQ3BDLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSx1TEFBdUw7Q0FDck0sQ0FBQSJ9
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsOEJBQThCO0lBQ3BDLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSx1TEFBdUw7Q0FDck0sQ0FBQSJ9
@@ -1,25 +1,27 @@
1
1
  /**
2
2
  * content for invoices
3
3
  */
4
- import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
5
- import * as plugins from '../plugins.js';
4
+ import { DeesElement, type TemplateResult } from "@design.estate/dees-element";
5
+ import * as plugins from "../plugins.js";
6
+ import type { TranslationKey } from "ts_shared/translation.js";
6
7
  declare global {
7
8
  interface HTMLElementTagNameMap {
8
- 'dedocument-contentinvoice': DeContentInvoice;
9
+ "dedocument-contentinvoice": DeContentInvoice;
9
10
  }
10
11
  }
11
12
  export declare class DeContentInvoice extends DeesElement {
12
13
  static demo: () => TemplateResult<1>;
13
- letterData: plugins.tsclass.business.ILetter;
14
- documentSettings: plugins.shared.interfaces.IDocumentSettings;
14
+ accessor letterData: plugins.tsclass.finance.TInvoice;
15
+ accessor documentSettings: plugins.shared.interfaces.IDocumentSettings;
15
16
  constructor();
16
17
  static styles: import("@design.estate/dees-element").CSSResult[];
17
18
  render(): TemplateResult;
19
+ protected formatPrice(value: number, currency?: string, lang?: string): string;
18
20
  getTotalNet: () => number;
19
21
  getTotalGross: () => number;
20
22
  getVatGroups: () => {
21
23
  vatPercentage: number;
22
- items: plugins.tsclass.finance.IInvoice["items"];
24
+ items: plugins.tsclass.finance.TInvoice["items"];
23
25
  vatAmountSum: number;
24
26
  }[];
25
27
  getContentNodes(): Promise<{
@@ -30,6 +32,10 @@ export declare class DeContentInvoice extends DeesElement {
30
32
  getContentLength(): Promise<number>;
31
33
  trimEndByOne(): Promise<void>;
32
34
  trimStartToOffset(contentOffsetArg: number): Promise<void>;
35
+ translateKey(key: TranslationKey): string;
33
36
  firstUpdated(_changedProperties: Map<string | number | symbol, unknown>): Promise<void>;
37
+ private renderPaymentTerms;
38
+ private renderPaymentInfo;
39
+ private renderReferencedContract;
34
40
  attachInvoiceDom(): Promise<void>;
35
41
  }