taxtank-core 0.28.71 → 0.28.73
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/bundles/taxtank-core.umd.js +102 -21
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/forms/sole/sole-invoice.form.js +45 -25
- package/esm2015/lib/models/sole/bas-report.js +19 -1
- package/esm2015/lib/services/http/sole/sole-invoice/sole-invoice.service.js +12 -1
- package/fesm2015/taxtank-core.js +70 -21
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/forms/sole/sole-invoice.form.d.ts +11 -2
- package/lib/models/sole/bas-report.d.ts +6 -0
- package/lib/services/http/sole/sole-invoice/sole-invoice.service.d.ts +5 -0
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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
|
-
|
|
14
|
-
|
|
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
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
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,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzLXJlcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9tb2RlbHMvc29sZS9iYXMtcmVwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUV2QyxNQUFNLE9BQU8sU0FBVSxTQUFRLGFBQWE7SUFPMUMsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLDBCQUEwQjtRQUM1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDaEgsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3pGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNoSCxDQUFDO0NBQ0Y7QUF2Q0M7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNGO0FBR2Y7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO3lDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzUmVwb3J0IGFzIEJhc1JlcG9ydEJhc2UgfSBmcm9tIFwiLi4vLi4vZGIvTW9kZWxzL3NvbGUvYmFzLXJlcG9ydFwiO1xuaW1wb3J0IHtUeXBlfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5cbmV4cG9ydCBjbGFzcyBCYXNSZXBvcnQgZXh0ZW5kcyBCYXNSZXBvcnRCYXNlIHtcbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgZGF0ZUZyb206IERhdGU7XG5cbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgZGF0ZVRvOiBEYXRlO1xuXG4gIGdldCB0YXhXaXRoaGVsZFRvdGFsKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGF4V2l0aGhlbGRTYWxhcnkgKyB0aGlzLnRheFdpdGhoZWxkTm9BQk47XG4gIH1cblxuICBnZXQgcGF5Z1RheEluc3RhbG1lbnRPd2VkVG9BVE8oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wYXlnVGF4SW5zdGFsbWVudCA+IDAgPyB0aGlzLnBheWdUYXhJbnN0YWxtZW50IDogMDtcbiAgfVxuXG4gIGdldCBwYXlnVGF4SW5zdGFsbWVudE93ZWRCeUFUTygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnBheWdUYXhJbnN0YWxtZW50IDwgMCA/IE1hdGguYWJzKHRoaXMucGF5Z1RheEluc3RhbG1lbnQpIDogMDtcbiAgfVxuXG4gIGdldCBmdWVsVGF4Q3JlZGl0T3dlZFRvQVRPKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZnVlbFRheENyZWRpdCA8IDAgPyB0aGlzLmZ1ZWxUYXhDcmVkaXQgOiAwO1xuICB9XG5cbiAgZ2V0IGZ1ZWxUYXhDcmVkaXRPd2VkQnlBVE8oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5mdWVsVGF4Q3JlZGl0ID4gMCA/IE1hdGguYWJzKHRoaXMuZnVlbFRheENyZWRpdCkgOiAwO1xuICB9XG5cbiAgZ2V0IG93ZXNUb0FUTygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmluY29tZUdTVCArIHRoaXMudGF4V2l0aGhlbGRUb3RhbCArIHRoaXMucGF5Z1RheEluc3RhbG1lbnRPd2VkVG9BVE8gKyB0aGlzLmZ1ZWxUYXhDcmVkaXRPd2VkVG9BVE87XG4gIH1cblxuICBnZXQgb3dlZEJ5QVRPKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZXhwZW5zZUdTVCArIHRoaXMucGF5Z1RheEluc3RhbG1lbnRPd2VkQnlBVE8gKyB0aGlzLmZ1ZWxUYXhDcmVkaXRPd2VkQnlBVE87XG4gIH1cblxuICAvKipcbiAgICogR1NUIHBheWFibGUgdG8gdGhlIEFUTywgb3IgcmVmdW5kYWJsZSBmcm9tIHRoZSBBVE8gaW4gY2FzZSBpdCdzIG5lZ2F0aXZlXG4gICAqL1xuICBnZXQgZ3N0KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5jb21lR1NUIC0gdGhpcy5leHBlbnNlR1NUICsgdGhpcy50YXhXaXRoaGVsZFRvdGFsICsgdGhpcy5wYXlnVGF4SW5zdGFsbWVudCAtIHRoaXMuZnVlbFRheENyZWRpdDtcbiAgfVxufVxuIl19
|
|
@@ -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,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sZS1pbnZvaWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC9zb2xlL3NvbGUtaW52b2ljZS9zb2xlLWludm9pY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsV0FBVyxFQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFMUYsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUQsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDOztBQUsvQixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBeUM7SUFIakY7O1FBSUUsZUFBVSxHQUF1QixXQUFXLENBQUM7UUFDN0MsUUFBRyxHQUFXLGVBQWUsQ0FBQztRQUM5QixZQUFPLEdBQVksSUFBSSxDQUFDO0tBbUN6QjtJQWpDQyxZQUFZLENBQUMsT0FBb0IsRUFBRSxNQUErQjtRQUNoRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDO1FBQzVELDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFvQixFQUFFLFFBQWtCO1FBQzlDLDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDNUYsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGdCQUE2QixFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFFOUcsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFvQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDOztnSEFyQ1Usa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTb2xlSW52b2ljZSBhcyBTb2xlSW52b2ljZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9kYi9Nb2RlbHMvc29sZS9zb2xlLWludm9pY2UnO1xuaW1wb3J0IHsgU29sZUludm9pY2UsIERvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFNvbGVJbnZvaWNlU3RhdHVzZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvRW51bXMvc29sZS1pbnZvaWNlLXN0YXR1c2VzLmVudW0nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCBsYXN0IGZyb20gJ2xvZGFzaC9sYXN0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU29sZUludm9pY2VTZXJ2aWNlIGV4dGVuZHMgUmVzdFNlcnZpY2U8U29sZUludm9pY2VCYXNlLCBTb2xlSW52b2ljZT4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgU29sZUludm9pY2UgPSBTb2xlSW52b2ljZTtcbiAgdXJsOiBzdHJpbmcgPSAnc29sZS1pbnZvaWNlcyc7XG4gIGlzSHlkcmE6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHVwZGF0ZVN0YXR1cyhpbnZvaWNlOiBTb2xlSW52b2ljZSwgc3RhdHVzOiBTb2xlSW52b2ljZVN0YXR1c2VzRW51bSk6IE9ic2VydmFibGU8U29sZUludm9pY2U+IHtcbiAgICBjb25zdCB1cGRhdGVkSW52b2ljZSA9IE9iamVjdC5hc3NpZ24oe30sIGludm9pY2UsIHtzdGF0dXN9KTtcbiAgICAvLyB1c2UgaWQgb25seSB0byBhdm9pZCB1bmV4cGVjdGVkIGNoYW5nZXNcbiAgICByZXR1cm4gdGhpcy51cGRhdGUodXBkYXRlZEludm9pY2UpO1xuICB9XG5cbiAgcHVibGlzaChpbnZvaWNlOiBTb2xlSW52b2ljZSwgZG9jdW1lbnQ6IERvY3VtZW50KTogT2JzZXJ2YWJsZTxTb2xlSW52b2ljZT4ge1xuICAgIC8vIHVzZSBpZCBvbmx5IHRvIGF2b2lkIHVuZXhwZWN0ZWQgY2hhbmdlc1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZShtZXJnZSh7fSwgaW52b2ljZSwgeyBkb2N1bWVudCwgc3RhdHVzOiBTb2xlSW52b2ljZVN0YXR1c2VzRW51bS5QRU5ESU5HIH0pKVxuICAgIC5waXBlKFxuICAgICAgbWFwKChwdWJsaXNoZWRJbnZvaWNlOiBTb2xlSW52b2ljZSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uU09MRV9JTlZPSUNFX1BVQkxJU0hFRCwgcHVibGlzaGVkSW52b2ljZSkpO1xuXG4gICAgICAgIHJldHVybiBwdWJsaXNoZWRJbnZvaWNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2VuZEVtYWlsKGludm9pY2U6IFNvbGVJbnZvaWNlKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7aW52b2ljZS5pZH0vc2VuZGAsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIG5leHQgbnVtYmVyIGZyb20gdGhlIGxhc3QgaW52b2ljZS5cbiAgICogQmFzaWNhbGx5IG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgaW52b2ljZSB0byBzaG93IGl0cyBudW1iZXIgd2hlbiB0aGUgaW52b2ljZSBoYXMgbm90IHlldCBiZWVuIHNlbnQgdG8gdGhlIGJhY2tlbmRcbiAgICovXG4gIGdldE5ld0ludm9pY2VOdW1iZXIoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHJldHVybiBsYXN0KHRoaXMuY2FjaGUpLm51bWJlciArIDE7XG4gIH1cbn1cbiJdfQ==
|
package/fesm2015/taxtank-core.js
CHANGED
|
@@ -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
|
*/
|
|
@@ -10484,6 +10502,16 @@ class SoleInvoiceService extends RestService {
|
|
|
10484
10502
|
sendEmail(invoice) {
|
|
10485
10503
|
return this.http.post(`${this.environment.apiV2}/${this.url}/${invoice.id}/send`, {});
|
|
10486
10504
|
}
|
|
10505
|
+
/**
|
|
10506
|
+
* Return the next number from the last invoice.
|
|
10507
|
+
* Basically needed to create a new invoice to show its number when the invoice has not yet been sent to the backend
|
|
10508
|
+
*/
|
|
10509
|
+
getNewInvoiceNumber() {
|
|
10510
|
+
if (!this.cache) {
|
|
10511
|
+
return 0;
|
|
10512
|
+
}
|
|
10513
|
+
return last(this.cache).number + 1;
|
|
10514
|
+
}
|
|
10487
10515
|
}
|
|
10488
10516
|
SoleInvoiceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleInvoiceService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
10489
10517
|
SoleInvoiceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleInvoiceService, providedIn: 'root' });
|
|
@@ -16062,31 +16090,37 @@ class SoleInvoiceItemForm extends AbstractForm {
|
|
|
16062
16090
|
}
|
|
16063
16091
|
}
|
|
16064
16092
|
|
|
16093
|
+
/**
|
|
16094
|
+
* Form is divided into two groups, since the creation of Sole invoice takes place in two steps:
|
|
16095
|
+
* a common invoice data and sole invoice items.
|
|
16096
|
+
*/
|
|
16065
16097
|
class SoleInvoiceForm extends AbstractForm {
|
|
16066
16098
|
constructor(invoice, soleDetailsGST,
|
|
16067
16099
|
// default template to be preselected
|
|
16068
16100
|
defaultTemplate) {
|
|
16069
16101
|
super({
|
|
16070
|
-
|
|
16071
|
-
|
|
16102
|
+
commonData: new FormGroup({
|
|
16103
|
+
dateFrom: new FormControl(invoice.dateFrom || new Date(), Validators.required),
|
|
16104
|
+
dateTo: new FormControl(invoice.dateTo, Validators.required),
|
|
16105
|
+
payer: new FormControl(invoice.payer, Validators.required),
|
|
16106
|
+
taxType: new FormControl(invoice.taxType, Validators.required),
|
|
16107
|
+
bankAccount: new FormControl(invoice.bankAccount, Validators.required),
|
|
16108
|
+
reference: new FormControl(invoice.reference)
|
|
16109
|
+
}),
|
|
16072
16110
|
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
16111
|
}, invoice);
|
|
16078
16112
|
this.invoice = invoice;
|
|
16079
16113
|
this.soleDetailsGST = soleDetailsGST;
|
|
16080
16114
|
this.defaultTemplate = defaultTemplate;
|
|
16081
16115
|
// we need invoice template only for new invoices
|
|
16082
16116
|
if (!invoice.id) {
|
|
16083
|
-
this.addControl('template', new FormControl(this.defaultTemplate));
|
|
16117
|
+
(this.commonData).addControl('template', new FormControl(this.defaultTemplate));
|
|
16084
16118
|
this.updateTemplateRelatedFields(this.defaultTemplate);
|
|
16085
16119
|
}
|
|
16086
16120
|
// invoice.taxType is always NONE ('No Tax') when soleDetails.isGST === false
|
|
16087
16121
|
if (!this.soleDetailsGST) {
|
|
16088
|
-
this.get('taxType').setValue(SoleInvoiceTaxTypeEnum.NO_TAX);
|
|
16089
|
-
this.get('taxType').disable();
|
|
16122
|
+
this.commonData.get('taxType').setValue(SoleInvoiceTaxTypeEnum.NO_TAX);
|
|
16123
|
+
this.commonData.get('taxType').disable();
|
|
16090
16124
|
// Items isGST is not available when invoice.taxType === NONE ('No Tax')
|
|
16091
16125
|
this.items.controls.forEach((itemForm) => {
|
|
16092
16126
|
this.disableItemGST(itemForm);
|
|
@@ -16106,8 +16140,8 @@ class SoleInvoiceForm extends AbstractForm {
|
|
|
16106
16140
|
this.listenItemChartAccountsChanges(itemForm);
|
|
16107
16141
|
});
|
|
16108
16142
|
}
|
|
16109
|
-
// nothing to listen if template field is not
|
|
16110
|
-
if (this.contains('template')) {
|
|
16143
|
+
// nothing to listen if template field is not exist (edit invoice case)
|
|
16144
|
+
if ((this.commonData).contains('template')) {
|
|
16111
16145
|
this.listenTemplateChanges();
|
|
16112
16146
|
}
|
|
16113
16147
|
}
|
|
@@ -16124,15 +16158,20 @@ class SoleInvoiceForm extends AbstractForm {
|
|
|
16124
16158
|
this.items.removeAt(index);
|
|
16125
16159
|
}
|
|
16126
16160
|
submit(data = {}) {
|
|
16127
|
-
|
|
16128
|
-
|
|
16129
|
-
|
|
16161
|
+
this.submitted = true;
|
|
16162
|
+
this.markAllAsTouched();
|
|
16163
|
+
if (!this.disabled && !this.valid) {
|
|
16164
|
+
return null;
|
|
16165
|
+
}
|
|
16166
|
+
const invoiceInstance = this.currentValue;
|
|
16167
|
+
this.onSubmit.emit(invoiceInstance);
|
|
16168
|
+
return invoiceInstance;
|
|
16130
16169
|
}
|
|
16131
16170
|
/**
|
|
16132
16171
|
* Update default values from selected invoice template
|
|
16133
16172
|
*/
|
|
16134
16173
|
listenTemplateChanges() {
|
|
16135
|
-
this.get('template').valueChanges.subscribe((template) => {
|
|
16174
|
+
this.commonData.get('template').valueChanges.subscribe((template) => {
|
|
16136
16175
|
this.updateTemplateRelatedFields(template);
|
|
16137
16176
|
});
|
|
16138
16177
|
}
|
|
@@ -16140,7 +16179,7 @@ class SoleInvoiceForm extends AbstractForm {
|
|
|
16140
16179
|
* GST is not available for items when invoice.taxType === NONE
|
|
16141
16180
|
*/
|
|
16142
16181
|
listenTaxTypeChanges() {
|
|
16143
|
-
this.get('taxType').valueChanges.subscribe((type) => {
|
|
16182
|
+
this.commonData.get('taxType').valueChanges.subscribe((type) => {
|
|
16144
16183
|
this.items.controls.forEach((itemForm) => {
|
|
16145
16184
|
const chartAccounts = itemForm.get('chartAccounts').value;
|
|
16146
16185
|
// Item GST is available when invoice.taxType !== NONE ('No Tax')
|
|
@@ -16153,18 +16192,18 @@ class SoleInvoiceForm extends AbstractForm {
|
|
|
16153
16192
|
});
|
|
16154
16193
|
}
|
|
16155
16194
|
updateTemplateRelatedFields(template) {
|
|
16156
|
-
this.get('bankAccount').setValue(template.bankAccount);
|
|
16157
|
-
const dateFrom = this.get('dateFrom').value;
|
|
16195
|
+
this.commonData.get('bankAccount').setValue(template.bankAccount);
|
|
16196
|
+
const dateFrom = this.commonData.get('dateFrom').value;
|
|
16158
16197
|
if (dateFrom) {
|
|
16159
|
-
this.get('dateTo').setValue(new Date(dateFrom.getTime() + template.termTime));
|
|
16198
|
+
this.commonData.get('dateTo').setValue(new Date(dateFrom.getTime() + template.termTime));
|
|
16160
16199
|
}
|
|
16161
16200
|
// invoice.taxType is always 'No Tax' when soleDetails.isGST = false and not available for changing
|
|
16162
16201
|
if (this.soleDetailsGST) {
|
|
16163
|
-
this.get('taxType').setValue(template.taxType);
|
|
16202
|
+
this.commonData.get('taxType').setValue(template.taxType);
|
|
16164
16203
|
}
|
|
16165
16204
|
}
|
|
16166
16205
|
/**
|
|
16167
|
-
* GST availability depends
|
|
16206
|
+
* GST availability depends on chart accounts isGST flag
|
|
16168
16207
|
*/
|
|
16169
16208
|
listenItemChartAccountsChanges(itemForm) {
|
|
16170
16209
|
itemForm.get('chartAccounts').valueChanges.subscribe((chartAccounts) => {
|
|
@@ -16188,6 +16227,16 @@ class SoleInvoiceForm extends AbstractForm {
|
|
|
16188
16227
|
itemForm.get('isGST').setValue(true);
|
|
16189
16228
|
itemForm.get('isGST').enable();
|
|
16190
16229
|
}
|
|
16230
|
+
get commonData() {
|
|
16231
|
+
return this.get('commonData');
|
|
16232
|
+
}
|
|
16233
|
+
/**
|
|
16234
|
+
* Rewrite abstract form getter to flat "commonData" field, which is not in the class
|
|
16235
|
+
*/
|
|
16236
|
+
get currentValue() {
|
|
16237
|
+
const formRawValue = this.getRawValue();
|
|
16238
|
+
return plainToClass(SoleInvoice, Object.assign({}, this.model, Object.assign(Object.assign({}, formRawValue.commonData), { items: formRawValue.items })));
|
|
16239
|
+
}
|
|
16191
16240
|
}
|
|
16192
16241
|
|
|
16193
16242
|
class SoleInvoiceTemplateForm extends AbstractForm {
|