taxtank-core 1.0.23 → 1.0.25

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 (28) hide show
  1. package/README.md +5 -5
  2. package/fesm2022/taxtank-core-common.mjs.map +1 -1
  3. package/fesm2022/taxtank-core.mjs +265 -184
  4. package/fesm2022/taxtank-core.mjs.map +1 -1
  5. package/package.json +1 -1
  6. package/src/lib/collections/account-setup-item.collection.d.ts +5 -1
  7. package/src/lib/collections/bank-account.collection.d.ts +1 -1
  8. package/src/lib/collections/subscription/service-subscription.collection.d.ts +2 -0
  9. package/src/lib/db/Enums/index.d.ts +1 -0
  10. package/src/lib/db/Enums/setup-item-type.enum.d.ts +8 -2
  11. package/src/lib/db/Models/property/property.d.ts +1 -0
  12. package/src/lib/db/Models/setup-item.d.ts +4 -1
  13. package/src/lib/functions/transformer/transformDate.d.ts +3 -0
  14. package/src/lib/models/account-setup/account-setup-item-status.enum.d.ts +5 -0
  15. package/src/lib/models/account-setup/account-setup-item.d.ts +5 -12
  16. package/src/lib/models/account-setup/account-setup-items.enum.d.ts +29 -11
  17. package/src/lib/models/account-setup/index.d.ts +3 -0
  18. package/src/lib/models/bank/bank-account.d.ts +2 -0
  19. package/src/lib/models/financial-year/financial-year.d.ts +0 -2
  20. package/src/lib/models/index.d.ts +1 -0
  21. package/src/lib/models/user/user.d.ts +1 -1
  22. package/src/lib/services/account-setup/account-setup.service.d.ts +32 -14
  23. package/src/lib/services/http/firm/firm.service.d.ts +0 -4
  24. package/src/lib/services/http/loan/borrowing-expense/borrowing-expense.service.d.ts +2 -1
  25. package/src/lib/services/http/rest/rest-old.service.d.ts +1 -0
  26. package/src/lib/services/http/rest/rest.service.d.ts +1 -0
  27. package/src/lib/services/http/setup-item/setup-item.service.d.ts +1 -1
  28. package/src/lib/services/http/user/user.service.d.ts +4 -3
@@ -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)
@@ -1451,6 +1456,18 @@ var HomeOfficeClaimMethodEnum;
1451
1456
  HomeOfficeClaimMethodEnum[HomeOfficeClaimMethodEnum["OCCUPANCY"] = 3] = "OCCUPANCY";
1452
1457
  })(HomeOfficeClaimMethodEnum || (HomeOfficeClaimMethodEnum = {}));
1453
1458
 
1459
+ var SetupItemTypeEnum;
1460
+ (function (SetupItemTypeEnum) {
1461
+ SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 0] = "EMPLOYEE";
1462
+ SetupItemTypeEnum[SetupItemTypeEnum["WORK"] = 1] = "WORK";
1463
+ SetupItemTypeEnum[SetupItemTypeEnum["PROPERTIES"] = 2] = "PROPERTIES";
1464
+ SetupItemTypeEnum[SetupItemTypeEnum["PROPERTY"] = 3] = "PROPERTY";
1465
+ SetupItemTypeEnum[SetupItemTypeEnum["BUSINESS"] = 4] = "BUSINESS";
1466
+ SetupItemTypeEnum[SetupItemTypeEnum["HOLDING"] = 5] = "HOLDING";
1467
+ SetupItemTypeEnum[SetupItemTypeEnum["BANK_ACCOUNTS"] = 6] = "BANK_ACCOUNTS";
1468
+ SetupItemTypeEnum[SetupItemTypeEnum["BANK_ACCOUNT"] = 7] = "BANK_ACCOUNT";
1469
+ })(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
1470
+
1454
1471
  /**
1455
1472
  * @TODO not used for now
1456
1473
  * Bank subclass, average bank response time for some operations in milliseconds
@@ -1651,11 +1668,9 @@ class FinancialYear {
1651
1668
  }
1652
1669
  setStartDate(year) {
1653
1670
  this.startDate = new Date(`${year - 1}${this.yearStartDate}`);
1654
- this.startDateUTC = new Date(Date.UTC(this.startDate.getFullYear(), this.startDate.getMonth(), this.startDate.getDate()));
1655
1671
  }
1656
1672
  setEndDate(year) {
1657
1673
  this.endDate = new Date(`${year}${this.yearEndDate}`);
1658
- this.endDateUTC = new Date(Date.UTC(this.endDate.getFullYear(), this.endDate.getMonth(), this.endDate.getDate()));
1659
1674
  }
1660
1675
  getPastMonths() {
1661
1676
  const months = [];
@@ -5366,61 +5381,72 @@ __decorate([
5366
5381
  class SetupItem extends AbstractModel {
5367
5382
  }
5368
5383
 
5369
- /**
5370
- * Enum list of all possible account setup items ids. Using with [ACCOUNT_SETUP_ITEMS]{@link ACCOUNT_SETUP_ITEMS}
5371
- * @TODO Vik/Nikita: Do we need to generate it from backend? If some ids changed?
5372
- */
5373
- var AccountSetupItemsEnum;
5374
- (function (AccountSetupItemsEnum) {
5375
- AccountSetupItemsEnum[AccountSetupItemsEnum["SALARY"] = 1] = "SALARY";
5376
- AccountSetupItemsEnum[AccountSetupItemsEnum["OTHER_INCOME"] = 2] = "OTHER_INCOME";
5377
- AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY"] = 3] = "PROPERTY";
5378
- AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_FEEDS"] = 4] = "BANK_FEEDS";
5379
- AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_LOGBOOK"] = 5] = "WORK_LOGBOOK";
5380
- AccountSetupItemsEnum[AccountSetupItemsEnum["TRANSACTION_ALLOCATE"] = 6] = "TRANSACTION_ALLOCATE";
5381
- AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESS"] = 7] = "SOLE_BUSINESS";
5382
- AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDINGS"] = 8] = "HOLDINGS";
5383
- AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_DETAILS"] = 9] = "FIRM_DETAILS";
5384
- AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_TEAM"] = 10] = "INVITE_TEAM";
5385
- AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_CLIENTS"] = 11] = "INVITE_CLIENTS";
5386
- })(AccountSetupItemsEnum || (AccountSetupItemsEnum = {}));
5384
+ var AccountSetupItemStatusEnum;
5385
+ (function (AccountSetupItemStatusEnum) {
5386
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["PENDING"] = 1] = "PENDING";
5387
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["ACHIEVED"] = 2] = "ACHIEVED";
5388
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["SKIPPED"] = 3] = "SKIPPED";
5389
+ })(AccountSetupItemStatusEnum || (AccountSetupItemStatusEnum = {}));
5387
5390
 
5388
5391
  class AccountSetupItem extends SetupItem {
5389
- get isSalary() {
5390
- return this.id === AccountSetupItemsEnum.SALARY;
5391
- }
5392
- get isOtherIncome() {
5393
- return this.id === AccountSetupItemsEnum.OTHER_INCOME;
5394
- }
5395
- get isProperty() {
5396
- return this.id === AccountSetupItemsEnum.PROPERTY;
5397
- }
5398
- get isBankFeeds() {
5399
- return this.id === AccountSetupItemsEnum.BANK_FEEDS;
5400
- }
5401
- get isWorkLogbook() {
5402
- return this.id === AccountSetupItemsEnum.WORK_LOGBOOK;
5403
- }
5404
- get isTransactionAllocate() {
5405
- return this.id === AccountSetupItemsEnum.TRANSACTION_ALLOCATE;
5392
+ get isPending() {
5393
+ return this.status === AccountSetupItemStatusEnum.PENDING;
5406
5394
  }
5407
- get isSoleBusiness() {
5408
- return this.id === AccountSetupItemsEnum.SOLE_BUSINESS;
5395
+ get isAchieved() {
5396
+ return this.status === AccountSetupItemStatusEnum.SKIPPED;
5409
5397
  }
5410
- get isHoldings() {
5411
- return this.id === AccountSetupItemsEnum.HOLDINGS;
5398
+ get isCompleted() {
5399
+ return [AccountSetupItemStatusEnum.ACHIEVED, AccountSetupItemStatusEnum.SKIPPED].includes(this.status);
5412
5400
  }
5413
- get isFirmDetails() {
5414
- return this.id === AccountSetupItemsEnum.FIRM_DETAILS;
5415
- }
5416
- get isInviteTeam() {
5417
- return this.id === AccountSetupItemsEnum.INVITE_TEAM;
5418
- }
5419
- get isInviteClients() {
5420
- return this.id === AccountSetupItemsEnum.INVITE_CLIENTS;
5401
+ get isSkipped() {
5402
+ return this.status === AccountSetupItemStatusEnum.SKIPPED;
5421
5403
  }
5422
5404
  }
5423
5405
 
5406
+ /**
5407
+ * TODO remove
5408
+ */
5409
+ var AccountSetupItemsEnum;
5410
+ (function (AccountSetupItemsEnum) {
5411
+ // firm
5412
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_DETAILS"] = 9] = "FIRM_DETAILS";
5413
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_EMPLOYEES"] = 10] = "FIRM_EMPLOYEES";
5414
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_CLIENTS"] = 11] = "FIRM_CLIENTS";
5415
+ // work
5416
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_SALARY"] = 1] = "WORK_SALARY";
5417
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_OTHER_INCOME"] = 2] = "WORK_OTHER_INCOME";
5418
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_VEHICLE_CLAIM"] = 5] = "WORK_VEHICLE_CLAIM";
5419
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_HOME_OFFICE"] = 13] = "WORK_HOME_OFFICE";
5420
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_BANK_ACCOUNT"] = 14] = "WORK_BANK_ACCOUNT";
5421
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_DEPRECIATION"] = 15] = "WORK_DEPRECIATION";
5422
+ // properties
5423
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY"] = 3] = "PROPERTY";
5424
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTIES"] = 29] = "PROPERTIES";
5425
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTIES_BANK_ACCOUNT"] = 30] = "PROPERTIES_BANK_ACCOUNT";
5426
+ // property
5427
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_CAPITAL_COST"] = 17] = "PROPERTY_CAPITAL_COST";
5428
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_RENT_INCOME"] = 18] = "PROPERTY_RENT_INCOME";
5429
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_DEPRECIATION"] = 19] = "PROPERTY_DEPRECIATION";
5430
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_CO_OWNER"] = 20] = "PROPERTY_CO_OWNER";
5431
+ // sole
5432
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESS"] = 7] = "SOLE_BUSINESS";
5433
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESSES"] = 33] = "SOLE_BUSINESSES";
5434
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_VEHICLE_CLAIM"] = 12] = "SOLE_VEHICLE_CLAIM";
5435
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_HOME_OFFICE"] = 21] = "SOLE_HOME_OFFICE";
5436
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_DEPRECIATION"] = 22] = "SOLE_DEPRECIATION";
5437
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BANK_ACCOUNT"] = 23] = "SOLE_BANK_ACCOUNT";
5438
+ // holding
5439
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_TRADE"] = 8] = "HOLDING_TRADE";
5440
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_INTEGRATION"] = 25] = "HOLDING_INTEGRATION";
5441
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_REPORTS"] = 36] = "HOLDING_REPORTS";
5442
+ // bank accounts
5443
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_CONNECTION"] = 4] = "BANK_CONNECTION";
5444
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_ACCOUNT"] = 26] = "BANK_ACCOUNT";
5445
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_ALLOCATION"] = 6] = "BANK_ALLOCATION";
5446
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_RULE"] = 27] = "BANK_RULE";
5447
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_BORROWING_EXPENSE"] = 28] = "BANK_BORROWING_EXPENSE";
5448
+ })(AccountSetupItemsEnum || (AccountSetupItemsEnum = {}));
5449
+
5424
5450
  class User extends User$1 {
5425
5451
  constructor() {
5426
5452
  super(...arguments);
@@ -8532,6 +8558,9 @@ class ServiceSubscriptionCollection extends Collection {
8532
8558
  getPaid() {
8533
8559
  return this.filter((subscription) => !!subscription.stripeId);
8534
8560
  }
8561
+ getRoles() {
8562
+ return this.items.flatMap((subscription) => subscription.roles);
8563
+ }
8535
8564
  getActivePaid() {
8536
8565
  return this.getActive().find((subscription) => !!subscription.stripeId);
8537
8566
  }
@@ -8558,6 +8587,9 @@ class ServiceSubscriptionCollection extends Collection {
8558
8587
  filterByRole(role) {
8559
8588
  return this.filter((subscription) => subscription.roles.includes(role));
8560
8589
  }
8590
+ findByRole(role) {
8591
+ return this.filterByRole(role).first;
8592
+ }
8561
8593
  hasPropertyTank() {
8562
8594
  return !!this.getItems().propertiesItem;
8563
8595
  }
@@ -8963,11 +8995,25 @@ class AllocationRuleCollection extends Collection {
8963
8995
  class AccountSetupItemCollection extends Collection {
8964
8996
  constructor(items) {
8965
8997
  super(compact(items));
8966
- this.sortBy('isCompleted', 'asc');
8998
+ this.sortBy('status', 'asc');
8967
8999
  }
8968
9000
  isCompleted() {
8969
9001
  return this.filterBy('isCompleted', true).length === this.length;
8970
9002
  }
9003
+ getByUser(user) {
9004
+ return this.filter(item => user.hasRoles(item.roles));
9005
+ }
9006
+ getScore() {
9007
+ return this.sumBy('score');
9008
+ }
9009
+ setUrlId(id) {
9010
+ this.items.forEach(item => {
9011
+ if (!item.url.includes(':id')) {
9012
+ return;
9013
+ }
9014
+ item.url = item.url.replace(':id', id);
9015
+ });
9016
+ }
8971
9017
  }
8972
9018
 
8973
9019
  /**
@@ -9027,7 +9073,7 @@ class BankAccountCollection extends Collection {
9027
9073
  * Get Collection of bank accounts by tank type
9028
9074
  */
9029
9075
  getByTankType(tankType) {
9030
- return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.tankType === tankType));
9076
+ return new BankAccountCollection(tankType ? this.items.filter((bankAccount) => bankAccount.tankType === tankType) : this.items);
9031
9077
  }
9032
9078
  /**
9033
9079
  * Get list of all bank account properties
@@ -9879,6 +9925,15 @@ const TYPE_LOAN = [
9879
9925
  BankAccountTypeEnum.LOAN,
9880
9926
  ];
9881
9927
 
9928
+ function TransformDate(format = 'YYYY-MM-DD', params = { toPlainOnly: true }) {
9929
+ return Transform(({ value }) => {
9930
+ if (!(value instanceof Date)) {
9931
+ return value;
9932
+ }
9933
+ return moment(value).format(format);
9934
+ }, params);
9935
+ }
9936
+
9882
9937
  class BankAccount extends BankAccount$1 {
9883
9938
  get bank() {
9884
9939
  return this.bankConnection.bank;
@@ -10033,6 +10088,12 @@ __decorate([
10033
10088
  __decorate([
10034
10089
  Type(() => BankConnection)
10035
10090
  ], BankAccount.prototype, "bankConnection", void 0);
10091
+ __decorate([
10092
+ TransformDate()
10093
+ ], BankAccount.prototype, "migrateFrom", void 0);
10094
+ __decorate([
10095
+ TransformDate()
10096
+ ], BankAccount.prototype, "migrateTo", void 0);
10036
10097
 
10037
10098
  /**
10038
10099
  * bank account collection UI class with frontend specific data
@@ -11539,8 +11600,9 @@ let RestService$1 = class RestService extends DataService {
11539
11600
  * Refresh cache with actual backend data
11540
11601
  */
11541
11602
  refreshCache() {
11603
+ // todo why not fetch?
11542
11604
  this.cache = undefined;
11543
- this.get();
11605
+ this.get().subscribe();
11544
11606
  }
11545
11607
  /**
11546
11608
  * perform a shallow copy of the emitted data to make it immutable
@@ -11552,17 +11614,17 @@ let RestService$1 = class RestService extends DataService {
11552
11614
  * Get data from backend and fill the cache
11553
11615
  */
11554
11616
  fetch(path = this.apiUrl, cache = true, queryParams = {}) {
11555
- if (cache) {
11556
- // Set cache as empty collection to avoid multiple requests before cache filled
11557
- this.setCache([]);
11617
+ if (this.inFlight$) {
11618
+ return this.inFlight$;
11558
11619
  }
11559
- return this.http.get(path, queryParams)
11620
+ this.inFlight$ = this.http.get(path, queryParams)
11560
11621
  .pipe(map((response) => Array.isArray(response) ? response : toArray(response)), map((response) => {
11561
11622
  if (cache) {
11562
11623
  this.setCache(response, true);
11563
11624
  }
11564
11625
  return this.createCollectionInstance(this.collectionClass, response);
11565
- }), catchError((error) => this.handleError(error)));
11626
+ }), catchError((error) => this.handleError(error)), finalize(() => this.inFlight$ = null), shareReplay({ bufferSize: 1, refCount: true }));
11627
+ return this.inFlight$;
11566
11628
  }
11567
11629
  fetchFirst(queryParams = {}) {
11568
11630
  return this.fetch(this.apiUrl, false, { params: queryParams })
@@ -11571,10 +11633,11 @@ let RestService$1 = class RestService extends DataService {
11571
11633
  get(path = this.apiUrl) {
11572
11634
  this.handleAccessError('get');
11573
11635
  if (!this.hasRoles()) {
11636
+ // @TODO it completes observable and doesn't watch anymore
11574
11637
  return of(this.createCollectionInstance(this.collectionClass, []));
11575
11638
  }
11576
11639
  if (!this.cache) {
11577
- this.fetch(path).pipe(first$1()).subscribe();
11640
+ return this.fetch(path).pipe(switchMap(() => this.getCacheSubjectObservable()));
11578
11641
  }
11579
11642
  return this.getCacheSubjectObservable();
11580
11643
  }
@@ -13369,22 +13432,17 @@ class FirmService {
13369
13432
  this.environment = environment;
13370
13433
  this.firmSubject = new ReplaySubject(1);
13371
13434
  }
13372
- /**
13373
- * Register new firm
13374
- * @param data: firm and firm owner data to register
13375
- */
13376
13435
  register(data) {
13377
13436
  return this.http.post(`${this.environment.apiV2}/firms/registration`, data)
13378
13437
  .pipe(map((firm) => plainToClass(Firm, firm)));
13379
13438
  }
13380
13439
  get() {
13381
13440
  if (!this.firm) {
13382
- this.http.get(`${this.environment.apiV2}/firms/current`)
13383
- .pipe(map((firm) => plainToClass(Firm, firm)))
13384
- .subscribe((firm) => {
13385
- this.firm = firm;
13441
+ return this.http.get(`${this.environment.apiV2}/firms/current`).pipe(map((firm) => {
13442
+ this.firm = plainToClass(Firm, firm);
13386
13443
  this.firmSubject.next(this.firm);
13387
- });
13444
+ return this.firm;
13445
+ }), switchMap(() => this.firmSubject.asObservable()));
13388
13446
  }
13389
13447
  return this.firmSubject.asObservable();
13390
13448
  }
@@ -13469,24 +13527,25 @@ class RestService {
13469
13527
  * get list of base class instances directly from backend
13470
13528
  */
13471
13529
  fetch(path = this.apiUrl, cache = true, params = {}) {
13472
- if (cache) {
13473
- this.setCache([]);
13530
+ if (this.inFlight$) {
13531
+ return this.inFlight$;
13474
13532
  }
13475
- return this.http.get(path, { params: params })
13533
+ this.inFlight$ = this.http.get(path, { params: params })
13476
13534
  .pipe(map((response) => {
13477
13535
  const items = response.map((item) => this.createModelInstance(item));
13478
13536
  if (cache) {
13479
13537
  this.setCache(items, true);
13480
13538
  }
13481
13539
  return items;
13482
- }));
13540
+ }), finalize(() => this.inFlight$ = null), shareReplay({ bufferSize: 1, refCount: true }));
13541
+ return this.inFlight$;
13483
13542
  }
13484
13543
  /**
13485
13544
  * get cached list of all instances
13486
13545
  */
13487
13546
  get(path = this.apiUrl) {
13488
13547
  if (!this.cache) {
13489
- this.fetch(path).pipe(first$1()).subscribe();
13548
+ return this.fetch(path).pipe(first$1(), switchMap(() => this.getCacheSubjectObservable()));
13490
13549
  }
13491
13550
  return this.getCacheSubjectObservable();
13492
13551
  }
@@ -13635,7 +13694,7 @@ class RestService {
13635
13694
  */
13636
13695
  refreshCache() {
13637
13696
  this.setCache(undefined);
13638
- this.get();
13697
+ this.get().subscribe();
13639
13698
  }
13640
13699
  setCache(data, next = false) {
13641
13700
  this.cache = data;
@@ -16545,6 +16604,14 @@ class UserService extends RestService$1 {
16545
16604
  this.setCache([Object.assign(this.getCacheFirst(), { photo: photoUrl })], true);
16546
16605
  }));
16547
16606
  }
16607
+ addRoles(roles = []) {
16608
+ const user = this.getCacheFirst();
16609
+ if (!user) {
16610
+ return;
16611
+ }
16612
+ user.roles = [...new Set([...user.roles || [], ...roles])];
16613
+ this.setCache([user], true);
16614
+ }
16548
16615
  createBasiq() {
16549
16616
  return this.http.post(`${this.environment.apiV2}/basiq/user`, {})
16550
16617
  .pipe(map((basiqId) => {
@@ -16557,15 +16624,18 @@ class UserService extends RestService$1 {
16557
16624
  user.blacklistSetupItems.push(item);
16558
16625
  return this.put(user);
16559
16626
  }
16627
+ restoreSetupItem(item) {
16628
+ const user = clone(this.getCacheFirst());
16629
+ remove(user.blacklistSetupItems, (i) => i.id === item.id);
16630
+ return this.put(user);
16631
+ }
16560
16632
  /**
16561
16633
  * Update cache when user's service subscription is updated
16562
16634
  */
16563
16635
  listenServiceSubscriptionUpdated() {
16564
- this.listenCSE(ServiceSubscription, (response) => {
16565
- // @TODO vik test and remove
16566
- setTimeout(() => {
16567
- this.refreshCache();
16568
- }, 2000);
16636
+ this.listenCSE(ServiceSubscription, (subscriptions) => {
16637
+ const subscriptionCollection = new ServiceSubscriptionCollection(subscriptions);
16638
+ this.addRoles(subscriptionCollection.getRoles());
16569
16639
  }, ['post', 'put']);
16570
16640
  }
16571
16641
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: UserService, deps: [{ token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -19190,12 +19260,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19190
19260
  }]
19191
19261
  }], ctorParameters: () => [] });
19192
19262
 
19193
- var SetupItemTypeEnum;
19194
- (function (SetupItemTypeEnum) {
19195
- SetupItemTypeEnum[SetupItemTypeEnum["CLIENT"] = 1] = "CLIENT";
19196
- SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 2] = "EMPLOYEE";
19197
- })(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
19198
-
19199
19263
  class SetupItemService extends RestService$1 {
19200
19264
  constructor() {
19201
19265
  super(...arguments);
@@ -19219,14 +19283,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19219
19283
  * Checks required steps and their completion
19220
19284
  */
19221
19285
  class AccountSetupService {
19222
- constructor(setupItemService, propertyService, incomeSourceService, bankAccountsService, transactionAllocationService, vehicleClaimService, transactionService, soleBusinessService, holdingService, userService, clientMovementService, clientInviteService, employeeService, employeeInviteService, firmService) {
19286
+ constructor(setupItemService, propertyService, incomeSourceService, bankConnectionService, bankAccountsService, loanService, allocationRuleService, transactionAllocationService, vehicleClaimService, homeOfficeClaimService, transactionService, depreciationService, soleBusinessService, holdingService, userService, clientMovementService, clientInviteService, employeeService, employeeInviteService, firmService, sharesightDetailsService, propertyShareService) {
19223
19287
  this.setupItemService = setupItemService;
19224
19288
  this.propertyService = propertyService;
19225
19289
  this.incomeSourceService = incomeSourceService;
19290
+ this.bankConnectionService = bankConnectionService;
19226
19291
  this.bankAccountsService = bankAccountsService;
19292
+ this.loanService = loanService;
19293
+ this.allocationRuleService = allocationRuleService;
19227
19294
  this.transactionAllocationService = transactionAllocationService;
19228
19295
  this.vehicleClaimService = vehicleClaimService;
19296
+ this.homeOfficeClaimService = homeOfficeClaimService;
19229
19297
  this.transactionService = transactionService;
19298
+ this.depreciationService = depreciationService;
19230
19299
  this.soleBusinessService = soleBusinessService;
19231
19300
  this.holdingService = holdingService;
19232
19301
  this.userService = userService;
@@ -19235,101 +19304,110 @@ class AccountSetupService {
19235
19304
  this.employeeService = employeeService;
19236
19305
  this.employeeInviteService = employeeInviteService;
19237
19306
  this.firmService = firmService;
19307
+ this.sharesightDetailsService = sharesightDetailsService;
19308
+ this.propertyShareService = propertyShareService;
19238
19309
  }
19239
19310
  /**
19240
19311
  * Get list of account setup items for current user/firm
19241
19312
  */
19242
- get(type) {
19243
- return combineLatest([
19244
- this.setupItemService.get(),
19245
- this.userService.getFirst()
19246
- ])
19247
- .pipe(mergeMap(([items, user]) => {
19248
- this.items = items;
19313
+ get(property) {
19314
+ // @TODO it takes time for user to update, makes sense to subscribe to serviceSubscription instead
19315
+ return combineLatest([this.setupItemService.get(), this.userService.getFirst()]).pipe(switchMap(([items, user]) => {
19249
19316
  this.user = user;
19250
- return type === SetupItemTypeEnum.CLIENT ? this.getClientItems$() : this.getFirmItems$();
19317
+ this.items = items.getByUser(user);
19318
+ return this.setItemsStatus(property);
19251
19319
  }));
19252
19320
  }
19253
- getClientItems$() {
19254
- const batch = [];
19255
- if (this.user.hasRoles(UserRolesEnum.WORK_TANK)) {
19256
- batch.push(
19257
- // Salary item is completed when user added salary income source
19258
- this.setItemStatus(this.items.findBy('isSalary', true), this.getIncomeSources(true)),
19259
- // Other income is a part of work tank, completed when user added at least one other income source
19260
- this.setItemStatus(this.items.findBy('isOtherIncome', true), this.getIncomeSources()));
19261
- }
19262
- // Rental income item is completed when user added at least one property
19263
- if (this.user.hasRoles(UserRolesEnum.PROPERTY_TANK)) {
19264
- batch.push(this.setItemStatus(this.items.findBy('isProperty', true), this.propertyService.getArray()));
19265
- }
19266
- // Sole business item is completed when user added at least one business
19267
- if (this.user.hasRoles(UserRolesEnum.SOLE_TANK)) {
19268
- batch.push(this.setItemStatus(this.items.findBy('isSoleBusiness', true), this.soleBusinessService.getArray()));
19269
- }
19270
- // holdings item is completed when user added at least one holding
19271
- if (this.user.hasRoles(UserRolesEnum.HOLDING_TANK)) {
19272
- batch.push(this.setItemStatus(this.items.findBy('isHoldings', true), this.holdingService.getArray()));
19273
- }
19274
- if (this.user.hasRoles([UserRolesEnum.WORK_TANK, UserRolesEnum.PROPERTY_TANK, UserRolesEnum.SOLE_TANK])) {
19275
- // Bank feeds item is completed when user added at least one bank account (basiq or manual)
19276
- batch.push(this.getBankFeedsItem());
19277
- // Logbook item is completed when user has at least one vehicle claim with any method (kms or logbook)
19278
- batch.push(this.getLogbookItem());
19279
- // Allocation item is completed when user added at least one transaction allocation
19280
- batch.push(this.setItemStatus(this.items.findBy('isTransactionAllocate', true), this.transactionAllocationService.get()));
19321
+ setItemsStatus(property) {
19322
+ const itemsById = this.items.indexBy('id');
19323
+ const requests = pick({
19324
+ // firm
19325
+ [AccountSetupItemsEnum.FIRM_DETAILS]: this.getFirms(),
19326
+ [AccountSetupItemsEnum.FIRM_EMPLOYEES]: this.getEmployees(),
19327
+ [AccountSetupItemsEnum.FIRM_CLIENTS]: this.getClients(),
19328
+ // work
19329
+ [AccountSetupItemsEnum.WORK_SALARY]: this.getIncomeSources(true),
19330
+ [AccountSetupItemsEnum.WORK_OTHER_INCOME]: this.getIncomeSources(false),
19331
+ [AccountSetupItemsEnum.WORK_VEHICLE_CLAIM]: this.getVehicleClaims(false),
19332
+ [AccountSetupItemsEnum.WORK_HOME_OFFICE]: this.getHomeOfficeClaims(false),
19333
+ [AccountSetupItemsEnum.WORK_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.WORK),
19334
+ [AccountSetupItemsEnum.WORK_DEPRECIATION]: this.getDepreciations(TankTypeEnum.WORK),
19335
+ // properties
19336
+ [AccountSetupItemsEnum.PROPERTY]: this.propertyService.getArray(),
19337
+ [AccountSetupItemsEnum.PROPERTIES]: this.propertyService.getArray().pipe(map(properties => properties.slice(1))),
19338
+ [AccountSetupItemsEnum.PROPERTIES_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.PROPERTY),
19339
+ // sole
19340
+ [AccountSetupItemsEnum.SOLE_BUSINESS]: this.soleBusinessService.getArray(),
19341
+ [AccountSetupItemsEnum.SOLE_BUSINESSES]: this.soleBusinessService.getArray().pipe(map(businesses => businesses.slice(1))),
19342
+ [AccountSetupItemsEnum.SOLE_VEHICLE_CLAIM]: this.getVehicleClaims(true),
19343
+ [AccountSetupItemsEnum.SOLE_HOME_OFFICE]: this.getHomeOfficeClaims(true),
19344
+ [AccountSetupItemsEnum.SOLE_DEPRECIATION]: this.getDepreciations(TankTypeEnum.SOLE),
19345
+ [AccountSetupItemsEnum.SOLE_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.SOLE),
19346
+ // holding
19347
+ [AccountSetupItemsEnum.HOLDING_TRADE]: this.holdingService.getArray(),
19348
+ [AccountSetupItemsEnum.HOLDING_INTEGRATION]: this.getSharesightDetails(true),
19349
+ // bankAccount
19350
+ [AccountSetupItemsEnum.BANK_CONNECTION]: this.bankConnectionService.getArray(),
19351
+ [AccountSetupItemsEnum.BANK_ACCOUNT]: this.getBankAccounts(),
19352
+ [AccountSetupItemsEnum.BANK_ALLOCATION]: this.transactionAllocationService.get(),
19353
+ [AccountSetupItemsEnum.BANK_RULE]: this.allocationRuleService.getArray(),
19354
+ [AccountSetupItemsEnum.BANK_BORROWING_EXPENSE]: this.getBorrowingExpenses(),
19355
+ }, this.items.getIds());
19356
+ // property
19357
+ if (property) {
19358
+ requests[AccountSetupItemsEnum.PROPERTY_CAPITAL_COST] = this.getProperties(property).pipe(map(properties => properties.filter(property => !!property.capitalCosts)));
19359
+ requests[AccountSetupItemsEnum.PROPERTY_RENT_INCOME] = this.getTransactions(property).pipe(map(transactions => new TransactionCollection(transactions).filterBy('chartAccounts.id', ChartAccountsListEnum.RENTAL_INCOME)));
19360
+ requests[AccountSetupItemsEnum.PROPERTY_DEPRECIATION] = this.getDepreciations(TankTypeEnum.PROPERTY, property);
19361
+ requests[AccountSetupItemsEnum.PROPERTY_CO_OWNER] = this.getCoOwners(property);
19362
+ }
19363
+ const batch = Object.keys(requests).map(id => this.setItemStatus(itemsById.get(id), requests[id]));
19364
+ if (!batch.length) {
19365
+ return of(new AccountSetupItemCollection([]));
19281
19366
  }
19282
19367
  return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items)));
19283
19368
  }
19284
- getFirmItems$() {
19285
- const batch = [];
19286
- batch.push(
19287
- // Firm Details item is completed when user filled some general information
19288
- this.firmService.get().pipe(map((firm) => {
19289
- const item = this.items.findBy('isFirmDetails', true);
19290
- if (firm.address || firm.phone || firm.file || firm.shortName) {
19291
- item.isCompleted = true;
19292
- }
19293
- return item;
19294
- })));
19295
- batch.push(
19296
- // Invite team item is completed when firm has employees except firm owner or firm has invited employees.
19297
- this.setItemStatus(this.items.findBy('isInviteTeam', true), combineLatest([
19298
- this.employeeService.getArray(),
19299
- this.employeeInviteService.getArray()
19300
- ]).pipe(map(([employees, invites]) => {
19301
- // we always have at least 1 employee (firm owner), so we should check other employees except firm owner
19302
- if (employees.length) {
19303
- employees.splice(0, 1);
19304
- }
19305
- return [...employees, ...invites];
19306
- }))));
19307
- batch.push(
19308
- // Invite clients item is completed when firm has clients or firm has invited clients.
19309
- this.setItemStatus(this.items.findBy('isInviteClients', true), combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()])
19310
- .pipe(map(([movements, invites]) => [...movements.toArray(), ...invites.toArray()]))));
19311
- return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items).sortBy('id', 'asc')));
19312
- }
19313
19369
  /**
19314
19370
  * Check and update isCompleted flag for passed item
19315
19371
  */
19316
19372
  setItemStatus(item, request) {
19317
19373
  return request.pipe(map((result) => {
19318
19374
  const isSkipped = !!this.user.blacklistSetupItems.find((skippedItem) => skippedItem.id === item.id);
19319
- if (result.length || isSkipped) {
19320
- item.isCompleted = true;
19321
- }
19322
- else {
19323
- item.isCompleted = false;
19324
- }
19375
+ item.status = isSkipped ? AccountSetupItemStatusEnum.SKIPPED : result.length ? AccountSetupItemStatusEnum.ACHIEVED : AccountSetupItemStatusEnum.PENDING;
19325
19376
  return item;
19326
19377
  }));
19327
19378
  }
19379
+ getProperties(property) {
19380
+ return this.propertyService.getBy('id', property.id).pipe(map(properties => properties));
19381
+ }
19382
+ getTransactions(property) {
19383
+ return this.transactionService.getByPropertyId(property.id);
19384
+ }
19385
+ getCoOwners(property) {
19386
+ return this.propertyShareService.getArrayBy('property.id', property.id).pipe(map(shares => shares.slice(1)));
19387
+ }
19388
+ /**
19389
+ * AccountSetupItemsEnum.FIRM_CLIENTS completed when client invites sent or accepted
19390
+ */
19391
+ getClients() {
19392
+ return combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()]).pipe(map(([movements, invites]) => [...movements, ...invites]));
19393
+ }
19394
+ /**
19395
+ * AccountSetupItemsEnum.FIRM_EMPLOYEES completed when employee invites sent or accepted
19396
+ */
19397
+ getEmployees() {
19398
+ return combineLatest([this.employeeService.getArray(), this.employeeInviteService.getArray()]).pipe(map(([employees, invites]) => [...employees.slice(1), ...invites]));
19399
+ }
19400
+ /**
19401
+ * AccountSetupItemsEnum.FIRM_DETAILS when firm data filled
19402
+ */
19403
+ getFirms() {
19404
+ return this.firmService.get().pipe(map((firm) => [firm].filter(firm => firm.address || firm.phone || firm.file || firm.shortName)));
19405
+ }
19328
19406
  /**
19329
19407
  * @TODO Alex: work with collection when services refactored
19330
19408
  * @TODO Vik: waiting for income sources refactoring
19331
19409
  */
19332
- getIncomeSources(isSalary = false) {
19410
+ getIncomeSources(isSalary) {
19333
19411
  return this.incomeSourceService.get().pipe(map((incomeSources) => {
19334
19412
  const collection = new IncomeSourceCollection(incomeSources);
19335
19413
  if (isSalary) {
@@ -19338,31 +19416,31 @@ class AccountSetupService {
19338
19416
  return collection.items.filter((incomeSource) => incomeSource.isOtherIncome());
19339
19417
  }));
19340
19418
  }
19341
- /**
19342
- * Show logbook item when user has at least 1 vehicle transaction
19343
- */
19344
- getLogbookItem() {
19345
- return this.transactionService.get()
19346
- .pipe(
19347
- // @TODO Alex: remove map when services start work with collections
19348
- map((transactions) => new TransactionCollection(transactions)), mergeMap((transactions) => {
19349
- if (transactions.getVehicleTransactions().length) {
19350
- return this.setItemStatus(this.items.findBy('isWorkLogbook', true), this.vehicleClaimService.getArray());
19419
+ getVehicleClaims(isBusiness) {
19420
+ return this.vehicleClaimService.getArray().pipe(map((claims => claims.filter(claim => isBusiness ? claim.business : !claim.business))));
19421
+ }
19422
+ getHomeOfficeClaims(isBusiness) {
19423
+ return this.homeOfficeClaimService.getArray().pipe(map(claims => claims.filter(claim => isBusiness ? claim.business : !claim.business)));
19424
+ }
19425
+ getBankAccounts(tankType) {
19426
+ return this.bankAccountsService.get().pipe(map((bankAccounts => bankAccounts.getByTankType(tankType).toArray())));
19427
+ }
19428
+ getDepreciations(tankType, property) {
19429
+ return this.depreciationService.get().pipe(map(depreciations => {
19430
+ depreciations = depreciations.getByTankType(tankType);
19431
+ if (property) {
19432
+ depreciations.filterBy('property.id', property.id);
19351
19433
  }
19352
- return of(null);
19434
+ return depreciations.toArray();
19353
19435
  }));
19354
19436
  }
19355
- /**
19356
- * Hide bank feeds item when user has only holding tank
19357
- */
19358
- getBankFeedsItem() {
19359
- const bankFeedsRoles = [UserRolesEnum.PROPERTY_TANK, UserRolesEnum.WORK_TANK, UserRolesEnum.SOLE_TANK];
19360
- if (!intersection(bankFeedsRoles, this.user.roles).length) {
19361
- return of(null);
19362
- }
19363
- return this.setItemStatus(this.items.findBy('isBankFeeds', true), this.bankAccountsService.getArray());
19437
+ getSharesightDetails(importEnabled) {
19438
+ return this.sharesightDetailsService.getArray().pipe(map(details => details.filter(detail => importEnabled ? detail.importEnabled : detail.exportEnabled)));
19439
+ }
19440
+ getBorrowingExpenses() {
19441
+ return this.loanService.getArray().pipe(map(loans => loans.filter(loan => !!loan.borrowingExpenses.length)));
19364
19442
  }
19365
- 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 }); }
19443
+ 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: 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 }); }
19366
19444
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, providedIn: 'root' }); }
19367
19445
  }
19368
19446
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, decorators: [{
@@ -19370,7 +19448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19370
19448
  args: [{
19371
19449
  providedIn: 'root'
19372
19450
  }]
19373
- }], 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 }] });
19451
+ }], ctorParameters: () => [{ type: SetupItemService }, { type: PropertyService }, { type: IncomeSourceService }, { type: BankConnectionService }, { type: BankAccountService }, { 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 }] });
19374
19452
 
19375
19453
  class AdblockService {
19376
19454
  constructor() {
@@ -20507,6 +20585,7 @@ const ENDPOINTS = {
20507
20585
  SERVICE_PAYMENTS_GET: new Endpoint('GET', '\\/service-payments'),
20508
20586
  SERVICE_SUBSCRIPTIONS_GET: new Endpoint('GET', '\\/service-subscriptions'),
20509
20587
  SERVICE_SUBSCRIPTIONS_POST: new Endpoint('POST', '\\/service-subscriptions'),
20588
+ SERVICE_SUBSCRIPTIONS_TRIAL_POST: new Endpoint('POST', '\\/service-subscriptions/'),
20510
20589
  SERVICE_SUBSCRIPTIONS_CANCEL: new Endpoint('PUT', '\\/service-subscriptions\\/\\d+\\/cancel'),
20511
20590
  SERVICE_SUBSCRIPTIONS_RENEW: new Endpoint('PUT', '\\/service-subscriptions\\/\\d+\\/renewal'),
20512
20591
  SERVICE_PAYMENT_INVOICE_URL_GET: new Endpoint('GET', '\\/service-payments\\/\\d+\\/invoice-url'),
@@ -20563,6 +20642,7 @@ const ENDPOINTS = {
20563
20642
  TRANSACTIONS_ALLOCATIONS_POST: new Endpoint('POST', '\\/transaction-allocations'),
20564
20643
  TRANSACTIONS_ALLOCATIONS_DELETE: new Endpoint('DELETE', '\\/transaction-allocations\\/\\d+'),
20565
20644
  TRANSACTIONS_ALLOCATIONS_BATCH_DELETE: new Endpoint('POST', '\\/transaction-allocations\\/delete'),
20645
+ TRIAL_POST: new Endpoint('POST', '\\/trial'),
20566
20646
  USER_CONFIRMATION_POST: new Endpoint('POST', '\\/users\\/confirmation'),
20567
20647
  USER_CONFIRMATION_RESEND_POST: new Endpoint('POST', '\\/users\\/confirmation\\/resend'),
20568
20648
  USER_CURRENT_GET: new Endpoint('GET', '\\/users\\/current'),
@@ -22842,10 +22922,11 @@ function atLeastOneEnabledValidator(arrayName) {
22842
22922
  * Form for import multiple basiq bank accounts
22843
22923
  */
22844
22924
  class BankAccountsImportForm extends AbstractForm {
22845
- static { this.minDate = new FinancialYear(new Date().getFullYear() - 1).startDateUTC; }
22846
- static { this.maxDate = new FinancialYear(new Date()).endDateUTC; }
22925
+ static { this.minDate = new FinancialYear(new Date().getFullYear() - 1).startDate; }
22926
+ static { this.maxDate = new FinancialYear(new Date()).endDate; }
22847
22927
  constructor(bankAccounts) {
22848
22928
  super({
22929
+ // @TODO should be part of each bankAccount model
22849
22930
  migrateFrom: new UntypedFormControl(BankAccountsImportForm.minDate, [Validators.required, dateRangeValidator(BankAccountsImportForm.minDate, BankAccountsImportForm.maxDate)]),
22850
22931
  migrateTo: new UntypedFormControl(new Date(), [Validators.required, dateRangeValidator(BankAccountsImportForm.minDate, BankAccountsImportForm.maxDate)]),
22851
22932
  bankAccounts: new UntypedFormArray(bankAccounts.map((bankAccount) => new BankAccountImportForm(bankAccount)))
@@ -25420,5 +25501,5 @@ var MessagesEnum;
25420
25501
  * Generated bundle index. Do not edit.
25421
25502
  */
25422
25503
 
25423
- 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, 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 };
25504
+ 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, 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, 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 };
25424
25505
  //# sourceMappingURL=taxtank-core.mjs.map