@dangl/angular-ava 1.1.2-beta0113 → 1.1.2-beta0125
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/fesm2022/dangl-angular-ava.mjs +242 -216
- package/fesm2022/dangl-angular-ava.mjs.map +1 -1
- package/lib/ava-tree/{tree/components → components}/ava-tree/ava-tree.component.d.ts +3 -3
- package/lib/ava-tree/constants/index.d.ts +4 -0
- package/lib/ava-tree/{tree/directives → directives}/save-changing-view.directive.d.ts +2 -2
- package/lib/ava-tree/model/config-tree.model.d.ts +25 -0
- package/lib/ava-tree/model/index.d.ts +8 -0
- package/lib/{ava-tree/invoice → invoice/components}/invoice-display/invoice-display.component.d.ts +4 -4
- package/lib/invoice/constants/index.d.ts +2 -0
- package/lib/invoice/model/configInvoice.model.d.ts +4 -0
- package/lib/invoice/model/index.d.ts +4 -0
- package/lib/{ava-tree/tree → invoice}/model/invoice-models.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +6 -4
- package/lib/ava-tree/tree/constants/index.d.ts +0 -5
- package/lib/ava-tree/tree/model/index.d.ts +0 -9
- /package/lib/ava-tree/{tree/components → components}/list-structure/list-structure.component.d.ts +0 -0
- /package/lib/ava-tree/{tree/components → components}/table-structure/table-structure.component.d.ts +0 -0
- /package/lib/ava-tree/{tree/components → components}/tree-hover-tooltip/tree-hover-tooltip.component.d.ts +0 -0
- /package/lib/ava-tree/{tree/components → components}/tree-item/tree-item.component.d.ts +0 -0
- /package/lib/ava-tree/{tree/components → components}/tree-node/tree-node.component.d.ts +0 -0
- /package/lib/ava-tree/{tree/components → components}/tree-structure/tree-structure.component.d.ts +0 -0
- /package/lib/ava-tree/{tree/constants → constants}/defaultFilters.d.ts +0 -0
- /package/lib/ava-tree/{tree/constants → constants}/defaultTextWords.d.ts +0 -0
- /package/lib/ava-tree/{tree/constants → constants}/defaults.d.ts +0 -0
- /package/lib/ava-tree/{tree/model → model}/ava-models.d.ts +0 -0
- /package/lib/ava-tree/{tree/model → model}/context-menu-data.model.d.ts +0 -0
- /package/lib/ava-tree/{tree/model → model}/function-view-line.model.d.ts +0 -0
- /package/lib/ava-tree/{tree/model → model}/selecting.model.d.ts +0 -0
- /package/lib/ava-tree/{tree/model → model}/tableColumnType.d.ts +0 -0
- /package/lib/ava-tree/{tree/model → model}/tree-mode.model.d.ts +0 -0
- /package/lib/ava-tree/{tree/pipes → pipes}/element-icon-name.pipe.d.ts +0 -0
- /package/lib/ava-tree/{tree/pipes → pipes}/element-item-number.pipe.d.ts +0 -0
- /package/lib/ava-tree/{tree/pipes → pipes}/element-text.pipe.d.ts +0 -0
- /package/lib/ava-tree/{tree/pipes → pipes}/group-child-elements.pipe.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/dynamic-component.service.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/expand-parent-group.service.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/flat-elements.service.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/keyboard-operation.service.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/select-element.service.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/tree-hover-tooltip.service.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/tree-node-selection.service.d.ts +0 -0
- /package/lib/ava-tree/{tree/services → services}/tree-words.service.d.ts +0 -0
- /package/lib/{ava-tree/tree → invoice}/constants/defaultTextWordInvoice.d.ts +0 -0
- /package/lib/{ava-tree/tree → invoice}/model/invoice-words.model.d.ts +0 -0
- /package/lib/{ava-tree/tree → invoice}/pipes/invoice-attachment-mime-type.pipe.d.ts +0 -0
|
@@ -231,51 +231,6 @@ var CommerceInquiryTypeDto;
|
|
|
231
231
|
CommerceInquiryTypeDto["Exhibition"] = "Exhibition";
|
|
232
232
|
})(CommerceInquiryTypeDto || (CommerceInquiryTypeDto = {}));
|
|
233
233
|
|
|
234
|
-
/** Type of the invoice */
|
|
235
|
-
var InvoiceType;
|
|
236
|
-
(function (InvoiceType) {
|
|
237
|
-
InvoiceType[InvoiceType["PartialInvoice"] = 326] = "PartialInvoice";
|
|
238
|
-
InvoiceType[InvoiceType["CommercialInvoice"] = 380] = "CommercialInvoice";
|
|
239
|
-
InvoiceType[InvoiceType["CreditNote"] = 381] = "CreditNote";
|
|
240
|
-
InvoiceType[InvoiceType["CorrectedInvoice"] = 384] = "CorrectedInvoice";
|
|
241
|
-
InvoiceType[InvoiceType["SelfBilledInvoice"] = 389] = "SelfBilledInvoice";
|
|
242
|
-
InvoiceType[InvoiceType["PartialConstructionInvoice"] = 875] = "PartialConstructionInvoice";
|
|
243
|
-
InvoiceType[InvoiceType["PartialFinalConstructionInvoice"] = 876] = "PartialFinalConstructionInvoice";
|
|
244
|
-
InvoiceType[InvoiceType["FinalConstructionInvoice"] = 877] = "FinalConstructionInvoice";
|
|
245
|
-
})(InvoiceType || (InvoiceType = {}));
|
|
246
|
-
/** Describes a mime type of a document */
|
|
247
|
-
var AttachmentMimeType;
|
|
248
|
-
(function (AttachmentMimeType) {
|
|
249
|
-
AttachmentMimeType[AttachmentMimeType["Unknown"] = 0] = "Unknown";
|
|
250
|
-
AttachmentMimeType[AttachmentMimeType["Pdf"] = 1] = "Pdf";
|
|
251
|
-
AttachmentMimeType[AttachmentMimeType["Png"] = 2] = "Png";
|
|
252
|
-
AttachmentMimeType[AttachmentMimeType["Jpeg"] = 3] = "Jpeg";
|
|
253
|
-
AttachmentMimeType[AttachmentMimeType["Csv"] = 4] = "Csv";
|
|
254
|
-
AttachmentMimeType[AttachmentMimeType["Excel"] = 5] = "Excel";
|
|
255
|
-
AttachmentMimeType[AttachmentMimeType["OpenOfficeSpreadsheet"] = 6] = "OpenOfficeSpreadsheet";
|
|
256
|
-
})(AttachmentMimeType || (AttachmentMimeType = {}));
|
|
257
|
-
/** The category used in a VatBreakdown"/> */
|
|
258
|
-
var VatCategory;
|
|
259
|
-
(function (VatCategory) {
|
|
260
|
-
VatCategory[VatCategory["Unknown"] = 0] = "Unknown";
|
|
261
|
-
VatCategory[VatCategory["StandardRate"] = 1] = "StandardRate";
|
|
262
|
-
VatCategory[VatCategory["ZeroRatedGoods"] = 2] = "ZeroRatedGoods";
|
|
263
|
-
VatCategory[VatCategory["ExemptFromTax"] = 3] = "ExemptFromTax";
|
|
264
|
-
VatCategory[VatCategory["VatReverseCharge"] = 4] = "VatReverseCharge";
|
|
265
|
-
VatCategory[VatCategory["VatExemptReverseCharge"] = 5] = "VatExemptReverseCharge";
|
|
266
|
-
VatCategory[VatCategory["FreeExportItem"] = 6] = "FreeExportItem";
|
|
267
|
-
VatCategory[VatCategory["ServicesOutsideScopeOfTaxation"] = 7] = "ServicesOutsideScopeOfTaxation";
|
|
268
|
-
VatCategory[VatCategory["CanaryIslandsGeneralIndirectTax"] = 8] = "CanaryIslandsGeneralIndirectTax";
|
|
269
|
-
VatCategory[VatCategory["TaxInCeutaAndMelilla"] = 9] = "TaxInCeutaAndMelilla";
|
|
270
|
-
})(VatCategory || (VatCategory = {}));
|
|
271
|
-
/** This enum represents the source of an invoice, e.g. from which format it was imported */
|
|
272
|
-
var SourceType;
|
|
273
|
-
(function (SourceType) {
|
|
274
|
-
SourceType[SourceType["Self"] = 0] = "Self";
|
|
275
|
-
SourceType[SourceType["Ubl"] = 1] = "Ubl";
|
|
276
|
-
SourceType[SourceType["Cii"] = 2] = "Cii";
|
|
277
|
-
})(SourceType || (SourceType = {}));
|
|
278
|
-
|
|
279
234
|
var ModeViewType;
|
|
280
235
|
(function (ModeViewType) {
|
|
281
236
|
ModeViewType["Tree"] = "Tree";
|
|
@@ -285,12 +240,12 @@ var ModeViewType;
|
|
|
285
240
|
|
|
286
241
|
// This file is automatically generated as part of the build process
|
|
287
242
|
const version = {
|
|
288
|
-
version: "1.1.2-
|
|
289
|
-
commitInfo: "Branch.develop.Sha.
|
|
290
|
-
commitDate: "
|
|
291
|
-
commitHash: "
|
|
292
|
-
informationalVersion: "1.1.2-beta.
|
|
293
|
-
buildDateUtc: new Date(Date.UTC(
|
|
243
|
+
version: "1.1.2-beta0125",
|
|
244
|
+
commitInfo: "Branch.develop.Sha.365c7228809bc400dfed8790f6137f898193e111",
|
|
245
|
+
commitDate: "2025-01-03",
|
|
246
|
+
commitHash: "365c7228809bc400dfed8790f6137f898193e111",
|
|
247
|
+
informationalVersion: "1.1.2-beta.125+Branch.develop.Sha.365c7228809bc400dfed8790f6137f898193e111",
|
|
248
|
+
buildDateUtc: new Date(Date.UTC(2025, 0, 3, 13, 15, 38))
|
|
294
249
|
};
|
|
295
250
|
|
|
296
251
|
const DEFAULT_FILTERS = [
|
|
@@ -316,125 +271,6 @@ const DEFAULT_FILTERS = [
|
|
|
316
271
|
}
|
|
317
272
|
];
|
|
318
273
|
|
|
319
|
-
const DEFAULT_TEXT_WORD_INVOICE = {
|
|
320
|
-
invoiceTitle: 'Invoice',
|
|
321
|
-
invoiceBuyerTitle: 'Receiver',
|
|
322
|
-
invoiceSellerTitle: 'Sender',
|
|
323
|
-
vatId: 'VAT ID',
|
|
324
|
-
detailsInvoiceNumber: 'Invoice Number',
|
|
325
|
-
detailsInvoiceDate: 'Invoice Date',
|
|
326
|
-
detailsPaymentDueDate: 'Due Date',
|
|
327
|
-
detailsCurrencyCode: 'Currency',
|
|
328
|
-
detailsPaymentTerms: 'Payment Terms',
|
|
329
|
-
referencesTopic: 'References',
|
|
330
|
-
referencesBuyerReference: 'Buyer Reference',
|
|
331
|
-
referencesProjectReference: 'Project Reference',
|
|
332
|
-
referencesContractReference: 'Contract Reference',
|
|
333
|
-
referencesPurchaseOrderReference: 'Purchase Order Reference',
|
|
334
|
-
referencesSalesOrderReference: 'Sales Order Reference',
|
|
335
|
-
referencesReceivingAdviceReference: 'Receiving Advice Reference',
|
|
336
|
-
referencesDispatchAdviceReference: 'Dispatch Advice Reference',
|
|
337
|
-
referencesTenderOrLotReference: 'Tender or Lot Reference',
|
|
338
|
-
referencesInvoicedObjectIdentifier: 'Invoiced Object Identifier',
|
|
339
|
-
tableHeadDescription: 'Description',
|
|
340
|
-
tableHeadQuantity: 'Quantity',
|
|
341
|
-
tableHeadUnit: 'Unit',
|
|
342
|
-
tableHeadNetPrice: 'Net Price',
|
|
343
|
-
tableHeadNetAmount: 'Net Amount',
|
|
344
|
-
totalsTopic: 'Totals',
|
|
345
|
-
totalsTotalNet: 'Total Net',
|
|
346
|
-
totalsTotalAllowances: 'Total Allowances',
|
|
347
|
-
totalsTotalCharges: 'Total Charges',
|
|
348
|
-
totalsTotalAfterDeductions: 'Total After Deductions',
|
|
349
|
-
totalsTotalVatAmount: 'Total VAT Amount',
|
|
350
|
-
totalsTotalGross: 'Total Gross',
|
|
351
|
-
totalsAlreadyPaidTotal: 'Already Paid Total',
|
|
352
|
-
totalsTotalToBePaid: 'Total to be Paid',
|
|
353
|
-
instructionsTopic: 'Payment Instructions',
|
|
354
|
-
instructionsAccountIdentifier: 'Account Identifier',
|
|
355
|
-
instructionsAccountName: 'Account Name',
|
|
356
|
-
instructionsServiceProviderIdentifier: 'Service Provider Identifier',
|
|
357
|
-
notesTopic: 'Notes',
|
|
358
|
-
attachmentsHeading: 'Attachments',
|
|
359
|
-
attachmentsName: 'Name',
|
|
360
|
-
attachmentsDescription: 'Description',
|
|
361
|
-
attachmentsUrl: 'Url',
|
|
362
|
-
attachmentsDataSize: 'Size',
|
|
363
|
-
attachmentsMimeType: 'Mime Type',
|
|
364
|
-
attachmentsFileName: 'File Name',
|
|
365
|
-
attachmentsDownloadButton: 'Download',
|
|
366
|
-
contactPersonName: 'Contact Person Name',
|
|
367
|
-
contactPersonEmail: 'Contact Person Email',
|
|
368
|
-
contactPersonPhone: 'Contact Person Phone',
|
|
369
|
-
vat: 'VAT',
|
|
370
|
-
taxRate: 'Tax Rate',
|
|
371
|
-
deliveryInformationTitle: 'Delivery Information',
|
|
372
|
-
deliverToName: 'Name',
|
|
373
|
-
deliverToLocationIdentifier: 'Location Identifier',
|
|
374
|
-
deliveryDate: 'Date',
|
|
375
|
-
deliveryAddress: 'Address',
|
|
376
|
-
taxesHeading: 'Taxes'
|
|
377
|
-
};
|
|
378
|
-
const germanTextsInvoice = {
|
|
379
|
-
invoiceTitle: 'Rechnung',
|
|
380
|
-
invoiceBuyerTitle: 'Empfänger',
|
|
381
|
-
invoiceSellerTitle: 'Rechnungssteller',
|
|
382
|
-
vatId: 'USt.-ID',
|
|
383
|
-
detailsInvoiceNumber: 'Rechnungsnummer',
|
|
384
|
-
detailsInvoiceDate: 'Rechnungsdatum',
|
|
385
|
-
detailsPaymentDueDate: 'Fälligkeitsdatum',
|
|
386
|
-
detailsCurrencyCode: 'Währung',
|
|
387
|
-
detailsPaymentTerms: 'Zahlungsbedingungen',
|
|
388
|
-
referencesTopic: 'Referenzen',
|
|
389
|
-
referencesBuyerReference: 'Käuferreferenz',
|
|
390
|
-
referencesProjectReference: 'Projektreferenz',
|
|
391
|
-
referencesContractReference: 'Vertragsreferenz',
|
|
392
|
-
referencesPurchaseOrderReference: 'Bestellreferenz',
|
|
393
|
-
referencesSalesOrderReference: 'Auftragsreferenz',
|
|
394
|
-
referencesReceivingAdviceReference: 'Empfangsbestätigungsreferenz',
|
|
395
|
-
referencesDispatchAdviceReference: 'Lieferreferenz',
|
|
396
|
-
referencesTenderOrLotReference: 'Ausschreibungs- oder Losreferenz',
|
|
397
|
-
referencesInvoicedObjectIdentifier: 'Objektreferenz',
|
|
398
|
-
tableHeadDescription: 'Beschreibung',
|
|
399
|
-
tableHeadQuantity: 'Menge',
|
|
400
|
-
tableHeadUnit: 'Einheit',
|
|
401
|
-
tableHeadNetPrice: 'Nettopreis',
|
|
402
|
-
tableHeadNetAmount: 'Nettomenge',
|
|
403
|
-
totalsTopic: 'Gesamt',
|
|
404
|
-
totalsTotalNet: 'Gesamt Netto',
|
|
405
|
-
totalsTotalAllowances: 'Gesamt Rabatt',
|
|
406
|
-
totalsTotalCharges: 'Gesamt Zuschlag',
|
|
407
|
-
totalsTotalAfterDeductions: 'Summe nach Rabatten',
|
|
408
|
-
totalsTotalVatAmount: 'Summe Umsatzsteuer',
|
|
409
|
-
totalsTotalGross: 'Gesamt Brutto',
|
|
410
|
-
totalsAlreadyPaidTotal: 'Bereits bezahlt',
|
|
411
|
-
totalsTotalToBePaid: 'Gesamt zu zahlen',
|
|
412
|
-
instructionsTopic: 'Zahlungsanweisungen',
|
|
413
|
-
instructionsAccountIdentifier: 'Kontonummer',
|
|
414
|
-
instructionsAccountName: 'Kontoname',
|
|
415
|
-
instructionsServiceProviderIdentifier: 'Bank',
|
|
416
|
-
notesTopic: 'Hinweise',
|
|
417
|
-
attachmentsHeading: 'Anhänge',
|
|
418
|
-
attachmentsName: 'Name',
|
|
419
|
-
attachmentsDescription: 'Beschreibung',
|
|
420
|
-
attachmentsUrl: 'Url',
|
|
421
|
-
attachmentsDataSize: 'Größe',
|
|
422
|
-
attachmentsMimeType: 'Typ',
|
|
423
|
-
attachmentsFileName: 'Dateiname',
|
|
424
|
-
attachmentsDownloadButton: 'Download',
|
|
425
|
-
contactPersonName: 'Name der Kontaktperson',
|
|
426
|
-
contactPersonEmail: 'E-Mail der Kontaktperson',
|
|
427
|
-
contactPersonPhone: 'Kontaktperson Telefon',
|
|
428
|
-
vat: 'MwSt.',
|
|
429
|
-
taxRate: 'Steuersatz',
|
|
430
|
-
deliveryInformationTitle: 'Lieferinformationen',
|
|
431
|
-
deliverToName: 'Liefername',
|
|
432
|
-
deliverToLocationIdentifier: 'Lieferort',
|
|
433
|
-
deliveryDate: 'Lieferdatum',
|
|
434
|
-
deliveryAddress: 'Lieferadresse',
|
|
435
|
-
taxesHeading: 'Steuer'
|
|
436
|
-
};
|
|
437
|
-
|
|
438
274
|
const DEFAULT_TEXT_WORDS = {
|
|
439
275
|
textSearch: 'Search',
|
|
440
276
|
textNothing: 'Nothing',
|
|
@@ -992,14 +828,14 @@ class SaveChangingViewDirective {
|
|
|
992
828
|
this.el = el;
|
|
993
829
|
this.renderer = renderer;
|
|
994
830
|
this.flatElementsService = flatElementsService;
|
|
995
|
-
this.
|
|
831
|
+
this.saveChangingView = 'text';
|
|
996
832
|
}
|
|
997
833
|
ngAfterViewInit() {
|
|
998
834
|
const el = this.el?.nativeElement;
|
|
999
835
|
const id = el?.id;
|
|
1000
836
|
if (id) {
|
|
1001
837
|
const view = this.flatElementsService?.getChangedView(id);
|
|
1002
|
-
switch (this.
|
|
838
|
+
switch (this.saveChangingView) {
|
|
1003
839
|
case 'icon':
|
|
1004
840
|
if (view?.iconName) {
|
|
1005
841
|
el.textContent = view.iconName;
|
|
@@ -1020,14 +856,14 @@ class SaveChangingViewDirective {
|
|
|
1020
856
|
}
|
|
1021
857
|
}
|
|
1022
858
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: SaveChangingViewDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: FlatElementsService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1023
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.1", type: SaveChangingViewDirective, isStandalone: true, selector: "[saveChangingView]", inputs: {
|
|
859
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.1", type: SaveChangingViewDirective, isStandalone: true, selector: "[saveChangingView]", inputs: { saveChangingView: "saveChangingView" }, ngImport: i0 }); }
|
|
1024
860
|
}
|
|
1025
861
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: SaveChangingViewDirective, decorators: [{
|
|
1026
862
|
type: Directive,
|
|
1027
863
|
args: [{
|
|
1028
864
|
selector: '[saveChangingView]'
|
|
1029
865
|
}]
|
|
1030
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: FlatElementsService }], propDecorators: {
|
|
866
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: FlatElementsService }], propDecorators: { saveChangingView: [{
|
|
1031
867
|
type: Input
|
|
1032
868
|
}] } });
|
|
1033
869
|
|
|
@@ -1184,7 +1020,7 @@ class TreeItemComponent {
|
|
|
1184
1020
|
this.treeNodeSelectionService.changeSelecting(isSelected, element.id);
|
|
1185
1021
|
}
|
|
1186
1022
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TreeItemComponent, deps: [{ token: SelectElementService }, { token: TreeNodeSelectionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1187
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: TreeItemComponent, isStandalone: true, selector: "ava-tree-item", inputs: { element: "element", expansionState: "expansionState", isSelectionMode: "isSelectionMode", allowDblClick: "allowDblClick" }, ngImport: i0, template: "@if (element) {\n <div\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element.id\"\n >\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [
|
|
1023
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: TreeItemComponent, isStandalone: true, selector: "ava-tree-item", inputs: { element: "element", expansionState: "expansionState", isSelectionMode: "isSelectionMode", allowDblClick: "allowDblClick" }, ngImport: i0, template: "@if (element) {\n <div\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element.id\"\n >\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [id]=\"element.id\"\n >{{ element | elementIconName }}</mat-icon\n >\n @if (!isSelectionMode) {\n <div\n class=\"ava-tree-item__text\"\n [class.choose]=\"!isSelectionMode && element.id === preselectedElement?.id\"\n [id]=\"element.id\"\n saveChangingView=\"text\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n }\n @if (isSelectionMode) {\n <mat-checkbox\n class=\"ava-tree-item__checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <div\n class=\"ava-tree-item__text\"\n saveChangingView=\"text\"\n [id]=\"element.id\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n </mat-checkbox>\n }\n </div>\n}\n\n<ng-template #text>\n @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' || element.elementTypeDiscriminator === 'PositionDto') {\n <ng-container> {{ element | elementItemNumber }} - {{ element | elementText }} </ng-container>\n } @else {\n <ng-container>{{ element | elementText }}</ng-container>\n }\n</ng-template>\n", styles: ["::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}::ng-deep .ava-tree-item__checkbox .mat-mdc-checkbox-touch-target{width:16px!important;height:16px!important}.ava-tree-item{display:flex;align-items:center}.ava-tree-item__icon,.ava-tree-item__checkbox{flex-shrink:0}.ava-tree-item__text{flex-grow:1;-webkit-user-select:none;user-select:none;white-space:nowrap;display:flex;align-items:center;min-height:24px}.ava-tree-item__text.choose{color:red!important}\n"], dependencies: [{ kind: "directive", type: SaveChangingViewDirective, selector: "[saveChangingView]", inputs: ["saveChangingView"] }, { kind: "pipe", type: ElementItemNumberPipe, name: "elementItemNumber" }, { kind: "pipe", type: ElementTextPipe, name: "elementText" }, { kind: "pipe", type: ElementIconNamePipe, name: "elementIconName" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
1188
1024
|
}
|
|
1189
1025
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TreeItemComponent, decorators: [{
|
|
1190
1026
|
type: Component,
|
|
@@ -1197,7 +1033,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
|
|
|
1197
1033
|
MatCheckboxModule,
|
|
1198
1034
|
FormsModule,
|
|
1199
1035
|
MatIconModule
|
|
1200
|
-
], template: "@if (element) {\n <div\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element.id\"\n >\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [
|
|
1036
|
+
], template: "@if (element) {\n <div\n (click)=\"select()\"\n (dblclick)=\"dblSelect()\"\n (contextmenu)=\"openContextMenu($event)\"\n class=\"ava-tree-item\"\n [id]=\"element.id\"\n >\n <mat-icon\n class=\"ava-tree-item__icon\"\n saveChangingView=\"icon\"\n [id]=\"element.id\"\n >{{ element | elementIconName }}</mat-icon\n >\n @if (!isSelectionMode) {\n <div\n class=\"ava-tree-item__text\"\n [class.choose]=\"!isSelectionMode && element.id === preselectedElement?.id\"\n [id]=\"element.id\"\n saveChangingView=\"text\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n }\n @if (isSelectionMode) {\n <mat-checkbox\n class=\"ava-tree-item__checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n <div\n class=\"ava-tree-item__text\"\n saveChangingView=\"text\"\n [id]=\"element.id\"\n >\n <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n </div>\n </mat-checkbox>\n }\n </div>\n}\n\n<ng-template #text>\n @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' || element.elementTypeDiscriminator === 'PositionDto') {\n <ng-container> {{ element | elementItemNumber }} - {{ element | elementText }} </ng-container>\n } @else {\n <ng-container>{{ element | elementText }}</ng-container>\n }\n</ng-template>\n", styles: ["::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .ava-tree-item__checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .ava-tree-item__checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}::ng-deep .ava-tree-item__checkbox .mat-mdc-checkbox-touch-target{width:16px!important;height:16px!important}.ava-tree-item{display:flex;align-items:center}.ava-tree-item__icon,.ava-tree-item__checkbox{flex-shrink:0}.ava-tree-item__text{flex-grow:1;-webkit-user-select:none;user-select:none;white-space:nowrap;display:flex;align-items:center;min-height:24px}.ava-tree-item__text.choose{color:red!important}\n"] }]
|
|
1201
1037
|
}], ctorParameters: () => [{ type: SelectElementService }, { type: TreeNodeSelectionService }, { type: i0.ChangeDetectorRef }], propDecorators: { element: [{
|
|
1202
1038
|
type: Input
|
|
1203
1039
|
}], expansionState: [{
|
|
@@ -1361,7 +1197,7 @@ class TableStructureComponent {
|
|
|
1361
1197
|
this.treeNodeSelectionService.changeSelecting(event, element.id);
|
|
1362
1198
|
}
|
|
1363
1199
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TableStructureComponent, deps: [{ token: SelectElementService }, { token: TreeNodeSelectionService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1364
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: TableStructureComponent, isStandalone: true, selector: "ava-table-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", addTableColumns: "addTableColumns", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<table\n mat-table\n [dataSource]=\"filteredElementList\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n @if (checkedElements[element.id]) {\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText }}\n </div>\n </td>\n </ng-container>\n @for (oneColumn of addTableColumns; track oneColumn) {\n <ng-container>\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ !oneColumn.numberFormat ? row[oneColumn.name] : (row[oneColumn.name] | number: oneColumn.numberFormat) }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id,\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? selectedColor || '' : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n", styles: ["table{width:100%}table tr.mat-mdc-row,table tr.mat-mdc-header-row{height:24px}table tr input{box-sizing:border-box;padding:0 3px;outline:none;border:none;height:20px;width:calc(100% - 2px)}table tr input:focus{background:#fff!important}table tr .right{text-align:right}table tr td,table tr th{border-right:1px solid #777;border-bottom:1px solid #777;padding:0}table tr td:first-child,table tr th:first-child{border-left:1px solid #777}table tr td.min-width,table tr th.min-width{width:12ch;min-width:12ch}table tr td div,table tr th div{padding:0 3px}table tr th{border-top:1px solid #777;padding:0 3px}.table-text{overflow-x:hidden;position:relative}.table-text div{position:absolute;top:50%;left:0;white-space:nowrap;transform:translateY(-50%)}.select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}.choose div{color:red!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}.text-element{-webkit-user-select:none;user-select:none}.table-cell-small-width{width:24px;min-width:24px;position:relative;text-align:center}.table-cell-small-width .icon-element{position:absolute;top:0;left:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: ElementTextPipe, name: "elementText" }, { kind: "pipe", type: ElementItemNumberPipe, name: "elementItemNumber" }, { kind: "pipe", type: ElementIconNamePipe, name: "elementIconName" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
1200
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: TableStructureComponent, isStandalone: true, selector: "ava-table-structure", inputs: { filteredElementList: "filteredElementList", isSelectionMode: "isSelectionMode", addTableColumns: "addTableColumns", selectedColor: "selectedColor", allowDblClick: "allowDblClick" }, ngImport: i0, template: "<table\n mat-table\n [dataSource]=\"filteredElementList\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n @if (checkedElements[element.id]) {\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText }}\n </div>\n </td>\n </ng-container>\n @for (oneColumn of addTableColumns; track oneColumn) {\n <ng-container>\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ !oneColumn.numberFormat ? row[oneColumn.name] : (row[oneColumn.name] | number: oneColumn.numberFormat) }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id,\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? selectedColor || '' : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n", styles: ["table{width:100%}table tr.mat-mdc-row,table tr.mat-mdc-header-row{height:24px}table tr input{box-sizing:border-box;padding:0 3px;outline:none;border:none;height:20px;width:calc(100% - 2px)}table tr input:focus{background:#fff!important}table tr .right{text-align:right}table tr td,table tr th{border-right:1px solid #777;border-bottom:1px solid #777;padding:0}table tr td:first-child,table tr th:first-child{border-left:1px solid #777}table tr td.min-width,table tr th.min-width{width:12ch;min-width:12ch}table tr td div,table tr th div{padding:0 3px}table tr th{border-top:1px solid #777;padding:0 3px}.table-text{overflow-x:hidden;position:relative}.table-text div{position:absolute;top:50%;left:0;white-space:nowrap;transform:translateY(-50%)}.select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}.choose div{color:red!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}.text-element{-webkit-user-select:none;user-select:none}.table-cell-small-width{width:24px;min-width:24px;position:relative;text-align:center}.table-cell-small-width .icon-element{position:absolute;top:0;left:0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: ElementTextPipe, name: "elementText" }, { kind: "pipe", type: ElementItemNumberPipe, name: "elementItemNumber" }, { kind: "pipe", type: ElementIconNamePipe, name: "elementIconName" }, { kind: "pipe", type: DecimalPipe, name: "number" }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: SaveChangingViewDirective, selector: "[saveChangingView]", inputs: ["saveChangingView"] }] }); }
|
|
1365
1201
|
}
|
|
1366
1202
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: TableStructureComponent, decorators: [{
|
|
1367
1203
|
type: Component,
|
|
@@ -1374,7 +1210,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
|
|
|
1374
1210
|
MatTableModule,
|
|
1375
1211
|
MatIconModule,
|
|
1376
1212
|
MatCheckboxModule,
|
|
1377
|
-
FormsModule
|
|
1213
|
+
FormsModule,
|
|
1214
|
+
SaveChangingViewDirective
|
|
1378
1215
|
], template: "<table\n mat-table\n [dataSource]=\"filteredElementList\"\n>\n <ng-container matColumnDef=\"icon\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-cell-small-width\"\n >\n <mat-icon\n class=\"icon-element\"\n saveChangingView=\"icon\"\n [id]=\"row.id\"\n >\n {{ row | elementIconName }}\n </mat-icon>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"checkbox\">\n <th\n mat-header-cell\n *matHeaderCellDef\n ></th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"table-cell-small-width\"\n >\n @if (checkedElements[element.id]) {\n <mat-checkbox\n class=\"checkbox\"\n color=\"primary\"\n [indeterminate]=\"checkedElements[element.id].indeterminate\"\n [(ngModel)]=\"checkedElements[element.id].checked\"\n (ngModelChange)=\"changeSelecting(element, $event)\"\n (click)=\"$event.stopPropagation()\"\n >\n </mat-checkbox>\n }\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"itemNumber\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n OZ\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementItemNumber }}\n </div>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"text\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n Text\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"table-text\"\n >\n <div\n class=\"text-element\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ row | elementText }}\n </div>\n </td>\n </ng-container>\n @for (oneColumn of addTableColumns; track oneColumn) {\n <ng-container>\n <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n <th\n mat-header-cell\n *matHeaderCellDef\n >\n {{ oneColumn.title }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let row\"\n >\n <div\n [style.textAlign]=\"oneColumn.align\"\n saveChangingView=\"text\"\n [id]=\"row.id\"\n >\n {{ !oneColumn.numberFormat ? row[oneColumn.name] : (row[oneColumn.name] | number: oneColumn.numberFormat) }}\n </div>\n </td>\n </ng-container>\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"displayedColumns; sticky: true\"\n class=\"mat-header-row\"\n ></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n (click)=\"select(row)\"\n (dblclick)=\"dblSelect(row)\"\n (contextmenu)=\"openContextMenu($event, row)\"\n [ngClass]=\"{\n choose: !isSelectionMode && row.id === preselectedElement?.id,\n select: !isSelectionMode && row.id === selectedElement?.id,\n }\"\n [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? selectedColor || '' : ''\"\n [id]=\"row.id\"\n ></tr>\n</table>\n", styles: ["table{width:100%}table tr.mat-mdc-row,table tr.mat-mdc-header-row{height:24px}table tr input{box-sizing:border-box;padding:0 3px;outline:none;border:none;height:20px;width:calc(100% - 2px)}table tr input:focus{background:#fff!important}table tr .right{text-align:right}table tr td,table tr th{border-right:1px solid #777;border-bottom:1px solid #777;padding:0}table tr td:first-child,table tr th:first-child{border-left:1px solid #777}table tr td.min-width,table tr th.min-width{width:12ch;min-width:12ch}table tr td div,table tr th div{padding:0 3px}table tr th{border-top:1px solid #777;padding:0 3px}.table-text{overflow-x:hidden;position:relative}.table-text div{position:absolute;top:50%;left:0;white-space:nowrap;transform:translateY(-50%)}.select{background:var(--mdc-filled-text-field-caret-color);color:#fff}.select *{color:#fff}.choose div{color:red!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox{padding:0;flex:0 0 16px;width:16px;height:16px}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control{width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__native-control:focus~.mdc-checkbox__ripple{opacity:0!important}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background{top:0;left:0;width:100%;height:100%}::ng-deep .checkbox .mdc-form-field .mdc-checkbox .mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:#fff!important}::ng-deep .checkbox .mdc-form-field>label{line-height:24px;padding-left:8px;-webkit-user-select:none;user-select:none}.text-element{-webkit-user-select:none;user-select:none}.table-cell-small-width{width:24px;min-width:24px;position:relative;text-align:center}.table-cell-small-width .icon-element{position:absolute;top:0;left:0}\n"] }]
|
|
1379
1216
|
}], ctorParameters: () => [{ type: SelectElementService }, { type: TreeNodeSelectionService }, { type: i0.ChangeDetectorRef }], propDecorators: { filteredElementList: [{
|
|
1380
1217
|
type: Input
|
|
@@ -1600,6 +1437,57 @@ class AvaTreeComponent {
|
|
|
1600
1437
|
set customKeyboardOperationConfig(config) {
|
|
1601
1438
|
this.keyboardOperationService.mergeConfigOperation(config);
|
|
1602
1439
|
}
|
|
1440
|
+
set config(configObject) {
|
|
1441
|
+
if (configObject?.expansionState) {
|
|
1442
|
+
this.expansionState = configObject.expansionState;
|
|
1443
|
+
}
|
|
1444
|
+
if (configObject?.selectedNodeId) {
|
|
1445
|
+
this.selectedNodeId = configObject.selectedNodeId;
|
|
1446
|
+
this.flatElementsService.getOneElementById(this.selectedNodeId).subscribe((e) => {
|
|
1447
|
+
if (e) {
|
|
1448
|
+
this.selectElementService.setClickElement(e);
|
|
1449
|
+
}
|
|
1450
|
+
});
|
|
1451
|
+
}
|
|
1452
|
+
if (configObject?.indent) {
|
|
1453
|
+
this.indent = configObject.indent;
|
|
1454
|
+
}
|
|
1455
|
+
if (configObject?.selectedColor) {
|
|
1456
|
+
this.selectedColor = configObject.selectedColor;
|
|
1457
|
+
}
|
|
1458
|
+
if (configObject?.modeView) {
|
|
1459
|
+
this.modeView = configObject.modeView;
|
|
1460
|
+
}
|
|
1461
|
+
if (configObject && 'allowDblClick' in configObject) {
|
|
1462
|
+
this.allowDblClick = !!configObject.allowDblClick;
|
|
1463
|
+
}
|
|
1464
|
+
if (configObject?.isSelectionMode) {
|
|
1465
|
+
this.isSelectionMode = configObject.isSelectionMode;
|
|
1466
|
+
if (configObject?.initiallySelectedElements) {
|
|
1467
|
+
this.initiallySelectedElements = configObject.initiallySelectedElements;
|
|
1468
|
+
this.formSelectingList();
|
|
1469
|
+
}
|
|
1470
|
+
}
|
|
1471
|
+
if (configObject?.textWords) {
|
|
1472
|
+
this.textWords = configObject.textWords;
|
|
1473
|
+
}
|
|
1474
|
+
if (configObject?.mouseAwareKeyboardControl) {
|
|
1475
|
+
this.mouseAwareKeyboardControl = configObject.mouseAwareKeyboardControl;
|
|
1476
|
+
}
|
|
1477
|
+
if (configObject?.customKeyboardOperationConfig) {
|
|
1478
|
+
this.customKeyboardOperationConfig = configObject.customKeyboardOperationConfig;
|
|
1479
|
+
}
|
|
1480
|
+
if (configObject?.listFilterFunc) {
|
|
1481
|
+
this.flatElementsService.listFilterFunc = configObject.listFilterFunc;
|
|
1482
|
+
}
|
|
1483
|
+
if (configObject?.addTableColumns) {
|
|
1484
|
+
this.addTableColumns = configObject.addTableColumns;
|
|
1485
|
+
}
|
|
1486
|
+
if (configObject?.functionView) {
|
|
1487
|
+
this.functionView = configObject.functionView;
|
|
1488
|
+
this.flatElementsService.functionView = this.functionView;
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1603
1491
|
constructor(flatElementsService, selectElementService, treeNodeSelectionService, expandParentGroupService, keyboardOperationService, ngZone, treeWordsService, dynamicComponentService, appRef) {
|
|
1604
1492
|
this.flatElementsService = flatElementsService;
|
|
1605
1493
|
this.selectElementService = selectElementService;
|
|
@@ -1666,7 +1554,6 @@ class AvaTreeComponent {
|
|
|
1666
1554
|
* You can supply custom filters that are processed when the filter input is changed. Default filters are used
|
|
1667
1555
|
* that check for short text and item number matches, and you can either add custom filters or replace the default ones.
|
|
1668
1556
|
*/
|
|
1669
|
-
this.listFilterFunc = DEFAULT_FILTERS;
|
|
1670
1557
|
/**
|
|
1671
1558
|
* Optional. For table views, this allows you to add custom columns to the table.
|
|
1672
1559
|
* addTableColumns: Array of objects
|
|
@@ -1753,8 +1640,6 @@ class AvaTreeComponent {
|
|
|
1753
1640
|
this.initializeEventListeners();
|
|
1754
1641
|
}
|
|
1755
1642
|
ngOnChanges(changes) {
|
|
1756
|
-
this.flatElementsService.listFilterFunc = this.listFilterFunc;
|
|
1757
|
-
this.flatElementsService.functionView = this.functionView;
|
|
1758
1643
|
if (changes['project'] && this.project?.serviceSpecifications?.[0]) {
|
|
1759
1644
|
this.serviceSpecification = this.project.serviceSpecifications[0];
|
|
1760
1645
|
this.flatElementsService.setElementsDto(this.serviceSpecification);
|
|
@@ -1770,14 +1655,14 @@ class AvaTreeComponent {
|
|
|
1770
1655
|
});
|
|
1771
1656
|
}
|
|
1772
1657
|
}
|
|
1773
|
-
if (
|
|
1658
|
+
if (changes['project'] && this.selectedNodeId) {
|
|
1774
1659
|
this.flatElementsService.getOneElementById(this.selectedNodeId).subscribe((e) => {
|
|
1775
1660
|
if (e) {
|
|
1776
1661
|
this.selectElementService.setClickElement(e);
|
|
1777
1662
|
}
|
|
1778
1663
|
});
|
|
1779
1664
|
}
|
|
1780
|
-
if (this.isSelectionMode &&
|
|
1665
|
+
if (changes['project'] && this.isSelectionMode && this.initiallySelectedElements) {
|
|
1781
1666
|
this.formSelectingList();
|
|
1782
1667
|
}
|
|
1783
1668
|
}
|
|
@@ -1894,6 +1779,7 @@ class AvaTreeComponent {
|
|
|
1894
1779
|
this.filteredElementList = this.flatElements.filter((item) => this.flatElementsService.checkFilterValue(item, this.filter));
|
|
1895
1780
|
}
|
|
1896
1781
|
}
|
|
1782
|
+
this.cdr.detectChanges();
|
|
1897
1783
|
}
|
|
1898
1784
|
initializeEventListeners() {
|
|
1899
1785
|
this.ngZone.runOutsideAngular(() => {
|
|
@@ -1918,7 +1804,7 @@ class AvaTreeComponent {
|
|
|
1918
1804
|
});
|
|
1919
1805
|
}
|
|
1920
1806
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: AvaTreeComponent, deps: [{ token: FlatElementsService, self: true }, { token: SelectElementService, self: true }, { token: TreeNodeSelectionService, self: true }, { token: ExpandParentGroupService, self: true }, { token: KeyboardOperationService, self: true }, { token: i0.NgZone }, { token: TreeWordsService }, { token: DynamicComponentService }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1921
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: AvaTreeComponent, isStandalone: true, selector: "ava-tree", inputs: { project: "project",
|
|
1807
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: AvaTreeComponent, isStandalone: true, selector: "ava-tree", inputs: { project: "project", config: "config" }, outputs: { selectClick: "selectClick", selectDblClick: "selectDblClick", contextMenuEvent: "contextMenuEvent", selectedElementsChanged: "selectedElementsChanged" }, providers: [
|
|
1922
1808
|
FlatElementsService,
|
|
1923
1809
|
SelectElementService,
|
|
1924
1810
|
TreeNodeSelectionService,
|
|
@@ -1961,33 +1847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
|
|
|
1961
1847
|
type: Self
|
|
1962
1848
|
}] }, { type: i0.NgZone }, { type: TreeWordsService }, { type: DynamicComponentService }, { type: i0.ApplicationRef }], propDecorators: { project: [{
|
|
1963
1849
|
type: Input
|
|
1964
|
-
}],
|
|
1965
|
-
type: Input
|
|
1966
|
-
}], selectedNodeId: [{
|
|
1967
|
-
type: Input
|
|
1968
|
-
}], indent: [{
|
|
1969
|
-
type: Input
|
|
1970
|
-
}], selectedColor: [{
|
|
1971
|
-
type: Input
|
|
1972
|
-
}], modeView: [{
|
|
1973
|
-
type: Input
|
|
1974
|
-
}], allowDblClick: [{
|
|
1975
|
-
type: Input
|
|
1976
|
-
}], isSelectionMode: [{
|
|
1977
|
-
type: Input
|
|
1978
|
-
}], initiallySelectedElements: [{
|
|
1979
|
-
type: Input
|
|
1980
|
-
}], textWords: [{
|
|
1981
|
-
type: Input
|
|
1982
|
-
}], mouseAwareKeyboardControl: [{
|
|
1983
|
-
type: Input
|
|
1984
|
-
}], customKeyboardOperationConfig: [{
|
|
1985
|
-
type: Input
|
|
1986
|
-
}], listFilterFunc: [{
|
|
1987
|
-
type: Input
|
|
1988
|
-
}], addTableColumns: [{
|
|
1989
|
-
type: Input
|
|
1990
|
-
}], functionView: [{
|
|
1850
|
+
}], config: [{
|
|
1991
1851
|
type: Input
|
|
1992
1852
|
}], selectClick: [{
|
|
1993
1853
|
type: Output
|
|
@@ -2008,6 +1868,170 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImpor
|
|
|
2008
1868
|
args: ['avaTreeFilterInput']
|
|
2009
1869
|
}] } });
|
|
2010
1870
|
|
|
1871
|
+
const DEFAULT_TEXT_WORD_INVOICE = {
|
|
1872
|
+
invoiceTitle: 'Invoice',
|
|
1873
|
+
invoiceBuyerTitle: 'Receiver',
|
|
1874
|
+
invoiceSellerTitle: 'Sender',
|
|
1875
|
+
vatId: 'VAT ID',
|
|
1876
|
+
detailsInvoiceNumber: 'Invoice Number',
|
|
1877
|
+
detailsInvoiceDate: 'Invoice Date',
|
|
1878
|
+
detailsPaymentDueDate: 'Due Date',
|
|
1879
|
+
detailsCurrencyCode: 'Currency',
|
|
1880
|
+
detailsPaymentTerms: 'Payment Terms',
|
|
1881
|
+
referencesTopic: 'References',
|
|
1882
|
+
referencesBuyerReference: 'Buyer Reference',
|
|
1883
|
+
referencesProjectReference: 'Project Reference',
|
|
1884
|
+
referencesContractReference: 'Contract Reference',
|
|
1885
|
+
referencesPurchaseOrderReference: 'Purchase Order Reference',
|
|
1886
|
+
referencesSalesOrderReference: 'Sales Order Reference',
|
|
1887
|
+
referencesReceivingAdviceReference: 'Receiving Advice Reference',
|
|
1888
|
+
referencesDispatchAdviceReference: 'Dispatch Advice Reference',
|
|
1889
|
+
referencesTenderOrLotReference: 'Tender or Lot Reference',
|
|
1890
|
+
referencesInvoicedObjectIdentifier: 'Invoiced Object Identifier',
|
|
1891
|
+
tableHeadDescription: 'Description',
|
|
1892
|
+
tableHeadQuantity: 'Quantity',
|
|
1893
|
+
tableHeadUnit: 'Unit',
|
|
1894
|
+
tableHeadNetPrice: 'Net Price',
|
|
1895
|
+
tableHeadNetAmount: 'Net Amount',
|
|
1896
|
+
totalsTopic: 'Totals',
|
|
1897
|
+
totalsTotalNet: 'Total Net',
|
|
1898
|
+
totalsTotalAllowances: 'Total Allowances',
|
|
1899
|
+
totalsTotalCharges: 'Total Charges',
|
|
1900
|
+
totalsTotalAfterDeductions: 'Total After Deductions',
|
|
1901
|
+
totalsTotalVatAmount: 'Total VAT Amount',
|
|
1902
|
+
totalsTotalGross: 'Total Gross',
|
|
1903
|
+
totalsAlreadyPaidTotal: 'Already Paid Total',
|
|
1904
|
+
totalsTotalToBePaid: 'Total to be Paid',
|
|
1905
|
+
instructionsTopic: 'Payment Instructions',
|
|
1906
|
+
instructionsAccountIdentifier: 'Account Identifier',
|
|
1907
|
+
instructionsAccountName: 'Account Name',
|
|
1908
|
+
instructionsServiceProviderIdentifier: 'Service Provider Identifier',
|
|
1909
|
+
notesTopic: 'Notes',
|
|
1910
|
+
attachmentsHeading: 'Attachments',
|
|
1911
|
+
attachmentsName: 'Name',
|
|
1912
|
+
attachmentsDescription: 'Description',
|
|
1913
|
+
attachmentsUrl: 'Url',
|
|
1914
|
+
attachmentsDataSize: 'Size',
|
|
1915
|
+
attachmentsMimeType: 'Mime Type',
|
|
1916
|
+
attachmentsFileName: 'File Name',
|
|
1917
|
+
attachmentsDownloadButton: 'Download',
|
|
1918
|
+
contactPersonName: 'Contact Person Name',
|
|
1919
|
+
contactPersonEmail: 'Contact Person Email',
|
|
1920
|
+
contactPersonPhone: 'Contact Person Phone',
|
|
1921
|
+
vat: 'VAT',
|
|
1922
|
+
taxRate: 'Tax Rate',
|
|
1923
|
+
deliveryInformationTitle: 'Delivery Information',
|
|
1924
|
+
deliverToName: 'Name',
|
|
1925
|
+
deliverToLocationIdentifier: 'Location Identifier',
|
|
1926
|
+
deliveryDate: 'Date',
|
|
1927
|
+
deliveryAddress: 'Address',
|
|
1928
|
+
taxesHeading: 'Taxes'
|
|
1929
|
+
};
|
|
1930
|
+
const germanTextsInvoice = {
|
|
1931
|
+
invoiceTitle: 'Rechnung',
|
|
1932
|
+
invoiceBuyerTitle: 'Empfänger',
|
|
1933
|
+
invoiceSellerTitle: 'Rechnungssteller',
|
|
1934
|
+
vatId: 'USt.-ID',
|
|
1935
|
+
detailsInvoiceNumber: 'Rechnungsnummer',
|
|
1936
|
+
detailsInvoiceDate: 'Rechnungsdatum',
|
|
1937
|
+
detailsPaymentDueDate: 'Fälligkeitsdatum',
|
|
1938
|
+
detailsCurrencyCode: 'Währung',
|
|
1939
|
+
detailsPaymentTerms: 'Zahlungsbedingungen',
|
|
1940
|
+
referencesTopic: 'Referenzen',
|
|
1941
|
+
referencesBuyerReference: 'Käuferreferenz',
|
|
1942
|
+
referencesProjectReference: 'Projektreferenz',
|
|
1943
|
+
referencesContractReference: 'Vertragsreferenz',
|
|
1944
|
+
referencesPurchaseOrderReference: 'Bestellreferenz',
|
|
1945
|
+
referencesSalesOrderReference: 'Auftragsreferenz',
|
|
1946
|
+
referencesReceivingAdviceReference: 'Empfangsbestätigungsreferenz',
|
|
1947
|
+
referencesDispatchAdviceReference: 'Lieferreferenz',
|
|
1948
|
+
referencesTenderOrLotReference: 'Ausschreibungs- oder Losreferenz',
|
|
1949
|
+
referencesInvoicedObjectIdentifier: 'Objektreferenz',
|
|
1950
|
+
tableHeadDescription: 'Beschreibung',
|
|
1951
|
+
tableHeadQuantity: 'Menge',
|
|
1952
|
+
tableHeadUnit: 'Einheit',
|
|
1953
|
+
tableHeadNetPrice: 'Nettopreis',
|
|
1954
|
+
tableHeadNetAmount: 'Nettomenge',
|
|
1955
|
+
totalsTopic: 'Gesamt',
|
|
1956
|
+
totalsTotalNet: 'Gesamt Netto',
|
|
1957
|
+
totalsTotalAllowances: 'Gesamt Rabatt',
|
|
1958
|
+
totalsTotalCharges: 'Gesamt Zuschlag',
|
|
1959
|
+
totalsTotalAfterDeductions: 'Summe nach Rabatten',
|
|
1960
|
+
totalsTotalVatAmount: 'Summe Umsatzsteuer',
|
|
1961
|
+
totalsTotalGross: 'Gesamt Brutto',
|
|
1962
|
+
totalsAlreadyPaidTotal: 'Bereits bezahlt',
|
|
1963
|
+
totalsTotalToBePaid: 'Gesamt zu zahlen',
|
|
1964
|
+
instructionsTopic: 'Zahlungsanweisungen',
|
|
1965
|
+
instructionsAccountIdentifier: 'Kontonummer',
|
|
1966
|
+
instructionsAccountName: 'Kontoname',
|
|
1967
|
+
instructionsServiceProviderIdentifier: 'Bank',
|
|
1968
|
+
notesTopic: 'Hinweise',
|
|
1969
|
+
attachmentsHeading: 'Anhänge',
|
|
1970
|
+
attachmentsName: 'Name',
|
|
1971
|
+
attachmentsDescription: 'Beschreibung',
|
|
1972
|
+
attachmentsUrl: 'Url',
|
|
1973
|
+
attachmentsDataSize: 'Größe',
|
|
1974
|
+
attachmentsMimeType: 'Typ',
|
|
1975
|
+
attachmentsFileName: 'Dateiname',
|
|
1976
|
+
attachmentsDownloadButton: 'Download',
|
|
1977
|
+
contactPersonName: 'Name der Kontaktperson',
|
|
1978
|
+
contactPersonEmail: 'E-Mail der Kontaktperson',
|
|
1979
|
+
contactPersonPhone: 'Kontaktperson Telefon',
|
|
1980
|
+
vat: 'MwSt.',
|
|
1981
|
+
taxRate: 'Steuersatz',
|
|
1982
|
+
deliveryInformationTitle: 'Lieferinformationen',
|
|
1983
|
+
deliverToName: 'Liefername',
|
|
1984
|
+
deliverToLocationIdentifier: 'Lieferort',
|
|
1985
|
+
deliveryDate: 'Lieferdatum',
|
|
1986
|
+
deliveryAddress: 'Lieferadresse',
|
|
1987
|
+
taxesHeading: 'Steuer'
|
|
1988
|
+
};
|
|
1989
|
+
|
|
1990
|
+
/** Type of the invoice */
|
|
1991
|
+
var InvoiceType;
|
|
1992
|
+
(function (InvoiceType) {
|
|
1993
|
+
InvoiceType[InvoiceType["PartialInvoice"] = 326] = "PartialInvoice";
|
|
1994
|
+
InvoiceType[InvoiceType["CommercialInvoice"] = 380] = "CommercialInvoice";
|
|
1995
|
+
InvoiceType[InvoiceType["CreditNote"] = 381] = "CreditNote";
|
|
1996
|
+
InvoiceType[InvoiceType["CorrectedInvoice"] = 384] = "CorrectedInvoice";
|
|
1997
|
+
InvoiceType[InvoiceType["SelfBilledInvoice"] = 389] = "SelfBilledInvoice";
|
|
1998
|
+
InvoiceType[InvoiceType["PartialConstructionInvoice"] = 875] = "PartialConstructionInvoice";
|
|
1999
|
+
InvoiceType[InvoiceType["PartialFinalConstructionInvoice"] = 876] = "PartialFinalConstructionInvoice";
|
|
2000
|
+
InvoiceType[InvoiceType["FinalConstructionInvoice"] = 877] = "FinalConstructionInvoice";
|
|
2001
|
+
})(InvoiceType || (InvoiceType = {}));
|
|
2002
|
+
/** Describes a mime type of a document */
|
|
2003
|
+
var AttachmentMimeType;
|
|
2004
|
+
(function (AttachmentMimeType) {
|
|
2005
|
+
AttachmentMimeType[AttachmentMimeType["Unknown"] = 0] = "Unknown";
|
|
2006
|
+
AttachmentMimeType[AttachmentMimeType["Pdf"] = 1] = "Pdf";
|
|
2007
|
+
AttachmentMimeType[AttachmentMimeType["Png"] = 2] = "Png";
|
|
2008
|
+
AttachmentMimeType[AttachmentMimeType["Jpeg"] = 3] = "Jpeg";
|
|
2009
|
+
AttachmentMimeType[AttachmentMimeType["Csv"] = 4] = "Csv";
|
|
2010
|
+
AttachmentMimeType[AttachmentMimeType["Excel"] = 5] = "Excel";
|
|
2011
|
+
AttachmentMimeType[AttachmentMimeType["OpenOfficeSpreadsheet"] = 6] = "OpenOfficeSpreadsheet";
|
|
2012
|
+
})(AttachmentMimeType || (AttachmentMimeType = {}));
|
|
2013
|
+
/** The category used in a VatBreakdown"/> */
|
|
2014
|
+
var VatCategory;
|
|
2015
|
+
(function (VatCategory) {
|
|
2016
|
+
VatCategory[VatCategory["Unknown"] = 0] = "Unknown";
|
|
2017
|
+
VatCategory[VatCategory["StandardRate"] = 1] = "StandardRate";
|
|
2018
|
+
VatCategory[VatCategory["ZeroRatedGoods"] = 2] = "ZeroRatedGoods";
|
|
2019
|
+
VatCategory[VatCategory["ExemptFromTax"] = 3] = "ExemptFromTax";
|
|
2020
|
+
VatCategory[VatCategory["VatReverseCharge"] = 4] = "VatReverseCharge";
|
|
2021
|
+
VatCategory[VatCategory["VatExemptReverseCharge"] = 5] = "VatExemptReverseCharge";
|
|
2022
|
+
VatCategory[VatCategory["FreeExportItem"] = 6] = "FreeExportItem";
|
|
2023
|
+
VatCategory[VatCategory["ServicesOutsideScopeOfTaxation"] = 7] = "ServicesOutsideScopeOfTaxation";
|
|
2024
|
+
VatCategory[VatCategory["CanaryIslandsGeneralIndirectTax"] = 8] = "CanaryIslandsGeneralIndirectTax";
|
|
2025
|
+
VatCategory[VatCategory["TaxInCeutaAndMelilla"] = 9] = "TaxInCeutaAndMelilla";
|
|
2026
|
+
})(VatCategory || (VatCategory = {}));
|
|
2027
|
+
/** This enum represents the source of an invoice, e.g. from which format it was imported */
|
|
2028
|
+
var SourceType;
|
|
2029
|
+
(function (SourceType) {
|
|
2030
|
+
SourceType[SourceType["Self"] = 0] = "Self";
|
|
2031
|
+
SourceType[SourceType["Ubl"] = 1] = "Ubl";
|
|
2032
|
+
SourceType[SourceType["Cii"] = 2] = "Cii";
|
|
2033
|
+
})(SourceType || (SourceType = {}));
|
|
2034
|
+
|
|
2011
2035
|
class InvoiceAttachmentMimeTypePipe {
|
|
2012
2036
|
transform(attachmentMimeType) {
|
|
2013
2037
|
switch (attachmentMimeType) {
|
|
@@ -2091,12 +2115,14 @@ class InvoiceDisplayComponent {
|
|
|
2091
2115
|
*
|
|
2092
2116
|
* }
|
|
2093
2117
|
*/
|
|
2094
|
-
set textWords(words) {
|
|
2095
|
-
this._textWords = { ...words };
|
|
2096
|
-
} // allow to translate all texts to other language
|
|
2097
2118
|
get textWords() {
|
|
2098
2119
|
return this._textWords;
|
|
2099
2120
|
}
|
|
2121
|
+
set config(configObject) {
|
|
2122
|
+
if (configObject?.textWords) {
|
|
2123
|
+
this._textWords = { ...configObject?.textWords };
|
|
2124
|
+
}
|
|
2125
|
+
}
|
|
2100
2126
|
constructor() {
|
|
2101
2127
|
// TODO remove type any after TODO under will be resolved
|
|
2102
2128
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -2155,12 +2181,12 @@ class InvoiceDisplayComponent {
|
|
|
2155
2181
|
link.click();
|
|
2156
2182
|
}
|
|
2157
2183
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InvoiceDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2158
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: InvoiceDisplayComponent, isStandalone: true, selector: "ava-invoice-display", inputs: { invoice: { classPropertyName: "invoice", publicName: "invoice", isSignal: true, isRequired: true, transformFunction: null }, textWords: { classPropertyName: "textWords", publicName: "textWords", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ textWords.invoiceTitle }}</h1>\n <header class=\"invoice-header\">\n <div class=\"buyer-info\">\n <h2 class=\"header-title\">{{ textWords.invoiceBuyerTitle }}</h2>\n <p>\n <strong>{{ invoice().buyer?.name }}</strong>\n </p>\n <p>{{ invoice().buyer?.address }}</p>\n <p>{{ invoice().buyer?.city }}, {{ invoice().buyer?.zipCode }}</p>\n <p>{{ invoice().buyer?.countryCode }}</p>\n @if (invoice().buyer?.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <span>{{ invoice().buyer?.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (invoice().buyer?.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <span>{{ invoice().buyer?.contactPersonName }}</span>\n </p>\n }\n @if (invoice().buyer?.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <span>{{ invoice().buyer?.contactPersonPhone }}</span>\n </p>\n }\n @if (invoice().buyer?.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <span>{{ invoice().buyer?.contactPersonEmail }}</span>\n </p>\n }\n </div>\n <div class=\"invoice-details\">\n @if (invoice().invoiceNumber) {\n <p>\n <strong>{{ textWords.detailsInvoiceNumber }}: </strong>\n <span>{{ invoice().invoiceNumber }}</span>\n </p>\n }\n @if (invoice().invoiceDate) {\n <p>\n <strong>{{ textWords.detailsInvoiceDate }}: </strong>\n <span>{{ invoice().invoiceDate | date: 'dd.MM.yyyy' }}</span>\n </p>\n }\n @if (invoice().paymentDueDate) {\n <p>\n <strong>{{ textWords.detailsPaymentDueDate }}: </strong>\n <span>{{ invoice().paymentDueDate | date: 'dd.MM.yyyy' }}</span>\n </p>\n }\n @if (invoice().currencyCode) {\n <p>\n <strong>{{ textWords.detailsCurrencyCode }}: </strong>\n <span>{{ invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().paymentTerms) {\n <p>\n <strong>{{ textWords.detailsPaymentTerms }}: </strong>\n <span>{{ invoice().paymentTerms }}</span>\n </p>\n }\n </div>\n <div class=\"seller-info\">\n <h2 class=\"header-title\">{{ textWords.invoiceSellerTitle }}</h2>\n <p>\n <strong>{{ invoice().seller?.name }}</strong>\n </p>\n <p>{{ invoice().seller?.address }}</p>\n <p>{{ invoice().seller?.city }}, {{ invoice().seller?.zipCode }}</p>\n <p>{{ invoice().seller?.countryCode }}</p>\n @if (invoice().seller?.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <span>{{ invoice().seller?.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (invoice().seller?.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <span>{{ invoice().seller?.contactPersonName }}</span>\n </p>\n }\n @if (invoice().seller?.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <span>{{ invoice().seller?.contactPersonPhone }}</span>\n </p>\n }\n @if (invoice().seller?.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <span>{{ invoice().seller?.contactPersonEmail }}</span>\n </p>\n }\n </div>\n </header>\n <mat-divider></mat-divider>\n <div class=\"invoice-info\">\n <section class=\"invoice-references\">\n @if (textWords.referencesTopic) {\n <h2 class=\"info-title\">{{ textWords.referencesTopic }}</h2>\n }\n @if (invoice().references?.buyerReference) {\n <p>\n <strong>{{ textWords.referencesBuyerReference }}: </strong>\n <span>{{ invoice().references?.buyerReference }}</span>\n </p>\n }\n @if (invoice().references?.projectReference) {\n <p>\n <strong>{{ textWords.referencesProjectReference }}: </strong>\n <span>{{ invoice().references?.projectReference }}</span>\n </p>\n }\n @if (invoice().references?.contractReference) {\n <p>\n <strong>{{ textWords.referencesContractReference }}: </strong>\n <span>{{ invoice().references?.contractReference }}</span>\n </p>\n }\n @if (invoice().references?.purchaseOrderReference) {\n <p>\n <strong>{{ textWords.referencesPurchaseOrderReference }}: </strong>\n <span>{{ invoice().references?.purchaseOrderReference }}</span>\n </p>\n }\n @if (invoice().references?.salesOrderReference) {\n <p>\n <strong>{{ textWords.referencesSalesOrderReference }}: </strong>\n <span>{{ invoice().references?.salesOrderReference }}</span>\n </p>\n }\n @if (invoice().references?.receivingAdviceReference) {\n <p>\n <strong>{{ textWords.referencesReceivingAdviceReference }}: </strong>\n <span>{{ invoice().references?.receivingAdviceReference }}</span>\n </p>\n }\n @if (invoice().references?.dispatchAdviceReference) {\n <p>\n <strong>{{ textWords.referencesDispatchAdviceReference }}: </strong>\n <span> {{ invoice().references?.dispatchAdviceReference }}</span>\n </p>\n }\n @if (invoice().references?.tenderOrLotReference) {\n <p>\n <strong>{{ textWords.referencesTenderOrLotReference }}: </strong>\n <span>{{ invoice().references?.tenderOrLotReference }}</span>\n </p>\n }\n @if (invoice().references?.invoicedObjectIdentifier) {\n <p>\n <strong>{{ textWords.referencesInvoicedObjectIdentifier }}: </strong>\n <span>{{ invoice().references?.invoicedObjectIdentifier }}</span>\n </p>\n }\n </section>\n @if (invoice().deliveryInformation) {\n <section class=\"invoice-delivery\">\n <h2 class=\"info-title\">{{ textWords.deliveryInformationTitle }}</h2>\n\n @if (invoice().deliveryInformation?.deliverToName) {\n <p>\n <strong>{{ textWords.deliverToName }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliverToName }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliverToLocationIdentifier) {\n <p>\n <strong>{{ textWords.deliverToLocationIdentifier }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliverToLocationIdentifier }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliveryDate) {\n <p>\n <strong>{{ textWords.deliveryDate }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliveryDate | date: 'shortDate' }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliveryAddress) {\n <p>\n <strong>{{ textWords.deliveryAddress }}: </strong>\n <span>\n @if (invoice().deliveryInformation?.deliveryAddress?.address) {\n <p>{{ invoice().deliveryInformation?.deliveryAddress?.address }}</p>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.city) {\n <span>{{ invoice().deliveryInformation?.deliveryAddress?.city }},</span>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.zipCode) {\n <span>{{ invoice().deliveryInformation?.deliveryAddress?.zipCode }}</span>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.countryCode) {\n <p>{{ invoice().deliveryInformation?.deliveryAddress?.countryCode }}</p>\n }\n </span>\n </p>\n }\n </section>\n }\n </div>\n\n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>{{ textWords.tableHeadDescription }}</th>\n <th>{{ textWords.tableHeadQuantity }}</th>\n <th>{{ textWords.tableHeadUnit }}</th>\n <th>{{ textWords.tableHeadNetPrice }}</th>\n <th>{{ textWords.tableHeadNetAmount }}</th>\n <th>{{ textWords.vat }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of invoice().lineItems; track item; let i = $index) {\n <tr>\n <td>{{ i + 1 }}</td>\n <td>{{ item.itemInformation?.description }}</td>\n <td>{{ item.quantity }}</td>\n <td>{{ item.unitCode }}</td>\n <td>{{ item.priceDetails?.netPrice | currency: invoice().currencyCode }}</td>\n <td>{{ item.netAmount | currency: invoice().currencyCode }}</td>\n <td>{{ item.vatInformation[0]?.vatRate | percent: '1.0-2' }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <div class=\"addition-info\">\n <section class=\"invoice-totals\">\n <h2 class=\"info-title\">{{ textWords.totalsTopic }}</h2>\n\n @if (invoice().totals?.totalNet) {\n <p>\n <strong>{{ textWords.totalsTotalNet }}: </strong>\n <span>{{ invoice().totals?.totalNet | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalAllowances) {\n <p>\n <strong>{{ textWords.totalsTotalAllowances }}: </strong>\n <span> {{ invoice().totals?.totalAllowances | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalCharges) {\n <p>\n <strong>{{ textWords.totalsTotalCharges }}: </strong>\n <span> {{ invoice().totals?.totalCharges | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalAfterDeductions) {\n <p>\n <strong>{{ textWords.totalsTotalAfterDeductions }}: </strong>\n <span>{{ invoice().totals?.totalAfterDeductions | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalVatAmount) {\n <p>\n <strong>{{ textWords.totalsTotalVatAmount }}: </strong>\n <span>{{ invoice().totals?.totalVatAmount | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalGross) {\n <p>\n <strong>{{ textWords.totalsTotalGross }}: </strong>\n <span> {{ invoice().totals?.totalGross | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.alreadyPaidTotal) {\n <p>\n <strong>{{ textWords.totalsAlreadyPaidTotal }}: </strong>\n <span>{{ invoice().totals?.alreadyPaidTotal | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalToBePaid) {\n <p class=\"total\">\n <strong>{{ textWords.totalsTotalToBePaid }}: </strong>\n <strong> {{ invoice().totals?.totalToBePaid | currency: invoice().currencyCode }}</strong>\n </p>\n }\n </section>\n <section class=\"taxes\">\n <h2 class=\"info-title\">{{ textWords.taxesHeading }}</h2>\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th>{{ textWords.vat }}</th>\n <th>{{ textWords.totalsTotalNet }}</th>\n <th>{{ textWords.totalsTotalVatAmount }}</th>\n </tr>\n </thead>\n <tbody>\n @for (tax of invoice().vatBreakdown; track tax.taxRate) {\n <tr>\n <td>\n @if (tax.taxRate) {\n <span>{{ tax.taxRate | percent: '1.0-2' }}</span>\n }\n </td>\n <td>\n @if (tax.netTaxableAmount) {\n <span>{{ tax.netTaxableAmount | currency: invoice().currencyCode }}</span>\n }\n </td>\n <td>\n @if (tax.vatAmount) {\n <span>{{ tax.vatAmount | currency: invoice().currencyCode }}</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </section>\n\n <section class=\"payment-instructions\">\n <h2 class=\"info-title\">{{ textWords.instructionsTopic }}</h2>\n @if (invoice().paymentInstructions?.description) {\n <p>{{ invoice().paymentInstructions?.description }}</p>\n }\n @for (means of invoice().paymentInstructions?.paymentMeans; track means) {\n <div>\n @if (means.accountIdentifier) {\n <p>\n <strong>{{ textWords.instructionsAccountIdentifier }}: </strong>\n <span>{{ means.accountIdentifier }}</span>\n </p>\n }\n @if (means.accountName) {\n <p>\n <strong>{{ textWords.instructionsAccountName }}: </strong>\n <span>{{ means.accountName }}</span>\n </p>\n }\n @if (means.serviceProviderIdentifier) {\n <p>\n <strong>{{ textWords.instructionsServiceProviderIdentifier }}: </strong>\n <span>{{ means.serviceProviderIdentifier }}</span>\n </p>\n }\n </div>\n }\n </section>\n </div>\n\n <section class=\"invoice-notes\">\n <h2>{{ textWords.notesTopic }}</h2>\n @for (note of invoice().invoiceNotes; track note) {\n <div>\n @if (note?.shortText) {\n <p>\n <strong>{{ note?.shortText }}</strong>\n </p>\n }\n @if (note?.longText) {\n <p>{{ note?.longText }}</p>\n }\n </div>\n }\n </section>\n\n @if (invoice().documents?.length) {\n <section class=\"invoice-attachments\">\n <mat-accordion>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ textWords.attachmentsHeading }}</mat-panel-title>\n </mat-expansion-panel-header>\n @for (document of invoice().documents; track document) {\n <div class=\"document\">\n @if (document.documentReference) {\n <div>\n <strong>{{ textWords.attachmentsName }}: </strong>\n <span>{{ document.documentReference }}</span>\n </div>\n }\n @if (document.description) {\n <div>\n <strong>{{ textWords.attachmentsDescription }}: </strong>\n <span>{{ document.description }}</span>\n </div>\n }\n @if (document.externalDocumentUrl) {\n <div>\n <strong>{{ textWords.attachmentsUrl }}: </strong>\n <span>{{ document.externalDocumentUrl }}</span>\n </div>\n } @else if (document.documentBase64) {\n <div>\n <strong>{{ textWords.attachmentsDataSize }}: </strong>\n <span>{{ document.documentBase64.length }}</span>\n </div>\n\n @if (document.documentMimeType) {\n <div>\n <strong>{{ textWords.attachmentsMimeType }}: </strong>\n <span>{{ document.documentMimeType | invoiceAttachmentMimeType }}</span>\n </div>\n }\n }\n @if (document.fileName) {\n <div>\n <strong>{{ textWords.attachmentsFileName }}: </strong>\n <span>{{ document.fileName }}</span>\n </div>\n }\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"download(document)\"\n [disabled]=\"!document.externalDocumentUrl && !document.documentBase64\"\n >\n {{ textWords.attachmentsDownloadButton }}\n </button>\n </div>\n }\n <pre id=\"fileContent\"></pre>\n </mat-expansion-panel>\n </mat-accordion>\n </section>\n }\n</div>\n", styles: [".invoice-container{width:100%;max-width:800px;margin:auto;font-family:Arial,sans-serif;line-height:1.5}.invoice-header{display:flex;justify-content:space-between;margin-bottom:20px}.invoice-header .header-title{background:var(--color-primary);color:#fff;text-align:center}.seller-info,.buyer-info,.invoice-details{width:30%}.seller-info,.invoice-delivery,.payment-instructions{text-align:right}.invoice-title{font-size:48px;margin:20px 0}.invoice-references,.invoice-totals,.payment-instructions,.invoice-notes,.taxes,.invoice-delivery{margin:20px 0}.invoice-table{width:100%;border-collapse:collapse;margin:20px 0}.invoice-table th,.invoice-table td{border:1px solid #000;padding:8px;text-align:left}.invoice-table th{background-color:var(--color-primary)}.invoice-totals p,.payment-instructions p,.invoice-notes p{margin:5px 0}h2{font-size:18px;margin-bottom:10px}.addition-info{display:flex;justify-content:space-between;gap:10px}.total{background-color:var(--color-primary);color:#fff;padding:5px;border-radius:5px}th{color:#fff;text-wrap:nowrap}.invoice-attachments,.document{padding-bottom:15px}.invoice-info{display:flex;justify-content:space-between;margin-bottom:20px}.info-title{border-bottom:2px solid var(--color-primary);text-align:center}.tax-report-table{width:100%;border-collapse:collapse;margin-top:10px}.tax-report-table th,.tax-report-table td{padding:12px;text-align:center;border:1px solid #ddd}.tax-report-table th{background-color:var(--color-primary);color:#fff;font-weight:700;border:1px solid #000}.tax-report-table td{font-size:14px;color:#333;border:1px solid #000}\n"], dependencies: [{ kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "pipe", type: InvoiceAttachmentMimeTypePipe, name: "invoiceAttachmentMimeType" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2184
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.1", type: InvoiceDisplayComponent, isStandalone: true, selector: "ava-invoice-display", inputs: { invoice: { classPropertyName: "invoice", publicName: "invoice", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ textWords.invoiceTitle }}</h1>\n <header class=\"invoice-header\">\n <div class=\"buyer-info\">\n <h2 class=\"header-title\">{{ textWords.invoiceBuyerTitle }}</h2>\n <p>\n <strong>{{ invoice().buyer?.name }}</strong>\n </p>\n <p>{{ invoice().buyer?.address }}</p>\n <p>{{ invoice().buyer?.city }}, {{ invoice().buyer?.zipCode }}</p>\n <p>{{ invoice().buyer?.countryCode }}</p>\n @if (invoice().buyer?.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <span>{{ invoice().buyer?.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (invoice().buyer?.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <span>{{ invoice().buyer?.contactPersonName }}</span>\n </p>\n }\n @if (invoice().buyer?.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <span>{{ invoice().buyer?.contactPersonPhone }}</span>\n </p>\n }\n @if (invoice().buyer?.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <span>{{ invoice().buyer?.contactPersonEmail }}</span>\n </p>\n }\n </div>\n <div class=\"invoice-details\">\n @if (invoice().invoiceNumber) {\n <p>\n <strong>{{ textWords.detailsInvoiceNumber }}: </strong>\n <span>{{ invoice().invoiceNumber }}</span>\n </p>\n }\n @if (invoice().invoiceDate) {\n <p>\n <strong>{{ textWords.detailsInvoiceDate }}: </strong>\n <span>{{ invoice().invoiceDate | date: 'dd.MM.yyyy' }}</span>\n </p>\n }\n @if (invoice().paymentDueDate) {\n <p>\n <strong>{{ textWords.detailsPaymentDueDate }}: </strong>\n <span>{{ invoice().paymentDueDate | date: 'dd.MM.yyyy' }}</span>\n </p>\n }\n @if (invoice().currencyCode) {\n <p>\n <strong>{{ textWords.detailsCurrencyCode }}: </strong>\n <span>{{ invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().paymentTerms) {\n <p>\n <strong>{{ textWords.detailsPaymentTerms }}: </strong>\n <span>{{ invoice().paymentTerms }}</span>\n </p>\n }\n </div>\n <div class=\"seller-info\">\n <h2 class=\"header-title\">{{ textWords.invoiceSellerTitle }}</h2>\n <p>\n <strong>{{ invoice().seller?.name }}</strong>\n </p>\n <p>{{ invoice().seller?.address }}</p>\n <p>{{ invoice().seller?.city }}, {{ invoice().seller?.zipCode }}</p>\n <p>{{ invoice().seller?.countryCode }}</p>\n @if (invoice().seller?.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <span>{{ invoice().seller?.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (invoice().seller?.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <span>{{ invoice().seller?.contactPersonName }}</span>\n </p>\n }\n @if (invoice().seller?.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <span>{{ invoice().seller?.contactPersonPhone }}</span>\n </p>\n }\n @if (invoice().seller?.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <span>{{ invoice().seller?.contactPersonEmail }}</span>\n </p>\n }\n </div>\n </header>\n <mat-divider></mat-divider>\n <div class=\"invoice-info\">\n <section class=\"invoice-references\">\n @if (textWords.referencesTopic) {\n <h2 class=\"info-title\">{{ textWords.referencesTopic }}</h2>\n }\n @if (invoice().references?.buyerReference) {\n <p>\n <strong>{{ textWords.referencesBuyerReference }}: </strong>\n <span>{{ invoice().references?.buyerReference }}</span>\n </p>\n }\n @if (invoice().references?.projectReference) {\n <p>\n <strong>{{ textWords.referencesProjectReference }}: </strong>\n <span>{{ invoice().references?.projectReference }}</span>\n </p>\n }\n @if (invoice().references?.contractReference) {\n <p>\n <strong>{{ textWords.referencesContractReference }}: </strong>\n <span>{{ invoice().references?.contractReference }}</span>\n </p>\n }\n @if (invoice().references?.purchaseOrderReference) {\n <p>\n <strong>{{ textWords.referencesPurchaseOrderReference }}: </strong>\n <span>{{ invoice().references?.purchaseOrderReference }}</span>\n </p>\n }\n @if (invoice().references?.salesOrderReference) {\n <p>\n <strong>{{ textWords.referencesSalesOrderReference }}: </strong>\n <span>{{ invoice().references?.salesOrderReference }}</span>\n </p>\n }\n @if (invoice().references?.receivingAdviceReference) {\n <p>\n <strong>{{ textWords.referencesReceivingAdviceReference }}: </strong>\n <span>{{ invoice().references?.receivingAdviceReference }}</span>\n </p>\n }\n @if (invoice().references?.dispatchAdviceReference) {\n <p>\n <strong>{{ textWords.referencesDispatchAdviceReference }}: </strong>\n <span> {{ invoice().references?.dispatchAdviceReference }}</span>\n </p>\n }\n @if (invoice().references?.tenderOrLotReference) {\n <p>\n <strong>{{ textWords.referencesTenderOrLotReference }}: </strong>\n <span>{{ invoice().references?.tenderOrLotReference }}</span>\n </p>\n }\n @if (invoice().references?.invoicedObjectIdentifier) {\n <p>\n <strong>{{ textWords.referencesInvoicedObjectIdentifier }}: </strong>\n <span>{{ invoice().references?.invoicedObjectIdentifier }}</span>\n </p>\n }\n </section>\n @if (invoice().deliveryInformation) {\n <section class=\"invoice-delivery\">\n <h2 class=\"info-title\">{{ textWords.deliveryInformationTitle }}</h2>\n\n @if (invoice().deliveryInformation?.deliverToName) {\n <p>\n <strong>{{ textWords.deliverToName }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliverToName }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliverToLocationIdentifier) {\n <p>\n <strong>{{ textWords.deliverToLocationIdentifier }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliverToLocationIdentifier }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliveryDate) {\n <p>\n <strong>{{ textWords.deliveryDate }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliveryDate | date: 'shortDate' }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliveryAddress) {\n <p>\n <strong>{{ textWords.deliveryAddress }}: </strong>\n <span>\n @if (invoice().deliveryInformation?.deliveryAddress?.address) {\n <p>{{ invoice().deliveryInformation?.deliveryAddress?.address }}</p>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.city) {\n <span>{{ invoice().deliveryInformation?.deliveryAddress?.city }},</span>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.zipCode) {\n <span>{{ invoice().deliveryInformation?.deliveryAddress?.zipCode }}</span>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.countryCode) {\n <p>{{ invoice().deliveryInformation?.deliveryAddress?.countryCode }}</p>\n }\n </span>\n </p>\n }\n </section>\n }\n </div>\n\n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>{{ textWords.tableHeadDescription }}</th>\n <th>{{ textWords.tableHeadQuantity }}</th>\n <th>{{ textWords.tableHeadUnit }}</th>\n <th>{{ textWords.tableHeadNetPrice }}</th>\n <th>{{ textWords.tableHeadNetAmount }}</th>\n <th>{{ textWords.vat }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of invoice().lineItems; track item; let i = $index) {\n <tr>\n <td>{{ i + 1 }}</td>\n <td>{{ item.itemInformation?.description }}</td>\n <td>{{ item.quantity }}</td>\n <td>{{ item.unitCode }}</td>\n <td>{{ item.priceDetails?.netPrice | currency: invoice().currencyCode }}</td>\n <td>{{ item.netAmount | currency: invoice().currencyCode }}</td>\n <td>{{ item.vatInformation[0]?.vatRate | percent: '1.0-2' }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <div class=\"addition-info\">\n <section class=\"invoice-totals\">\n <h2 class=\"info-title\">{{ textWords.totalsTopic }}</h2>\n\n @if (invoice().totals?.totalNet) {\n <p>\n <strong>{{ textWords.totalsTotalNet }}: </strong>\n <span>{{ invoice().totals?.totalNet | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalAllowances) {\n <p>\n <strong>{{ textWords.totalsTotalAllowances }}: </strong>\n <span> {{ invoice().totals?.totalAllowances | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalCharges) {\n <p>\n <strong>{{ textWords.totalsTotalCharges }}: </strong>\n <span> {{ invoice().totals?.totalCharges | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalAfterDeductions) {\n <p>\n <strong>{{ textWords.totalsTotalAfterDeductions }}: </strong>\n <span>{{ invoice().totals?.totalAfterDeductions | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalVatAmount) {\n <p>\n <strong>{{ textWords.totalsTotalVatAmount }}: </strong>\n <span>{{ invoice().totals?.totalVatAmount | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalGross) {\n <p>\n <strong>{{ textWords.totalsTotalGross }}: </strong>\n <span> {{ invoice().totals?.totalGross | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.alreadyPaidTotal) {\n <p>\n <strong>{{ textWords.totalsAlreadyPaidTotal }}: </strong>\n <span>{{ invoice().totals?.alreadyPaidTotal | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalToBePaid) {\n <p class=\"total\">\n <strong>{{ textWords.totalsTotalToBePaid }}: </strong>\n <strong> {{ invoice().totals?.totalToBePaid | currency: invoice().currencyCode }}</strong>\n </p>\n }\n </section>\n <section class=\"taxes\">\n <h2 class=\"info-title\">{{ textWords.taxesHeading }}</h2>\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th>{{ textWords.vat }}</th>\n <th>{{ textWords.totalsTotalNet }}</th>\n <th>{{ textWords.totalsTotalVatAmount }}</th>\n </tr>\n </thead>\n <tbody>\n @for (tax of invoice().vatBreakdown; track tax.taxRate) {\n <tr>\n <td>\n @if (tax.taxRate) {\n <span>{{ tax.taxRate | percent: '1.0-2' }}</span>\n }\n </td>\n <td>\n @if (tax.netTaxableAmount) {\n <span>{{ tax.netTaxableAmount | currency: invoice().currencyCode }}</span>\n }\n </td>\n <td>\n @if (tax.vatAmount) {\n <span>{{ tax.vatAmount | currency: invoice().currencyCode }}</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </section>\n\n <section class=\"payment-instructions\">\n <h2 class=\"info-title\">{{ textWords.instructionsTopic }}</h2>\n @if (invoice().paymentInstructions?.description) {\n <p>{{ invoice().paymentInstructions?.description }}</p>\n }\n @for (means of invoice().paymentInstructions?.paymentMeans; track means) {\n <div>\n @if (means.accountIdentifier) {\n <p>\n <strong>{{ textWords.instructionsAccountIdentifier }}: </strong>\n <span>{{ means.accountIdentifier }}</span>\n </p>\n }\n @if (means.accountName) {\n <p>\n <strong>{{ textWords.instructionsAccountName }}: </strong>\n <span>{{ means.accountName }}</span>\n </p>\n }\n @if (means.serviceProviderIdentifier) {\n <p>\n <strong>{{ textWords.instructionsServiceProviderIdentifier }}: </strong>\n <span>{{ means.serviceProviderIdentifier }}</span>\n </p>\n }\n </div>\n }\n </section>\n </div>\n\n <section class=\"invoice-notes\">\n <h2>{{ textWords.notesTopic }}</h2>\n @for (note of invoice().invoiceNotes; track note) {\n <div>\n @if (note?.shortText) {\n <p>\n <strong>{{ note?.shortText }}</strong>\n </p>\n }\n @if (note?.longText) {\n <p>{{ note?.longText }}</p>\n }\n </div>\n }\n </section>\n\n @if (invoice().documents?.length) {\n <section class=\"invoice-attachments\">\n <mat-accordion>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ textWords.attachmentsHeading }}</mat-panel-title>\n </mat-expansion-panel-header>\n @for (document of invoice().documents; track document) {\n <div class=\"document\">\n @if (document.documentReference) {\n <div>\n <strong>{{ textWords.attachmentsName }}: </strong>\n <span>{{ document.documentReference }}</span>\n </div>\n }\n @if (document.description) {\n <div>\n <strong>{{ textWords.attachmentsDescription }}: </strong>\n <span>{{ document.description }}</span>\n </div>\n }\n @if (document.externalDocumentUrl) {\n <div>\n <strong>{{ textWords.attachmentsUrl }}: </strong>\n <span>{{ document.externalDocumentUrl }}</span>\n </div>\n } @else if (document.documentBase64) {\n <div>\n <strong>{{ textWords.attachmentsDataSize }}: </strong>\n <span>{{ document.documentBase64.length }}</span>\n </div>\n\n @if (document.documentMimeType) {\n <div>\n <strong>{{ textWords.attachmentsMimeType }}: </strong>\n <span>{{ document.documentMimeType | invoiceAttachmentMimeType }}</span>\n </div>\n }\n }\n @if (document.fileName) {\n <div>\n <strong>{{ textWords.attachmentsFileName }}: </strong>\n <span>{{ document.fileName }}</span>\n </div>\n }\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"download(document)\"\n [disabled]=\"!document.externalDocumentUrl && !document.documentBase64\"\n >\n {{ textWords.attachmentsDownloadButton }}\n </button>\n </div>\n }\n <pre id=\"fileContent\"></pre>\n </mat-expansion-panel>\n </mat-accordion>\n </section>\n }\n</div>\n", styles: [".invoice-container{width:100%;max-width:800px;margin:auto;font-family:Arial,sans-serif;line-height:1.5}.invoice-header{display:flex;justify-content:space-between;margin-bottom:20px}.invoice-header .header-title{background:var(--color-primary);color:#fff;text-align:center}.seller-info,.buyer-info,.invoice-details{width:30%}.seller-info,.invoice-delivery,.payment-instructions{text-align:right}.invoice-title{font-size:48px;margin:20px 0}.invoice-references,.invoice-totals,.payment-instructions,.invoice-notes,.taxes,.invoice-delivery{margin:20px 0}.invoice-table{width:100%;border-collapse:collapse;margin:20px 0}.invoice-table th,.invoice-table td{border:1px solid #000;padding:8px;text-align:left}.invoice-table th{background-color:var(--color-primary)}.invoice-totals p,.payment-instructions p,.invoice-notes p{margin:5px 0}h2{font-size:18px;margin-bottom:10px}.addition-info{display:flex;justify-content:space-between;gap:10px}.total{background-color:var(--color-primary);color:#fff;padding:5px;border-radius:5px}th{color:#fff;text-wrap:nowrap}.invoice-attachments,.document{padding-bottom:15px}.invoice-info{display:flex;justify-content:space-between;margin-bottom:20px}.info-title{border-bottom:2px solid var(--color-primary);text-align:center}.tax-report-table{width:100%;border-collapse:collapse;margin-top:10px}.tax-report-table th,.tax-report-table td{padding:12px;text-align:center;border:1px solid #ddd}.tax-report-table th{background-color:var(--color-primary);color:#fff;font-weight:700;border:1px solid #000}.tax-report-table td{font-size:14px;color:#333;border:1px solid #000}\n"], dependencies: [{ kind: "pipe", type: CurrencyPipe, name: "currency" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i2.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i2.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "pipe", type: InvoiceAttachmentMimeTypePipe, name: "invoiceAttachmentMimeType" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2159
2185
|
}
|
|
2160
2186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: InvoiceDisplayComponent, decorators: [{
|
|
2161
2187
|
type: Component,
|
|
2162
2188
|
args: [{ selector: 'ava-invoice-display', imports: [CurrencyPipe, DatePipe, PercentPipe, MatButtonModule, MatExpansionModule, InvoiceAttachmentMimeTypePipe, MatDividerModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"invoice-container\">\n <!-- Seller and Buyer Information -->\n <h1 class=\"invoice-title\">{{ textWords.invoiceTitle }}</h1>\n <header class=\"invoice-header\">\n <div class=\"buyer-info\">\n <h2 class=\"header-title\">{{ textWords.invoiceBuyerTitle }}</h2>\n <p>\n <strong>{{ invoice().buyer?.name }}</strong>\n </p>\n <p>{{ invoice().buyer?.address }}</p>\n <p>{{ invoice().buyer?.city }}, {{ invoice().buyer?.zipCode }}</p>\n <p>{{ invoice().buyer?.countryCode }}</p>\n @if (invoice().buyer?.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <span>{{ invoice().buyer?.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (invoice().buyer?.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <span>{{ invoice().buyer?.contactPersonName }}</span>\n </p>\n }\n @if (invoice().buyer?.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <span>{{ invoice().buyer?.contactPersonPhone }}</span>\n </p>\n }\n @if (invoice().buyer?.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <span>{{ invoice().buyer?.contactPersonEmail }}</span>\n </p>\n }\n </div>\n <div class=\"invoice-details\">\n @if (invoice().invoiceNumber) {\n <p>\n <strong>{{ textWords.detailsInvoiceNumber }}: </strong>\n <span>{{ invoice().invoiceNumber }}</span>\n </p>\n }\n @if (invoice().invoiceDate) {\n <p>\n <strong>{{ textWords.detailsInvoiceDate }}: </strong>\n <span>{{ invoice().invoiceDate | date: 'dd.MM.yyyy' }}</span>\n </p>\n }\n @if (invoice().paymentDueDate) {\n <p>\n <strong>{{ textWords.detailsPaymentDueDate }}: </strong>\n <span>{{ invoice().paymentDueDate | date: 'dd.MM.yyyy' }}</span>\n </p>\n }\n @if (invoice().currencyCode) {\n <p>\n <strong>{{ textWords.detailsCurrencyCode }}: </strong>\n <span>{{ invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().paymentTerms) {\n <p>\n <strong>{{ textWords.detailsPaymentTerms }}: </strong>\n <span>{{ invoice().paymentTerms }}</span>\n </p>\n }\n </div>\n <div class=\"seller-info\">\n <h2 class=\"header-title\">{{ textWords.invoiceSellerTitle }}</h2>\n <p>\n <strong>{{ invoice().seller?.name }}</strong>\n </p>\n <p>{{ invoice().seller?.address }}</p>\n <p>{{ invoice().seller?.city }}, {{ invoice().seller?.zipCode }}</p>\n <p>{{ invoice().seller?.countryCode }}</p>\n @if (invoice().seller?.vatId) {\n <p>\n <strong>{{ textWords.vatId }}: </strong>\n <span>{{ invoice().seller?.vatId }}</span>\n </p>\n }\n <mat-divider></mat-divider>\n @if (invoice().seller?.contactPersonName) {\n <p>\n <strong>{{ textWords.contactPersonName }}: </strong>\n <span>{{ invoice().seller?.contactPersonName }}</span>\n </p>\n }\n @if (invoice().seller?.contactPersonPhone) {\n <p>\n <strong>{{ textWords.contactPersonPhone }}: </strong>\n <span>{{ invoice().seller?.contactPersonPhone }}</span>\n </p>\n }\n @if (invoice().seller?.contactPersonEmail) {\n <p>\n <strong>{{ textWords.contactPersonEmail }}: </strong>\n <span>{{ invoice().seller?.contactPersonEmail }}</span>\n </p>\n }\n </div>\n </header>\n <mat-divider></mat-divider>\n <div class=\"invoice-info\">\n <section class=\"invoice-references\">\n @if (textWords.referencesTopic) {\n <h2 class=\"info-title\">{{ textWords.referencesTopic }}</h2>\n }\n @if (invoice().references?.buyerReference) {\n <p>\n <strong>{{ textWords.referencesBuyerReference }}: </strong>\n <span>{{ invoice().references?.buyerReference }}</span>\n </p>\n }\n @if (invoice().references?.projectReference) {\n <p>\n <strong>{{ textWords.referencesProjectReference }}: </strong>\n <span>{{ invoice().references?.projectReference }}</span>\n </p>\n }\n @if (invoice().references?.contractReference) {\n <p>\n <strong>{{ textWords.referencesContractReference }}: </strong>\n <span>{{ invoice().references?.contractReference }}</span>\n </p>\n }\n @if (invoice().references?.purchaseOrderReference) {\n <p>\n <strong>{{ textWords.referencesPurchaseOrderReference }}: </strong>\n <span>{{ invoice().references?.purchaseOrderReference }}</span>\n </p>\n }\n @if (invoice().references?.salesOrderReference) {\n <p>\n <strong>{{ textWords.referencesSalesOrderReference }}: </strong>\n <span>{{ invoice().references?.salesOrderReference }}</span>\n </p>\n }\n @if (invoice().references?.receivingAdviceReference) {\n <p>\n <strong>{{ textWords.referencesReceivingAdviceReference }}: </strong>\n <span>{{ invoice().references?.receivingAdviceReference }}</span>\n </p>\n }\n @if (invoice().references?.dispatchAdviceReference) {\n <p>\n <strong>{{ textWords.referencesDispatchAdviceReference }}: </strong>\n <span> {{ invoice().references?.dispatchAdviceReference }}</span>\n </p>\n }\n @if (invoice().references?.tenderOrLotReference) {\n <p>\n <strong>{{ textWords.referencesTenderOrLotReference }}: </strong>\n <span>{{ invoice().references?.tenderOrLotReference }}</span>\n </p>\n }\n @if (invoice().references?.invoicedObjectIdentifier) {\n <p>\n <strong>{{ textWords.referencesInvoicedObjectIdentifier }}: </strong>\n <span>{{ invoice().references?.invoicedObjectIdentifier }}</span>\n </p>\n }\n </section>\n @if (invoice().deliveryInformation) {\n <section class=\"invoice-delivery\">\n <h2 class=\"info-title\">{{ textWords.deliveryInformationTitle }}</h2>\n\n @if (invoice().deliveryInformation?.deliverToName) {\n <p>\n <strong>{{ textWords.deliverToName }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliverToName }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliverToLocationIdentifier) {\n <p>\n <strong>{{ textWords.deliverToLocationIdentifier }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliverToLocationIdentifier }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliveryDate) {\n <p>\n <strong>{{ textWords.deliveryDate }}: </strong>\n <span>{{ invoice().deliveryInformation?.deliveryDate | date: 'shortDate' }}</span>\n </p>\n }\n @if (invoice().deliveryInformation?.deliveryAddress) {\n <p>\n <strong>{{ textWords.deliveryAddress }}: </strong>\n <span>\n @if (invoice().deliveryInformation?.deliveryAddress?.address) {\n <p>{{ invoice().deliveryInformation?.deliveryAddress?.address }}</p>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.city) {\n <span>{{ invoice().deliveryInformation?.deliveryAddress?.city }},</span>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.zipCode) {\n <span>{{ invoice().deliveryInformation?.deliveryAddress?.zipCode }}</span>\n }\n @if (invoice().deliveryInformation?.deliveryAddress?.countryCode) {\n <p>{{ invoice().deliveryInformation?.deliveryAddress?.countryCode }}</p>\n }\n </span>\n </p>\n }\n </section>\n }\n </div>\n\n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>{{ textWords.tableHeadDescription }}</th>\n <th>{{ textWords.tableHeadQuantity }}</th>\n <th>{{ textWords.tableHeadUnit }}</th>\n <th>{{ textWords.tableHeadNetPrice }}</th>\n <th>{{ textWords.tableHeadNetAmount }}</th>\n <th>{{ textWords.vat }}</th>\n </tr>\n </thead>\n <tbody>\n @for (item of invoice().lineItems; track item; let i = $index) {\n <tr>\n <td>{{ i + 1 }}</td>\n <td>{{ item.itemInformation?.description }}</td>\n <td>{{ item.quantity }}</td>\n <td>{{ item.unitCode }}</td>\n <td>{{ item.priceDetails?.netPrice | currency: invoice().currencyCode }}</td>\n <td>{{ item.netAmount | currency: invoice().currencyCode }}</td>\n <td>{{ item.vatInformation[0]?.vatRate | percent: '1.0-2' }}</td>\n </tr>\n }\n </tbody>\n </table>\n\n <div class=\"addition-info\">\n <section class=\"invoice-totals\">\n <h2 class=\"info-title\">{{ textWords.totalsTopic }}</h2>\n\n @if (invoice().totals?.totalNet) {\n <p>\n <strong>{{ textWords.totalsTotalNet }}: </strong>\n <span>{{ invoice().totals?.totalNet | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalAllowances) {\n <p>\n <strong>{{ textWords.totalsTotalAllowances }}: </strong>\n <span> {{ invoice().totals?.totalAllowances | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalCharges) {\n <p>\n <strong>{{ textWords.totalsTotalCharges }}: </strong>\n <span> {{ invoice().totals?.totalCharges | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalAfterDeductions) {\n <p>\n <strong>{{ textWords.totalsTotalAfterDeductions }}: </strong>\n <span>{{ invoice().totals?.totalAfterDeductions | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalVatAmount) {\n <p>\n <strong>{{ textWords.totalsTotalVatAmount }}: </strong>\n <span>{{ invoice().totals?.totalVatAmount | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalGross) {\n <p>\n <strong>{{ textWords.totalsTotalGross }}: </strong>\n <span> {{ invoice().totals?.totalGross | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.alreadyPaidTotal) {\n <p>\n <strong>{{ textWords.totalsAlreadyPaidTotal }}: </strong>\n <span>{{ invoice().totals?.alreadyPaidTotal | currency: invoice().currencyCode }}</span>\n </p>\n }\n @if (invoice().totals?.totalToBePaid) {\n <p class=\"total\">\n <strong>{{ textWords.totalsTotalToBePaid }}: </strong>\n <strong> {{ invoice().totals?.totalToBePaid | currency: invoice().currencyCode }}</strong>\n </p>\n }\n </section>\n <section class=\"taxes\">\n <h2 class=\"info-title\">{{ textWords.taxesHeading }}</h2>\n <table class=\"tax-report-table\">\n <thead>\n <tr>\n <th>{{ textWords.vat }}</th>\n <th>{{ textWords.totalsTotalNet }}</th>\n <th>{{ textWords.totalsTotalVatAmount }}</th>\n </tr>\n </thead>\n <tbody>\n @for (tax of invoice().vatBreakdown; track tax.taxRate) {\n <tr>\n <td>\n @if (tax.taxRate) {\n <span>{{ tax.taxRate | percent: '1.0-2' }}</span>\n }\n </td>\n <td>\n @if (tax.netTaxableAmount) {\n <span>{{ tax.netTaxableAmount | currency: invoice().currencyCode }}</span>\n }\n </td>\n <td>\n @if (tax.vatAmount) {\n <span>{{ tax.vatAmount | currency: invoice().currencyCode }}</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </section>\n\n <section class=\"payment-instructions\">\n <h2 class=\"info-title\">{{ textWords.instructionsTopic }}</h2>\n @if (invoice().paymentInstructions?.description) {\n <p>{{ invoice().paymentInstructions?.description }}</p>\n }\n @for (means of invoice().paymentInstructions?.paymentMeans; track means) {\n <div>\n @if (means.accountIdentifier) {\n <p>\n <strong>{{ textWords.instructionsAccountIdentifier }}: </strong>\n <span>{{ means.accountIdentifier }}</span>\n </p>\n }\n @if (means.accountName) {\n <p>\n <strong>{{ textWords.instructionsAccountName }}: </strong>\n <span>{{ means.accountName }}</span>\n </p>\n }\n @if (means.serviceProviderIdentifier) {\n <p>\n <strong>{{ textWords.instructionsServiceProviderIdentifier }}: </strong>\n <span>{{ means.serviceProviderIdentifier }}</span>\n </p>\n }\n </div>\n }\n </section>\n </div>\n\n <section class=\"invoice-notes\">\n <h2>{{ textWords.notesTopic }}</h2>\n @for (note of invoice().invoiceNotes; track note) {\n <div>\n @if (note?.shortText) {\n <p>\n <strong>{{ note?.shortText }}</strong>\n </p>\n }\n @if (note?.longText) {\n <p>{{ note?.longText }}</p>\n }\n </div>\n }\n </section>\n\n @if (invoice().documents?.length) {\n <section class=\"invoice-attachments\">\n <mat-accordion>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ textWords.attachmentsHeading }}</mat-panel-title>\n </mat-expansion-panel-header>\n @for (document of invoice().documents; track document) {\n <div class=\"document\">\n @if (document.documentReference) {\n <div>\n <strong>{{ textWords.attachmentsName }}: </strong>\n <span>{{ document.documentReference }}</span>\n </div>\n }\n @if (document.description) {\n <div>\n <strong>{{ textWords.attachmentsDescription }}: </strong>\n <span>{{ document.description }}</span>\n </div>\n }\n @if (document.externalDocumentUrl) {\n <div>\n <strong>{{ textWords.attachmentsUrl }}: </strong>\n <span>{{ document.externalDocumentUrl }}</span>\n </div>\n } @else if (document.documentBase64) {\n <div>\n <strong>{{ textWords.attachmentsDataSize }}: </strong>\n <span>{{ document.documentBase64.length }}</span>\n </div>\n\n @if (document.documentMimeType) {\n <div>\n <strong>{{ textWords.attachmentsMimeType }}: </strong>\n <span>{{ document.documentMimeType | invoiceAttachmentMimeType }}</span>\n </div>\n }\n }\n @if (document.fileName) {\n <div>\n <strong>{{ textWords.attachmentsFileName }}: </strong>\n <span>{{ document.fileName }}</span>\n </div>\n }\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"download(document)\"\n [disabled]=\"!document.externalDocumentUrl && !document.documentBase64\"\n >\n {{ textWords.attachmentsDownloadButton }}\n </button>\n </div>\n }\n <pre id=\"fileContent\"></pre>\n </mat-expansion-panel>\n </mat-accordion>\n </section>\n }\n</div>\n", styles: [".invoice-container{width:100%;max-width:800px;margin:auto;font-family:Arial,sans-serif;line-height:1.5}.invoice-header{display:flex;justify-content:space-between;margin-bottom:20px}.invoice-header .header-title{background:var(--color-primary);color:#fff;text-align:center}.seller-info,.buyer-info,.invoice-details{width:30%}.seller-info,.invoice-delivery,.payment-instructions{text-align:right}.invoice-title{font-size:48px;margin:20px 0}.invoice-references,.invoice-totals,.payment-instructions,.invoice-notes,.taxes,.invoice-delivery{margin:20px 0}.invoice-table{width:100%;border-collapse:collapse;margin:20px 0}.invoice-table th,.invoice-table td{border:1px solid #000;padding:8px;text-align:left}.invoice-table th{background-color:var(--color-primary)}.invoice-totals p,.payment-instructions p,.invoice-notes p{margin:5px 0}h2{font-size:18px;margin-bottom:10px}.addition-info{display:flex;justify-content:space-between;gap:10px}.total{background-color:var(--color-primary);color:#fff;padding:5px;border-radius:5px}th{color:#fff;text-wrap:nowrap}.invoice-attachments,.document{padding-bottom:15px}.invoice-info{display:flex;justify-content:space-between;margin-bottom:20px}.info-title{border-bottom:2px solid var(--color-primary);text-align:center}.tax-report-table{width:100%;border-collapse:collapse;margin-top:10px}.tax-report-table th,.tax-report-table td{padding:12px;text-align:center;border:1px solid #ddd}.tax-report-table th{background-color:var(--color-primary);color:#fff;font-weight:700;border:1px solid #000}.tax-report-table td{font-size:14px;color:#333;border:1px solid #000}\n"] }]
|
|
2163
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
2189
|
+
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
2164
2190
|
type: Input
|
|
2165
2191
|
}] } });
|
|
2166
2192
|
|