@design.estate/dees-document 3.1.2 → 3.3.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 +528 -334
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_shared/demoletter.js +2 -2
- package/dist_ts_shared/index.d.ts +3 -0
- package/dist_ts_shared/index.js +4 -1
- package/dist_ts_shared/paymentcode.d.ts +43 -0
- package/dist_ts_shared/paymentcode.js +85 -0
- package/dist_ts_shared/paymentreminder.d.ts +28 -0
- package/dist_ts_shared/paymentreminder.js +33 -0
- package/dist_ts_shared/translation.d.ts +49 -0
- package/dist_ts_shared/translation.js +97 -3
- package/dist_ts_shared/unitnames.d.ts +44 -0
- package/dist_ts_shared/unitnames.js +103 -0
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/contentinvoice.d.ts +89 -1
- package/dist_ts_web/elements/contentinvoice.js +580 -44
- package/dist_ts_web/elements/letterheader.d.ts +2 -0
- package/dist_ts_web/elements/letterheader.js +20 -1
- package/dist_ts_web/elements/paymentcode.d.ts +2 -0
- package/dist_ts_web/elements/paymentcode.js +23 -19
- package/package.json +5 -5
- package/readme.md +115 -4
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/contentinvoice.ts +713 -49
- package/ts_web/elements/letterheader.ts +28 -0
- package/ts_web/elements/paymentcode.ts +27 -26
|
@@ -63,6 +63,14 @@ const accountingDocContents = {
|
|
|
63
63
|
requestsPayment: true,
|
|
64
64
|
printsRelatedDocuments: false,
|
|
65
65
|
},
|
|
66
|
+
// a complete invoice in place of one that lacked a detail or stated one
|
|
67
|
+
// incorrectly (§ 31 Abs. 5 UStDV); it names that invoice in its own block,
|
|
68
|
+
// renderCorrection(), not among the related documents
|
|
69
|
+
"corrected-invoice": {
|
|
70
|
+
introStatement: "invoice@@introStatement",
|
|
71
|
+
requestsPayment: true,
|
|
72
|
+
printsRelatedDocuments: false,
|
|
73
|
+
},
|
|
66
74
|
// reduces what the recipient owes: nothing to pay, and it names the document it corrects
|
|
67
75
|
creditnote: {
|
|
68
76
|
introStatement: "creditnote@@introStatement",
|
|
@@ -93,6 +101,115 @@ const relatedDocumentLabels = {
|
|
|
93
101
|
replaces: "relatedDocument.replaces",
|
|
94
102
|
references: "relatedDocument.references",
|
|
95
103
|
};
|
|
104
|
+
/**
|
|
105
|
+
* The positions: number 40 px and VAT rate 50 px fixed, the description
|
|
106
|
+
* flexible with at least 120 px (as the grid in the styles declares); the
|
|
107
|
+
* last column is the one the sums line up with.
|
|
108
|
+
*/
|
|
109
|
+
const positionColumns = {
|
|
110
|
+
columns: [
|
|
111
|
+
{ cellSelector: ".quantityCell", widthProperty: "--quantity-column-width", minWidth: 50 },
|
|
112
|
+
{ cellSelector: ".unitCell", widthProperty: "--unit-column-width", minWidth: 50 },
|
|
113
|
+
{ cellSelector: ".unitPriceCell", widthProperty: "--unit-price-column-width", minWidth: 100 },
|
|
114
|
+
{ cellSelector: ".amountCell", widthProperty: "--amount-column-width", minWidth: 100 },
|
|
115
|
+
],
|
|
116
|
+
fixedWidth: 90,
|
|
117
|
+
flexibleMinWidth: 120,
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* A reminder's claims, and its charges and sums, which share the last column;
|
|
121
|
+
* the document label is flexible with at least 150 px (as the grid in the
|
|
122
|
+
* styles declares).
|
|
123
|
+
*/
|
|
124
|
+
const reminderColumns = {
|
|
125
|
+
columns: [
|
|
126
|
+
{ cellSelector: ".issueDateCell", widthProperty: "--issue-date-column-width", minWidth: 80 },
|
|
127
|
+
{ cellSelector: ".dueDateCell", widthProperty: "--due-date-column-width", minWidth: 80 },
|
|
128
|
+
{ cellSelector: ".grossCell", widthProperty: "--gross-column-width", minWidth: 100 },
|
|
129
|
+
{ cellSelector: ".amountCell", widthProperty: "--amount-column-width", minWidth: 100 },
|
|
130
|
+
],
|
|
131
|
+
fixedWidth: 0,
|
|
132
|
+
flexibleMinWidth: 150,
|
|
133
|
+
};
|
|
134
|
+
/** The smallest font a cell is set in to fit its column, in px. */
|
|
135
|
+
const MIN_FITTED_FONT_SIZE = 8;
|
|
136
|
+
/**
|
|
137
|
+
* The width a cell's text needs, its padding included, measured on the text
|
|
138
|
+
* itself, so it is the same whether the text fits its column or overflows it.
|
|
139
|
+
*/
|
|
140
|
+
const neededWidth = (cellArg) => {
|
|
141
|
+
const range = document.createRange();
|
|
142
|
+
range.selectNodeContents(cellArg);
|
|
143
|
+
const style = getComputedStyle(cellArg);
|
|
144
|
+
return Math.ceil(range.getBoundingClientRect().width +
|
|
145
|
+
parseFloat(style.paddingLeft) +
|
|
146
|
+
parseFloat(style.paddingRight));
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Widths for columns that want `wantedArg` and get at least `minimumsArg`,
|
|
150
|
+
* within `availableArg`: what is left above the minimums is granted in equal
|
|
151
|
+
* shares, a column never getting more than it wants.
|
|
152
|
+
*/
|
|
153
|
+
const shareWidth = (wantedArg, minimumsArg, availableArg) => {
|
|
154
|
+
const widths = [...minimumsArg];
|
|
155
|
+
let remaining = availableArg - minimumsArg.reduce((sumArg, widthArg) => sumArg + widthArg, 0);
|
|
156
|
+
let open = widths.map((_, index) => index).filter((index) => wantedArg[index] > widths[index]);
|
|
157
|
+
while (open.length > 0 && remaining >= 1) {
|
|
158
|
+
const share = remaining / open.length;
|
|
159
|
+
for (const index of open) {
|
|
160
|
+
const grant = Math.min(share, wantedArg[index] - widths[index]);
|
|
161
|
+
widths[index] += grant;
|
|
162
|
+
remaining -= grant;
|
|
163
|
+
}
|
|
164
|
+
open = open.filter((index) => wantedArg[index] - widths[index] >= 1);
|
|
165
|
+
}
|
|
166
|
+
return widths.map((widthArg) => Math.floor(widthArg));
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Sets a cell whose text is wider than its column in a smaller font, down to
|
|
170
|
+
* `MIN_FITTED_FONT_SIZE`, and lets it wrap within the column when even that
|
|
171
|
+
* is too wide.
|
|
172
|
+
*/
|
|
173
|
+
const fitCellText = (cellArg, columnWidthArg) => {
|
|
174
|
+
const needed = neededWidth(cellArg);
|
|
175
|
+
if (needed <= columnWidthArg) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const style = getComputedStyle(cellArg);
|
|
179
|
+
const padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
|
|
180
|
+
const fontSize = (parseFloat(style.fontSize) * (columnWidthArg - padding)) / (needed - padding);
|
|
181
|
+
if (fontSize >= MIN_FITTED_FONT_SIZE) {
|
|
182
|
+
cellArg.style.fontSize = `${Math.floor(fontSize * 10) / 10}px`;
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
cellArg.style.fontSize = `${MIN_FITTED_FONT_SIZE}px`;
|
|
186
|
+
cellArg.style.whiteSpace = "normal";
|
|
187
|
+
cellArg.style.overflowWrap = "anywhere";
|
|
188
|
+
};
|
|
189
|
+
/** The kind of a reminded document, as the claims table names it. */
|
|
190
|
+
const claimDocumentLabels = {
|
|
191
|
+
invoice: "paymentReminder@@claim.invoice",
|
|
192
|
+
"corrected-invoice": "paymentReminder@@claim.correctedInvoice",
|
|
193
|
+
debitnote: "paymentReminder@@claim.debitnote",
|
|
194
|
+
};
|
|
195
|
+
/** The words for a detail of § 14 Abs. 4 Satz 1 UStG a corrected invoice supplies or corrects. */
|
|
196
|
+
const correctionDetailLabels = {
|
|
197
|
+
parties: "correctedInvoice.detail.parties",
|
|
198
|
+
"supplier-tax-number": "correctedInvoice.detail.supplierTaxNumber",
|
|
199
|
+
"issue-date": "correctedInvoice.detail.issueDate",
|
|
200
|
+
"invoice-number": "correctedInvoice.detail.invoiceNumber",
|
|
201
|
+
"supply-description": "correctedInvoice.detail.supplyDescription",
|
|
202
|
+
"supply-date": "correctedInvoice.detail.supplyDate",
|
|
203
|
+
"net-amount": "correctedInvoice.detail.netAmount",
|
|
204
|
+
tax: "correctedInvoice.detail.tax",
|
|
205
|
+
"retention-note": "correctedInvoice.detail.retentionNote",
|
|
206
|
+
"special-case-detail": "correctedInvoice.detail.specialCaseDetail",
|
|
207
|
+
};
|
|
208
|
+
/** What was done with a detail: supplied when it was missing, corrected when it was incorrect. */
|
|
209
|
+
const correctionDefectLabels = {
|
|
210
|
+
missing: "correctedInvoice.defect.missing",
|
|
211
|
+
incorrect: "correctedInvoice.defect.incorrect",
|
|
212
|
+
};
|
|
96
213
|
let DeContentInvoice = (() => {
|
|
97
214
|
let _classDecorators = [customElement("dedocument-contentinvoice")];
|
|
98
215
|
let _classDescriptor;
|
|
@@ -161,6 +278,16 @@ let DeContentInvoice = (() => {
|
|
|
161
278
|
? this.letterData
|
|
162
279
|
: null;
|
|
163
280
|
}
|
|
281
|
+
/** The payment reminder this content prints, or null. */
|
|
282
|
+
get paymentReminder() {
|
|
283
|
+
return plugins.shared.isPaymentReminder(this.letterData)
|
|
284
|
+
? this.letterData
|
|
285
|
+
: null;
|
|
286
|
+
}
|
|
287
|
+
/** The currency of the letter's amounts: an accounting document's or a reminder's. */
|
|
288
|
+
get currency() {
|
|
289
|
+
return this.accountingDoc?.currency ?? this.paymentReminder?.currency;
|
|
290
|
+
}
|
|
164
291
|
/**
|
|
165
292
|
* The document builds this element for every letter; one that is no
|
|
166
293
|
* accounting document, and one of a type this version does not know, keep
|
|
@@ -196,7 +323,7 @@ let DeContentInvoice = (() => {
|
|
|
196
323
|
|
|
197
324
|
.grid {
|
|
198
325
|
display: grid;
|
|
199
|
-
grid-template-columns: 40px
|
|
326
|
+
grid-template-columns: 40px minmax(120px, 1fr) var(--quantity-column-width, 50px) var(--unit-column-width, 50px) var(--unit-price-column-width, 100px) 50px var(--amount-column-width, 100px);
|
|
200
327
|
}
|
|
201
328
|
|
|
202
329
|
.topLine {
|
|
@@ -216,6 +343,16 @@ let DeContentInvoice = (() => {
|
|
|
216
343
|
border-right: none;
|
|
217
344
|
}
|
|
218
345
|
|
|
346
|
+
/*
|
|
347
|
+
* the description takes the room the other columns leave, at least its
|
|
348
|
+
* minimum, and wraps within it, so a long one never widens the table
|
|
349
|
+
* beyond the page
|
|
350
|
+
*/
|
|
351
|
+
.lineItem.descriptionCell {
|
|
352
|
+
white-space: normal;
|
|
353
|
+
overflow-wrap: anywhere;
|
|
354
|
+
}
|
|
355
|
+
|
|
219
356
|
.value.rightAlign,
|
|
220
357
|
.lineItem.rightAlign {
|
|
221
358
|
text-align: right;
|
|
@@ -233,6 +370,36 @@ let DeContentInvoice = (() => {
|
|
|
233
370
|
box-sizing: content-box;
|
|
234
371
|
}
|
|
235
372
|
|
|
373
|
+
.claimGrid {
|
|
374
|
+
display: grid;
|
|
375
|
+
grid-template-columns: minmax(150px, 1fr) var(--issue-date-column-width, 80px) var(--due-date-column-width, 80px) var(--gross-column-width, 100px) var(--amount-column-width, 100px);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
.chargeGrid {
|
|
379
|
+
display: grid;
|
|
380
|
+
grid-template-columns: auto var(--amount-column-width, 100px);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.chargeGrid.dataHeader {
|
|
384
|
+
margin-top: 12px;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/* a charge's description and basis wrap: the basis of default interest is longer than a line */
|
|
388
|
+
.lineItem.chargeText {
|
|
389
|
+
white-space: normal;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.chargeBasis {
|
|
393
|
+
margin-top: 2px;
|
|
394
|
+
font-size: 11px;
|
|
395
|
+
color: #555;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/* a provision is not split across lines */
|
|
399
|
+
.citation {
|
|
400
|
+
white-space: nowrap;
|
|
401
|
+
}
|
|
402
|
+
|
|
236
403
|
.sums {
|
|
237
404
|
margin-top: 5px;
|
|
238
405
|
font-size: 12px;
|
|
@@ -242,7 +409,7 @@ let DeContentInvoice = (() => {
|
|
|
242
409
|
.sums .sumline {
|
|
243
410
|
margin-top: 3px;
|
|
244
411
|
display: grid;
|
|
245
|
-
grid-template-columns: auto 100px;
|
|
412
|
+
grid-template-columns: auto var(--amount-column-width, 100px);
|
|
246
413
|
}
|
|
247
414
|
|
|
248
415
|
.sums .sumline .label {
|
|
@@ -286,6 +453,19 @@ let DeContentInvoice = (() => {
|
|
|
286
453
|
margin-top: 4px;
|
|
287
454
|
}
|
|
288
455
|
|
|
456
|
+
.correction {
|
|
457
|
+
margin-bottom: 12px;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.correctionTitle {
|
|
461
|
+
font-weight: bold;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
.correctionDetails ul {
|
|
465
|
+
margin: 2px 0 0 0;
|
|
466
|
+
padding-left: 18px;
|
|
467
|
+
}
|
|
468
|
+
|
|
289
469
|
.relatedDocuments .label {
|
|
290
470
|
font-weight: bold;
|
|
291
471
|
}
|
|
@@ -314,7 +494,7 @@ let DeContentInvoice = (() => {
|
|
|
314
494
|
* an unknown or missing currency falls back to a plain decimal number.
|
|
315
495
|
*/
|
|
316
496
|
formatPrice(value) {
|
|
317
|
-
const currency = this.
|
|
497
|
+
const currency = this.currency;
|
|
318
498
|
const locale = localeForLanguage(this.documentSettings?.languageCode);
|
|
319
499
|
if (currency) {
|
|
320
500
|
try {
|
|
@@ -326,6 +506,30 @@ let DeContentInvoice = (() => {
|
|
|
326
506
|
}
|
|
327
507
|
return new Intl.NumberFormat(locale, { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(value);
|
|
328
508
|
}
|
|
509
|
+
/**
|
|
510
|
+
* Formats a quantity in the document's language with every decimal it
|
|
511
|
+
* carries: 12.5 prints as "12,5" in German and "12.5" in English, and no
|
|
512
|
+
* stated quantity is rounded. The decimals are those of the shortest
|
|
513
|
+
* representation of the number, the one `String()` gives, as the unit name
|
|
514
|
+
* counts them for its singular or plural.
|
|
515
|
+
*/
|
|
516
|
+
formatQuantity(quantityArg) {
|
|
517
|
+
const fractionDigits = plugins.shared.quantityFractionDigits(quantityArg);
|
|
518
|
+
return new Intl.NumberFormat(localeForLanguage(this.documentSettings?.languageCode), {
|
|
519
|
+
minimumFractionDigits: fractionDigits,
|
|
520
|
+
maximumFractionDigits: fractionDigits,
|
|
521
|
+
}).format(quantityArg);
|
|
522
|
+
}
|
|
523
|
+
/** Formats a rate in percent, with as many decimals as it states, up to four. */
|
|
524
|
+
formatPercent(percentArg) {
|
|
525
|
+
return new Intl.NumberFormat(localeForLanguage(this.documentSettings?.languageCode), { style: "percent", maximumFractionDigits: 4 }).format(percentArg / 100);
|
|
526
|
+
}
|
|
527
|
+
/** Formats a day in the document's language and date style. */
|
|
528
|
+
formatDay(timestampArg) {
|
|
529
|
+
return new Intl.DateTimeFormat(this.documentSettings.languageCode, {
|
|
530
|
+
dateStyle: this.documentSettings.dateStyle,
|
|
531
|
+
}).format(new Date(timestampArg));
|
|
532
|
+
}
|
|
329
533
|
getTotalNet = (__runInitializers(this, _renderContentLength_extraInitializers), () => {
|
|
330
534
|
let totalNet = 0;
|
|
331
535
|
const accountingDoc = this.accountingDoc;
|
|
@@ -470,32 +674,46 @@ let DeContentInvoice = (() => {
|
|
|
470
674
|
currentLength = await this.getContentLength();
|
|
471
675
|
}
|
|
472
676
|
}
|
|
473
|
-
/**
|
|
474
|
-
|
|
677
|
+
/**
|
|
678
|
+
* The due date, which only an accounting document and a payment reminder
|
|
679
|
+
* have: it counts `dueInDays` from the letter's date.
|
|
680
|
+
*/
|
|
681
|
+
renderPaymentTerms(optionsArg) {
|
|
475
682
|
return html `<div class="infoBox">
|
|
476
683
|
<div>
|
|
477
684
|
<div>
|
|
478
|
-
<div class="label">
|
|
479
|
-
${this.translateKey("invoice@@payment.terms")}
|
|
480
|
-
</div>
|
|
685
|
+
<div class="label">${this.translateKey(optionsArg.labelKey)}</div>
|
|
481
686
|
<span>
|
|
482
|
-
${this.translateKey(
|
|
483
|
-
${new
|
|
484
|
-
dateStyle: this.documentSettings.dateStyle,
|
|
485
|
-
}).format(new Date(accountingDocArg.date).setDate(new Date(accountingDocArg.date).getDate() +
|
|
486
|
-
accountingDocArg.dueInDays))}
|
|
687
|
+
${this.translateKey(optionsArg.textKey)}
|
|
688
|
+
${this.formatDay(new Date(optionsArg.date).setDate(new Date(optionsArg.date).getDate() + optionsArg.dueInDays))}
|
|
487
689
|
</span>
|
|
488
690
|
</div>
|
|
489
691
|
</div>
|
|
490
692
|
</div>`;
|
|
491
693
|
}
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
const
|
|
694
|
+
/**
|
|
695
|
+
* The QR pay box. It is printed only when the payment has a valid EPC QR
|
|
696
|
+
* code: a euro amount to the sender's IBAN, which a document in another
|
|
697
|
+
* currency or without the sender's IBAN does not have.
|
|
698
|
+
*/
|
|
699
|
+
renderPaymentInfo(optionsArg) {
|
|
700
|
+
const bic = optionsArg.from.sepaConnection?.bic;
|
|
701
|
+
const name = optionsArg.from.name;
|
|
702
|
+
const iban = optionsArg.from.sepaConnection?.iban;
|
|
703
|
+
const currency = optionsArg.currency;
|
|
704
|
+
const totalGross = optionsArg.amount;
|
|
705
|
+
const reference = optionsArg.reference;
|
|
706
|
+
if (typeof iban !== "string" ||
|
|
707
|
+
plugins.shared.buildEpcQrPayload({
|
|
708
|
+
bic,
|
|
709
|
+
name,
|
|
710
|
+
iban,
|
|
711
|
+
currency,
|
|
712
|
+
amount: totalGross,
|
|
713
|
+
remittanceInformation: reference,
|
|
714
|
+
}) === null) {
|
|
715
|
+
return null;
|
|
716
|
+
}
|
|
499
717
|
return html `<div class="infoBox">
|
|
500
718
|
<div>
|
|
501
719
|
<div>
|
|
@@ -511,6 +729,62 @@ let DeContentInvoice = (() => {
|
|
|
511
729
|
reference="${reference}"
|
|
512
730
|
/>
|
|
513
731
|
</div>
|
|
732
|
+
</div>`;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* The reverse-charge statement. § 14a UStG requires the words
|
|
736
|
+
* "Steuerschuldnerschaft des Leistungsempfängers": Abs. 5 for a domestic
|
|
737
|
+
* supply whose recipient owes the tax under § 13b, Abs. 1 for a supply in
|
|
738
|
+
* another member state whose recipient owes the tax there, such as a
|
|
739
|
+
* business-to-business service under Art. 196 of the VAT Directive. They are
|
|
740
|
+
* printed on every reverse-charge document, and a document in another language adds its own
|
|
741
|
+
* line, in English "Reverse charge", the words of Art. 226 Nr. 11a of the VAT
|
|
742
|
+
* Directive (2006/112/EC).
|
|
743
|
+
*/
|
|
744
|
+
renderReverseChargeNote() {
|
|
745
|
+
const localizedLine = this.translateKey("invoice@@vat.reverseCharge.note");
|
|
746
|
+
return html `<div class="taxNote">
|
|
747
|
+
<div>${plugins.shared.translation.REVERSE_CHARGE_STATUTORY_PHRASE_DE}</div>
|
|
748
|
+
${localizedLine === plugins.shared.translation.REVERSE_CHARGE_STATUTORY_PHRASE_DE
|
|
749
|
+
? null
|
|
750
|
+
: html `<div>${localizedLine}</div>`}
|
|
751
|
+
</div>`;
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* What makes a corrected invoice a correction (§ 31 Abs. 5 UStDV): its
|
|
755
|
+
* title, the invoice it corrects by number and issue date when the document
|
|
756
|
+
* states them ("spezifisch und eindeutig", Satz 2), and the details it
|
|
757
|
+
* supplies or corrects, in words. A received corrected invoice may name
|
|
758
|
+
* neither; then only the title is printed, and no reference is made up.
|
|
759
|
+
*/
|
|
760
|
+
renderCorrection() {
|
|
761
|
+
const accountingDoc = this.accountingDoc;
|
|
762
|
+
if (accountingDoc?.accountingDocType !== "corrected-invoice") {
|
|
763
|
+
return null;
|
|
764
|
+
}
|
|
765
|
+
const reference = accountingDoc.correctedInvoice;
|
|
766
|
+
const corrections = accountingDoc.corrections ?? [];
|
|
767
|
+
return html `<div class="correction">
|
|
768
|
+
<div class="correctionTitle">
|
|
769
|
+
${this.translateKey("correctedInvoice.title")}${reference
|
|
770
|
+
? html ` ${this.translateKey("correctedInvoice.reference")}
|
|
771
|
+
${reference.documentId}${reference.issueDate !== undefined
|
|
772
|
+
? html ` ${this.translateKey("correctedInvoice.referenceDate")}
|
|
773
|
+
${this.formatDay(reference.issueDate)}`
|
|
774
|
+
: null}`
|
|
775
|
+
: null}
|
|
776
|
+
</div>
|
|
777
|
+
${corrections.length > 0
|
|
778
|
+
? html `<div class="correctionDetails">
|
|
779
|
+
<div>${this.translateKey("correctedInvoice.corrections")}:</div>
|
|
780
|
+
<ul>
|
|
781
|
+
${corrections.map((correctionArg) => html `<li>
|
|
782
|
+
${this.translateKey(correctionDetailLabels[correctionArg.detail])}:
|
|
783
|
+
${this.translateKey(correctionDefectLabels[correctionArg.defect])}
|
|
784
|
+
</li>`)}
|
|
785
|
+
</ul>
|
|
786
|
+
</div>`
|
|
787
|
+
: null}
|
|
514
788
|
</div>`;
|
|
515
789
|
}
|
|
516
790
|
/** The earlier documents a correction answers, by number and, when known, by date. */
|
|
@@ -538,8 +812,8 @@ let DeContentInvoice = (() => {
|
|
|
538
812
|
* pages and cannot split one, so a note is handed over token by token: a
|
|
539
813
|
* paragraph in one piece could be taller than a page and would never fit.
|
|
540
814
|
*/
|
|
541
|
-
renderNotes() {
|
|
542
|
-
const notes = (
|
|
815
|
+
renderNotes(notesArg) {
|
|
816
|
+
const notes = (notesArg ?? [])
|
|
543
817
|
.filter((noteArg) => typeof noteArg === "string")
|
|
544
818
|
.map((noteArg) => noteArg.replace(/\r\n?/g, "\n").trim())
|
|
545
819
|
.filter((noteArg) => noteArg.length > 0);
|
|
@@ -549,6 +823,210 @@ let DeContentInvoice = (() => {
|
|
|
549
823
|
// no whitespace between the elements: a text node would stay behind when its neighbours move to another page
|
|
550
824
|
return html `${notes.map((noteArg) => html `<div class="noteStart"></div>${(noteArg.match(noteTokenPattern) ?? []).map((tokenArg) => html `<span class="noteText">${tokenArg}</span>`)}`)}`;
|
|
551
825
|
}
|
|
826
|
+
/**
|
|
827
|
+
* The document a reminder claims, as the claims table and the charges name
|
|
828
|
+
* it: its kind and its number.
|
|
829
|
+
*/
|
|
830
|
+
claimLabel(reminderArg, documentIdArg) {
|
|
831
|
+
const claim = reminderArg.claims.find((claimArg) => claimArg.documentId === documentIdArg);
|
|
832
|
+
if (!claim) {
|
|
833
|
+
return documentIdArg;
|
|
834
|
+
}
|
|
835
|
+
// a kind this version does not know is named as an invoice, as the letterhead and the content do
|
|
836
|
+
const label = claimDocumentLabels[claim.documentType] ?? claimDocumentLabels.invoice;
|
|
837
|
+
return `${this.translateKey(label)} ${documentIdArg}`;
|
|
838
|
+
}
|
|
839
|
+
/**
|
|
840
|
+
* The ground of the claim: every reminded document with its number, its
|
|
841
|
+
* date, the date it fell due when it stated one, its gross total and what is
|
|
842
|
+
* still open on it.
|
|
843
|
+
*/
|
|
844
|
+
renderReminderClaims(reminderArg) {
|
|
845
|
+
return html `<div class="claimGrid topLine dataHeader">
|
|
846
|
+
<div class="lineItem descriptionCell">
|
|
847
|
+
${this.translateKey("paymentReminder@@claim.document")}
|
|
848
|
+
</div>
|
|
849
|
+
<div class="lineItem rightAlign issueDateCell">
|
|
850
|
+
${this.translateKey("paymentReminder@@claim.issueDate")}
|
|
851
|
+
</div>
|
|
852
|
+
<div class="lineItem rightAlign dueDateCell">
|
|
853
|
+
${this.translateKey("paymentReminder@@claim.dueDate")}
|
|
854
|
+
</div>
|
|
855
|
+
<div class="lineItem rightAlign grossCell">
|
|
856
|
+
${this.translateKey("paymentReminder@@claim.totalGross")}
|
|
857
|
+
</div>
|
|
858
|
+
<div class="lineItem rightAlign amountCell">
|
|
859
|
+
${this.translateKey("paymentReminder@@claim.outstanding")}
|
|
860
|
+
</div>
|
|
861
|
+
</div>
|
|
862
|
+
${reminderArg.claims.map((claimArg) => html `<div class="claimGrid needsDataHeader">
|
|
863
|
+
<div class="lineItem descriptionCell">
|
|
864
|
+
${this.claimLabel(reminderArg, claimArg.documentId)}
|
|
865
|
+
</div>
|
|
866
|
+
<div class="lineItem rightAlign issueDateCell">
|
|
867
|
+
${this.formatDay(claimArg.issueDate)}
|
|
868
|
+
</div>
|
|
869
|
+
<div class="lineItem rightAlign dueDateCell">
|
|
870
|
+
${claimArg.dueDate !== undefined
|
|
871
|
+
? this.formatDay(claimArg.dueDate)
|
|
872
|
+
: "–"}
|
|
873
|
+
</div>
|
|
874
|
+
<div class="lineItem rightAlign grossCell">
|
|
875
|
+
${this.formatPrice(claimArg.totalGross)}
|
|
876
|
+
</div>
|
|
877
|
+
<div class="lineItem rightAlign amountCell">
|
|
878
|
+
${this.formatPrice(claimArg.outstandingAmount)}
|
|
879
|
+
</div>
|
|
880
|
+
</div>`)}`;
|
|
881
|
+
}
|
|
882
|
+
/**
|
|
883
|
+
* What a charge rests on, as the reminder states it: default interest its
|
|
884
|
+
* computation (principal, rate a year with the base rate and the surcharge
|
|
885
|
+
* points of § 288 Abs. 1 or 2 BGB, first and last day), the default lump sum
|
|
886
|
+
* its provision, and every charge the claim it accrues on. A cost with lump
|
|
887
|
+
* sums credited against it lists them (§ 288 Abs. 5 Satz 3 BGB); its amount
|
|
888
|
+
* is already the cost less them.
|
|
889
|
+
*/
|
|
890
|
+
renderChargeBasis(reminderArg, chargeArg) {
|
|
891
|
+
switch (chargeArg.chargeType) {
|
|
892
|
+
case "default-interest": {
|
|
893
|
+
const interest = chargeArg.interest;
|
|
894
|
+
return html `<div class="chargeBasis">
|
|
895
|
+
${this.claimLabel(reminderArg, chargeArg.claimDocumentId)}:
|
|
896
|
+
${this.formatPrice(interest.principal)} ×
|
|
897
|
+
${this.formatPercent(interest.ratePercent)}
|
|
898
|
+
${this.translateKey("paymentReminder@@interest.perYear")}
|
|
899
|
+
(${this.translateKey("paymentReminder@@interest.baseRate")}
|
|
900
|
+
${this.formatPercent(interest.baseRatePercent)}
|
|
901
|
+
${this.translateKey("paymentReminder@@interest.plus")}
|
|
902
|
+
${interest.surchargePoints}
|
|
903
|
+
${this.translateKey("paymentReminder@@interest.points")},
|
|
904
|
+
<span class="citation"
|
|
905
|
+
>${plugins.shared.defaultInterestCitations[interest.legalBasis]}</span
|
|
906
|
+
>),
|
|
907
|
+
${this.formatDay(interest.from)} – ${this.formatDay(interest.to)}
|
|
908
|
+
</div>`;
|
|
909
|
+
}
|
|
910
|
+
case "default-lump-sum":
|
|
911
|
+
return html `<div class="chargeBasis">
|
|
912
|
+
${this.claimLabel(reminderArg, chargeArg.claimDocumentId)},
|
|
913
|
+
<span class="citation"
|
|
914
|
+
>${plugins.shared.DEFAULT_LUMP_SUM_CITATION}</span
|
|
915
|
+
>
|
|
916
|
+
</div>`;
|
|
917
|
+
case "reminder-fee":
|
|
918
|
+
case "other-cost": {
|
|
919
|
+
const offsets = chargeArg.lumpSumOffsets ?? [];
|
|
920
|
+
if (chargeArg.claimDocumentId === undefined && offsets.length === 0) {
|
|
921
|
+
return null;
|
|
922
|
+
}
|
|
923
|
+
return html `${chargeArg.claimDocumentId !== undefined
|
|
924
|
+
? html `<div class="chargeBasis">
|
|
925
|
+
${this.claimLabel(reminderArg, chargeArg.claimDocumentId)}
|
|
926
|
+
</div>`
|
|
927
|
+
: null}
|
|
928
|
+
${offsets.map((offsetArg) => html `<div class="chargeBasis">
|
|
929
|
+
${this.translateKey("paymentReminder@@charge.lumpSumOffset")}
|
|
930
|
+
${this.claimLabel(reminderArg, offsetArg.claimDocumentId)}:
|
|
931
|
+
${this.formatPrice(offsetArg.amount)}
|
|
932
|
+
(<span class="citation"
|
|
933
|
+
>${plugins.shared.LUMP_SUM_OFFSET_CITATION}</span
|
|
934
|
+
>)
|
|
935
|
+
</div>`)}`;
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
/** One row per charge: its description, what it rests on, and its amount. */
|
|
940
|
+
renderReminderCharges(reminderArg) {
|
|
941
|
+
if (reminderArg.charges.length === 0) {
|
|
942
|
+
return null;
|
|
943
|
+
}
|
|
944
|
+
return html `<div class="chargeGrid topLine dataHeader">
|
|
945
|
+
<div class="lineItem">
|
|
946
|
+
${this.translateKey("paymentReminder@@charge.description")}
|
|
947
|
+
</div>
|
|
948
|
+
<div class="lineItem rightAlign amountCell">
|
|
949
|
+
${this.translateKey("paymentReminder@@charge.amount")}
|
|
950
|
+
</div>
|
|
951
|
+
</div>
|
|
952
|
+
${reminderArg.charges.map((chargeArg) => html `<div class="chargeGrid needsDataHeader">
|
|
953
|
+
<div class="lineItem chargeText">
|
|
954
|
+
<div>${chargeArg.description}</div>
|
|
955
|
+
${this.renderChargeBasis(reminderArg, chargeArg)}
|
|
956
|
+
</div>
|
|
957
|
+
<div class="lineItem rightAlign amountCell">
|
|
958
|
+
${this.formatPrice(chargeArg.amount)}
|
|
959
|
+
</div>
|
|
960
|
+
</div>`)}`;
|
|
961
|
+
}
|
|
962
|
+
/** The sums of a reminder: the open claims, the charges and the total payable, without VAT. */
|
|
963
|
+
renderReminderSums(totalsArg, hasChargesArg) {
|
|
964
|
+
return html `<div class="sums">
|
|
965
|
+
<div class="sumline">
|
|
966
|
+
<div class="label">
|
|
967
|
+
${this.translateKey("paymentReminder@@paymentReminder.sum.claims")}
|
|
968
|
+
</div>
|
|
969
|
+
<div class="value rightAlign amountCell">
|
|
970
|
+
${this.formatPrice(totalsArg.claimsOutstanding)}
|
|
971
|
+
</div>
|
|
972
|
+
</div>
|
|
973
|
+
${hasChargesArg
|
|
974
|
+
? html `<div class="sumline">
|
|
975
|
+
<div class="label">
|
|
976
|
+
${this.translateKey("paymentReminder@@paymentReminder.sum.charges")}
|
|
977
|
+
</div>
|
|
978
|
+
<div class="value rightAlign amountCell">
|
|
979
|
+
${this.formatPrice(totalsArg.charges)}
|
|
980
|
+
</div>
|
|
981
|
+
</div>`
|
|
982
|
+
: null}
|
|
983
|
+
<div class="sumline">
|
|
984
|
+
<div class="label">
|
|
985
|
+
${this.translateKey("paymentReminder@@paymentReminder.sum.payable")}
|
|
986
|
+
</div>
|
|
987
|
+
<div class="value value--total rightAlign amountCell">
|
|
988
|
+
${this.formatPrice(totalsArg.payable)}
|
|
989
|
+
</div>
|
|
990
|
+
</div>
|
|
991
|
+
</div>`;
|
|
992
|
+
}
|
|
993
|
+
/**
|
|
994
|
+
* A payment reminder: the issuer's intro or the standard one, the reminded
|
|
995
|
+
* documents, the charges, the sums, the notes, the new payment deadline and
|
|
996
|
+
* the QR pay box for the total payable with the reminder's number.
|
|
997
|
+
*/
|
|
998
|
+
renderPaymentReminder(reminderArg) {
|
|
999
|
+
const totals = plugins.shared.getPaymentReminderTotals(reminderArg);
|
|
1000
|
+
return html `
|
|
1001
|
+
<div>
|
|
1002
|
+
${reminderArg.topText ??
|
|
1003
|
+
this.translateKey("paymentReminder@@introStatement")}
|
|
1004
|
+
</div>
|
|
1005
|
+
${this.renderReminderClaims(reminderArg)}
|
|
1006
|
+
${this.renderReminderCharges(reminderArg)}
|
|
1007
|
+
${this.renderReminderSums(totals, reminderArg.charges.length > 0)}
|
|
1008
|
+
<div class="divider"></div>
|
|
1009
|
+
|
|
1010
|
+
<!-- NOTES -->
|
|
1011
|
+
${this.renderNotes(reminderArg.notes)}
|
|
1012
|
+
|
|
1013
|
+
<!-- PAYMENT DEADLINE -->
|
|
1014
|
+
${this.renderPaymentTerms({
|
|
1015
|
+
date: reminderArg.date,
|
|
1016
|
+
dueInDays: reminderArg.dueInDays,
|
|
1017
|
+
labelKey: "paymentReminder@@paymentReminder.deadline",
|
|
1018
|
+
textKey: "paymentReminder@@paymentReminder.deadline.text",
|
|
1019
|
+
})}
|
|
1020
|
+
|
|
1021
|
+
<!-- PAYMENT INFO -->
|
|
1022
|
+
${this.renderPaymentInfo({
|
|
1023
|
+
from: reminderArg.from,
|
|
1024
|
+
currency: reminderArg.currency,
|
|
1025
|
+
amount: totals.payable,
|
|
1026
|
+
reference: reminderArg.id,
|
|
1027
|
+
})}
|
|
1028
|
+
`;
|
|
1029
|
+
}
|
|
552
1030
|
renderReferencedContract() {
|
|
553
1031
|
return null;
|
|
554
1032
|
// return this.documentSettings.enableInvoiceContractRefSection &&
|
|
@@ -570,44 +1048,57 @@ let DeContentInvoice = (() => {
|
|
|
570
1048
|
}
|
|
571
1049
|
async attachInvoiceDom() {
|
|
572
1050
|
const contentNodes = await this.getContentNodes();
|
|
1051
|
+
const paymentReminder = this.paymentReminder;
|
|
1052
|
+
if (paymentReminder) {
|
|
1053
|
+
render(this.renderPaymentReminder(paymentReminder), contentNodes.currentContent);
|
|
1054
|
+
this.fitColumns(contentNodes.currentContent, ".claimGrid.dataHeader", reminderColumns);
|
|
1055
|
+
return;
|
|
1056
|
+
}
|
|
573
1057
|
const accountingDoc = this.accountingDoc;
|
|
574
1058
|
render(html `
|
|
1059
|
+
${this.renderCorrection()}
|
|
575
1060
|
<div>${this.translateKey(this.docContent.introStatement)}</div>
|
|
576
1061
|
${this.renderRelatedDocuments()}
|
|
577
1062
|
<div class="grid topLine dataHeader">
|
|
578
1063
|
<div class="lineItem rightAlign">
|
|
579
1064
|
${this.translateKey("invoice@@item.position")}
|
|
580
1065
|
</div>
|
|
581
|
-
<div class="lineItem">
|
|
1066
|
+
<div class="lineItem descriptionCell">
|
|
582
1067
|
${this.translateKey("invoice@@description")}
|
|
583
1068
|
</div>
|
|
584
|
-
<div class="lineItem rightAlign">
|
|
1069
|
+
<div class="lineItem rightAlign quantityCell">
|
|
585
1070
|
${this.translateKey("invoice@@quantity")}
|
|
586
1071
|
</div>
|
|
587
|
-
<div class="lineItem"
|
|
588
|
-
|
|
1072
|
+
<div class="lineItem unitCell">
|
|
1073
|
+
${this.translateKey("invoice@@unit.type")}
|
|
1074
|
+
</div>
|
|
1075
|
+
<div class="lineItem rightAlign unitPriceCell">
|
|
589
1076
|
${this.translateKey("invoice@@price.unit.net")}
|
|
590
1077
|
</div>
|
|
591
1078
|
<div class="lineItem rightAlign">
|
|
592
1079
|
${this.translateKey("invoice@@vat.short")}
|
|
593
1080
|
</div>
|
|
594
|
-
<div class="lineItem rightAlign">
|
|
1081
|
+
<div class="lineItem rightAlign amountCell">
|
|
595
1082
|
${this.translateKey("invoice@@price.total.net")}
|
|
596
1083
|
</div>
|
|
597
1084
|
</div>
|
|
598
1085
|
${accountingDoc?.items?.map((invoiceItem, index) => html `
|
|
599
1086
|
<div class="grid needsDataHeader">
|
|
600
1087
|
<div class="lineItem rightAlign">${index + 1}</div>
|
|
601
|
-
<div class="lineItem">${invoiceItem.name}</div>
|
|
602
|
-
<div class="lineItem rightAlign"
|
|
603
|
-
|
|
604
|
-
|
|
1088
|
+
<div class="lineItem descriptionCell">${invoiceItem.name}</div>
|
|
1089
|
+
<div class="lineItem rightAlign quantityCell">
|
|
1090
|
+
${this.formatQuantity(invoiceItem.unitQuantity)}
|
|
1091
|
+
</div>
|
|
1092
|
+
<div class="lineItem unitCell">
|
|
1093
|
+
${plugins.shared.unitName(this.documentSettings.languageCode, invoiceItem.unitType, invoiceItem.unitQuantity)}
|
|
1094
|
+
</div>
|
|
1095
|
+
<div class="lineItem rightAlign unitPriceCell">
|
|
605
1096
|
${this.formatPrice(invoiceItem.unitNetPrice)}
|
|
606
1097
|
</div>
|
|
607
1098
|
<div class="lineItem rightAlign">
|
|
608
1099
|
${invoiceItem.vatPercentage}%
|
|
609
1100
|
</div>
|
|
610
|
-
<div class="lineItem rightAlign">
|
|
1101
|
+
<div class="lineItem rightAlign amountCell">
|
|
611
1102
|
${this.formatPrice(invoiceItem.unitQuantity * invoiceItem.unitNetPrice)}
|
|
612
1103
|
</div>
|
|
613
1104
|
</div>
|
|
@@ -617,7 +1108,7 @@ let DeContentInvoice = (() => {
|
|
|
617
1108
|
<div class="label">
|
|
618
1109
|
${this.translateKey("invoice@@sum.total.net")}
|
|
619
1110
|
</div>
|
|
620
|
-
<div class="value value--total rightAlign">
|
|
1111
|
+
<div class="value value--total rightAlign amountCell">
|
|
621
1112
|
${this.formatPrice(this.getTotalNet())}
|
|
622
1113
|
</div>
|
|
623
1114
|
</div>
|
|
@@ -639,7 +1130,7 @@ let DeContentInvoice = (() => {
|
|
|
639
1130
|
`
|
|
640
1131
|
: html ``}
|
|
641
1132
|
</div>
|
|
642
|
-
<div class="value rightAlign">
|
|
1133
|
+
<div class="value rightAlign amountCell">
|
|
643
1134
|
${this.formatPrice(vatGroupArg.vatAmountSum)}
|
|
644
1135
|
</div>
|
|
645
1136
|
</div>
|
|
@@ -647,35 +1138,80 @@ let DeContentInvoice = (() => {
|
|
|
647
1138
|
})}
|
|
648
1139
|
<div class="sumline">
|
|
649
1140
|
<div class="label">${this.translateKey("invoice@@totalGross")}</div>
|
|
650
|
-
<div class="value value--total rightAlign">
|
|
1141
|
+
<div class="value value--total rightAlign amountCell">
|
|
651
1142
|
${this.formatPrice(this.getTotalGross())}
|
|
652
1143
|
</div>
|
|
653
1144
|
</div>
|
|
654
1145
|
</div>
|
|
655
1146
|
<div class="divider"></div>
|
|
656
1147
|
|
|
657
|
-
${accountingDoc?.reverseCharge
|
|
658
|
-
? html `<div class="taxNote">
|
|
659
|
-
${this.translateKey("invoice@@vat.reverseCharge.note")}
|
|
660
|
-
</div>`
|
|
661
|
-
: ``}
|
|
1148
|
+
${accountingDoc?.reverseCharge ? this.renderReverseChargeNote() : ``}
|
|
662
1149
|
|
|
663
1150
|
<!-- REFERENCED CONTRACT -->
|
|
664
1151
|
${this.renderReferencedContract()}
|
|
665
1152
|
|
|
666
1153
|
<!-- NOTES -->
|
|
667
|
-
${this.renderNotes()}
|
|
1154
|
+
${this.renderNotes(accountingDoc?.notes)}
|
|
668
1155
|
|
|
669
1156
|
<!-- PAYMENT TERMS -->
|
|
670
1157
|
${accountingDoc && this.docContent.requestsPayment
|
|
671
|
-
? this.renderPaymentTerms(
|
|
1158
|
+
? this.renderPaymentTerms({
|
|
1159
|
+
date: accountingDoc.date,
|
|
1160
|
+
dueInDays: accountingDoc.dueInDays,
|
|
1161
|
+
labelKey: "invoice@@payment.terms",
|
|
1162
|
+
textKey: "invoice@@payment.terms.direct",
|
|
1163
|
+
})
|
|
672
1164
|
: null}
|
|
673
1165
|
|
|
674
1166
|
<!-- PAYMENT INFO -->
|
|
675
1167
|
${accountingDoc && this.docContent.requestsPayment
|
|
676
|
-
? this.renderPaymentInfo(
|
|
1168
|
+
? this.renderPaymentInfo({
|
|
1169
|
+
from: accountingDoc.from,
|
|
1170
|
+
currency: accountingDoc.currency,
|
|
1171
|
+
amount: this.getTotalGross(),
|
|
1172
|
+
reference: accountingDoc.id,
|
|
1173
|
+
})
|
|
677
1174
|
: null}
|
|
678
1175
|
`, contentNodes.currentContent);
|
|
1176
|
+
this.fitColumns(contentNodes.currentContent, ".grid.dataHeader", positionColumns);
|
|
1177
|
+
}
|
|
1178
|
+
/**
|
|
1179
|
+
* Sizes the columns of a table to their widest cell. Every row is a grid of
|
|
1180
|
+
* its own, so the rows only line up when a column has one width for all of
|
|
1181
|
+
* them; each page renders every row before it is trimmed, so every page
|
|
1182
|
+
* measures the same widths.
|
|
1183
|
+
*
|
|
1184
|
+
* A column is never narrower than its minimum. The widths the columns ask
|
|
1185
|
+
* for beyond their minimums are granted out of the row's width less its
|
|
1186
|
+
* fixed columns and the minimum of its flexible column (the description),
|
|
1187
|
+
* in equal shares, so the table always fits the page. A cell whose text is
|
|
1188
|
+
* still wider than its column, such as an amount beyond hundreds of
|
|
1189
|
+
* billions, is set in a smaller font, down to 8 px, and wraps inside its
|
|
1190
|
+
* column once that is not enough, so it never runs into its neighbour.
|
|
1191
|
+
*/
|
|
1192
|
+
fitColumns(containerArg, headerRowSelectorArg, layoutArg) {
|
|
1193
|
+
const cellsOf = (columnArg) => Array.from(containerArg.querySelectorAll(columnArg.cellSelector));
|
|
1194
|
+
for (const column of layoutArg.columns) {
|
|
1195
|
+
this.style.removeProperty(column.widthProperty);
|
|
1196
|
+
for (const cell of cellsOf(column)) {
|
|
1197
|
+
cell.style.removeProperty("font-size");
|
|
1198
|
+
cell.style.removeProperty("white-space");
|
|
1199
|
+
cell.style.removeProperty("overflow-wrap");
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1202
|
+
const headerRow = containerArg.querySelector(headerRowSelectorArg);
|
|
1203
|
+
if (!headerRow || headerRow.clientWidth === 0) {
|
|
1204
|
+
// not laid out: the columns keep their minimums
|
|
1205
|
+
return;
|
|
1206
|
+
}
|
|
1207
|
+
const wanted = layoutArg.columns.map((columnArg) => cellsOf(columnArg).reduce((widestArg, cellArg) => Math.max(widestArg, neededWidth(cellArg)), columnArg.minWidth));
|
|
1208
|
+
const widths = shareWidth(wanted, layoutArg.columns.map((columnArg) => columnArg.minWidth), headerRow.clientWidth - layoutArg.fixedWidth - layoutArg.flexibleMinWidth);
|
|
1209
|
+
layoutArg.columns.forEach((columnArg, index) => {
|
|
1210
|
+
this.style.setProperty(columnArg.widthProperty, `${widths[index]}px`);
|
|
1211
|
+
for (const cell of cellsOf(columnArg)) {
|
|
1212
|
+
fitCellText(cell, widths[index]);
|
|
1213
|
+
}
|
|
1214
|
+
});
|
|
679
1215
|
}
|
|
680
1216
|
static {
|
|
681
1217
|
__runInitializers(_classThis, _classExtraInitializers);
|
|
@@ -684,4 +1220,4 @@ let DeContentInvoice = (() => {
|
|
|
684
1220
|
return DeContentInvoice = _classThis;
|
|
685
1221
|
})();
|
|
686
1222
|
export { DeContentInvoice };
|
|
687
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGludm9pY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvY29udGVudGludm9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsT0FBTyxFQUNMLFdBQVcsRUFDWCxRQUFRLEVBQ1IsSUFBSSxFQUNKLGFBQWEsRUFFYixHQUFHLEVBQ0gsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVFwRCw4RUFBOEU7QUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGVBQXdCLEVBQVUsRUFBRTtJQUM3RCxRQUFRLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDaEQsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakI7WUFDRSxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBWUYsTUFBTSxxQkFBcUIsR0FHdkI7SUFDRixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUUseUJBQXlCO1FBQ3pDLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLHNCQUFzQixFQUFFLEtBQUs7S0FDOUI7SUFDRCx5RkFBeUY7SUFDekYsVUFBVSxFQUFFO1FBQ1YsY0FBYyxFQUFFLDRC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
|
|
1223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudGludm9pY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvY29udGVudGludm9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsT0FBTyxFQUNMLFdBQVcsRUFDWCxRQUFRLEVBQ1IsSUFBSSxFQUNKLGFBQWEsRUFFYixHQUFHLEVBQ0gsTUFBTSxFQUNOLFFBQVEsR0FDVCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVFwRCw4RUFBOEU7QUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGVBQXdCLEVBQVUsRUFBRTtJQUM3RCxRQUFRLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDaEQsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxJQUFJO1lBQ1AsT0FBTyxPQUFPLENBQUM7UUFDakI7WUFDRSxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBWUYsTUFBTSxxQkFBcUIsR0FHdkI7SUFDRixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUUseUJBQXlCO1FBQ3pDLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLHNCQUFzQixFQUFFLEtBQUs7S0FDOUI7SUFDRCx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLHNEQUFzRDtJQUN0RCxt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
|