taxtank-core 2.0.25 → 2.0.27

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.
@@ -1,15 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Inject, inject, EventEmitter, signal, NgModule, Pipe } from '@angular/core';
2
+ import { Inject, Injectable, inject, EventEmitter, NgModule, InjectionToken, Pipe } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { formatDate, CommonModule as CommonModule$1, CurrencyPipe, DatePipe } from '@angular/common';
5
5
  import * as i1 from '@angular/common/http';
6
- import { HttpParams, HttpClient, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
7
- import { map, catchError, mergeMap, filter, finalize, switchMap, first as first$1, take, startWith, debounceTime, distinctUntilChanged } from 'rxjs/operators';
8
- import { ReplaySubject, throwError, Subject, Observable, shareReplay, of, forkJoin, combineLatest, BehaviorSubject, from, merge as merge$1 } from 'rxjs';
6
+ import { HttpClient, HttpErrorResponse, HttpParams, HTTP_INTERCEPTORS } from '@angular/common/http';
7
+ import { map, filter, catchError, finalize, switchMap, first as first$1, take, mergeMap, startWith, debounceTime, distinctUntilChanged } from 'rxjs/operators';
8
+ import { ReplaySubject, Subject, Observable, shareReplay, of, forkJoin, throwError, combineLatest, BehaviorSubject, from, merge as merge$1 } from 'rxjs';
9
9
  import { plainToClass, Type, Transform, Exclude, Expose, classToPlain } from 'class-transformer';
10
+ import get from 'lodash/get';
10
11
  import 'reflect-metadata';
11
12
  import { __decorate } from 'tslib';
12
- import get from 'lodash/get';
13
13
  import flatten from 'lodash/flatten';
14
14
  import hasIn from 'lodash/hasIn';
15
15
  import intersection from 'lodash/intersection';
@@ -64,9 +64,6 @@ class AbstractModel {
64
64
  }
65
65
  }
66
66
 
67
- let Address$1 = class Address extends AbstractModel {
68
- };
69
-
70
67
  let Country$1 = class Country extends AbstractModel {
71
68
  };
72
69
 
@@ -86,6 +83,66 @@ class Country extends Country$1 {
86
83
  }
87
84
  }
88
85
 
86
+ class AddressService {
87
+ constructor(http, environment) {
88
+ this.http = http;
89
+ this.environment = environment;
90
+ this.countriesSubject = new ReplaySubject(1);
91
+ }
92
+ getCountries() {
93
+ if (!this._countries) {
94
+ this.http.get(`${this.environment.apiV2}/countries`)
95
+ .pipe(map((response) => response.map((item) => plainToClass(Country, item))))
96
+ .subscribe((countries) => {
97
+ this._countries = countries;
98
+ this.countriesSubject.next(countries);
99
+ });
100
+ }
101
+ return this.countriesSubject.asObservable();
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddressService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
104
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddressService, providedIn: 'root' }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddressService, decorators: [{
107
+ type: Injectable,
108
+ args: [{
109
+ providedIn: 'root'
110
+ }]
111
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
112
+ type: Inject,
113
+ args: ['environment']
114
+ }] }] });
115
+
116
+ /**
117
+ * @TODO TT-3846 upgrade
118
+ */
119
+ class PdfService {
120
+ constructor(http, environment) {
121
+ this.http = http;
122
+ this.environment = environment;
123
+ }
124
+ fromHTMLElements(elements, landscape) {
125
+ const formData = new FormData();
126
+ formData.append('file', new Blob([...Array.from(elements).map(element => element.outerHTML)], { type: 'text/html' }));
127
+ formData.append('landscape', landscape ? '1' : '0');
128
+ return this.http.post(`${this.environment.apiV2}/pdf/html`, formData, { responseType: 'blob' });
129
+ }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: PdfService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
131
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: PdfService, providedIn: 'root' }); }
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: PdfService, decorators: [{
134
+ type: Injectable,
135
+ args: [{
136
+ providedIn: 'root'
137
+ }]
138
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
139
+ type: Inject,
140
+ args: ['environment']
141
+ }] }] });
142
+
143
+ let Address$1 = class Address extends AbstractModel {
144
+ };
145
+
89
146
  var AddressTypeEnum;
90
147
  (function (AddressTypeEnum) {
91
148
  AddressTypeEnum[AddressTypeEnum["STREET"] = 1] = "STREET";
@@ -10510,14 +10567,17 @@ var BankTransactionSummaryFieldsEnum;
10510
10567
  class BankTransactionComment extends AbstractModel {
10511
10568
  }
10512
10569
  __decorate([
10513
- Type(() => Date)
10514
- ], BankTransactionComment.prototype, "updatedAt", void 0);
10570
+ Type(() => BankTransaction)
10571
+ ], BankTransactionComment.prototype, "bankTransaction", void 0);
10572
+ __decorate([
10573
+ Type(() => User)
10574
+ ], BankTransactionComment.prototype, "createdBy", void 0);
10515
10575
  __decorate([
10516
10576
  Type(() => Date)
10517
10577
  ], BankTransactionComment.prototype, "createdAt", void 0);
10518
10578
  __decorate([
10519
- Type(() => BankTransaction)
10520
- ], BankTransactionComment.prototype, "bankTransaction", void 0);
10579
+ Type(() => Date)
10580
+ ], BankTransactionComment.prototype, "updatedAt", void 0);
10521
10581
 
10522
10582
  class BorrowingExpenseLoan extends BorrowingExpenseLoan$1 {
10523
10583
  }
@@ -11380,10 +11440,171 @@ __decorate([
11380
11440
  Type(() => AussieStore)
11381
11441
  ], AussieAppointment.prototype, "store", void 0);
11382
11442
 
11383
- var CorelogicMessagesEnum;
11384
- (function (CorelogicMessagesEnum) {
11385
- CorelogicMessagesEnum["SERVICE_UNAVAILABLE"] = "Corelogic service is temporary unavailable, please try again in a few minutes.";
11386
- })(CorelogicMessagesEnum || (CorelogicMessagesEnum = {}));
11443
+ /**
11444
+ * @TODO Alex (TT-1777): replace old logic with the new when all services ready
11445
+ * @TODO Alex (TT-1777): rename old logic and keep it for custom events
11446
+ */
11447
+ class EventDispatcherService {
11448
+ constructor() {
11449
+ this.eventSubject = new Subject();
11450
+ this.eventSubject2 = new Subject();
11451
+ }
11452
+ /**
11453
+ * subscription to specific event type
11454
+ */
11455
+ on(eventType) {
11456
+ return this.eventSubject.pipe(filter((event) => [].concat(eventType).includes(event.type)), map((event) => event.payload));
11457
+ }
11458
+ on2(...names) {
11459
+ return this.eventSubject2.pipe(filter((event) => [].concat(names).includes(event.name)), map((event) => event.items));
11460
+ }
11461
+ /**
11462
+ * deliver new event
11463
+ */
11464
+ dispatch(event) {
11465
+ this.eventSubject.next(event);
11466
+ }
11467
+ dispatch2(event) {
11468
+ this.eventSubject2.next(event);
11469
+ }
11470
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EventDispatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11471
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EventDispatcherService, providedIn: 'root' }); }
11472
+ }
11473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EventDispatcherService, decorators: [{
11474
+ type: Injectable,
11475
+ args: [{
11476
+ providedIn: 'root'
11477
+ }]
11478
+ }] });
11479
+
11480
+ /**
11481
+ * server sent events service
11482
+ * https://symfony.com/doc/current/mercure.html
11483
+ */
11484
+ class SseService {
11485
+ constructor(zone, jwtService, environment) {
11486
+ this.zone = zone;
11487
+ this.jwtService = jwtService;
11488
+ this.environment = environment;
11489
+ }
11490
+ /**
11491
+ * list to url for server events
11492
+ */
11493
+ on(topic) {
11494
+ const url = new URL(this.environment.mercureUrl);
11495
+ url.searchParams.append('topic', this.jwtService.decodeToken().mercure.subscribe[0].replace('{+path}', topic));
11496
+ return new Observable((observer) => {
11497
+ const es = new EventSourcePolyfill(url, {
11498
+ headers: {
11499
+ Authorization: 'Bearer ' + this.jwtService.getToken(),
11500
+ }
11501
+ });
11502
+ es.onmessage = (event) => {
11503
+ this.zone.run(() => observer.next(event));
11504
+ };
11505
+ })
11506
+ .pipe(map((messageEvent) => JSON.parse(messageEvent.data)));
11507
+ }
11508
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SseService, deps: [{ token: i0.NgZone }, { token: i3.JwtService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
11509
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SseService, providedIn: 'root' }); }
11510
+ }
11511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SseService, decorators: [{
11512
+ type: Injectable,
11513
+ args: [{
11514
+ providedIn: 'root'
11515
+ }]
11516
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i3.JwtService }, { type: undefined, decorators: [{
11517
+ type: Inject,
11518
+ args: ['environment']
11519
+ }] }] });
11520
+
11521
+ // replace array element with the new one (only arrays of objects)
11522
+ function replace(array, item, matchField = 'id') {
11523
+ const index = array.findIndex((i) => i[matchField] === item[matchField]);
11524
+ array.splice(index, 1, item);
11525
+ }
11526
+
11527
+ // sort array of objects by field
11528
+ function sort(array, field = 'id', isDesc = true) {
11529
+ array.sort((a, b) => {
11530
+ if (a[field] > b[field]) {
11531
+ return !isDesc ? 1 : -1;
11532
+ }
11533
+ if (a[field] < b[field]) {
11534
+ return !isDesc ? -1 : 1;
11535
+ }
11536
+ return 0;
11537
+ });
11538
+ }
11539
+
11540
+ // sort array of objects by field
11541
+ function sortDeep(array, fieldsQueue = ['id'], isDesc = true) {
11542
+ array.sort((a, b) => {
11543
+ const aValue = getValue(a, fieldsQueue);
11544
+ const bValue = getValue(b, fieldsQueue);
11545
+ if (aValue > bValue) {
11546
+ return !isDesc ? 1 : -1;
11547
+ }
11548
+ if (aValue < bValue) {
11549
+ return !isDesc ? -1 : 1;
11550
+ }
11551
+ return 0;
11552
+ });
11553
+ }
11554
+ function getValue(obj, fields) {
11555
+ let value = obj;
11556
+ fields.forEach((field) => {
11557
+ value = value[field];
11558
+ });
11559
+ return value;
11560
+ }
11561
+
11562
+ /**
11563
+ * Convert single object or array into array
11564
+ */
11565
+ function toArray(data) {
11566
+ return Array.isArray(data) ? data : [data];
11567
+ }
11568
+
11569
+ class DataService {
11570
+ /**
11571
+ * @TODO use excludeExtraneousValues when all models refactored (exposed all needed properties)
11572
+ * Create new instance of class
11573
+ * @param model Single object or array from which will be created model instance(s)
11574
+ */
11575
+ createModelInstance(model) {
11576
+ return plainToClass(this.modelClass, model);
11577
+ }
11578
+ createCollectionInstance(collectionClass, data) {
11579
+ return new collectionClass(data.map((item) => this.createModelInstance(item)));
11580
+ }
11581
+ /**
11582
+ * never return cache directly to prevent update
11583
+ */
11584
+ getCache() {
11585
+ return clone(this.cache);
11586
+ }
11587
+ /**
11588
+ * never return cache directly to prevent update
11589
+ */
11590
+ getCacheFirst() {
11591
+ return this.getCache()?.first;
11592
+ }
11593
+ /**
11594
+ * @TODO vik any[] because of problems with base models extending abstractModel
11595
+ */
11596
+ setCache(data) {
11597
+ this.cache = this.createCollectionInstance(this.collectionClass, data);
11598
+ }
11599
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11600
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DataService, providedIn: 'root' }); }
11601
+ }
11602
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DataService, decorators: [{
11603
+ type: Injectable,
11604
+ args: [{
11605
+ providedIn: 'root'
11606
+ }]
11607
+ }] });
11387
11608
 
11388
11609
  /**
11389
11610
  * Common toast message class
@@ -11456,344 +11677,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
11456
11677
  }]
11457
11678
  }] });
11458
11679
 
11459
- class CorelogicService {
11460
- constructor(http, toastService, environment) {
11461
- this.http = http;
11462
- this.toastService = toastService;
11463
- this.environment = environment;
11464
- this.accessTokenSubject = new ReplaySubject(1);
11465
- }
11466
- getAccessToken(force = false) {
11467
- if (!this._accessToken || force) {
11468
- this.http.get(`${this.environment.apiV2}/corelogic/tokens`)
11469
- .pipe(map((response) => response.access_token))
11470
- .subscribe((token) => {
11471
- this._accessToken = token;
11472
- this.accessTokenSubject.next(this._accessToken);
11473
- });
11474
- }
11475
- return this.accessTokenSubject.asObservable();
11476
- }
11477
- getSuggestions(query, country = 'au') {
11478
- // @TODO handle different countries in future
11479
- return this.http.get(`${this.environment.coreLogicUrl}/property/${country}/v2/suggest.json?q=${query}`)
11480
- .pipe(map((response) => response.suggestions.map((item) => plainToClass(CorelogicSuggestion, item))), catchError((error) => {
11481
- this.toastService.error(CorelogicMessagesEnum.SERVICE_UNAVAILABLE);
11482
- return throwError(() => error);
11483
- }));
11484
- }
11485
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicService, deps: [{ token: i1.HttpClient }, { token: ToastService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
11486
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicService, providedIn: 'root' }); }
11487
- }
11488
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicService, decorators: [{
11489
- type: Injectable,
11490
- args: [{
11491
- providedIn: 'root'
11492
- }]
11493
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: ToastService }, { type: undefined, decorators: [{
11494
- type: Inject,
11495
- args: ['environment']
11496
- }] }] });
11497
-
11498
- /**
11499
- * Corelogic interceptor add Core Logic access token for each search requests related with Core Logic API
11500
- */
11501
- class CorelogicInterceptor {
11502
- constructor(corelogicService, environment) {
11503
- this.corelogicService = corelogicService;
11504
- this.environment = environment;
11505
- }
11506
- intercept(request, next) {
11507
- // skip non-corelogic requests
11508
- if (!request.url.includes(this.environment.coreLogicUrl)) {
11509
- return next.handle(request);
11510
- }
11511
- // don't need token for this endpoint
11512
- if (request.url.includes(`${this.environment.coreLogicUrl}/access/oauth/token`)) {
11513
- return next.handle(request);
11514
- }
11515
- return this.corelogicService.getAccessToken()
11516
- .pipe(mergeMap((token) => next.handle(this.addToken(request, token))));
11517
- }
11518
- addToken(request, token) {
11519
- return request.clone({
11520
- setHeaders: {
11521
- Authorization: 'Bearer ' + token
11522
- }
11523
- });
11524
- }
11525
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicInterceptor, deps: [{ token: CorelogicService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
11526
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicInterceptor }); }
11527
- }
11528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicInterceptor, decorators: [{
11529
- type: Injectable
11530
- }], ctorParameters: () => [{ type: CorelogicService }, { type: undefined, decorators: [{
11531
- type: Inject,
11532
- args: ['environment']
11533
- }] }] });
11534
-
11535
- /**
11536
- * Financial Year interceptor add financialYear parameter to requests because a lot of POST and GET requests require this parameter
11537
- * @TODO now we can get current fin year from user on backend. So we can remove this interceptor
11538
- */
11539
- class FinancialYearInterceptor {
11540
- constructor(environment) {
11541
- this.environment = environment;
11542
- }
11543
- intercept(request, next) {
11544
- // skip third party requests
11545
- // @TODO Alex: Also check and ignore requests we don't need financial year
11546
- if (!request.url.includes(this.environment.api_uri)) {
11547
- return next.handle(request);
11548
- }
11549
- // Set financial year parameter to requests
11550
- let params = new HttpParams({
11551
- fromString: request.params.toString()
11552
- });
11553
- // clone request to add new parameters
11554
- let clonedReq = request.clone();
11555
- // @TODO query params should be passed using second param of get request and HttpParams object
11556
- if (!params.get('financialYear') && !request.urlWithParams.includes('?financialYear') && !request.urlWithParams.includes('&financialYear')) {
11557
- params = params.set('financialYear', localStorage.getItem('financialYear'));
11558
- clonedReq = request.clone({
11559
- params: params
11560
- });
11561
- }
11562
- return next.handle(clonedReq);
11563
- }
11564
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FinancialYearInterceptor, deps: [{ token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
11565
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FinancialYearInterceptor }); }
11566
- }
11567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FinancialYearInterceptor, decorators: [{
11568
- type: Injectable
11569
- }], ctorParameters: () => [{ type: undefined, decorators: [{
11570
- type: Inject,
11571
- args: ['environment']
11572
- }] }] });
11573
-
11574
- class AddressService {
11575
- constructor(http, environment) {
11576
- this.http = http;
11577
- this.environment = environment;
11578
- this.countriesSubject = new ReplaySubject(1);
11579
- }
11580
- getCountries() {
11581
- if (!this._countries) {
11582
- this.http.get(`${this.environment.apiV2}/countries`)
11583
- .pipe(map((response) => response.map((item) => plainToClass(Country, item))))
11584
- .subscribe((countries) => {
11585
- this._countries = countries;
11586
- this.countriesSubject.next(countries);
11587
- });
11588
- }
11589
- return this.countriesSubject.asObservable();
11590
- }
11591
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddressService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
11592
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddressService, providedIn: 'root' }); }
11593
- }
11594
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddressService, decorators: [{
11595
- type: Injectable,
11596
- args: [{
11597
- providedIn: 'root'
11598
- }]
11599
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
11600
- type: Inject,
11601
- args: ['environment']
11602
- }] }] });
11603
-
11604
- /**
11605
- * @TODO TT-3846 upgrade
11606
- */
11607
- class PdfService {
11608
- constructor(http, environment) {
11609
- this.http = http;
11610
- this.environment = environment;
11611
- }
11612
- fromHTMLElements(elements, landscape) {
11613
- const formData = new FormData();
11614
- formData.append('file', new Blob([...Array.from(elements).map(element => element.outerHTML)], { type: 'text/html' }));
11615
- formData.append('landscape', landscape ? '1' : '0');
11616
- return this.http.post(`${this.environment.apiV2}/pdf/html`, formData, { responseType: 'blob' });
11617
- }
11618
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: PdfService, deps: [{ token: i1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
11619
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: PdfService, providedIn: 'root' }); }
11620
- }
11621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: PdfService, decorators: [{
11622
- type: Injectable,
11623
- args: [{
11624
- providedIn: 'root'
11625
- }]
11626
- }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
11627
- type: Inject,
11628
- args: ['environment']
11629
- }] }] });
11630
-
11631
- /**
11632
- * @TODO Alex (TT-1777): replace old logic with the new when all services ready
11633
- * @TODO Alex (TT-1777): rename old logic and keep it for custom events
11634
- */
11635
- class EventDispatcherService {
11636
- constructor() {
11637
- this.eventSubject = new Subject();
11638
- this.eventSubject2 = new Subject();
11639
- }
11640
- /**
11641
- * subscription to specific event type
11642
- */
11643
- on(eventType) {
11644
- return this.eventSubject.pipe(filter((event) => [].concat(eventType).includes(event.type)), map((event) => event.payload));
11645
- }
11646
- on2(...names) {
11647
- return this.eventSubject2.pipe(filter((event) => [].concat(names).includes(event.name)), map((event) => event.items));
11648
- }
11649
- /**
11650
- * deliver new event
11651
- */
11652
- dispatch(event) {
11653
- this.eventSubject.next(event);
11654
- }
11655
- dispatch2(event) {
11656
- this.eventSubject2.next(event);
11657
- }
11658
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EventDispatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11659
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EventDispatcherService, providedIn: 'root' }); }
11660
- }
11661
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EventDispatcherService, decorators: [{
11662
- type: Injectable,
11663
- args: [{
11664
- providedIn: 'root'
11665
- }]
11666
- }] });
11667
-
11668
- /**
11669
- * server sent events service
11670
- * https://symfony.com/doc/current/mercure.html
11671
- */
11672
- class SseService {
11673
- constructor(zone, jwtService, environment) {
11674
- this.zone = zone;
11675
- this.jwtService = jwtService;
11676
- this.environment = environment;
11677
- }
11678
- /**
11679
- * list to url for server events
11680
- */
11681
- on(topic) {
11682
- const url = new URL(this.environment.mercureUrl);
11683
- url.searchParams.append('topic', this.jwtService.decodeToken().mercure.subscribe[0].replace('{+path}', topic));
11684
- return new Observable((observer) => {
11685
- const es = new EventSourcePolyfill(url, {
11686
- headers: {
11687
- Authorization: 'Bearer ' + this.jwtService.getToken(),
11688
- }
11689
- });
11690
- es.onmessage = (event) => {
11691
- this.zone.run(() => observer.next(event));
11692
- };
11693
- })
11694
- .pipe(map((messageEvent) => JSON.parse(messageEvent.data)));
11695
- }
11696
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SseService, deps: [{ token: i0.NgZone }, { token: i3.JwtService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
11697
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SseService, providedIn: 'root' }); }
11698
- }
11699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SseService, decorators: [{
11700
- type: Injectable,
11701
- args: [{
11702
- providedIn: 'root'
11703
- }]
11704
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i3.JwtService }, { type: undefined, decorators: [{
11705
- type: Inject,
11706
- args: ['environment']
11707
- }] }] });
11708
-
11709
- // replace array element with the new one (only arrays of objects)
11710
- function replace(array, item, matchField = 'id') {
11711
- const index = array.findIndex((i) => i[matchField] === item[matchField]);
11712
- array.splice(index, 1, item);
11713
- }
11714
-
11715
- // sort array of objects by field
11716
- function sort(array, field = 'id', isDesc = true) {
11717
- array.sort((a, b) => {
11718
- if (a[field] > b[field]) {
11719
- return !isDesc ? 1 : -1;
11720
- }
11721
- if (a[field] < b[field]) {
11722
- return !isDesc ? -1 : 1;
11723
- }
11724
- return 0;
11725
- });
11726
- }
11727
-
11728
- // sort array of objects by field
11729
- function sortDeep(array, fieldsQueue = ['id'], isDesc = true) {
11730
- array.sort((a, b) => {
11731
- const aValue = getValue(a, fieldsQueue);
11732
- const bValue = getValue(b, fieldsQueue);
11733
- if (aValue > bValue) {
11734
- return !isDesc ? 1 : -1;
11735
- }
11736
- if (aValue < bValue) {
11737
- return !isDesc ? -1 : 1;
11738
- }
11739
- return 0;
11740
- });
11741
- }
11742
- function getValue(obj, fields) {
11743
- let value = obj;
11744
- fields.forEach((field) => {
11745
- value = value[field];
11746
- });
11747
- return value;
11748
- }
11749
-
11750
- /**
11751
- * Convert single object or array into array
11752
- */
11753
- function toArray(data) {
11754
- return Array.isArray(data) ? data : [data];
11755
- }
11756
-
11757
- class DataService {
11758
- /**
11759
- * @TODO use excludeExtraneousValues when all models refactored (exposed all needed properties)
11760
- * Create new instance of class
11761
- * @param model Single object or array from which will be created model instance(s)
11762
- */
11763
- createModelInstance(model) {
11764
- return plainToClass(this.modelClass, model);
11765
- }
11766
- createCollectionInstance(collectionClass, data) {
11767
- return new collectionClass(data.map((item) => this.createModelInstance(item)));
11768
- }
11769
- /**
11770
- * never return cache directly to prevent update
11771
- */
11772
- getCache() {
11773
- return clone(this.cache);
11774
- }
11775
- /**
11776
- * never return cache directly to prevent update
11777
- */
11778
- getCacheFirst() {
11779
- return this.getCache()?.first;
11780
- }
11781
- /**
11782
- * @TODO vik any[] because of problems with base models extending abstractModel
11783
- */
11784
- setCache(data) {
11785
- this.cache = this.createCollectionInstance(this.collectionClass, data);
11786
- }
11787
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11788
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DataService, providedIn: 'root' }); }
11789
- }
11790
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DataService, decorators: [{
11791
- type: Injectable,
11792
- args: [{
11793
- providedIn: 'root'
11794
- }]
11795
- }] });
11796
-
11797
11680
  const HTTP_ERROR_MESSAGES = {
11798
11681
  400: 'Bad Request – The request was invalid. Please check your data.',
11799
11682
  401: 'Unauthorized – Authentication is required. Please log in.',
@@ -19744,44 +19627,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
19744
19627
  }]
19745
19628
  }], ctorParameters: () => [{ type: SetupItemService }, { type: PropertyService }, { type: IncomeSourceService }, { type: BankConnectionService }, { type: BankAccountService }, { type: BankTransactionService }, { type: LoanService }, { type: AllocationRuleService }, { type: TransactionAllocationService }, { type: VehicleClaimService }, { type: HomeOfficeClaimService }, { type: TransactionService }, { type: DepreciationService }, { type: SoleBusinessService }, { type: HoldingTradeService }, { type: UserService }, { type: ClientMovementService }, { type: ClientInviteService }, { type: EmployeeService }, { type: EmployeeInviteService }, { type: FirmService }, { type: SharesightDetailsService }, { type: PropertyShareService }] });
19746
19629
 
19747
- class AdblockService {
19630
+ /**
19631
+ * service that checks adblock once we started application and saves this information
19632
+ * to unbound from promise of adblock-checker
19633
+ */
19634
+ class AdblockDetectorService {
19748
19635
  constructor() {
19749
- this.isAdBlockDetected = signal(false, ...(ngDevMode ? [{ debugName: "isAdBlockDetected" }] : []));
19750
- /**
19751
- * do we need to show initial or recurrent notification
19752
- */
19753
- this.isNotificationShown = signal(true, ...(ngDevMode ? [{ debugName: "isNotificationShown" }] : []));
19754
- /**
19755
- * checkAdBlock is promise based, so we need to know when service is ready
19756
- */
19757
- this.serviceInitSubject = new Subject();
19758
- this.isInitialModalClosed = signal(false, ...(ngDevMode ? [{ debugName: "isInitialModalClosed" }] : []));
19759
- checkAdBlock().then((isWorking) => {
19760
- this.isAdBlockDetected.set(isWorking);
19761
- this.setNotificationShown(this.getNotificationShown());
19762
- this.setInitialModalClosed(this.getInitialModalClosed());
19763
- this.serviceInitSubject.next(true);
19764
- this.serviceInitSubject.complete();
19765
- });
19766
- }
19767
- getNotificationShown() {
19768
- return JSON.parse(localStorage.getItem('isNotificationShown')) || false;
19769
- }
19770
- setNotificationShown(isShown) {
19771
- localStorage.setItem('isNotificationShown', `${isShown}`);
19772
- this.isNotificationShown.set(isShown);
19773
- }
19774
- setInitialModalClosed(isClosed) {
19775
- localStorage.setItem('isInitialModalClosed', `${isClosed}`);
19776
- this.isInitialModalClosed.set(isClosed);
19777
- }
19778
- getInitialModalClosed() {
19779
- return JSON.parse(localStorage.getItem('isInitialModalClosed')) || false;
19636
+ checkAdBlock().then((isDetected) => this.isDetected = isDetected);
19780
19637
  }
19781
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdblockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19782
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdblockService, providedIn: 'root' }); }
19638
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdblockDetectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19639
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdblockDetectorService, providedIn: 'root' }); }
19783
19640
  }
19784
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdblockService, decorators: [{
19641
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdblockDetectorService, decorators: [{
19785
19642
  type: Injectable,
19786
19643
  args: [{
19787
19644
  providedIn: 'root'
@@ -20701,6 +20558,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
20701
20558
  }]
20702
20559
  }], ctorParameters: () => [] });
20703
20560
 
20561
+ var CorelogicMessagesEnum;
20562
+ (function (CorelogicMessagesEnum) {
20563
+ CorelogicMessagesEnum["SERVICE_UNAVAILABLE"] = "Corelogic service is temporary unavailable, please try again in a few minutes.";
20564
+ })(CorelogicMessagesEnum || (CorelogicMessagesEnum = {}));
20565
+
20566
+ class CorelogicService {
20567
+ constructor(http, toastService, environment) {
20568
+ this.http = http;
20569
+ this.toastService = toastService;
20570
+ this.environment = environment;
20571
+ this.accessTokenSubject = new ReplaySubject(1);
20572
+ }
20573
+ getAccessToken(force = false) {
20574
+ if (!this._accessToken || force) {
20575
+ this.http.get(`${this.environment.apiV2}/corelogic/tokens`)
20576
+ .pipe(map((response) => response.access_token))
20577
+ .subscribe((token) => {
20578
+ this._accessToken = token;
20579
+ this.accessTokenSubject.next(this._accessToken);
20580
+ });
20581
+ }
20582
+ return this.accessTokenSubject.asObservable();
20583
+ }
20584
+ getSuggestions(query, country = 'au') {
20585
+ // @TODO handle different countries in future
20586
+ return this.http.get(`${this.environment.coreLogicUrl}/property/${country}/v2/suggest.json?q=${query}`)
20587
+ .pipe(map((response) => response.suggestions.map((item) => plainToClass(CorelogicSuggestion, item))), catchError((error) => {
20588
+ this.toastService.error(CorelogicMessagesEnum.SERVICE_UNAVAILABLE);
20589
+ return throwError(() => error);
20590
+ }));
20591
+ }
20592
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicService, deps: [{ token: i1.HttpClient }, { token: ToastService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
20593
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicService, providedIn: 'root' }); }
20594
+ }
20595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicService, decorators: [{
20596
+ type: Injectable,
20597
+ args: [{
20598
+ providedIn: 'root'
20599
+ }]
20600
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: ToastService }, { type: undefined, decorators: [{
20601
+ type: Inject,
20602
+ args: ['environment']
20603
+ }] }] });
20604
+
20704
20605
  /**
20705
20606
  * Service for get property equity position half-year history chart data
20706
20607
  */
@@ -21089,6 +20990,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
21089
20990
  }]
21090
20991
  }] });
21091
20992
 
20993
+ /**
20994
+ * Corelogic interceptor add Core Logic access token for each search requests related with Core Logic API
20995
+ */
20996
+ class CorelogicInterceptor {
20997
+ constructor(corelogicService, environment) {
20998
+ this.corelogicService = corelogicService;
20999
+ this.environment = environment;
21000
+ }
21001
+ intercept(request, next) {
21002
+ // skip non-corelogic requests
21003
+ if (!request.url.includes(this.environment.coreLogicUrl)) {
21004
+ return next.handle(request);
21005
+ }
21006
+ // don't need token for this endpoint
21007
+ if (request.url.includes(`${this.environment.coreLogicUrl}/access/oauth/token`)) {
21008
+ return next.handle(request);
21009
+ }
21010
+ return this.corelogicService.getAccessToken()
21011
+ .pipe(mergeMap((token) => next.handle(this.addToken(request, token))));
21012
+ }
21013
+ addToken(request, token) {
21014
+ return request.clone({
21015
+ setHeaders: {
21016
+ Authorization: 'Bearer ' + token
21017
+ }
21018
+ });
21019
+ }
21020
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicInterceptor, deps: [{ token: CorelogicService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
21021
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicInterceptor }); }
21022
+ }
21023
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CorelogicInterceptor, decorators: [{
21024
+ type: Injectable
21025
+ }], ctorParameters: () => [{ type: CorelogicService }, { type: undefined, decorators: [{
21026
+ type: Inject,
21027
+ args: ['environment']
21028
+ }] }] });
21029
+
21030
+ /**
21031
+ * Financial Year interceptor add financialYear parameter to requests because a lot of POST and GET requests require this parameter
21032
+ * @TODO now we can get current fin year from user on backend. So we can remove this interceptor
21033
+ */
21034
+ class FinancialYearInterceptor {
21035
+ constructor(environment) {
21036
+ this.environment = environment;
21037
+ }
21038
+ intercept(request, next) {
21039
+ // skip third party requests
21040
+ // @TODO Alex: Also check and ignore requests we don't need financial year
21041
+ if (!request.url.includes(this.environment.api_uri)) {
21042
+ return next.handle(request);
21043
+ }
21044
+ // Set financial year parameter to requests
21045
+ let params = new HttpParams({
21046
+ fromString: request.params.toString()
21047
+ });
21048
+ // clone request to add new parameters
21049
+ let clonedReq = request.clone();
21050
+ // @TODO query params should be passed using second param of get request and HttpParams object
21051
+ if (!params.get('financialYear') && !request.urlWithParams.includes('?financialYear') && !request.urlWithParams.includes('&financialYear')) {
21052
+ params = params.set('financialYear', localStorage.getItem('financialYear'));
21053
+ clonedReq = request.clone({
21054
+ params: params
21055
+ });
21056
+ }
21057
+ return next.handle(clonedReq);
21058
+ }
21059
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FinancialYearInterceptor, deps: [{ token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable }); }
21060
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FinancialYearInterceptor }); }
21061
+ }
21062
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FinancialYearInterceptor, decorators: [{
21063
+ type: Injectable
21064
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
21065
+ type: Inject,
21066
+ args: ['environment']
21067
+ }] }] });
21068
+
21092
21069
  /**
21093
21070
  * Impersonate current's user (manager) to client experience with help of special header
21094
21071
  */
@@ -21596,6 +21573,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
21596
21573
  args: ['environment']
21597
21574
  }] }] });
21598
21575
 
21576
+ const ADBLOCK_ERROR_HTML = new InjectionToken('ADBLOCK_ERROR_HTML');
21577
+ const ADBLOCK_ERROR_HTML_VALUE = `
21578
+ <div class="text-center">
21579
+ <strong>Action needed - Your adblocker is blocking CoreLogic</strong>
21580
+ To add a property in TaxTank we need to fetch data from CoreLogic — but your ad blocker is getting in the way.
21581
+ Please disable your adblocker or whitelist TaxTank to continue.
21582
+ <a class="btn" target="_blank" href="https://support.taxtank.com.au/en/articles/10505609-how-to-ensure-seamless-functionality-while-using-ad-blockers-with-taxtank">Learn more</a>
21583
+ </div>
21584
+ `;
21585
+
21586
+ /**
21587
+ * interceptor for handling errors which occurs because of adBlocker
21588
+ */
21589
+ class AdBlockErrorInterceptor {
21590
+ constructor(environment, adblockDetectService, toastService, adblockHtml) {
21591
+ this.environment = environment;
21592
+ this.adblockDetectService = adblockDetectService;
21593
+ this.toastService = toastService;
21594
+ this.adblockHtml = adblockHtml;
21595
+ }
21596
+ intercept(request, next) {
21597
+ if (!(request.url.includes(this.environment.api_uri) || request.url.includes(this.environment.apiV2))) {
21598
+ return next.handle(request).pipe(catchError((error) => {
21599
+ if (error.status === 0 && this.adblockDetectService.isDetected) {
21600
+ this.toastService.error(this.adblockHtml);
21601
+ return [];
21602
+ }
21603
+ return throwError(() => error);
21604
+ }));
21605
+ }
21606
+ return next.handle(request);
21607
+ }
21608
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdBlockErrorInterceptor, deps: [{ token: 'environment' }, { token: AdblockDetectorService }, { token: ToastService }, { token: ADBLOCK_ERROR_HTML }], target: i0.ɵɵFactoryTarget.Injectable }); }
21609
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdBlockErrorInterceptor }); }
21610
+ }
21611
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AdBlockErrorInterceptor, decorators: [{
21612
+ type: Injectable
21613
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
21614
+ type: Inject,
21615
+ args: ['environment']
21616
+ }] }, { type: AdblockDetectorService }, { type: ToastService }, { type: undefined, decorators: [{
21617
+ type: Inject,
21618
+ args: [ADBLOCK_ERROR_HTML]
21619
+ }] }] });
21620
+
21599
21621
  class InterceptorsModule {
21600
21622
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: InterceptorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21601
21623
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: InterceptorsModule }); }
@@ -21640,6 +21662,15 @@ class InterceptorsModule {
21640
21662
  provide: HTTP_INTERCEPTORS,
21641
21663
  useClass: BasiqClientIdInterceptor,
21642
21664
  multi: true
21665
+ },
21666
+ {
21667
+ provide: HTTP_INTERCEPTORS,
21668
+ useClass: AdBlockErrorInterceptor,
21669
+ multi: true
21670
+ },
21671
+ {
21672
+ provide: ADBLOCK_ERROR_HTML,
21673
+ useValue: ADBLOCK_ERROR_HTML_VALUE
21643
21674
  }
21644
21675
  ] }); }
21645
21676
  }
@@ -21687,6 +21718,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
21687
21718
  provide: HTTP_INTERCEPTORS,
21688
21719
  useClass: BasiqClientIdInterceptor,
21689
21720
  multi: true
21721
+ },
21722
+ {
21723
+ provide: HTTP_INTERCEPTORS,
21724
+ useClass: AdBlockErrorInterceptor,
21725
+ multi: true
21726
+ },
21727
+ {
21728
+ provide: ADBLOCK_ERROR_HTML,
21729
+ useValue: ADBLOCK_ERROR_HTML_VALUE
21690
21730
  }
21691
21731
  ]
21692
21732
  }]
@@ -22976,7 +23016,7 @@ function nameValidator() {
22976
23016
  * @param controlsFn function to get controls from target parent
22977
23017
  * it's easier to pass controls instead of function, but it won't work with dynamic fields
22978
23018
  */
22979
- function matchSumValidator(controlsFn) {
23019
+ function matchSumValidator(controlsFn, error) {
22980
23020
  return (targetControl) => {
22981
23021
  const controls = controlsFn.bind(targetControl.parent)();
22982
23022
  if (controls.find(control => control.value === null) || targetControl.value === null) {
@@ -22984,7 +23024,7 @@ function matchSumValidator(controlsFn) {
22984
23024
  }
22985
23025
  const sum = controls.reduce((acc, control) => acc + control.value, 0);
22986
23026
  const targetValue = targetControl.value;
22987
- return sum.toFixed(2) === targetValue.toFixed(2) ? null : { matchSum: true };
23027
+ return sum.toFixed(2) === targetValue.toFixed(2) ? null : { matchSum: error };
22988
23028
  };
22989
23029
  }
22990
23030
 
@@ -25771,7 +25811,7 @@ class HoldingIncomeForm extends WorkTransactionForm {
25771
25811
  incomeSource: new UntypedFormControl(transaction.incomeSource, [Validators.required, autocompleteValidator()]),
25772
25812
  });
25773
25813
  // transactionAmount=frankedAmount + unfrankedAmount
25774
- this.get('amount').setValidators([Validators.required, conditionalValidator(() => this.get('chartAccounts').value && this.get('chartAccounts').value.isDividends(), matchSumValidator(this.getAmountComponents))]);
25814
+ this.get('amount').setValidators([Validators.required, conditionalValidator(() => this.get('chartAccounts').value && this.get('chartAccounts').value.isDividends(), matchSumValidator(this.getAmountComponents, 'The Franked and Unfranked amounts entered do not equal the total Amount received. Please check and try again.'))]);
25775
25815
  // forbid to edit some fields for allocated transaction
25776
25816
  if (allocations.length) {
25777
25817
  this.get('chartAccounts').disable();
@@ -26340,5 +26380,5 @@ var MessagesEnum;
26340
26380
  * Generated bundle index. Do not edit.
26341
26381
  */
26342
26382
 
26343
- 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, BankTransactionComment, BankTransactionCommentForm, BankTransactionCommentMessagesEnum, BankTransactionCommentService, 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, DateFormatsEnum, 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, DocumentFolderCollection, DocumentFolderForm, DocumentFolderMessagesEnum, DocumentFolderService, DocumentForm, DocumentMessagesEnum, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeDetailsForm, EmployeeInvite, EmployeeInviteCollection, EmployeeInviteForm, EmployeeInviteRoleEnum, EmployeeInviteService, EmployeeMessagesEnum, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FileService, FileValidator, FinancialYear, FinancialYearService, Firm, FirmBranch, FirmBranchForm, FirmBranchMessagesEnum, FirmBranchService, FirmForm, FirmInviteForm, FirmMessagesEnum, FirmService, FirmTypeEnum, FormValidationsEnum, GenderEnum, GoogleService, HTTP_ERROR_MESSAGES, HeaderTitleService, Holding, HoldingCollection, HoldingExpenseForm, HoldingIncomeForm, HoldingReinvest, HoldingReinvestForm, HoldingSale, HoldingSaleCollection, HoldingSaleService, HoldingTrade, HoldingTradeCollection, HoldingTradeFilterForm, HoldingTradeForm, HoldingTradeImport, HoldingTradeImportForm, HoldingTradeImportMessagesEnum, HoldingTradeImportService, HoldingTradeMessagesEnum, HoldingTradeService, HoldingTradeTypeEnum, HoldingType, HoldingTypeCategoryEnum, HoldingTypeCollection, HoldingTypeExchange, HoldingTypeExchangeListEnum, HoldingTypeExchangeService, HoldingTypeForm, HoldingTypeMessagesEnum, HoldingTypeService, HomeOfficeCalculatorForm, HomeOfficeClaim, HomeOfficeClaimCollection, HomeOfficeClaimForm, HomeOfficeClaimMessagesEnum, HomeOfficeClaimMethodEnum, HomeOfficeClaimService, HomeOfficeLog, HomeOfficeLogForm, HomeOfficeLogMessagesEnum, HomeOfficeLogService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastCollection, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceMessagesEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListHoldingEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, IncomeSourceTypeService, InterceptorsModule, IntercomService, InviteStatusEnum, InvoicePaymentForm, InvoiceTransactionsService, JsPdf, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanInterestTypeLabelEnum, LoanMaxNumberOfPaymentsEnum, LoanMessagesEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanRepaymentTypeLabelEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MessagesEnum, MfaDetails, MfaDetailsForm, MfaDetailsMessagesEnum, MfaDetailsService, 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, 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, TreeNodeData, 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, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, currentFinYearValidator, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, greaterThanValidator, matchSumValidator, maxDateValidator, minDateValidator, nameValidator, passwordMatchValidator, passwordValidator, replace, sort, sortDeep, toArray };
26383
+ export { ADBLOCK_ERROR_HTML, ADBLOCK_ERROR_HTML_VALUE, AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupItemStatusEnum, AccountSetupItemsEnum, AccountSetupService, AdblockDetectorService, 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, BankTransactionComment, BankTransactionCommentForm, BankTransactionCommentMessagesEnum, BankTransactionCommentService, 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, DateFormatsEnum, 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, DocumentFolderCollection, DocumentFolderForm, DocumentFolderMessagesEnum, DocumentFolderService, DocumentForm, DocumentMessagesEnum, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeDetailsForm, EmployeeInvite, EmployeeInviteCollection, EmployeeInviteForm, EmployeeInviteRoleEnum, EmployeeInviteService, EmployeeMessagesEnum, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FileService, FileValidator, FinancialYear, FinancialYearService, Firm, FirmBranch, FirmBranchForm, FirmBranchMessagesEnum, FirmBranchService, FirmForm, FirmInviteForm, FirmMessagesEnum, FirmService, FirmTypeEnum, FormValidationsEnum, GenderEnum, GoogleService, HTTP_ERROR_MESSAGES, HeaderTitleService, Holding, HoldingCollection, HoldingExpenseForm, HoldingIncomeForm, HoldingReinvest, HoldingReinvestForm, HoldingSale, HoldingSaleCollection, HoldingSaleService, HoldingTrade, HoldingTradeCollection, HoldingTradeFilterForm, HoldingTradeForm, HoldingTradeImport, HoldingTradeImportForm, HoldingTradeImportMessagesEnum, HoldingTradeImportService, HoldingTradeMessagesEnum, HoldingTradeService, HoldingTradeTypeEnum, HoldingType, HoldingTypeCategoryEnum, HoldingTypeCollection, HoldingTypeExchange, HoldingTypeExchangeListEnum, HoldingTypeExchangeService, HoldingTypeForm, HoldingTypeMessagesEnum, HoldingTypeService, HomeOfficeCalculatorForm, HomeOfficeClaim, HomeOfficeClaimCollection, HomeOfficeClaimForm, HomeOfficeClaimMessagesEnum, HomeOfficeClaimMethodEnum, HomeOfficeClaimService, HomeOfficeLog, HomeOfficeLogForm, HomeOfficeLogMessagesEnum, HomeOfficeLogService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastCollection, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceMessagesEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListHoldingEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, IncomeSourceTypeService, InterceptorsModule, IntercomService, InviteStatusEnum, InvoicePaymentForm, InvoiceTransactionsService, JsPdf, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanInterestTypeLabelEnum, LoanMaxNumberOfPaymentsEnum, LoanMessagesEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanRepaymentTypeLabelEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MessagesEnum, MfaDetails, MfaDetailsForm, MfaDetailsMessagesEnum, MfaDetailsService, 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, 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, TreeNodeData, 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, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, currentFinYearValidator, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, greaterThanValidator, matchSumValidator, maxDateValidator, minDateValidator, nameValidator, passwordMatchValidator, passwordValidator, replace, sort, sortDeep, toArray };
26344
26384
  //# sourceMappingURL=taxtank-core.mjs.map