taxtank-core 0.28.71 → 0.28.74

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.
@@ -1,35 +1,40 @@
1
1
  import { AbstractForm } from '../abstract.form';
2
- import { SoleInvoiceItem } from '../../models';
3
- import { FormArray, FormControl, Validators } from '@angular/forms';
2
+ import { SoleInvoice, SoleInvoiceItem } from '../../models';
3
+ import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
4
4
  import { SoleInvoiceItemForm } from './sole-invoice-item.form';
5
5
  import { plainToClass } from 'class-transformer';
6
6
  import { SoleInvoiceTaxTypeEnum } from '../../db/Enums/sole-invoice-tax-type.enum';
7
- import merge from 'lodash/merge';
7
+ /**
8
+ * Form is divided into two groups, since the creation of Sole invoice takes place in two steps:
9
+ * a common invoice data and sole invoice items.
10
+ */
8
11
  export class SoleInvoiceForm extends AbstractForm {
9
12
  constructor(invoice, soleDetailsGST,
10
13
  // default template to be preselected
11
14
  defaultTemplate) {
12
15
  super({
13
- dateFrom: new FormControl(invoice.dateFrom || new Date(), Validators.required),
14
- dateTo: new FormControl(invoice.dateTo, Validators.required),
16
+ commonData: new FormGroup({
17
+ dateFrom: new FormControl(invoice.dateFrom || new Date(), Validators.required),
18
+ dateTo: new FormControl(invoice.dateTo, Validators.required),
19
+ payer: new FormControl(invoice.payer, Validators.required),
20
+ taxType: new FormControl(invoice.taxType, Validators.required),
21
+ bankAccount: new FormControl(invoice.bankAccount, Validators.required),
22
+ reference: new FormControl(invoice.reference)
23
+ }),
15
24
  items: new FormArray((invoice.items || [plainToClass(SoleInvoiceItem, {})]).map((item) => new SoleInvoiceItemForm(item))),
16
- payer: new FormControl(invoice.payer, Validators.required),
17
- taxType: new FormControl(invoice.taxType, Validators.required),
18
- bankAccount: new FormControl(invoice.bankAccount, Validators.required),
19
- reference: new FormControl(invoice.reference)
20
25
  }, invoice);
21
26
  this.invoice = invoice;
22
27
  this.soleDetailsGST = soleDetailsGST;
23
28
  this.defaultTemplate = defaultTemplate;
24
29
  // we need invoice template only for new invoices
25
30
  if (!invoice.id) {
26
- this.addControl('template', new FormControl(this.defaultTemplate));
31
+ (this.commonData).addControl('template', new FormControl(this.defaultTemplate));
27
32
  this.updateTemplateRelatedFields(this.defaultTemplate);
28
33
  }
29
34
  // invoice.taxType is always NONE ('No Tax') when soleDetails.isGST === false
30
35
  if (!this.soleDetailsGST) {
31
- this.get('taxType').setValue(SoleInvoiceTaxTypeEnum.NO_TAX);
32
- this.get('taxType').disable();
36
+ this.commonData.get('taxType').setValue(SoleInvoiceTaxTypeEnum.NO_TAX);
37
+ this.commonData.get('taxType').disable();
33
38
  // Items isGST is not available when invoice.taxType === NONE ('No Tax')
34
39
  this.items.controls.forEach((itemForm) => {
35
40
  this.disableItemGST(itemForm);
@@ -49,8 +54,8 @@ export class SoleInvoiceForm extends AbstractForm {
49
54
  this.listenItemChartAccountsChanges(itemForm);
50
55
  });
51
56
  }
52
- // nothing to listen if template field is not учшые (edit invoice case)
53
- if (this.contains('template')) {
57
+ // nothing to listen if template field is not exist (edit invoice case)
58
+ if ((this.commonData).contains('template')) {
54
59
  this.listenTemplateChanges();
55
60
  }
56
61
  }
@@ -67,15 +72,20 @@ export class SoleInvoiceForm extends AbstractForm {
67
72
  this.items.removeAt(index);
68
73
  }
69
74
  submit(data = {}) {
70
- // @TODO Alex TT-2190: move child custom forms submit to Abstract Form
71
- const items = this.items.controls.map((control) => control.submit());
72
- return super.submit(merge(data, { items }));
75
+ this.submitted = true;
76
+ this.markAllAsTouched();
77
+ if (!this.disabled && !this.valid) {
78
+ return null;
79
+ }
80
+ const invoiceInstance = this.currentValue;
81
+ this.onSubmit.emit(invoiceInstance);
82
+ return invoiceInstance;
73
83
  }
74
84
  /**
75
85
  * Update default values from selected invoice template
76
86
  */
77
87
  listenTemplateChanges() {
78
- this.get('template').valueChanges.subscribe((template) => {
88
+ this.commonData.get('template').valueChanges.subscribe((template) => {
79
89
  this.updateTemplateRelatedFields(template);
80
90
  });
81
91
  }
@@ -83,7 +93,7 @@ export class SoleInvoiceForm extends AbstractForm {
83
93
  * GST is not available for items when invoice.taxType === NONE
84
94
  */
85
95
  listenTaxTypeChanges() {
86
- this.get('taxType').valueChanges.subscribe((type) => {
96
+ this.commonData.get('taxType').valueChanges.subscribe((type) => {
87
97
  this.items.controls.forEach((itemForm) => {
88
98
  const chartAccounts = itemForm.get('chartAccounts').value;
89
99
  // Item GST is available when invoice.taxType !== NONE ('No Tax')
@@ -96,18 +106,18 @@ export class SoleInvoiceForm extends AbstractForm {
96
106
  });
97
107
  }
98
108
  updateTemplateRelatedFields(template) {
99
- this.get('bankAccount').setValue(template.bankAccount);
100
- const dateFrom = this.get('dateFrom').value;
109
+ this.commonData.get('bankAccount').setValue(template.bankAccount);
110
+ const dateFrom = this.commonData.get('dateFrom').value;
101
111
  if (dateFrom) {
102
- this.get('dateTo').setValue(new Date(dateFrom.getTime() + template.termTime));
112
+ this.commonData.get('dateTo').setValue(new Date(dateFrom.getTime() + template.termTime));
103
113
  }
104
114
  // invoice.taxType is always 'No Tax' when soleDetails.isGST = false and not available for changing
105
115
  if (this.soleDetailsGST) {
106
- this.get('taxType').setValue(template.taxType);
116
+ this.commonData.get('taxType').setValue(template.taxType);
107
117
  }
108
118
  }
109
119
  /**
110
- * GST availability depends of chart accounts isGST flag
120
+ * GST availability depends on chart accounts isGST flag
111
121
  */
112
122
  listenItemChartAccountsChanges(itemForm) {
113
123
  itemForm.get('chartAccounts').valueChanges.subscribe((chartAccounts) => {
@@ -131,5 +141,15 @@ export class SoleInvoiceForm extends AbstractForm {
131
141
  itemForm.get('isGST').setValue(true);
132
142
  itemForm.get('isGST').enable();
133
143
  }
144
+ get commonData() {
145
+ return this.get('commonData');
146
+ }
147
+ /**
148
+ * Rewrite abstract form getter to flat "commonData" field, which is not in the class
149
+ */
150
+ get currentValue() {
151
+ const formRawValue = this.getRawValue();
152
+ return plainToClass(SoleInvoice, Object.assign({}, this.model, Object.assign(Object.assign({}, formRawValue.commonData), { items: formRawValue.items })));
153
+ }
134
154
  }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1pbnZvaWNlLmZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvZm9ybXMvc29sZS9zb2xlLWludm9pY2UuZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFlLGVBQWUsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUdqQyxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxZQUF5QjtJQUM1RCxZQUNVLE9BQW9CLEVBQ3BCLGNBQXVCO0lBQy9CLHFDQUFxQztJQUM3QixlQUFvQztRQUU1QyxLQUFLLENBQUM7WUFDSixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDOUUsTUFBTSxFQUFFLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM1RCxLQUFLLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBcUIsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIs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LENBQUMsUUFBNkI7UUFDakQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdEZvcm0gfSBmcm9tICcuLi9hYnN0cmFjdC5mb3JtJztcbmltcG9ydCB7IFNvbGVJbnZvaWNlLCBTb2xlSW52b2ljZUl0ZW0sIFNvbGVJbnZvaWNlVGVtcGxhdGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNvbGVJbnZvaWNlSXRlbUZvcm0gfSBmcm9tICcuL3NvbGUtaW52b2ljZS1pdGVtLmZvcm0nO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTb2xlSW52b2ljZVRheFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvc29sZS1pbnZvaWNlLXRheC10eXBlLmVudW0nO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzJztcblxuZXhwb3J0IGNsYXNzIFNvbGVJbnZvaWNlRm9ybSBleHRlbmRzIEFic3RyYWN0Rm9ybTxTb2xlSW52b2ljZT4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW52b2ljZTogU29sZUludm9pY2UsXG4gICAgcHJpdmF0ZSBzb2xlRGV0YWlsc0dTVDogYm9vbGVhbixcbiAgICAvLyBkZWZhdWx0IHRlbXBsYXRlIHRvIGJlIHByZXNlbGVjdGVkXG4gICAgcHJpdmF0ZSBkZWZhdWx0VGVtcGxhdGU6IFNvbGVJbnZvaWNlVGVtcGxhdGUsXG4gICkge1xuICAgIHN1cGVyKHtcbiAgICAgIGRhdGVGcm9tOiBuZXcgRm9ybUNvbnRyb2woaW52b2ljZS5kYXRlRnJvbSB8fCBuZXcgRGF0ZSgpLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGRhdGVUbzogbmV3IEZvcm1Db250cm9sKGludm9pY2UuZGF0ZVRvLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGl0ZW1zOiBuZXcgRm9ybUFycmF5KChpbnZvaWNlLml0ZW1zIHx8IFtwbGFpblRvQ2xhc3MoU29sZUludm9pY2VJdGVtLCB7fSldKS5tYXAoKGl0ZW06IFNvbGVJbnZvaWNlSXRlbSkgPT4gbmV3IFNvbGVJbnZvaWNlSXRlbUZvcm0oaXRlbSkpKSxcbiAgICAgIHBheWVyOiBuZXcgRm9ybUNvbnRyb2woaW52b2ljZS5wYXllciwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICB0YXhUeXBlOiBuZXcgRm9ybUNvbnRyb2woaW52b2ljZS50YXhUeXBlLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGJhbmtBY2NvdW50OiBuZXcgRm9ybUNvbnRyb2woaW52b2ljZS5iYW5rQWNjb3VudCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICByZWZlcmVuY2U6IG5ldyBGb3JtQ29udHJvbChpbnZvaWNlLnJlZmVyZW5jZSlcbiAgICB9LCBpbnZvaWNlKTtcblxuICAgIC8vIHdlIG5lZWQgaW52b2ljZSB0ZW1wbGF0ZSBvbmx5IGZvciBuZXcgaW52b2ljZXNcbiAgICBpZiAoIWludm9pY2UuaWQpIHtcbiAgICAgIHRoaXMuYWRkQ29udHJvbCgndGVtcGxhdGUnLCBuZXcgRm9ybUNvbnRyb2wodGhpcy5kZWZhdWx0VGVtcGxhdGUpKTtcblxuICAgICAgdGhpcy51cGRhdGVUZW1wbGF0ZVJlbGF0ZWRGaWVsZHModGhpcy5kZWZhdWx0VGVtcGxhdGUpO1xuICAgIH1cblxuICAgIC8vIGludm9pY2UudGF4VHlwZSBpcyBhbHdheXMgTk9ORSAoJ05vIFRheCcpIHdoZW4gc29sZURldGFpbHMuaXNHU1QgPT09IGZhbHNlXG4gICAgaWYgKCF0aGlzLnNvbGVEZXRhaWxzR1NUKSB7XG4gICAgICB0aGlzLmdldCgndGF4VHlwZScpLnNldFZhbHVlKFNvbGVJbnZvaWNlVGF4VHlwZUVudW0uTk9fVEFYKTtcbiAgICAgIHRoaXMuZ2V0KCd0YXhUeXBlJykuZGlzYWJsZSgpO1xuXG4gICAgICAvLyBJdGVtcyBpc0dTVCBpcyBub3QgYXZhaWxhYmxlIHdoZW4gaW52b2ljZS50YXhUeXBlID09PSBOT05FICgnTm8gVGF4JylcbiAgICAgIHRoaXMuaXRlbXMuY29udHJvbHMuZm9yRWFjaCgoaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0pID0+IHtcbiAgICAgICAgdGhpcy5kaXNhYmxlSXRlbUdTVChpdGVtRm9ybSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmxpc3RlbkV2ZW50cygpO1xuICB9XG5cbiAgZ2V0IGl0ZW1zKCk6IEZvcm1BcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KCdpdGVtcycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICAvLyBubyBuZWVkIHRvIGxpc3RlbiB0YXggdHlwZSBhbmQgaXRlbXMgY2hhcnQgYWNjb3VudHMgY2hhbmdlcyB3aGVuIHNvbGVEZXRhaWxzLmlzR1NUID09PSBmYWxzZVxuICAgIC8vIGJlY2F1c2UgaW52b2ljZSB0YXggdHlwZSBhbHdheXMgJ05vIFRheCcgaW4gdGhpcyBjYXNlIGFuZCBub3QgYXZhaWxhYmxlIGZvciBjaGFuZ2luZ1xuICAgIGlmICh0aGlzLnNvbGVEZXRhaWxzR1NUKSB7XG4gICAgICB0aGlzLmxpc3RlblRheFR5cGVDaGFuZ2VzKCk7XG5cbiAgICAgIHRoaXMuaXRlbXMuY29udHJvbHMuZm9yRWFjaCgoaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0pID0+IHtcbiAgICAgICAgdGhpcy5saXN0ZW5JdGVtQ2hhcnRBY2NvdW50c0NoYW5nZXMoaXRlbUZvcm0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gbm90aGluZyB0byBsaXN0ZW4gaWYgdGVtcGxhdGUgZmllbGQgaXMgbm90INGD0YfRiNGL0LUgKGVkaXQgaW52b2ljZSBjYXNlKVxuICAgIGlmICh0aGlzLmNvbnRhaW5zKCd0ZW1wbGF0ZScpKSB7XG4gICAgICB0aGlzLmxpc3RlblRlbXBsYXRlQ2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEl0ZW0oKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0gPSBuZXcgU29sZUludm9pY2VJdGVtRm9ybShwbGFpblRvQ2xhc3MoU29sZUludm9pY2VJdGVtLCB7fSkpO1xuICAgIC8vIG5vIG5lZWQgdG8gbGlzdGVuIGl0ZW1zIGNoYXJ0IGFjY291bnRzIGNoYW5nZXMgd2hlbiBzb2xlRGV0YWlscy5pc0dTVCA9PT0gZmFsc2VcbiAgICAvLyBiZWNhdXNlIGludm9pY2UgdGF4IHR5cGUgYWx3YXlzICdObyBUYXgnIGluIHRoaXMgY2FzZSBhbmQgbm90IGF2YWlsYWJsZSBmb3IgY2hhbmdpbmdcbiAgICBpZiAodGhpcy5zb2xlRGV0YWlsc0dTVCkge1xuICAgICAgdGhpcy5saXN0ZW5JdGVtQ2hhcnRBY2NvdW50c0NoYW5nZXMoaXRlbUZvcm0pO1xuICAgIH1cblxuICAgIHRoaXMuaXRlbXMucHVzaChpdGVtRm9ybSk7XG4gIH1cblxuICByZW1vdmVJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zLnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIHN1Ym1pdChkYXRhOiBvYmplY3QgPSB7fSk6IFNvbGVJbnZvaWNlIHtcbiAgICAvLyBAVE9ETyBBbGV4IFRULTIxOTA6IG1vdmUgY2hpbGQgY3VzdG9tIGZvcm1zIHN1Ym1pdCB0byBBYnN0cmFjdCBGb3JtXG4gICAgY29uc3QgaXRlbXM6IFNvbGVJbnZvaWNlSXRlbVtdID0gdGhpcy5pdGVtcy5jb250cm9scy5tYXAoKGNvbnRyb2w6IFNvbGVJbnZvaWNlSXRlbUZvcm0pID0+IGNvbnRyb2wuc3VibWl0KCkpO1xuXG4gICAgcmV0dXJuIHN1cGVyLnN1Ym1pdChtZXJnZShkYXRhLCB7aXRlbXN9KSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGRlZmF1bHQgdmFsdWVzIGZyb20gc2VsZWN0ZWQgaW52b2ljZSB0ZW1wbGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5UZW1wbGF0ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5nZXQoJ3RlbXBsYXRlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodGVtcGxhdGU6IFNvbGVJbnZvaWNlVGVtcGxhdGUpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVGVtcGxhdGVSZWxhdGVkRmllbGRzKHRlbXBsYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHU1QgaXMgbm90IGF2YWlsYWJsZSBmb3IgaXRlbXMgd2hlbiBpbnZvaWNlLnRheFR5cGUgPT09IE5PTkVcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVGF4VHlwZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5nZXQoJ3RheFR5cGUnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh0eXBlOiBTb2xlSW52b2ljZVRheFR5cGVFbnVtKSA9PiB7XG4gICAgICB0aGlzLml0ZW1zLmNvbnRyb2xzLmZvckVhY2goKGl0ZW1Gb3JtOiBTb2xlSW52b2ljZUl0ZW1Gb3JtKSA9PiB7XG4gICAgICAgIGNvbnN0IGNoYXJ0QWNjb3VudHM6IENoYXJ0QWNjb3VudHMgPSBpdGVtRm9ybS5nZXQoJ2NoYXJ0QWNjb3VudHMnKS52YWx1ZTtcblxuICAgICAgICAvLyBJdGVtIEdTVCBpcyBhdmFpbGFibGUgd2hlbiBpbnZvaWNlLnRheFR5cGUgIT09IE5PTkUgKCdObyBUYXgnKVxuICAgICAgICBpZiAodHlwZSAhPT0gU29sZUludm9pY2VUYXhUeXBlRW51bS5OT19UQVggJiYgY2hhcnRBY2NvdW50cz8uaXNHU1QgKSB7XG4gICAgICAgICAgdGhpcy5lbmFibGVJdGVtR1NUKGl0ZW1Gb3JtKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpc2FibGVJdGVtR1NUKGl0ZW1Gb3JtKTtcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGVtcGxhdGVSZWxhdGVkRmllbGRzKHRlbXBsYXRlOiBTb2xlSW52b2ljZVRlbXBsYXRlKTogdm9pZCB7XG4gICAgdGhpcy5nZXQoJ2JhbmtBY2NvdW50Jykuc2V0VmFsdWUodGVtcGxhdGUuYmFua0FjY291bnQpO1xuXG4gICAgY29uc3QgZGF0ZUZyb206IERhdGUgPSB0aGlzLmdldCgnZGF0ZUZyb20nKS52YWx1ZTtcbiAgICBpZiAoZGF0ZUZyb20pIHtcbiAgICAgIHRoaXMuZ2V0KCdkYXRlVG8nKS5zZXRWYWx1ZShuZXcgRGF0ZShkYXRlRnJvbS5nZXRUaW1lKCkgKyB0ZW1wbGF0ZS50ZXJtVGltZSkpO1xuICAgIH1cblxuICAgIC8vIGludm9pY2UudGF4VHlwZSBpcyBhbHdheXMgJ05vIFRheCcgd2hlbiBzb2xlRGV0YWlscy5pc0dTVCA9IGZhbHNlIGFuZCBub3QgYXZhaWxhYmxlIGZvciBjaGFuZ2luZ1xuICAgIGlmICh0aGlzLnNvbGVEZXRhaWxzR1NUKSB7XG4gICAgICB0aGlzLmdldCgndGF4VHlwZScpLnNldFZhbHVlKHRlbXBsYXRlLnRheFR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHU1QgYXZhaWxhYmlsaXR5IGRlcGVuZHMgb2YgY2hhcnQgYWNjb3VudHMgaXNHU1QgZmxhZ1xuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5JdGVtQ2hhcnRBY2NvdW50c0NoYW5nZXMoaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0pOiB2b2lkIHtcbiAgICBpdGVtRm9ybS5nZXQoJ2NoYXJ0QWNjb3VudHMnKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChjaGFydEFjY291bnRzOiBDaGFydEFjY291bnRzKSA9PiB7XG4gICAgICAvLyBpdGVtLmlzR1NUIGlzIGF2YWlsYWJsZSBvbmx5IHdoZW4gaXRlbS5jaGFydEFjY291bnRzLmlzR1NUID09PSB0cnVlLCBzb2xlRGV0YWlscy5pc0dTVCA9PT0gdHJ1ZSBhbmQgaW52b2ljZS50YXhUeXBlICE9PSBOT05FICgnTm8gVGF4JylcbiAgICAgIGlmICh0aGlzLnNvbGVEZXRhaWxzR1NUICYmIGNoYXJ0QWNjb3VudHMuaXNHU1QgJiYgIXRoaXMuY3VycmVudFZhbHVlLmlzTm9UYXgoKSkge1xuICAgICAgICB0aGlzLmVuYWJsZUl0ZW1HU1QoaXRlbUZvcm0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzYWJsZUl0ZW1HU1QoaXRlbUZvcm0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlSXRlbUdTVChpdGVtRm9ybTogU29sZUludm9pY2VJdGVtRm9ybSk6IHZvaWQge1xuICAgIGl0ZW1Gb3JtLmdldCgnaXNHU1QnKS5zZXRWYWx1ZShmYWxzZSk7XG4gICAgaXRlbUZvcm0uZ2V0KCdpc0dTVCcpLmRpc2FibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGUgR1NUIGZpZWxkIGZvciBwYXNzZWQgaXRlbSBmb3JtLiBWYWx1ZSBpcyBhbHdheXMgdHJ1ZSBieSBkZWZhdWx0IGJlY2F1c2Ugb25seSBjYXNlIHdoZW4gdGhpcyBmaWVsZCBpcyBlbmFibGVkIGlzXG4gICAqIHdoZW4gQ2hhcnRBY2NvdW50cy5pc0dTVCA9PT0gdHJ1ZSwgc28gd2UganVzdCB1c2UgZGVmYXVsdCB2YWx1ZSBmcm9tIGNoYXJ0QWNjb3VudHMuaXNHU1RcbiAgICovXG4gIHByaXZhdGUgZW5hYmxlSXRlbUdTVChpdGVtRm9ybTogU29sZUludm9pY2VJdGVtRm9ybSk6IHZvaWQge1xuICAgIGl0ZW1Gb3JtLmdldCgnaXNHU1QnKS5zZXRWYWx1ZSh0cnVlKTtcbiAgICBpdGVtRm9ybS5nZXQoJ2lzR1NUJykuZW5hYmxlKCk7XG4gIH1cbn1cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1pbnZvaWNlLmZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvZm9ybXMvc29sZS9zb2xlLWludm9pY2UuZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFakQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFHbkY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGVBQWdCLFNBQVEsWUFBeUI7SUFDNUQsWUFDVSxPQUFvQixFQUNwQixjQUF1QjtJQUMvQixxQ0FBcUM7SUFDN0IsZUFBb0M7UUFFNUMsS0FBSyxDQUFDO1lBQ0osVUFBVSxFQUFFLElBQUksU0FBUyxDQUFDO2dCQUN4QixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzlFLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzVELEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQzFELE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxF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QUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxRQUE2QjtRQUNsRCxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxhQUFhLENBQUMsUUFBNkI7UUFDakQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBYyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE1BQU0sWUFBWSxHQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU3QyxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FDNUMsRUFBRSxFQUNGLElBQUksQ0FBQyxLQUFLLGtDQUNOLFlBQVksQ0FBQyxVQUFVLEtBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxLQUFLLElBQ3ZELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Rm9ybSB9IGZyb20gJy4uL2Fic3RyYWN0LmZvcm0nO1xuaW1wb3J0IHsgU29sZUludm9pY2UsIFNvbGVJbnZvaWNlSXRlbSwgU29sZUludm9pY2VUZW1wbGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTb2xlSW52b2ljZUl0ZW1Gb3JtIH0gZnJvbSAnLi9zb2xlLWludm9pY2UtaXRlbS5mb3JtJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU29sZUludm9pY2VUYXhUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3NvbGUtaW52b2ljZS10YXgtdHlwZS5lbnVtJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMnO1xuXG4vKipcbiAqIEZvcm0gaXMgZGl2aWRlZCBpbnRvIHR3byBncm91cHMsIHNpbmNlIHRoZSBjcmVhdGlvbiBvZiBTb2xlIGludm9pY2UgdGFrZXMgcGxhY2UgaW4gdHdvIHN0ZXBzOlxuICogYSBjb21tb24gaW52b2ljZSBkYXRhIGFuZCBzb2xlIGludm9pY2UgaXRlbXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTb2xlSW52b2ljZUZvcm0gZXh0ZW5kcyBBYnN0cmFjdEZvcm08U29sZUludm9pY2U+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGludm9pY2U6IFNvbGVJbnZvaWNlLFxuICAgIHByaXZhdGUgc29sZURldGFpbHNHU1Q6IGJvb2xlYW4sXG4gICAgLy8gZGVmYXVsdCB0ZW1wbGF0ZSB0byBiZSBwcmVzZWxlY3RlZFxuICAgIHByaXZhdGUgZGVmYXVsdFRlbXBsYXRlOiBTb2xlSW52b2ljZVRlbXBsYXRlLFxuICApIHtcbiAgICBzdXBlcih7XG4gICAgICBjb21tb25EYXRhOiBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbChpbnZvaWNlLmRhdGVGcm9tIHx8IG5ldyBEYXRlKCksIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBkYXRlVG86IG5ldyBGb3JtQ29udHJvbChpbnZvaWNlLmRhdGVUbywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIHBheWVyOiBuZXcgRm9ybUNvbnRyb2woaW52b2ljZS5wYXllciwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIHRheFR5cGU6IG5ldyBGb3JtQ29udHJvbChpbnZvaWNlLnRheFR5cGUsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBiYW5rQWNjb3VudDogbmV3IEZvcm1Db250cm9sKGludm9pY2UuYmFua0FjY291bnQsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICByZWZlcmVuY2U6IG5ldyBGb3JtQ29udHJvbChpbnZvaWNlLnJlZmVyZW5jZSlcbiAgICAgIH0pLFxuICAgICAgaXRlbXM6IG5ldyBGb3JtQXJyYXkoKGludm9pY2UuaXRlbXMgfHwgW3BsYWluVG9DbGFzcyhTb2xlSW52b2ljZUl0ZW0sIHt9KV0pLm1hcCgoaXRlbTogU29sZUludm9pY2VJdGVtKSA9PiBuZXcgU29sZUludm9pY2VJdGVtRm9ybShpdGVtKSkpLFxuICAgIH0sIGludm9pY2UpO1xuXG4gICAgLy8gd2UgbmVlZCBpbnZvaWNlIHRlbXBsYXRlIG9ubHkgZm9yIG5ldyBpbnZvaWNlc1xuICAgIGlmICghaW52b2ljZS5pZCkge1xuICAgICAgKHRoaXMuY29tbW9uRGF0YSkuYWRkQ29udHJvbCgndGVtcGxhdGUnLCBuZXcgRm9ybUNvbnRyb2wodGhpcy5kZWZhdWx0VGVtcGxhdGUpKTtcblxuICAgICAgdGhpcy51cGRhdGVUZW1wbGF0ZVJlbGF0ZWRGaWVsZHModGhpcy5kZWZhdWx0VGVtcGxhdGUpO1xuICAgIH1cblxuICAgIC8vIGludm9pY2UudGF4VHlwZSBpcyBhbHdheXMgTk9ORSAoJ05vIFRheCcpIHdoZW4gc29sZURldGFpbHMuaXNHU1QgPT09IGZhbHNlXG4gICAgaWYgKCF0aGlzLnNvbGVEZXRhaWxzR1NUKSB7XG4gICAgICB0aGlzLmNvbW1vbkRhdGEuZ2V0KCd0YXhUeXBlJykuc2V0VmFsdWUoU29sZUludm9pY2VUYXhUeXBlRW51bS5OT19UQVgpO1xuICAgICAgdGhpcy5jb21tb25EYXRhLmdldCgndGF4VHlwZScpLmRpc2FibGUoKTtcblxuICAgICAgLy8gSXRlbXMgaXNHU1QgaXMgbm90IGF2YWlsYWJsZSB3aGVuIGludm9pY2UudGF4VHlwZSA9PT0gTk9ORSAoJ05vIFRheCcpXG4gICAgICB0aGlzLml0ZW1zLmNvbnRyb2xzLmZvckVhY2goKGl0ZW1Gb3JtOiBTb2xlSW52b2ljZUl0ZW1Gb3JtKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUl0ZW1HU1QoaXRlbUZvcm0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgfVxuXG4gIGdldCBpdGVtcygpOiBGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmdldCgnaXRlbXMnKSBhcyBGb3JtQXJyYXk7XG4gIH1cblxuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgLy8gbm8gbmVlZCB0byBsaXN0ZW4gdGF4IHR5cGUgYW5kIGl0ZW1zIGNoYXJ0IGFjY291bnRzIGNoYW5nZXMgd2hlbiBzb2xlRGV0YWlscy5pc0dTVCA9PT0gZmFsc2VcbiAgICAvLyBiZWNhdXNlIGludm9pY2UgdGF4IHR5cGUgYWx3YXlzICdObyBUYXgnIGluIHRoaXMgY2FzZSBhbmQgbm90IGF2YWlsYWJsZSBmb3IgY2hhbmdpbmdcbiAgICBpZiAodGhpcy5zb2xlRGV0YWlsc0dTVCkge1xuICAgICAgdGhpcy5saXN0ZW5UYXhUeXBlQ2hhbmdlcygpO1xuXG4gICAgICB0aGlzLml0ZW1zLmNvbnRyb2xzLmZvckVhY2goKGl0ZW1Gb3JtOiBTb2xlSW52b2ljZUl0ZW1Gb3JtKSA9PiB7XG4gICAgICAgIHRoaXMubGlzdGVuSXRlbUNoYXJ0QWNjb3VudHNDaGFuZ2VzKGl0ZW1Gb3JtKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIG5vdGhpbmcgdG8gbGlzdGVuIGlmIHRlbXBsYXRlIGZpZWxkIGlzIG5vdCBleGlzdCAoZWRpdCBpbnZvaWNlIGNhc2UpXG4gICAgaWYgKCh0aGlzLmNvbW1vbkRhdGEpLmNvbnRhaW5zKCd0ZW1wbGF0ZScpKSB7XG4gICAgICB0aGlzLmxpc3RlblRlbXBsYXRlQ2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEl0ZW0oKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0gPSBuZXcgU29sZUludm9pY2VJdGVtRm9ybShwbGFpblRvQ2xhc3MoU29sZUludm9pY2VJdGVtLCB7fSkpO1xuICAgIC8vIG5vIG5lZWQgdG8gbGlzdGVuIGl0ZW1zIGNoYXJ0IGFjY291bnRzIGNoYW5nZXMgd2hlbiBzb2xlRGV0YWlscy5pc0dTVCA9PT0gZmFsc2VcbiAgICAvLyBiZWNhdXNlIGludm9pY2UgdGF4IHR5cGUgYWx3YXlzICdObyBUYXgnIGluIHRoaXMgY2FzZSBhbmQgbm90IGF2YWlsYWJsZSBmb3IgY2hhbmdpbmdcbiAgICBpZiAodGhpcy5zb2xlRGV0YWlsc0dTVCkge1xuICAgICAgdGhpcy5saXN0ZW5JdGVtQ2hhcnRBY2NvdW50c0NoYW5nZXMoaXRlbUZvcm0pO1xuICAgIH1cblxuICAgIHRoaXMuaXRlbXMucHVzaChpdGVtRm9ybSk7XG4gIH1cblxuICByZW1vdmVJdGVtKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zLnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIHN1Ym1pdChkYXRhOiBvYmplY3QgPSB7fSk6IFNvbGVJbnZvaWNlIHtcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCgpO1xuXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMudmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGludm9pY2VJbnN0YW5jZTogU29sZUludm9pY2UgPSB0aGlzLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KGludm9pY2VJbnN0YW5jZSk7XG4gICAgICByZXR1cm4gaW52b2ljZUluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBkZWZhdWx0IHZhbHVlcyBmcm9tIHNlbGVjdGVkIGludm9pY2UgdGVtcGxhdGVcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVGVtcGxhdGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29tbW9uRGF0YS5nZXQoJ3RlbXBsYXRlJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodGVtcGxhdGU6IFNvbGVJbnZvaWNlVGVtcGxhdGUpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVGVtcGxhdGVSZWxhdGVkRmllbGRzKHRlbXBsYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHU1QgaXMgbm90IGF2YWlsYWJsZSBmb3IgaXRlbXMgd2hlbiBpbnZvaWNlLnRheFR5cGUgPT09IE5PTkVcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVGF4VHlwZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jb21tb25EYXRhLmdldCgndGF4VHlwZScpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHR5cGU6IFNvbGVJbnZvaWNlVGF4VHlwZUVudW0pID0+IHtcbiAgICAgIHRoaXMuaXRlbXMuY29udHJvbHMuZm9yRWFjaCgoaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0pID0+IHtcbiAgICAgICAgY29uc3QgY2hhcnRBY2NvdW50czogQ2hhcnRBY2NvdW50cyA9IGl0ZW1Gb3JtLmdldCgnY2hhcnRBY2NvdW50cycpLnZhbHVlO1xuXG4gICAgICAgIC8vIEl0ZW0gR1NUIGlzIGF2YWlsYWJsZSB3aGVuIGludm9pY2UudGF4VHlwZSAhPT0gTk9ORSAoJ05vIFRheCcpXG4gICAgICAgIGlmICh0eXBlICE9PSBTb2xlSW52b2ljZVRheFR5cGVFbnVtLk5PX1RBWCAmJiBjaGFydEFjY291bnRzPy5pc0dTVCApIHtcbiAgICAgICAgICB0aGlzLmVuYWJsZUl0ZW1HU1QoaXRlbUZvcm0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlzYWJsZUl0ZW1HU1QoaXRlbUZvcm0pO1xuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUZW1wbGF0ZVJlbGF0ZWRGaWVsZHModGVtcGxhdGU6IFNvbGVJbnZvaWNlVGVtcGxhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmNvbW1vbkRhdGEuZ2V0KCdiYW5rQWNjb3VudCcpLnNldFZhbHVlKHRlbXBsYXRlLmJhbmtBY2NvdW50KTtcblxuICAgIGNvbnN0IGRhdGVGcm9tOiBEYXRlID0gdGhpcy5jb21tb25EYXRhLmdldCgnZGF0ZUZyb20nKS52YWx1ZTtcbiAgICBpZiAoZGF0ZUZyb20pIHtcbiAgICAgIHRoaXMuY29tbW9uRGF0YS5nZXQoJ2RhdGVUbycpLnNldFZhbHVlKG5ldyBEYXRlKGRhdGVGcm9tLmdldFRpbWUoKSArIHRlbXBsYXRlLnRlcm1UaW1lKSk7XG4gICAgfVxuXG4gICAgLy8gaW52b2ljZS50YXhUeXBlIGlzIGFsd2F5cyAnTm8gVGF4JyB3aGVuIHNvbGVEZXRhaWxzLmlzR1NUID0gZmFsc2UgYW5kIG5vdCBhdmFpbGFibGUgZm9yIGNoYW5naW5nXG4gICAgaWYgKHRoaXMuc29sZURldGFpbHNHU1QpIHtcbiAgICAgIHRoaXMuY29tbW9uRGF0YS5nZXQoJ3RheFR5cGUnKS5zZXRWYWx1ZSh0ZW1wbGF0ZS50YXhUeXBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR1NUIGF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIGNoYXJ0IGFjY291bnRzIGlzR1NUIGZsYWdcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuSXRlbUNoYXJ0QWNjb3VudHNDaGFuZ2VzKGl0ZW1Gb3JtOiBTb2xlSW52b2ljZUl0ZW1Gb3JtKTogdm9pZCB7XG4gICAgaXRlbUZvcm0uZ2V0KCdjaGFydEFjY291bnRzJykudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoY2hhcnRBY2NvdW50czogQ2hhcnRBY2NvdW50cykgPT4ge1xuICAgICAgLy8gaXRlbS5pc0dTVCBpcyBhdmFpbGFibGUgb25seSB3aGVuIGl0ZW0uY2hhcnRBY2NvdW50cy5pc0dTVCA9PT0gdHJ1ZSwgc29sZURldGFpbHMuaXNHU1QgPT09IHRydWUgYW5kIGludm9pY2UudGF4VHlwZSAhPT0gTk9ORSAoJ05vIFRheCcpXG4gICAgICBpZiAodGhpcy5zb2xlRGV0YWlsc0dTVCAmJiBjaGFydEFjY291bnRzLmlzR1NUICYmICF0aGlzLmN1cnJlbnRWYWx1ZS5pc05vVGF4KCkpIHtcbiAgICAgICAgdGhpcy5lbmFibGVJdGVtR1NUKGl0ZW1Gb3JtKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRpc2FibGVJdGVtR1NUKGl0ZW1Gb3JtKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZUl0ZW1HU1QoaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0pOiB2b2lkIHtcbiAgICBpdGVtRm9ybS5nZXQoJ2lzR1NUJykuc2V0VmFsdWUoZmFsc2UpO1xuICAgIGl0ZW1Gb3JtLmdldCgnaXNHU1QnKS5kaXNhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlIEdTVCBmaWVsZCBmb3IgcGFzc2VkIGl0ZW0gZm9ybS4gVmFsdWUgaXMgYWx3YXlzIHRydWUgYnkgZGVmYXVsdCBiZWNhdXNlIG9ubHkgY2FzZSB3aGVuIHRoaXMgZmllbGQgaXMgZW5hYmxlZCBpc1xuICAgKiB3aGVuIENoYXJ0QWNjb3VudHMuaXNHU1QgPT09IHRydWUsIHNvIHdlIGp1c3QgdXNlIGRlZmF1bHQgdmFsdWUgZnJvbSBjaGFydEFjY291bnRzLmlzR1NUXG4gICAqL1xuICBwcml2YXRlIGVuYWJsZUl0ZW1HU1QoaXRlbUZvcm06IFNvbGVJbnZvaWNlSXRlbUZvcm0pOiB2b2lkIHtcbiAgICBpdGVtRm9ybS5nZXQoJ2lzR1NUJykuc2V0VmFsdWUodHJ1ZSk7XG4gICAgaXRlbUZvcm0uZ2V0KCdpc0dTVCcpLmVuYWJsZSgpO1xuICB9XG5cbiAgZ2V0IGNvbW1vbkRhdGEoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoJ2NvbW1vbkRhdGEnKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICAvKipcbiAgICogUmV3cml0ZSBhYnN0cmFjdCBmb3JtIGdldHRlciB0byBmbGF0IFwiY29tbW9uRGF0YVwiIGZpZWxkLCB3aGljaCBpcyBub3QgaW4gdGhlIGNsYXNzXG4gICAqL1xuICBnZXQgY3VycmVudFZhbHVlKCk6IFNvbGVJbnZvaWNlIHtcbiAgICBjb25zdCBmb3JtUmF3VmFsdWU6IGFueSA9IHRoaXMuZ2V0UmF3VmFsdWUoKTtcblxuICAgIHJldHVybiBwbGFpblRvQ2xhc3MoU29sZUludm9pY2UsIE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHRoaXMubW9kZWwsXG4gICAgICB7Li4uZm9ybVJhd1ZhbHVlLmNvbW1vbkRhdGEsIGl0ZW1zOiBmb3JtUmF3VmFsdWUuaXRlbXN9XG4gICAgKSk7XG4gIH1cbn1cbiJdfQ==
@@ -5,6 +5,24 @@ export class BasReport extends BasReportBase {
5
5
  get taxWithheldTotal() {
6
6
  return this.taxWithheldSalary + this.taxWithheldNoABN;
7
7
  }
8
+ get paygTaxInstalmentOwedToATO() {
9
+ return this.paygTaxInstalment > 0 ? this.paygTaxInstalment : 0;
10
+ }
11
+ get paygTaxInstalmentOwedByATO() {
12
+ return this.paygTaxInstalment < 0 ? Math.abs(this.paygTaxInstalment) : 0;
13
+ }
14
+ get fuelTaxCreditOwedToATO() {
15
+ return this.fuelTaxCredit < 0 ? this.fuelTaxCredit : 0;
16
+ }
17
+ get fuelTaxCreditOwedByATO() {
18
+ return this.fuelTaxCredit > 0 ? Math.abs(this.fuelTaxCredit) : 0;
19
+ }
20
+ get owesToATO() {
21
+ return this.incomeGST + this.taxWithheldTotal + this.paygTaxInstalmentOwedToATO + this.fuelTaxCreditOwedToATO;
22
+ }
23
+ get owedByATO() {
24
+ return this.expenseGST + this.paygTaxInstalmentOwedByATO + this.fuelTaxCreditOwedByATO;
25
+ }
8
26
  /**
9
27
  * GST payable to the ATO, or refundable from the ATO in case it's negative
10
28
  */
@@ -18,4 +36,4 @@ __decorate([
18
36
  __decorate([
19
37
  Type(() => Date)
20
38
  ], BasReport.prototype, "dateTo", void 0);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzLXJlcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvc29sZS9iYXMtcmVwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUV2QyxNQUFNLE9BQU8sU0FBVSxTQUFRLGFBQWE7SUFPMUMsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoSCxDQUFDO0NBQ0Y7QUFmQztJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0Y7QUFHZjtJQURDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNSZXBvcnQgYXMgQmFzUmVwb3J0QmFzZSB9IGZyb20gXCIuLi8uLi9kYi9Nb2RlbHMvc29sZS9iYXMtcmVwb3J0XCI7XG5pbXBvcnQge1R5cGV9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcblxuZXhwb3J0IGNsYXNzIEJhc1JlcG9ydCBleHRlbmRzIEJhc1JlcG9ydEJhc2Uge1xuICBAVHlwZSgoKSA9PiBEYXRlKVxuICBkYXRlRnJvbTogRGF0ZTtcblxuICBAVHlwZSgoKSA9PiBEYXRlKVxuICBkYXRlVG86IERhdGU7XG5cbiAgZ2V0IHRheFdpdGhoZWxkVG90YWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50YXhXaXRoaGVsZFNhbGFyeSArIHRoaXMudGF4V2l0aGhlbGROb0FCTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHU1QgcGF5YWJsZSB0byB0aGUgQVRPLCBvciByZWZ1bmRhYmxlIGZyb20gdGhlIEFUTyBpbiBjYXNlIGl0J3MgbmVnYXRpdmVcbiAgICovXG4gIGdldCBnc3QoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbmNvbWVHU1QgLSB0aGlzLmV4cGVuc2VHU1QgKyB0aGlzLnRheFdpdGhoZWxkVG90YWwgKyB0aGlzLnBheWdUYXhJbnN0YWxtZW50IC0gdGhpcy5mdWVsVGF4Q3JlZGl0O1xuICB9XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzLXJlcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvc29sZS9iYXMtcmVwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUV2QyxNQUFNLE9BQU8sU0FBVSxTQUFRLGFBQWE7SUFPMUMsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDaEgsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3pGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoSCxDQUFDO0NBQ0Y7QUF2Q0M7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNGO0FBR2Y7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO3lDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzUmVwb3J0IGFzIEJhc1JlcG9ydEJhc2UgfSBmcm9tIFwiLi4vLi4vZGIvTW9kZWxzL3NvbGUvYmFzLXJlcG9ydFwiO1xuaW1wb3J0IHtUeXBlfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5cbmV4cG9ydCBjbGFzcyBCYXNSZXBvcnQgZXh0ZW5kcyBCYXNSZXBvcnRCYXNlIHtcbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgZGF0ZUZyb206IERhdGU7XG5cbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgZGF0ZVRvOiBEYXRlO1xuXG4gIGdldCB0YXhXaXRoaGVsZFRvdGFsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGF4V2l0aGhlbGRTYWxhcnkgKyB0aGlzLnRheFdpdGhoZWxkTm9BQk47XG4gIH1cblxuICBnZXQgcGF5Z1RheEluc3RhbG1lbnRPd2VkVG9BVE8oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXlnVGF4SW5zdGFsbWVudCA+IDAgPyB0aGlzLnBheWdUYXhJbnN0YWxtZW50IDogMDtcbiAgfVxuXG4gIGdldCBwYXlnVGF4SW5zdGFsbWVudE93ZWRCeUFUTygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBheWdUYXhJbnN0YWxtZW50IDwgMCA/IE1hdGguYWJzKHRoaXMucGF5Z1RheEluc3RhbG1lbnQpIDogMDtcbiAgfVxuXG4gIGdldCBmdWVsVGF4Q3JlZGl0T3dlZFRvQVRPKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZnVlbFRheENyZWRpdCA8IDAgPyB0aGlzLmZ1ZWxUYXhDcmVkaXQgOiAwO1xuICB9XG5cbiAgZ2V0IGZ1ZWxUYXhDcmVkaXRPd2VkQnlBVE8oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mdWVsVGF4Q3JlZGl0ID4gMCA/IE1hdGguYWJzKHRoaXMuZnVlbFRheENyZWRpdCkgOiAwO1xuICB9XG5cbiAgZ2V0IG93ZXNUb0FUTygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmluY29tZUdTVCArIHRoaXMudGF4V2l0aGhlbGRUb3RhbCArIHRoaXMucGF5Z1RheEluc3RhbG1lbnRPd2VkVG9BVE8gKyB0aGlzLmZ1ZWxUYXhDcmVkaXRPd2VkVG9BVE87XG4gIH1cblxuICBnZXQgb3dlZEJ5QVRPKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZXhwZW5zZUdTVCArIHRoaXMucGF5Z1RheEluc3RhbG1lbnRPd2VkQnlBVE8gKyB0aGlzLmZ1ZWxUYXhDcmVkaXRPd2VkQnlBVE87XG4gIH1cblxuICAvKipcbiAgICogR1NUIHBheWFibGUgdG8gdGhlIEFUTywgb3IgcmVmdW5kYWJsZSBmcm9tIHRoZSBBVE8gaW4gY2FzZSBpdCdzIG5lZ2F0aXZlXG4gICAqL1xuICBnZXQgZ3N0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5jb21lR1NUIC0gdGhpcy5leHBlbnNlR1NUICsgdGhpcy50YXhXaXRoaGVsZFRvdGFsICsgdGhpcy5wYXlnVGF4SW5zdGFsbWVudCAtIHRoaXMuZnVlbFRheENyZWRpdDtcbiAgfVxufVxuIl19
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { RestService } from '../../rest/rest.service';
3
3
  import { SoleBusinessLoss } from '../../../../models';
4
+ import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
4
5
  import * as i0 from "@angular/core";
5
6
  export class SoleBusinessLossService extends RestService {
6
7
  constructor() {
@@ -9,6 +10,17 @@ export class SoleBusinessLossService extends RestService {
9
10
  this.url = 'sole-business-losses';
10
11
  this.isHydra = true;
11
12
  }
13
+ listenEvents() {
14
+ this.listenBusinessCreated();
15
+ }
16
+ /**
17
+ * Listen business created because we create prior year losses together with business
18
+ */
19
+ listenBusinessCreated() {
20
+ this.eventDispatcherService.on(AppEventTypeEnum.SOLE_BUSINESS_CREATED).subscribe(() => {
21
+ this.resetCache();
22
+ });
23
+ }
12
24
  }
13
25
  SoleBusinessLossService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleBusinessLossService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14
26
  SoleBusinessLossService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleBusinessLossService, providedIn: 'root' });
@@ -18,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
18
30
  providedIn: 'root'
19
31
  }]
20
32
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1idXNpbmVzcy1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9zb2xlL3NvbGUtYnVzaW5lc3MtbG9zcy9zb2xlLWJ1c2luZXNzLWxvc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFLdEQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFdBQW1EO0lBSGhHOztRQUlFLGVBQVUsR0FBNEIsZ0JBQWdCLENBQUM7UUFDdkQsUUFBRyxHQUFXLHNCQUFzQixDQUFDO1FBQ3JDLFlBQU8sR0FBWSxJQUFJLENBQUM7S0FDekI7O3FIQUpZLHVCQUF1Qjt5SEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcmVzdC9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU29sZUJ1c2luZXNzTG9zcyBhcyBTb2xlQnVzaW5lc3NMb3NzQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy9zb2xlL3NvbGUtYnVzaW5lc3MtbG9zcyc7XG5pbXBvcnQgeyBTb2xlQnVzaW5lc3NMb3NzIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU29sZUJ1c2luZXNzTG9zc1NlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxTb2xlQnVzaW5lc3NMb3NzQmFzZSwgU29sZUJ1c2luZXNzTG9zcz57XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBTb2xlQnVzaW5lc3NMb3NzID0gU29sZUJ1c2luZXNzTG9zcztcbiAgdXJsOiBzdHJpbmcgPSAnc29sZS1idXNpbmVzcy1sb3NzZXMnO1xuICBpc0h5ZHJhOiBib29sZWFuID0gdHJ1ZTtcbn1cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1idXNpbmVzcy1sb3NzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9zb2xlL3NvbGUtYnVzaW5lc3MtbG9zcy9zb2xlLWJ1c2luZXNzLWxvc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7QUFNaEYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFdBQW1EO0lBSGhHOztRQUlFLGVBQVUsR0FBNEIsZ0JBQWdCLENBQUM7UUFDdkQsUUFBRyxHQUFXLHNCQUFzQixDQUFDO1FBQ3JDLFlBQU8sR0FBWSxJQUFJLENBQUM7S0FjekI7SUFaQyxZQUFZO1FBQ1YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7O3FIQWhCVSx1QkFBdUI7eUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFNvbGVCdXNpbmVzc0xvc3MgYXMgU29sZUJ1c2luZXNzTG9zc0Jhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvc29sZS9zb2xlLWJ1c2luZXNzLWxvc3MnO1xuaW1wb3J0IHsgU29sZUJ1c2luZXNzTG9zcyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNvbGVCdXNpbmVzc0xvc3NTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8U29sZUJ1c2luZXNzTG9zc0Jhc2UsIFNvbGVCdXNpbmVzc0xvc3M+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgU29sZUJ1c2luZXNzTG9zcyA9IFNvbGVCdXNpbmVzc0xvc3M7XG4gIHVybDogc3RyaW5nID0gJ3NvbGUtYnVzaW5lc3MtbG9zc2VzJztcbiAgaXNIeWRyYTogYm9vbGVhbiA9IHRydWU7XG5cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuQnVzaW5lc3NDcmVhdGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGJ1c2luZXNzIGNyZWF0ZWQgYmVjYXVzZSB3ZSBjcmVhdGUgcHJpb3IgeWVhciBsb3NzZXMgdG9nZXRoZXIgd2l0aCBidXNpbmVzc1xuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5CdXNpbmVzc0NyZWF0ZWQoKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uU09MRV9CVVNJTkVTU19DUkVBVEVEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldENhY2hlKCk7XG4gICAgfSlcbiAgfVxufVxuIl19
@@ -6,6 +6,7 @@ import merge from 'lodash/merge';
6
6
  import { map } from 'rxjs/operators';
7
7
  import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
8
8
  import { AppEvent } from '../../../../models/event/app-event';
9
+ import last from 'lodash/last';
9
10
  import * as i0 from "@angular/core";
10
11
  export class SoleInvoiceService extends RestService {
11
12
  constructor() {
@@ -30,6 +31,16 @@ export class SoleInvoiceService extends RestService {
30
31
  sendEmail(invoice) {
31
32
  return this.http.post(`${this.environment.apiV2}/${this.url}/${invoice.id}/send`, {});
32
33
  }
34
+ /**
35
+ * Return the next number from the last invoice.
36
+ * Basically needed to create a new invoice to show its number when the invoice has not yet been sent to the backend
37
+ */
38
+ getNewInvoiceNumber() {
39
+ if (!this.cache) {
40
+ return 0;
41
+ }
42
+ return last(this.cache).number + 1;
43
+ }
33
44
  }
34
45
  SoleInvoiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleInvoiceService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
35
46
  SoleInvoiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleInvoiceService, providedIn: 'root' });
@@ -39,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
39
50
  providedIn: 'root'
40
51
  }]
41
52
  }] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1pbnZvaWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9zb2xlL3NvbGUtaW52b2ljZS9zb2xlLWludm9pY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFMUYsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBSzlELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxXQUF5QztJQUhqRjs7UUFJRSxlQUFVLEdBQXVCLFdBQVcsQ0FBQztRQUM3QyxRQUFHLEdBQVcsZUFBZSxDQUFDO1FBQzlCLFlBQU8sR0FBWSxJQUFJLENBQUM7S0F1QnpCO0lBckJDLFlBQVksQ0FBQyxPQUFvQixFQUFFLE1BQStCO1FBQ2hFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDNUQsMENBQTBDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQW9CLEVBQUUsUUFBa0I7UUFDOUMsMENBQTBDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQzthQUM1RixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsZ0JBQTZCLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUU5RyxPQUFPLGdCQUFnQixDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQW9CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDOztnSEF6QlUsa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTb2xlSW52b2ljZSBhcyBTb2xlSW52b2ljZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvc29sZS9zb2xlLWludm9pY2UnO1xuaW1wb3J0IHsgU29sZUludm9pY2UsIERvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNvbGVJbnZvaWNlU3RhdHVzZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvRW51bXMvc29sZS1pbnZvaWNlLXN0YXR1c2VzLmVudW0nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU29sZUludm9pY2VTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8U29sZUludm9pY2VCYXNlLCBTb2xlSW52b2ljZT4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgU29sZUludm9pY2UgPSBTb2xlSW52b2ljZTtcbiAgdXJsOiBzdHJpbmcgPSAnc29sZS1pbnZvaWNlcyc7XG4gIGlzSHlkcmE6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHVwZGF0ZVN0YXR1cyhpbnZvaWNlOiBTb2xlSW52b2ljZSwgc3RhdHVzOiBTb2xlSW52b2ljZVN0YXR1c2VzRW51bSk6IE9ic2VydmFibGU8U29sZUludm9pY2U+IHtcbiAgICBjb25zdCB1cGRhdGVkSW52b2ljZSA9IE9iamVjdC5hc3NpZ24oe30sIGludm9pY2UsIHtzdGF0dXN9KTtcbiAgICAvLyB1c2UgaWQgb25seSB0byBhdm9pZCB1bmV4cGVjdGVkIGNoYW5nZXNcbiAgICByZXR1cm4gdGhpcy51cGRhdGUodXBkYXRlZEludm9pY2UpO1xuICB9XG5cbiAgcHVibGlzaChpbnZvaWNlOiBTb2xlSW52b2ljZSwgZG9jdW1lbnQ6IERvY3VtZW50KTogT2JzZXJ2YWJsZTxTb2xlSW52b2ljZT4ge1xuICAgIC8vIHVzZSBpZCBvbmx5IHRvIGF2b2lkIHVuZXhwZWN0ZWQgY2hhbmdlc1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZShtZXJnZSh7fSwgaW52b2ljZSwgeyBkb2N1bWVudCwgc3RhdHVzOiBTb2xlSW52b2ljZVN0YXR1c2VzRW51bS5QRU5ESU5HIH0pKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChwdWJsaXNoZWRJbnZvaWNlOiBTb2xlSW52b2ljZSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uU09MRV9JTlZPSUNFX1BVQkxJU0hFRCwgcHVibGlzaGVkSW52b2ljZSkpO1xuXG4gICAgICAgIHJldHVybiBwdWJsaXNoZWRJbnZvaWNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2VuZEVtYWlsKGludm9pY2U6IFNvbGVJbnZvaWNlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7aW52b2ljZS5pZH0vc2VuZGAsIHt9KTtcbiAgfVxufVxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1pbnZvaWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9zb2xlL3NvbGUtaW52b2ljZS9zb2xlLWludm9pY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFMUYsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUQsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDOztBQUsvQixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBeUM7SUFIakY7O1FBSUUsZUFBVSxHQUF1QixXQUFXLENBQUM7UUFDN0MsUUFBRyxHQUFXLGVBQWUsQ0FBQztRQUM5QixZQUFPLEdBQVksSUFBSSxDQUFDO0tBbUN6QjtJQWpDQyxZQUFZLENBQUMsT0FBb0IsRUFBRSxNQUErQjtRQUNoRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO1FBQzVELDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFvQixFQUFFLFFBQWtCO1FBQzlDLDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDNUYsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGdCQUE2QixFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFFOUcsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFvQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDOztnSEFyQ1Usa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTb2xlSW52b2ljZSBhcyBTb2xlSW52b2ljZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvc29sZS9zb2xlLWludm9pY2UnO1xuaW1wb3J0IHsgU29sZUludm9pY2UsIERvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNvbGVJbnZvaWNlU3RhdHVzZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvRW51bXMvc29sZS1pbnZvaWNlLXN0YXR1c2VzLmVudW0nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCBsYXN0IGZyb20gJ2xvZGFzaC9sYXN0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU29sZUludm9pY2VTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8U29sZUludm9pY2VCYXNlLCBTb2xlSW52b2ljZT4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgU29sZUludm9pY2UgPSBTb2xlSW52b2ljZTtcbiAgdXJsOiBzdHJpbmcgPSAnc29sZS1pbnZvaWNlcyc7XG4gIGlzSHlkcmE6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHVwZGF0ZVN0YXR1cyhpbnZvaWNlOiBTb2xlSW52b2ljZSwgc3RhdHVzOiBTb2xlSW52b2ljZVN0YXR1c2VzRW51bSk6IE9ic2VydmFibGU8U29sZUludm9pY2U+IHtcbiAgICBjb25zdCB1cGRhdGVkSW52b2ljZSA9IE9iamVjdC5hc3NpZ24oe30sIGludm9pY2UsIHtzdGF0dXN9KTtcbiAgICAvLyB1c2UgaWQgb25seSB0byBhdm9pZCB1bmV4cGVjdGVkIGNoYW5nZXNcbiAgICByZXR1cm4gdGhpcy51cGRhdGUodXBkYXRlZEludm9pY2UpO1xuICB9XG5cbiAgcHVibGlzaChpbnZvaWNlOiBTb2xlSW52b2ljZSwgZG9jdW1lbnQ6IERvY3VtZW50KTogT2JzZXJ2YWJsZTxTb2xlSW52b2ljZT4ge1xuICAgIC8vIHVzZSBpZCBvbmx5IHRvIGF2b2lkIHVuZXhwZWN0ZWQgY2hhbmdlc1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZShtZXJnZSh7fSwgaW52b2ljZSwgeyBkb2N1bWVudCwgc3RhdHVzOiBTb2xlSW52b2ljZVN0YXR1c2VzRW51bS5QRU5ESU5HIH0pKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChwdWJsaXNoZWRJbnZvaWNlOiBTb2xlSW52b2ljZSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uU09MRV9JTlZPSUNFX1BVQkxJU0hFRCwgcHVibGlzaGVkSW52b2ljZSkpO1xuXG4gICAgICAgIHJldHVybiBwdWJsaXNoZWRJbnZvaWNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2VuZEVtYWlsKGludm9pY2U6IFNvbGVJbnZvaWNlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7aW52b2ljZS5pZH0vc2VuZGAsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG5leHQgbnVtYmVyIGZyb20gdGhlIGxhc3QgaW52b2ljZS5cbiAgICogQmFzaWNhbGx5IG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgaW52b2ljZSB0byBzaG93IGl0cyBudW1iZXIgd2hlbiB0aGUgaW52b2ljZSBoYXMgbm90IHlldCBiZWVuIHNlbnQgdG8gdGhlIGJhY2tlbmRcbiAgICovXG4gIGdldE5ld0ludm9pY2VOdW1iZXIoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0KHRoaXMuY2FjaGUpLm51bWJlciArIDE7XG4gIH1cbn1cbiJdfQ==
@@ -4202,6 +4202,24 @@ class BasReport extends BasReport$1 {
4202
4202
  get taxWithheldTotal() {
4203
4203
  return this.taxWithheldSalary + this.taxWithheldNoABN;
4204
4204
  }
4205
+ get paygTaxInstalmentOwedToATO() {
4206
+ return this.paygTaxInstalment > 0 ? this.paygTaxInstalment : 0;
4207
+ }
4208
+ get paygTaxInstalmentOwedByATO() {
4209
+ return this.paygTaxInstalment < 0 ? Math.abs(this.paygTaxInstalment) : 0;
4210
+ }
4211
+ get fuelTaxCreditOwedToATO() {
4212
+ return this.fuelTaxCredit < 0 ? this.fuelTaxCredit : 0;
4213
+ }
4214
+ get fuelTaxCreditOwedByATO() {
4215
+ return this.fuelTaxCredit > 0 ? Math.abs(this.fuelTaxCredit) : 0;
4216
+ }
4217
+ get owesToATO() {
4218
+ return this.incomeGST + this.taxWithheldTotal + this.paygTaxInstalmentOwedToATO + this.fuelTaxCreditOwedToATO;
4219
+ }
4220
+ get owedByATO() {
4221
+ return this.expenseGST + this.paygTaxInstalmentOwedByATO + this.fuelTaxCreditOwedByATO;
4222
+ }
4205
4223
  /**
4206
4224
  * GST payable to the ATO, or refundable from the ATO in case it's negative
4207
4225
  */
@@ -10298,6 +10316,17 @@ class SoleBusinessLossService extends RestService {
10298
10316
  this.url = 'sole-business-losses';
10299
10317
  this.isHydra = true;
10300
10318
  }
10319
+ listenEvents() {
10320
+ this.listenBusinessCreated();
10321
+ }
10322
+ /**
10323
+ * Listen business created because we create prior year losses together with business
10324
+ */
10325
+ listenBusinessCreated() {
10326
+ this.eventDispatcherService.on(AppEventTypeEnum.SOLE_BUSINESS_CREATED).subscribe(() => {
10327
+ this.resetCache();
10328
+ });
10329
+ }
10301
10330
  }
10302
10331
  SoleBusinessLossService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleBusinessLossService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
10303
10332
  SoleBusinessLossService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleBusinessLossService, providedIn: 'root' });
@@ -10484,6 +10513,16 @@ class SoleInvoiceService extends RestService {
10484
10513
  sendEmail(invoice) {
10485
10514
  return this.http.post(`${this.environment.apiV2}/${this.url}/${invoice.id}/send`, {});
10486
10515
  }
10516
+ /**
10517
+ * Return the next number from the last invoice.
10518
+ * Basically needed to create a new invoice to show its number when the invoice has not yet been sent to the backend
10519
+ */
10520
+ getNewInvoiceNumber() {
10521
+ if (!this.cache) {
10522
+ return 0;
10523
+ }
10524
+ return last(this.cache).number + 1;
10525
+ }
10487
10526
  }
10488
10527
  SoleInvoiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleInvoiceService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
10489
10528
  SoleInvoiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleInvoiceService, providedIn: 'root' });
@@ -16062,31 +16101,37 @@ class SoleInvoiceItemForm extends AbstractForm {
16062
16101
  }
16063
16102
  }
16064
16103
 
16104
+ /**
16105
+ * Form is divided into two groups, since the creation of Sole invoice takes place in two steps:
16106
+ * a common invoice data and sole invoice items.
16107
+ */
16065
16108
  class SoleInvoiceForm extends AbstractForm {
16066
16109
  constructor(invoice, soleDetailsGST,
16067
16110
  // default template to be preselected
16068
16111
  defaultTemplate) {
16069
16112
  super({
16070
- dateFrom: new FormControl(invoice.dateFrom || new Date(), Validators.required),
16071
- dateTo: new FormControl(invoice.dateTo, Validators.required),
16113
+ commonData: new FormGroup({
16114
+ dateFrom: new FormControl(invoice.dateFrom || new Date(), Validators.required),
16115
+ dateTo: new FormControl(invoice.dateTo, Validators.required),
16116
+ payer: new FormControl(invoice.payer, Validators.required),
16117
+ taxType: new FormControl(invoice.taxType, Validators.required),
16118
+ bankAccount: new FormControl(invoice.bankAccount, Validators.required),
16119
+ reference: new FormControl(invoice.reference)
16120
+ }),
16072
16121
  items: new FormArray((invoice.items || [plainToClass(SoleInvoiceItem, {})]).map((item) => new SoleInvoiceItemForm(item))),
16073
- payer: new FormControl(invoice.payer, Validators.required),
16074
- taxType: new FormControl(invoice.taxType, Validators.required),
16075
- bankAccount: new FormControl(invoice.bankAccount, Validators.required),
16076
- reference: new FormControl(invoice.reference)
16077
16122
  }, invoice);
16078
16123
  this.invoice = invoice;
16079
16124
  this.soleDetailsGST = soleDetailsGST;
16080
16125
  this.defaultTemplate = defaultTemplate;
16081
16126
  // we need invoice template only for new invoices
16082
16127
  if (!invoice.id) {
16083
- this.addControl('template', new FormControl(this.defaultTemplate));
16128
+ (this.commonData).addControl('template', new FormControl(this.defaultTemplate));
16084
16129
  this.updateTemplateRelatedFields(this.defaultTemplate);
16085
16130
  }
16086
16131
  // invoice.taxType is always NONE ('No Tax') when soleDetails.isGST === false
16087
16132
  if (!this.soleDetailsGST) {
16088
- this.get('taxType').setValue(SoleInvoiceTaxTypeEnum.NO_TAX);
16089
- this.get('taxType').disable();
16133
+ this.commonData.get('taxType').setValue(SoleInvoiceTaxTypeEnum.NO_TAX);
16134
+ this.commonData.get('taxType').disable();
16090
16135
  // Items isGST is not available when invoice.taxType === NONE ('No Tax')
16091
16136
  this.items.controls.forEach((itemForm) => {
16092
16137
  this.disableItemGST(itemForm);
@@ -16106,8 +16151,8 @@ class SoleInvoiceForm extends AbstractForm {
16106
16151
  this.listenItemChartAccountsChanges(itemForm);
16107
16152
  });
16108
16153
  }
16109
- // nothing to listen if template field is not учшые (edit invoice case)
16110
- if (this.contains('template')) {
16154
+ // nothing to listen if template field is not exist (edit invoice case)
16155
+ if ((this.commonData).contains('template')) {
16111
16156
  this.listenTemplateChanges();
16112
16157
  }
16113
16158
  }
@@ -16124,15 +16169,20 @@ class SoleInvoiceForm extends AbstractForm {
16124
16169
  this.items.removeAt(index);
16125
16170
  }
16126
16171
  submit(data = {}) {
16127
- // @TODO Alex TT-2190: move child custom forms submit to Abstract Form
16128
- const items = this.items.controls.map((control) => control.submit());
16129
- return super.submit(merge(data, { items }));
16172
+ this.submitted = true;
16173
+ this.markAllAsTouched();
16174
+ if (!this.disabled && !this.valid) {
16175
+ return null;
16176
+ }
16177
+ const invoiceInstance = this.currentValue;
16178
+ this.onSubmit.emit(invoiceInstance);
16179
+ return invoiceInstance;
16130
16180
  }
16131
16181
  /**
16132
16182
  * Update default values from selected invoice template
16133
16183
  */
16134
16184
  listenTemplateChanges() {
16135
- this.get('template').valueChanges.subscribe((template) => {
16185
+ this.commonData.get('template').valueChanges.subscribe((template) => {
16136
16186
  this.updateTemplateRelatedFields(template);
16137
16187
  });
16138
16188
  }
@@ -16140,7 +16190,7 @@ class SoleInvoiceForm extends AbstractForm {
16140
16190
  * GST is not available for items when invoice.taxType === NONE
16141
16191
  */
16142
16192
  listenTaxTypeChanges() {
16143
- this.get('taxType').valueChanges.subscribe((type) => {
16193
+ this.commonData.get('taxType').valueChanges.subscribe((type) => {
16144
16194
  this.items.controls.forEach((itemForm) => {
16145
16195
  const chartAccounts = itemForm.get('chartAccounts').value;
16146
16196
  // Item GST is available when invoice.taxType !== NONE ('No Tax')
@@ -16153,18 +16203,18 @@ class SoleInvoiceForm extends AbstractForm {
16153
16203
  });
16154
16204
  }
16155
16205
  updateTemplateRelatedFields(template) {
16156
- this.get('bankAccount').setValue(template.bankAccount);
16157
- const dateFrom = this.get('dateFrom').value;
16206
+ this.commonData.get('bankAccount').setValue(template.bankAccount);
16207
+ const dateFrom = this.commonData.get('dateFrom').value;
16158
16208
  if (dateFrom) {
16159
- this.get('dateTo').setValue(new Date(dateFrom.getTime() + template.termTime));
16209
+ this.commonData.get('dateTo').setValue(new Date(dateFrom.getTime() + template.termTime));
16160
16210
  }
16161
16211
  // invoice.taxType is always 'No Tax' when soleDetails.isGST = false and not available for changing
16162
16212
  if (this.soleDetailsGST) {
16163
- this.get('taxType').setValue(template.taxType);
16213
+ this.commonData.get('taxType').setValue(template.taxType);
16164
16214
  }
16165
16215
  }
16166
16216
  /**
16167
- * GST availability depends of chart accounts isGST flag
16217
+ * GST availability depends on chart accounts isGST flag
16168
16218
  */
16169
16219
  listenItemChartAccountsChanges(itemForm) {
16170
16220
  itemForm.get('chartAccounts').valueChanges.subscribe((chartAccounts) => {
@@ -16188,6 +16238,16 @@ class SoleInvoiceForm extends AbstractForm {
16188
16238
  itemForm.get('isGST').setValue(true);
16189
16239
  itemForm.get('isGST').enable();
16190
16240
  }
16241
+ get commonData() {
16242
+ return this.get('commonData');
16243
+ }
16244
+ /**
16245
+ * Rewrite abstract form getter to flat "commonData" field, which is not in the class
16246
+ */
16247
+ get currentValue() {
16248
+ const formRawValue = this.getRawValue();
16249
+ return plainToClass(SoleInvoice, Object.assign({}, this.model, Object.assign(Object.assign({}, formRawValue.commonData), { items: formRawValue.items })));
16250
+ }
16191
16251
  }
16192
16252
 
16193
16253
  class SoleInvoiceTemplateForm extends AbstractForm {