taxtank-core 1.0.39 → 1.0.41

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 (40) hide show
  1. package/README.md +5 -5
  2. package/fesm2022/taxtank-core-common.mjs +1 -1
  3. package/fesm2022/taxtank-core-common.mjs.map +1 -1
  4. package/fesm2022/taxtank-core.mjs +386 -219
  5. package/fesm2022/taxtank-core.mjs.map +1 -1
  6. package/package.json +1 -1
  7. package/public-api.d.ts +2 -0
  8. package/src/lib/collections/account-setup-item.collection.d.ts +5 -1
  9. package/src/lib/collections/bank-account.collection.d.ts +1 -1
  10. package/src/lib/collections/subscription/service-subscription.collection.d.ts +6 -0
  11. package/src/lib/collections/tax-summary/tax-return-categories.const.d.ts +3 -0
  12. package/src/lib/db/Enums/index.d.ts +1 -0
  13. package/src/lib/db/Enums/setup-item-type.enum.d.ts +9 -2
  14. package/src/lib/db/Enums/tax-return/tax-return-category-list.enum.d.ts +4 -3
  15. package/src/lib/db/Enums/tax-summary-section.enum.d.ts +4 -3
  16. package/src/lib/db/Enums/youtube-videos.enum.d.ts +18 -0
  17. package/src/lib/db/Models/property/property.d.ts +1 -0
  18. package/src/lib/db/Models/setup-item.d.ts +4 -1
  19. package/src/lib/db/Models/sole/sole-business.d.ts +0 -1
  20. package/src/lib/forms/abstract.form.d.ts +3 -0
  21. package/src/lib/forms/transaction/holding/holding-expense.form.d.ts +8 -0
  22. package/src/lib/forms/transaction/index.d.ts +1 -0
  23. package/src/lib/models/account-setup/account-setup-item-status.enum.d.ts +5 -0
  24. package/src/lib/models/account-setup/account-setup-item.d.ts +5 -12
  25. package/src/lib/models/account-setup/account-setup-items.enum.d.ts +31 -11
  26. package/src/lib/models/account-setup/index.d.ts +3 -0
  27. package/src/lib/models/index.d.ts +1 -0
  28. package/src/lib/models/tax-summary/tax-summary.d.ts +5 -5
  29. package/src/lib/models/user/user.d.ts +2 -1
  30. package/src/lib/resolvers/business/business.resolver.d.ts +11 -0
  31. package/src/lib/resolvers/business/sole-details.resolver.d.ts +11 -0
  32. package/src/lib/resolvers/index.d.ts +2 -0
  33. package/src/lib/services/account-setup/account-setup.service.d.ts +33 -15
  34. package/src/lib/services/http/firm/firm.service.d.ts +0 -4
  35. package/src/lib/services/http/loan/borrowing-expense/borrowing-expense.service.d.ts +2 -1
  36. package/src/lib/services/http/rest/rest-old.service.d.ts +1 -0
  37. package/src/lib/services/http/rest/rest.service.d.ts +1 -0
  38. package/src/lib/services/http/setup-item/setup-item.service.d.ts +1 -1
  39. package/src/lib/services/http/subscription/service-subscription/subscription.service.d.ts +1 -0
  40. package/src/lib/services/http/user/user.service.d.ts +3 -2
@@ -4,8 +4,8 @@ import * as i1$1 from '@angular/common';
4
4
  import { formatDate, CommonModule, CurrencyPipe, DatePipe } from '@angular/common';
5
5
  import * as i1 from '@angular/common/http';
6
6
  import { HttpParams, HttpClient, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
7
- import { map, catchError, mergeMap, filter, first as first$1, finalize, startWith, debounceTime, distinctUntilChanged } from 'rxjs/operators';
8
- import { ReplaySubject, throwError, Subject, Observable, of, forkJoin, combineLatest, BehaviorSubject, from, merge as merge$1 } from 'rxjs';
7
+ import { map, catchError, mergeMap, filter, finalize, switchMap, first as first$1, startWith, debounceTime, distinctUntilChanged } from 'rxjs/operators';
8
+ import { ReplaySubject, throwError, Subject, Observable, shareReplay, of, forkJoin, combineLatest, BehaviorSubject, from, merge as merge$1 } from 'rxjs';
9
9
  import { plainToClass, Type, Transform, Exclude, Expose, classToPlain } from 'class-transformer';
10
10
  import 'reflect-metadata';
11
11
  import { __decorate } from 'tslib';
@@ -33,6 +33,8 @@ import merge from 'lodash/merge';
33
33
  import * as i4 from '@angular/router';
34
34
  import { NavigationEnd } from '@angular/router';
35
35
  import _ from 'lodash';
36
+ import remove from 'lodash/remove';
37
+ import pick from 'lodash/pick';
36
38
  import { checkAdBlock } from 'adblock-checker';
37
39
  import { jsPDF } from 'jspdf';
38
40
  import { applyPlugin } from 'jspdf-autotable';
@@ -494,6 +496,9 @@ let Property$1 = class Property extends ObservableModel {
494
496
  this.corelogicLastRequest = null;
495
497
  }
496
498
  static { this.className = 'Property'; }
499
+ get capitalCosts() {
500
+ return this.legalFees + this.otherCapitalCosts + this.stampDuty;
501
+ }
497
502
  };
498
503
  __decorate([
499
504
  Type(() => Number)
@@ -1308,13 +1313,10 @@ var TaxReturnCategoryListEnum;
1308
1313
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["DIVIDENDS"] = 6] = "DIVIDENDS";
1309
1314
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["SHARE_SCHEMES"] = 35] = "SHARE_SCHEMES";
1310
1315
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["GROSS_RENT"] = 8] = "GROSS_RENT";
1311
- TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["PARTNERSHIPS_TRUSTS"] = 13] = "PARTNERSHIPS_TRUSTS";
1312
1316
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["PARTNERSHIPS"] = 36] = "PARTNERSHIPS";
1313
1317
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["TRUSTS"] = 37] = "TRUSTS";
1314
1318
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["PSI_SBE_INCOME"] = 14] = "PSI_SBE_INCOME";
1315
- TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["SOLE_TRADER_BUSINESS_INCOME"] = 38] = "SOLE_TRADER_BUSINESS_INCOME";
1316
1319
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["CAPITAL_GAINS"] = 15] = "CAPITAL_GAINS";
1317
- TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["FOREIGN_SOURCE_INCOME"] = 16] = "FOREIGN_SOURCE_INCOME";
1318
1320
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["BONUSES_FROM_LIFE_INSURANCE"] = 17] = "BONUSES_FROM_LIFE_INSURANCE";
1319
1321
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["FORESTRY_MANAGED_INVESTMENT_SCHEMES"] = 39] = "FORESTRY_MANAGED_INVESTMENT_SCHEMES";
1320
1322
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["OTHER_INCOME"] = 40] = "OTHER_INCOME";
@@ -1341,6 +1343,7 @@ var TaxReturnCategoryListEnum;
1341
1343
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["DEPRECIATION_EXPENSES"] = 56] = "DEPRECIATION_EXPENSES";
1342
1344
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["MOTOR_VEHICLE_EXPENSES"] = 57] = "MOTOR_VEHICLE_EXPENSES";
1343
1345
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["ALL_OTHER_EXPENSES"] = 58] = "ALL_OTHER_EXPENSES";
1346
+ TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["WORK_RELATED_DEPRECIATION"] = 69] = "WORK_RELATED_DEPRECIATION";
1344
1347
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["GROSS_TAX_PAYABLE"] = 19] = "GROSS_TAX_PAYABLE";
1345
1348
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["TAX_ON_TAXABLE_INCOME"] = 20] = "TAX_ON_TAXABLE_INCOME";
1346
1349
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["MEDICARE"] = 21] = "MEDICARE";
@@ -1356,6 +1359,9 @@ var TaxReturnCategoryListEnum;
1356
1359
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["TAX_PAYABLE"] = 28] = "TAX_PAYABLE";
1357
1360
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["BUSINESS_INCOME_OR_LOSS"] = 59] = "BUSINESS_INCOME_OR_LOSS";
1358
1361
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["DEFERRED_BUSINESS_LOSSES"] = 60] = "DEFERRED_BUSINESS_LOSSES";
1362
+ TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["TAX_OFFSET_LOW"] = 61] = "TAX_OFFSET_LOW";
1363
+ TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["tAX_OFFSET_MIDDLE"] = 62] = "tAX_OFFSET_MIDDLE";
1364
+ TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["TAX_OFFSET_SOLE"] = 63] = "TAX_OFFSET_SOLE";
1359
1365
  TaxReturnCategoryListEnum[TaxReturnCategoryListEnum["DEFERRED_BUSINESS_LOSSES_FROM_PRIOR_YEAR"] = 64] = "DEFERRED_BUSINESS_LOSSES_FROM_PRIOR_YEAR";
1360
1366
  })(TaxReturnCategoryListEnum || (TaxReturnCategoryListEnum = {}));
1361
1367
 
@@ -1454,6 +1460,19 @@ var HomeOfficeClaimMethodEnum;
1454
1460
  HomeOfficeClaimMethodEnum[HomeOfficeClaimMethodEnum["OCCUPANCY"] = 3] = "OCCUPANCY";
1455
1461
  })(HomeOfficeClaimMethodEnum || (HomeOfficeClaimMethodEnum = {}));
1456
1462
 
1463
+ var SetupItemTypeEnum;
1464
+ (function (SetupItemTypeEnum) {
1465
+ SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 0] = "EMPLOYEE";
1466
+ SetupItemTypeEnum[SetupItemTypeEnum["WORK"] = 1] = "WORK";
1467
+ SetupItemTypeEnum[SetupItemTypeEnum["PROPERTIES"] = 2] = "PROPERTIES";
1468
+ SetupItemTypeEnum[SetupItemTypeEnum["PROPERTY"] = 3] = "PROPERTY";
1469
+ SetupItemTypeEnum[SetupItemTypeEnum["BUSINESSES"] = 4] = "BUSINESSES";
1470
+ SetupItemTypeEnum[SetupItemTypeEnum["HOLDING"] = 5] = "HOLDING";
1471
+ SetupItemTypeEnum[SetupItemTypeEnum["BANK_ACCOUNTS"] = 6] = "BANK_ACCOUNTS";
1472
+ SetupItemTypeEnum[SetupItemTypeEnum["BANK_ACCOUNT"] = 7] = "BANK_ACCOUNT";
1473
+ SetupItemTypeEnum[SetupItemTypeEnum["BUSINESS"] = 8] = "BUSINESS";
1474
+ })(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
1475
+
1457
1476
  /**
1458
1477
  * @TODO not used for now
1459
1478
  * Bank subclass, average bank response time for some operations in milliseconds
@@ -5367,61 +5386,74 @@ __decorate([
5367
5386
  class SetupItem extends AbstractModel {
5368
5387
  }
5369
5388
 
5370
- /**
5371
- * Enum list of all possible account setup items ids. Using with [ACCOUNT_SETUP_ITEMS]{@link ACCOUNT_SETUP_ITEMS}
5372
- * @TODO Vik/Nikita: Do we need to generate it from backend? If some ids changed?
5373
- */
5374
- var AccountSetupItemsEnum;
5375
- (function (AccountSetupItemsEnum) {
5376
- AccountSetupItemsEnum[AccountSetupItemsEnum["SALARY"] = 1] = "SALARY";
5377
- AccountSetupItemsEnum[AccountSetupItemsEnum["OTHER_INCOME"] = 2] = "OTHER_INCOME";
5378
- AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY"] = 3] = "PROPERTY";
5379
- AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_FEEDS"] = 4] = "BANK_FEEDS";
5380
- AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_LOGBOOK"] = 5] = "WORK_LOGBOOK";
5381
- AccountSetupItemsEnum[AccountSetupItemsEnum["TRANSACTION_ALLOCATE"] = 6] = "TRANSACTION_ALLOCATE";
5382
- AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESS"] = 7] = "SOLE_BUSINESS";
5383
- AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDINGS"] = 8] = "HOLDINGS";
5384
- AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_DETAILS"] = 9] = "FIRM_DETAILS";
5385
- AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_TEAM"] = 10] = "INVITE_TEAM";
5386
- AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_CLIENTS"] = 11] = "INVITE_CLIENTS";
5387
- })(AccountSetupItemsEnum || (AccountSetupItemsEnum = {}));
5389
+ var AccountSetupItemStatusEnum;
5390
+ (function (AccountSetupItemStatusEnum) {
5391
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["PENDING"] = 1] = "PENDING";
5392
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["ACHIEVED"] = 2] = "ACHIEVED";
5393
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["SKIPPED"] = 3] = "SKIPPED";
5394
+ })(AccountSetupItemStatusEnum || (AccountSetupItemStatusEnum = {}));
5388
5395
 
5389
5396
  class AccountSetupItem extends SetupItem {
5390
- get isSalary() {
5391
- return this.id === AccountSetupItemsEnum.SALARY;
5392
- }
5393
- get isOtherIncome() {
5394
- return this.id === AccountSetupItemsEnum.OTHER_INCOME;
5395
- }
5396
- get isProperty() {
5397
- return this.id === AccountSetupItemsEnum.PROPERTY;
5398
- }
5399
- get isBankFeeds() {
5400
- return this.id === AccountSetupItemsEnum.BANK_FEEDS;
5397
+ get isPending() {
5398
+ return this.status === AccountSetupItemStatusEnum.PENDING;
5401
5399
  }
5402
- get isWorkLogbook() {
5403
- return this.id === AccountSetupItemsEnum.WORK_LOGBOOK;
5400
+ get isAchieved() {
5401
+ return this.status === AccountSetupItemStatusEnum.SKIPPED;
5404
5402
  }
5405
- get isTransactionAllocate() {
5406
- return this.id === AccountSetupItemsEnum.TRANSACTION_ALLOCATE;
5403
+ get isCompleted() {
5404
+ return [AccountSetupItemStatusEnum.ACHIEVED, AccountSetupItemStatusEnum.SKIPPED].includes(this.status);
5407
5405
  }
5408
- get isSoleBusiness() {
5409
- return this.id === AccountSetupItemsEnum.SOLE_BUSINESS;
5410
- }
5411
- get isHoldings() {
5412
- return this.id === AccountSetupItemsEnum.HOLDINGS;
5413
- }
5414
- get isFirmDetails() {
5415
- return this.id === AccountSetupItemsEnum.FIRM_DETAILS;
5416
- }
5417
- get isInviteTeam() {
5418
- return this.id === AccountSetupItemsEnum.INVITE_TEAM;
5419
- }
5420
- get isInviteClients() {
5421
- return this.id === AccountSetupItemsEnum.INVITE_CLIENTS;
5406
+ get isSkipped() {
5407
+ return this.status === AccountSetupItemStatusEnum.SKIPPED;
5422
5408
  }
5423
5409
  }
5424
5410
 
5411
+ /**
5412
+ * TODO remove
5413
+ */
5414
+ var AccountSetupItemsEnum;
5415
+ (function (AccountSetupItemsEnum) {
5416
+ // firm
5417
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_DETAILS"] = 9] = "FIRM_DETAILS";
5418
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_EMPLOYEES"] = 10] = "FIRM_EMPLOYEES";
5419
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_CLIENTS"] = 11] = "FIRM_CLIENTS";
5420
+ // work
5421
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_SALARY"] = 1] = "WORK_SALARY";
5422
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_OTHER_INCOME"] = 2] = "WORK_OTHER_INCOME";
5423
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_VEHICLE_CLAIM"] = 5] = "WORK_VEHICLE_CLAIM";
5424
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_HOME_OFFICE"] = 13] = "WORK_HOME_OFFICE";
5425
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_BANK_ACCOUNT"] = 14] = "WORK_BANK_ACCOUNT";
5426
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_DEPRECIATION"] = 15] = "WORK_DEPRECIATION";
5427
+ // properties
5428
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY"] = 3] = "PROPERTY";
5429
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTIES"] = 29] = "PROPERTIES";
5430
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTIES_BANK_ACCOUNT"] = 30] = "PROPERTIES_BANK_ACCOUNT";
5431
+ // property
5432
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_CAPITAL_COST"] = 17] = "PROPERTY_CAPITAL_COST";
5433
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_RENT_INCOME"] = 18] = "PROPERTY_RENT_INCOME";
5434
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_DEPRECIATION"] = 19] = "PROPERTY_DEPRECIATION";
5435
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_CO_OWNER"] = 20] = "PROPERTY_CO_OWNER";
5436
+ // sole
5437
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESS"] = 7] = "SOLE_BUSINESS";
5438
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESSES"] = 33] = "SOLE_BUSINESSES";
5439
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_VEHICLE_CLAIM"] = 12] = "SOLE_VEHICLE_CLAIM";
5440
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_HOME_OFFICE"] = 21] = "SOLE_HOME_OFFICE";
5441
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_DEPRECIATION"] = 22] = "SOLE_DEPRECIATION";
5442
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BANK_ACCOUNT"] = 23] = "SOLE_BANK_ACCOUNT";
5443
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_LOGO"] = 16] = "SOLE_LOGO";
5444
+ // holding
5445
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_TRADE"] = 8] = "HOLDING_TRADE";
5446
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_INTEGRATION"] = 25] = "HOLDING_INTEGRATION";
5447
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_REPORTS"] = 36] = "HOLDING_REPORTS";
5448
+ // bank accounts
5449
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_CONNECTION"] = 4] = "BANK_CONNECTION";
5450
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_ACCOUNT"] = 26] = "BANK_ACCOUNT";
5451
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_TRANSACTION"] = 24] = "BANK_TRANSACTION";
5452
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_ALLOCATION"] = 6] = "BANK_ALLOCATION";
5453
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_RULE"] = 27] = "BANK_RULE";
5454
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_BORROWING_EXPENSE"] = 28] = "BANK_BORROWING_EXPENSE";
5455
+ })(AccountSetupItemsEnum || (AccountSetupItemsEnum = {}));
5456
+
5425
5457
  class User extends User$1 {
5426
5458
  constructor() {
5427
5459
  super(...arguments);
@@ -5455,6 +5487,9 @@ class User extends User$1 {
5455
5487
  return '';
5456
5488
  }
5457
5489
  }
5490
+ addRoles(roles = []) {
5491
+ this.roles = [...new Set([...this.roles, ...roles])];
5492
+ }
5458
5493
  /**
5459
5494
  * search roles including hierarchy
5460
5495
  */
@@ -7480,9 +7515,11 @@ var TaxSummarySectionEnum;
7480
7515
  (function (TaxSummarySectionEnum) {
7481
7516
  TaxSummarySectionEnum[TaxSummarySectionEnum["WORK_TANK"] = 1] = "WORK_TANK";
7482
7517
  TaxSummarySectionEnum[TaxSummarySectionEnum["PROPERTY_TANK"] = 2] = "PROPERTY_TANK";
7483
- TaxSummarySectionEnum[TaxSummarySectionEnum["OTHER_TANK"] = 3] = "OTHER_TANK";
7484
- TaxSummarySectionEnum[TaxSummarySectionEnum["SOLE_TANK"] = 4] = "SOLE_TANK";
7485
- TaxSummarySectionEnum[TaxSummarySectionEnum["SUMMARY"] = 5] = "SUMMARY";
7518
+ TaxSummarySectionEnum[TaxSummarySectionEnum["HOLDINGS_TANK"] = 3] = "HOLDINGS_TANK";
7519
+ // @TODO vik show it somewhere (it used to be in otherTank)
7520
+ TaxSummarySectionEnum[TaxSummarySectionEnum["CAPITAL_GAINS"] = 4] = "CAPITAL_GAINS";
7521
+ TaxSummarySectionEnum[TaxSummarySectionEnum["SOLE_TANK"] = 5] = "SOLE_TANK";
7522
+ TaxSummarySectionEnum[TaxSummarySectionEnum["SUMMARY"] = 6] = "SUMMARY";
7486
7523
  })(TaxSummarySectionEnum || (TaxSummarySectionEnum = {}));
7487
7524
 
7488
7525
  /**
@@ -8538,6 +8575,24 @@ class ServiceSubscriptionCollection extends Collection {
8538
8575
  getPaid() {
8539
8576
  return this.filter((subscription) => !!subscription.stripeId);
8540
8577
  }
8578
+ getRoles() {
8579
+ const roles = this.items.flatMap((subscription) => subscription.roles);
8580
+ if (this.getActive().length) {
8581
+ roles.push(UserRolesEnum.SUBSCRIPTION);
8582
+ }
8583
+ return roles;
8584
+ }
8585
+ /**
8586
+ * search roles including hierarchy
8587
+ */
8588
+ hasRoles(roles) {
8589
+ roles = roles instanceof Array ? roles : [roles];
8590
+ if (!roles.length) {
8591
+ return true;
8592
+ }
8593
+ roles = flatten(roles.map((role) => USER_ROLES[role]));
8594
+ return !!intersection(this.getRoles(), roles).length;
8595
+ }
8541
8596
  getActivePaid() {
8542
8597
  return this.getActive().find((subscription) => !!subscription.stripeId);
8543
8598
  }
@@ -8564,6 +8619,9 @@ class ServiceSubscriptionCollection extends Collection {
8564
8619
  filterByRole(role) {
8565
8620
  return this.filter((subscription) => subscription.roles.includes(role));
8566
8621
  }
8622
+ findByRole(role) {
8623
+ return this.filterByRole(role).first;
8624
+ }
8567
8625
  hasPropertyTank() {
8568
8626
  return !!this.getItems().propertiesItem;
8569
8627
  }
@@ -8668,6 +8726,9 @@ class ReportItemCollection extends Collection {
8668
8726
  }
8669
8727
  }
8670
8728
 
8729
+ /**
8730
+ * @TODO vik check (tax_return_category/tax_return_item/chart_accounts)
8731
+ */
8671
8732
  const TAX_RETURN_CATEGORIES = {
8672
8733
  work: {
8673
8734
  income: [
@@ -8707,17 +8768,17 @@ const TAX_RETURN_CATEGORIES = {
8707
8768
  TaxReturnCategoryListEnum.PLANT_AND_EQUIPMENT
8708
8769
  ]
8709
8770
  },
8710
- other: {
8771
+ holdings: {
8711
8772
  income: [
8712
8773
  TaxReturnCategoryListEnum.GROSS_INTEREST,
8713
8774
  TaxReturnCategoryListEnum.SHARE_SCHEMES,
8714
8775
  TaxReturnCategoryListEnum.PARTNERSHIPS,
8715
- TaxReturnCategoryListEnum.PARTNERSHIPS_TRUSTS,
8716
8776
  TaxReturnCategoryListEnum.TRUSTS,
8717
8777
  TaxReturnCategoryListEnum.PSI_SBE_INCOME,
8718
- TaxReturnCategoryListEnum.SOLE_TRADER_BUSINESS_INCOME,
8778
+ // @TODO these categories not used anymore, maybe there are replacements (ask Nik)
8779
+ // TaxReturnCategoryListEnum.SOLE_TRADER_BUSINESS_INCOME,
8780
+ // TaxReturnCategoryListEnum.FOREIGN_SOURCE_INCOME,
8719
8781
  TaxReturnCategoryListEnum.CAPITAL_GAINS,
8720
- TaxReturnCategoryListEnum.FOREIGN_SOURCE_INCOME,
8721
8782
  TaxReturnCategoryListEnum.BONUSES_FROM_LIFE_INSURANCE,
8722
8783
  TaxReturnCategoryListEnum.FORESTRY_MANAGED_INVESTMENT_SCHEMES,
8723
8784
  TaxReturnCategoryListEnum.OTHER_INCOME
@@ -8969,11 +9030,25 @@ class AllocationRuleCollection extends Collection {
8969
9030
  class AccountSetupItemCollection extends Collection {
8970
9031
  constructor(items) {
8971
9032
  super(compact(items));
8972
- this.sortBy('isCompleted', 'asc');
9033
+ this.sortBy('status', 'asc');
8973
9034
  }
8974
9035
  isCompleted() {
8975
9036
  return this.filterBy('isCompleted', true).length === this.length;
8976
9037
  }
9038
+ getByUser(user) {
9039
+ return this.filter(item => user.hasRoles(item.roles));
9040
+ }
9041
+ getScore() {
9042
+ return this.sumBy('score');
9043
+ }
9044
+ setUrlId(id) {
9045
+ this.items.forEach(item => {
9046
+ if (!item.url.includes(':id')) {
9047
+ return;
9048
+ }
9049
+ item.url = item.url.replace(':id', id);
9050
+ });
9051
+ }
8977
9052
  }
8978
9053
 
8979
9054
  /**
@@ -9033,7 +9108,7 @@ class BankAccountCollection extends Collection {
9033
9108
  * Get Collection of bank accounts by tank type
9034
9109
  */
9035
9110
  getByTankType(tankType) {
9036
- return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.tankType === tankType));
9111
+ return new BankAccountCollection(tankType ? this.items.filter((bankAccount) => bankAccount.tankType === tankType) : this.items);
9037
9112
  }
9038
9113
  /**
9039
9114
  * Get list of all bank account properties
@@ -11560,8 +11635,9 @@ let RestService$1 = class RestService extends DataService {
11560
11635
  * Refresh cache with actual backend data
11561
11636
  */
11562
11637
  refreshCache() {
11638
+ // todo why not fetch?
11563
11639
  this.cache = undefined;
11564
- this.get();
11640
+ this.get().subscribe();
11565
11641
  }
11566
11642
  /**
11567
11643
  * perform a shallow copy of the emitted data to make it immutable
@@ -11573,17 +11649,17 @@ let RestService$1 = class RestService extends DataService {
11573
11649
  * Get data from backend and fill the cache
11574
11650
  */
11575
11651
  fetch(path = this.apiUrl, cache = true, queryParams = {}) {
11576
- if (cache) {
11577
- // Set cache as empty collection to avoid multiple requests before cache filled
11578
- this.setCache([]);
11652
+ if (this.inFlight$ && cache) {
11653
+ return this.inFlight$;
11579
11654
  }
11580
- return this.http.get(path, queryParams)
11655
+ this.inFlight$ = this.http.get(path, queryParams)
11581
11656
  .pipe(map((response) => Array.isArray(response) ? response : toArray(response)), map((response) => {
11582
11657
  if (cache) {
11583
11658
  this.setCache(response, true);
11584
11659
  }
11585
11660
  return this.createCollectionInstance(this.collectionClass, response);
11586
- }), catchError((error) => this.handleError(error)));
11661
+ }), catchError((error) => this.handleError(error)), finalize(() => this.inFlight$ = null), shareReplay({ bufferSize: 1, refCount: true }));
11662
+ return this.inFlight$;
11587
11663
  }
11588
11664
  fetchFirst(queryParams = {}) {
11589
11665
  return this.fetch(this.apiUrl, false, { params: queryParams })
@@ -11592,10 +11668,11 @@ let RestService$1 = class RestService extends DataService {
11592
11668
  get(path = this.apiUrl) {
11593
11669
  this.handleAccessError('get');
11594
11670
  if (!this.hasRoles()) {
11671
+ // @TODO it completes observable and doesn't watch anymore
11595
11672
  return of(this.createCollectionInstance(this.collectionClass, []));
11596
11673
  }
11597
11674
  if (!this.cache) {
11598
- this.fetch(path).pipe(first$1()).subscribe();
11675
+ return this.fetch(path).pipe(switchMap(() => this.getCacheSubjectObservable()));
11599
11676
  }
11600
11677
  return this.getCacheSubjectObservable();
11601
11678
  }
@@ -13390,22 +13467,17 @@ class FirmService {
13390
13467
  this.environment = environment;
13391
13468
  this.firmSubject = new ReplaySubject(1);
13392
13469
  }
13393
- /**
13394
- * Register new firm
13395
- * @param data: firm and firm owner data to register
13396
- */
13397
13470
  register(data) {
13398
13471
  return this.http.post(`${this.environment.apiV2}/firms/registration`, data)
13399
13472
  .pipe(map((firm) => plainToClass(Firm, firm)));
13400
13473
  }
13401
13474
  get() {
13402
13475
  if (!this.firm) {
13403
- this.http.get(`${this.environment.apiV2}/firms/current`)
13404
- .pipe(map((firm) => plainToClass(Firm, firm)))
13405
- .subscribe((firm) => {
13406
- this.firm = firm;
13476
+ return this.http.get(`${this.environment.apiV2}/firms/current`).pipe(map((firm) => {
13477
+ this.firm = plainToClass(Firm, firm);
13407
13478
  this.firmSubject.next(this.firm);
13408
- });
13479
+ return this.firm;
13480
+ }), switchMap(() => this.firmSubject.asObservable()));
13409
13481
  }
13410
13482
  return this.firmSubject.asObservable();
13411
13483
  }
@@ -13490,24 +13562,25 @@ class RestService {
13490
13562
  * get list of base class instances directly from backend
13491
13563
  */
13492
13564
  fetch(path = this.apiUrl, cache = true, params = {}) {
13493
- if (cache) {
13494
- this.setCache([]);
13565
+ if (this.inFlight$ && cache) {
13566
+ return this.inFlight$;
13495
13567
  }
13496
- return this.http.get(path, { params: params })
13568
+ this.inFlight$ = this.http.get(path, { params: params })
13497
13569
  .pipe(map((response) => {
13498
13570
  const items = response.map((item) => this.createModelInstance(item));
13499
13571
  if (cache) {
13500
13572
  this.setCache(items, true);
13501
13573
  }
13502
13574
  return items;
13503
- }));
13575
+ }), finalize(() => this.inFlight$ = null), shareReplay({ bufferSize: 1, refCount: true }));
13576
+ return this.inFlight$;
13504
13577
  }
13505
13578
  /**
13506
13579
  * get cached list of all instances
13507
13580
  */
13508
13581
  get(path = this.apiUrl) {
13509
13582
  if (!this.cache) {
13510
- this.fetch(path).pipe(first$1()).subscribe();
13583
+ return this.fetch(path).pipe(first$1(), switchMap(() => this.getCacheSubjectObservable()));
13511
13584
  }
13512
13585
  return this.getCacheSubjectObservable();
13513
13586
  }
@@ -13656,7 +13729,7 @@ class RestService {
13656
13729
  */
13657
13730
  refreshCache() {
13658
13731
  this.setCache(undefined);
13659
- this.get();
13732
+ this.get().subscribe();
13660
13733
  }
13661
13734
  setCache(data, next = false) {
13662
13735
  this.cache = data;
@@ -15128,6 +15201,10 @@ class SubscriptionService extends RestService$1 {
15128
15201
  params: { code }
15129
15202
  }).pipe(map((response) => plainToClass(ServicePromoCode, response)));
15130
15203
  }
15204
+ setCache(data, next = false) {
15205
+ super.setCache(data, next);
15206
+ localStorage.setItem('roles', JSON.stringify(this.cache.getRoles()));
15207
+ }
15131
15208
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
15132
15209
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SubscriptionService, providedIn: 'root' }); }
15133
15210
  }
@@ -15466,7 +15543,7 @@ __decorate([
15466
15543
  return 'taxSummaryWorkTank';
15467
15544
  case TaxSummarySectionEnum.PROPERTY_TANK:
15468
15545
  return 'taxSummaryPropertyTank';
15469
- case TaxSummarySectionEnum.OTHER_TANK:
15546
+ case TaxSummarySectionEnum.HOLDINGS_TANK:
15470
15547
  return 'taxSummaryOtherIncome';
15471
15548
  case TaxSummarySectionEnum.SOLE_TANK:
15472
15549
  return 'taxSummarySoleTank';
@@ -15482,7 +15559,7 @@ __decorate([
15482
15559
  */
15483
15560
  class TaxSummary {
15484
15561
  get sections() {
15485
- return [this.work, this.property, this.other, this.sole, this.summary];
15562
+ return [this.work, this.property, this.holdings, this.sole, this.summary];
15486
15563
  }
15487
15564
  getReportItems(sections) {
15488
15565
  return new ReportItemCollection([].concat(...sections.map((section) => section.items.toArray())));
@@ -15503,26 +15580,26 @@ class TaxSummary {
15503
15580
  return this.workNetTotal - Math.abs(taxWithheld);
15504
15581
  }
15505
15582
  get income() {
15506
- return this.getReportItems([this.work, this.property, this.sole, this.other]).sumByCategories([
15583
+ return this.getReportItems([this.work, this.property, this.sole, this.holdings]).sumByCategories([
15507
15584
  ...TAX_RETURN_CATEGORIES.work.income,
15508
15585
  ...TAX_RETURN_CATEGORIES.property.income,
15509
15586
  ...TAX_RETURN_CATEGORIES.sole.income,
15510
- ...TAX_RETURN_CATEGORIES.other.income,
15587
+ ...TAX_RETURN_CATEGORIES.holdings.income,
15511
15588
  ]);
15512
15589
  }
15513
15590
  get expense() {
15514
- return this.getReportItems([this.work, this.property, this.sole, this.other]).sumByCategories([
15591
+ return this.getReportItems([this.work, this.property, this.sole, this.holdings]).sumByCategories([
15515
15592
  ...TAX_RETURN_CATEGORIES.work.expenses,
15516
15593
  ...TAX_RETURN_CATEGORIES.property.expenses,
15517
15594
  ...TAX_RETURN_CATEGORIES.sole.expenses,
15518
- ...TAX_RETURN_CATEGORIES.other.expenses,
15595
+ ...TAX_RETURN_CATEGORIES.holdings.expenses,
15519
15596
  ]);
15520
15597
  }
15521
15598
  get netCash() {
15522
- return this.workNetCash + this.propertyNetCash + this.soleNetCash + this.otherNetCash;
15599
+ return this.workNetCash + this.propertyNetCash + this.soleNetCash + this.holdingsNetCash;
15523
15600
  }
15524
15601
  get netTotal() {
15525
- return this.workNetTotal + this.propertyNetTotal + this.soleNetTotal + this.otherNetTotal;
15602
+ return this.workNetTotal + this.propertyNetTotal + this.soleNetTotal + this.holdingsNetTotal;
15526
15603
  }
15527
15604
  /**
15528
15605
  * Work Net Total = Income - expenses - interest
@@ -15554,26 +15631,26 @@ class TaxSummary {
15554
15631
  return this.propertyNetCash - Math.abs(depreciation) - Math.abs(borrowingExpenses);
15555
15632
  }
15556
15633
  /**
15557
- * Other Net Cash = gross income – expenses – tax withheld - tax instalments
15634
+ * Holdings Net Cash = gross income – expenses – tax withheld - tax instalments
15558
15635
  * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677990/Dashboard+Main
15559
15636
  */
15560
- get otherNetCash() {
15561
- const income = this.other.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.other.income, TaxSummarySectionEnum.OTHER_TANK);
15562
- const expenses = this.other.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.other.expenses, TaxSummarySectionEnum.OTHER_TANK);
15563
- const taxWithheld = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.TAX_WITHHELD], TaxSummarySectionEnum.OTHER_TANK);
15564
- const taxInstalments = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.TAX_INSTALMENTS], TaxSummarySectionEnum.OTHER_TANK);
15637
+ get holdingsNetCash() {
15638
+ const income = this.holdings.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.holdings.income, TaxSummarySectionEnum.HOLDINGS_TANK);
15639
+ const expenses = this.holdings.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.holdings.expenses, TaxSummarySectionEnum.HOLDINGS_TANK);
15640
+ const taxWithheld = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.TAX_WITHHELD], TaxSummarySectionEnum.HOLDINGS_TANK);
15641
+ const taxInstalments = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.TAX_INSTALMENTS], TaxSummarySectionEnum.HOLDINGS_TANK);
15565
15642
  return income - Math.abs(expenses) - Math.abs(taxWithheld) - Math.abs(taxInstalments);
15566
15643
  }
15567
15644
  /**
15568
- * Other Net Total = Gross income - expenses + tax offsets + tax instalments + franking credits
15645
+ * Holding Net Total = Gross income - expenses + tax offsets + tax instalments + franking credits
15569
15646
  * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/217677990/Dashboard+Main
15570
15647
  */
15571
- get otherNetTotal() {
15572
- const income = this.other.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.other.income, TaxSummarySectionEnum.OTHER_TANK);
15573
- const expenses = this.other.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.other.expenses, TaxSummarySectionEnum.OTHER_TANK);
15648
+ get holdingsNetTotal() {
15649
+ const income = this.holdings.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.holdings.income, TaxSummarySectionEnum.HOLDINGS_TANK);
15650
+ const expenses = this.holdings.items.sumByCategoriesAndSection(TAX_RETURN_CATEGORIES.holdings.expenses, TaxSummarySectionEnum.HOLDINGS_TANK);
15574
15651
  const taxOffsets = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.TAX_OFFSETS], TaxSummarySectionEnum.SUMMARY);
15575
- const taxInstallments = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.TAX_INSTALMENTS], TaxSummarySectionEnum.OTHER_TANK);
15576
- const frankingCredits = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.FRANKING_CREDITS], TaxSummarySectionEnum.OTHER_TANK);
15652
+ const taxInstallments = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.TAX_INSTALMENTS], TaxSummarySectionEnum.HOLDINGS_TANK);
15653
+ const frankingCredits = this.summary.items.sumByCategoriesAndSection([TaxReturnCategoryListEnum.FRANKING_CREDITS], TaxSummarySectionEnum.HOLDINGS_TANK);
15577
15654
  return income - Math.abs(expenses) + Math.abs(taxOffsets) + Math.abs(taxInstallments) + Math.abs(frankingCredits);
15578
15655
  }
15579
15656
  /**
@@ -15615,7 +15692,7 @@ __decorate([
15615
15692
  ], TaxSummary.prototype, "property", void 0);
15616
15693
  __decorate([
15617
15694
  Type(() => TaxSummarySection)
15618
- ], TaxSummary.prototype, "other", void 0);
15695
+ ], TaxSummary.prototype, "holdings", void 0);
15619
15696
  __decorate([
15620
15697
  Type(() => TaxSummarySection)
15621
15698
  ], TaxSummary.prototype, "sole", void 0);
@@ -16533,11 +16610,10 @@ class UserService extends RestService$1 {
16533
16610
  }
16534
16611
  fetch() {
16535
16612
  return super.fetch(`${this.apiUrl}/current`).pipe(map((users) => {
16613
+ const user = this.getCacheFirst();
16536
16614
  // @TODO vik use separated service to handle global user storage
16537
- localStorage.setItem('userId', this.getCacheFirst().id.toString());
16538
- localStorage.setItem('financialYear', this.getCacheFirst().financialYear.toString());
16539
- localStorage.setItem('roles', JSON.stringify(this.getCacheFirst().roles));
16540
- // localStorage.setItem('timeZone', this.getCacheFirst().clientDetails?.timezone);
16615
+ localStorage.setItem('userId', user.id.toString());
16616
+ localStorage.setItem('financialYear', user.financialYear.toString());
16541
16617
  return users;
16542
16618
  }));
16543
16619
  }
@@ -16576,7 +16652,7 @@ class UserService extends RestService$1 {
16576
16652
  }
16577
16653
  deactivate(user) {
16578
16654
  return this.put(user, `${this.apiUrl}/${user.id}/delete`).pipe(map((user) => {
16579
- localStorage.clear();
16655
+ // localStorage.removeItem('userId');
16580
16656
  location.replace('/login');
16581
16657
  return user;
16582
16658
  }));
@@ -16598,15 +16674,20 @@ class UserService extends RestService$1 {
16598
16674
  user.blacklistSetupItems.push(item);
16599
16675
  return this.put(user);
16600
16676
  }
16677
+ restoreSetupItem(item) {
16678
+ const user = clone(this.getCacheFirst());
16679
+ remove(user.blacklistSetupItems, (i) => i.id === item.id);
16680
+ return this.put(user);
16681
+ }
16601
16682
  /**
16683
+ * @TODO stop using user for roles
16602
16684
  * Update cache when user's service subscription is updated
16603
16685
  */
16604
16686
  listenServiceSubscriptionUpdated() {
16605
- this.listenCSE(ServiceSubscription, (response) => {
16606
- // @TODO vik test and remove
16607
- setTimeout(() => {
16608
- this.refreshCache();
16609
- }, 2000);
16687
+ this.listenCSE(ServiceSubscription, (subscriptions) => {
16688
+ const user = this.getCacheFirst();
16689
+ user.addRoles(new ServiceSubscriptionCollection(subscriptions).getRoles());
16690
+ this.setCache([user], true);
16610
16691
  }, ['post', 'put']);
16611
16692
  }
16612
16693
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: UserService, deps: [{ token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -19231,12 +19312,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19231
19312
  }]
19232
19313
  }], ctorParameters: () => [] });
19233
19314
 
19234
- var SetupItemTypeEnum;
19235
- (function (SetupItemTypeEnum) {
19236
- SetupItemTypeEnum[SetupItemTypeEnum["CLIENT"] = 1] = "CLIENT";
19237
- SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 2] = "EMPLOYEE";
19238
- })(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
19239
-
19240
19315
  class SetupItemService extends RestService$1 {
19241
19316
  constructor() {
19242
19317
  super(...arguments);
@@ -19260,15 +19335,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19260
19335
  * Checks required steps and their completion
19261
19336
  */
19262
19337
  class AccountSetupService {
19263
- constructor(setupItemService, propertyService, incomeSourceService, bankAccountsService, transactionAllocationService, vehicleClaimService, transactionService, soleBusinessService, holdingService, userService, clientMovementService, clientInviteService, employeeService, employeeInviteService, firmService) {
19338
+ constructor(setupItemService, propertyService, incomeSourceService, bankConnectionService, bankAccountsService, bankTransactionService, loanService, allocationRuleService, transactionAllocationService, vehicleClaimService, homeOfficeClaimService, transactionService, depreciationService, businessService, holdingService, userService, clientMovementService, clientInviteService, employeeService, employeeInviteService, firmService, sharesightDetailsService, propertyShareService) {
19264
19339
  this.setupItemService = setupItemService;
19265
19340
  this.propertyService = propertyService;
19266
19341
  this.incomeSourceService = incomeSourceService;
19342
+ this.bankConnectionService = bankConnectionService;
19267
19343
  this.bankAccountsService = bankAccountsService;
19344
+ this.bankTransactionService = bankTransactionService;
19345
+ this.loanService = loanService;
19346
+ this.allocationRuleService = allocationRuleService;
19268
19347
  this.transactionAllocationService = transactionAllocationService;
19269
19348
  this.vehicleClaimService = vehicleClaimService;
19349
+ this.homeOfficeClaimService = homeOfficeClaimService;
19270
19350
  this.transactionService = transactionService;
19271
- this.soleBusinessService = soleBusinessService;
19351
+ this.depreciationService = depreciationService;
19352
+ this.businessService = businessService;
19272
19353
  this.holdingService = holdingService;
19273
19354
  this.userService = userService;
19274
19355
  this.clientMovementService = clientMovementService;
@@ -19276,80 +19357,77 @@ class AccountSetupService {
19276
19357
  this.employeeService = employeeService;
19277
19358
  this.employeeInviteService = employeeInviteService;
19278
19359
  this.firmService = firmService;
19360
+ this.sharesightDetailsService = sharesightDetailsService;
19361
+ this.propertyShareService = propertyShareService;
19279
19362
  }
19280
19363
  /**
19281
19364
  * Get list of account setup items for current user/firm
19282
19365
  */
19283
- get(type) {
19284
- return combineLatest([
19285
- this.setupItemService.get(),
19286
- this.userService.getFirst()
19287
- ])
19288
- .pipe(mergeMap(([items, user]) => {
19289
- this.items = items;
19366
+ get(property, business, bankAccount) {
19367
+ // @TODO it takes time for user to update, makes sense to subscribe to serviceSubscription instead
19368
+ return combineLatest([this.setupItemService.get(), this.userService.getFirst()]).pipe(switchMap(([items, user]) => {
19290
19369
  this.user = user;
19291
- return type === SetupItemTypeEnum.CLIENT ? this.getClientItems$() : this.getFirmItems$();
19370
+ this.items = items.getByUser(user);
19371
+ return this.setItemsStatus(property, business, bankAccount);
19292
19372
  }));
19293
19373
  }
19294
- getClientItems$() {
19295
- const batch = [];
19296
- if (this.user.hasRoles(UserRolesEnum.WORK_TANK)) {
19297
- batch.push(
19298
- // Salary item is completed when user added salary income source
19299
- this.setItemStatus(this.items.findBy('isSalary', true), this.getIncomeSources(true)),
19300
- // Other income is a part of work tank, completed when user added at least one other income source
19301
- this.setItemStatus(this.items.findBy('isOtherIncome', true), this.getIncomeSources()));
19302
- }
19303
- // Rental income item is completed when user added at least one property
19304
- if (this.user.hasRoles(UserRolesEnum.PROPERTY_TANK)) {
19305
- batch.push(this.setItemStatus(this.items.findBy('isProperty', true), this.propertyService.getArray()));
19306
- }
19307
- // Sole business item is completed when user added at least one business
19308
- if (this.user.hasRoles(UserRolesEnum.SOLE_TANK)) {
19309
- batch.push(this.setItemStatus(this.items.findBy('isSoleBusiness', true), this.soleBusinessService.getArray()));
19310
- }
19311
- // holdings item is completed when user added at least one holding
19312
- if (this.user.hasRoles(UserRolesEnum.HOLDING_TANK)) {
19313
- batch.push(this.setItemStatus(this.items.findBy('isHoldings', true), this.holdingService.getArray()));
19314
- }
19315
- if (this.user.hasRoles([UserRolesEnum.WORK_TANK, UserRolesEnum.PROPERTY_TANK, UserRolesEnum.SOLE_TANK])) {
19316
- // Bank feeds item is completed when user added at least one bank account (basiq or manual)
19317
- batch.push(this.getBankFeedsItem());
19318
- // Logbook item is completed when user has at least one vehicle claim with any method (kms or logbook)
19319
- batch.push(this.getLogbookItem());
19320
- // Allocation item is completed when user added at least one transaction allocation
19321
- batch.push(this.setItemStatus(this.items.findBy('isTransactionAllocate', true), this.transactionAllocationService.get()));
19322
- }
19323
- return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items)));
19324
- }
19325
- getFirmItems$() {
19326
- const batch = [];
19327
- batch.push(
19328
- // Firm Details item is completed when user filled some general information
19329
- this.firmService.get().pipe(map((firm) => {
19330
- const item = this.items.findBy('isFirmDetails', true);
19331
- if (firm.address || firm.phone || firm.file || firm.shortName) {
19332
- item.isCompleted = true;
19374
+ setItemsStatus(property, business, bankAccount) {
19375
+ const itemsById = this.items.indexBy('id');
19376
+ const requests = pick({
19377
+ // firm
19378
+ [AccountSetupItemsEnum.FIRM_DETAILS]: this.getFirms(),
19379
+ [AccountSetupItemsEnum.FIRM_EMPLOYEES]: this.getEmployees(),
19380
+ [AccountSetupItemsEnum.FIRM_CLIENTS]: this.getClients(),
19381
+ // work
19382
+ [AccountSetupItemsEnum.WORK_SALARY]: this.getIncomeSources(true),
19383
+ [AccountSetupItemsEnum.WORK_OTHER_INCOME]: this.getIncomeSources(false),
19384
+ [AccountSetupItemsEnum.WORK_VEHICLE_CLAIM]: this.getVehicleClaims(),
19385
+ [AccountSetupItemsEnum.WORK_HOME_OFFICE]: this.getHomeOfficeClaims(),
19386
+ [AccountSetupItemsEnum.WORK_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.WORK),
19387
+ [AccountSetupItemsEnum.WORK_DEPRECIATION]: this.getDepreciations(TankTypeEnum.WORK),
19388
+ // properties
19389
+ [AccountSetupItemsEnum.PROPERTY]: this.propertyService.getArray(),
19390
+ [AccountSetupItemsEnum.PROPERTIES]: this.propertyService.getArray().pipe(map(properties => properties.slice(1))),
19391
+ [AccountSetupItemsEnum.PROPERTIES_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.PROPERTY),
19392
+ // businesses
19393
+ [AccountSetupItemsEnum.SOLE_BUSINESS]: this.businessService.getArray(),
19394
+ [AccountSetupItemsEnum.SOLE_BUSINESSES]: this.businessService.getArray().pipe(map(businesses => businesses.slice(1))),
19395
+ [AccountSetupItemsEnum.SOLE_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.SOLE),
19396
+ // holdings
19397
+ [AccountSetupItemsEnum.HOLDING_TRADE]: this.holdingService.getArray(),
19398
+ [AccountSetupItemsEnum.HOLDING_INTEGRATION]: this.getSharesightDetails(true),
19399
+ // bankAccounts
19400
+ [AccountSetupItemsEnum.BANK_CONNECTION]: this.bankConnectionService.getArray(),
19401
+ [AccountSetupItemsEnum.BANK_ACCOUNT]: this.getBankAccounts(),
19402
+ }, this.items.getIds());
19403
+ // property
19404
+ if (property) {
19405
+ requests[AccountSetupItemsEnum.PROPERTY_CAPITAL_COST] = this.propertyService.getBy('id', property.id).pipe(map(properties => properties.filter(property => !!property.capitalCosts)));
19406
+ requests[AccountSetupItemsEnum.PROPERTY_RENT_INCOME] = this.getTransactions(property.id).pipe(map(transactions => new TransactionCollection(transactions).filterBy('chartAccounts.id', ChartAccountsListEnum.RENTAL_INCOME)));
19407
+ requests[AccountSetupItemsEnum.PROPERTY_DEPRECIATION] = this.getDepreciations(TankTypeEnum.PROPERTY, property.id);
19408
+ requests[AccountSetupItemsEnum.PROPERTY_CO_OWNER] = this.getCoOwners(property.id);
19409
+ }
19410
+ // business
19411
+ if (business) {
19412
+ requests[AccountSetupItemsEnum.SOLE_VEHICLE_CLAIM] = this.getVehicleClaims(business.id);
19413
+ requests[AccountSetupItemsEnum.SOLE_HOME_OFFICE] = this.getHomeOfficeClaims(business.id);
19414
+ requests[AccountSetupItemsEnum.SOLE_DEPRECIATION] = this.getDepreciations(TankTypeEnum.SOLE, business.id);
19415
+ requests[AccountSetupItemsEnum.SOLE_LOGO] = this.businessService.getBy('id', business.id).pipe(map(businesses => businesses.filter(business => !!business.file)));
19416
+ }
19417
+ // bankAccount
19418
+ if (bankAccount) {
19419
+ requests[AccountSetupItemsEnum.BANK_TRANSACTION] = this.bankTransactionService.get().pipe(map(transactions => transactions.filterBy('bankAccount.id', bankAccount.id)));
19420
+ requests[AccountSetupItemsEnum.BANK_ALLOCATION] = this.getAllocations(bankAccount.id);
19421
+ requests[AccountSetupItemsEnum.BANK_RULE] = this.allocationRuleService.get().pipe(map(rules => rules.filterBy('bankAccount.id', bankAccount.id)));
19422
+ if (bankAccount.loan) {
19423
+ requests[AccountSetupItemsEnum.BANK_BORROWING_EXPENSE] = this.loanService.get().pipe(map(loans => loans.filterBy('bankAccount.id', bankAccount.id).filter(loan => !!loan.borrowingExpenses.length)));
19333
19424
  }
19334
- return item;
19335
- })));
19336
- batch.push(
19337
- // Invite team item is completed when firm has employees except firm owner or firm has invited employees.
19338
- this.setItemStatus(this.items.findBy('isInviteTeam', true), combineLatest([
19339
- this.employeeService.getArray(),
19340
- this.employeeInviteService.getArray()
19341
- ]).pipe(map(([employees, invites]) => {
19342
- // we always have at least 1 employee (firm owner), so we should check other employees except firm owner
19343
- if (employees.length) {
19344
- employees.splice(0, 1);
19345
- }
19346
- return [...employees, ...invites];
19347
- }))));
19348
- batch.push(
19349
- // Invite clients item is completed when firm has clients or firm has invited clients.
19350
- this.setItemStatus(this.items.findBy('isInviteClients', true), combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()])
19351
- .pipe(map(([movements, invites]) => [...movements.toArray(), ...invites.toArray()]))));
19352
- return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items).sortBy('id', 'asc')));
19425
+ }
19426
+ const batch = Object.keys(requests).map(id => this.setItemStatus(itemsById.get(id), requests[id]));
19427
+ if (!batch.length) {
19428
+ return of(new AccountSetupItemCollection([]));
19429
+ }
19430
+ return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items).sortBy('order', 'asc')));
19353
19431
  }
19354
19432
  /**
19355
19433
  * Check and update isCompleted flag for passed item
@@ -19357,20 +19435,45 @@ class AccountSetupService {
19357
19435
  setItemStatus(item, request) {
19358
19436
  return request.pipe(map((result) => {
19359
19437
  const isSkipped = !!this.user.blacklistSetupItems.find((skippedItem) => skippedItem.id === item.id);
19360
- if (result.length || isSkipped) {
19361
- item.isCompleted = true;
19362
- }
19363
- else {
19364
- item.isCompleted = false;
19365
- }
19438
+ item.status = isSkipped ? AccountSetupItemStatusEnum.SKIPPED : result.length ? AccountSetupItemStatusEnum.ACHIEVED : AccountSetupItemStatusEnum.PENDING;
19366
19439
  return item;
19367
19440
  }));
19368
19441
  }
19442
+ getAllocations(bankAccountId) {
19443
+ return combineLatest([this.bankTransactionService.get(), this.transactionAllocationService.get()]).pipe(map(([bankTransactions, allocations]) => {
19444
+ const bankTransactionsIds = bankTransactions.filterBy('bankAccount.id', bankAccountId).getIds();
19445
+ return new TransactionAllocationCollection(allocations).getByBankTransactionsIds(bankTransactionsIds).toArray();
19446
+ }));
19447
+ }
19448
+ getTransactions(propertyId) {
19449
+ return this.transactionService.getByPropertyId(propertyId);
19450
+ }
19451
+ getCoOwners(propertyId) {
19452
+ return this.propertyShareService.getArrayBy('property.id', propertyId).pipe(map(shares => shares.slice(1)));
19453
+ }
19454
+ /**
19455
+ * AccountSetupItemsEnum.FIRM_CLIENTS completed when client invites sent or accepted
19456
+ */
19457
+ getClients() {
19458
+ return combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()]).pipe(map(([movements, invites]) => [...movements, ...invites]));
19459
+ }
19460
+ /**
19461
+ * AccountSetupItemsEnum.FIRM_EMPLOYEES completed when employee invites sent or accepted
19462
+ */
19463
+ getEmployees() {
19464
+ return combineLatest([this.employeeService.getArray(), this.employeeInviteService.getArray()]).pipe(map(([employees, invites]) => [...employees.slice(1), ...invites]));
19465
+ }
19466
+ /**
19467
+ * AccountSetupItemsEnum.FIRM_DETAILS when firm data filled
19468
+ */
19469
+ getFirms() {
19470
+ return this.firmService.get().pipe(map((firm) => [firm].filter(firm => firm.address || firm.phone || firm.file || firm.shortName)));
19471
+ }
19369
19472
  /**
19370
19473
  * @TODO Alex: work with collection when services refactored
19371
19474
  * @TODO Vik: waiting for income sources refactoring
19372
19475
  */
19373
- getIncomeSources(isSalary = false) {
19476
+ getIncomeSources(isSalary) {
19374
19477
  return this.incomeSourceService.get().pipe(map((incomeSources) => {
19375
19478
  const collection = new IncomeSourceCollection(incomeSources);
19376
19479
  if (isSalary) {
@@ -19379,31 +19482,31 @@ class AccountSetupService {
19379
19482
  return collection.items.filter((incomeSource) => incomeSource.isOtherIncome());
19380
19483
  }));
19381
19484
  }
19382
- /**
19383
- * Show logbook item when user has at least 1 vehicle transaction
19384
- */
19385
- getLogbookItem() {
19386
- return this.transactionService.get()
19387
- .pipe(
19388
- // @TODO Alex: remove map when services start work with collections
19389
- map((transactions) => new TransactionCollection(transactions)), mergeMap((transactions) => {
19390
- if (transactions.getVehicleTransactions().length) {
19391
- return this.setItemStatus(this.items.findBy('isWorkLogbook', true), this.vehicleClaimService.getArray());
19485
+ getVehicleClaims(businessId) {
19486
+ return this.vehicleClaimService.getArray().pipe(map(claims => claims.filter(claim => claim.business?.id === businessId)));
19487
+ }
19488
+ getHomeOfficeClaims(businessId) {
19489
+ return this.homeOfficeClaimService.getArray().pipe(map(claims => claims.filter(claim => claim.business?.id === businessId)));
19490
+ }
19491
+ getBankAccounts(tankType) {
19492
+ return this.bankAccountsService.get().pipe(map((bankAccounts => bankAccounts.getByTankType(tankType).toArray())));
19493
+ }
19494
+ getDepreciations(tankType, id) {
19495
+ return this.depreciationService.get().pipe(map(depreciations => {
19496
+ depreciations = depreciations.getByTankType(tankType);
19497
+ if (tankType === TankTypeEnum.PROPERTY && id) {
19498
+ depreciations.filterBy('property.id', id);
19499
+ }
19500
+ if (tankType === TankTypeEnum.SOLE && id) {
19501
+ depreciations.filterBy('business.id', id);
19392
19502
  }
19393
- return of(null);
19503
+ return depreciations.toArray();
19394
19504
  }));
19395
19505
  }
19396
- /**
19397
- * Hide bank feeds item when user has only holding tank
19398
- */
19399
- getBankFeedsItem() {
19400
- const bankFeedsRoles = [UserRolesEnum.PROPERTY_TANK, UserRolesEnum.WORK_TANK, UserRolesEnum.SOLE_TANK];
19401
- if (!intersection(bankFeedsRoles, this.user.roles).length) {
19402
- return of(null);
19403
- }
19404
- return this.setItemStatus(this.items.findBy('isBankFeeds', true), this.bankAccountsService.getArray());
19506
+ getSharesightDetails(importEnabled) {
19507
+ return this.sharesightDetailsService.getArray().pipe(map(details => details.filter(detail => importEnabled ? detail.importEnabled : detail.exportEnabled)));
19405
19508
  }
19406
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, deps: [{ token: SetupItemService }, { token: PropertyService }, { token: IncomeSourceService }, { token: BankAccountService }, { token: TransactionAllocationService }, { token: VehicleClaimService }, { token: TransactionService }, { token: SoleBusinessService }, { token: HoldingTradeService }, { token: UserService }, { token: ClientMovementService }, { token: ClientInviteService }, { token: EmployeeService }, { token: EmployeeInviteService }, { token: FirmService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19509
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, deps: [{ token: SetupItemService }, { token: PropertyService }, { token: IncomeSourceService }, { token: BankConnectionService }, { token: BankAccountService }, { token: BankTransactionService }, { token: LoanService }, { token: AllocationRuleService }, { token: TransactionAllocationService }, { token: VehicleClaimService }, { token: HomeOfficeClaimService }, { token: TransactionService }, { token: DepreciationService }, { token: SoleBusinessService }, { token: HoldingTradeService }, { token: UserService }, { token: ClientMovementService }, { token: ClientInviteService }, { token: EmployeeService }, { token: EmployeeInviteService }, { token: FirmService }, { token: SharesightDetailsService }, { token: PropertyShareService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19407
19510
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, providedIn: 'root' }); }
19408
19511
  }
19409
19512
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, decorators: [{
@@ -19411,7 +19514,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19411
19514
  args: [{
19412
19515
  providedIn: 'root'
19413
19516
  }]
19414
- }], ctorParameters: () => [{ type: SetupItemService }, { type: PropertyService }, { type: IncomeSourceService }, { type: BankAccountService }, { type: TransactionAllocationService }, { type: VehicleClaimService }, { type: TransactionService }, { type: SoleBusinessService }, { type: HoldingTradeService }, { type: UserService }, { type: ClientMovementService }, { type: ClientInviteService }, { type: EmployeeService }, { type: EmployeeInviteService }, { type: FirmService }] });
19517
+ }], ctorParameters: () => [{ type: SetupItemService }, { type: PropertyService }, { type: IncomeSourceService }, { type: BankConnectionService }, { type: BankAccountService }, { type: BankTransactionService }, { type: LoanService }, { type: AllocationRuleService }, { type: TransactionAllocationService }, { type: VehicleClaimService }, { type: HomeOfficeClaimService }, { type: TransactionService }, { type: DepreciationService }, { type: SoleBusinessService }, { type: HoldingTradeService }, { type: UserService }, { type: ClientMovementService }, { type: ClientInviteService }, { type: EmployeeService }, { type: EmployeeInviteService }, { type: FirmService }, { type: SharesightDetailsService }, { type: PropertyShareService }] });
19415
19518
 
19416
19519
  class AdblockService {
19417
19520
  constructor() {
@@ -20548,6 +20651,7 @@ const ENDPOINTS = {
20548
20651
  SERVICE_PAYMENTS_GET: new Endpoint('GET', '\\/service-payments'),
20549
20652
  SERVICE_SUBSCRIPTIONS_GET: new Endpoint('GET', '\\/service-subscriptions'),
20550
20653
  SERVICE_SUBSCRIPTIONS_POST: new Endpoint('POST', '\\/service-subscriptions'),
20654
+ SERVICE_SUBSCRIPTIONS_TRIAL_POST: new Endpoint('POST', '\\/service-subscriptions/'),
20551
20655
  SERVICE_SUBSCRIPTIONS_CANCEL: new Endpoint('PUT', '\\/service-subscriptions\\/\\d+\\/cancel'),
20552
20656
  SERVICE_SUBSCRIPTIONS_RENEW: new Endpoint('PUT', '\\/service-subscriptions\\/\\d+\\/renewal'),
20553
20657
  SERVICE_PAYMENT_INVOICE_URL_GET: new Endpoint('GET', '\\/service-payments\\/\\d+\\/invoice-url'),
@@ -20604,6 +20708,7 @@ const ENDPOINTS = {
20604
20708
  TRANSACTIONS_ALLOCATIONS_POST: new Endpoint('POST', '\\/transaction-allocations'),
20605
20709
  TRANSACTIONS_ALLOCATIONS_DELETE: new Endpoint('DELETE', '\\/transaction-allocations\\/\\d+'),
20606
20710
  TRANSACTIONS_ALLOCATIONS_BATCH_DELETE: new Endpoint('POST', '\\/transaction-allocations\\/delete'),
20711
+ TRIAL_POST: new Endpoint('POST', '\\/trial'),
20607
20712
  USER_CONFIRMATION_POST: new Endpoint('POST', '\\/users\\/confirmation'),
20608
20713
  USER_CONFIRMATION_RESEND_POST: new Endpoint('POST', '\\/users\\/confirmation\\/resend'),
20609
20714
  USER_CURRENT_GET: new Endpoint('GET', '\\/users\\/current'),
@@ -21002,6 +21107,27 @@ var InviteStatusEnum;
21002
21107
  InviteStatusEnum[InviteStatusEnum["REJECTED"] = 3] = "REJECTED";
21003
21108
  })(InviteStatusEnum || (InviteStatusEnum = {}));
21004
21109
 
21110
+ var YoutubeVideosEnum;
21111
+ (function (YoutubeVideosEnum) {
21112
+ YoutubeVideosEnum["HOLDING_ONBOARDING"] = "r3RhObELk-E";
21113
+ YoutubeVideosEnum["MONEY_ONBOARDING"] = "E9NU14ndjhc";
21114
+ YoutubeVideosEnum["PROPERTY_ONBOARDING"] = "llUV98-EMdI";
21115
+ YoutubeVideosEnum["SOLE_ONBOARDING"] = "rqfTQFGwkUM";
21116
+ YoutubeVideosEnum["WORK_ONBOARDING"] = "QEKolzS1B0U";
21117
+ YoutubeVideosEnum["PROPERTY_RENTAL"] = "MPkB0NBd-9E";
21118
+ YoutubeVideosEnum["PROPERTY_DEPRECIATION"] = "_34lK9ooFzc";
21119
+ YoutubeVideosEnum["VEHICLE_CLAIM"] = "4-6WaM83cw0";
21120
+ YoutubeVideosEnum["SOLE_DEPRECIATION"] = "Bw3tx4miFF8";
21121
+ YoutubeVideosEnum["SOLE_HOME_OFFICE"] = "fF8_kJHEKRE";
21122
+ YoutubeVideosEnum["WORK_DEPRECIATION"] = "gNa9M4xovuI";
21123
+ YoutubeVideosEnum["WORK_HOME_OFFICE"] = "qrQu4Yl72bU";
21124
+ YoutubeVideosEnum["BANK_FEEDS"] = "meQmpw7ZY7c";
21125
+ // @TODO replace PROPERTY_RENTAL
21126
+ YoutubeVideosEnum["BANK_ACCOUNT_TRANSACTION"] = "meQmpw7ZY7c";
21127
+ YoutubeVideosEnum["BANK_ALLOCATION_RULE"] = "meQmpw7ZY7c";
21128
+ YoutubeVideosEnum["ALLOCATE_TRANSACTION"] = "meQmpw7ZY7c";
21129
+ })(YoutubeVideosEnum || (YoutubeVideosEnum = {}));
21130
+
21005
21131
  var PropertyDepreciationCalculationEnum;
21006
21132
  (function (PropertyDepreciationCalculationEnum) {
21007
21133
  PropertyDepreciationCalculationEnum[PropertyDepreciationCalculationEnum["PRIME_COST"] = 1] = "PRIME_COST";
@@ -21318,6 +21444,36 @@ var UserEventSettingFieldEnum;
21318
21444
  UserEventSettingFieldEnum["FREQUENCY"] = "frequency";
21319
21445
  })(UserEventSettingFieldEnum || (UserEventSettingFieldEnum = {}));
21320
21446
 
21447
+ class BusinessResolver {
21448
+ constructor(soleDetailsService) {
21449
+ this.soleDetailsService = soleDetailsService;
21450
+ }
21451
+ resolve() {
21452
+ return this.soleDetailsService.getFirst();
21453
+ }
21454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: BusinessResolver, deps: [{ token: SoleDetailsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21455
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: BusinessResolver, providedIn: 'root' }); }
21456
+ }
21457
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: BusinessResolver, decorators: [{
21458
+ type: Injectable,
21459
+ args: [{ providedIn: 'root' }]
21460
+ }], ctorParameters: () => [{ type: SoleDetailsService }] });
21461
+
21462
+ class SoleDetailsResolver {
21463
+ constructor(soleDetails) {
21464
+ this.soleDetails = soleDetails;
21465
+ }
21466
+ resolve() {
21467
+ return this.soleDetails.getFirst();
21468
+ }
21469
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SoleDetailsResolver, deps: [{ token: SoleDetailsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21470
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SoleDetailsResolver, providedIn: 'root' }); }
21471
+ }
21472
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SoleDetailsResolver, decorators: [{
21473
+ type: Injectable,
21474
+ args: [{ providedIn: 'root' }]
21475
+ }], ctorParameters: () => [{ type: SoleDetailsService }] });
21476
+
21321
21477
  // deep clone for entity
21322
21478
  function cloneDeep(array) {
21323
21479
  return JSON.parse(JSON.stringify(array));
@@ -21477,7 +21633,7 @@ class AbstractForm extends FormGroup {
21477
21633
  */
21478
21634
  patchField(name, value) {
21479
21635
  const control = this.get(name);
21480
- if (control.value === value) {
21636
+ if (!control || control.value === value) {
21481
21637
  return;
21482
21638
  }
21483
21639
  // @TODO remove when all number fields refactored to prime inputnumber
@@ -21486,6 +21642,11 @@ class AbstractForm extends FormGroup {
21486
21642
  }
21487
21643
  control.patchValue(value);
21488
21644
  }
21645
+ patch(fields) {
21646
+ Object.entries(fields).forEach(([key, value]) => {
21647
+ this.patchField(key, value);
21648
+ });
21649
+ }
21489
21650
  fieldChanged(name) {
21490
21651
  return this.get(name).value !== this.initialValue[name];
21491
21652
  }
@@ -24945,6 +25106,12 @@ class HoldingIncomeForm extends WorkTransactionForm {
24945
25106
  }
24946
25107
  }
24947
25108
 
25109
+ class HoldingExpenseForm extends TransactionForm {
25110
+ constructor(transaction, registeredForGst, allocations, controls = {}) {
25111
+ super(transaction, registeredForGst, allocations, controls);
25112
+ }
25113
+ }
25114
+
24948
25115
  class TransactionBaseFilterForm extends FormGroup {
24949
25116
  constructor(tankType, business, properties) {
24950
25117
  super({
@@ -25460,5 +25627,5 @@ var MessagesEnum;
25460
25627
  * Generated bundle index. Do not edit.
25461
25628
  */
25462
25629
 
25463
- export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, AdblockService, Address, AddressForm, AddressService, AddressTypeEnum, AllocationGroup, AllocationGroupCollection, AllocationRule, AllocationRuleCollection, AllocationRuleConditionComparisonOperatorEnum, AllocationRuleConditionFieldEnum, AllocationRuleConditionOperatorEnum, AllocationRuleForm, AllocationRuleService, AllocationRuleTransaction, AllocationRuleTransactionMetaField, AllocationRuleTypeEnum, AlphabetColorsEnum, AnnualClientDetails, AnnualClientDetailsForm, AnnualClientDetailsService, AnnualFrequencyEnum, AppCurrencyPipe, AppEvent, AppEvent2, AppEventTypeEnum, AppFile, AppPercentPipe, AssetEntityTypeEnum, AssetSale, AssetSaleCollection, AssetTypeEnum, AssetsService, AussieAppointment, AussieAppointmentForm, AussieBroker, AussieConfirmationForm, AussieService, AussieStore, AussieStoreForm, Badge, BadgeColorEnum, Bank, BankAccount, BankAccountAddManualForm, BankAccountAllocationForm, BankAccountCalculationService, BankAccountChartData, BankAccountCollection, BankAccountImportForm, BankAccountPropertiesForm, BankAccountProperty, BankAccountService, BankAccountStatusEnum, BankAccountTypeEnum, BankAccountsImportForm, BankConnection, BankConnectionMessagesEnum, BankConnectionService, BankConnectionStatusEnum, BankExternalStats, BankPopularEnum, BankProviderEnum, BankService, BankTransaction, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasReport, BasReportForm, BasReportMessagesEnum, BasReportService, BasiqConfig, BasiqJob, BasiqJobResponse, BasiqJobStep, BasiqMessagesEnum, BasiqService, BasiqToken, BasiqTokenService, BestVehicleLogbookCollection, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, BorrowingReport, BorrowingReportForm, BorrowingReportMessagesEnum, BorrowingReportService, Budget, BudgetForm, BudgetMessagesEnum, BudgetRule, BudgetService, BusinessChartAccountsEnum, BusinessTypeEnum, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CapitalLoss, CapitalLossForm, CapitalLossMessagesEnum, CapitalLossService, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsAdjustmentIncludedListEnum, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsForm, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsHoldingUntaxedIncomeListEnum, ChartAccountsKeepSign, ChartAccountsListEnum, ChartAccountsMessagesEnum, ChartAccountsMetaField, ChartAccountsMetaFieldListEnum, ChartAccountsMetaFieldTypeEnum, ChartAccountsPropertyAdjustmentsListEnum, ChartAccountsSalaryAdjustmentsListEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsValue, ChartAccountsValueCollection, ChartAccountsValueService, ChartData, ChartSerie, Chat, ChatCollection, ChatFilterForm, ChatService, ChatStatusEnum, ChatViewTypeEnum, ClientCollection, ClientCouponService, ClientDetails, ClientDetailsForm, ClientDetailsMedicareExemptionEnum, ClientDetailsWorkDepreciationCalculationEnum, ClientDetailsWorkingHolidayMakerEnum, ClientInvite, ClientInviteCollection, ClientInviteForm, ClientInviteMessages, ClientInvitePutForm, ClientInviteService, ClientInviteStatusEnum, ClientInviteTypeEnum, ClientMovement, ClientMovementCollection, ClientMovementForm, ClientMovementMessagesEnum, ClientMovementService, ClientPortfolioChartData, ClientPortfolioReport, ClientPortfolioReportCollection, ClientPortfolioReportService, Collection, CollectionDictionary, CollectionForm, CoreModule, CorelogicMessagesEnum, CorelogicService, CorelogicSuggestion, Country, CurrentFirmBranchService, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, DateRange, DeductionClothingTypeEnum, DeductionSelfEducationTypeEnum, Depreciation, DepreciationCalculationEnum, DepreciationCalculationPercentEnum, DepreciationCapitalProject, DepreciationCapitalProjectService, DepreciationCollection, DepreciationForecast, DepreciationForecastCollection, DepreciationForm, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, DepreciationLvpRateEnum, DepreciationLvpReportItem, DepreciationLvpReportItemCollection, DepreciationReportItem, DepreciationReportItemCollection, DepreciationService, DepreciationTypeEnum, DepreciationWriteOffAmountEnum, Dictionary, Document, DocumentApiUrlPrefixEnum, DocumentFolder, DocumentFolderForm, DocumentFolderMessagesEnum, DocumentFolderService, DocumentForm, DocumentMessagesEnum, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeDetailsForm, EmployeeInvite, EmployeeInviteCollection, EmployeeInviteForm, EmployeeInviteRoleEnum, EmployeeInviteService, EmployeeMessagesEnum, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FileService, FileValidator, FinancialYear, FinancialYearService, Firm, FirmBranch, FirmBranchForm, FirmBranchMessagesEnum, FirmBranchService, FirmForm, FirmInviteForm, FirmMessagesEnum, FirmService, FirmTypeEnum, FormValidationsEnum, GenderEnum, GoogleService, HTTP_ERROR_MESSAGES, HeaderTitleService, Holding, HoldingCollection, HoldingIncomeForm, HoldingReinvest, HoldingReinvestForm, HoldingSale, HoldingSaleCollection, HoldingSaleService, HoldingTrade, HoldingTradeCollection, HoldingTradeFilterForm, HoldingTradeForm, HoldingTradeImport, HoldingTradeImportForm, HoldingTradeImportMessagesEnum, HoldingTradeImportService, HoldingTradeMessagesEnum, HoldingTradeService, HoldingTradeTypeEnum, HoldingType, HoldingTypeCategoryEnum, HoldingTypeCollection, HoldingTypeExchange, HoldingTypeExchangeListEnum, HoldingTypeExchangeService, HoldingTypeForm, HoldingTypeMessagesEnum, HoldingTypeService, HomeOfficeCalculatorForm, HomeOfficeClaim, HomeOfficeClaimCollection, HomeOfficeClaimForm, HomeOfficeClaimMessagesEnum, HomeOfficeClaimMethodEnum, HomeOfficeClaimService, HomeOfficeLog, HomeOfficeLogForm, HomeOfficeLogMessagesEnum, HomeOfficeLogService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastCollection, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceMessagesEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListHoldingEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, IncomeSourceTypeService, InterceptorsModule, IntercomService, InviteStatusEnum, InvoicePaymentForm, InvoiceTransactionsService, JsPdf, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanInterestTypeLabelEnum, LoanMaxNumberOfPaymentsEnum, LoanMessagesEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanRepaymentTypeLabelEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MessagesEnum, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessDetails, MyTaxBusinessDetailsForm, MyTaxBusinessIncome, MyTaxBusinessIncomeForm, MyTaxBusinessIncomeOrLossesForm, MyTaxBusinessLosses, MyTaxBusinessLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEstimate, MyTaxIncomeStatements, MyTaxIncomeStatementsForm, MyTaxIncomeTests, MyTaxIncomeTestsForm, MyTaxInterest, MyTaxInterestForm, MyTaxLosses, MyTaxLossesForm, MyTaxMedicareForm, MyTaxOffsets, MyTaxOffsetsForm, MyTaxOtherIncome, MyTaxOtherIncomeForm, MyTaxPartnershipsAndTrusts, MyTaxPartnershipsAndTrustsForm, MyTaxRent, MyTaxRentForm, Notification, Occupation, OccupationService, PASSWORD_REGEXPS, PasswordForm, PdfFromDataTableService, PdfFromDomElementService, PdfFromHtmlTableService, PdfFromTableService, PdfOrientationEnum, PdfService, PdfSettings, Phone, PhoneForm, PhoneTypeEnum, PreloaderService, PriorTransactionService, Property, PropertyAddForm, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementForm, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentForm, PropertyDocumentMessagesEnum, PropertyDocumentService, PropertyEditForm, PropertyEquityChartData, PropertyEquityChartItem, PropertyEquityChartTypeEnum, PropertyForecast, PropertyForecastForm, PropertyMessagesEnum, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetaField, PropertySaleTaxExemptionMetaFieldCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareCollection, PropertyShareForm, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, PropertyValuationCollection, PropertyValuationForm, PropertyValuationMessages, PropertyValuationService, REPORTS, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RestMessagesEnum, RestService$1 as RestService, SERVICE_PRODUCT_ROLES, SafeUrlPipe, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentMethod, ServicePaymentMethodService, ServicePaymentService, ServicePaymentStatusEnum, ServicePrice, ServicePriceCollection, ServicePriceListEnum, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductCollection, ServiceProductIconsEnum, ServiceProductIdEnum, ServiceProductService, ServiceProductStatusEnum, ServicePromoCode, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, SetupItemTypeEnum, SharesightDetails, SharesightDetailsMessagesEnum, SharesightDetailsService, SharesightPortfolio, SharesightPortfolioMessages, SharesightPortfolioService, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossCollection, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessMessagesEnum, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleIncomeForm, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemCollection, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStateEnum, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, StatesEnum, SubscriptionItemCollection, SubscriptionMessagesEnum, SubscriptionService, TAX_RETURN_CATEGORIES, TYPE_LOAN, TankTypeEnum, TaxCalculationMedicareExemptionEnum, TaxCalculationTypeEnum, TaxExemption, TaxExemptionCollection, TaxExemptionEnum, TaxExemptionMetaField, TaxExemptionMetaFieldEnum, TaxExemptionService, TaxReturn, TaxReturnCategory, TaxReturnCategoryListEnum, TaxReturnCategorySectionEnum, TaxReturnItem, TaxReturnItemEnum, TaxReturnItemService, TaxReview, TaxReviewCollection, TaxReviewFilterForm, TaxReviewFilterStatusEnum, TaxReviewHistoryService, TaxReviewMessagesEnum, TaxReviewService, TaxReviewStatusEnum, TaxSummary, TaxSummaryListEnum, TaxSummarySection, TaxSummarySectionEnum, TaxSummaryService, TaxSummaryTaxSummaryEnum, TaxSummaryTypeEnum, TicketFeedbackEnum, TicketStatusEnum, TicketTypesEnum, TimezoneEnum, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseCollection, TransactionBaseFilterForm, TransactionBaseForm, TransactionCategoryEnum, TransactionCollection, TransactionForm, TransactionMetaField, TransactionOperationEnum, TransactionReportItem, TransactionReportItemCollection, TransactionService, TransactionSourceEnum, TransactionTypeEnum, USER_ROLES, USER_WORK_POSITION, UniqueEmailValidator, User, UserCollection, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, UserEventTypeCollection, UserEventTypeEmployeeTypeEnum, UserEventTypeFrequencyEnum, UserEventTypeService, UserEventTypeUserTypeEnum, UserForm, UserInviteForm, UserMedicareExemptionEnum, UserMessagesEnum, UserService, UserStatusEnum, UserSwitcherService, UserTitleEnum, UserToRegister, UserWorkDepreciationCalculationEnum, UserWorkingHolidayMakerEnum, UsersInviteService, Vehicle, VehicleClaim, VehicleClaimCollection, VehicleClaimDetails, VehicleClaimDetailsForm, VehicleClaimDetailsMethodEnum, VehicleClaimDetailsService, VehicleClaimForm, VehicleClaimService, VehicleExpense, VehicleExpenseCollection, VehicleForm, VehicleLogbook, VehicleLogbookCollection, VehicleLogbookForm, VehicleLogbookMessages, VehicleLogbookPurposeEnum, VehicleLogbookService, VehicleMessagesEnum, VehicleService, WorkExpenseForm, WorkIncomeForm, XlsxService, YoutubeService, alphaSpaceValidator, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, currentFinYearValidator, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, greaterThanValidator, matchSumValidator, maxDateValidator, minDateValidator, passwordMatchValidator, passwordValidator, replace, sort, sortDeep, toArray };
25630
+ export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupItemStatusEnum, AccountSetupItemsEnum, AccountSetupService, AdblockService, Address, AddressForm, AddressService, AddressTypeEnum, AllocationGroup, AllocationGroupCollection, AllocationRule, AllocationRuleCollection, AllocationRuleConditionComparisonOperatorEnum, AllocationRuleConditionFieldEnum, AllocationRuleConditionOperatorEnum, AllocationRuleForm, AllocationRuleService, AllocationRuleTransaction, AllocationRuleTransactionMetaField, AllocationRuleTypeEnum, AlphabetColorsEnum, AnnualClientDetails, AnnualClientDetailsForm, AnnualClientDetailsService, AnnualFrequencyEnum, AppCurrencyPipe, AppEvent, AppEvent2, AppEventTypeEnum, AppFile, AppPercentPipe, AssetEntityTypeEnum, AssetSale, AssetSaleCollection, AssetTypeEnum, AssetsService, AussieAppointment, AussieAppointmentForm, AussieBroker, AussieConfirmationForm, AussieService, AussieStore, AussieStoreForm, Badge, BadgeColorEnum, Bank, BankAccount, BankAccountAddManualForm, BankAccountAllocationForm, BankAccountCalculationService, BankAccountChartData, BankAccountCollection, BankAccountImportForm, BankAccountPropertiesForm, BankAccountProperty, BankAccountService, BankAccountStatusEnum, BankAccountTypeEnum, BankAccountsImportForm, BankConnection, BankConnectionMessagesEnum, BankConnectionService, BankConnectionStatusEnum, BankExternalStats, BankPopularEnum, BankProviderEnum, BankService, BankTransaction, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasReport, BasReportForm, BasReportMessagesEnum, BasReportService, BasiqConfig, BasiqJob, BasiqJobResponse, BasiqJobStep, BasiqMessagesEnum, BasiqService, BasiqToken, BasiqTokenService, BestVehicleLogbookCollection, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, BorrowingReport, BorrowingReportForm, BorrowingReportMessagesEnum, BorrowingReportService, Budget, BudgetForm, BudgetMessagesEnum, BudgetRule, BudgetService, BusinessChartAccountsEnum, BusinessResolver, BusinessTypeEnum, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CapitalLoss, CapitalLossForm, CapitalLossMessagesEnum, CapitalLossService, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsAdjustmentIncludedListEnum, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsForm, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsHoldingUntaxedIncomeListEnum, ChartAccountsKeepSign, ChartAccountsListEnum, ChartAccountsMessagesEnum, ChartAccountsMetaField, ChartAccountsMetaFieldListEnum, ChartAccountsMetaFieldTypeEnum, ChartAccountsPropertyAdjustmentsListEnum, ChartAccountsSalaryAdjustmentsListEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsValue, ChartAccountsValueCollection, ChartAccountsValueService, ChartData, ChartSerie, Chat, ChatCollection, ChatFilterForm, ChatService, ChatStatusEnum, ChatViewTypeEnum, ClientCollection, ClientCouponService, ClientDetails, ClientDetailsForm, ClientDetailsMedicareExemptionEnum, ClientDetailsWorkDepreciationCalculationEnum, ClientDetailsWorkingHolidayMakerEnum, ClientInvite, ClientInviteCollection, ClientInviteForm, ClientInviteMessages, ClientInvitePutForm, ClientInviteService, ClientInviteStatusEnum, ClientInviteTypeEnum, ClientMovement, ClientMovementCollection, ClientMovementForm, ClientMovementMessagesEnum, ClientMovementService, ClientPortfolioChartData, ClientPortfolioReport, ClientPortfolioReportCollection, ClientPortfolioReportService, Collection, CollectionDictionary, CollectionForm, CoreModule, CorelogicMessagesEnum, CorelogicService, CorelogicSuggestion, Country, CurrentFirmBranchService, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, DateRange, DeductionClothingTypeEnum, DeductionSelfEducationTypeEnum, Depreciation, DepreciationCalculationEnum, DepreciationCalculationPercentEnum, DepreciationCapitalProject, DepreciationCapitalProjectService, DepreciationCollection, DepreciationForecast, DepreciationForecastCollection, DepreciationForm, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, DepreciationLvpRateEnum, DepreciationLvpReportItem, DepreciationLvpReportItemCollection, DepreciationReportItem, DepreciationReportItemCollection, DepreciationService, DepreciationTypeEnum, DepreciationWriteOffAmountEnum, Dictionary, Document, DocumentApiUrlPrefixEnum, DocumentFolder, DocumentFolderForm, DocumentFolderMessagesEnum, DocumentFolderService, DocumentForm, DocumentMessagesEnum, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeDetailsForm, EmployeeInvite, EmployeeInviteCollection, EmployeeInviteForm, EmployeeInviteRoleEnum, EmployeeInviteService, EmployeeMessagesEnum, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FileService, FileValidator, FinancialYear, FinancialYearService, Firm, FirmBranch, FirmBranchForm, FirmBranchMessagesEnum, FirmBranchService, FirmForm, FirmInviteForm, FirmMessagesEnum, FirmService, FirmTypeEnum, FormValidationsEnum, GenderEnum, GoogleService, HTTP_ERROR_MESSAGES, HeaderTitleService, Holding, HoldingCollection, HoldingExpenseForm, HoldingIncomeForm, HoldingReinvest, HoldingReinvestForm, HoldingSale, HoldingSaleCollection, HoldingSaleService, HoldingTrade, HoldingTradeCollection, HoldingTradeFilterForm, HoldingTradeForm, HoldingTradeImport, HoldingTradeImportForm, HoldingTradeImportMessagesEnum, HoldingTradeImportService, HoldingTradeMessagesEnum, HoldingTradeService, HoldingTradeTypeEnum, HoldingType, HoldingTypeCategoryEnum, HoldingTypeCollection, HoldingTypeExchange, HoldingTypeExchangeListEnum, HoldingTypeExchangeService, HoldingTypeForm, HoldingTypeMessagesEnum, HoldingTypeService, HomeOfficeCalculatorForm, HomeOfficeClaim, HomeOfficeClaimCollection, HomeOfficeClaimForm, HomeOfficeClaimMessagesEnum, HomeOfficeClaimMethodEnum, HomeOfficeClaimService, HomeOfficeLog, HomeOfficeLogForm, HomeOfficeLogMessagesEnum, HomeOfficeLogService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastCollection, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceMessagesEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListHoldingEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, IncomeSourceTypeService, InterceptorsModule, IntercomService, InviteStatusEnum, InvoicePaymentForm, InvoiceTransactionsService, JsPdf, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanInterestTypeLabelEnum, LoanMaxNumberOfPaymentsEnum, LoanMessagesEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanRepaymentTypeLabelEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MessagesEnum, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessDetails, MyTaxBusinessDetailsForm, MyTaxBusinessIncome, MyTaxBusinessIncomeForm, MyTaxBusinessIncomeOrLossesForm, MyTaxBusinessLosses, MyTaxBusinessLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEstimate, MyTaxIncomeStatements, MyTaxIncomeStatementsForm, MyTaxIncomeTests, MyTaxIncomeTestsForm, MyTaxInterest, MyTaxInterestForm, MyTaxLosses, MyTaxLossesForm, MyTaxMedicareForm, MyTaxOffsets, MyTaxOffsetsForm, MyTaxOtherIncome, MyTaxOtherIncomeForm, MyTaxPartnershipsAndTrusts, MyTaxPartnershipsAndTrustsForm, MyTaxRent, MyTaxRentForm, Notification, Occupation, OccupationService, PASSWORD_REGEXPS, PasswordForm, PdfFromDataTableService, PdfFromDomElementService, PdfFromHtmlTableService, PdfFromTableService, PdfOrientationEnum, PdfService, PdfSettings, Phone, PhoneForm, PhoneTypeEnum, PreloaderService, PriorTransactionService, Property, PropertyAddForm, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementForm, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentForm, PropertyDocumentMessagesEnum, PropertyDocumentService, PropertyEditForm, PropertyEquityChartData, PropertyEquityChartItem, PropertyEquityChartTypeEnum, PropertyForecast, PropertyForecastForm, PropertyMessagesEnum, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetaField, PropertySaleTaxExemptionMetaFieldCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareCollection, PropertyShareForm, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, PropertyValuationCollection, PropertyValuationForm, PropertyValuationMessages, PropertyValuationService, REPORTS, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RestMessagesEnum, RestService$1 as RestService, SERVICE_PRODUCT_ROLES, SafeUrlPipe, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentMethod, ServicePaymentMethodService, ServicePaymentService, ServicePaymentStatusEnum, ServicePrice, ServicePriceCollection, ServicePriceListEnum, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductCollection, ServiceProductIconsEnum, ServiceProductIdEnum, ServiceProductService, ServiceProductStatusEnum, ServicePromoCode, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, SetupItemTypeEnum, SharesightDetails, SharesightDetailsMessagesEnum, SharesightDetailsService, SharesightPortfolio, SharesightPortfolioMessages, SharesightPortfolioService, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossCollection, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessMessagesEnum, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsResolver, SoleDetailsService, SoleForecast, SoleForecastService, SoleIncomeForm, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemCollection, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStateEnum, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, StatesEnum, SubscriptionItemCollection, SubscriptionMessagesEnum, SubscriptionService, TAX_RETURN_CATEGORIES, TYPE_LOAN, TankTypeEnum, TaxCalculationMedicareExemptionEnum, TaxCalculationTypeEnum, TaxExemption, TaxExemptionCollection, TaxExemptionEnum, TaxExemptionMetaField, TaxExemptionMetaFieldEnum, TaxExemptionService, TaxReturn, TaxReturnCategory, TaxReturnCategoryListEnum, TaxReturnCategorySectionEnum, TaxReturnItem, TaxReturnItemEnum, TaxReturnItemService, TaxReview, TaxReviewCollection, TaxReviewFilterForm, TaxReviewFilterStatusEnum, TaxReviewHistoryService, TaxReviewMessagesEnum, TaxReviewService, TaxReviewStatusEnum, TaxSummary, TaxSummaryListEnum, TaxSummarySection, TaxSummarySectionEnum, TaxSummaryService, TaxSummaryTaxSummaryEnum, TaxSummaryTypeEnum, TicketFeedbackEnum, TicketStatusEnum, TicketTypesEnum, TimezoneEnum, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseCollection, TransactionBaseFilterForm, TransactionBaseForm, TransactionCategoryEnum, TransactionCollection, TransactionForm, TransactionMetaField, TransactionOperationEnum, TransactionReportItem, TransactionReportItemCollection, TransactionService, TransactionSourceEnum, TransactionTypeEnum, USER_ROLES, USER_WORK_POSITION, UniqueEmailValidator, User, UserCollection, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, UserEventTypeCollection, UserEventTypeEmployeeTypeEnum, UserEventTypeFrequencyEnum, UserEventTypeService, UserEventTypeUserTypeEnum, UserForm, UserInviteForm, UserMedicareExemptionEnum, UserMessagesEnum, UserService, UserStatusEnum, UserSwitcherService, UserTitleEnum, UserToRegister, UserWorkDepreciationCalculationEnum, UserWorkingHolidayMakerEnum, UsersInviteService, Vehicle, VehicleClaim, VehicleClaimCollection, VehicleClaimDetails, VehicleClaimDetailsForm, VehicleClaimDetailsMethodEnum, VehicleClaimDetailsService, VehicleClaimForm, VehicleClaimService, VehicleExpense, VehicleExpenseCollection, VehicleForm, VehicleLogbook, VehicleLogbookCollection, VehicleLogbookForm, VehicleLogbookMessages, VehicleLogbookPurposeEnum, VehicleLogbookService, VehicleMessagesEnum, VehicleService, WorkExpenseForm, WorkIncomeForm, XlsxService, YoutubeService, YoutubeVideosEnum, alphaSpaceValidator, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, currentFinYearValidator, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, greaterThanValidator, matchSumValidator, maxDateValidator, minDateValidator, passwordMatchValidator, passwordValidator, replace, sort, sortDeep, toArray };
25464
25631
  //# sourceMappingURL=taxtank-core.mjs.map