taxtank-core 0.30.17 → 0.30.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/esm2020/lib/collections/allocation-rule.collection.mjs +14 -0
  2. package/esm2020/lib/collections/index.mjs +2 -1
  3. package/esm2020/lib/collections/property/property-sale/index.mjs +2 -2
  4. package/esm2020/lib/collections/property/property-sale/property-sale-tax-exemption-meta-field.collection.mjs +17 -0
  5. package/esm2020/lib/collections/transaction/transaction.collection.mjs +6 -6
  6. package/esm2020/lib/db/Enums/allocation-rule-condition-comparison-operator.enum.mjs +9 -0
  7. package/esm2020/lib/db/Enums/allocation-rule-condition-field.enum.mjs +6 -0
  8. package/esm2020/lib/db/Enums/allocation-rule-condition-operator.enum.mjs +6 -0
  9. package/esm2020/lib/db/Enums/allocation-rule-type.enum.mjs +7 -0
  10. package/esm2020/lib/db/Enums/chart-accounts/chart-accounts-meta-field-list.enum.mjs +19 -0
  11. package/esm2020/lib/db/Enums/chart-accounts/chart-accounts-meta-field-type.enum.mjs +6 -0
  12. package/esm2020/lib/db/Enums/chart-accounts/index.mjs +3 -3
  13. package/esm2020/lib/db/Enums/index.mjs +6 -2
  14. package/esm2020/lib/db/Enums/property/property-sale/tax-exemption-meta-field.enum.mjs +9 -0
  15. package/esm2020/lib/db/Models/chart-accounts/chart-accounts-meta-field.mjs +4 -0
  16. package/esm2020/lib/db/Models/chart-accounts/chart-accounts.mjs +1 -1
  17. package/esm2020/lib/db/Models/index.mjs +5 -6
  18. package/esm2020/lib/db/Models/property/property-sale/property-sale-tax-exemption-meta-field.mjs +4 -0
  19. package/esm2020/lib/db/Models/property/property-sale/property-sale.mjs +1 -1
  20. package/esm2020/lib/db/Models/property/property-sale/tax-exemption-meta-field.mjs +4 -0
  21. package/esm2020/lib/db/Models/property/property-sale/tax-exemption.mjs +1 -1
  22. package/esm2020/lib/db/Models/transaction/allocation-rule-condition.mjs +4 -0
  23. package/esm2020/lib/db/Models/transaction/allocation-rule-transaction-meta-field.mjs +4 -0
  24. package/esm2020/lib/db/Models/transaction/allocation-rule-transaction.mjs +4 -0
  25. package/esm2020/lib/db/Models/transaction/allocation-rule.mjs +4 -0
  26. package/esm2020/lib/db/Models/transaction/transaction-meta-field.mjs +4 -0
  27. package/esm2020/lib/db/Models/transaction/transaction.mjs +1 -1
  28. package/esm2020/lib/forms/property/property-sale/property-sale-exemptions.form.mjs +18 -18
  29. package/esm2020/lib/forms/transaction/allocation-rule-condition.form.mjs +14 -0
  30. package/esm2020/lib/forms/transaction/allocation-rule-transaction-meta-field.form.mjs +12 -0
  31. package/esm2020/lib/forms/transaction/allocation-rule-transaction.form.mjs +125 -0
  32. package/esm2020/lib/forms/transaction/allocation-rule.form.mjs +135 -0
  33. package/esm2020/lib/forms/transaction/index.mjs +2 -1
  34. package/esm2020/lib/forms/transaction/work/work-expense.form.mjs +10 -10
  35. package/esm2020/lib/forms/transaction/work/work-transaction.form.mjs +12 -12
  36. package/esm2020/lib/models/chart-accounts/chart-accounts-meta-field.mjs +14 -0
  37. package/esm2020/lib/models/chart-accounts/chart-accounts.mjs +7 -4
  38. package/esm2020/lib/models/chart-accounts/index.mjs +2 -2
  39. package/esm2020/lib/models/endpoint/endpoints.const.mjs +5 -1
  40. package/esm2020/lib/models/property/property-sale/index.mjs +3 -3
  41. package/esm2020/lib/models/property/property-sale/property-sale-tax-exemption-meta-field.mjs +4 -0
  42. package/esm2020/lib/models/property/property-sale/property-sale.mjs +4 -4
  43. package/esm2020/lib/models/property/property-sale/tax-exemption-meta-field.mjs +4 -0
  44. package/esm2020/lib/models/property/property.mjs +6 -6
  45. package/esm2020/lib/models/report/my-tax/my-tax-dividends/my-tax-dividends.mjs +8 -8
  46. package/esm2020/lib/models/report/my-tax/my-tax-other-income/my-tax-other-income.mjs +12 -12
  47. package/esm2020/lib/models/report/my-tax/my-tax-partnerships-and-trusts/my-tax-partnerships-and-trusts.mjs +6 -6
  48. package/esm2020/lib/models/transaction/allocation-rule-condition.mjs +4 -0
  49. package/esm2020/lib/models/transaction/allocation-rule-transaction-meta-field.mjs +4 -0
  50. package/esm2020/lib/models/transaction/allocation-rule-transaction.mjs +56 -0
  51. package/esm2020/lib/models/transaction/allocation-rule.mjs +78 -0
  52. package/esm2020/lib/models/transaction/index.mjs +5 -2
  53. package/esm2020/lib/models/transaction/transaction-meta-field.mjs +10 -0
  54. package/esm2020/lib/models/transaction/transaction.mjs +15 -15
  55. package/esm2020/lib/services/http/transaction/index.mjs +2 -1
  56. package/esm2020/lib/services/http/transaction/transaction-allocation/allocation-rule/allocation-rule.service.mjs +23 -0
  57. package/esm2020/lib/services/http/tutorial-video/video-source.interface.mjs +1 -1
  58. package/esm2020/public-api.mjs +5 -5
  59. package/fesm2015/taxtank-core.mjs +851 -390
  60. package/fesm2015/taxtank-core.mjs.map +1 -1
  61. package/fesm2020/taxtank-core.mjs +850 -391
  62. package/fesm2020/taxtank-core.mjs.map +1 -1
  63. package/lib/collections/allocation-rule.collection.d.ts +7 -0
  64. package/lib/collections/index.d.ts +1 -0
  65. package/lib/collections/property/property-sale/index.d.ts +1 -1
  66. package/lib/collections/property/property-sale/property-sale-tax-exemption-meta-field.collection.d.ts +8 -0
  67. package/lib/collections/transaction/transaction.collection.d.ts +3 -3
  68. package/lib/db/Enums/allocation-rule-condition-comparison-operator.enum.d.ts +7 -0
  69. package/lib/db/Enums/allocation-rule-condition-field.enum.d.ts +4 -0
  70. package/lib/db/Enums/allocation-rule-condition-operator.enum.d.ts +4 -0
  71. package/lib/db/Enums/allocation-rule-type.enum.d.ts +5 -0
  72. package/lib/db/Enums/chart-accounts/{chart-accounts-metadata-list.enum.d.ts → chart-accounts-meta-field-list.enum.d.ts} +1 -1
  73. package/lib/db/Enums/chart-accounts/chart-accounts-meta-field-type.enum.d.ts +4 -0
  74. package/lib/db/Enums/chart-accounts/index.d.ts +2 -2
  75. package/lib/db/Enums/index.d.ts +5 -1
  76. package/lib/db/Enums/property/property-sale/{tax-exemption-metadata.enum.d.ts → tax-exemption-meta-field.enum.d.ts} +1 -1
  77. package/lib/db/Models/chart-accounts/chart-accounts-meta-field.d.ts +11 -0
  78. package/lib/db/Models/chart-accounts/chart-accounts.d.ts +2 -2
  79. package/lib/db/Models/index.d.ts +4 -5
  80. package/lib/db/Models/property/property-sale/property-sale-tax-exemption-meta-field.d.ts +9 -0
  81. package/lib/db/Models/property/property-sale/property-sale.d.ts +2 -2
  82. package/lib/db/Models/property/property-sale/{tax-exemption-metadata.d.ts → tax-exemption-meta-field.d.ts} +1 -1
  83. package/lib/db/Models/property/property-sale/tax-exemption.d.ts +2 -2
  84. package/lib/db/Models/transaction/allocation-rule-condition.d.ts +10 -0
  85. package/lib/db/Models/transaction/allocation-rule-transaction-meta-field.d.ts +9 -0
  86. package/lib/db/Models/transaction/allocation-rule-transaction.d.ts +25 -0
  87. package/lib/db/Models/transaction/allocation-rule.d.ts +22 -0
  88. package/lib/db/Models/transaction/{transaction-metadata.d.ts → transaction-meta-field.d.ts} +3 -3
  89. package/lib/db/Models/transaction/transaction.d.ts +2 -2
  90. package/lib/forms/property/property-sale/property-sale-exemptions.form.d.ts +2 -2
  91. package/lib/forms/transaction/allocation-rule-condition.form.d.ts +5 -0
  92. package/lib/forms/transaction/allocation-rule-transaction-meta-field.form.d.ts +5 -0
  93. package/lib/forms/transaction/allocation-rule-transaction.form.d.ts +33 -0
  94. package/lib/forms/transaction/allocation-rule.form.d.ts +31 -0
  95. package/lib/forms/transaction/index.d.ts +1 -0
  96. package/lib/forms/transaction/work/work-expense.form.d.ts +1 -1
  97. package/lib/forms/transaction/work/work-transaction.form.d.ts +1 -1
  98. package/lib/models/chart-accounts/chart-accounts-meta-field.d.ts +8 -0
  99. package/lib/models/chart-accounts/chart-accounts.d.ts +3 -2
  100. package/lib/models/chart-accounts/index.d.ts +1 -1
  101. package/lib/models/property/property-sale/index.d.ts +2 -2
  102. package/lib/models/property/property-sale/property-sale-tax-exemption-meta-field.d.ts +3 -0
  103. package/lib/models/property/property-sale/property-sale.d.ts +2 -2
  104. package/lib/models/property/property-sale/tax-exemption-meta-field.d.ts +3 -0
  105. package/lib/models/transaction/allocation-rule-condition.d.ts +3 -0
  106. package/lib/models/transaction/allocation-rule-transaction-meta-field.d.ts +3 -0
  107. package/lib/models/transaction/allocation-rule-transaction.d.ts +17 -0
  108. package/lib/models/transaction/allocation-rule.d.ts +24 -0
  109. package/lib/models/transaction/index.d.ts +4 -1
  110. package/lib/models/transaction/transaction-meta-field.d.ts +5 -0
  111. package/lib/models/transaction/transaction.d.ts +6 -6
  112. package/lib/services/http/transaction/index.d.ts +1 -0
  113. package/lib/services/http/transaction/transaction-allocation/allocation-rule/allocation-rule.service.d.ts +13 -0
  114. package/lib/services/http/tutorial-video/video-source.interface.d.ts +1 -1
  115. package/package.json +1 -1
  116. package/public-api.d.ts +4 -4
  117. package/esm2020/lib/collections/property/property-sale/property-sale-tax-exemption-metadata.collection.mjs +0 -17
  118. package/esm2020/lib/db/Enums/chart-accounts/chart-accounts-metadata-list.enum.mjs +0 -19
  119. package/esm2020/lib/db/Enums/chart-accounts/chart-accounts-metadata-type.enum.mjs +0 -6
  120. package/esm2020/lib/db/Enums/property/property-sale/tax-exemption-metadata.enum.mjs +0 -9
  121. package/esm2020/lib/db/Models/bank/bank-transaction-rule.mjs +0 -4
  122. package/esm2020/lib/db/Models/chart-accounts/chart-accounts-metadata.mjs +0 -4
  123. package/esm2020/lib/db/Models/property/property-sale/property-sale-tax-exemption-metadata.mjs +0 -4
  124. package/esm2020/lib/db/Models/property/property-sale/tax-exemption-metadata.mjs +0 -4
  125. package/esm2020/lib/db/Models/transaction/transaction-metadata.mjs +0 -4
  126. package/esm2020/lib/models/chart-accounts/chart-accounts-metadata.mjs +0 -14
  127. package/esm2020/lib/models/property/property-sale/property-sale-tax-exemption-metadata.mjs +0 -4
  128. package/esm2020/lib/models/property/property-sale/tax-exemption-metadata.mjs +0 -4
  129. package/esm2020/lib/models/transaction/transaction-metadata.mjs +0 -10
  130. package/lib/collections/property/property-sale/property-sale-tax-exemption-metadata.collection.d.ts +0 -8
  131. package/lib/db/Enums/chart-accounts/chart-accounts-metadata-type.enum.d.ts +0 -4
  132. package/lib/db/Models/bank/bank-transaction-rule.d.ts +0 -26
  133. package/lib/db/Models/chart-accounts/chart-accounts-metadata.d.ts +0 -11
  134. package/lib/db/Models/property/property-sale/property-sale-tax-exemption-metadata.d.ts +0 -9
  135. package/lib/models/chart-accounts/chart-accounts-metadata.d.ts +0 -8
  136. package/lib/models/property/property-sale/property-sale-tax-exemption-metadata.d.ts +0 -3
  137. package/lib/models/property/property-sale/tax-exemption-metadata.d.ts +0 -3
  138. package/lib/models/transaction/transaction-metadata.d.ts +0 -5
@@ -18,8 +18,8 @@ import uniqBy from 'lodash/uniqBy';
18
18
  import differenceBy from 'lodash/differenceBy';
19
19
  import moment from 'moment';
20
20
  import { DateRange } from 'moment-range';
21
- import intersection from 'lodash/intersection';
22
21
  import { Validators, UntypedFormGroup, UntypedFormControl, UntypedFormArray, FormArray, FormGroup, FormControl } from '@angular/forms';
22
+ import intersection from 'lodash/intersection';
23
23
  import compact from 'lodash/compact';
24
24
  import concat from 'lodash/concat';
25
25
  import cloneDeep$1 from 'lodash/cloneDeep';
@@ -321,9 +321,6 @@ let BankConnection$1 = class BankConnection extends ObservableModel {
321
321
  class BankTransactionImport extends AbstractModel {
322
322
  }
323
323
 
324
- class BankTransactionRule extends AbstractModel {
325
- }
326
-
327
324
  let BankTransaction$1 = class BankTransaction extends ObservableModel {
328
325
  };
329
326
 
@@ -339,7 +336,7 @@ let ChartAccountsDepreciation$1 = class ChartAccountsDepreciation extends Abstra
339
336
  let ChartAccountsHeading$1 = class ChartAccountsHeading extends AbstractModel {
340
337
  };
341
338
 
342
- let ChartAccountsMetadata$1 = class ChartAccountsMetadata extends AbstractModel {
339
+ let ChartAccountsMetaField$1 = class ChartAccountsMetaField extends AbstractModel {
343
340
  };
344
341
 
345
342
  let ChartAccountsValue$1 = class ChartAccountsValue extends AbstractModel {
@@ -526,13 +523,13 @@ let LoanPayout$1 = class LoanPayout extends ObservableModel {
526
523
  let Loan$1 = class Loan extends ObservableModel {
527
524
  };
528
525
 
529
- let PropertySaleTaxExemptionMetadata$1 = class PropertySaleTaxExemptionMetadata extends AbstractModel {
526
+ let PropertySaleTaxExemptionMetaField$1 = class PropertySaleTaxExemptionMetaField extends AbstractModel {
530
527
  };
531
528
 
532
529
  let PropertySale$1 = class PropertySale extends ObservableModel {
533
530
  };
534
531
 
535
- let TaxExemptionMetadata$1 = class TaxExemptionMetadata extends AbstractModel {
532
+ let TaxExemptionMetaField$1 = class TaxExemptionMetaField extends AbstractModel {
536
533
  };
537
534
 
538
535
  let TaxExemption$1 = class TaxExemption extends AbstractModel {
@@ -628,7 +625,7 @@ class TaxReturn extends AbstractModel {
628
625
  let TransactionAllocation$1 = class TransactionAllocation extends AbstractModel {
629
626
  };
630
627
 
631
- let TransactionMetadata$1 = class TransactionMetadata extends AbstractModel {
628
+ let TransactionMetaField$1 = class TransactionMetaField extends AbstractModel {
632
629
  };
633
630
 
634
631
  let TransactionReceipt$1 = class TransactionReceipt extends AbstractModel {
@@ -1606,27 +1603,27 @@ class PropertySaleCollection extends Collection {
1606
1603
  }
1607
1604
  }
1608
1605
 
1609
- var TaxExemptionMetadataEnum;
1610
- (function (TaxExemptionMetadataEnum) {
1606
+ var TaxExemptionMetaFieldEnum;
1607
+ (function (TaxExemptionMetaFieldEnum) {
1611
1608
  // principle place of residence
1612
- TaxExemptionMetadataEnum[TaxExemptionMetadataEnum["PPR_DAYS"] = 1] = "PPR_DAYS";
1609
+ TaxExemptionMetaFieldEnum[TaxExemptionMetaFieldEnum["PPR_DAYS"] = 1] = "PPR_DAYS";
1613
1610
  // market value once it was moved, decimal
1614
- TaxExemptionMetadataEnum[TaxExemptionMetadataEnum["MARKET_VALUE"] = 2] = "MARKET_VALUE";
1615
- TaxExemptionMetadataEnum[TaxExemptionMetadataEnum["CLAIM_PERCENT"] = 3] = "CLAIM_PERCENT";
1616
- })(TaxExemptionMetadataEnum || (TaxExemptionMetadataEnum = {}));
1611
+ TaxExemptionMetaFieldEnum[TaxExemptionMetaFieldEnum["MARKET_VALUE"] = 2] = "MARKET_VALUE";
1612
+ TaxExemptionMetaFieldEnum[TaxExemptionMetaFieldEnum["CLAIM_PERCENT"] = 3] = "CLAIM_PERCENT";
1613
+ })(TaxExemptionMetaFieldEnum || (TaxExemptionMetaFieldEnum = {}));
1617
1614
 
1618
- class PropertySaleTaxExemptionMetadataCollection extends Collection {
1615
+ class PropertySaleTaxExemptionMetaFieldCollection extends Collection {
1619
1616
  getPPRDays() {
1620
- return this.getByMetadataId(TaxExemptionMetadataEnum.PPR_DAYS)?.value ?? 0;
1617
+ return this.getByMetaFieldId(TaxExemptionMetaFieldEnum.PPR_DAYS)?.value ?? 0;
1621
1618
  }
1622
1619
  getMarketValue() {
1623
- return this.getByMetadataId(TaxExemptionMetadataEnum.MARKET_VALUE)?.value ?? 0;
1620
+ return this.getByMetaFieldId(TaxExemptionMetaFieldEnum.MARKET_VALUE)?.value ?? 0;
1624
1621
  }
1625
1622
  getClaimPercent() {
1626
- return this.getByMetadataId(TaxExemptionMetadataEnum.CLAIM_PERCENT)?.value ?? 100;
1623
+ return this.getByMetaFieldId(TaxExemptionMetaFieldEnum.CLAIM_PERCENT)?.value ?? 100;
1627
1624
  }
1628
- getByMetadataId(id) {
1629
- return this.items.find((metadata) => metadata.metadata.id === id);
1625
+ getByMetaFieldId(id) {
1626
+ return this.items.find((metaField) => metaField.metaField.id === id);
1630
1627
  }
1631
1628
  }
1632
1629
 
@@ -1807,10 +1804,33 @@ var DepreciationCalculationEnum;
1807
1804
  DepreciationCalculationEnum[DepreciationCalculationEnum["SBP"] = 6] = "SBP";
1808
1805
  })(DepreciationCalculationEnum || (DepreciationCalculationEnum = {}));
1809
1806
 
1810
- var DocumentTypeEnum;
1811
- (function (DocumentTypeEnum) {
1812
- DocumentTypeEnum[DocumentTypeEnum["INVOICE"] = 1] = "INVOICE";
1813
- })(DocumentTypeEnum || (DocumentTypeEnum = {}));
1807
+ var AllocationRuleConditionComparisonOperatorEnum;
1808
+ (function (AllocationRuleConditionComparisonOperatorEnum) {
1809
+ AllocationRuleConditionComparisonOperatorEnum[AllocationRuleConditionComparisonOperatorEnum["EQUALS"] = 1] = "EQUALS";
1810
+ AllocationRuleConditionComparisonOperatorEnum[AllocationRuleConditionComparisonOperatorEnum["CONTAINS"] = 2] = "CONTAINS";
1811
+ AllocationRuleConditionComparisonOperatorEnum[AllocationRuleConditionComparisonOperatorEnum["STARTS"] = 3] = "STARTS";
1812
+ AllocationRuleConditionComparisonOperatorEnum[AllocationRuleConditionComparisonOperatorEnum["EQUALS_OR_GREATER"] = 4] = "EQUALS_OR_GREATER";
1813
+ AllocationRuleConditionComparisonOperatorEnum[AllocationRuleConditionComparisonOperatorEnum["EQUALS_OR_LESS"] = 5] = "EQUALS_OR_LESS";
1814
+ })(AllocationRuleConditionComparisonOperatorEnum || (AllocationRuleConditionComparisonOperatorEnum = {}));
1815
+
1816
+ var AllocationRuleConditionFieldEnum;
1817
+ (function (AllocationRuleConditionFieldEnum) {
1818
+ AllocationRuleConditionFieldEnum[AllocationRuleConditionFieldEnum["AMOUNT"] = 1] = "AMOUNT";
1819
+ AllocationRuleConditionFieldEnum[AllocationRuleConditionFieldEnum["DESCRIPTION"] = 2] = "DESCRIPTION";
1820
+ })(AllocationRuleConditionFieldEnum || (AllocationRuleConditionFieldEnum = {}));
1821
+
1822
+ var AllocationRuleConditionOperatorEnum;
1823
+ (function (AllocationRuleConditionOperatorEnum) {
1824
+ AllocationRuleConditionOperatorEnum[AllocationRuleConditionOperatorEnum["AND"] = 1] = "AND";
1825
+ AllocationRuleConditionOperatorEnum[AllocationRuleConditionOperatorEnum["OR"] = 2] = "OR";
1826
+ })(AllocationRuleConditionOperatorEnum || (AllocationRuleConditionOperatorEnum = {}));
1827
+
1828
+ var AllocationRuleTypeEnum;
1829
+ (function (AllocationRuleTypeEnum) {
1830
+ AllocationRuleTypeEnum[AllocationRuleTypeEnum["EXPENSE"] = 1] = "EXPENSE";
1831
+ AllocationRuleTypeEnum[AllocationRuleTypeEnum["INCOME"] = 2] = "INCOME";
1832
+ AllocationRuleTypeEnum[AllocationRuleTypeEnum["TRANSFER"] = 3] = "TRANSFER";
1833
+ })(AllocationRuleTypeEnum || (AllocationRuleTypeEnum = {}));
1814
1834
 
1815
1835
  var AnnualFrequencyEnum;
1816
1836
  (function (AnnualFrequencyEnum) {
@@ -2016,30 +2036,30 @@ var ChartAccountsListEnum;
2016
2036
  ChartAccountsListEnum[ChartAccountsListEnum["PSI_DEDUCTION_OTHER"] = 860] = "PSI_DEDUCTION_OTHER";
2017
2037
  })(ChartAccountsListEnum || (ChartAccountsListEnum = {}));
2018
2038
 
2019
- var ChartAccountsMetadataListEnum;
2020
- (function (ChartAccountsMetadataListEnum) {
2021
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["TAX_INSTALMENTS"] = 4] = "TAX_INSTALMENTS";
2022
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["FRANKING_CREDIT"] = 5] = "FRANKING_CREDIT";
2023
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["ELIGIBLE_FOR_REDUCTION"] = 6] = "ELIGIBLE_FOR_REDUCTION";
2024
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["SHARE_PERCENTAGE"] = 7] = "SHARE_PERCENTAGE";
2025
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["TAX_OFFSETS"] = 8] = "TAX_OFFSETS";
2026
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["HOURS"] = 11] = "HOURS";
2027
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["TAX_PAID"] = 13] = "TAX_PAID";
2028
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["TAX_FREE_COMPONENT"] = 18] = "TAX_FREE_COMPONENT";
2029
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["YEARS_OF_SERVICE"] = 19] = "YEARS_OF_SERVICE";
2030
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["UNTAXED_ELEMENT"] = 24] = "UNTAXED_ELEMENT";
2031
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["NOT_ELIGIBLE_FOR_DEDUCTION"] = 25] = "NOT_ELIGIBLE_FOR_DEDUCTION";
2032
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["FRANKED"] = 26] = "FRANKED";
2033
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["UNFRANKED"] = 27] = "UNFRANKED";
2034
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["TAX_OFFSETS_N_R_A_S"] = 29] = "TAX_OFFSETS_N_R_A_S";
2035
- ChartAccountsMetadataListEnum[ChartAccountsMetadataListEnum["DISCOUNT_FROM_DEFERRED_SCHEMES"] = 32] = "DISCOUNT_FROM_DEFERRED_SCHEMES";
2036
- })(ChartAccountsMetadataListEnum || (ChartAccountsMetadataListEnum = {}));
2037
-
2038
- var ChartAccountsMetadataTypeEnum;
2039
- (function (ChartAccountsMetadataTypeEnum) {
2040
- ChartAccountsMetadataTypeEnum[ChartAccountsMetadataTypeEnum["NUMBER"] = 3] = "NUMBER";
2041
- ChartAccountsMetadataTypeEnum[ChartAccountsMetadataTypeEnum["BOOLEAN"] = 4] = "BOOLEAN";
2042
- })(ChartAccountsMetadataTypeEnum || (ChartAccountsMetadataTypeEnum = {}));
2039
+ var ChartAccountsMetaFieldListEnum;
2040
+ (function (ChartAccountsMetaFieldListEnum) {
2041
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["TAX_INSTALMENTS"] = 4] = "TAX_INSTALMENTS";
2042
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["FRANKING_CREDIT"] = 5] = "FRANKING_CREDIT";
2043
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["ELIGIBLE_FOR_REDUCTION"] = 6] = "ELIGIBLE_FOR_REDUCTION";
2044
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["SHARE_PERCENTAGE"] = 7] = "SHARE_PERCENTAGE";
2045
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["TAX_OFFSETS"] = 8] = "TAX_OFFSETS";
2046
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["HOURS"] = 11] = "HOURS";
2047
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["TAX_PAID"] = 13] = "TAX_PAID";
2048
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["TAX_FREE_COMPONENT"] = 18] = "TAX_FREE_COMPONENT";
2049
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["YEARS_OF_SERVICE"] = 19] = "YEARS_OF_SERVICE";
2050
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["UNTAXED_ELEMENT"] = 24] = "UNTAXED_ELEMENT";
2051
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["NOT_ELIGIBLE_FOR_DEDUCTION"] = 25] = "NOT_ELIGIBLE_FOR_DEDUCTION";
2052
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["FRANKED"] = 26] = "FRANKED";
2053
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["UNFRANKED"] = 27] = "UNFRANKED";
2054
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["TAX_OFFSETS_N_R_A_S"] = 29] = "TAX_OFFSETS_N_R_A_S";
2055
+ ChartAccountsMetaFieldListEnum[ChartAccountsMetaFieldListEnum["DISCOUNT_FROM_DEFERRED_SCHEMES"] = 32] = "DISCOUNT_FROM_DEFERRED_SCHEMES";
2056
+ })(ChartAccountsMetaFieldListEnum || (ChartAccountsMetaFieldListEnum = {}));
2057
+
2058
+ var ChartAccountsMetaFieldTypeEnum;
2059
+ (function (ChartAccountsMetaFieldTypeEnum) {
2060
+ ChartAccountsMetaFieldTypeEnum[ChartAccountsMetaFieldTypeEnum["NUMBER"] = 3] = "NUMBER";
2061
+ ChartAccountsMetaFieldTypeEnum[ChartAccountsMetaFieldTypeEnum["BOOLEAN"] = 4] = "BOOLEAN";
2062
+ })(ChartAccountsMetaFieldTypeEnum || (ChartAccountsMetaFieldTypeEnum = {}));
2043
2063
 
2044
2064
  var ChartAccountsSalaryAdjustmentsListEnum;
2045
2065
  (function (ChartAccountsSalaryAdjustmentsListEnum) {
@@ -2088,6 +2108,11 @@ var ChartAccountsKeepSign;
2088
2108
  ChartAccountsKeepSign[ChartAccountsKeepSign["ADVANCE"] = 556] = "ADVANCE";
2089
2109
  })(ChartAccountsKeepSign || (ChartAccountsKeepSign = {}));
2090
2110
 
2111
+ var DocumentTypeEnum;
2112
+ (function (DocumentTypeEnum) {
2113
+ DocumentTypeEnum[DocumentTypeEnum["INVOICE"] = 1] = "INVOICE";
2114
+ })(DocumentTypeEnum || (DocumentTypeEnum = {}));
2115
+
2091
2116
  // @TODO Artem TT-2308 move everything
2092
2117
 
2093
2118
  class DepreciationCapitalProject extends DepreciationCapitalProject$1 {
@@ -2279,15 +2304,15 @@ class ChartAccountsCategoryECollection {
2279
2304
  class ChartAccountsHeading extends ChartAccountsHeading$1 {
2280
2305
  }
2281
2306
 
2282
- class ChartAccountsMetadata extends ChartAccountsMetadata$1 {
2307
+ class ChartAccountsMetaField extends ChartAccountsMetaField$1 {
2283
2308
  /**
2284
- * Check if metadata id is related to SHARE_PERCENTAGE value
2309
+ * Check if meta field id is related to SHARE_PERCENTAGE value
2285
2310
  */
2286
2311
  isSharePercentage() {
2287
- return this.id === ChartAccountsMetadataListEnum.SHARE_PERCENTAGE;
2312
+ return this.id === ChartAccountsMetaFieldListEnum.SHARE_PERCENTAGE;
2288
2313
  }
2289
2314
  isHours() {
2290
- return this.id === ChartAccountsMetadataListEnum.HOURS;
2315
+ return this.id === ChartAccountsMetaFieldListEnum.HOURS;
2291
2316
  }
2292
2317
  }
2293
2318
 
@@ -2996,6 +3021,9 @@ class ChartAccounts extends ChartAccounts$1 {
2996
3021
  isPropertyCapitalWorks() {
2997
3022
  return this.category === ChartAccountsCategoryEnum.PROPERTY_CAPITAL_WORKS;
2998
3023
  }
3024
+ isTaxable() {
3025
+ return !this.isNRAS() && this.isWorkIncome();
3026
+ }
2999
3027
  }
3000
3028
  /**
3001
3029
  * Australian GST percent value (VAT)
@@ -3007,8 +3035,8 @@ __decorate([
3007
3035
  Type(() => ChartAccountsHeading)
3008
3036
  ], ChartAccounts.prototype, "heading", void 0);
3009
3037
  __decorate([
3010
- Type(() => ChartAccountsMetadata)
3011
- ], ChartAccounts.prototype, "metadata", void 0);
3038
+ Type(() => ChartAccountsMetaField)
3039
+ ], ChartAccounts.prototype, "metaFields", void 0);
3012
3040
  __decorate([
3013
3041
  Type(() => ChartAccountsValue),
3014
3042
  Transform(({ obj }) => CHART_ACCOUNTS_VALUES.get(obj.id).toArray(), { toClassOnly: true }),
@@ -3028,6 +3056,307 @@ __decorate([
3028
3056
  Transform(({ value }) => +value)
3029
3057
  ], ChartAccountsDepreciation.prototype, "effectiveLife", void 0);
3030
3058
 
3059
+ let AllocationRule$1 = class AllocationRule extends AbstractModel {
3060
+ };
3061
+
3062
+ let AllocationRuleCondition$1 = class AllocationRuleCondition extends AbstractModel {
3063
+ };
3064
+
3065
+ class AllocationRuleCondition extends AllocationRuleCondition$1 {
3066
+ }
3067
+
3068
+ let AllocationRuleTransaction$1 = class AllocationRuleTransaction extends TransactionBase {
3069
+ };
3070
+
3071
+ let AllocationRuleTransactionMetaField$1 = class AllocationRuleTransactionMetaField extends AbstractModel {
3072
+ };
3073
+
3074
+ class AllocationRuleTransactionMetaField extends AllocationRuleTransactionMetaField$1 {
3075
+ }
3076
+
3077
+ var IncomeSourceTypeEnum;
3078
+ (function (IncomeSourceTypeEnum) {
3079
+ IncomeSourceTypeEnum[IncomeSourceTypeEnum["WORK"] = 1] = "WORK";
3080
+ IncomeSourceTypeEnum[IncomeSourceTypeEnum["SOLE"] = 2] = "SOLE";
3081
+ IncomeSourceTypeEnum[IncomeSourceTypeEnum["OTHER"] = 3] = "OTHER";
3082
+ })(IncomeSourceTypeEnum || (IncomeSourceTypeEnum = {}));
3083
+
3084
+ class SalaryForecast extends SalaryForecast$1 {
3085
+ get taxWithheld() {
3086
+ return this.grossAmount - this.netPay;
3087
+ }
3088
+ }
3089
+ __decorate([
3090
+ Transform(({ obj }) => obj.netPay + obj.tax),
3091
+ Expose()
3092
+ ], SalaryForecast.prototype, "grossAmount", void 0);
3093
+ __decorate([
3094
+ Type(() => IncomeSource)
3095
+ ], SalaryForecast.prototype, "incomeSource", void 0);
3096
+
3097
+ class SoleForecast extends SoleForecast$1 {
3098
+ get netPay() {
3099
+ return this.amount;
3100
+ }
3101
+ ;
3102
+ }
3103
+ __decorate([
3104
+ Type(() => IncomeSource)
3105
+ ], SoleForecast.prototype, "incomeSource", void 0);
3106
+
3107
+ var SalaryForecastFrequencyEnum;
3108
+ (function (SalaryForecastFrequencyEnum) {
3109
+ SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["ANNUAL"] = 1] = "ANNUAL";
3110
+ SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["MONTHLY"] = 12] = "MONTHLY";
3111
+ SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["FORTNIGHTLY"] = 26] = "FORTNIGHTLY";
3112
+ SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["WEEKLY"] = 52] = "WEEKLY";
3113
+ })(SalaryForecastFrequencyEnum || (SalaryForecastFrequencyEnum = {}));
3114
+
3115
+ var IncomeSourceTypeListWorkEnum;
3116
+ (function (IncomeSourceTypeListWorkEnum) {
3117
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["BONUSES"] = 1] = "BONUSES";
3118
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["DIRECTOR_FEES"] = 2] = "DIRECTOR_FEES";
3119
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["DIVIDENDS"] = 3] = "DIVIDENDS";
3120
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["INTEREST"] = 4] = "INTEREST";
3121
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["PENSIONS_AND_ALLOWANCES"] = 5] = "PENSIONS_AND_ALLOWANCES";
3122
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["SUPERANNUATION"] = 8] = "SUPERANNUATION";
3123
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["ATTRIBUTED_P_S_I"] = 11] = "ATTRIBUTED_P_S_I";
3124
+ })(IncomeSourceTypeListWorkEnum || (IncomeSourceTypeListWorkEnum = {}));
3125
+
3126
+ var IncomeSourceTypeListOtherEnum;
3127
+ (function (IncomeSourceTypeListOtherEnum) {
3128
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PSI"] = 6] = "PSI";
3129
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
3130
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["TRUSTS"] = 9] = "TRUSTS";
3131
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["OTHER_INCOME"] = 10] = "OTHER_INCOME";
3132
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PARTNERSHIPS"] = 12] = "PARTNERSHIPS";
3133
+ })(IncomeSourceTypeListOtherEnum || (IncomeSourceTypeListOtherEnum = {}));
3134
+
3135
+ var IncomeSourceTypeListSoleEnum;
3136
+ (function (IncomeSourceTypeListSoleEnum) {
3137
+ IncomeSourceTypeListSoleEnum[IncomeSourceTypeListSoleEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
3138
+ })(IncomeSourceTypeListSoleEnum || (IncomeSourceTypeListSoleEnum = {}));
3139
+
3140
+ class IncomeSourceType extends IncomeSourceType$1 {
3141
+ isBonuses() {
3142
+ return this.id === IncomeSourceTypeListWorkEnum.BONUSES;
3143
+ }
3144
+ isWork() {
3145
+ return !!IncomeSourceTypeListWorkEnum[this.id];
3146
+ }
3147
+ isOther() {
3148
+ return !!IncomeSourceTypeListOtherEnum[this.id];
3149
+ }
3150
+ isSole() {
3151
+ return !!IncomeSourceTypeListSoleEnum[this.id];
3152
+ }
3153
+ get type() {
3154
+ switch (true) {
3155
+ case this.isWork():
3156
+ return IncomeSourceTypeEnum.WORK;
3157
+ case this.isSole():
3158
+ return IncomeSourceTypeEnum.SOLE;
3159
+ default:
3160
+ return IncomeSourceTypeEnum.OTHER;
3161
+ }
3162
+ }
3163
+ }
3164
+
3165
+ class IncomeSourceForecast extends IncomeSourceForecast$1 {
3166
+ constructor() {
3167
+ super(...arguments);
3168
+ this.paygIncome = 0;
3169
+ this.frequency = SalaryForecastFrequencyEnum.ANNUAL;
3170
+ this.isTaxFree = false;
3171
+ }
3172
+ /**
3173
+ * Sometimes Income source has Salary & Income source forecasts,
3174
+ * and we need these fields to work with Income source forecasts like with Salary Forecasts
3175
+ */
3176
+ get netPay() {
3177
+ return this.amount;
3178
+ }
3179
+ get grossAmount() {
3180
+ return this.amount + this.tax + this.taxInstalments + this.frankingCredits;
3181
+ }
3182
+ }
3183
+ __decorate([
3184
+ Type(() => IncomeSourceType)
3185
+ ], IncomeSourceForecast.prototype, "incomeSourceType", void 0);
3186
+ __decorate([
3187
+ Type(() => IncomeSource)
3188
+ ], IncomeSourceForecast.prototype, "incomeSource", void 0);
3189
+
3190
+ class IncomeSource extends IncomeSource$1 {
3191
+ isSalaryIncome() {
3192
+ return !!this.salaryForecasts.length;
3193
+ // @TODO Vik: old code
3194
+ // return this.type === IncomeSourceTypeEnum.SALARY;
3195
+ }
3196
+ isSoleIncome() {
3197
+ return !!this.soleForecasts.length;
3198
+ }
3199
+ isWorkIncome() {
3200
+ return this.type === IncomeSourceTypeEnum.WORK;
3201
+ }
3202
+ isOtherIncome() {
3203
+ return this.type === IncomeSourceTypeEnum.OTHER || (!this.isSoleIncome() && !this.isSalaryIncome());
3204
+ }
3205
+ /**
3206
+ * Get salary and other income forecasts
3207
+ */
3208
+ get forecasts() {
3209
+ return [...this.salaryForecasts, ...this.incomeSourceForecasts, ...this.soleForecasts];
3210
+ }
3211
+ /**
3212
+ * Get actual (1st from the list) forecast
3213
+ */
3214
+ get actualForecast() {
3215
+ return this.forecasts[0];
3216
+ }
3217
+ /**
3218
+ * Check if user was working in month taken by the index
3219
+ * @param monthIndex by which month should be taken
3220
+ */
3221
+ isWorkedInMonth(monthIndex) {
3222
+ const monthDate = new FinancialYear().getMonthDate(monthIndex);
3223
+ return (!this.dateFrom || monthDate >= this.dateFrom) && (!this.dateTo || monthDate < this.dateTo);
3224
+ }
3225
+ }
3226
+ __decorate([
3227
+ Type(() => SalaryForecast)
3228
+ ], IncomeSource.prototype, "salaryForecasts", void 0);
3229
+ __decorate([
3230
+ Type(() => SoleForecast)
3231
+ ], IncomeSource.prototype, "soleForecasts", void 0);
3232
+ __decorate([
3233
+ Type(() => IncomeSourceForecast)
3234
+ ], IncomeSource.prototype, "incomeSourceForecasts", void 0);
3235
+ __decorate([
3236
+ Type(() => Date)
3237
+ ], IncomeSource.prototype, "dateFrom", void 0);
3238
+ __decorate([
3239
+ Type(() => Date)
3240
+ ], IncomeSource.prototype, "dateTo", void 0);
3241
+
3242
+ class AllocationRuleTransaction extends AllocationRuleTransaction$1 {
3243
+ calculateClaimPercent() {
3244
+ if (!this.chartAccounts) {
3245
+ return null;
3246
+ }
3247
+ let claimPercent = this.chartAccounts.taxablePercent;
3248
+ // Property claim (ownership% x shared%) for property expenses, taxable percent for others
3249
+ if (this.chartAccounts?.isProperty() && this.property) {
3250
+ if (this.chartAccounts.isPropertyExpense() && this.chartAccounts.id !== ChartAccountsListEnum.PLATFORM_FEES) {
3251
+ claimPercent *= this.property?.claimCoefficient;
3252
+ }
3253
+ }
3254
+ return claimPercent;
3255
+ }
3256
+ }
3257
+ __decorate([
3258
+ Type(() => ChartAccounts),
3259
+ Transform(({ value }) => { return { id: value.id }; }, { toPlainOnly: true })
3260
+ ], AllocationRuleTransaction.prototype, "chartAccounts", void 0);
3261
+ __decorate([
3262
+ Type(() => Property),
3263
+ Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
3264
+ ], AllocationRuleTransaction.prototype, "property", void 0);
3265
+ __decorate([
3266
+ Type(() => Loan),
3267
+ Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
3268
+ ], AllocationRuleTransaction.prototype, "loan", void 0);
3269
+ __decorate([
3270
+ Type(() => IncomeSource),
3271
+ Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
3272
+ ], AllocationRuleTransaction.prototype, "incomeSource", void 0);
3273
+ __decorate([
3274
+ Type(() => SoleBusiness),
3275
+ Transform(({ value }) => { return value ? { id: value.id } : null; }, { toPlainOnly: true })
3276
+ ], AllocationRuleTransaction.prototype, "business", void 0);
3277
+ __decorate([
3278
+ Type(() => AllocationRuleTransactionMetaField)
3279
+ ], AllocationRuleTransaction.prototype, "metaFields", void 0);
3280
+ __decorate([
3281
+ Type(() => AllocationRuleTransaction)
3282
+ ], AllocationRuleTransaction.prototype, "parentTransaction", void 0);
3283
+ __decorate([
3284
+ Type(() => AllocationRuleTransaction)
3285
+ ], AllocationRuleTransaction.prototype, "childTransactions", void 0);
3286
+ __decorate([
3287
+ Type(() => Number)
3288
+ ], AllocationRuleTransaction.prototype, "claimPercent", void 0);
3289
+
3290
+ class AllocationRule extends AllocationRule$1 {
3291
+ constructor() {
3292
+ super(...arguments);
3293
+ this.type = AllocationRuleTypeEnum.EXPENSE;
3294
+ this.conditionOperator = AllocationRuleConditionOperatorEnum.OR;
3295
+ }
3296
+ get typeLabel() {
3297
+ switch (this.type) {
3298
+ case AllocationRuleTypeEnum.EXPENSE:
3299
+ return 'expense';
3300
+ case AllocationRuleTypeEnum.INCOME:
3301
+ return 'income';
3302
+ default:
3303
+ return 'transfer';
3304
+ }
3305
+ }
3306
+ get tankTypeLabel() {
3307
+ switch (this.transaction.tankType) {
3308
+ case TankTypeEnum.WORK:
3309
+ return 'work';
3310
+ case TankTypeEnum.PROPERTY:
3311
+ return 'property';
3312
+ case TankTypeEnum.SOLE:
3313
+ return 'sole';
3314
+ default:
3315
+ return 'personal';
3316
+ }
3317
+ }
3318
+ isIncome() {
3319
+ return this.type === AllocationRuleTypeEnum.INCOME;
3320
+ }
3321
+ isExpense() {
3322
+ return this.type === AllocationRuleTypeEnum.EXPENSE;
3323
+ }
3324
+ isTransfer() {
3325
+ return this.type === AllocationRuleTypeEnum.TRANSFER;
3326
+ }
3327
+ isPropertyTank() {
3328
+ return this.transaction.tankType === TankTypeEnum.PROPERTY;
3329
+ }
3330
+ isWorkTank() {
3331
+ return this.transaction.tankType === TankTypeEnum.WORK;
3332
+ }
3333
+ isSoleTank() {
3334
+ return this.transaction.tankType === TankTypeEnum.SOLE;
3335
+ }
3336
+ isPropertyIncome() {
3337
+ return this.isIncome() && this.isPropertyTank();
3338
+ }
3339
+ isWorkIncome() {
3340
+ return this.isIncome() && this.isWorkTank();
3341
+ }
3342
+ isSoleIncome() {
3343
+ return this.isIncome() && this.isSoleTank();
3344
+ }
3345
+ }
3346
+ __decorate([
3347
+ Type(() => BankAccount),
3348
+ Transform(({ value }) => { return { id: value.id }; }, { toPlainOnly: true })
3349
+ ], AllocationRule.prototype, "bankAccount", void 0);
3350
+ __decorate([
3351
+ Type(() => AllocationRuleCondition)
3352
+ ], AllocationRule.prototype, "conditions", void 0);
3353
+ __decorate([
3354
+ Type(() => AllocationRuleTransaction)
3355
+ ], AllocationRule.prototype, "transaction", void 0);
3356
+ __decorate([
3357
+ Type(() => BankAccount)
3358
+ ], AllocationRule.prototype, "transferBankAccount", void 0);
3359
+
3031
3360
  /**
3032
3361
  * Enum with income amount types (Net or Gross)
3033
3362
  */
@@ -3095,8 +3424,8 @@ __decorate([
3095
3424
  Type(() => Date)
3096
3425
  ], PropertySale.prototype, "contractDate", void 0);
3097
3426
  __decorate([
3098
- Type(() => PropertySaleTaxExemptionMetadata$1)
3099
- ], PropertySale.prototype, "taxExemptionMetadata", void 0);
3427
+ Type(() => PropertySaleTaxExemptionMetaField$1)
3428
+ ], PropertySale.prototype, "taxExemptionMetaFields", void 0);
3100
3429
 
3101
3430
  /**
3102
3431
  * @Todo TT-2143 should be removed when PropertySaleCostBaseForm refactored (cut property to separated form)
@@ -3114,13 +3443,13 @@ class PropertySaleCostBase {
3114
3443
  }
3115
3444
  }
3116
3445
 
3117
- class PropertySaleTaxExemptionMetadata extends PropertySaleTaxExemptionMetadata$1 {
3446
+ class PropertySaleTaxExemptionMetaField extends PropertySaleTaxExemptionMetaField$1 {
3118
3447
  }
3119
3448
 
3120
3449
  class TaxExemption extends TaxExemption$1 {
3121
3450
  }
3122
3451
 
3123
- class TaxExemptionMetadata extends TaxExemptionMetadata$1 {
3452
+ class TaxExemptionMetaField extends TaxExemptionMetaField$1 {
3124
3453
  }
3125
3454
 
3126
3455
  /**
@@ -3497,289 +3826,124 @@ class PropertyForecast extends PropertyForecast$1 {
3497
3826
  }
3498
3827
  /**
3499
3828
  * Get tax position
3500
- * Tax Position = Income - Expense - Interest - Depreciation
3501
- */
3502
- get taxPosition() {
3503
- return this.cashPosition + this.depreciation;
3504
- }
3505
- /**
3506
- * Get rental return percent
3507
- * Rental Return = Income / Market Value
3508
- */
3509
- get rentalReturn() {
3510
- return this.income / this.marketValue;
3511
- }
3512
- /**
3513
- * Check if forecast is for real current fin year (not selected in the sidebar)
3514
- */
3515
- isCurrentYear() {
3516
- return this.financialYear === new FinancialYear(new Date()).year;
3517
- }
3518
- }
3519
- __decorate([
3520
- Transform(({ value }) => +value)
3521
- ], PropertyForecast.prototype, "income", void 0);
3522
- __decorate([
3523
- Transform(({ value }) => -Math.abs(+value))
3524
- ], PropertyForecast.prototype, "expense", void 0);
3525
- __decorate([
3526
- Transform(({ value }) => -Math.abs(+value))
3527
- ], PropertyForecast.prototype, "interest", void 0);
3528
- __decorate([
3529
- Transform(({ value }) => -Math.abs(+value))
3530
- ], PropertyForecast.prototype, "depreciation", void 0);
3531
- __decorate([
3532
- Transform(({ value }) => +value)
3533
- ], PropertyForecast.prototype, "loanBalance", void 0);
3534
- __decorate([
3535
- Transform(({ value }) => +value)
3536
- ], PropertyForecast.prototype, "marketValue", void 0);
3537
-
3538
- var PropertyShareStatusEnum;
3539
- (function (PropertyShareStatusEnum) {
3540
- PropertyShareStatusEnum[PropertyShareStatusEnum["PENDING"] = 1] = "PENDING";
3541
- PropertyShareStatusEnum[PropertyShareStatusEnum["APPROVED"] = 2] = "APPROVED";
3542
- PropertyShareStatusEnum[PropertyShareStatusEnum["REJECTED"] = 3] = "REJECTED";
3543
- })(PropertyShareStatusEnum || (PropertyShareStatusEnum = {}));
3544
-
3545
- class RegistrationInvite extends RegistrationInvite$1 {
3546
- getPhotoPlaceholder() {
3547
- return `${this.firstName[0].toUpperCase()}${this.firstName[1]}`;
3548
- }
3549
- getPhoto() {
3550
- return null;
3551
- }
3552
- }
3553
-
3554
- class PropertyShare extends PropertyShare$1 {
3555
- isAccepted() {
3556
- return this.status === PropertyShareStatusEnum.APPROVED;
3557
- }
3558
- isPending() {
3559
- return this.status === PropertyShareStatusEnum.PENDING;
3560
- }
3561
- isRejected() {
3562
- return this.status === PropertyShareStatusEnum.REJECTED;
3563
- }
3564
- get statusName() {
3565
- return PropertyShareStatusEnum[this.status]?.toLowerCase();
3566
- }
3567
- /**
3568
- * Return full user name if user is already registered.
3569
- * Otherwise - return first name from invitation
3570
- */
3571
- get userName() {
3572
- return this.user ? this.user.fullName : `${this.invite.firstName}`;
3573
- }
3574
- }
3575
- __decorate([
3576
- Type(() => Date)
3577
- ], PropertyShare.prototype, "fromDate", void 0);
3578
- __decorate([
3579
- Type(() => Date)
3580
- ], PropertyShare.prototype, "toDate", void 0);
3581
- __decorate([
3582
- Type(() => User)
3583
- ], PropertyShare.prototype, "user", void 0);
3584
- __decorate([
3585
- Type(() => RegistrationInvite)
3586
- ], PropertyShare.prototype, "invite", void 0);
3587
- __decorate([
3588
- Type(() => Property)
3589
- ], PropertyShare.prototype, "property", void 0);
3590
- __decorate([
3591
- Transform(({ obj }) => obj.user ? obj.user.email : obj.invite.email)
3592
- ], PropertyShare.prototype, "email", void 0);
3593
-
3594
- /**
3595
- * @TODO used only on dashboard, move from tt-core
3596
- * Enum with properties ownership filter options
3597
- */
3598
- var ShareFilterOptionsEnum;
3599
- (function (ShareFilterOptionsEnum) {
3600
- ShareFilterOptionsEnum[ShareFilterOptionsEnum["ALL"] = 1] = "ALL";
3601
- ShareFilterOptionsEnum[ShareFilterOptionsEnum["CREATED"] = 2] = "CREATED";
3602
- ShareFilterOptionsEnum[ShareFilterOptionsEnum["SHARED"] = 3] = "SHARED";
3603
- })(ShareFilterOptionsEnum || (ShareFilterOptionsEnum = {}));
3604
-
3605
- class TransactionReceipt extends TransactionReceipt$1 {
3606
- constructor() {
3607
- super(...arguments);
3608
- this.type = AssetTypeEnum.TRANSACTION_RECEIPT;
3609
- this.entityType = AssetEntityTypeEnum.TRANSACTIONS;
3610
- }
3611
- }
3612
-
3613
- var IncomeSourceTypeEnum;
3614
- (function (IncomeSourceTypeEnum) {
3615
- IncomeSourceTypeEnum[IncomeSourceTypeEnum["WORK"] = 1] = "WORK";
3616
- IncomeSourceTypeEnum[IncomeSourceTypeEnum["SOLE"] = 2] = "SOLE";
3617
- IncomeSourceTypeEnum[IncomeSourceTypeEnum["OTHER"] = 3] = "OTHER";
3618
- })(IncomeSourceTypeEnum || (IncomeSourceTypeEnum = {}));
3619
-
3620
- class SalaryForecast extends SalaryForecast$1 {
3621
- get taxWithheld() {
3622
- return this.grossAmount - this.netPay;
3623
- }
3624
- }
3625
- __decorate([
3626
- Transform(({ obj }) => obj.netPay + obj.tax),
3627
- Expose()
3628
- ], SalaryForecast.prototype, "grossAmount", void 0);
3629
- __decorate([
3630
- Type(() => IncomeSource)
3631
- ], SalaryForecast.prototype, "incomeSource", void 0);
3632
-
3633
- class SoleForecast extends SoleForecast$1 {
3634
- get netPay() {
3635
- return this.amount;
3636
- }
3637
- ;
3638
- }
3639
- __decorate([
3640
- Type(() => IncomeSource)
3641
- ], SoleForecast.prototype, "incomeSource", void 0);
3642
-
3643
- var SalaryForecastFrequencyEnum;
3644
- (function (SalaryForecastFrequencyEnum) {
3645
- SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["ANNUAL"] = 1] = "ANNUAL";
3646
- SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["MONTHLY"] = 12] = "MONTHLY";
3647
- SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["FORTNIGHTLY"] = 26] = "FORTNIGHTLY";
3648
- SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["WEEKLY"] = 52] = "WEEKLY";
3649
- })(SalaryForecastFrequencyEnum || (SalaryForecastFrequencyEnum = {}));
3650
-
3651
- var IncomeSourceTypeListWorkEnum;
3652
- (function (IncomeSourceTypeListWorkEnum) {
3653
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["BONUSES"] = 1] = "BONUSES";
3654
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["DIRECTOR_FEES"] = 2] = "DIRECTOR_FEES";
3655
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["DIVIDENDS"] = 3] = "DIVIDENDS";
3656
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["INTEREST"] = 4] = "INTEREST";
3657
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["PENSIONS_AND_ALLOWANCES"] = 5] = "PENSIONS_AND_ALLOWANCES";
3658
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["SUPERANNUATION"] = 8] = "SUPERANNUATION";
3659
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["ATTRIBUTED_P_S_I"] = 11] = "ATTRIBUTED_P_S_I";
3660
- })(IncomeSourceTypeListWorkEnum || (IncomeSourceTypeListWorkEnum = {}));
3661
-
3662
- var IncomeSourceTypeListOtherEnum;
3663
- (function (IncomeSourceTypeListOtherEnum) {
3664
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PSI"] = 6] = "PSI";
3665
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
3666
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["TRUSTS"] = 9] = "TRUSTS";
3667
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["OTHER_INCOME"] = 10] = "OTHER_INCOME";
3668
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PARTNERSHIPS"] = 12] = "PARTNERSHIPS";
3669
- })(IncomeSourceTypeListOtherEnum || (IncomeSourceTypeListOtherEnum = {}));
3670
-
3671
- var IncomeSourceTypeListSoleEnum;
3672
- (function (IncomeSourceTypeListSoleEnum) {
3673
- IncomeSourceTypeListSoleEnum[IncomeSourceTypeListSoleEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
3674
- })(IncomeSourceTypeListSoleEnum || (IncomeSourceTypeListSoleEnum = {}));
3675
-
3676
- class IncomeSourceType extends IncomeSourceType$1 {
3677
- isBonuses() {
3678
- return this.id === IncomeSourceTypeListWorkEnum.BONUSES;
3679
- }
3680
- isWork() {
3681
- return !!IncomeSourceTypeListWorkEnum[this.id];
3682
- }
3683
- isOther() {
3684
- return !!IncomeSourceTypeListOtherEnum[this.id];
3685
- }
3686
- isSole() {
3687
- return !!IncomeSourceTypeListSoleEnum[this.id];
3688
- }
3689
- get type() {
3690
- switch (true) {
3691
- case this.isWork():
3692
- return IncomeSourceTypeEnum.WORK;
3693
- case this.isSole():
3694
- return IncomeSourceTypeEnum.SOLE;
3695
- default:
3696
- return IncomeSourceTypeEnum.OTHER;
3697
- }
3698
- }
3699
- }
3700
-
3701
- class IncomeSourceForecast extends IncomeSourceForecast$1 {
3702
- constructor() {
3703
- super(...arguments);
3704
- this.paygIncome = 0;
3705
- this.frequency = SalaryForecastFrequencyEnum.ANNUAL;
3706
- this.isTaxFree = false;
3829
+ * Tax Position = Income - Expense - Interest - Depreciation
3830
+ */
3831
+ get taxPosition() {
3832
+ return this.cashPosition + this.depreciation;
3707
3833
  }
3708
3834
  /**
3709
- * Sometimes Income source has Salary & Income source forecasts,
3710
- * and we need these fields to work with Income source forecasts like with Salary Forecasts
3835
+ * Get rental return percent
3836
+ * Rental Return = Income / Market Value
3711
3837
  */
3712
- get netPay() {
3713
- return this.amount;
3838
+ get rentalReturn() {
3839
+ return this.income / this.marketValue;
3714
3840
  }
3715
- get grossAmount() {
3716
- return this.amount + this.tax + this.taxInstalments + this.frankingCredits;
3841
+ /**
3842
+ * Check if forecast is for real current fin year (not selected in the sidebar)
3843
+ */
3844
+ isCurrentYear() {
3845
+ return this.financialYear === new FinancialYear(new Date()).year;
3717
3846
  }
3718
3847
  }
3719
3848
  __decorate([
3720
- Type(() => IncomeSourceType)
3721
- ], IncomeSourceForecast.prototype, "incomeSourceType", void 0);
3849
+ Transform(({ value }) => +value)
3850
+ ], PropertyForecast.prototype, "income", void 0);
3722
3851
  __decorate([
3723
- Type(() => IncomeSource)
3724
- ], IncomeSourceForecast.prototype, "incomeSource", void 0);
3852
+ Transform(({ value }) => -Math.abs(+value))
3853
+ ], PropertyForecast.prototype, "expense", void 0);
3854
+ __decorate([
3855
+ Transform(({ value }) => -Math.abs(+value))
3856
+ ], PropertyForecast.prototype, "interest", void 0);
3857
+ __decorate([
3858
+ Transform(({ value }) => -Math.abs(+value))
3859
+ ], PropertyForecast.prototype, "depreciation", void 0);
3860
+ __decorate([
3861
+ Transform(({ value }) => +value)
3862
+ ], PropertyForecast.prototype, "loanBalance", void 0);
3863
+ __decorate([
3864
+ Transform(({ value }) => +value)
3865
+ ], PropertyForecast.prototype, "marketValue", void 0);
3725
3866
 
3726
- class IncomeSource extends IncomeSource$1 {
3727
- isSalaryIncome() {
3728
- return !!this.salaryForecasts.length;
3729
- // @TODO Vik: old code
3730
- // return this.type === IncomeSourceTypeEnum.SALARY;
3867
+ var PropertyShareStatusEnum;
3868
+ (function (PropertyShareStatusEnum) {
3869
+ PropertyShareStatusEnum[PropertyShareStatusEnum["PENDING"] = 1] = "PENDING";
3870
+ PropertyShareStatusEnum[PropertyShareStatusEnum["APPROVED"] = 2] = "APPROVED";
3871
+ PropertyShareStatusEnum[PropertyShareStatusEnum["REJECTED"] = 3] = "REJECTED";
3872
+ })(PropertyShareStatusEnum || (PropertyShareStatusEnum = {}));
3873
+
3874
+ class RegistrationInvite extends RegistrationInvite$1 {
3875
+ getPhotoPlaceholder() {
3876
+ return `${this.firstName[0].toUpperCase()}${this.firstName[1]}`;
3731
3877
  }
3732
- isSoleIncome() {
3733
- return !!this.soleForecasts.length;
3878
+ getPhoto() {
3879
+ return null;
3734
3880
  }
3735
- isWorkIncome() {
3736
- return this.type === IncomeSourceTypeEnum.WORK;
3881
+ }
3882
+
3883
+ class PropertyShare extends PropertyShare$1 {
3884
+ isAccepted() {
3885
+ return this.status === PropertyShareStatusEnum.APPROVED;
3737
3886
  }
3738
- isOtherIncome() {
3739
- return this.type === IncomeSourceTypeEnum.OTHER || (!this.isSoleIncome() && !this.isSalaryIncome());
3887
+ isPending() {
3888
+ return this.status === PropertyShareStatusEnum.PENDING;
3740
3889
  }
3741
- /**
3742
- * Get salary and other income forecasts
3743
- */
3744
- get forecasts() {
3745
- return [...this.salaryForecasts, ...this.incomeSourceForecasts, ...this.soleForecasts];
3890
+ isRejected() {
3891
+ return this.status === PropertyShareStatusEnum.REJECTED;
3746
3892
  }
3747
- /**
3748
- * Get actual (1st from the list) forecast
3749
- */
3750
- get actualForecast() {
3751
- return this.forecasts[0];
3893
+ get statusName() {
3894
+ return PropertyShareStatusEnum[this.status]?.toLowerCase();
3752
3895
  }
3753
3896
  /**
3754
- * Check if user was working in month taken by the index
3755
- * @param monthIndex by which month should be taken
3897
+ * Return full user name if user is already registered.
3898
+ * Otherwise - return first name from invitation
3756
3899
  */
3757
- isWorkedInMonth(monthIndex) {
3758
- const monthDate = new FinancialYear().getMonthDate(monthIndex);
3759
- return (!this.dateFrom || monthDate >= this.dateFrom) && (!this.dateTo || monthDate < this.dateTo);
3900
+ get userName() {
3901
+ return this.user ? this.user.fullName : `${this.invite.firstName}`;
3760
3902
  }
3761
3903
  }
3762
3904
  __decorate([
3763
- Type(() => SalaryForecast)
3764
- ], IncomeSource.prototype, "salaryForecasts", void 0);
3905
+ Type(() => Date)
3906
+ ], PropertyShare.prototype, "fromDate", void 0);
3765
3907
  __decorate([
3766
- Type(() => SoleForecast)
3767
- ], IncomeSource.prototype, "soleForecasts", void 0);
3908
+ Type(() => Date)
3909
+ ], PropertyShare.prototype, "toDate", void 0);
3768
3910
  __decorate([
3769
- Type(() => IncomeSourceForecast)
3770
- ], IncomeSource.prototype, "incomeSourceForecasts", void 0);
3911
+ Type(() => User)
3912
+ ], PropertyShare.prototype, "user", void 0);
3771
3913
  __decorate([
3772
- Type(() => Date)
3773
- ], IncomeSource.prototype, "dateFrom", void 0);
3914
+ Type(() => RegistrationInvite)
3915
+ ], PropertyShare.prototype, "invite", void 0);
3774
3916
  __decorate([
3775
- Type(() => Date)
3776
- ], IncomeSource.prototype, "dateTo", void 0);
3917
+ Type(() => Property)
3918
+ ], PropertyShare.prototype, "property", void 0);
3919
+ __decorate([
3920
+ Transform(({ obj }) => obj.user ? obj.user.email : obj.invite.email)
3921
+ ], PropertyShare.prototype, "email", void 0);
3922
+
3923
+ /**
3924
+ * @TODO used only on dashboard, move from tt-core
3925
+ * Enum with properties ownership filter options
3926
+ */
3927
+ var ShareFilterOptionsEnum;
3928
+ (function (ShareFilterOptionsEnum) {
3929
+ ShareFilterOptionsEnum[ShareFilterOptionsEnum["ALL"] = 1] = "ALL";
3930
+ ShareFilterOptionsEnum[ShareFilterOptionsEnum["CREATED"] = 2] = "CREATED";
3931
+ ShareFilterOptionsEnum[ShareFilterOptionsEnum["SHARED"] = 3] = "SHARED";
3932
+ })(ShareFilterOptionsEnum || (ShareFilterOptionsEnum = {}));
3933
+
3934
+ class TransactionReceipt extends TransactionReceipt$1 {
3935
+ constructor() {
3936
+ super(...arguments);
3937
+ this.type = AssetTypeEnum.TRANSACTION_RECEIPT;
3938
+ this.entityType = AssetEntityTypeEnum.TRANSACTIONS;
3939
+ }
3940
+ }
3777
3941
 
3778
- class TransactionMetadata extends TransactionMetadata$1 {
3942
+ class TransactionMetaField extends TransactionMetaField$1 {
3779
3943
  }
3780
3944
  __decorate([
3781
- Type(() => ChartAccountsMetadata)
3782
- ], TransactionMetadata.prototype, "metadata", void 0);
3945
+ Type(() => ChartAccountsMetaField)
3946
+ ], TransactionMetaField.prototype, "metaField", void 0);
3783
3947
 
3784
3948
  /**
3785
3949
  * Enum with maximum number of payments, depending on the frequency.
@@ -4538,7 +4702,7 @@ class Transaction extends Transaction$1 {
4538
4702
  super(...arguments);
4539
4703
  // list of child transactions (fees)
4540
4704
  this.transactions = [];
4541
- this.metadata = [];
4705
+ this.metaFields = [];
4542
4706
  this.allocations = [];
4543
4707
  this.tax = 0;
4544
4708
  this.operation = TransactionOperationEnum.FIND_AND_MATCH;
@@ -4605,16 +4769,16 @@ class Transaction extends Transaction$1 {
4605
4769
  return this.chartAccounts.isVehicleExpense();
4606
4770
  }
4607
4771
  get taxFreeComponent() {
4608
- return this.getMetadataFieldValue(ChartAccountsMetadataListEnum.TAX_FREE_COMPONENT);
4772
+ return this.getMetaFieldValue(ChartAccountsMetaFieldListEnum.TAX_FREE_COMPONENT);
4609
4773
  }
4610
4774
  get frankingCredit() {
4611
- return this.getMetadataFieldValue(ChartAccountsMetadataListEnum.FRANKING_CREDIT);
4775
+ return this.getMetaFieldValue(ChartAccountsMetaFieldListEnum.FRANKING_CREDIT);
4612
4776
  }
4613
4777
  get eligibleForReduction() {
4614
- return this.getMetadataFieldValue(ChartAccountsMetadataListEnum.ELIGIBLE_FOR_REDUCTION);
4778
+ return this.getMetaFieldValue(ChartAccountsMetaFieldListEnum.ELIGIBLE_FOR_REDUCTION);
4615
4779
  }
4616
4780
  get untaxedElement() {
4617
- return this.getMetadataFieldValue(ChartAccountsMetadataListEnum.UNTAXED_ELEMENT);
4781
+ return this.getMetaFieldValue(ChartAccountsMetaFieldListEnum.UNTAXED_ELEMENT);
4618
4782
  }
4619
4783
  /**
4620
4784
  * Check if transaction reconcile operation if TRANSFER
@@ -4636,13 +4800,13 @@ class Transaction extends Transaction$1 {
4636
4800
  return this.isCredit() ? Math.abs(this.grossAmount) : 0;
4637
4801
  }
4638
4802
  /**
4639
- * Get value of transaction metadata field
4803
+ * Get value of transaction meta field
4640
4804
  * @param field for which value should be returned
4641
- * @Todo modify 'metadata' property from array to Collection
4805
+ * @Todo modify 'metaFields' property from array to Collection
4642
4806
  */
4643
- getMetadataFieldValue(field) {
4644
- return +this.metadata.find((transactionMetadata) => {
4645
- return transactionMetadata.chartAccountsMetadata.id === field;
4807
+ getMetaFieldValue(field) {
4808
+ return +this.metaFields.find((transactionMetaField) => {
4809
+ return transactionMetaField.chartAccountsMetaField.id === field;
4646
4810
  })?.value || 0;
4647
4811
  }
4648
4812
  isCash() {
@@ -4733,8 +4897,8 @@ __decorate([
4733
4897
  Type(() => IncomeSource)
4734
4898
  ], Transaction.prototype, "incomeSource", void 0);
4735
4899
  __decorate([
4736
- Type(() => TransactionMetadata)
4737
- ], Transaction.prototype, "metadata", void 0);
4900
+ Type(() => TransactionMetaField)
4901
+ ], Transaction.prototype, "metaFields", void 0);
4738
4902
  __decorate([
4739
4903
  Type(() => Transaction)
4740
4904
  ], Transaction.prototype, "transfer", void 0);
@@ -5024,14 +5188,14 @@ class TransactionCollection extends ExportableCollection {
5024
5188
  return new TransactionCollection(this.items.filter((transaction) => transaction.date.getMonth() === monthIndex));
5025
5189
  }
5026
5190
  /**
5027
- * Get collection of transactions metadata
5191
+ * Get collection of transactions meta fields
5028
5192
  */
5029
- getTransactionsMetadata() {
5030
- const metadataArray = [];
5193
+ getTransactionsMetaFields() {
5194
+ const metaFieldsArray = [];
5031
5195
  this.items.forEach((transaction) => {
5032
- metadataArray.push(...transaction.metadata);
5196
+ metaFieldsArray.push(...transaction.metaFields);
5033
5197
  });
5034
- return new Collection(metadataArray);
5198
+ return new Collection(metaFieldsArray);
5035
5199
  }
5036
5200
  getIncomeTransactions() {
5037
5201
  return new TransactionCollection(this.items.filter((transaction) => transaction.isIncome()));
@@ -6146,6 +6310,18 @@ class AllocationGroupCollection extends Collection {
6146
6310
  }
6147
6311
  }
6148
6312
 
6313
+ class AllocationRuleCollection extends Collection {
6314
+ getExpense() {
6315
+ return this.filterBy('type', AllocationRuleTypeEnum.EXPENSE);
6316
+ }
6317
+ getIncome() {
6318
+ return this.filterBy('type', AllocationRuleTypeEnum.INCOME);
6319
+ }
6320
+ getTransfer() {
6321
+ return this.filterBy('type', AllocationRuleTypeEnum.TRANSFER);
6322
+ }
6323
+ }
6324
+
6149
6325
  class AccountSetupItemCollection extends Collection {
6150
6326
  constructor(items) {
6151
6327
  super(compact(items));
@@ -7014,7 +7190,7 @@ class Property extends Property$1 {
7014
7190
  * in that case it's equal to market value, when property became an investment property
7015
7191
  */
7016
7192
  calculateCostBase(sale) {
7017
- const marketValue = new PropertySaleTaxExemptionMetadataCollection(sale.taxExemptionMetadata).getMarketValue();
7193
+ const marketValue = new PropertySaleTaxExemptionMetaFieldCollection(sale.taxExemptionMetaFields).getMarketValue();
7018
7194
  if (marketValue) {
7019
7195
  return marketValue;
7020
7196
  }
@@ -7054,7 +7230,7 @@ class Property extends Property$1 {
7054
7230
  * tax exemption can reduce cgt from 100% to less (up to zero)
7055
7231
  */
7056
7232
  getCGTExemptionRatio(sale) {
7057
- const metadata = new PropertySaleTaxExemptionMetadataCollection(sale.taxExemptionMetadata);
7233
+ const metaFields = new PropertySaleTaxExemptionMetaFieldCollection(sale.taxExemptionMetaFields);
7058
7234
  switch (sale.taxExemption?.id) {
7059
7235
  // 50% exemption for investments owned for at least one year
7060
7236
  case TaxExemptionEnum.ONE_YEAR_RULE:
@@ -7062,12 +7238,12 @@ class Property extends Property$1 {
7062
7238
  // investment property become main residence (exemption for main residence ownership duration)
7063
7239
  case TaxExemptionEnum.INVESTMENT_TO_PPR:
7064
7240
  const ownershipDays = this.getOwnershipDuration(sale);
7065
- return (ownershipDays - metadata.getPPRDays()) / ownershipDays;
7241
+ return (ownershipDays - metaFields.getPPRDays()) / ownershipDays;
7066
7242
  // main residence become investment (exemption for home office percent usage)
7067
7243
  case TaxExemptionEnum.PPR_TO_INVESTMENT:
7068
7244
  // 1 year CGT discount can still apply (on the income producing % if used for 12 months or more)
7069
7245
  const ratio = this.isOneYearExemptionApplicable(sale) ? 0.5 : 1;
7070
- return metadata.getClaimPercent() / 100 * ratio;
7246
+ return metaFields.getClaimPercent() / 100 * ratio;
7071
7247
  // full exemption
7072
7248
  case TaxExemptionEnum.PPR:
7073
7249
  case TaxExemptionEnum.SIX_YEARS_RULE:
@@ -8252,6 +8428,10 @@ class Endpoint {
8252
8428
  */
8253
8429
  const ENDPOINTS = {
8254
8430
  ASSETS_GET: new Endpoint('GET', '\\/assets\\/\.\*\\/\\d+'),
8431
+ ALLOCATION_RULES_GET: new Endpoint('GET', '\\/allocation-rules'),
8432
+ ALLOCATION_RULES_POST: new Endpoint('POST', '\\/allocation-rules'),
8433
+ ALLOCATION_RULES_PUT: new Endpoint('PUT', '\\/allocation-rules\\/\\d+'),
8434
+ ALLOCATION_RULES_DELETE: new Endpoint('DELETE', '\\/allocation-rules\\/\\d+'),
8255
8435
  BANKS_GET: new Endpoint('GET', '\\/banks'),
8256
8436
  BANK_ACCOUNTS_GET: new Endpoint('GET', '\\/bank-accounts'),
8257
8437
  BANK_ACCOUNTS_POST: new Endpoint('POST', '\\/bank-accounts'),
@@ -10600,14 +10780,14 @@ MyTaxDeductions.selfEducationNotDeductibleAmount = -250;
10600
10780
  class MyTaxDividends {
10601
10781
  constructor(transactions) {
10602
10782
  this.transactions = transactions.filterBy('chartAccounts.id', ChartAccountsListEnum.DIVIDENDS);
10603
- this.dividendsUnfrankedAmount = this.transactions.getTransactionsMetadata()
10604
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.UNFRANKED)
10783
+ this.dividendsUnfrankedAmount = this.transactions.getTransactionsMetaFields()
10784
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.UNFRANKED)
10605
10785
  .sumBy('value');
10606
- this.dividendsFrankedAmount = this.transactions.getTransactionsMetadata()
10607
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.FRANKED)
10786
+ this.dividendsFrankedAmount = this.transactions.getTransactionsMetaFields()
10787
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.FRANKED)
10608
10788
  .sumBy('value');
10609
- this.dividendsFrankingCreditsAmount = this.transactions.getTransactionsMetadata()
10610
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.FRANKING_CREDIT)
10789
+ this.dividendsFrankingCreditsAmount = this.transactions.getTransactionsMetaFields()
10790
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.FRANKING_CREDIT)
10611
10791
  .sumBy('value');
10612
10792
  this.dividendsTotalTax = this.transactions.sumBy('tax');
10613
10793
  }
@@ -10762,20 +10942,20 @@ class MyTaxOtherIncome {
10762
10942
  this.employeeShareSchemesTransactions = transactions
10763
10943
  .filterBy('chartAccounts.id', ChartAccountsListEnum.EMPLOYEE_SHARE_SCHEME_INCOME);
10764
10944
  // Employee Share Schemes data
10765
- this.eligibleForReductionAmount = this.employeeShareSchemesTransactions.getTransactionsMetadata()
10766
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.ELIGIBLE_FOR_REDUCTION)
10945
+ this.eligibleForReductionAmount = this.employeeShareSchemesTransactions.getTransactionsMetaFields()
10946
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.ELIGIBLE_FOR_REDUCTION)
10767
10947
  .sumBy('value');
10768
- this.notEligibleForReductionAmount = this.employeeShareSchemesTransactions.getTransactionsMetadata()
10769
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.NOT_ELIGIBLE_FOR_DEDUCTION)
10948
+ this.notEligibleForReductionAmount = this.employeeShareSchemesTransactions.getTransactionsMetaFields()
10949
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.NOT_ELIGIBLE_FOR_DEDUCTION)
10770
10950
  .sumBy('value');
10771
- this.discountFromDeferredSchemeAmount = this.employeeShareSchemesTransactions.getTransactionsMetadata()
10772
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.DISCOUNT_FROM_DEFERRED_SCHEMES)
10951
+ this.discountFromDeferredSchemeAmount = this.employeeShareSchemesTransactions.getTransactionsMetaFields()
10952
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.DISCOUNT_FROM_DEFERRED_SCHEMES)
10773
10953
  .sumBy('value');
10774
- this.totalAssessableDiscountAmount = this.employeeShareSchemesTransactions.getTransactionsMetadata()
10775
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.NOT_ELIGIBLE_FOR_DEDUCTION)
10954
+ this.totalAssessableDiscountAmount = this.employeeShareSchemesTransactions.getTransactionsMetaFields()
10955
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.NOT_ELIGIBLE_FOR_DEDUCTION)
10776
10956
  .sumBy('value') +
10777
- this.employeeShareSchemesTransactions.getTransactionsMetadata()
10778
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.DISCOUNT_FROM_DEFERRED_SCHEMES)
10957
+ this.employeeShareSchemesTransactions.getTransactionsMetaFields()
10958
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.DISCOUNT_FROM_DEFERRED_SCHEMES)
10779
10959
  .sumBy('value');
10780
10960
  this.shareSchemesTotalTax = this.employeeShareSchemesTransactions.sumBy('tax');
10781
10961
  // Other income data
@@ -10818,14 +10998,14 @@ class MyTaxPartnershipsAndTrusts {
10818
10998
  this.trustsNetNonPrimaryProductionAmount = this.trustsIncomeTotalAmount - this.trustsExpenseTotalAmount;
10819
10999
  this.frankingCreditsTotal = this.transactions
10820
11000
  .filterBy('chartAccounts.heading.id', ChartAccountsHeadingTaxableEnum.PARTNERSHIPS_AND_TRUSTS_INCOME)
10821
- .getTransactionsMetadata()
10822
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.FRANKING_CREDIT)
11001
+ .getTransactionsMetaFields()
11002
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.FRANKING_CREDIT)
10823
11003
  .sumBy('value');
10824
11004
  this.trustsIncomeTotalTax = this.trustsIncomes.sumBy('tax');
10825
11005
  this.frankingCreditsTotal = this.transactions
10826
11006
  .filterBy('chartAccounts.heading.id', ChartAccountsHeadingTaxableEnum.PARTNERSHIPS_AND_TRUSTS_INCOME)
10827
- .getTransactionsMetadata()
10828
- .filterBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.FRANKING_CREDIT)
11007
+ .getTransactionsMetaFields()
11008
+ .filterBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.FRANKING_CREDIT)
10829
11009
  .sumBy('value');
10830
11010
  this.taxOffsetNRASTotalAmount = this.transactions.filterBy('chartAccounts.id', ChartAccountsListEnum.TAX_OFFSETS_N_R_A_S).sumBy('amount');
10831
11011
  }
@@ -14399,6 +14579,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImpor
14399
14579
  args: ['environment']
14400
14580
  }] }]; } });
14401
14581
 
14582
+ class AllocationRuleService extends RestService$1 {
14583
+ constructor() {
14584
+ super(...arguments);
14585
+ this.endpointUri = 'allocation-rules';
14586
+ this.collectionClass = AllocationRuleCollection;
14587
+ this.modelClass = AllocationRule;
14588
+ this.isApiPlatform = true;
14589
+ }
14590
+ }
14591
+ AllocationRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AllocationRuleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
14592
+ AllocationRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AllocationRuleService, providedIn: 'root' });
14593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: AllocationRuleService, decorators: [{
14594
+ type: Injectable,
14595
+ args: [{
14596
+ providedIn: 'root'
14597
+ }]
14598
+ }] });
14599
+
14402
14600
  // @TODO Don't look at the commented code. Will be refactored/removed during TT-1503
14403
14601
  /**
14404
14602
  * Service for transaction allocations business logic
@@ -17800,14 +17998,14 @@ class PropertySaleExemptionsForm extends AbstractForm {
17800
17998
  constructor(propertySale, property, taxExemptions) {
17801
17999
  super({
17802
18000
  taxExemption: new UntypedFormControl(taxExemptions.findBy('id', propertySale.taxExemption?.id ?? property.getCGTExemption(propertySale))),
17803
- taxExemptionMetadata: new UntypedFormArray([]),
18001
+ taxExemptionMetaFields: new UntypedFormArray([]),
17804
18002
  netCGT: new UntypedFormControl(propertySale.netCGT)
17805
18003
  }, propertySale);
17806
18004
  this.propertySale = propertySale;
17807
18005
  this.property = property;
17808
18006
  this.taxExemptions = taxExemptions;
17809
18007
  if (propertySale.taxExemption) {
17810
- this.setFormMetadataControls();
18008
+ this.setFormMetaFieldsControls();
17811
18009
  }
17812
18010
  this.updateNetCGT();
17813
18011
  this.listenEvents();
@@ -17827,36 +18025,36 @@ class PropertySaleExemptionsForm extends AbstractForm {
17827
18025
  listenTaxExemptionUpdated() {
17828
18026
  this.get('taxExemption').valueChanges.subscribe((taxExemption) => {
17829
18027
  this.updateNetCGT();
17830
- this.setFormMetadataControls(taxExemption);
18028
+ this.setFormMetaFieldsControls(taxExemption);
17831
18029
  });
17832
18030
  }
17833
18031
  /**
17834
- * show metadata related to passed tax exemption or existing property sale metadata
18032
+ * show meta fields related to passed tax exemption or existing property sale meta fields
17835
18033
  */
17836
- setFormMetadataControls(taxExemption) {
18034
+ setFormMetaFieldsControls(taxExemption) {
17837
18035
  // use property sale tax exemption if it exists to preselect data
17838
18036
  const currentTaxExemption = this.propertySale.taxExemption ?
17839
18037
  this.taxExemptions.findBy('id', this.propertySale.taxExemption.id) :
17840
18038
  taxExemption;
17841
- const formArray = this.get('taxExemptionMetadata');
18039
+ const formArray = this.get('taxExemptionMetaFields');
17842
18040
  // clean up
17843
18041
  formArray.clear();
17844
- // show all tax exemption metadata fields
17845
- currentTaxExemption.metadata.forEach((metadata) => {
17846
- // use property sale tax exemption metadata value if it exists
17847
- const metadataValue = this.propertySale.taxExemption ?
17848
- this.propertySale.taxExemptionMetadata
17849
- .find((saleMetadata) => saleMetadata.metadata.id === metadata.id).value :
18042
+ // show all tax exemption meta fields
18043
+ currentTaxExemption.metaFields.forEach((metaField) => {
18044
+ // use property sale tax exemption meta field value if it exists
18045
+ const metaFieldValue = this.propertySale.taxExemption ?
18046
+ this.propertySale.taxExemptionMetaFields
18047
+ .find((saleMetaField) => saleMetaField.metaField.id === metaField.id).value :
17850
18048
  null;
17851
18049
  const validators = [
17852
18050
  // claim percent is optional
17853
- metadata.id !== TaxExemptionMetadataEnum.CLAIM_PERCENT && Validators.required,
18051
+ metaField.id !== TaxExemptionMetaFieldEnum.CLAIM_PERCENT && Validators.required,
17854
18052
  // ppr days can't be more than ownership days
17855
- metadata.id === TaxExemptionMetadataEnum.PPR_DAYS && Validators.max(this.property.getOwnershipDuration(this.propertySale))
18053
+ metaField.id === TaxExemptionMetaFieldEnum.PPR_DAYS && Validators.max(this.property.getOwnershipDuration(this.propertySale))
17856
18054
  ].filter(Boolean);
17857
18055
  formArray.push(new UntypedFormGroup({
17858
- metadata: new UntypedFormControl(metadata),
17859
- value: new UntypedFormControl(metadataValue, validators)
18056
+ metaField: new UntypedFormControl(metaField),
18057
+ value: new UntypedFormControl(metaFieldValue, validators)
17860
18058
  }));
17861
18059
  });
17862
18060
  }
@@ -18551,6 +18749,267 @@ var FormValidationsEnum;
18551
18749
  FormValidationsEnum["FILE_ACCEPTED_TYPES"] = "Accepted file type: .doc .jpg .png .pdf .tiff .bmp .excel .csv";
18552
18750
  })(FormValidationsEnum || (FormValidationsEnum = {}));
18553
18751
 
18752
+ class AllocationRuleConditionForm extends AbstractForm {
18753
+ constructor(condition = plainToClass(AllocationRuleCondition, {})) {
18754
+ super({
18755
+ field: new UntypedFormControl(condition.field, Validators.required),
18756
+ comparisonOperator: new UntypedFormControl(condition.comparisonOperator, Validators.required),
18757
+ value: new UntypedFormControl(condition.value, Validators.required)
18758
+ }, condition);
18759
+ }
18760
+ }
18761
+
18762
+ class AllocationRuleTransactionMetaFieldForm extends AbstractForm {
18763
+ constructor(metaField = plainToClass(AllocationRuleTransactionMetaField, {})) {
18764
+ super({
18765
+ value: new UntypedFormControl(metaField.value)
18766
+ }, metaField);
18767
+ }
18768
+ }
18769
+
18770
+ /**
18771
+ * @TODO Alex: extend transaction form(s) when transaction forms refactored
18772
+ */
18773
+ class AllocationRuleTransactionForm extends AbstractForm {
18774
+ constructor(transaction,
18775
+ // Flag to enable transaction GST field
18776
+ isGST) {
18777
+ super({
18778
+ amount: new UntypedFormControl(null),
18779
+ tax: new UntypedFormControl(transaction.tax || 0, Validators.required),
18780
+ claimPercent: new UntypedFormControl(transaction.claimPercent || 100, [Validators.required, Validators.min(0), Validators.max(100)]),
18781
+ chartAccounts: new UntypedFormControl(transaction.chartAccounts, Validators.required),
18782
+ isGST: new UntypedFormControl({ value: transaction.isGST || false, disabled: !isGST }),
18783
+ loan: new UntypedFormControl(transaction.loan),
18784
+ incomeSource: new UntypedFormControl(transaction.incomeSource, conditionalValidator(() => transaction.chartAccounts?.isWorkIncome(), Validators.required)),
18785
+ metaFields: new UntypedFormArray((transaction.metaFields || []).map((metaField) => new AllocationRuleTransactionMetaFieldForm(metaField))),
18786
+ business: new UntypedFormControl(transaction.business, Validators.required),
18787
+ property: new UntypedFormControl(transaction.property, Validators.required),
18788
+ // Show null as default value for new transaction to avoid preselecting of not allowed tank types
18789
+ tankType: new UntypedFormControl(transaction.id ? transaction.tankType : null, Validators.required),
18790
+ childTransactions: new UntypedFormArray((transaction.childTransactions || []).map((childTransaction) => new UntypedFormGroup({
18791
+ chartAccounts: new UntypedFormControl(childTransaction.chartAccounts, Validators.required),
18792
+ amount: new UntypedFormControl(childTransaction.amount, Validators.required)
18793
+ })))
18794
+ }, transaction);
18795
+ this.listenEvents();
18796
+ }
18797
+ /**
18798
+ * @TODO Alex: move to abstract form, universal method getArray(arrayName)
18799
+ */
18800
+ get metaFieldsArray() {
18801
+ return this.get('metaFields');
18802
+ }
18803
+ get childTransactionsArray() {
18804
+ return this.get('childTransactions');
18805
+ }
18806
+ addChildTransactionForm() {
18807
+ this.childTransactionsArray.push(new UntypedFormGroup({
18808
+ chartAccounts: new UntypedFormControl(null, Validators.required),
18809
+ amount: new UntypedFormControl(null, Validators.required)
18810
+ }));
18811
+ }
18812
+ submit() {
18813
+ const data = {
18814
+ metaFields: this.metaFieldsArray.controls.map((metaFieldForm) => metaFieldForm.submit())
18815
+ };
18816
+ return super.submit(data);
18817
+ }
18818
+ listenEvents() {
18819
+ this.listenChartAccountsChanges();
18820
+ this.listenTankTypeChanges();
18821
+ this.listenIncomeSourceChanges();
18822
+ this.listenPropertyChanges();
18823
+ }
18824
+ listenChartAccountsChanges() {
18825
+ this.get('chartAccounts').valueChanges.subscribe((chartAccounts) => {
18826
+ this.get('incomeSource').removeValidators(Validators.required);
18827
+ if (!chartAccounts) {
18828
+ return;
18829
+ }
18830
+ this.updateClaimPercent();
18831
+ // User have to select income source for work income
18832
+ if (chartAccounts.isWorkIncome()) {
18833
+ this.get('incomeSource').setValidators(Validators.required);
18834
+ }
18835
+ // Rebuild meta fields
18836
+ this.metaFieldsArray.clear();
18837
+ chartAccounts.metaFields.forEach((chartAccountsMetaField) => {
18838
+ this.metaFieldsArray.push(new AllocationRuleTransactionMetaFieldForm(plainToClass(AllocationRuleTransactionMetaField, { chartAccountsMetaField })));
18839
+ });
18840
+ });
18841
+ }
18842
+ /**
18843
+ * Child transaction allowance depends on tank type.
18844
+ * Also chart accounts are different, so we just reset child transactions when tank type changed
18845
+ */
18846
+ listenTankTypeChanges() {
18847
+ this.get('tankType').valueChanges.subscribe(() => {
18848
+ this.childTransactionsArray.reset();
18849
+ });
18850
+ }
18851
+ /**
18852
+ * Set tax automatically when salary income source selected
18853
+ */
18854
+ listenIncomeSourceChanges() {
18855
+ this.get('incomeSource').valueChanges.subscribe((incomeSource) => {
18856
+ if (!incomeSource) {
18857
+ this.get('tax').setValue(0);
18858
+ return;
18859
+ }
18860
+ // prefill salary tax with its income source forecast
18861
+ if (incomeSource instanceof IncomeSource && incomeSource.isSalaryIncome() && !this.get('tax').value) {
18862
+ this.get('tax').setValue(incomeSource.salaryForecasts[0].taxWithheld);
18863
+ }
18864
+ });
18865
+ }
18866
+ listenPropertyChanges() {
18867
+ this.get('property').valueChanges.subscribe(() => {
18868
+ this.updateClaimPercent();
18869
+ });
18870
+ }
18871
+ /**
18872
+ * Update claim percent value and state depends on business logic
18873
+ */
18874
+ updateClaimPercent() {
18875
+ const claimPercentControl = this.get('claimPercent');
18876
+ // claim percent is changeable only for work and sole expenses except vehicle and personal
18877
+ claimPercentControl.disable();
18878
+ if (!this.currentValue.chartAccounts) {
18879
+ return;
18880
+ }
18881
+ if (this.currentValue.chartAccounts.isClaimPercentEditable()) {
18882
+ claimPercentControl.enable();
18883
+ }
18884
+ claimPercentControl.setValue(this.currentValue.calculateClaimPercent());
18885
+ }
18886
+ }
18887
+
18888
+ class AllocationRuleForm extends AbstractForm {
18889
+ constructor(
18890
+ // rule is required because we have to keep bank account relation
18891
+ rule,
18892
+ // Flag to enable transaction GST field
18893
+ isGST) {
18894
+ super({
18895
+ type: new UntypedFormControl(rule.type, Validators.required),
18896
+ name: new UntypedFormControl(rule.name, Validators.required),
18897
+ conditionOperator: new UntypedFormControl(rule.conditionOperator, Validators.required),
18898
+ conditions: new UntypedFormArray((rule.conditions || [plainToClass(AllocationRuleCondition, {})])
18899
+ .map((condition) => new AllocationRuleConditionForm(condition))),
18900
+ transaction: new AllocationRuleTransactionForm(rule.transaction || plainToClass(AllocationRuleTransaction, {}), isGST),
18901
+ transferBankAccount: new UntypedFormControl(rule.transferBankAccount, Validators.required),
18902
+ autoAllocate: new UntypedFormControl(rule.autoAllocate || false, Validators.required)
18903
+ }, rule);
18904
+ this.isGST = isGST;
18905
+ this.listenEvents();
18906
+ this.setupFieldsByType(rule.type);
18907
+ this.setupFieldsByTankType(rule.transaction?.tankType);
18908
+ this.updateChartAccountsCategories();
18909
+ if (!this.transactionFormGroup.get('chartAccounts').value?.isClaimPercentEditable()) {
18910
+ this.transactionFormGroup.get('claimPercent').disable();
18911
+ }
18912
+ }
18913
+ get conditionsArray() {
18914
+ return this.get('conditions');
18915
+ }
18916
+ get childTransactionsArray() {
18917
+ return this.transactionFormGroup.get('childTransactions');
18918
+ }
18919
+ get transactionFormGroup() {
18920
+ return this.get('transaction');
18921
+ }
18922
+ addConditionForm() {
18923
+ this.conditionsArray.push(new AllocationRuleConditionForm());
18924
+ }
18925
+ isTaxFieldHidden() {
18926
+ const chartAccounts = this.transactionFormGroup.get('chartAccounts').value;
18927
+ return !chartAccounts || !chartAccounts.isTaxable();
18928
+ }
18929
+ /**
18930
+ * TODO Alex: disable sole tank in form control when income selected
18931
+ */
18932
+ isTransactionFieldsHidden() {
18933
+ return this.transactionFormGroup.get('tankType').value === null || this.currentValue.isSoleIncome();
18934
+ }
18935
+ submit() {
18936
+ const data = {
18937
+ conditions: this.conditionsArray.controls.map((conditionForm) => conditionForm.submit()),
18938
+ transaction: null
18939
+ };
18940
+ if (!this.currentValue.isTransfer()) {
18941
+ data.transaction = this.transactionFormGroup.submit();
18942
+ }
18943
+ return super.submit(data);
18944
+ }
18945
+ listenEvents() {
18946
+ this.listenTankTypeChanges();
18947
+ this.listenTypeChanges();
18948
+ }
18949
+ listenTypeChanges() {
18950
+ this.get('type').valueChanges.subscribe((type) => {
18951
+ this.setupFieldsByType(type);
18952
+ this.updateChartAccountsCategories();
18953
+ // we have different fields for different types
18954
+ this.get('transaction').reset();
18955
+ });
18956
+ }
18957
+ listenTankTypeChanges() {
18958
+ this.transactionFormGroup.get('tankType').valueChanges.subscribe((tankType) => {
18959
+ this.updateChartAccountsCategories();
18960
+ this.setupFieldsByTankType(tankType);
18961
+ });
18962
+ }
18963
+ /**
18964
+ * Update list of chart accounts categories allowed for transaction
18965
+ * Depends on transaction type and tank type
18966
+ */
18967
+ updateChartAccountsCategories() {
18968
+ // We use unique one Chart Accounts for transfer
18969
+ if (this.currentValue.isTransfer()) {
18970
+ this.chartAccountsCategories = null;
18971
+ return;
18972
+ }
18973
+ const excludedCategories = [...CHART_ACCOUNTS_CATEGORIES.depreciation];
18974
+ this.chartAccountsCategories = intersection(CHART_ACCOUNTS_CATEGORIES[this.currentValue.typeLabel], CHART_ACCOUNTS_CATEGORIES[this.currentValue.tankTypeLabel])
18975
+ .filter((category) => !excludedCategories.includes(category));
18976
+ }
18977
+ setupFieldsByType(type) {
18978
+ switch (type) {
18979
+ case AllocationRuleTypeEnum.EXPENSE:
18980
+ case AllocationRuleTypeEnum.INCOME:
18981
+ this.get('transaction').enable({ emitEvent: false });
18982
+ this.get('transferBankAccount').disable({ emitEvent: false });
18983
+ break;
18984
+ case AllocationRuleTypeEnum.TRANSFER:
18985
+ this.get('transaction').disable({ emitEvent: false });
18986
+ this.get('transferBankAccount').enable({ emitEvent: false });
18987
+ return;
18988
+ }
18989
+ }
18990
+ setupFieldsByTankType(tankType) {
18991
+ // First disable tankType-related fields, second enable for selected tank type
18992
+ this.transactionFormGroup.get('property').disable({ emitEvent: false });
18993
+ this.transactionFormGroup.get('business').disable({ emitEvent: false });
18994
+ this.transactionFormGroup.get('isGST').disable({ emitEvent: false });
18995
+ this.transactionFormGroup.get('incomeSource').disable({ emitEvent: false });
18996
+ switch (tankType) {
18997
+ case TankTypeEnum.WORK:
18998
+ this.transactionFormGroup.get('incomeSource').enable({ emitEvent: false });
18999
+ break;
19000
+ case TankTypeEnum.PROPERTY:
19001
+ this.transactionFormGroup.get('property').enable({ emitEvent: false });
19002
+ break;
19003
+ case TankTypeEnum.SOLE:
19004
+ this.transactionFormGroup.get('business').enable({ emitEvent: false });
19005
+ if (this.isGST) {
19006
+ this.transactionFormGroup.get('isGST').enable({ emitEvent: false });
19007
+ }
19008
+ break;
19009
+ }
19010
+ }
19011
+ }
19012
+
18554
19013
  /**
18555
19014
  * @TODO refactor, move specific fields like property in separated forms
18556
19015
  * @TODO remove useless getters
@@ -18708,10 +19167,10 @@ class WorkTransactionForm extends TransactionForm {
18708
19167
  constructor(transaction, registeredForGst, allocations, controls = {}) {
18709
19168
  super(transaction, registeredForGst, allocations, Object.assign(controls, {
18710
19169
  // additional data related to work (like tax instalments)
18711
- metadata: new FormArray((transaction.metadata || []).map((transactionMetadata) => {
19170
+ metaFields: new FormArray((transaction.metaFields || []).map((transactionMetaField) => {
18712
19171
  return new FormGroup({
18713
- value: new FormControl(transactionMetadata.value),
18714
- chartAccountsMetadata: new FormControl(transactionMetadata.chartAccountsMetadata)
19172
+ value: new FormControl(transactionMetaField.value),
19173
+ chartAccountsMetaField: new FormControl(transactionMetaField.chartAccountsMetaField)
18715
19174
  });
18716
19175
  }))
18717
19176
  }));
@@ -18723,20 +19182,20 @@ class WorkTransactionForm extends TransactionForm {
18723
19182
  watchChartAccounts() {
18724
19183
  super.watchChartAccounts();
18725
19184
  this.get('chartAccounts').valueChanges.subscribe((chartAccounts) => {
18726
- this.buildMetadataForm();
19185
+ this.buildMetaFieldsForm();
18727
19186
  });
18728
19187
  }
18729
19188
  /**
18730
19189
  * depends on chartAccounts the form could include different extra fields
18731
19190
  */
18732
- buildMetadataForm() {
19191
+ buildMetaFieldsForm() {
18733
19192
  // Remove all controls in the FormArray before pushing
18734
- this.get('metadata').clear();
18735
- // create form controls for each metadata object from selected chart accounts
18736
- (this.get('chartAccounts').value.metadata).forEach((chartAccountsMetadata) => {
18737
- this.get('metadata').push(new FormGroup({
18738
- value: new FormControl(chartAccountsMetadata.isSharePercentage() ? 100 : 0),
18739
- chartAccountsMetadata: new FormControl(chartAccountsMetadata),
19193
+ this.get('metaFields').clear();
19194
+ // create form controls for each metaField object from selected chart accounts
19195
+ (this.get('chartAccounts').value.metaFields).forEach((chartAccountsMetaField) => {
19196
+ this.get('metaFields').push(new FormGroup({
19197
+ value: new FormControl(chartAccountsMetaField.isSharePercentage() ? 100 : 0),
19198
+ chartAccountsMetaField: new FormControl(chartAccountsMetaField),
18740
19199
  }));
18741
19200
  });
18742
19201
  }
@@ -18825,24 +19284,24 @@ class WorkIncomeForm extends WorkTransactionForm {
18825
19284
  class WorkExpenseForm extends WorkTransactionForm {
18826
19285
  constructor(transaction, registeredForGst, allocations, controls = {}) {
18827
19286
  super(transaction, registeredForGst, allocations, controls);
18828
- // amount set automatically for chartAccounts with hours metadata
18829
- if (transaction.getMetadataFieldValue(ChartAccountsMetadataListEnum.HOURS)) {
19287
+ // amount set automatically for chartAccounts with hours meta field
19288
+ if (transaction.getMetaFieldValue(ChartAccountsMetaFieldListEnum.HOURS)) {
18830
19289
  this.get('amount').disable();
18831
19290
  }
18832
19291
  }
18833
19292
  listenEvents() {
18834
- this.watchChartAccountsMetadata();
19293
+ this.watchChartAccountsMetaFields();
18835
19294
  }
18836
- watchChartAccountsMetadata() {
18837
- this.get('metadata').valueChanges.subscribe((metadata) => {
18838
- const hoursMetadata = new Collection(metadata).findBy('chartAccountsMetadata.id', ChartAccountsMetadataListEnum.HOURS);
18839
- if (!hoursMetadata) {
19295
+ watchChartAccountsMetaFields() {
19296
+ this.get('metaFields').valueChanges.subscribe((metaFields) => {
19297
+ const hoursMetaField = new Collection(metaFields).findBy('chartAccountsMetaField.id', ChartAccountsMetaFieldListEnum.HOURS);
19298
+ if (!hoursMetaField) {
18840
19299
  return;
18841
19300
  }
18842
19301
  // for home office hours expense amount is a fixed rate per hour
18843
19302
  this.get('amount').reset();
18844
19303
  this.get('amount').disable();
18845
- this.get('amount').setValue((this.get('chartAccounts').value.getCurrentYearValue().value * +hoursMetadata.value).toFixed(2));
19304
+ this.get('amount').setValue((this.get('chartAccounts').value.getCurrentYearValue().value * +hoursMetaField.value).toFixed(2));
18846
19305
  });
18847
19306
  }
18848
19307
  }
@@ -18888,5 +19347,5 @@ class DepreciationForm extends TransactionBaseForm {
18888
19347
  * Generated bundle index. Do not edit.
18889
19348
  */
18890
19349
 
18891
- export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, Address, AddressForm, AddressService, AddressTypeEnum, AllocationGroup, AllocationGroupCollection, AlphabetColorsEnum, AnnualFrequencyEnum, AppEvent, AppEvent2, AppEventTypeEnum, AppFile, AssetEntityTypeEnum, AssetTypeEnum, AssetsService, AuthService, BANK_ACCOUNT_TYPES, Badge, BadgeColorEnum, Bank, BankAccount, BankAccountAddManualForm, BankAccountAllocationForm, BankAccountCalculationService, BankAccountChartData, BankAccountCollection, BankAccountImportForm, BankAccountPropertiesForm, BankAccountProperty, BankAccountService, BankAccountStatusEnum, BankAccountTypeEnum, BankAccountsImportForm, BankConnection, BankConnectionService, BankConnectionStatusEnum, BankExternalStats, BankLoginData, BankLoginForm, BankService, BankTransaction, BankTransactionCalculationService, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasReport, BasReportForm, BasReportService, BasiqConfig, BasiqJob, BasiqJobResponse, BasiqJobStep, BasiqService, BasiqToken, BasiqTokenService, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, BusinessTypeEnum, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsKeepSign, ChartAccountsListEnum, ChartAccountsMetadata, ChartAccountsMetadataListEnum, ChartAccountsMetadataTypeEnum, ChartAccountsSalaryAdjustmentsListEnum, ChartAccountsSalaryIncludedListEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsValue, ChartData, ChartSerie, Chat, ChatCollection, ChatService, ChatStatusEnum, ChatViewTypeEnum, ClientCollection, ClientDetails, ClientDetailsMedicareExemptionEnum, ClientDetailsWorkDepreciationCalculationEnum, ClientDetailsWorkingHolidayMakerEnum, ClientIncomeTypes, ClientIncomeTypesForm, ClientIncomeTypesService, ClientInvite, ClientInviteCollection, ClientInviteService, ClientInviteStatusEnum, ClientInviteTypeEnum, ClientMovement, ClientMovementCollection, ClientMovementService, ClientPortfolioChartData, ClientPortfolioReport, ClientPortfolioReportCollection, ClientPortfolioReportService, Collection, CollectionDictionary, CorelogicService, CorelogicSuggestion, Country, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, DeductionClothingTypeEnum, DeductionSelfEducationTypeEnum, Depreciation, DepreciationCalculationEnum, DepreciationCalculationPercentEnum, DepreciationCapitalProject, DepreciationCapitalProjectService, DepreciationCollection, DepreciationForecast, DepreciationForecastCollection, DepreciationForm, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, DepreciationLvpRateEnum, DepreciationLvpReportItem, DepreciationLvpReportItemCollection, DepreciationReceipt, DepreciationReceiptService, DepreciationReportItem, DepreciationReportItemCollection, DepreciationService, DepreciationTypeEnum, DepreciationWriteOffAmountEnum, Dictionary, Document, DocumentApiUrlPrefixEnum, DocumentFolder, DocumentFolderService, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeInvite, EmployeeInviteService, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FileService, FileValidator, FinancialYear, Firm, FirmService, FirmTypeEnum, FormValidationsEnum, GoogleService, HeaderTitleService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, InterceptorsModule, IntercomService, InviteStatusEnum, JsPdf, JwtService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LogbookBestPeriodService, LogbookPeriod, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessDetails, MyTaxBusinessDetailsForm, MyTaxBusinessIncome, MyTaxBusinessIncomeForm, MyTaxBusinessIncomeOrLossesForm, MyTaxBusinessLosses, MyTaxBusinessLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEstimate, MyTaxIncomeStatements, MyTaxIncomeStatementsForm, MyTaxIncomeTests, MyTaxIncomeTestsForm, MyTaxInterest, MyTaxInterestForm, MyTaxLosses, MyTaxLossesForm, MyTaxMedicareForm, MyTaxOffsets, MyTaxOffsetsForm, MyTaxOtherIncome, MyTaxOtherIncomeForm, MyTaxPartnershipsAndTrusts, MyTaxPartnershipsAndTrustsForm, MyTaxRent, MyTaxRentForm, Notification, Occupation, OccupationService, PASSWORD_REGEXPS, PasswordForm, PdfFromDataTableService, PdfFromDomElementService, PdfFromHtmlTableService, PdfFromTableService, PdfOrientationEnum, PdfSettings, Phone, PhoneForm, PhoneTypeEnum, PreloaderService, Property, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentService, PropertyEquityChartData, PropertyEquityChartItem, PropertyEquityChartTypeEnum, PropertyForecast, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetadata, PropertySaleTaxExemptionMetadataCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareCollection, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, ReceiptService, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RestService$1 as RestService, RewardfulService, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentMethod, ServicePaymentMethodService, ServicePaymentService, ServicePaymentStatusEnum, ServicePrice, ServicePriceCollection, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductCollection, ServiceProductIdEnum, ServiceProductService, ServiceProductStatusEnum, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, ShareFilterOptionsEnum, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessLossesCollection, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemCollection, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, StatesEnum, StripePromoCode, SubscriptionItemCollection, SubscriptionService, TAX_RETURN_CATEGORIES, TYPE_LOAN, TankTypeEnum, TaxCalculationMedicareExemptionEnum, TaxCalculationTypeEnum, TaxExemption, TaxExemptionEnum, TaxExemptionMetadata, TaxExemptionMetadataEnum, TaxExemptionService, TaxReturnCategoryListEnum, TaxReturnCategorySectionEnum, TaxReview, TaxReviewCollection, TaxReviewHistoryService, TaxReviewService, TaxReviewStatusEnum, TaxSummary, TaxSummaryListEnum, TaxSummarySection, TaxSummarySectionEnum, TaxSummaryService, TaxSummaryTaxSummaryEnum, TaxSummaryTypeEnum, TicketFeedbackEnum, TicketStatusEnum, TicketTypesEnum, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseForm, TransactionCalculationService, TransactionCategoryEnum, TransactionCollection, TransactionForm, TransactionMetadata, TransactionOperationEnum, TransactionReceipt, TransactionReceiptService, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, TutorialVideoService, USER_ROLES, USER_WORK_POSITION, User, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, UserEventTypeCollection, UserEventTypeEmployeeTypeEnum, UserEventTypeFrequencyEnum, UserEventTypeService, UserEventTypeUserTypeEnum, UserInviteForm, UserMedicareExemptionEnum, UserRolesEnum, UserService, UserStatusEnum, UserSwitcherService, UserTitleEnum, UserToRegister, UserWorkDepreciationCalculationEnum, UserWorkingHolidayMakerEnum, UsersInviteService, Vehicle, VehicleClaim, VehicleClaimCollection, VehicleClaimDetails, VehicleClaimDetailsForm, VehicleClaimDetailsMethodEnum, VehicleClaimDetailsService, VehicleClaimForm, VehicleClaimService, VehicleExpense, VehicleExpenseCollection, VehicleForm, VehicleLogbook, VehicleLogbookCollection, VehicleLogbookForm, VehicleLogbookPurposeEnum, VehicleLogbookService, VehicleService, WorkExpenseForm, WorkIncomeForm, XlsxService, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, currentFinYearValidator, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, minDateValidator, passwordMatchValidator, passwordValidator, replace, roundTo, sort, sortDeep, taxReviewFilterPredicate, toArray };
19350
+ export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, Address, AddressForm, AddressService, AddressTypeEnum, AllocationGroup, AllocationGroupCollection, AllocationRule, AllocationRuleCollection, AllocationRuleConditionComparisonOperatorEnum, AllocationRuleConditionFieldEnum, AllocationRuleConditionOperatorEnum, AllocationRuleForm, AllocationRuleService, AllocationRuleTransaction, AllocationRuleTransactionMetaField, AllocationRuleTypeEnum, AlphabetColorsEnum, AnnualFrequencyEnum, AppEvent, AppEvent2, AppEventTypeEnum, AppFile, AssetEntityTypeEnum, AssetTypeEnum, AssetsService, AuthService, BANK_ACCOUNT_TYPES, Badge, BadgeColorEnum, Bank, BankAccount, BankAccountAddManualForm, BankAccountAllocationForm, BankAccountCalculationService, BankAccountChartData, BankAccountCollection, BankAccountImportForm, BankAccountPropertiesForm, BankAccountProperty, BankAccountService, BankAccountStatusEnum, BankAccountTypeEnum, BankAccountsImportForm, BankConnection, BankConnectionService, BankConnectionStatusEnum, BankExternalStats, BankLoginData, BankLoginForm, BankService, BankTransaction, BankTransactionCalculationService, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasReport, BasReportForm, BasReportService, BasiqConfig, BasiqJob, BasiqJobResponse, BasiqJobStep, BasiqService, BasiqToken, BasiqTokenService, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, BusinessTypeEnum, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsKeepSign, ChartAccountsListEnum, ChartAccountsMetaField, ChartAccountsMetaFieldListEnum, ChartAccountsMetaFieldTypeEnum, ChartAccountsSalaryAdjustmentsListEnum, ChartAccountsSalaryIncludedListEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsValue, ChartData, ChartSerie, Chat, ChatCollection, ChatService, ChatStatusEnum, ChatViewTypeEnum, ClientCollection, ClientDetails, ClientDetailsMedicareExemptionEnum, ClientDetailsWorkDepreciationCalculationEnum, ClientDetailsWorkingHolidayMakerEnum, ClientIncomeTypes, ClientIncomeTypesForm, ClientIncomeTypesService, ClientInvite, ClientInviteCollection, ClientInviteService, ClientInviteStatusEnum, ClientInviteTypeEnum, ClientMovement, ClientMovementCollection, ClientMovementService, ClientPortfolioChartData, ClientPortfolioReport, ClientPortfolioReportCollection, ClientPortfolioReportService, Collection, CollectionDictionary, CorelogicService, CorelogicSuggestion, Country, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, DeductionClothingTypeEnum, DeductionSelfEducationTypeEnum, Depreciation, DepreciationCalculationEnum, DepreciationCalculationPercentEnum, DepreciationCapitalProject, DepreciationCapitalProjectService, DepreciationCollection, DepreciationForecast, DepreciationForecastCollection, DepreciationForm, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, DepreciationLvpRateEnum, DepreciationLvpReportItem, DepreciationLvpReportItemCollection, DepreciationReceipt, DepreciationReceiptService, DepreciationReportItem, DepreciationReportItemCollection, DepreciationService, DepreciationTypeEnum, DepreciationWriteOffAmountEnum, Dictionary, Document, DocumentApiUrlPrefixEnum, DocumentFolder, DocumentFolderService, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeInvite, EmployeeInviteService, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FileService, FileValidator, FinancialYear, Firm, FirmService, FirmTypeEnum, FormValidationsEnum, GoogleService, HeaderTitleService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, InterceptorsModule, IntercomService, InviteStatusEnum, JsPdf, JwtService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LogbookBestPeriodService, LogbookPeriod, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessDetails, MyTaxBusinessDetailsForm, MyTaxBusinessIncome, MyTaxBusinessIncomeForm, MyTaxBusinessIncomeOrLossesForm, MyTaxBusinessLosses, MyTaxBusinessLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEstimate, MyTaxIncomeStatements, MyTaxIncomeStatementsForm, MyTaxIncomeTests, MyTaxIncomeTestsForm, MyTaxInterest, MyTaxInterestForm, MyTaxLosses, MyTaxLossesForm, MyTaxMedicareForm, MyTaxOffsets, MyTaxOffsetsForm, MyTaxOtherIncome, MyTaxOtherIncomeForm, MyTaxPartnershipsAndTrusts, MyTaxPartnershipsAndTrustsForm, MyTaxRent, MyTaxRentForm, Notification, Occupation, OccupationService, PASSWORD_REGEXPS, PasswordForm, PdfFromDataTableService, PdfFromDomElementService, PdfFromHtmlTableService, PdfFromTableService, PdfOrientationEnum, PdfSettings, Phone, PhoneForm, PhoneTypeEnum, PreloaderService, Property, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentService, PropertyEquityChartData, PropertyEquityChartItem, PropertyEquityChartTypeEnum, PropertyForecast, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetaField, PropertySaleTaxExemptionMetaFieldCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareCollection, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, ReceiptService, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RestService$1 as RestService, RewardfulService, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentMethod, ServicePaymentMethodService, ServicePaymentService, ServicePaymentStatusEnum, ServicePrice, ServicePriceCollection, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductCollection, ServiceProductIdEnum, ServiceProductService, ServiceProductStatusEnum, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, ShareFilterOptionsEnum, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessLossesCollection, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemCollection, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, StatesEnum, StripePromoCode, SubscriptionItemCollection, SubscriptionService, TAX_RETURN_CATEGORIES, TYPE_LOAN, TankTypeEnum, TaxCalculationMedicareExemptionEnum, TaxCalculationTypeEnum, TaxExemption, TaxExemptionEnum, TaxExemptionMetaField, TaxExemptionMetaFieldEnum, TaxExemptionService, TaxReturnCategoryListEnum, TaxReturnCategorySectionEnum, TaxReview, TaxReviewCollection, TaxReviewHistoryService, TaxReviewService, TaxReviewStatusEnum, TaxSummary, TaxSummaryListEnum, TaxSummarySection, TaxSummarySectionEnum, TaxSummaryService, TaxSummaryTaxSummaryEnum, TaxSummaryTypeEnum, TicketFeedbackEnum, TicketStatusEnum, TicketTypesEnum, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseForm, TransactionCalculationService, TransactionCategoryEnum, TransactionCollection, TransactionForm, TransactionMetaField, TransactionOperationEnum, TransactionReceipt, TransactionReceiptService, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, TutorialVideoService, USER_ROLES, USER_WORK_POSITION, User, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, UserEventTypeCollection, UserEventTypeEmployeeTypeEnum, UserEventTypeFrequencyEnum, UserEventTypeService, UserEventTypeUserTypeEnum, UserInviteForm, UserMedicareExemptionEnum, UserRolesEnum, UserService, UserStatusEnum, UserSwitcherService, UserTitleEnum, UserToRegister, UserWorkDepreciationCalculationEnum, UserWorkingHolidayMakerEnum, UsersInviteService, Vehicle, VehicleClaim, VehicleClaimCollection, VehicleClaimDetails, VehicleClaimDetailsForm, VehicleClaimDetailsMethodEnum, VehicleClaimDetailsService, VehicleClaimForm, VehicleClaimService, VehicleExpense, VehicleExpenseCollection, VehicleForm, VehicleLogbook, VehicleLogbookCollection, VehicleLogbookForm, VehicleLogbookPurposeEnum, VehicleLogbookService, VehicleService, WorkExpenseForm, WorkIncomeForm, XlsxService, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, currentFinYearValidator, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, minDateValidator, passwordMatchValidator, passwordValidator, replace, roundTo, sort, sortDeep, taxReviewFilterPredicate, toArray };
18892
19351
  //# sourceMappingURL=taxtank-core.mjs.map