taxtank-core 0.28.18 → 0.28.21

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 (35) hide show
  1. package/bundles/taxtank-core.umd.js +373 -278
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/chat.collection.js +26 -0
  4. package/esm2015/lib/collections/index.js +2 -1
  5. package/esm2015/lib/collections/message.collection.js +13 -1
  6. package/esm2015/lib/collections/property/index.js +4 -0
  7. package/esm2015/lib/collections/property/property-category-movement.collection.js +17 -0
  8. package/esm2015/lib/collections/property/property-sale/index.js +3 -0
  9. package/esm2015/lib/db/Enums/chat-status.enum.js +1 -1
  10. package/esm2015/lib/db/Enums/property/property-category-list.enum.js +2 -1
  11. package/esm2015/lib/forms/sole/sole-business.form.js +3 -3
  12. package/esm2015/lib/forms/sole/sole-invoice.form.js +3 -2
  13. package/esm2015/lib/models/bank/bank-account.js +7 -1
  14. package/esm2015/lib/models/chart-accounts/chart-accounts.js +12 -6
  15. package/esm2015/lib/models/chat/message.js +5 -1
  16. package/esm2015/lib/models/endpoint/endpoints.const.js +2 -1
  17. package/esm2015/lib/models/financial-year/financial-year.js +7 -2
  18. package/esm2015/lib/models/property/property-category.js +7 -3
  19. package/esm2015/public-api.js +2 -3
  20. package/fesm2015/taxtank-core.js +278 -205
  21. package/fesm2015/taxtank-core.js.map +1 -1
  22. package/lib/collections/chat.collection.d.ts +10 -0
  23. package/lib/collections/index.d.ts +1 -0
  24. package/lib/collections/message.collection.d.ts +5 -0
  25. package/lib/collections/property/index.d.ts +3 -0
  26. package/lib/collections/property/property-category-movement.collection.d.ts +11 -0
  27. package/lib/collections/property/property-sale/index.d.ts +2 -0
  28. package/lib/db/Enums/property/property-category-list.enum.d.ts +1 -0
  29. package/lib/models/bank/bank-account.d.ts +2 -0
  30. package/lib/models/chart-accounts/chart-accounts.d.ts +6 -1
  31. package/lib/models/chat/message.d.ts +2 -0
  32. package/lib/models/financial-year/financial-year.d.ts +1 -1
  33. package/lib/models/property/property-category.d.ts +1 -0
  34. package/package.json +1 -1
  35. package/public-api.d.ts +1 -2
@@ -22,6 +22,7 @@ import { throwError as throwError$1 } from 'rxjs/internal/observable/throwError'
22
22
  import cloneDeep$1 from 'lodash/cloneDeep';
23
23
  import { EventSourcePolyfill } from 'event-source-polyfill/src/eventsource.min.js';
24
24
  import compact from 'lodash/compact';
25
+ import differenceBy from 'lodash/differenceBy';
25
26
  import { Validators, FormGroup, FormControl, FormArray } from '@angular/forms';
26
27
  import merge from 'lodash/merge';
27
28
  import isEqual from 'lodash/isEqual';
@@ -659,6 +660,7 @@ const ENDPOINTS = {
659
660
  PROPERTIES_CATEGORIES_GET: new Endpoint('GET', '\\/properties\\/categories'),
660
661
  PROPERTIES_CATEGORIES_PUT: new Endpoint('PUT', '\\/properties\\/categories\\/\\d+'),
661
662
  PROPERTIES_CATEGORIES_POST: new Endpoint('POST', '\\/properties\\/categories'),
663
+ PROPERTIES_CATEGORIES_MOVEMENTS_GET: new Endpoint('GET', '\\/properties\\/\\d+\\/category-movements'),
662
664
  PROPERTIES_CATEGORY_MOVEMENTS_POST: new Endpoint('POST', '\\/properties\\/\\d+\\/category-movements'),
663
665
  PROPERTIES_CATEGORY_MOVEMENTS_PUT: new Endpoint('PUT', '\\/properties\\/\\d+\\/category-movements\\/\\d+'),
664
666
  PROPERTIES_SHARES_PUT: new Endpoint('PUT', '\\/properties\\/shares\\/\\d+'),
@@ -1208,7 +1210,12 @@ class FinancialYear {
1208
1210
  constructor(date) {
1209
1211
  this.yearStartDate = '-07-01';
1210
1212
  this.yearEndDate = '-06-30';
1211
- this.year = date ? FinancialYear.toFinYear(date) : +localStorage.getItem('financialYear') || FinancialYear.toFinYear(new Date());
1213
+ if (date) {
1214
+ this.year = date instanceof Date ? FinancialYear.toFinYear(date) : date;
1215
+ }
1216
+ else {
1217
+ this.year = +localStorage.getItem('financialYear') || FinancialYear.toFinYear(new Date());
1218
+ }
1212
1219
  this.setStartDate(this.year);
1213
1220
  this.setEndDate(this.year);
1214
1221
  }
@@ -2331,6 +2338,9 @@ class ChartAccounts extends ChartAccounts$1 {
2331
2338
  isIncome() {
2332
2339
  return CHART_ACCOUNTS_CATEGORIES.income.includes(this.category);
2333
2340
  }
2341
+ isExpense() {
2342
+ return CHART_ACCOUNTS_CATEGORIES.expense.includes(this.category);
2343
+ }
2334
2344
  isProperty() {
2335
2345
  return CHART_ACCOUNTS_CATEGORIES.property.includes(this.category);
2336
2346
  }
@@ -2346,7 +2356,7 @@ class ChartAccounts extends ChartAccounts$1 {
2346
2356
  * Check if chart accounts is property expense
2347
2357
  */
2348
2358
  isPropertyExpense() {
2349
- return this.category === ChartAccountsCategoryEnum.PROPERTY_EXPENSE;
2359
+ return this.isProperty() && this.isExpense();
2350
2360
  }
2351
2361
  /**
2352
2362
  * Check if chart accounts is property income
@@ -2360,10 +2370,6 @@ class ChartAccounts extends ChartAccounts$1 {
2360
2370
  isPersonalExpense() {
2361
2371
  return this.category === ChartAccountsCategoryEnum.PERSONAL_EXPENSE;
2362
2372
  }
2363
- isPropertyDepreciation() {
2364
- return [ChartAccountsCategoryEnum.PROPERTY_DEPRECIATION, ChartAccountsCategoryEnum.PROPERTY_CAPITAL_WORKS]
2365
- .includes(this.category);
2366
- }
2367
2373
  /**
2368
2374
  * Check if chart accounts category is depreciation
2369
2375
  */
@@ -2388,6 +2394,13 @@ class ChartAccounts extends ChartAccounts$1 {
2388
2394
  getValueByYear(year) {
2389
2395
  return this.values.find((value) => value.financialYear === year);
2390
2396
  }
2397
+ /**
2398
+ * no way to check how much used for work/sole, so we let user adjust it
2399
+ * except vehicle expense, which is equal to vehicleClaim.workUsage and personal, which is equal to 0
2400
+ */
2401
+ isClaimPercentEditable() {
2402
+ return (this.isWorkExpense() || this.isSoleExpense()) && (!this.isVehicleExpense() && !this.isPersonalExpense());
2403
+ }
2391
2404
  }
2392
2405
  __decorate([
2393
2406
  Type(() => ChartAccountsHeading)
@@ -3831,13 +3844,23 @@ __decorate([
3831
3844
  class PropertyCategory$1 extends AbstractModel {
3832
3845
  }
3833
3846
 
3847
+ var PropertyCategoryListEnum;
3848
+ (function (PropertyCategoryListEnum) {
3849
+ PropertyCategoryListEnum[PropertyCategoryListEnum["OWNER_OCCUPIED"] = 3] = "OWNER_OCCUPIED";
3850
+ PropertyCategoryListEnum[PropertyCategoryListEnum["SHARED"] = 4] = "SHARED";
3851
+ PropertyCategoryListEnum[PropertyCategoryListEnum["VACANT_LAND"] = 5] = "VACANT_LAND";
3852
+ })(PropertyCategoryListEnum || (PropertyCategoryListEnum = {}));
3853
+
3834
3854
  class PropertyCategory extends PropertyCategory$1 {
3835
3855
  // @Todo check if category is Owner Occupied. If will be needed to check more categories - move the checking to the backend
3836
3856
  isOwnerOccupied() {
3837
- return this.name === 'Owner Occupied';
3857
+ return this.id === PropertyCategoryListEnum.OWNER_OCCUPIED;
3838
3858
  }
3839
3859
  isVacantLand() {
3840
- return this.name === 'Vacant Land';
3860
+ return this.id === PropertyCategoryListEnum.VACANT_LAND;
3861
+ }
3862
+ isShared() {
3863
+ return this.id === PropertyCategoryListEnum.SHARED;
3841
3864
  }
3842
3865
  }
3843
3866
 
@@ -3966,12 +3989,6 @@ var TaxExemptionEnum;
3966
3989
  TaxExemptionEnum[TaxExemptionEnum["OTHER"] = 7] = "OTHER";
3967
3990
  })(TaxExemptionEnum || (TaxExemptionEnum = {}));
3968
3991
 
3969
- var PropertyCategoryListEnum;
3970
- (function (PropertyCategoryListEnum) {
3971
- PropertyCategoryListEnum[PropertyCategoryListEnum["OWNER_OCCUPIED"] = 3] = "OWNER_OCCUPIED";
3972
- PropertyCategoryListEnum[PropertyCategoryListEnum["VACANT_LAND"] = 5] = "VACANT_LAND";
3973
- })(PropertyCategoryListEnum || (PropertyCategoryListEnum = {}));
3974
-
3975
3992
  var TaxExemptionMetadataEnum;
3976
3993
  (function (TaxExemptionMetadataEnum) {
3977
3994
  // principle place of residence
@@ -4331,6 +4348,12 @@ class BankAccount extends BankAccount$1 {
4331
4348
  get bank() {
4332
4349
  return this.bankConnection.bank;
4333
4350
  }
4351
+ get bsb() {
4352
+ return this.accountNumber.split(' ')[0];
4353
+ }
4354
+ get number() {
4355
+ return this.accountNumber.split(' ')[1];
4356
+ }
4334
4357
  /**
4335
4358
  * Get current opening balance amount
4336
4359
  */
@@ -5411,6 +5434,149 @@ class SoleInvoiceCollection extends Collection {
5411
5434
  }
5412
5435
  }
5413
5436
 
5437
+ class PropertySaleCollection extends Collection {
5438
+ get grossCGT() {
5439
+ return this.create(this.items.filter((propertySale) => propertySale.grossCGT > 0)).sumBy('grossCGT');
5440
+ }
5441
+ /**
5442
+ * Property sales are CGT applicable unless it has "Principle place of residence" exemption type
5443
+ */
5444
+ getCGTApplicable() {
5445
+ return this.create(this.items.filter((propertySale) => propertySale.isCGTApplicable()));
5446
+ }
5447
+ getByPropertyShareIds(ids) {
5448
+ return this.filterBy('share.id', ids);
5449
+ }
5450
+ }
5451
+
5452
+ class PropertyCollection extends Collection {
5453
+ /**
5454
+ * Get new property collection filtered by category id
5455
+ * @param id id of category for filter
5456
+ */
5457
+ getByCategoryId(id) {
5458
+ return new PropertyCollection(this.items.filter((property) => property.category.id === id));
5459
+ }
5460
+ /**
5461
+ * Get new property collection filtered by active status
5462
+ */
5463
+ getActiveProperties() {
5464
+ return new PropertyCollection(this.items.filter((property) => property.isActive));
5465
+ }
5466
+ getCreatedProperties() {
5467
+ return new PropertyCollection(this.items.filter((property) => property.isOwn()));
5468
+ }
5469
+ /**
5470
+ * Get new property collection filtered by shared
5471
+ */
5472
+ getSharedProperties() {
5473
+ return new PropertyCollection(this.items.filter((property) => !property.isOwn()));
5474
+ }
5475
+ /**
5476
+ * Properties that are taxed and will be included in reports (Tax summary, My tax report, e.t.c.)
5477
+ */
5478
+ getTaxInclusive() {
5479
+ return this.create(this.items.filter((property) => property.category.isTaxInclusive));
5480
+ }
5481
+ getUnsold() {
5482
+ return this.create(this.items.filter((property) => !property.isSold()));
5483
+ }
5484
+ /**
5485
+ * Get total purchase price for all properties in the collection
5486
+ */
5487
+ get purchasePrice() {
5488
+ return this.sumBy('purchasePrice');
5489
+ }
5490
+ get growthPercent() {
5491
+ return this.sumBy('growthPercent');
5492
+ }
5493
+ get marketValue() {
5494
+ return this.sumBy('marketValue');
5495
+ }
5496
+ get firstForecastYear() {
5497
+ return this.items.reduce((min, property) => {
5498
+ const current = property.firstForecastYear;
5499
+ return min > current ? current : min;
5500
+ }, new FinancialYear().year);
5501
+ }
5502
+ get marketValueGrowth() {
5503
+ return (this.marketValue - this.purchasePrice) / this.purchasePrice;
5504
+ }
5505
+ /**
5506
+ * list of properties
5507
+ */
5508
+ getCGTApplicable() {
5509
+ return this.create(this.items.filter((property) => property.isCGTApplicable()));
5510
+ }
5511
+ getOwnerOccupiedProperties() {
5512
+ return new PropertyCollection(this.items.filter((property) => property.category.isOwnerOccupied()));
5513
+ }
5514
+ get earliestContractDate() {
5515
+ return this.items.reduce((min, property) => {
5516
+ return min < property.contractDate ? min : property.contractDate;
5517
+ }, new FinancialYear(new Date()).startDate);
5518
+ }
5519
+ /**
5520
+ * Get list of unique property categories from collection
5521
+ */
5522
+ getCategories() {
5523
+ return uniqBy(this.items.map((property) => property.category), 'id');
5524
+ }
5525
+ /**
5526
+ * Get property with the highest growth percent
5527
+ */
5528
+ getBestPerformanceGrowthProperty() {
5529
+ return this.items.reduce((max, current) => {
5530
+ return max.growthPercent < current.growthPercent ? current : max;
5531
+ }, this.first);
5532
+ }
5533
+ /**
5534
+ * Get property with the lowest tax position
5535
+ */
5536
+ getBestPerformanceTaxProperty(transactions, depreciations) {
5537
+ const transactionsByProperty = transactions.groupBy('property.id');
5538
+ const depreciationsByProperty = depreciations.groupBy('property.id');
5539
+ return this.items.reduce((min, current) => {
5540
+ const minTaxPosition = min.getTaxPosition(transactionsByProperty.get(min.id), depreciationsByProperty.get(min.id));
5541
+ const currentTaxPosition = current.getTaxPosition(transactionsByProperty.get(current.id), depreciationsByProperty.get(current.id));
5542
+ return minTaxPosition > currentTaxPosition ? current : min;
5543
+ }, this.first);
5544
+ }
5545
+ /**
5546
+ * Show best performance properties first
5547
+ * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677997/Property+Tank+Dashboard
5548
+ */
5549
+ sortByBestPerformance(transactions, depreciations) {
5550
+ const activeProperties = this.getActiveProperties();
5551
+ // nothing to sort when no active properties
5552
+ if (!activeProperties.length) {
5553
+ return this;
5554
+ }
5555
+ const bestProperties = uniqBy(this.create([
5556
+ activeProperties.getBestPerformanceGrowthProperty(),
5557
+ activeProperties.getBestPerformanceTaxProperty(transactions, depreciations)
5558
+ ]).toArray(), 'id');
5559
+ const newItems = this.remove(bestProperties).toArray();
5560
+ newItems.unshift(...bestProperties);
5561
+ return this.create(newItems);
5562
+ }
5563
+ }
5564
+
5565
+ class PropertyCategoryMovementCollection extends Collection {
5566
+ /**
5567
+ * @TODO TT-2355 Alex refactor propertyForecast, use separated api (then I can remove property from param)
5568
+ */
5569
+ getByForecast(property, forecast) {
5570
+ const financialYear = new FinancialYear(forecast.financialYear);
5571
+ return this.filterBy('property.id', property.id).filter((movement) => {
5572
+ return movement.fromDate <= financialYear.endDate && movement.toDate >= financialYear.startDate;
5573
+ });
5574
+ }
5575
+ hasCategory(categoryId) {
5576
+ return !!this.findBy('propertyCategory.id', categoryId);
5577
+ }
5578
+ }
5579
+
5414
5580
  // @TODO Alex move here all collections
5415
5581
 
5416
5582
  class AccountSetupItemCollection extends Collection {
@@ -5548,6 +5714,96 @@ class ChartAccountsCollection extends Collection {
5548
5714
  }
5549
5715
  }
5550
5716
 
5717
+ class MessageCollection extends Collection {
5718
+ getFirstUnreadMessage(user) {
5719
+ return this.items.find((message) => {
5720
+ return !message.isRead() && message.isFromEmployee() !== user.isEmployee();
5721
+ });
5722
+ }
5723
+ /**
5724
+ * Get List of unread chats
5725
+ */
5726
+ getUnread() {
5727
+ return this.items.filter((message) => !message.readAt);
5728
+ }
5729
+ getFromActiveChats() {
5730
+ return this.filter((message) => message.chat.isActive());
5731
+ }
5732
+ /**
5733
+ * Get amount of chats that contains unread messages
5734
+ */
5735
+ getUnreadChatsAmount(isFromEmployee = false) {
5736
+ // filtered messages for client/employee
5737
+ const filteredMessages = this.filter((message) => isFromEmployee ? message.isFromEmployee() : !message.isFromEmployee());
5738
+ return uniqBy(filteredMessages.getFromActiveChats().getUnread(), 'chat.id').length;
5739
+ }
5740
+ /**
5741
+ * Check if chat has unread chats
5742
+ */
5743
+ hasUnread() {
5744
+ return !!this.getUnread().length;
5745
+ }
5746
+ }
5747
+
5748
+ /**
5749
+ * List of objects grouped by passed property
5750
+ */
5751
+ class Dictionary {
5752
+ constructor(items, path = 'id') {
5753
+ this.items = {};
5754
+ if (!items.length) {
5755
+ return;
5756
+ }
5757
+ // Do nothing if provided path was not found in the 1st item
5758
+ if (!hasIn(items[0], path.split('.')[0])) {
5759
+ return;
5760
+ }
5761
+ this.groupItems(items, path);
5762
+ }
5763
+ add(key, value) {
5764
+ this.items[key] = value;
5765
+ }
5766
+ get(key) {
5767
+ return this.items[key] !== undefined ? this.items[key] : null;
5768
+ }
5769
+ groupItems(items, path) {
5770
+ items.forEach((item) => {
5771
+ let key = get(item, path);
5772
+ // if object does not have property for grouping it will be grouped as 'other'
5773
+ if (key === undefined) {
5774
+ key = 'other';
5775
+ }
5776
+ this.items[key] = item;
5777
+ });
5778
+ }
5779
+ }
5780
+
5781
+ var ChatStatusEnum;
5782
+ (function (ChatStatusEnum) {
5783
+ ChatStatusEnum[ChatStatusEnum["ACTIVE"] = 1] = "ACTIVE";
5784
+ ChatStatusEnum[ChatStatusEnum["INACTIVE"] = 2] = "INACTIVE";
5785
+ })(ChatStatusEnum || (ChatStatusEnum = {}));
5786
+
5787
+ class ChatCollection extends Collection {
5788
+ /**
5789
+ * Sort chats by last messages (newest first) + empty chats in the end
5790
+ */
5791
+ getSortedByNewest(messages) {
5792
+ const chatsById = new Dictionary(this.toArray());
5793
+ // get chats array sorted from newest to oldest
5794
+ const chats = uniqBy(new MessageCollection(messages)
5795
+ .filterBy('chat.id', this.getIds())
5796
+ .sortBy('createdAt', true)
5797
+ .toArray()
5798
+ .map((message) => chatsById.get(message.chat.id)), 'id');
5799
+ const emptyChats = differenceBy(this.toArray(), chats, 'id');
5800
+ return this.create([...chats, ...emptyChats]);
5801
+ }
5802
+ getActive() {
5803
+ return this.filterBy('status', ChatStatusEnum.ACTIVE);
5804
+ }
5805
+ }
5806
+
5551
5807
  class ClientCollection extends Collection {
5552
5808
  }
5553
5809
 
@@ -6054,26 +6310,6 @@ class LoanCollection extends Collection {
6054
6310
  }
6055
6311
  }
6056
6312
 
6057
- class MessageCollection extends Collection {
6058
- getFirstUnreadMessage(user) {
6059
- return this.items.find((message) => {
6060
- return !message.isRead() && message.isFromEmployee() !== user.isEmployee();
6061
- });
6062
- }
6063
- /**
6064
- * Get List of unread chats
6065
- */
6066
- getUnread() {
6067
- return this.items.filter((message) => !message.readAt);
6068
- }
6069
- /**
6070
- * Check if chat has unread chats
6071
- */
6072
- hasUnread() {
6073
- return !!this.getUnread().length;
6074
- }
6075
- }
6076
-
6077
6313
  /**
6078
6314
  * Collection of MessageDocument instances
6079
6315
  */
@@ -6086,134 +6322,6 @@ class MessageDocumentCollection extends Collection {
6086
6322
  }
6087
6323
  }
6088
6324
 
6089
- class PropertyCollection extends Collection {
6090
- /**
6091
- * Get new property collection filtered by category id
6092
- * @param id id of category for filter
6093
- */
6094
- getByCategoryId(id) {
6095
- return new PropertyCollection(this.items.filter((property) => property.category.id === id));
6096
- }
6097
- /**
6098
- * Get new property collection filtered by active status
6099
- */
6100
- getActiveProperties() {
6101
- return new PropertyCollection(this.items.filter((property) => property.isActive));
6102
- }
6103
- getCreatedProperties() {
6104
- return new PropertyCollection(this.items.filter((property) => property.isOwn()));
6105
- }
6106
- /**
6107
- * Get new property collection filtered by shared
6108
- */
6109
- getSharedProperties() {
6110
- return new PropertyCollection(this.items.filter((property) => !property.isOwn()));
6111
- }
6112
- /**
6113
- * Properties that are taxed and will be included in reports (Tax summary, My tax report, e.t.c.)
6114
- */
6115
- getTaxInclusive() {
6116
- return this.create(this.items.filter((property) => property.category.isTaxInclusive));
6117
- }
6118
- getUnsold() {
6119
- return this.create(this.items.filter((property) => !property.isSold()));
6120
- }
6121
- /**
6122
- * Get total purchase price for all properties in the collection
6123
- */
6124
- get purchasePrice() {
6125
- return this.sumBy('purchasePrice');
6126
- }
6127
- get growthPercent() {
6128
- return this.sumBy('growthPercent');
6129
- }
6130
- get marketValue() {
6131
- return this.sumBy('marketValue');
6132
- }
6133
- get firstForecastYear() {
6134
- return this.items.reduce((min, property) => {
6135
- const current = property.firstForecastYear;
6136
- return min > current ? current : min;
6137
- }, new FinancialYear().year);
6138
- }
6139
- get marketValueGrowth() {
6140
- return (this.marketValue - this.purchasePrice) / this.purchasePrice;
6141
- }
6142
- /**
6143
- * list of properties
6144
- */
6145
- getCGTApplicable() {
6146
- return this.create(this.items.filter((property) => property.isCGTApplicable()));
6147
- }
6148
- getOwnerOccupiedProperties() {
6149
- return new PropertyCollection(this.items.filter((property) => property.category.isOwnerOccupied()));
6150
- }
6151
- get earliestContractDate() {
6152
- return this.items.reduce((min, property) => {
6153
- return min < property.contractDate ? min : property.contractDate;
6154
- }, new FinancialYear(new Date()).startDate);
6155
- }
6156
- /**
6157
- * Get list of unique property categories from collection
6158
- */
6159
- getCategories() {
6160
- return uniqBy(this.items.map((property) => property.category), 'id');
6161
- }
6162
- /**
6163
- * Get property with the highest growth percent
6164
- */
6165
- getBestPerformanceGrowthProperty() {
6166
- return this.items.reduce((max, current) => {
6167
- return max.growthPercent < current.growthPercent ? current : max;
6168
- }, this.first);
6169
- }
6170
- /**
6171
- * Get property with the lowest tax position
6172
- */
6173
- getBestPerformanceTaxProperty(transactions, depreciations) {
6174
- const transactionsByProperty = transactions.groupBy('property.id');
6175
- const depreciationsByProperty = depreciations.groupBy('property.id');
6176
- return this.items.reduce((min, current) => {
6177
- const minTaxPosition = min.getTaxPosition(transactionsByProperty.get(min.id), depreciationsByProperty.get(min.id));
6178
- const currentTaxPosition = current.getTaxPosition(transactionsByProperty.get(current.id), depreciationsByProperty.get(current.id));
6179
- return minTaxPosition > currentTaxPosition ? current : min;
6180
- }, this.first);
6181
- }
6182
- /**
6183
- * Show best performance properties first
6184
- * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677997/Property+Tank+Dashboard
6185
- */
6186
- sortByBestPerformance(transactions, depreciations) {
6187
- const activeProperties = this.getActiveProperties();
6188
- // nothing to sort when no active properties
6189
- if (!activeProperties.length) {
6190
- return this;
6191
- }
6192
- const bestProperties = uniqBy(this.create([
6193
- activeProperties.getBestPerformanceGrowthProperty(),
6194
- activeProperties.getBestPerformanceTaxProperty(transactions, depreciations)
6195
- ]).toArray(), 'id');
6196
- const newItems = this.remove(bestProperties).toArray();
6197
- newItems.unshift(...bestProperties);
6198
- return this.create(newItems);
6199
- }
6200
- }
6201
-
6202
- class PropertySaleCollection extends Collection {
6203
- get grossCGT() {
6204
- return this.create(this.items.filter((propertySale) => propertySale.grossCGT > 0)).sumBy('grossCGT');
6205
- }
6206
- /**
6207
- * Property sales are CGT applicable unless it has "Principle place of residence" exemption type
6208
- */
6209
- getCGTApplicable() {
6210
- return this.create(this.items.filter((propertySale) => propertySale.isCGTApplicable()));
6211
- }
6212
- getByPropertyShareIds(ids) {
6213
- return this.filterBy('share.id', ids);
6214
- }
6215
- }
6216
-
6217
6325
  /**
6218
6326
  * Enum with symbols based on depreciation LVP asset type
6219
6327
  */
@@ -6841,12 +6949,6 @@ var ChartAccountsTypeEnum;
6841
6949
  ChartAccountsTypeEnum[ChartAccountsTypeEnum["EXPENSE"] = 2] = "EXPENSE";
6842
6950
  })(ChartAccountsTypeEnum || (ChartAccountsTypeEnum = {}));
6843
6951
 
6844
- var ChatStatusEnum;
6845
- (function (ChatStatusEnum) {
6846
- ChatStatusEnum[ChatStatusEnum["ACTIVE"] = 1] = "ACTIVE";
6847
- ChatStatusEnum[ChatStatusEnum["INACTIVE"] = 2] = "INACTIVE";
6848
- })(ChatStatusEnum || (ChatStatusEnum = {}));
6849
-
6850
6952
  var ClientDetailsMedicareExemptionEnum;
6851
6953
  (function (ClientDetailsMedicareExemptionEnum) {
6852
6954
  ClientDetailsMedicareExemptionEnum[ClientDetailsMedicareExemptionEnum["NO"] = 0] = "NO";
@@ -7605,6 +7707,9 @@ __decorate([
7605
7707
  __decorate([
7606
7708
  Type(() => User)
7607
7709
  ], Message.prototype, "employee", void 0);
7710
+ __decorate([
7711
+ Type(() => Chat)
7712
+ ], Message.prototype, "chat", void 0);
7608
7713
  __decorate([
7609
7714
  Type(() => MessageDocument),
7610
7715
  Expose()
@@ -7811,39 +7916,6 @@ var AlphabetColorsEnum;
7811
7916
  AlphabetColorsEnum["Z"] = "#E3C9CE";
7812
7917
  })(AlphabetColorsEnum || (AlphabetColorsEnum = {}));
7813
7918
 
7814
- /**
7815
- * List of objects grouped by passed property
7816
- */
7817
- class Dictionary {
7818
- constructor(items, path = 'id') {
7819
- this.items = {};
7820
- if (!items.length) {
7821
- return;
7822
- }
7823
- // Do nothing if provided path was not found in the 1st item
7824
- if (!hasIn(items[0], path.split('.')[0])) {
7825
- return;
7826
- }
7827
- this.groupItems(items, path);
7828
- }
7829
- add(key, value) {
7830
- this.items[key] = value;
7831
- }
7832
- get(key) {
7833
- return this.items[key] !== undefined ? this.items[key] : null;
7834
- }
7835
- groupItems(items, path) {
7836
- items.forEach((item) => {
7837
- let key = get(item, path);
7838
- // if object does not have property for grouping it will be grouped as 'other'
7839
- if (key === undefined) {
7840
- key = 'other';
7841
- }
7842
- this.items[key] = item;
7843
- });
7844
- }
7845
- }
7846
-
7847
7919
  var DepreciationGroupEnum;
7848
7920
  (function (DepreciationGroupEnum) {
7849
7921
  DepreciationGroupEnum[DepreciationGroupEnum["BUILDING_IMPROVEMENTS"] = 0] = "BUILDING_IMPROVEMENTS";
@@ -14727,7 +14799,7 @@ class SoleBusinessForm extends AbstractForm {
14727
14799
  * We take the first forecast because income sources available only for new business, so we have only one forecast
14728
14800
  */
14729
14801
  get forecastFormGroup() {
14730
- if (!this.business.id) {
14802
+ if (this.business.id) {
14731
14803
  return null;
14732
14804
  }
14733
14805
  return this.get('incomeSource').get('soleForecasts').at(0);
@@ -14736,7 +14808,7 @@ class SoleBusinessForm extends AbstractForm {
14736
14808
  * We take the first loss because losses available only for new business, so we have only one loss
14737
14809
  */
14738
14810
  get lossFormGroup() {
14739
- if (!this.business.id) {
14811
+ if (this.business.id) {
14740
14812
  return null;
14741
14813
  }
14742
14814
  return this.get('losses').at(0);
@@ -14875,7 +14947,8 @@ class SoleInvoiceForm extends AbstractForm {
14875
14947
  items: new FormArray((invoice.items || [plainToClass(SoleInvoiceItem, {})]).map((item) => new SoleInvoiceItemForm(item))),
14876
14948
  payer: new FormControl(invoice.payer, Validators.required),
14877
14949
  taxType: new FormControl(invoice.taxType, Validators.required),
14878
- bankAccount: new FormControl(invoice.bankAccount, Validators.required)
14950
+ bankAccount: new FormControl(invoice.bankAccount, Validators.required),
14951
+ reference: new FormControl(invoice.reference)
14879
14952
  }, invoice);
14880
14953
  this.soleDetailsGST = soleDetailsGST;
14881
14954
  // we need invoice template only for new invoices
@@ -15942,5 +16015,5 @@ VehicleLogbookForm.maxDescriptionLength = 60;
15942
16015
  * Generated bundle index. Do not edit.
15943
16016
  */
15944
16017
 
15945
- 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, 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, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentService, PropertyEquityChartData, PropertyEquityChartItem, PropertyForecast, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetadata, 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 };
16018
+ 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 };
15946
16019
  //# sourceMappingURL=taxtank-core.js.map