taxtank-core 1.0.32 → 1.0.34

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 (33) 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 +321 -186
  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/db/Enums/index.d.ts +1 -0
  12. package/src/lib/db/Enums/setup-item-type.enum.d.ts +9 -2
  13. package/src/lib/db/Enums/youtube-videos.enum.d.ts +14 -0
  14. package/src/lib/db/Models/property/property.d.ts +1 -0
  15. package/src/lib/db/Models/setup-item.d.ts +4 -1
  16. package/src/lib/db/Models/sole/sole-business.d.ts +0 -1
  17. package/src/lib/models/account-setup/account-setup-item-status.enum.d.ts +5 -0
  18. package/src/lib/models/account-setup/account-setup-item.d.ts +5 -12
  19. package/src/lib/models/account-setup/account-setup-items.enum.d.ts +30 -11
  20. package/src/lib/models/account-setup/index.d.ts +3 -0
  21. package/src/lib/models/index.d.ts +1 -0
  22. package/src/lib/models/user/user.d.ts +2 -1
  23. package/src/lib/resolvers/business/business.resolver.d.ts +11 -0
  24. package/src/lib/resolvers/business/sole-details.resolver.d.ts +11 -0
  25. package/src/lib/resolvers/index.d.ts +2 -0
  26. package/src/lib/services/account-setup/account-setup.service.d.ts +32 -15
  27. package/src/lib/services/http/firm/firm.service.d.ts +0 -4
  28. package/src/lib/services/http/loan/borrowing-expense/borrowing-expense.service.d.ts +2 -1
  29. package/src/lib/services/http/rest/rest-old.service.d.ts +1 -0
  30. package/src/lib/services/http/rest/rest.service.d.ts +1 -0
  31. package/src/lib/services/http/setup-item/setup-item.service.d.ts +1 -1
  32. package/src/lib/services/http/subscription/service-subscription/subscription.service.d.ts +1 -0
  33. 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)
@@ -1454,6 +1459,19 @@ var HomeOfficeClaimMethodEnum;
1454
1459
  HomeOfficeClaimMethodEnum[HomeOfficeClaimMethodEnum["OCCUPANCY"] = 3] = "OCCUPANCY";
1455
1460
  })(HomeOfficeClaimMethodEnum || (HomeOfficeClaimMethodEnum = {}));
1456
1461
 
1462
+ var SetupItemTypeEnum;
1463
+ (function (SetupItemTypeEnum) {
1464
+ SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 0] = "EMPLOYEE";
1465
+ SetupItemTypeEnum[SetupItemTypeEnum["WORK"] = 1] = "WORK";
1466
+ SetupItemTypeEnum[SetupItemTypeEnum["PROPERTIES"] = 2] = "PROPERTIES";
1467
+ SetupItemTypeEnum[SetupItemTypeEnum["PROPERTY"] = 3] = "PROPERTY";
1468
+ SetupItemTypeEnum[SetupItemTypeEnum["BUSINESSES"] = 4] = "BUSINESSES";
1469
+ SetupItemTypeEnum[SetupItemTypeEnum["HOLDING"] = 5] = "HOLDING";
1470
+ SetupItemTypeEnum[SetupItemTypeEnum["BANK_ACCOUNTS"] = 6] = "BANK_ACCOUNTS";
1471
+ SetupItemTypeEnum[SetupItemTypeEnum["BANK_ACCOUNT"] = 7] = "BANK_ACCOUNT";
1472
+ SetupItemTypeEnum[SetupItemTypeEnum["BUSINESS"] = 8] = "BUSINESS";
1473
+ })(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
1474
+
1457
1475
  /**
1458
1476
  * @TODO not used for now
1459
1477
  * Bank subclass, average bank response time for some operations in milliseconds
@@ -5367,61 +5385,73 @@ __decorate([
5367
5385
  class SetupItem extends AbstractModel {
5368
5386
  }
5369
5387
 
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 = {}));
5388
+ var AccountSetupItemStatusEnum;
5389
+ (function (AccountSetupItemStatusEnum) {
5390
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["PENDING"] = 1] = "PENDING";
5391
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["ACHIEVED"] = 2] = "ACHIEVED";
5392
+ AccountSetupItemStatusEnum[AccountSetupItemStatusEnum["SKIPPED"] = 3] = "SKIPPED";
5393
+ })(AccountSetupItemStatusEnum || (AccountSetupItemStatusEnum = {}));
5388
5394
 
5389
5395
  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;
5396
+ get isPending() {
5397
+ return this.status === AccountSetupItemStatusEnum.PENDING;
5398
5398
  }
5399
- get isBankFeeds() {
5400
- return this.id === AccountSetupItemsEnum.BANK_FEEDS;
5399
+ get isAchieved() {
5400
+ return this.status === AccountSetupItemStatusEnum.SKIPPED;
5401
5401
  }
5402
- get isWorkLogbook() {
5403
- return this.id === AccountSetupItemsEnum.WORK_LOGBOOK;
5402
+ get isCompleted() {
5403
+ return [AccountSetupItemStatusEnum.ACHIEVED, AccountSetupItemStatusEnum.SKIPPED].includes(this.status);
5404
5404
  }
5405
- get isTransactionAllocate() {
5406
- return this.id === AccountSetupItemsEnum.TRANSACTION_ALLOCATE;
5407
- }
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;
5405
+ get isSkipped() {
5406
+ return this.status === AccountSetupItemStatusEnum.SKIPPED;
5422
5407
  }
5423
5408
  }
5424
5409
 
5410
+ /**
5411
+ * TODO remove
5412
+ */
5413
+ var AccountSetupItemsEnum;
5414
+ (function (AccountSetupItemsEnum) {
5415
+ // firm
5416
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_DETAILS"] = 9] = "FIRM_DETAILS";
5417
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_EMPLOYEES"] = 10] = "FIRM_EMPLOYEES";
5418
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_CLIENTS"] = 11] = "FIRM_CLIENTS";
5419
+ // work
5420
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_SALARY"] = 1] = "WORK_SALARY";
5421
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_OTHER_INCOME"] = 2] = "WORK_OTHER_INCOME";
5422
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_VEHICLE_CLAIM"] = 5] = "WORK_VEHICLE_CLAIM";
5423
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_HOME_OFFICE"] = 13] = "WORK_HOME_OFFICE";
5424
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_BANK_ACCOUNT"] = 14] = "WORK_BANK_ACCOUNT";
5425
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_DEPRECIATION"] = 15] = "WORK_DEPRECIATION";
5426
+ // properties
5427
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY"] = 3] = "PROPERTY";
5428
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTIES"] = 29] = "PROPERTIES";
5429
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTIES_BANK_ACCOUNT"] = 30] = "PROPERTIES_BANK_ACCOUNT";
5430
+ // property
5431
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_CAPITAL_COST"] = 17] = "PROPERTY_CAPITAL_COST";
5432
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_RENT_INCOME"] = 18] = "PROPERTY_RENT_INCOME";
5433
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_DEPRECIATION"] = 19] = "PROPERTY_DEPRECIATION";
5434
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY_CO_OWNER"] = 20] = "PROPERTY_CO_OWNER";
5435
+ // sole
5436
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESS"] = 7] = "SOLE_BUSINESS";
5437
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESSES"] = 33] = "SOLE_BUSINESSES";
5438
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_VEHICLE_CLAIM"] = 12] = "SOLE_VEHICLE_CLAIM";
5439
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_HOME_OFFICE"] = 21] = "SOLE_HOME_OFFICE";
5440
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_DEPRECIATION"] = 22] = "SOLE_DEPRECIATION";
5441
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BANK_ACCOUNT"] = 23] = "SOLE_BANK_ACCOUNT";
5442
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_LOGO"] = 24] = "SOLE_LOGO";
5443
+ // holding
5444
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_TRADE"] = 8] = "HOLDING_TRADE";
5445
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_INTEGRATION"] = 25] = "HOLDING_INTEGRATION";
5446
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDING_REPORTS"] = 36] = "HOLDING_REPORTS";
5447
+ // bank accounts
5448
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_CONNECTION"] = 4] = "BANK_CONNECTION";
5449
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_ACCOUNT"] = 26] = "BANK_ACCOUNT";
5450
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_ALLOCATION"] = 6] = "BANK_ALLOCATION";
5451
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_RULE"] = 27] = "BANK_RULE";
5452
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_BORROWING_EXPENSE"] = 28] = "BANK_BORROWING_EXPENSE";
5453
+ })(AccountSetupItemsEnum || (AccountSetupItemsEnum = {}));
5454
+
5425
5455
  class User extends User$1 {
5426
5456
  constructor() {
5427
5457
  super(...arguments);
@@ -5455,6 +5485,9 @@ class User extends User$1 {
5455
5485
  return '';
5456
5486
  }
5457
5487
  }
5488
+ addRoles(roles = []) {
5489
+ this.roles = [...new Set([...this.roles, ...roles])];
5490
+ }
5458
5491
  /**
5459
5492
  * search roles including hierarchy
5460
5493
  */
@@ -8538,6 +8571,24 @@ class ServiceSubscriptionCollection extends Collection {
8538
8571
  getPaid() {
8539
8572
  return this.filter((subscription) => !!subscription.stripeId);
8540
8573
  }
8574
+ getRoles() {
8575
+ const roles = this.items.flatMap((subscription) => subscription.roles);
8576
+ if (this.getActive().length) {
8577
+ roles.push(UserRolesEnum.SUBSCRIPTION);
8578
+ }
8579
+ return roles;
8580
+ }
8581
+ /**
8582
+ * search roles including hierarchy
8583
+ */
8584
+ hasRoles(roles) {
8585
+ roles = roles instanceof Array ? roles : [roles];
8586
+ if (!roles.length) {
8587
+ return true;
8588
+ }
8589
+ roles = flatten(roles.map((role) => USER_ROLES[role]));
8590
+ return !!intersection(this.getRoles(), roles).length;
8591
+ }
8541
8592
  getActivePaid() {
8542
8593
  return this.getActive().find((subscription) => !!subscription.stripeId);
8543
8594
  }
@@ -8564,6 +8615,9 @@ class ServiceSubscriptionCollection extends Collection {
8564
8615
  filterByRole(role) {
8565
8616
  return this.filter((subscription) => subscription.roles.includes(role));
8566
8617
  }
8618
+ findByRole(role) {
8619
+ return this.filterByRole(role).first;
8620
+ }
8567
8621
  hasPropertyTank() {
8568
8622
  return !!this.getItems().propertiesItem;
8569
8623
  }
@@ -8969,11 +9023,25 @@ class AllocationRuleCollection extends Collection {
8969
9023
  class AccountSetupItemCollection extends Collection {
8970
9024
  constructor(items) {
8971
9025
  super(compact(items));
8972
- this.sortBy('isCompleted', 'asc');
9026
+ this.sortBy('status', 'asc');
8973
9027
  }
8974
9028
  isCompleted() {
8975
9029
  return this.filterBy('isCompleted', true).length === this.length;
8976
9030
  }
9031
+ getByUser(user) {
9032
+ return this.filter(item => user.hasRoles(item.roles));
9033
+ }
9034
+ getScore() {
9035
+ return this.sumBy('score');
9036
+ }
9037
+ setUrlId(id) {
9038
+ this.items.forEach(item => {
9039
+ if (!item.url.includes(':id')) {
9040
+ return;
9041
+ }
9042
+ item.url = item.url.replace(':id', id);
9043
+ });
9044
+ }
8977
9045
  }
8978
9046
 
8979
9047
  /**
@@ -9033,7 +9101,7 @@ class BankAccountCollection extends Collection {
9033
9101
  * Get Collection of bank accounts by tank type
9034
9102
  */
9035
9103
  getByTankType(tankType) {
9036
- return new BankAccountCollection(this.items.filter((bankAccount) => bankAccount.tankType === tankType));
9104
+ return new BankAccountCollection(tankType ? this.items.filter((bankAccount) => bankAccount.tankType === tankType) : this.items);
9037
9105
  }
9038
9106
  /**
9039
9107
  * Get list of all bank account properties
@@ -11560,8 +11628,9 @@ let RestService$1 = class RestService extends DataService {
11560
11628
  * Refresh cache with actual backend data
11561
11629
  */
11562
11630
  refreshCache() {
11631
+ // todo why not fetch?
11563
11632
  this.cache = undefined;
11564
- this.get();
11633
+ this.get().subscribe();
11565
11634
  }
11566
11635
  /**
11567
11636
  * perform a shallow copy of the emitted data to make it immutable
@@ -11573,17 +11642,17 @@ let RestService$1 = class RestService extends DataService {
11573
11642
  * Get data from backend and fill the cache
11574
11643
  */
11575
11644
  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([]);
11645
+ if (this.inFlight$ && cache) {
11646
+ return this.inFlight$;
11579
11647
  }
11580
- return this.http.get(path, queryParams)
11648
+ this.inFlight$ = this.http.get(path, queryParams)
11581
11649
  .pipe(map((response) => Array.isArray(response) ? response : toArray(response)), map((response) => {
11582
11650
  if (cache) {
11583
11651
  this.setCache(response, true);
11584
11652
  }
11585
11653
  return this.createCollectionInstance(this.collectionClass, response);
11586
- }), catchError((error) => this.handleError(error)));
11654
+ }), catchError((error) => this.handleError(error)), finalize(() => this.inFlight$ = null), shareReplay({ bufferSize: 1, refCount: true }));
11655
+ return this.inFlight$;
11587
11656
  }
11588
11657
  fetchFirst(queryParams = {}) {
11589
11658
  return this.fetch(this.apiUrl, false, { params: queryParams })
@@ -11592,10 +11661,11 @@ let RestService$1 = class RestService extends DataService {
11592
11661
  get(path = this.apiUrl) {
11593
11662
  this.handleAccessError('get');
11594
11663
  if (!this.hasRoles()) {
11664
+ // @TODO it completes observable and doesn't watch anymore
11595
11665
  return of(this.createCollectionInstance(this.collectionClass, []));
11596
11666
  }
11597
11667
  if (!this.cache) {
11598
- this.fetch(path).pipe(first$1()).subscribe();
11668
+ return this.fetch(path).pipe(switchMap(() => this.getCacheSubjectObservable()));
11599
11669
  }
11600
11670
  return this.getCacheSubjectObservable();
11601
11671
  }
@@ -13390,22 +13460,17 @@ class FirmService {
13390
13460
  this.environment = environment;
13391
13461
  this.firmSubject = new ReplaySubject(1);
13392
13462
  }
13393
- /**
13394
- * Register new firm
13395
- * @param data: firm and firm owner data to register
13396
- */
13397
13463
  register(data) {
13398
13464
  return this.http.post(`${this.environment.apiV2}/firms/registration`, data)
13399
13465
  .pipe(map((firm) => plainToClass(Firm, firm)));
13400
13466
  }
13401
13467
  get() {
13402
13468
  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;
13469
+ return this.http.get(`${this.environment.apiV2}/firms/current`).pipe(map((firm) => {
13470
+ this.firm = plainToClass(Firm, firm);
13407
13471
  this.firmSubject.next(this.firm);
13408
- });
13472
+ return this.firm;
13473
+ }), switchMap(() => this.firmSubject.asObservable()));
13409
13474
  }
13410
13475
  return this.firmSubject.asObservable();
13411
13476
  }
@@ -13490,24 +13555,25 @@ class RestService {
13490
13555
  * get list of base class instances directly from backend
13491
13556
  */
13492
13557
  fetch(path = this.apiUrl, cache = true, params = {}) {
13493
- if (cache) {
13494
- this.setCache([]);
13558
+ if (this.inFlight$ && cache) {
13559
+ return this.inFlight$;
13495
13560
  }
13496
- return this.http.get(path, { params: params })
13561
+ this.inFlight$ = this.http.get(path, { params: params })
13497
13562
  .pipe(map((response) => {
13498
13563
  const items = response.map((item) => this.createModelInstance(item));
13499
13564
  if (cache) {
13500
13565
  this.setCache(items, true);
13501
13566
  }
13502
13567
  return items;
13503
- }));
13568
+ }), finalize(() => this.inFlight$ = null), shareReplay({ bufferSize: 1, refCount: true }));
13569
+ return this.inFlight$;
13504
13570
  }
13505
13571
  /**
13506
13572
  * get cached list of all instances
13507
13573
  */
13508
13574
  get(path = this.apiUrl) {
13509
13575
  if (!this.cache) {
13510
- this.fetch(path).pipe(first$1()).subscribe();
13576
+ return this.fetch(path).pipe(first$1(), switchMap(() => this.getCacheSubjectObservable()));
13511
13577
  }
13512
13578
  return this.getCacheSubjectObservable();
13513
13579
  }
@@ -13656,7 +13722,7 @@ class RestService {
13656
13722
  */
13657
13723
  refreshCache() {
13658
13724
  this.setCache(undefined);
13659
- this.get();
13725
+ this.get().subscribe();
13660
13726
  }
13661
13727
  setCache(data, next = false) {
13662
13728
  this.cache = data;
@@ -15128,6 +15194,10 @@ class SubscriptionService extends RestService$1 {
15128
15194
  params: { code }
15129
15195
  }).pipe(map((response) => plainToClass(ServicePromoCode, response)));
15130
15196
  }
15197
+ setCache(data, next = false) {
15198
+ super.setCache(data, next);
15199
+ localStorage.setItem('roles', JSON.stringify(this.cache.getRoles()));
15200
+ }
15131
15201
  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
15202
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SubscriptionService, providedIn: 'root' }); }
15133
15203
  }
@@ -16533,11 +16603,10 @@ class UserService extends RestService$1 {
16533
16603
  }
16534
16604
  fetch() {
16535
16605
  return super.fetch(`${this.apiUrl}/current`).pipe(map((users) => {
16606
+ const user = this.getCacheFirst();
16536
16607
  // @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);
16608
+ localStorage.setItem('userId', user.id.toString());
16609
+ localStorage.setItem('financialYear', user.financialYear.toString());
16541
16610
  return users;
16542
16611
  }));
16543
16612
  }
@@ -16576,7 +16645,7 @@ class UserService extends RestService$1 {
16576
16645
  }
16577
16646
  deactivate(user) {
16578
16647
  return this.put(user, `${this.apiUrl}/${user.id}/delete`).pipe(map((user) => {
16579
- localStorage.clear();
16648
+ // localStorage.removeItem('userId');
16580
16649
  location.replace('/login');
16581
16650
  return user;
16582
16651
  }));
@@ -16598,15 +16667,20 @@ class UserService extends RestService$1 {
16598
16667
  user.blacklistSetupItems.push(item);
16599
16668
  return this.put(user);
16600
16669
  }
16670
+ restoreSetupItem(item) {
16671
+ const user = clone(this.getCacheFirst());
16672
+ remove(user.blacklistSetupItems, (i) => i.id === item.id);
16673
+ return this.put(user);
16674
+ }
16601
16675
  /**
16676
+ * @TODO stop using user for roles
16602
16677
  * Update cache when user's service subscription is updated
16603
16678
  */
16604
16679
  listenServiceSubscriptionUpdated() {
16605
- this.listenCSE(ServiceSubscription, (response) => {
16606
- // @TODO vik test and remove
16607
- setTimeout(() => {
16608
- this.refreshCache();
16609
- }, 2000);
16680
+ this.listenCSE(ServiceSubscription, (subscriptions) => {
16681
+ const user = this.getCacheFirst();
16682
+ user.addRoles(new ServiceSubscriptionCollection(subscriptions).getRoles());
16683
+ this.setCache([user], true);
16610
16684
  }, ['post', 'put']);
16611
16685
  }
16612
16686
  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 +19305,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19231
19305
  }]
19232
19306
  }], ctorParameters: () => [] });
19233
19307
 
19234
- var SetupItemTypeEnum;
19235
- (function (SetupItemTypeEnum) {
19236
- SetupItemTypeEnum[SetupItemTypeEnum["CLIENT"] = 1] = "CLIENT";
19237
- SetupItemTypeEnum[SetupItemTypeEnum["EMPLOYEE"] = 2] = "EMPLOYEE";
19238
- })(SetupItemTypeEnum || (SetupItemTypeEnum = {}));
19239
-
19240
19308
  class SetupItemService extends RestService$1 {
19241
19309
  constructor() {
19242
19310
  super(...arguments);
@@ -19260,15 +19328,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19260
19328
  * Checks required steps and their completion
19261
19329
  */
19262
19330
  class AccountSetupService {
19263
- constructor(setupItemService, propertyService, incomeSourceService, bankAccountsService, transactionAllocationService, vehicleClaimService, transactionService, soleBusinessService, holdingService, userService, clientMovementService, clientInviteService, employeeService, employeeInviteService, firmService) {
19331
+ constructor(setupItemService, propertyService, incomeSourceService, bankConnectionService, bankAccountsService, loanService, allocationRuleService, transactionAllocationService, vehicleClaimService, homeOfficeClaimService, transactionService, depreciationService, businessService, holdingService, userService, clientMovementService, clientInviteService, employeeService, employeeInviteService, firmService, sharesightDetailsService, propertyShareService) {
19264
19332
  this.setupItemService = setupItemService;
19265
19333
  this.propertyService = propertyService;
19266
19334
  this.incomeSourceService = incomeSourceService;
19335
+ this.bankConnectionService = bankConnectionService;
19267
19336
  this.bankAccountsService = bankAccountsService;
19337
+ this.loanService = loanService;
19338
+ this.allocationRuleService = allocationRuleService;
19268
19339
  this.transactionAllocationService = transactionAllocationService;
19269
19340
  this.vehicleClaimService = vehicleClaimService;
19341
+ this.homeOfficeClaimService = homeOfficeClaimService;
19270
19342
  this.transactionService = transactionService;
19271
- this.soleBusinessService = soleBusinessService;
19343
+ this.depreciationService = depreciationService;
19344
+ this.businessService = businessService;
19272
19345
  this.holdingService = holdingService;
19273
19346
  this.userService = userService;
19274
19347
  this.clientMovementService = clientMovementService;
@@ -19276,101 +19349,111 @@ class AccountSetupService {
19276
19349
  this.employeeService = employeeService;
19277
19350
  this.employeeInviteService = employeeInviteService;
19278
19351
  this.firmService = firmService;
19352
+ this.sharesightDetailsService = sharesightDetailsService;
19353
+ this.propertyShareService = propertyShareService;
19279
19354
  }
19280
19355
  /**
19281
19356
  * Get list of account setup items for current user/firm
19282
19357
  */
19283
- get(type) {
19284
- return combineLatest([
19285
- this.setupItemService.get(),
19286
- this.userService.getFirst()
19287
- ])
19288
- .pipe(mergeMap(([items, user]) => {
19289
- this.items = items;
19358
+ get(property, business) {
19359
+ // @TODO it takes time for user to update, makes sense to subscribe to serviceSubscription instead
19360
+ return combineLatest([this.setupItemService.get(), this.userService.getFirst()]).pipe(switchMap(([items, user]) => {
19290
19361
  this.user = user;
19291
- return type === SetupItemTypeEnum.CLIENT ? this.getClientItems$() : this.getFirmItems$();
19362
+ this.items = items.getByUser(user);
19363
+ return this.setItemsStatus(property, business);
19292
19364
  }));
19293
19365
  }
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()));
19366
+ setItemsStatus(property, business) {
19367
+ const itemsById = this.items.indexBy('id');
19368
+ const requests = pick({
19369
+ // firm
19370
+ [AccountSetupItemsEnum.FIRM_DETAILS]: this.getFirms(),
19371
+ [AccountSetupItemsEnum.FIRM_EMPLOYEES]: this.getEmployees(),
19372
+ [AccountSetupItemsEnum.FIRM_CLIENTS]: this.getClients(),
19373
+ // work
19374
+ [AccountSetupItemsEnum.WORK_SALARY]: this.getIncomeSources(true),
19375
+ [AccountSetupItemsEnum.WORK_OTHER_INCOME]: this.getIncomeSources(false),
19376
+ [AccountSetupItemsEnum.WORK_VEHICLE_CLAIM]: this.getVehicleClaims(),
19377
+ [AccountSetupItemsEnum.WORK_HOME_OFFICE]: this.getHomeOfficeClaims(),
19378
+ [AccountSetupItemsEnum.WORK_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.WORK),
19379
+ [AccountSetupItemsEnum.WORK_DEPRECIATION]: this.getDepreciations(TankTypeEnum.WORK),
19380
+ // properties
19381
+ [AccountSetupItemsEnum.PROPERTY]: this.propertyService.getArray(),
19382
+ [AccountSetupItemsEnum.PROPERTIES]: this.propertyService.getArray().pipe(map(properties => properties.slice(1))),
19383
+ [AccountSetupItemsEnum.PROPERTIES_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.PROPERTY),
19384
+ // businesses
19385
+ [AccountSetupItemsEnum.SOLE_BUSINESS]: this.businessService.getArray(),
19386
+ [AccountSetupItemsEnum.SOLE_BUSINESSES]: this.businessService.getArray().pipe(map(businesses => businesses.slice(1))),
19387
+ [AccountSetupItemsEnum.SOLE_BANK_ACCOUNT]: this.getBankAccounts(TankTypeEnum.SOLE),
19388
+ // holding
19389
+ [AccountSetupItemsEnum.HOLDING_TRADE]: this.holdingService.getArray(),
19390
+ [AccountSetupItemsEnum.HOLDING_INTEGRATION]: this.getSharesightDetails(true),
19391
+ // bankAccount
19392
+ [AccountSetupItemsEnum.BANK_CONNECTION]: this.bankConnectionService.getArray(),
19393
+ [AccountSetupItemsEnum.BANK_ACCOUNT]: this.getBankAccounts(),
19394
+ [AccountSetupItemsEnum.BANK_ALLOCATION]: this.transactionAllocationService.get(),
19395
+ [AccountSetupItemsEnum.BANK_RULE]: this.allocationRuleService.getArray(),
19396
+ [AccountSetupItemsEnum.BANK_BORROWING_EXPENSE]: this.getBorrowingExpenses(),
19397
+ }, this.items.getIds());
19398
+ // property
19399
+ if (property) {
19400
+ requests[AccountSetupItemsEnum.PROPERTY_CAPITAL_COST] = this.propertyService.getBy('id', property.id).pipe(map(properties => properties.filter(property => !!property.capitalCosts)));
19401
+ requests[AccountSetupItemsEnum.PROPERTY_RENT_INCOME] = this.getTransactions(property).pipe(map(transactions => new TransactionCollection(transactions).filterBy('chartAccounts.id', ChartAccountsListEnum.RENTAL_INCOME)));
19402
+ requests[AccountSetupItemsEnum.PROPERTY_DEPRECIATION] = this.getDepreciations(TankTypeEnum.PROPERTY, property.id);
19403
+ requests[AccountSetupItemsEnum.PROPERTY_CO_OWNER] = this.getCoOwners(property);
19404
+ }
19405
+ // business
19406
+ if (business) {
19407
+ requests[AccountSetupItemsEnum.SOLE_VEHICLE_CLAIM] = this.getVehicleClaims(business);
19408
+ requests[AccountSetupItemsEnum.SOLE_HOME_OFFICE] = this.getHomeOfficeClaims(business);
19409
+ requests[AccountSetupItemsEnum.SOLE_DEPRECIATION] = this.getDepreciations(TankTypeEnum.SOLE, business.id);
19410
+ requests[AccountSetupItemsEnum.SOLE_LOGO] = this.businessService.getBy('id', business.id).pipe(map(businesses => businesses.filter(business => !!business.file)));
19411
+ }
19412
+ const batch = Object.keys(requests).map(id => this.setItemStatus(itemsById.get(id), requests[id]));
19413
+ if (!batch.length) {
19414
+ return of(new AccountSetupItemCollection([]));
19322
19415
  }
19323
19416
  return combineLatest(batch).pipe(map((items) => new AccountSetupItemCollection(items)));
19324
19417
  }
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;
19333
- }
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')));
19353
- }
19354
19418
  /**
19355
19419
  * Check and update isCompleted flag for passed item
19356
19420
  */
19357
19421
  setItemStatus(item, request) {
19358
19422
  return request.pipe(map((result) => {
19359
19423
  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
- }
19424
+ item.status = isSkipped ? AccountSetupItemStatusEnum.SKIPPED : result.length ? AccountSetupItemStatusEnum.ACHIEVED : AccountSetupItemStatusEnum.PENDING;
19366
19425
  return item;
19367
19426
  }));
19368
19427
  }
19428
+ getTransactions(property) {
19429
+ return this.transactionService.getByPropertyId(property.id);
19430
+ }
19431
+ getCoOwners(property) {
19432
+ return this.propertyShareService.getArrayBy('property.id', property.id).pipe(map(shares => shares.slice(1)));
19433
+ }
19434
+ /**
19435
+ * AccountSetupItemsEnum.FIRM_CLIENTS completed when client invites sent or accepted
19436
+ */
19437
+ getClients() {
19438
+ return combineLatest([this.clientMovementService.getActive(), this.clientInviteService.get()]).pipe(map(([movements, invites]) => [...movements, ...invites]));
19439
+ }
19440
+ /**
19441
+ * AccountSetupItemsEnum.FIRM_EMPLOYEES completed when employee invites sent or accepted
19442
+ */
19443
+ getEmployees() {
19444
+ return combineLatest([this.employeeService.getArray(), this.employeeInviteService.getArray()]).pipe(map(([employees, invites]) => [...employees.slice(1), ...invites]));
19445
+ }
19446
+ /**
19447
+ * AccountSetupItemsEnum.FIRM_DETAILS when firm data filled
19448
+ */
19449
+ getFirms() {
19450
+ return this.firmService.get().pipe(map((firm) => [firm].filter(firm => firm.address || firm.phone || firm.file || firm.shortName)));
19451
+ }
19369
19452
  /**
19370
19453
  * @TODO Alex: work with collection when services refactored
19371
19454
  * @TODO Vik: waiting for income sources refactoring
19372
19455
  */
19373
- getIncomeSources(isSalary = false) {
19456
+ getIncomeSources(isSalary) {
19374
19457
  return this.incomeSourceService.get().pipe(map((incomeSources) => {
19375
19458
  const collection = new IncomeSourceCollection(incomeSources);
19376
19459
  if (isSalary) {
@@ -19379,31 +19462,34 @@ class AccountSetupService {
19379
19462
  return collection.items.filter((incomeSource) => incomeSource.isOtherIncome());
19380
19463
  }));
19381
19464
  }
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());
19465
+ getVehicleClaims(business) {
19466
+ return this.vehicleClaimService.getArray().pipe(map(claims => claims.filter(claim => business ? claim.business.id === business.id : !claim.business)));
19467
+ }
19468
+ getHomeOfficeClaims(business) {
19469
+ return this.homeOfficeClaimService.getArray().pipe(map(claims => claims.filter(claim => business ? claim.business.id === business.id : !claim.business)));
19470
+ }
19471
+ getBankAccounts(tankType) {
19472
+ return this.bankAccountsService.get().pipe(map((bankAccounts => bankAccounts.getByTankType(tankType).toArray())));
19473
+ }
19474
+ getDepreciations(tankType, id) {
19475
+ return this.depreciationService.get().pipe(map(depreciations => {
19476
+ depreciations = depreciations.getByTankType(tankType);
19477
+ if (tankType === TankTypeEnum.PROPERTY && id) {
19478
+ depreciations.filterBy('property.id', id);
19392
19479
  }
19393
- return of(null);
19480
+ if (tankType === TankTypeEnum.SOLE && id) {
19481
+ depreciations.filterBy('business.id', id);
19482
+ }
19483
+ return depreciations.toArray();
19394
19484
  }));
19395
19485
  }
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());
19486
+ getSharesightDetails(importEnabled) {
19487
+ return this.sharesightDetailsService.getArray().pipe(map(details => details.filter(detail => importEnabled ? detail.importEnabled : detail.exportEnabled)));
19488
+ }
19489
+ getBorrowingExpenses() {
19490
+ return this.loanService.getArray().pipe(map(loans => loans.filter(loan => !!loan.borrowingExpenses.length)));
19405
19491
  }
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 }); }
19492
+ 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 }); }
19407
19493
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, providedIn: 'root' }); }
19408
19494
  }
19409
19495
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: AccountSetupService, decorators: [{
@@ -19411,7 +19497,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImpor
19411
19497
  args: [{
19412
19498
  providedIn: 'root'
19413
19499
  }]
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 }] });
19500
+ }], 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 }] });
19415
19501
 
19416
19502
  class AdblockService {
19417
19503
  constructor() {
@@ -20548,6 +20634,7 @@ const ENDPOINTS = {
20548
20634
  SERVICE_PAYMENTS_GET: new Endpoint('GET', '\\/service-payments'),
20549
20635
  SERVICE_SUBSCRIPTIONS_GET: new Endpoint('GET', '\\/service-subscriptions'),
20550
20636
  SERVICE_SUBSCRIPTIONS_POST: new Endpoint('POST', '\\/service-subscriptions'),
20637
+ SERVICE_SUBSCRIPTIONS_TRIAL_POST: new Endpoint('POST', '\\/service-subscriptions/'),
20551
20638
  SERVICE_SUBSCRIPTIONS_CANCEL: new Endpoint('PUT', '\\/service-subscriptions\\/\\d+\\/cancel'),
20552
20639
  SERVICE_SUBSCRIPTIONS_RENEW: new Endpoint('PUT', '\\/service-subscriptions\\/\\d+\\/renewal'),
20553
20640
  SERVICE_PAYMENT_INVOICE_URL_GET: new Endpoint('GET', '\\/service-payments\\/\\d+\\/invoice-url'),
@@ -20604,6 +20691,7 @@ const ENDPOINTS = {
20604
20691
  TRANSACTIONS_ALLOCATIONS_POST: new Endpoint('POST', '\\/transaction-allocations'),
20605
20692
  TRANSACTIONS_ALLOCATIONS_DELETE: new Endpoint('DELETE', '\\/transaction-allocations\\/\\d+'),
20606
20693
  TRANSACTIONS_ALLOCATIONS_BATCH_DELETE: new Endpoint('POST', '\\/transaction-allocations\\/delete'),
20694
+ TRIAL_POST: new Endpoint('POST', '\\/trial'),
20607
20695
  USER_CONFIRMATION_POST: new Endpoint('POST', '\\/users\\/confirmation'),
20608
20696
  USER_CONFIRMATION_RESEND_POST: new Endpoint('POST', '\\/users\\/confirmation\\/resend'),
20609
20697
  USER_CURRENT_GET: new Endpoint('GET', '\\/users\\/current'),
@@ -21002,6 +21090,23 @@ var InviteStatusEnum;
21002
21090
  InviteStatusEnum[InviteStatusEnum["REJECTED"] = 3] = "REJECTED";
21003
21091
  })(InviteStatusEnum || (InviteStatusEnum = {}));
21004
21092
 
21093
+ var YoutubeVideosEnum;
21094
+ (function (YoutubeVideosEnum) {
21095
+ YoutubeVideosEnum["HOLDING_ONBOARDING"] = "r3RhObELk-E";
21096
+ YoutubeVideosEnum["MONEY_ONBOARDING"] = "E9NU14ndjhc";
21097
+ YoutubeVideosEnum["PROPERTY_ONBOARDING"] = "llUV98-EMdI";
21098
+ YoutubeVideosEnum["SOLE_ONBOARDING"] = "rqfTQFGwkUM";
21099
+ YoutubeVideosEnum["WORK_ONBOARDING"] = "QEKolzS1B0U";
21100
+ // @TODO replace
21101
+ YoutubeVideosEnum["PROPERTY_RENTAL"] = "E9NU14ndjhc";
21102
+ YoutubeVideosEnum["PROPERTY_DEPRECIATION"] = "E9NU14ndjhc";
21103
+ YoutubeVideosEnum["SOLE_VEHICLE_CLAIM"] = "E9NU14ndjhc";
21104
+ YoutubeVideosEnum["HOME_OFFICE"] = "E9NU14ndjhc";
21105
+ YoutubeVideosEnum["SOLE_DEPRECIATION"] = "E9NU14ndjhc";
21106
+ YoutubeVideosEnum["WORK_VEHICLE_CLAIM"] = "E9NU14ndjhc";
21107
+ YoutubeVideosEnum["WORK_DEPRECIATION"] = "E9NU14ndjhc";
21108
+ })(YoutubeVideosEnum || (YoutubeVideosEnum = {}));
21109
+
21005
21110
  var PropertyDepreciationCalculationEnum;
21006
21111
  (function (PropertyDepreciationCalculationEnum) {
21007
21112
  PropertyDepreciationCalculationEnum[PropertyDepreciationCalculationEnum["PRIME_COST"] = 1] = "PRIME_COST";
@@ -21318,6 +21423,36 @@ var UserEventSettingFieldEnum;
21318
21423
  UserEventSettingFieldEnum["FREQUENCY"] = "frequency";
21319
21424
  })(UserEventSettingFieldEnum || (UserEventSettingFieldEnum = {}));
21320
21425
 
21426
+ class BusinessResolver {
21427
+ constructor(soleDetailsService) {
21428
+ this.soleDetailsService = soleDetailsService;
21429
+ }
21430
+ resolve() {
21431
+ return this.soleDetailsService.getFirst();
21432
+ }
21433
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: BusinessResolver, deps: [{ token: SoleDetailsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21434
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: BusinessResolver, providedIn: 'root' }); }
21435
+ }
21436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: BusinessResolver, decorators: [{
21437
+ type: Injectable,
21438
+ args: [{ providedIn: 'root' }]
21439
+ }], ctorParameters: () => [{ type: SoleDetailsService }] });
21440
+
21441
+ class SoleDetailsResolver {
21442
+ constructor(soleDetails) {
21443
+ this.soleDetails = soleDetails;
21444
+ }
21445
+ resolve() {
21446
+ return this.soleDetails.getFirst();
21447
+ }
21448
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SoleDetailsResolver, deps: [{ token: SoleDetailsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21449
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SoleDetailsResolver, providedIn: 'root' }); }
21450
+ }
21451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.2", ngImport: i0, type: SoleDetailsResolver, decorators: [{
21452
+ type: Injectable,
21453
+ args: [{ providedIn: 'root' }]
21454
+ }], ctorParameters: () => [{ type: SoleDetailsService }] });
21455
+
21321
21456
  // deep clone for entity
21322
21457
  function cloneDeep(array) {
21323
21458
  return JSON.parse(JSON.stringify(array));
@@ -25460,5 +25595,5 @@ var MessagesEnum;
25460
25595
  * Generated bundle index. Do not edit.
25461
25596
  */
25462
25597
 
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 };
25598
+ 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, 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
25599
  //# sourceMappingURL=taxtank-core.mjs.map