taxtank-core 0.28.29 → 0.28.30

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 (37) hide show
  1. package/bundles/taxtank-core.umd.js +483 -359
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/collection.js +23 -1
  4. package/esm2015/lib/collections/index.js +2 -1
  5. package/esm2015/lib/collections/tax-summary/tax-return-categories.const.js +6 -2
  6. package/esm2015/lib/collections/transaction/index.js +4 -0
  7. package/esm2015/lib/collections/transaction/transaction-base.collection.js +8 -0
  8. package/esm2015/lib/db/Models/sole/sole-business-loss-offset-rule.js +4 -0
  9. package/esm2015/lib/db/Models/sole/sole-business-loss.js +1 -1
  10. package/esm2015/lib/forms/sole/index.js +2 -1
  11. package/esm2015/lib/forms/sole/sole-business-loss.form.js +25 -0
  12. package/esm2015/lib/models/endpoint/endpoints.const.js +5 -2
  13. package/esm2015/lib/models/sole/index.js +2 -1
  14. package/esm2015/lib/models/sole/sole-business-loss-offset-rule.js +9 -0
  15. package/esm2015/lib/models/sole/sole-business-loss.js +12 -1
  16. package/esm2015/lib/models/tax-summary/tax-summary.js +1 -3
  17. package/esm2015/lib/services/http/sole/index.js +2 -1
  18. package/esm2015/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.js +24 -0
  19. package/esm2015/public-api.js +1 -3
  20. package/fesm2015/taxtank-core.js +437 -341
  21. package/fesm2015/taxtank-core.js.map +1 -1
  22. package/lib/collections/collection.d.ts +7 -0
  23. package/lib/collections/index.d.ts +1 -0
  24. package/lib/collections/transaction/index.d.ts +3 -0
  25. package/lib/collections/transaction/transaction-base.collection.d.ts +6 -0
  26. package/lib/db/Models/sole/sole-business-loss-offset-rule.d.ts +7 -0
  27. package/lib/db/Models/sole/sole-business-loss.d.ts +2 -0
  28. package/lib/forms/sole/index.d.ts +1 -0
  29. package/lib/forms/sole/sole-business-loss.form.d.ts +11 -0
  30. package/lib/models/sole/index.d.ts +1 -0
  31. package/lib/models/sole/sole-business-loss-offset-rule.d.ts +4 -0
  32. package/lib/models/sole/sole-business-loss.d.ts +4 -0
  33. package/lib/models/tax-summary/tax-summary.d.ts +0 -2
  34. package/lib/services/http/sole/index.d.ts +1 -0
  35. package/lib/services/http/sole/sole-business-loss/sole-business-loss-rules/sole-business-loss-offset-rule.service.d.ts +13 -0
  36. package/package.json +1 -1
  37. package/public-api.d.ts +0 -2
@@ -693,7 +693,10 @@ const ENDPOINTS = {
693
693
  SOLE_BUSINESSES_GET: new Endpoint('GET', '\\/sole-businesses'),
694
694
  SOLE_BUSINESSES_POST: new Endpoint('POST', '\\/sole-businesses'),
695
695
  SOLE_BUSINESSES_PUT: new Endpoint('PUT', '\\/sole-businesses\\/\\d+'),
696
- SOLE_BUSINESSES_LOSSES_GET: new Endpoint('GET', '\\/sole-business-losses'),
696
+ SOLE_BUSINESS_LOSSES_GET: new Endpoint('GET', '\\/sole-business-losses'),
697
+ SOLE_BUSINESS_LOSSES_POST: new Endpoint('POST', '\\/sole-business-losses'),
698
+ SOLE_BUSINESS_LOSSES_PUT: new Endpoint('PUT', '\\/sole-business-losses\\/\\d+'),
699
+ SOLE_BUSINESS_LOSS_OFFSET_RULES_GET: new Endpoint('GET', '\\/sole-business-loss-offset-rules'),
697
700
  SOLE_CONTACTS_POST: new Endpoint('POST', '\\/sole-contacts'),
698
701
  SOLE_CONTACTS_PUT: new Endpoint('PUT', '\\/sole-contacts\\/\\d+'),
699
702
  BUSINESS_ACTIVITIES_GET: new Endpoint('GET', '\\/sole-business-activities'),
@@ -1365,6 +1368,10 @@ const DEFAULT_INDEX = 'other';
1365
1368
  */
1366
1369
  class Collection {
1367
1370
  constructor(items = []) {
1371
+ /**
1372
+ * index of current item, used to iterate over the collection
1373
+ */
1374
+ this.index = 0;
1368
1375
  this.items = items;
1369
1376
  }
1370
1377
  /**
@@ -1388,6 +1395,24 @@ class Collection {
1388
1395
  get last() {
1389
1396
  return last(this.items);
1390
1397
  }
1398
+ reset() {
1399
+ this.index = 0;
1400
+ return this.items[this.index];
1401
+ }
1402
+ next() {
1403
+ if (this.index < this.length) {
1404
+ this.index++;
1405
+ return this.items[this.index];
1406
+ }
1407
+ return null;
1408
+ }
1409
+ back() {
1410
+ if (this.index > 0) {
1411
+ this.index--;
1412
+ return this.items[this.index];
1413
+ }
1414
+ return null;
1415
+ }
1391
1416
  getIds() {
1392
1417
  return this.items.map((item) => item['id']);
1393
1418
  }
@@ -2017,11 +2042,30 @@ __decorate([
2017
2042
  class SoleBusinessLoss$1 extends AbstractModel {
2018
2043
  }
2019
2044
 
2045
+ class SoleBusinessLossOffsetRule$1 extends AbstractModel {
2046
+ }
2047
+
2048
+ class SoleBusinessLossOffsetRule extends SoleBusinessLossOffsetRule$1 {
2049
+ }
2050
+ __decorate([
2051
+ Type(() => SoleBusinessLossOffsetRule)
2052
+ ], SoleBusinessLossOffsetRule.prototype, "parent", void 0);
2053
+
2020
2054
  class SoleBusinessLoss extends SoleBusinessLoss$1 {
2055
+ constructor() {
2056
+ super(...arguments);
2057
+ this.openBalance = 0;
2058
+ }
2059
+ get hasOffset() {
2060
+ return !!this.offsetRule;
2061
+ }
2021
2062
  }
2022
2063
  __decorate([
2023
2064
  Type(() => SoleBusiness)
2024
2065
  ], SoleBusinessLoss.prototype, "business", void 0);
2066
+ __decorate([
2067
+ Type(() => SoleBusinessLossOffsetRule)
2068
+ ], SoleBusinessLoss.prototype, "offsetRule", void 0);
2025
2069
 
2026
2070
  class SoleInvoice$1 extends AbstractModel {
2027
2071
  }
@@ -5588,6 +5632,278 @@ class PropertyCategoryMovementCollection extends Collection {
5588
5632
  }
5589
5633
  }
5590
5634
 
5635
+ /**
5636
+ * Chart serie class: chart data item
5637
+ * @TODO consider rename to ChartSerieData
5638
+ */
5639
+ class ChartSerie {
5640
+ }
5641
+
5642
+ /**
5643
+ * Chart data class
5644
+ * @TODO consider rename to ChartSerie
5645
+ */
5646
+ class ChartData {
5647
+ }
5648
+ __decorate([
5649
+ Type(() => ChartSerie)
5650
+ ], ChartData.prototype, "data", void 0);
5651
+
5652
+ const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan'];
5653
+
5654
+ /**
5655
+ * Collection of transactions
5656
+ */
5657
+ class TransactionCollection extends ExportableCollection {
5658
+ /**
5659
+ * Get total amount of all transactions in the collection
5660
+ */
5661
+ get amount() {
5662
+ return +this.items.reduce((sum, transaction) => sum + transaction.getNetAmount(), 0).toFixed(2);
5663
+ }
5664
+ /**
5665
+ * Difference between allocated amount and total amount
5666
+ */
5667
+ getUnallocatedAmount(allocations) {
5668
+ return +(this.amount - allocations.getByTransactionsIds(this.getIds()).amount).toFixed(2);
5669
+ }
5670
+ /**
5671
+ * Get cash position
5672
+ * Cash Position = Income - Expenses
5673
+ * Cash position is equal to Total Amount because income is positive and expense is negative,
5674
+ */
5675
+ get cashPosition() {
5676
+ return this.claimAmount;
5677
+ }
5678
+ /**
5679
+ * get date of the last transaction
5680
+ */
5681
+ getLastTransactionDate() {
5682
+ return new Date(Math.max.apply(Math, this.items.map((transaction) => transaction.date)));
5683
+ }
5684
+ /**
5685
+ * Get summary of claim amounts
5686
+ */
5687
+ get claimAmount() {
5688
+ return this.items.reduce((sum, transaction) => sum + transaction.claimAmount, 0);
5689
+ }
5690
+ get grossAmount() {
5691
+ return +this.items.reduce((sum, transaction) => sum + transaction.amount, 0).toFixed(2);
5692
+ }
5693
+ getByChartAccountsCategories(categories) {
5694
+ return new TransactionCollection(this.items.filter((transaction) => categories.includes(transaction.chartAccounts.category)));
5695
+ }
5696
+ /**
5697
+ * Get transactions by month
5698
+ * @param monthIndex by which desired month should be taken
5699
+ */
5700
+ getByMonth(monthIndex) {
5701
+ return new TransactionCollection(this.items.filter((transaction) => transaction.date.getMonth() === monthIndex));
5702
+ }
5703
+ /**
5704
+ * Get collection of transactions metadata
5705
+ */
5706
+ getTransactionsMetadata() {
5707
+ const metadataArray = [];
5708
+ this.items.forEach((transaction) => {
5709
+ metadataArray.push(...transaction.metadata);
5710
+ });
5711
+ return new Collection(metadataArray);
5712
+ }
5713
+ getIncomeTransactions() {
5714
+ return new TransactionCollection(this.items.filter((transaction) => transaction.isIncome()));
5715
+ }
5716
+ get claimIncome() {
5717
+ return this.getIncomeTransactions().claimAmount;
5718
+ }
5719
+ getExpenseTransactions() {
5720
+ return new TransactionCollection(this.items.filter((transaction) => transaction.isExpense() && !transaction.isInterest()));
5721
+ }
5722
+ get claimExpense() {
5723
+ return this.getExpenseTransactions().claimAmount;
5724
+ }
5725
+ getInterestTransactions() {
5726
+ return new TransactionCollection(this.items.filter((transaction) => transaction.isInterest()));
5727
+ }
5728
+ get claimInterest() {
5729
+ return this.getInterestTransactions().claimAmount;
5730
+ }
5731
+ /**
5732
+ * Get collection of transactions and properties filtered by properties ids
5733
+ * @param ids Ids of properties for filter
5734
+ */
5735
+ getByPropertiesIds(ids) {
5736
+ return new TransactionCollection(this.items.filter((transaction) => {
5737
+ var _a;
5738
+ return ids.includes((_a = transaction.property) === null || _a === void 0 ? void 0 : _a.id);
5739
+ }));
5740
+ }
5741
+ /**
5742
+ * Get new collection filtered by income source id
5743
+ * @param id id of income source for filter
5744
+ */
5745
+ getByIncomeSourceId(id) {
5746
+ return new TransactionCollection(this.items.filter((transaction) => { var _a; return ((_a = transaction.incomeSource) === null || _a === void 0 ? void 0 : _a.id) === id; }));
5747
+ }
5748
+ /**
5749
+ * Get new collection filtered by chart accounts category
5750
+ * @param category Chart accounts category value
5751
+ */
5752
+ getByChartAccountsCategory(category) {
5753
+ return new TransactionCollection(this.items.filter((transaction) => transaction.chartAccounts.category === category));
5754
+ }
5755
+ /**
5756
+ * Get new collection of property transactions
5757
+ */
5758
+ getPropertyTransactions() {
5759
+ return new TransactionCollection(this.items.filter((transaction) => transaction.isPropertyTank()));
5760
+ }
5761
+ getDebitTransactions() {
5762
+ return new TransactionCollection(this.items.filter((transaction) => transaction.isDebit()));
5763
+ }
5764
+ getCreditTransactions() {
5765
+ return new TransactionCollection(this.items.filter((transaction) => transaction.isCredit()));
5766
+ }
5767
+ getByAllocations(allocations) {
5768
+ return new TransactionCollection(this.items.filter((transaction) => allocations.hasTransaction(transaction)));
5769
+ }
5770
+ /**
5771
+ * Get transactions related to Vehicle category
5772
+ */
5773
+ getVehicleTransactions() {
5774
+ return this.create(this.items.filter((transaction) => {
5775
+ return transaction.isVehicleTransaction();
5776
+ }));
5777
+ }
5778
+ /**
5779
+ * Get new transaction collection filtered by tank type
5780
+ */
5781
+ getByTankType(tankType) {
5782
+ return this.create(this.items.filter((transaction) => {
5783
+ switch (tankType) {
5784
+ case TankTypeEnum.PROPERTY:
5785
+ return transaction.isPropertyTank();
5786
+ case TankTypeEnum.WORK:
5787
+ return transaction.isWorkTank();
5788
+ case TankTypeEnum.SOLE:
5789
+ return transaction.isSoleTank();
5790
+ // Transaction may be not related to any tank type (personal)
5791
+ default:
5792
+ return false;
5793
+ }
5794
+ }));
5795
+ }
5796
+ getExportHeader() {
5797
+ return ['Date', 'Description', 'Debit', 'Credit'];
5798
+ }
5799
+ getExportFooter() {
5800
+ return [
5801
+ plainToClass(ExportCell, { value: 'Total', type: ExportCellTypeEnum.STRING }),
5802
+ plainToClass(ExportCell, { value: '', type: ExportCellTypeEnum.STRING }),
5803
+ plainToClass(ExportCell, { value: this.sumBy('debit'), type: ExportCellTypeEnum.CURRENCY }),
5804
+ plainToClass(ExportCell, { value: this.sumBy('credit'), type: ExportCellTypeEnum.CURRENCY })
5805
+ ];
5806
+ }
5807
+ getExportBody() {
5808
+ return this.items.map((transaction) => {
5809
+ return [
5810
+ plainToClass(ExportCell, { value: transaction.date, type: ExportCellTypeEnum.DATE }),
5811
+ plainToClass(ExportCell, { value: transaction.description, type: ExportCellTypeEnum.STRING }),
5812
+ plainToClass(ExportCell, { value: transaction.debit, type: ExportCellTypeEnum.CURRENCY }),
5813
+ plainToClass(ExportCell, { value: transaction.credit, type: ExportCellTypeEnum.CURRENCY })
5814
+ ];
5815
+ });
5816
+ }
5817
+ /**
5818
+ * Get list of vehicle transactions filtered by vehicle claim
5819
+ */
5820
+ getByVehicleClaim(vehicleClaim) {
5821
+ if (!vehicleClaim) {
5822
+ return this.create([]);
5823
+ }
5824
+ return vehicleClaim.isSoleTank()
5825
+ // sole tank may have multiple vehicle claims, so we need to filter by business.id
5826
+ ? this.getVehicleTransactions().filterBy('business.id', vehicleClaim.business.id)
5827
+ // work tank may have only one vehicle claim, so we need to filter by tank type
5828
+ : this.getVehicleTransactions().filterBy('tankType', TankTypeEnum.WORK);
5829
+ }
5830
+ /**
5831
+ * Get list of vehicle transactions except KMS transactions
5832
+ */
5833
+ getLogbookTransactions() {
5834
+ return this
5835
+ .getVehicleTransactions()
5836
+ .removeBy('chartAccounts.id', [ChartAccountsListEnum.KLMS_TRAVELLED_FOR_WORK, ChartAccountsListEnum.KLMS_TRAVELLED]);
5837
+ }
5838
+ /**
5839
+ * Build chart data with transactions cash position.
5840
+ * Cash position = Income - Expenses (include depreciations)
5841
+ * Chart data for each month from fin year start till current month
5842
+ */
5843
+ getCashPositionChartData() {
5844
+ const chartData = [
5845
+ plainToClass(ChartData, { name: 'Income', data: [] }),
5846
+ plainToClass(ChartData, { name: 'Expense', data: [] })
5847
+ ];
5848
+ new FinancialYear().getPastMonths().forEach((month) => {
5849
+ chartData[0].data.push({
5850
+ label: MONTHS[month],
5851
+ value: this.getIncomeTransactions().getByMonth(month).claimAmount
5852
+ });
5853
+ chartData[1].data.push({
5854
+ label: MONTHS[month],
5855
+ value: Math.abs(this.getExpenseTransactions().getByMonth(month).claimAmount)
5856
+ });
5857
+ });
5858
+ return chartData;
5859
+ }
5860
+ }
5861
+
5862
+ class TransactionAllocationCollection extends Collection {
5863
+ get amount() {
5864
+ return this.sumBy('amount');
5865
+ }
5866
+ getByTransactionsIds(ids) {
5867
+ return new TransactionAllocationCollection(this.items.filter((allocation) => ids.includes(allocation.transaction.id)));
5868
+ }
5869
+ getByBankTransactionsIds(ids) {
5870
+ return new TransactionAllocationCollection(this.items.filter((allocation) => ids.includes(allocation.bankTransaction.id)));
5871
+ }
5872
+ /**
5873
+ * Group allocations by bank account via bank transactions collection
5874
+ */
5875
+ groupByBankAccount(bankTransactions) {
5876
+ // Group bank transactions by bank account id
5877
+ const bankTransactionsByBankAccount = new CollectionDictionary(bankTransactions, 'bankAccount.id');
5878
+ // Create empty dictionary of transaction allocations
5879
+ const allocationsByBankAccount = new CollectionDictionary(new TransactionAllocationCollection([]));
5880
+ // Fill allocations dictionary with bank transactions dictionary keys and allocations related with each bank transaction collection
5881
+ bankTransactionsByBankAccount.keys.forEach((key) => {
5882
+ allocationsByBankAccount.add(key, this.getByBankTransactionsIds(bankTransactionsByBankAccount.get(key).getIds()));
5883
+ });
5884
+ return allocationsByBankAccount;
5885
+ }
5886
+ /**
5887
+ * check if collection includes allocation of passed transaction
5888
+ */
5889
+ hasTransaction(transaction) {
5890
+ return !!this.items.find((allocation) => allocation.transaction.id === transaction.id);
5891
+ }
5892
+ /**
5893
+ * Check if bank transaction is related with current allocations
5894
+ */
5895
+ hasBankTransaction(bankTransaction) {
5896
+ return !!this.items.find((allocation) => allocation.bankTransaction.id === bankTransaction.id);
5897
+ }
5898
+ }
5899
+
5900
+ class TransactionBaseCollection extends Collection {
5901
+ getClaimAmountByBusiness(business) {
5902
+ return this.filterBy('business.id', business.id)
5903
+ .sumBy('claimAmount');
5904
+ }
5905
+ }
5906
+
5591
5907
  // @TODO Alex move here all collections
5592
5908
 
5593
5909
  class AccountSetupItemCollection extends Collection {
@@ -5802,329 +6118,102 @@ class ChatCollection extends Collection {
5802
6118
  getSortedByNewest(messages) {
5803
6119
  const chatsById = new Dictionary(this.toArray());
5804
6120
  // get chats array sorted from newest to oldest
5805
- const chats = uniqBy(new MessageCollection(messages)
5806
- .filterBy('chat.id', this.getIds())
5807
- .sortBy('createdAt', true)
5808
- .toArray()
5809
- .map((message) => chatsById.get(message.chat.id)), 'id');
5810
- const emptyChats = differenceBy(this.toArray(), chats, 'id');
5811
- return this.create([...chats, ...emptyChats]);
5812
- }
5813
- getActive() {
5814
- return this.filterBy('status', ChatStatusEnum.ACTIVE);
5815
- }
5816
- }
5817
-
5818
- class ClientCollection extends Collection {
5819
- }
5820
-
5821
- var FirmTypeEnum;
5822
- (function (FirmTypeEnum) {
5823
- FirmTypeEnum[FirmTypeEnum["ACCOUNTANT"] = 1] = "ACCOUNTANT";
5824
- FirmTypeEnum[FirmTypeEnum["ADVISOR"] = 2] = "ADVISOR";
5825
- })(FirmTypeEnum || (FirmTypeEnum = {}));
5826
-
5827
- class EmployeeCollection extends Collection {
5828
- get accountant() {
5829
- var _a;
5830
- return (_a = this.items.filter((user) => user.employeeDetails.firm.type === FirmTypeEnum.ACCOUNTANT)[0]) !== null && _a !== void 0 ? _a : null;
5831
- }
5832
- get advisors() {
5833
- return this.items.filter((user) => user.employeeDetails.firm.type === FirmTypeEnum.ADVISOR);
5834
- }
5835
- }
5836
-
5837
- /**
5838
- * Collection of tax review
5839
- */
5840
- class ClientMovementCollection extends Collection {
5841
- get active() {
5842
- return new ClientMovementCollection(this.items.filter((clientMovement) => !clientMovement.dateTo));
5843
- }
5844
- get employees() {
5845
- return new EmployeeCollection(this.items.map((clientMovement) => clientMovement.employee));
5846
- }
5847
- get clients() {
5848
- return new EmployeeCollection(this.items.map((clientMovement) => clientMovement.client));
5849
- }
5850
- get accountant() {
5851
- var _a;
5852
- return (_a = this.items.filter((clientMovement) => clientMovement.firm.type === FirmTypeEnum.ACCOUNTANT)[0]) !== null && _a !== void 0 ? _a : null;
5853
- }
5854
- get advisors() {
5855
- return new ClientMovementCollection(this.items.filter((clientMovement) => clientMovement.firm.type === FirmTypeEnum.ADVISOR));
5856
- }
5857
- getByEmployeeId(id) {
5858
- return new ClientMovementCollection(this.items.filter((clientMovement) => clientMovement.employee.id === id));
5859
- }
5860
- getByFirmType(firmType) {
5861
- return new ClientMovementCollection(this.items.filter((clientMovement) => clientMovement.firm.type === firmType));
5862
- }
5863
- }
5864
-
5865
- /**
5866
- * Collection of employee clients tax summary information
5867
- */
5868
- class ClientPortfolioReportCollection extends Collection {
5869
- get marketValue() {
5870
- return this.sumBy('marketValue');
5871
- }
5872
- get loanBalance() {
5873
- return this.sumBy('loanBalance');
5874
- }
5875
- get equityPosition() {
5876
- return this.sumBy('equityPosition');
5877
- }
5878
- /**
5879
- * Get average market value if there are more than 1 item in the collection
5880
- */
5881
- get averageMarketValue() {
5882
- return this.items.length > 1 ? this.marketValue / this.items.length : null;
5883
- }
5884
- /**
5885
- * Get average loan balance if there are more than 1 item in the collection
5886
- */
5887
- get averageLoanBalance() {
5888
- return this.items.length > 1 ? this.loanBalance / this.items.length : null;
5889
- }
5890
- /**
5891
- * Get average equity position if there are more than 1 item in the collection
5892
- */
5893
- get averageEquityPosition() {
5894
- return this.items.length > 1 ? this.equityPosition / this.items.length : null;
5895
- }
5896
- /**
5897
- * Return report by provided category name
5898
- */
5899
- getByCategoryName(name) {
5900
- return this.items.find((item) => item.category === name);
5901
- }
5902
- }
5903
-
5904
- /**
5905
- * Chart serie class: chart data item
5906
- * @TODO consider rename to ChartSerieData
5907
- */
5908
- class ChartSerie {
5909
- }
5910
-
5911
- /**
5912
- * Chart data class
5913
- * @TODO consider rename to ChartSerie
5914
- */
5915
- class ChartData {
5916
- }
5917
- __decorate([
5918
- Type(() => ChartSerie)
5919
- ], ChartData.prototype, "data", void 0);
5920
-
5921
- const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan'];
5922
-
5923
- /**
5924
- * Collection of transactions
5925
- */
5926
- class TransactionCollection extends ExportableCollection {
5927
- /**
5928
- * Get total amount of all transactions in the collection
5929
- */
5930
- get amount() {
5931
- return +this.items.reduce((sum, transaction) => sum + transaction.getNetAmount(), 0).toFixed(2);
5932
- }
5933
- /**
5934
- * Difference between allocated amount and total amount
5935
- */
5936
- getUnallocatedAmount(allocations) {
5937
- return +(this.amount - allocations.getByTransactionsIds(this.getIds()).amount).toFixed(2);
5938
- }
5939
- /**
5940
- * Get cash position
5941
- * Cash Position = Income - Expenses
5942
- * Cash position is equal to Total Amount because income is positive and expense is negative,
5943
- */
5944
- get cashPosition() {
5945
- return this.claimAmount;
5946
- }
5947
- /**
5948
- * get date of the last transaction
5949
- */
5950
- getLastTransactionDate() {
5951
- return new Date(Math.max.apply(Math, this.items.map((transaction) => transaction.date)));
5952
- }
5953
- /**
5954
- * Get summary of claim amounts
5955
- */
5956
- get claimAmount() {
5957
- return this.items.reduce((sum, transaction) => sum + transaction.claimAmount, 0);
5958
- }
5959
- get grossAmount() {
5960
- return +this.items.reduce((sum, transaction) => sum + transaction.amount, 0).toFixed(2);
5961
- }
5962
- getByChartAccountsCategories(categories) {
5963
- return new TransactionCollection(this.items.filter((transaction) => categories.includes(transaction.chartAccounts.category)));
5964
- }
5965
- /**
5966
- * Get transactions by month
5967
- * @param monthIndex by which desired month should be taken
5968
- */
5969
- getByMonth(monthIndex) {
5970
- return new TransactionCollection(this.items.filter((transaction) => transaction.date.getMonth() === monthIndex));
5971
- }
5972
- /**
5973
- * Get collection of transactions metadata
5974
- */
5975
- getTransactionsMetadata() {
5976
- const metadataArray = [];
5977
- this.items.forEach((transaction) => {
5978
- metadataArray.push(...transaction.metadata);
5979
- });
5980
- return new Collection(metadataArray);
5981
- }
5982
- getIncomeTransactions() {
5983
- return new TransactionCollection(this.items.filter((transaction) => transaction.isIncome()));
6121
+ const chats = uniqBy(new MessageCollection(messages)
6122
+ .filterBy('chat.id', this.getIds())
6123
+ .sortBy('createdAt', true)
6124
+ .toArray()
6125
+ .map((message) => chatsById.get(message.chat.id)), 'id');
6126
+ const emptyChats = differenceBy(this.toArray(), chats, 'id');
6127
+ return this.create([...chats, ...emptyChats]);
5984
6128
  }
5985
- get claimIncome() {
5986
- return this.getIncomeTransactions().claimAmount;
6129
+ getActive() {
6130
+ return this.filterBy('status', ChatStatusEnum.ACTIVE);
5987
6131
  }
5988
- getExpenseTransactions() {
5989
- return new TransactionCollection(this.items.filter((transaction) => transaction.isExpense() && !transaction.isInterest()));
6132
+ }
6133
+
6134
+ class ClientCollection extends Collection {
6135
+ }
6136
+
6137
+ var FirmTypeEnum;
6138
+ (function (FirmTypeEnum) {
6139
+ FirmTypeEnum[FirmTypeEnum["ACCOUNTANT"] = 1] = "ACCOUNTANT";
6140
+ FirmTypeEnum[FirmTypeEnum["ADVISOR"] = 2] = "ADVISOR";
6141
+ })(FirmTypeEnum || (FirmTypeEnum = {}));
6142
+
6143
+ class EmployeeCollection extends Collection {
6144
+ get accountant() {
6145
+ var _a;
6146
+ return (_a = this.items.filter((user) => user.employeeDetails.firm.type === FirmTypeEnum.ACCOUNTANT)[0]) !== null && _a !== void 0 ? _a : null;
5990
6147
  }
5991
- get claimExpense() {
5992
- return this.getExpenseTransactions().claimAmount;
6148
+ get advisors() {
6149
+ return this.items.filter((user) => user.employeeDetails.firm.type === FirmTypeEnum.ADVISOR);
5993
6150
  }
5994
- getInterestTransactions() {
5995
- return new TransactionCollection(this.items.filter((transaction) => transaction.isInterest()));
6151
+ }
6152
+
6153
+ /**
6154
+ * Collection of tax review
6155
+ */
6156
+ class ClientMovementCollection extends Collection {
6157
+ get active() {
6158
+ return new ClientMovementCollection(this.items.filter((clientMovement) => !clientMovement.dateTo));
5996
6159
  }
5997
- get claimInterest() {
5998
- return this.getInterestTransactions().claimAmount;
6160
+ get employees() {
6161
+ return new EmployeeCollection(this.items.map((clientMovement) => clientMovement.employee));
5999
6162
  }
6000
- /**
6001
- * Get collection of transactions and properties filtered by properties ids
6002
- * @param ids Ids of properties for filter
6003
- */
6004
- getByPropertiesIds(ids) {
6005
- return new TransactionCollection(this.items.filter((transaction) => {
6006
- var _a;
6007
- return ids.includes((_a = transaction.property) === null || _a === void 0 ? void 0 : _a.id);
6008
- }));
6163
+ get clients() {
6164
+ return new EmployeeCollection(this.items.map((clientMovement) => clientMovement.client));
6009
6165
  }
6010
- /**
6011
- * Get new collection filtered by income source id
6012
- * @param id id of income source for filter
6013
- */
6014
- getByIncomeSourceId(id) {
6015
- return new TransactionCollection(this.items.filter((transaction) => { var _a; return ((_a = transaction.incomeSource) === null || _a === void 0 ? void 0 : _a.id) === id; }));
6166
+ get accountant() {
6167
+ var _a;
6168
+ return (_a = this.items.filter((clientMovement) => clientMovement.firm.type === FirmTypeEnum.ACCOUNTANT)[0]) !== null && _a !== void 0 ? _a : null;
6016
6169
  }
6017
- /**
6018
- * Get new collection filtered by chart accounts category
6019
- * @param category Chart accounts category value
6020
- */
6021
- getByChartAccountsCategory(category) {
6022
- return new TransactionCollection(this.items.filter((transaction) => transaction.chartAccounts.category === category));
6170
+ get advisors() {
6171
+ return new ClientMovementCollection(this.items.filter((clientMovement) => clientMovement.firm.type === FirmTypeEnum.ADVISOR));
6023
6172
  }
6024
- /**
6025
- * Get new collection of property transactions
6026
- */
6027
- getPropertyTransactions() {
6028
- return new TransactionCollection(this.items.filter((transaction) => transaction.isPropertyTank()));
6173
+ getByEmployeeId(id) {
6174
+ return new ClientMovementCollection(this.items.filter((clientMovement) => clientMovement.employee.id === id));
6029
6175
  }
6030
- getDebitTransactions() {
6031
- return new TransactionCollection(this.items.filter((transaction) => transaction.isDebit()));
6176
+ getByFirmType(firmType) {
6177
+ return new ClientMovementCollection(this.items.filter((clientMovement) => clientMovement.firm.type === firmType));
6032
6178
  }
6033
- getCreditTransactions() {
6034
- return new TransactionCollection(this.items.filter((transaction) => transaction.isCredit()));
6179
+ }
6180
+
6181
+ /**
6182
+ * Collection of employee clients tax summary information
6183
+ */
6184
+ class ClientPortfolioReportCollection extends Collection {
6185
+ get marketValue() {
6186
+ return this.sumBy('marketValue');
6035
6187
  }
6036
- getByAllocations(allocations) {
6037
- return new TransactionCollection(this.items.filter((transaction) => allocations.hasTransaction(transaction)));
6188
+ get loanBalance() {
6189
+ return this.sumBy('loanBalance');
6038
6190
  }
6039
- /**
6040
- * Get transactions related to Vehicle category
6041
- */
6042
- getVehicleTransactions() {
6043
- return this.create(this.items.filter((transaction) => {
6044
- return transaction.isVehicleTransaction();
6045
- }));
6191
+ get equityPosition() {
6192
+ return this.sumBy('equityPosition');
6046
6193
  }
6047
6194
  /**
6048
- * Get new transaction collection filtered by tank type
6195
+ * Get average market value if there are more than 1 item in the collection
6049
6196
  */
6050
- getByTankType(tankType) {
6051
- return this.create(this.items.filter((transaction) => {
6052
- switch (tankType) {
6053
- case TankTypeEnum.PROPERTY:
6054
- return transaction.isPropertyTank();
6055
- case TankTypeEnum.WORK:
6056
- return transaction.isWorkTank();
6057
- case TankTypeEnum.SOLE:
6058
- return transaction.isSoleTank();
6059
- // Transaction may be not related to any tank type (personal)
6060
- default:
6061
- return false;
6062
- }
6063
- }));
6064
- }
6065
- getExportHeader() {
6066
- return ['Date', 'Description', 'Debit', 'Credit'];
6067
- }
6068
- getExportFooter() {
6069
- return [
6070
- plainToClass(ExportCell, { value: 'Total', type: ExportCellTypeEnum.STRING }),
6071
- plainToClass(ExportCell, { value: '', type: ExportCellTypeEnum.STRING }),
6072
- plainToClass(ExportCell, { value: this.sumBy('debit'), type: ExportCellTypeEnum.CURRENCY }),
6073
- plainToClass(ExportCell, { value: this.sumBy('credit'), type: ExportCellTypeEnum.CURRENCY })
6074
- ];
6075
- }
6076
- getExportBody() {
6077
- return this.items.map((transaction) => {
6078
- return [
6079
- plainToClass(ExportCell, { value: transaction.date, type: ExportCellTypeEnum.DATE }),
6080
- plainToClass(ExportCell, { value: transaction.description, type: ExportCellTypeEnum.STRING }),
6081
- plainToClass(ExportCell, { value: transaction.debit, type: ExportCellTypeEnum.CURRENCY }),
6082
- plainToClass(ExportCell, { value: transaction.credit, type: ExportCellTypeEnum.CURRENCY })
6083
- ];
6084
- });
6197
+ get averageMarketValue() {
6198
+ return this.items.length > 1 ? this.marketValue / this.items.length : null;
6085
6199
  }
6086
6200
  /**
6087
- * Get list of vehicle transactions filtered by vehicle claim
6201
+ * Get average loan balance if there are more than 1 item in the collection
6088
6202
  */
6089
- getByVehicleClaim(vehicleClaim) {
6090
- if (!vehicleClaim) {
6091
- return this.create([]);
6092
- }
6093
- return vehicleClaim.isSoleTank()
6094
- // sole tank may have multiple vehicle claims, so we need to filter by business.id
6095
- ? this.getVehicleTransactions().filterBy('business.id', vehicleClaim.business.id)
6096
- // work tank may have only one vehicle claim, so we need to filter by tank type
6097
- : this.getVehicleTransactions().filterBy('tankType', TankTypeEnum.WORK);
6203
+ get averageLoanBalance() {
6204
+ return this.items.length > 1 ? this.loanBalance / this.items.length : null;
6098
6205
  }
6099
6206
  /**
6100
- * Get list of vehicle transactions except KMS transactions
6207
+ * Get average equity position if there are more than 1 item in the collection
6101
6208
  */
6102
- getLogbookTransactions() {
6103
- return this
6104
- .getVehicleTransactions()
6105
- .removeBy('chartAccounts.id', [ChartAccountsListEnum.KLMS_TRAVELLED_FOR_WORK, ChartAccountsListEnum.KLMS_TRAVELLED]);
6209
+ get averageEquityPosition() {
6210
+ return this.items.length > 1 ? this.equityPosition / this.items.length : null;
6106
6211
  }
6107
6212
  /**
6108
- * Build chart data with transactions cash position.
6109
- * Cash position = Income - Expenses (include depreciations)
6110
- * Chart data for each month from fin year start till current month
6213
+ * Return report by provided category name
6111
6214
  */
6112
- getCashPositionChartData() {
6113
- const chartData = [
6114
- plainToClass(ChartData, { name: 'Income', data: [] }),
6115
- plainToClass(ChartData, { name: 'Expense', data: [] })
6116
- ];
6117
- new FinancialYear().getPastMonths().forEach((month) => {
6118
- chartData[0].data.push({
6119
- label: MONTHS[month],
6120
- value: this.getIncomeTransactions().getByMonth(month).claimAmount
6121
- });
6122
- chartData[1].data.push({
6123
- label: MONTHS[month],
6124
- value: Math.abs(this.getExpenseTransactions().getByMonth(month).claimAmount)
6125
- });
6126
- });
6127
- return chartData;
6215
+ getByCategoryName(name) {
6216
+ return this.items.find((item) => item.category === name);
6128
6217
  }
6129
6218
  }
6130
6219
 
@@ -6770,7 +6859,11 @@ const TAX_RETURN_CATEGORIES = {
6770
6859
  TaxReturnCategoryListEnum.DEPRECIATION_EXPENSES,
6771
6860
  TaxReturnCategoryListEnum.MOTOR_VEHICLE_EXPENSES,
6772
6861
  TaxReturnCategoryListEnum.ALL_OTHER_EXPENSES
6773
- ]
6862
+ ],
6863
+ // @TODO TT-2386 Nikita to move sole tax offsets in separated category
6864
+ taxOffsets: [
6865
+ TaxReturnCategoryListEnum.TAX_OFFSETS
6866
+ ],
6774
6867
  },
6775
6868
  };
6776
6869
 
@@ -6827,44 +6920,6 @@ class TaxReviewCollection extends Collection {
6827
6920
  }
6828
6921
  }
6829
6922
 
6830
- class TransactionAllocationCollection extends Collection {
6831
- get amount() {
6832
- return this.sumBy('amount');
6833
- }
6834
- getByTransactionsIds(ids) {
6835
- return new TransactionAllocationCollection(this.items.filter((allocation) => ids.includes(allocation.transaction.id)));
6836
- }
6837
- getByBankTransactionsIds(ids) {
6838
- return new TransactionAllocationCollection(this.items.filter((allocation) => ids.includes(allocation.bankTransaction.id)));
6839
- }
6840
- /**
6841
- * Group allocations by bank account via bank transactions collection
6842
- */
6843
- groupByBankAccount(bankTransactions) {
6844
- // Group bank transactions by bank account id
6845
- const bankTransactionsByBankAccount = new CollectionDictionary(bankTransactions, 'bankAccount.id');
6846
- // Create empty dictionary of transaction allocations
6847
- const allocationsByBankAccount = new CollectionDictionary(new TransactionAllocationCollection([]));
6848
- // Fill allocations dictionary with bank transactions dictionary keys and allocations related with each bank transaction collection
6849
- bankTransactionsByBankAccount.keys.forEach((key) => {
6850
- allocationsByBankAccount.add(key, this.getByBankTransactionsIds(bankTransactionsByBankAccount.get(key).getIds()));
6851
- });
6852
- return allocationsByBankAccount;
6853
- }
6854
- /**
6855
- * check if collection includes allocation of passed transaction
6856
- */
6857
- hasTransaction(transaction) {
6858
- return !!this.items.find((allocation) => allocation.transaction.id === transaction.id);
6859
- }
6860
- /**
6861
- * Check if bank transaction is related with current allocations
6862
- */
6863
- hasBankTransaction(bankTransaction) {
6864
- return !!this.items.find((allocation) => allocation.bankTransaction.id === bankTransaction.id);
6865
- }
6866
- }
6867
-
6868
6923
  /**
6869
6924
  * Collection of user event settings
6870
6925
  */
@@ -9389,7 +9444,6 @@ class TaxSummary {
9389
9444
  return income - Math.abs(expenses) + Math.abs(taxOffsets) + Math.abs(taxInstallments) + Math.abs(frankingCredits);
9390
9445
  }
9391
9446
  /**
9392
- * @TODO Nicole update documentation + check calculations
9393
9447
  * Sole Net Cash = gross income – expenses
9394
9448
  * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677990/Dashboard+Main
9395
9449
  */
@@ -9399,7 +9453,6 @@ class TaxSummary {
9399
9453
  return income - Math.abs(expenses);
9400
9454
  }
9401
9455
  /**
9402
- * @TODO Nicole update documentation + check calculations
9403
9456
  * Sole Net Total = Gross income - expenses
9404
9457
  * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677990/Dashboard+Main
9405
9458
  */
@@ -9596,6 +9649,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
9596
9649
  }]
9597
9650
  }] });
9598
9651
 
9652
+ /**
9653
+ * @TODO vik replace with json when the final list is confirmed
9654
+ */
9655
+ class SoleBusinessLossOffsetRuleService extends RestService {
9656
+ constructor() {
9657
+ super(...arguments);
9658
+ this.modelClass = SoleBusinessLossOffsetRule;
9659
+ this.url = 'sole-business-loss-offset-rules';
9660
+ this.isHydra = true;
9661
+ }
9662
+ }
9663
+ SoleBusinessLossOffsetRuleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleBusinessLossOffsetRuleService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
9664
+ SoleBusinessLossOffsetRuleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleBusinessLossOffsetRuleService, providedIn: 'root' });
9665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SoleBusinessLossOffsetRuleService, decorators: [{
9666
+ type: Injectable,
9667
+ args: [{
9668
+ providedIn: 'root'
9669
+ }]
9670
+ }] });
9671
+
9599
9672
  class SoleContactService extends RestService {
9600
9673
  constructor() {
9601
9674
  super(...arguments);
@@ -14968,6 +15041,29 @@ class SoleBusinessAllocationsForm extends FormArray {
14968
15041
  }
14969
15042
  }
14970
15043
 
15044
+ class SoleBusinessLossForm extends AbstractForm {
15045
+ constructor(loss, balance) {
15046
+ var _a;
15047
+ super({
15048
+ openBalance: new FormControl(loss.openBalance, Validators.required),
15049
+ offsetRule: new FormControl((_a = loss.offsetRule) === null || _a === void 0 ? void 0 : _a.id),
15050
+ // sum of depreciations/transactions claim amount - openBalance
15051
+ balance: new FormControl({ value: balance, disabled: true }),
15052
+ }, loss);
15053
+ this.loss = loss;
15054
+ this.get('openBalance').valueChanges.subscribe((openBalance) => {
15055
+ this.get('balance').setValue(balance - openBalance);
15056
+ });
15057
+ }
15058
+ /**
15059
+ * radio buttons can't work with object
15060
+ * https://github.com/angular/components/issues/10495
15061
+ */
15062
+ submit() {
15063
+ return super.submit({ offsetRule: this.get('offsetRule').value ? { id: this.get('offsetRule').value } : null });
15064
+ }
15065
+ }
15066
+
14971
15067
  class SoleContactForm extends AbstractForm {
14972
15068
  constructor(contact = plainToClass(SoleContact, {})) {
14973
15069
  super({
@@ -16104,5 +16200,5 @@ VehicleLogbookForm.maxDescriptionLength = 60;
16104
16200
  * Generated bundle index. Do not edit.
16105
16201
  */
16106
16202
 
16107
- export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, Address, AddressService, AddressTypeEnum, AlphabetColorsEnum, AppEvent, AppEventTypeEnum, 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, BankLoginData, BankLoginForm, BankService, BankTransaction, BankTransactionCalculationService, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasiqConfig, BasiqJob, BasiqService, BasiqToken, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsListEnum, ChartAccountsMetadata, ChartAccountsMetadataListEnum, ChartAccountsMetadataTypeEnum, 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, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, 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, FinancialYear, Firm, FirmService, FirmTypeEnum, HeaderTitleService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, InterceptorsModule, IntercomService, InviteStatusEnum, JwtService, KompassifyService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LogbookBestPeriodService, LogbookPeriod, LoginForm, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessOrLosses, MyTaxBusinessOrLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEmployeeShareSchemes, MyTaxEmployeeShareSchemesForm, 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, PdfOrientationEnum, PdfSettings, Phone, PhoneTypeEnum, PreloaderService, Property, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentService, PropertyEquityChartData, PropertyEquityChartItem, PropertyForecast, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetadata, PropertySaleTaxExemptionMetadataCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RewardfulService, SUBSCRIPTION_DESCRIPTION, SUBSCRIPTION_TITLE, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentStatusEnum, ServicePrice, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductIdEnum, ServiceProductStatusEnum, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, ShareFilterOptionsEnum, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, SubscriptionService, SubscriptionTypeEnum, 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, TransactionCalculationService, TransactionCategoryEnum, TransactionCollection, TransactionMetadata, TransactionOperationEnum, TransactionReceipt, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, TutorialVideoService, USER_ROLES, USER_WORK_POSITION, User, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, 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, XlsxService, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, minDateValidator, passwordMatchValidator, passwordValidator, replace, roundTo, sort, sortDeep, taxReviewFilterPredicate };
16203
+ export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, Address, AddressService, AddressTypeEnum, AlphabetColorsEnum, AppEvent, AppEventTypeEnum, 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, BankLoginData, BankLoginForm, BankService, BankTransaction, BankTransactionCalculationService, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasiqConfig, BasiqJob, BasiqService, BasiqToken, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsListEnum, ChartAccountsMetadata, ChartAccountsMetadataListEnum, ChartAccountsMetadataTypeEnum, 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, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, 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, FinancialYear, Firm, FirmService, FirmTypeEnum, HeaderTitleService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, InterceptorsModule, IntercomService, InviteStatusEnum, JwtService, KompassifyService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LogbookBestPeriodService, LogbookPeriod, LoginForm, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessOrLosses, MyTaxBusinessOrLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEmployeeShareSchemes, MyTaxEmployeeShareSchemesForm, 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, PdfOrientationEnum, PdfSettings, Phone, PhoneTypeEnum, PreloaderService, Property, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentService, PropertyEquityChartData, PropertyEquityChartItem, PropertyForecast, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetadata, PropertySaleTaxExemptionMetadataCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RewardfulService, SUBSCRIPTION_DESCRIPTION, SUBSCRIPTION_TITLE, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentStatusEnum, ServicePrice, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductIdEnum, ServiceProductStatusEnum, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, ShareFilterOptionsEnum, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, SubscriptionService, SubscriptionTypeEnum, 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, TransactionBaseCollection, TransactionCalculationService, TransactionCategoryEnum, TransactionCollection, TransactionMetadata, TransactionOperationEnum, TransactionReceipt, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, TutorialVideoService, USER_ROLES, USER_WORK_POSITION, User, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, 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, XlsxService, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, minDateValidator, passwordMatchValidator, passwordValidator, replace, roundTo, sort, sortDeep, taxReviewFilterPredicate };
16108
16204
  //# sourceMappingURL=taxtank-core.js.map