taxtank-core 0.32.121 → 0.32.124

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 (50) hide show
  1. package/esm2022/lib/db/Models/bank/bank-account.mjs +1 -1
  2. package/esm2022/lib/db/Models/client/annual-client-details.mjs +1 -1
  3. package/esm2022/lib/db/Models/incomeSource/income-source-forecast.mjs +1 -1
  4. package/esm2022/lib/db/Models/incomeSource/salary-forecast.mjs +1 -1
  5. package/esm2022/lib/db/Models/property/property-forecast.mjs +1 -1
  6. package/esm2022/lib/db/Models/sole/sole-business-loss.mjs +1 -1
  7. package/esm2022/lib/db/Models/sole/sole-forecast.mjs +1 -1
  8. package/esm2022/lib/forms/client/annual-client-details.form.mjs +1 -2
  9. package/esm2022/lib/forms/client/capital-loss.form.mjs +13 -0
  10. package/esm2022/lib/forms/client/index.mjs +2 -1
  11. package/esm2022/lib/models/client/annual-client-details.mjs +1 -1
  12. package/esm2022/lib/models/client/capital-loss.interface.mjs +2 -0
  13. package/esm2022/lib/models/client/capital-loss.mjs +19 -0
  14. package/esm2022/lib/models/client/index.mjs +3 -1
  15. package/esm2022/lib/models/endpoint/endpoints.const.mjs +5 -1
  16. package/esm2022/lib/models/income-source/salary-forecast.mjs +5 -1
  17. package/esm2022/lib/models/income-source/sole-forecast.mjs +5 -1
  18. package/esm2022/lib/models/property/property-forecast.mjs +6 -2
  19. package/esm2022/lib/models/sole/sole-business-loss.mjs +5 -1
  20. package/esm2022/lib/services/http/client/annual-client-details.service.mjs +23 -0
  21. package/esm2022/lib/services/http/client/capital-loss/capital-loss-messages.enum.mjs +7 -0
  22. package/esm2022/lib/services/http/client/capital-loss/capital-loss.service.mjs +23 -0
  23. package/esm2022/lib/services/http/client/capital-loss/index.mjs +3 -0
  24. package/esm2022/lib/services/http/client/index.mjs +3 -2
  25. package/esm2022/lib/services/http/property/property.service.mjs +2 -1
  26. package/fesm2022/taxtank-core.mjs +846 -783
  27. package/fesm2022/taxtank-core.mjs.map +1 -1
  28. package/lib/db/Models/client/annual-client-details.d.ts +0 -1
  29. package/lib/db/Models/incomeSource/income-source-forecast.d.ts +1 -0
  30. package/lib/db/Models/incomeSource/salary-forecast.d.ts +2 -0
  31. package/lib/db/Models/property/property-forecast.d.ts +2 -0
  32. package/lib/db/Models/sole/sole-business-loss.d.ts +2 -0
  33. package/lib/db/Models/sole/sole-forecast.d.ts +2 -0
  34. package/lib/forms/client/capital-loss.form.d.ts +6 -0
  35. package/lib/forms/client/index.d.ts +1 -0
  36. package/lib/models/client/annual-client-details.d.ts +0 -1
  37. package/lib/models/client/capital-loss.d.ts +11 -0
  38. package/lib/models/client/capital-loss.interface.d.ts +6 -0
  39. package/lib/models/client/index.d.ts +2 -0
  40. package/lib/models/income-source/salary-forecast.d.ts +2 -0
  41. package/lib/models/income-source/sole-forecast.d.ts +2 -0
  42. package/lib/models/property/property-forecast.d.ts +2 -0
  43. package/lib/models/sole/sole-business-loss.d.ts +2 -0
  44. package/lib/services/http/client/{capital-gain/annual-client-details.service.d.ts → annual-client-details.service.d.ts} +4 -4
  45. package/lib/services/http/client/capital-loss/capital-loss-messages.enum.d.ts +5 -0
  46. package/lib/services/http/client/capital-loss/capital-loss.service.d.ts +12 -0
  47. package/lib/services/http/client/capital-loss/index.d.ts +2 -0
  48. package/lib/services/http/client/index.d.ts +2 -1
  49. package/package.json +1 -1
  50. package/esm2022/lib/services/http/client/capital-gain/annual-client-details.service.mjs +0 -23
@@ -20,9 +20,9 @@ import orderBy from 'lodash/orderBy';
20
20
  import uniq from 'lodash/uniq';
21
21
  import moment from 'moment';
22
22
  import { DateRange } from 'moment-range';
23
+ import { Validators, FormGroup, FormArray, UntypedFormControl, UntypedFormArray, UntypedFormGroup, FormControl } from '@angular/forms';
23
24
  import ceil from 'lodash/ceil';
24
25
  import range from 'lodash/range';
25
- import { Validators, FormGroup, FormArray, UntypedFormControl, UntypedFormArray, UntypedFormGroup, FormControl } from '@angular/forms';
26
26
  import compact from 'lodash/compact';
27
27
  import concat from 'lodash/concat';
28
28
  import cloneDeep$1 from 'lodash/cloneDeep';
@@ -3728,679 +3728,280 @@ var SalaryForecastFrequencyEnum;
3728
3728
  SalaryForecastFrequencyEnum[SalaryForecastFrequencyEnum["WEEKLY"] = 52] = "WEEKLY";
3729
3729
  })(SalaryForecastFrequencyEnum || (SalaryForecastFrequencyEnum = {}));
3730
3730
 
3731
- class SalaryForecast extends SalaryForecast$1 {
3732
- get grossAmount() {
3733
- return this.netPay + this.tax;
3734
- }
3735
- get taxWithheld() {
3736
- return this.grossAmount - this.netPay;
3737
- }
3738
- get monthlyAmount() {
3739
- switch (this.frequency) {
3740
- case SalaryForecastFrequencyEnum.ANNUAL:
3741
- return this.netPay / FinancialYear.monthsInYear;
3742
- case SalaryForecastFrequencyEnum.FORTNIGHTLY:
3743
- return this.netPay * FinancialYear.weeksInYear / FinancialYear.monthsInYear / 2;
3744
- case SalaryForecastFrequencyEnum.WEEKLY:
3745
- return this.netPay * FinancialYear.weeksInYear / FinancialYear.monthsInYear;
3746
- default:
3747
- return this.netPay;
3748
- }
3749
- }
3731
+ var MyAccountHistoryInitiatedByEnum;
3732
+ (function (MyAccountHistoryInitiatedByEnum) {
3733
+ MyAccountHistoryInitiatedByEnum[MyAccountHistoryInitiatedByEnum["OWNER"] = 0] = "OWNER";
3734
+ MyAccountHistoryInitiatedByEnum[MyAccountHistoryInitiatedByEnum["ACCOUNTANT"] = 1] = "ACCOUNTANT";
3735
+ })(MyAccountHistoryInitiatedByEnum || (MyAccountHistoryInitiatedByEnum = {}));
3736
+
3737
+ var MyAccountHistoryStatusEnum;
3738
+ (function (MyAccountHistoryStatusEnum) {
3739
+ MyAccountHistoryStatusEnum[MyAccountHistoryStatusEnum["SUCCESS"] = 0] = "SUCCESS";
3740
+ MyAccountHistoryStatusEnum[MyAccountHistoryStatusEnum["ERROR"] = 1] = "ERROR";
3741
+ })(MyAccountHistoryStatusEnum || (MyAccountHistoryStatusEnum = {}));
3742
+
3743
+ var MyAccountHistoryTypeEnum;
3744
+ (function (MyAccountHistoryTypeEnum) {
3745
+ MyAccountHistoryTypeEnum[MyAccountHistoryTypeEnum["REVIEW"] = 0] = "REVIEW";
3746
+ MyAccountHistoryTypeEnum[MyAccountHistoryTypeEnum["UPGRADE_PLAN"] = 1] = "UPGRADE_PLAN";
3747
+ MyAccountHistoryTypeEnum[MyAccountHistoryTypeEnum["UPLOAD_DOCUMENT"] = 2] = "UPLOAD_DOCUMENT";
3748
+ })(MyAccountHistoryTypeEnum || (MyAccountHistoryTypeEnum = {}));
3749
+
3750
+ class MyAccountHistory {
3750
3751
  }
3751
- __decorate([
3752
- Type(() => Number)
3753
- ], SalaryForecast.prototype, "tax", void 0);
3754
- __decorate([
3755
- Type(() => Number)
3756
- ], SalaryForecast.prototype, "netPay", void 0);
3757
- __decorate([
3758
- Type(() => IncomeSource)
3759
- ], SalaryForecast.prototype, "incomeSource", void 0);
3760
3752
 
3761
- class SoleForecast extends SoleForecast$1 {
3762
- get netPay() {
3763
- return this.amount;
3764
- }
3753
+ class Occupation extends Occupation$1 {
3765
3754
  }
3766
- __decorate([
3767
- Type(() => IncomeSource)
3768
- ], SoleForecast.prototype, "incomeSource", void 0);
3769
3755
 
3770
- var IncomeSourceForecastTrustTypeEnum;
3771
- (function (IncomeSourceForecastTrustTypeEnum) {
3772
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["SPECIAL_DISABILITY_TRUST"] = 1] = "SPECIAL_DISABILITY_TRUST";
3773
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DECEASED_ESTATE"] = 2] = "DECEASED_ESTATE";
3774
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["FIXED_TRUST"] = 3] = "FIXED_TRUST";
3775
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["HYBRID_TRUST"] = 4] = "HYBRID_TRUST";
3776
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DISCRETIONARY_SERVICE_TRUST"] = 5] = "DISCRETIONARY_SERVICE_TRUST";
3777
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DISCRETIONARY_TRADING_TRUST"] = 6] = "DISCRETIONARY_TRADING_TRUST";
3778
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DISCRETIONARY_INVESTMENT_TRUST"] = 7] = "DISCRETIONARY_INVESTMENT_TRUST";
3779
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["CASH_MANAGEMENT_UNIT_TRUST"] = 8] = "CASH_MANAGEMENT_UNIT_TRUST";
3780
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["PUBLIC_UNIT_TRUST_LISTED"] = 9] = "PUBLIC_UNIT_TRUST_LISTED";
3781
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["PUBLIC_UNIT_TRUST_UNLISTED"] = 10] = "PUBLIC_UNIT_TRUST_UNLISTED";
3782
- IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["TESTAMENTARY_TRUST"] = 11] = "TESTAMENTARY_TRUST";
3783
- })(IncomeSourceForecastTrustTypeEnum || (IncomeSourceForecastTrustTypeEnum = {}));
3756
+ var UserRolesEnum;
3757
+ (function (UserRolesEnum) {
3758
+ UserRolesEnum["FIRM_OWNER"] = "ROLE_FIRM_OWNER";
3759
+ UserRolesEnum["FIRM_MANAGER"] = "ROLE_FIRM_MANAGER";
3760
+ UserRolesEnum["FIRM_TOP_MANAGER"] = "ROLE_FIRM_TOP_MANAGER";
3761
+ UserRolesEnum["CLIENT"] = "ROLE_CLIENT";
3762
+ UserRolesEnum["EMPLOYEE"] = "ROLE_EMPLOYEE";
3763
+ UserRolesEnum["ACCOUNTANT"] = "ROLE_ACCOUNTANT";
3764
+ UserRolesEnum["ADVISOR"] = "ROLE_ADVISOR";
3765
+ UserRolesEnum["USER"] = "ROLE_USER";
3766
+ UserRolesEnum["SUBSCRIPTION"] = "ROLE_USER_SUBSCRIPTION";
3767
+ UserRolesEnum["WORK_TANK"] = "ROLE_USER_WORK";
3768
+ UserRolesEnum["PROPERTY_TANK"] = "ROLE_USER_PROPERTY";
3769
+ UserRolesEnum["SOLE_TANK"] = "ROLE_USER_SOLE";
3770
+ UserRolesEnum["HOLDING_TANK"] = "ROLE_USER_HOLDING";
3771
+ UserRolesEnum["SWITCH_USER"] = "IS_IMPERSONATOR";
3772
+ })(UserRolesEnum || (UserRolesEnum = {}));
3784
3773
 
3785
- var IncomeSourceTypeListOtherEnum;
3786
- (function (IncomeSourceTypeListOtherEnum) {
3787
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PSI"] = 6] = "PSI";
3788
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
3789
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["TRUSTS"] = 9] = "TRUSTS";
3790
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["OTHER_INCOME"] = 10] = "OTHER_INCOME";
3791
- IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PARTNERSHIPS"] = 12] = "PARTNERSHIPS";
3792
- })(IncomeSourceTypeListOtherEnum || (IncomeSourceTypeListOtherEnum = {}));
3774
+ /**
3775
+ * role hierarchy
3776
+ */
3777
+ const USER_ROLES = {
3778
+ ROLE_FIRM_OWNER: [UserRolesEnum.FIRM_OWNER, UserRolesEnum.FIRM_MANAGER, UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR],
3779
+ ROLE_FIRM_MANAGER: [UserRolesEnum.FIRM_MANAGER, UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR],
3780
+ ROLE_EMPLOYEE: [UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR],
3781
+ ROLE_ACCOUNTANT: [UserRolesEnum.ACCOUNTANT],
3782
+ ROLE_ADVISOR: [UserRolesEnum.ADVISOR],
3783
+ // @TODO makes no sense, these roles can't be hierarchical
3784
+ ROLE_CLIENT: [UserRolesEnum.CLIENT],
3785
+ ROLE_USER_SUBSCRIPTION: [UserRolesEnum.SUBSCRIPTION],
3786
+ ROLE_USER_WORK: [UserRolesEnum.WORK_TANK],
3787
+ ROLE_USER_PROPERTY: [UserRolesEnum.PROPERTY_TANK],
3788
+ ROLE_USER_SOLE: [UserRolesEnum.SOLE_TANK],
3789
+ ROLE_USER_HOLDING: [UserRolesEnum.HOLDING_TANK],
3790
+ ROLE_PREVIOUS_ADMIN: [UserRolesEnum.SWITCH_USER],
3791
+ };
3793
3792
 
3794
- var IncomeSourceTypeListSoleEnum;
3795
- (function (IncomeSourceTypeListSoleEnum) {
3796
- IncomeSourceTypeListSoleEnum[IncomeSourceTypeListSoleEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
3797
- })(IncomeSourceTypeListSoleEnum || (IncomeSourceTypeListSoleEnum = {}));
3793
+ /**
3794
+ * Class with basic information about registering user
3795
+ */
3796
+ class UserToRegister {
3797
+ }
3798
3798
 
3799
- var IncomeSourceTypeListWorkEnum;
3800
- (function (IncomeSourceTypeListWorkEnum) {
3801
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["BONUSES"] = 1] = "BONUSES";
3802
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["DIRECTOR_FEES"] = 2] = "DIRECTOR_FEES";
3803
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["INTEREST"] = 4] = "INTEREST";
3804
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["PENSIONS_AND_ALLOWANCES"] = 5] = "PENSIONS_AND_ALLOWANCES";
3805
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["SUPERANNUATION"] = 8] = "SUPERANNUATION";
3806
- IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["ATTRIBUTED_P_S_I"] = 11] = "ATTRIBUTED_P_S_I";
3807
- })(IncomeSourceTypeListWorkEnum || (IncomeSourceTypeListWorkEnum = {}));
3799
+ const USER_WORK_POSITION = {
3800
+ [UserRolesEnum.EMPLOYEE]: 'Employee',
3801
+ [UserRolesEnum.FIRM_MANAGER]: 'Manager',
3802
+ [UserRolesEnum.FIRM_OWNER]: 'Firm Owner'
3803
+ };
3808
3804
 
3809
- var IncomeSourceTypeListHoldingEnum;
3810
- (function (IncomeSourceTypeListHoldingEnum) {
3811
- IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["DIVIDENDS"] = 3] = "DIVIDENDS";
3812
- IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["INTEREST"] = 4] = "INTEREST";
3813
- IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["TRUSTS"] = 9] = "TRUSTS";
3814
- IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["OTHER_INCOME"] = 10] = "OTHER_INCOME";
3815
- IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["PARTNERSHIPS"] = 12] = "PARTNERSHIPS";
3816
- })(IncomeSourceTypeListHoldingEnum || (IncomeSourceTypeListHoldingEnum = {}));
3805
+ var UserStatusEnum;
3806
+ (function (UserStatusEnum) {
3807
+ UserStatusEnum[UserStatusEnum["INACTIVE"] = 0] = "INACTIVE";
3808
+ UserStatusEnum[UserStatusEnum["ON_BOARDING"] = 1] = "ON_BOARDING";
3809
+ UserStatusEnum[UserStatusEnum["ACTIVE"] = 2] = "ACTIVE";
3810
+ })(UserStatusEnum || (UserStatusEnum = {}));
3817
3811
 
3818
- class IncomeSourceType extends IncomeSourceType$1 {
3819
- isBonuses() {
3820
- return this.id === IncomeSourceTypeListWorkEnum.BONUSES;
3821
- }
3822
- isWork() {
3823
- return !!IncomeSourceTypeListWorkEnum[this.id];
3824
- }
3825
- isOther() {
3826
- return !!IncomeSourceTypeListOtherEnum[this.id];
3812
+ class ClientDetails extends ClientDetails$1 {
3813
+ /**
3814
+ * reminder to sign basiq consent after x days before the expiration
3815
+ */
3816
+ static { this.consentExpiryReminderDays = 30; }
3817
+ get taxFileNumberMasked() {
3818
+ const maskedLength = this.taxFileNumber.length - 4;
3819
+ const maskedPart = '*'.repeat(maskedLength);
3820
+ const lastFour = this.taxFileNumber.slice(-4);
3821
+ return maskedPart + lastFour;
3827
3822
  }
3828
- isHolding() {
3829
- return !!IncomeSourceTypeListHoldingEnum[this.id];
3823
+ isBasiqConsentExpiring() {
3824
+ if (!this.basiqConsentExpiryDate || this.isBasiqConsentExpired()) {
3825
+ return false;
3826
+ }
3827
+ const reminderDate = new Date(this.basiqConsentExpiryDate);
3828
+ reminderDate.setDate(this.basiqConsentExpiryDate.getDate() - ClientDetails.consentExpiryReminderDays);
3829
+ return new Date() >= reminderDate;
3830
3830
  }
3831
- isSole() {
3832
- return !!IncomeSourceTypeListSoleEnum[this.id];
3831
+ isBasiqConsentExpired() {
3832
+ return this.basiqConsentExpiryDate && new Date() >= this.basiqConsentExpiryDate;
3833
3833
  }
3834
3834
  }
3835
+ __decorate([
3836
+ Type(() => Date)
3837
+ ], ClientDetails.prototype, "basiqConsentExpiryDate", void 0);
3835
3838
 
3836
- class IncomeSourceForecast extends IncomeSourceForecast$1 {
3839
+ class AnnualClientDetails extends AbstractModel {
3837
3840
  constructor() {
3838
3841
  super(...arguments);
3839
- this.paygIncome = 0;
3840
- this.frequency = SalaryForecastFrequencyEnum.ANNUAL;
3841
- this.isTaxFree = false;
3842
- }
3843
- /**
3844
- * Sometimes Income source has Salary & Income source forecasts,
3845
- * and we need these fields to work with Income source forecasts like with Salary Forecasts
3846
- */
3847
- get netPay() {
3848
- return this.amount;
3842
+ this.spouseAnnualIncome = 0;
3843
+ this.financialYear = new FinancialYear().year;
3849
3844
  }
3850
- get grossAmount() {
3851
- return this.amount + this.tax + this.taxInstalments + this.frankingCredits;
3845
+ get spouseMonthlyIncome() {
3846
+ return this.spouseAnnualIncome / 12;
3852
3847
  }
3853
- get monthlyAmount() {
3854
- return this.amount / 12;
3848
+ }
3849
+ __decorate([
3850
+ Type(() => ClientDetails)
3851
+ ], AnnualClientDetails.prototype, "clientDetails", void 0);
3852
+
3853
+ var ClientInviteStatusEnum;
3854
+ (function (ClientInviteStatusEnum) {
3855
+ ClientInviteStatusEnum[ClientInviteStatusEnum["PENDING"] = 1] = "PENDING";
3856
+ ClientInviteStatusEnum[ClientInviteStatusEnum["REJECTED"] = 2] = "REJECTED";
3857
+ })(ClientInviteStatusEnum || (ClientInviteStatusEnum = {}));
3858
+
3859
+ var ClientInviteTypeEnum;
3860
+ (function (ClientInviteTypeEnum) {
3861
+ ClientInviteTypeEnum[ClientInviteTypeEnum["FROM_CLIENT"] = 1] = "FROM_CLIENT";
3862
+ ClientInviteTypeEnum[ClientInviteTypeEnum["FROM_EMPLOYEE"] = 2] = "FROM_EMPLOYEE";
3863
+ })(ClientInviteTypeEnum || (ClientInviteTypeEnum = {}));
3864
+
3865
+ class RegistrationInvite extends RegistrationInvite$1 {
3866
+ get fullName() {
3867
+ return `${this.firstName} ${this.lastName}`;
3855
3868
  }
3856
3869
  }
3857
3870
  __decorate([
3858
- Type(() => IncomeSourceType)
3859
- ], IncomeSourceForecast.prototype, "incomeSourceType", void 0);
3871
+ Type(() => AppFile)
3872
+ ], RegistrationInvite.prototype, "file", void 0);
3860
3873
  __decorate([
3861
- Type(() => IncomeSource)
3862
- ], IncomeSourceForecast.prototype, "incomeSource", void 0);
3874
+ Type(() => User)
3875
+ ], RegistrationInvite.prototype, "user", void 0);
3863
3876
 
3864
- class IncomeSource extends IncomeSource$1 {
3865
- isSoleIncome() {
3866
- return this.type === IncomeSourceTypeEnum.SOLE;
3867
- }
3868
- isWorkIncome() {
3869
- return this.type === IncomeSourceTypeEnum.WORK;
3877
+ var PhoneTypeEnum;
3878
+ (function (PhoneTypeEnum) {
3879
+ PhoneTypeEnum[PhoneTypeEnum["MOBILE"] = 1] = "MOBILE";
3880
+ PhoneTypeEnum[PhoneTypeEnum["OFFICE"] = 2] = "OFFICE";
3881
+ })(PhoneTypeEnum || (PhoneTypeEnum = {}));
3882
+
3883
+ class Phone extends Phone$1 {
3884
+ constructor() {
3885
+ super(...arguments);
3886
+ this.country = Country.australia;
3887
+ this.type = PhoneTypeEnum.MOBILE;
3870
3888
  }
3871
- isOtherIncome() {
3872
- return this.type === IncomeSourceTypeEnum.OTHER;
3873
- }
3874
- isHolding() {
3875
- return this.type === IncomeSourceTypeEnum.HOLDING;
3876
- }
3877
- /**
3878
- * Get salary and other income forecasts
3879
- */
3880
- get forecasts() {
3881
- return [...this.salaryForecasts, ...this.incomeSourceForecasts, ...this.soleForecasts];
3882
- }
3883
- /**
3884
- * Get actual (1st from the list) forecast
3885
- */
3886
- get actualForecast() {
3887
- return this.forecasts[0];
3888
- }
3889
- /**
3890
- * Check if user was working in month taken by the index
3891
- * @param monthIndex by which month should be taken
3892
- */
3893
- isWorkedInMonth(monthIndex) {
3894
- const monthDate = new FinancialYear().getMonthDate(monthIndex);
3895
- return (!this.dateFrom || monthDate >= this.dateFrom) && (!this.dateTo || monthDate < this.dateTo);
3889
+ toString() {
3890
+ return `+${this.country.callingCode} ${this.number}`;
3896
3891
  }
3897
3892
  }
3898
3893
  __decorate([
3899
- Type(() => SalaryForecast)
3900
- ], IncomeSource.prototype, "salaryForecasts", void 0);
3894
+ Type(() => Country)
3895
+ ], Phone.prototype, "country", void 0);
3896
+
3897
+ class Firm extends Firm$1 {
3898
+ isAccountant() {
3899
+ return this.type === FirmTypeEnum.ACCOUNTANT;
3900
+ }
3901
+ }
3901
3902
  __decorate([
3902
- Type(() => SoleForecast)
3903
- ], IncomeSource.prototype, "soleForecasts", void 0);
3903
+ Type(() => User)
3904
+ ], Firm.prototype, "owner", void 0);
3904
3905
  __decorate([
3905
- Type(() => IncomeSourceForecast)
3906
- ], IncomeSource.prototype, "incomeSourceForecasts", void 0);
3906
+ Type(() => Address)
3907
+ ], Firm.prototype, "address", void 0);
3907
3908
  __decorate([
3908
- Type(() => Date)
3909
- ], IncomeSource.prototype, "dateFrom", void 0);
3909
+ Type(() => Phone)
3910
+ ], Firm.prototype, "phone", void 0);
3910
3911
  __decorate([
3911
- Type(() => Date)
3912
- ], IncomeSource.prototype, "dateTo", void 0);
3912
+ Type(() => AppFile)
3913
+ ], Firm.prototype, "file", void 0);
3913
3914
 
3914
- /**
3915
- * Income sources chart data
3916
- */
3917
- class IncomeSourceChartData {
3918
- constructor(forecastedIncomeAmount, transactions) {
3919
- this.forecastedIncomeAmount = forecastedIncomeAmount;
3920
- this.transactions = transactions;
3921
- }
3922
- /**
3923
- * Get prepared data for income sources chart
3924
- */
3925
- get() {
3926
- const chartData = [{
3927
- id: 'actualIncome',
3928
- name: 'Actual Income',
3929
- data: [],
3930
- // display future actual incomes with dash line and past actual incomes with solid line
3931
- zones: [{
3932
- // line style after current month
3933
- value: new FinancialYear().getMonthDate(new Date().getMonth()).getTime(),
3934
- dashStyle: 'Solid'
3935
- }, {
3936
- // default line style
3937
- dashStyle: 'Dash'
3938
- }]
3939
- }, {
3940
- id: 'forecastedIncome',
3941
- name: 'Forecasted Income',
3942
- data: [],
3943
- }];
3944
- for (const key in MonthNameShortEnum) {
3945
- if (MonthNameShortEnum.hasOwnProperty(key)) {
3946
- // transaction collection for provided month
3947
- const monthTransactionCollection = this.transactions.getByMonth(+MonthNumberEnum[key]);
3948
- chartData[0].data.push([new FinancialYear().getMonthDate(+MonthNumberEnum[key]).getTime(), monthTransactionCollection.amount]);
3949
- chartData[1].data.push([new FinancialYear().getMonthDate(+MonthNumberEnum[key]).getTime(), this.forecastedIncomeAmount / 12]);
3950
- }
3951
- }
3952
- return chartData;
3915
+ class FirmBranch extends AbstractModel {
3916
+ constructor() {
3917
+ super(...arguments);
3918
+ this.isMain = false;
3953
3919
  }
3954
3920
  }
3921
+ __decorate([
3922
+ Type(() => Firm)
3923
+ ], FirmBranch.prototype, "firm", void 0);
3924
+ __decorate([
3925
+ Type(() => Address)
3926
+ ], FirmBranch.prototype, "address", void 0);
3927
+ __decorate([
3928
+ Type(() => Phone)
3929
+ ], FirmBranch.prototype, "phone", void 0);
3955
3930
 
3956
- var TransactionSourceEnum;
3957
- (function (TransactionSourceEnum) {
3958
- TransactionSourceEnum[TransactionSourceEnum["CASH"] = 1] = "CASH";
3959
- TransactionSourceEnum[TransactionSourceEnum["BANK_TRANSACTION"] = 2] = "BANK_TRANSACTION";
3960
- })(TransactionSourceEnum || (TransactionSourceEnum = {}));
3961
-
3962
- class AllocationRuleTransaction extends AllocationRuleTransaction$1 {
3963
- constructor() {
3964
- super(...arguments);
3965
- this.claimPercent = 100;
3966
- this.tax = 0;
3967
- this.amount = null;
3931
+ class ClientInvite extends ClientInvite$1 {
3932
+ /**
3933
+ * Check if client invite status is pending
3934
+ */
3935
+ isPending() {
3936
+ return this.status === ClientInviteStatusEnum.PENDING;
3968
3937
  }
3969
- get amountPercentCoefficient() {
3970
- return this.amountPercent ? this.amountPercent / 100 : 1;
3938
+ /**
3939
+ * Check if client invite status is accepted
3940
+ */
3941
+ isAccepted() {
3942
+ return !this.isPending() && !this.isRejected();
3971
3943
  }
3972
- calculateClaimPercent() {
3973
- if (!this.chartAccounts) {
3974
- return null;
3975
- }
3976
- let claimPercent = this.chartAccounts.taxablePercent;
3977
- // Property claim (ownership% x shared%) for property expenses, taxable percent for others
3978
- if (this.chartAccounts?.isProperty() && this.property) {
3979
- if (this.chartAccounts.isPropertyExpense() && this.chartAccounts.id !== ChartAccountsListEnum.PLATFORM_FEES) {
3980
- claimPercent *= this.property?.claimCoefficient;
3981
- }
3982
- }
3983
- return claimPercent;
3944
+ /**
3945
+ * Check if client invite status is rejected
3946
+ */
3947
+ isRejected() {
3948
+ return this.status === ClientInviteStatusEnum.REJECTED;
3984
3949
  }
3985
3950
  /**
3986
- * If rule transaction has amount then split enabled. There is 0 when split disabled
3951
+ * Check if client invite initiated by firm
3987
3952
  */
3988
- isSplit() {
3989
- return !!this.amountPercent;
3953
+ isFromEmployee() {
3954
+ return this.type === ClientInviteTypeEnum.FROM_EMPLOYEE;
3990
3955
  }
3991
3956
  /**
3992
- * Create Transaction instance based on passed bank transaction and rule transaction
3957
+ * Check if client invite initiated by client
3993
3958
  */
3994
- toTransaction(bankTransaction = null) {
3995
- const transaction = bankTransaction ? bankTransaction.toTransaction(this.isGST) : plainToClass(Transaction, {});
3996
- Object.assign(transaction, {
3997
- isGST: this.isGST,
3998
- tax: this.tax,
3999
- claimPercent: this.claimPercent,
4000
- chartAccounts: this.chartAccounts,
4001
- property: this.property,
4002
- loan: this.loan,
4003
- incomeSource: this.incomeSource,
4004
- metaFields: this.metaFields,
4005
- business: this.business,
4006
- source: TransactionSourceEnum.BANK_TRANSACTION,
4007
- operation: TransactionOperationEnum.ALLOCATE,
4008
- transactions: [],
4009
- });
4010
- // split allocation
4011
- if (this.amountPercent) {
4012
- transaction.amount = bankTransaction.amount * this.amountPercentCoefficient / this.gstCoefficient;
4013
- }
4014
- // child transactions inherit most of the fields from parent transaction
4015
- this.childTransactions.forEach((childRuleTransaction) => {
4016
- const childTransaction = childRuleTransaction.toTransaction();
4017
- childTransaction.amount = childRuleTransaction.amount;
4018
- childTransaction.setParent(transaction);
4019
- transaction.transactions.push(childTransaction);
4020
- });
4021
- return transaction;
3959
+ isFromClient() {
3960
+ return this.type === ClientInviteTypeEnum.FROM_CLIENT;
3961
+ }
3962
+ get firstName() {
3963
+ return this.client ? this.client.firstName : this.registrationInvite?.firstName;
3964
+ }
3965
+ get fullName() {
3966
+ return this.client ? this.client.fullName : this.registrationInvite?.fullName;
3967
+ }
3968
+ get email() {
3969
+ return this.client ? this.client.email : this.registrationInvite?.email;
4022
3970
  }
4023
3971
  }
4024
3972
  __decorate([
4025
- Type(() => ChartAccounts)
4026
- // @TODO Alex: Create custom decorator for this transform
4027
- ,
4028
- Transform(({ value }) => ({ id: value.id }), { toPlainOnly: true })
4029
- ], AllocationRuleTransaction.prototype, "chartAccounts", void 0);
4030
- __decorate([
4031
- Type(() => Property),
4032
- Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
4033
- ], AllocationRuleTransaction.prototype, "property", void 0);
4034
- __decorate([
4035
- Type(() => Loan),
4036
- Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
4037
- ], AllocationRuleTransaction.prototype, "loan", void 0);
4038
- __decorate([
4039
- Type(() => IncomeSource),
4040
- Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
4041
- ], AllocationRuleTransaction.prototype, "incomeSource", void 0);
3973
+ Type(() => Date)
3974
+ ], ClientInvite.prototype, "sentOn", void 0);
4042
3975
  __decorate([
4043
- Type(() => SoleBusiness),
4044
- Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
4045
- ], AllocationRuleTransaction.prototype, "business", void 0);
3976
+ Type(() => Date)
3977
+ ], ClientInvite.prototype, "updatedAt", void 0);
4046
3978
  __decorate([
4047
- Type(() => AllocationRuleTransactionMetaField)
4048
- ], AllocationRuleTransaction.prototype, "metaFields", void 0);
3979
+ Type(() => User)
3980
+ ], ClientInvite.prototype, "client", void 0);
4049
3981
  __decorate([
4050
- Type(() => AllocationRuleTransaction)
4051
- ], AllocationRuleTransaction.prototype, "parentTransaction", void 0);
3982
+ Type(() => User)
3983
+ ], ClientInvite.prototype, "employee", void 0);
4052
3984
  __decorate([
4053
- Type(() => AllocationRuleTransaction)
4054
- ], AllocationRuleTransaction.prototype, "childTransactions", void 0);
3985
+ Type(() => RegistrationInvite)
3986
+ ], ClientInvite.prototype, "registrationInvite", void 0);
4055
3987
  __decorate([
4056
- Type(() => Number)
4057
- ], AllocationRuleTransaction.prototype, "claimPercent", void 0);
3988
+ Type(() => Firm)
3989
+ ], ClientInvite.prototype, "firm", void 0);
4058
3990
  __decorate([
4059
- Type(() => Number)
4060
- ], AllocationRuleTransaction.prototype, "tax", void 0);
4061
-
4062
- var TransactionTypeEnum;
4063
- (function (TransactionTypeEnum) {
4064
- TransactionTypeEnum[TransactionTypeEnum["DEBIT"] = 1] = "DEBIT";
4065
- TransactionTypeEnum[TransactionTypeEnum["CREDIT"] = 2] = "CREDIT";
4066
- })(TransactionTypeEnum || (TransactionTypeEnum = {}));
3991
+ Type(() => FirmBranch)
3992
+ ], ClientInvite.prototype, "firmBranch", void 0);
4067
3993
 
4068
- class TaxExemption extends TaxExemption$1 {
4069
- isPartial() {
4070
- return [TaxExemptionEnum.INVESTMENT_TO_PPR, TaxExemptionEnum.PPR_TO_INVESTMENT].includes(this.id);
3994
+ class ClientMovement extends ClientMovement$1 {
3995
+ get firm() {
3996
+ return this.firmBranch.firm;
4071
3997
  }
4072
3998
  }
4073
-
4074
- class AssetSale extends ObservableModel {
4075
- static { this.className = 'AssetSale'; }
4076
- }
4077
- __decorate([
4078
- Type(() => Date)
4079
- ], AssetSale.prototype, "date", void 0);
4080
-
4081
- class PropertySale extends AssetSale {
4082
- get saleCostsTotalAmount() {
4083
- return this.commission + this.legalFees + this.otherCost;
4084
- }
4085
- /**
4086
- * CGT is not applicable for sales with "Principle place of residence" exemption type.
4087
- * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/4644110466/Tax+Return+MyTax+-+Online+Form ("Capital gains or losses" section)
4088
- */
4089
- isCGTApplicable() {
4090
- return this.taxExemption?.id !== TaxExemptionEnum.PPR;
4091
- }
4092
- get netPrice() {
4093
- return this.price - this.saleCostsTotalAmount;
4094
- }
4095
- }
4096
- __decorate([
4097
- Type(() => Number)
4098
- ], PropertySale.prototype, "holdingCosts", void 0);
4099
- __decorate([
4100
- Type(() => Number)
4101
- ], PropertySale.prototype, "structuralImprovementsWDV", void 0);
4102
- __decorate([
4103
- Type(() => Number)
4104
- ], PropertySale.prototype, "buildingAtCostClaimed", void 0);
4105
- __decorate([
4106
- Type(() => Number)
4107
- ], PropertySale.prototype, "price", void 0);
4108
- __decorate([
4109
- Type(() => Number)
4110
- ], PropertySale.prototype, "commission", void 0);
4111
- __decorate([
4112
- Type(() => Number)
4113
- ], PropertySale.prototype, "legalFees", void 0);
4114
- __decorate([
4115
- Type(() => Number)
4116
- ], PropertySale.prototype, "otherCost", void 0);
4117
- __decorate([
4118
- Type(() => Date)
4119
- ], PropertySale.prototype, "settlementDate", void 0);
4120
- __decorate([
4121
- Type(() => Date)
4122
- ], PropertySale.prototype, "date", void 0);
4123
- __decorate([
4124
- Type(() => TaxExemption)
4125
- ], PropertySale.prototype, "taxExemption", void 0);
4126
- __decorate([
4127
- Type(() => PropertySaleTaxExemptionMetaField$1)
4128
- ], PropertySale.prototype, "taxExemptionMetaFields", void 0);
4129
-
4130
- var MyAccountHistoryInitiatedByEnum;
4131
- (function (MyAccountHistoryInitiatedByEnum) {
4132
- MyAccountHistoryInitiatedByEnum[MyAccountHistoryInitiatedByEnum["OWNER"] = 0] = "OWNER";
4133
- MyAccountHistoryInitiatedByEnum[MyAccountHistoryInitiatedByEnum["ACCOUNTANT"] = 1] = "ACCOUNTANT";
4134
- })(MyAccountHistoryInitiatedByEnum || (MyAccountHistoryInitiatedByEnum = {}));
4135
-
4136
- var MyAccountHistoryStatusEnum;
4137
- (function (MyAccountHistoryStatusEnum) {
4138
- MyAccountHistoryStatusEnum[MyAccountHistoryStatusEnum["SUCCESS"] = 0] = "SUCCESS";
4139
- MyAccountHistoryStatusEnum[MyAccountHistoryStatusEnum["ERROR"] = 1] = "ERROR";
4140
- })(MyAccountHistoryStatusEnum || (MyAccountHistoryStatusEnum = {}));
4141
-
4142
- var MyAccountHistoryTypeEnum;
4143
- (function (MyAccountHistoryTypeEnum) {
4144
- MyAccountHistoryTypeEnum[MyAccountHistoryTypeEnum["REVIEW"] = 0] = "REVIEW";
4145
- MyAccountHistoryTypeEnum[MyAccountHistoryTypeEnum["UPGRADE_PLAN"] = 1] = "UPGRADE_PLAN";
4146
- MyAccountHistoryTypeEnum[MyAccountHistoryTypeEnum["UPLOAD_DOCUMENT"] = 2] = "UPLOAD_DOCUMENT";
4147
- })(MyAccountHistoryTypeEnum || (MyAccountHistoryTypeEnum = {}));
4148
-
4149
- class MyAccountHistory {
4150
- }
4151
-
4152
- class Occupation extends Occupation$1 {
4153
- }
4154
-
4155
- var UserRolesEnum;
4156
- (function (UserRolesEnum) {
4157
- UserRolesEnum["FIRM_OWNER"] = "ROLE_FIRM_OWNER";
4158
- UserRolesEnum["FIRM_MANAGER"] = "ROLE_FIRM_MANAGER";
4159
- UserRolesEnum["FIRM_TOP_MANAGER"] = "ROLE_FIRM_TOP_MANAGER";
4160
- UserRolesEnum["CLIENT"] = "ROLE_CLIENT";
4161
- UserRolesEnum["EMPLOYEE"] = "ROLE_EMPLOYEE";
4162
- UserRolesEnum["ACCOUNTANT"] = "ROLE_ACCOUNTANT";
4163
- UserRolesEnum["ADVISOR"] = "ROLE_ADVISOR";
4164
- UserRolesEnum["USER"] = "ROLE_USER";
4165
- UserRolesEnum["SUBSCRIPTION"] = "ROLE_USER_SUBSCRIPTION";
4166
- UserRolesEnum["WORK_TANK"] = "ROLE_USER_WORK";
4167
- UserRolesEnum["PROPERTY_TANK"] = "ROLE_USER_PROPERTY";
4168
- UserRolesEnum["SOLE_TANK"] = "ROLE_USER_SOLE";
4169
- UserRolesEnum["HOLDING_TANK"] = "ROLE_USER_HOLDING";
4170
- UserRolesEnum["SWITCH_USER"] = "IS_IMPERSONATOR";
4171
- })(UserRolesEnum || (UserRolesEnum = {}));
4172
-
4173
- /**
4174
- * role hierarchy
4175
- */
4176
- const USER_ROLES = {
4177
- ROLE_FIRM_OWNER: [UserRolesEnum.FIRM_OWNER, UserRolesEnum.FIRM_MANAGER, UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR],
4178
- ROLE_FIRM_MANAGER: [UserRolesEnum.FIRM_MANAGER, UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR],
4179
- ROLE_EMPLOYEE: [UserRolesEnum.ACCOUNTANT, UserRolesEnum.ADVISOR],
4180
- ROLE_ACCOUNTANT: [UserRolesEnum.ACCOUNTANT],
4181
- ROLE_ADVISOR: [UserRolesEnum.ADVISOR],
4182
- // @TODO makes no sense, these roles can't be hierarchical
4183
- ROLE_CLIENT: [UserRolesEnum.CLIENT],
4184
- ROLE_USER_SUBSCRIPTION: [UserRolesEnum.SUBSCRIPTION],
4185
- ROLE_USER_WORK: [UserRolesEnum.WORK_TANK],
4186
- ROLE_USER_PROPERTY: [UserRolesEnum.PROPERTY_TANK],
4187
- ROLE_USER_SOLE: [UserRolesEnum.SOLE_TANK],
4188
- ROLE_USER_HOLDING: [UserRolesEnum.HOLDING_TANK],
4189
- ROLE_PREVIOUS_ADMIN: [UserRolesEnum.SWITCH_USER],
4190
- };
4191
-
4192
- /**
4193
- * Class with basic information about registering user
4194
- */
4195
- class UserToRegister {
4196
- }
4197
-
4198
- const USER_WORK_POSITION = {
4199
- [UserRolesEnum.EMPLOYEE]: 'Employee',
4200
- [UserRolesEnum.FIRM_MANAGER]: 'Manager',
4201
- [UserRolesEnum.FIRM_OWNER]: 'Firm Owner'
4202
- };
4203
-
4204
- var UserStatusEnum;
4205
- (function (UserStatusEnum) {
4206
- UserStatusEnum[UserStatusEnum["INACTIVE"] = 0] = "INACTIVE";
4207
- UserStatusEnum[UserStatusEnum["ON_BOARDING"] = 1] = "ON_BOARDING";
4208
- UserStatusEnum[UserStatusEnum["ACTIVE"] = 2] = "ACTIVE";
4209
- })(UserStatusEnum || (UserStatusEnum = {}));
4210
-
4211
- class ClientDetails extends ClientDetails$1 {
4212
- /**
4213
- * reminder to sign basiq consent after x days before the expiration
4214
- */
4215
- static { this.consentExpiryReminderDays = 30; }
4216
- get taxFileNumberMasked() {
4217
- const maskedLength = this.taxFileNumber.length - 4;
4218
- const maskedPart = '*'.repeat(maskedLength);
4219
- const lastFour = this.taxFileNumber.slice(-4);
4220
- return maskedPart + lastFour;
4221
- }
4222
- isBasiqConsentExpiring() {
4223
- if (!this.basiqConsentExpiryDate || this.isBasiqConsentExpired()) {
4224
- return false;
4225
- }
4226
- const reminderDate = new Date(this.basiqConsentExpiryDate);
4227
- reminderDate.setDate(this.basiqConsentExpiryDate.getDate() - ClientDetails.consentExpiryReminderDays);
4228
- return new Date() >= reminderDate;
4229
- }
4230
- isBasiqConsentExpired() {
4231
- return this.basiqConsentExpiryDate && new Date() >= this.basiqConsentExpiryDate;
4232
- }
4233
- }
4234
- __decorate([
4235
- Type(() => Date)
4236
- ], ClientDetails.prototype, "basiqConsentExpiryDate", void 0);
4237
-
4238
- class AnnualClientDetails extends AbstractModel {
4239
- constructor() {
4240
- super(...arguments);
4241
- this.spouseAnnualIncome = 0;
4242
- this.financialYear = new FinancialYear().year;
4243
- }
4244
- get spouseMonthlyIncome() {
4245
- return this.spouseAnnualIncome / 12;
4246
- }
4247
- }
4248
- __decorate([
4249
- Type(() => ClientDetails)
4250
- ], AnnualClientDetails.prototype, "clientDetails", void 0);
4251
-
4252
- var ClientInviteStatusEnum;
4253
- (function (ClientInviteStatusEnum) {
4254
- ClientInviteStatusEnum[ClientInviteStatusEnum["PENDING"] = 1] = "PENDING";
4255
- ClientInviteStatusEnum[ClientInviteStatusEnum["REJECTED"] = 2] = "REJECTED";
4256
- })(ClientInviteStatusEnum || (ClientInviteStatusEnum = {}));
4257
-
4258
- var ClientInviteTypeEnum;
4259
- (function (ClientInviteTypeEnum) {
4260
- ClientInviteTypeEnum[ClientInviteTypeEnum["FROM_CLIENT"] = 1] = "FROM_CLIENT";
4261
- ClientInviteTypeEnum[ClientInviteTypeEnum["FROM_EMPLOYEE"] = 2] = "FROM_EMPLOYEE";
4262
- })(ClientInviteTypeEnum || (ClientInviteTypeEnum = {}));
4263
-
4264
- class RegistrationInvite extends RegistrationInvite$1 {
4265
- get fullName() {
4266
- return `${this.firstName} ${this.lastName}`;
4267
- }
4268
- }
4269
- __decorate([
4270
- Type(() => AppFile)
4271
- ], RegistrationInvite.prototype, "file", void 0);
4272
- __decorate([
4273
- Type(() => User)
4274
- ], RegistrationInvite.prototype, "user", void 0);
4275
-
4276
- var PhoneTypeEnum;
4277
- (function (PhoneTypeEnum) {
4278
- PhoneTypeEnum[PhoneTypeEnum["MOBILE"] = 1] = "MOBILE";
4279
- PhoneTypeEnum[PhoneTypeEnum["OFFICE"] = 2] = "OFFICE";
4280
- })(PhoneTypeEnum || (PhoneTypeEnum = {}));
4281
-
4282
- class Phone extends Phone$1 {
4283
- constructor() {
4284
- super(...arguments);
4285
- this.country = Country.australia;
4286
- this.type = PhoneTypeEnum.MOBILE;
4287
- }
4288
- toString() {
4289
- return `+${this.country.callingCode} ${this.number}`;
4290
- }
4291
- }
4292
- __decorate([
4293
- Type(() => Country)
4294
- ], Phone.prototype, "country", void 0);
4295
-
4296
- class Firm extends Firm$1 {
4297
- isAccountant() {
4298
- return this.type === FirmTypeEnum.ACCOUNTANT;
4299
- }
4300
- }
4301
- __decorate([
4302
- Type(() => User)
4303
- ], Firm.prototype, "owner", void 0);
4304
- __decorate([
4305
- Type(() => Address)
4306
- ], Firm.prototype, "address", void 0);
4307
- __decorate([
4308
- Type(() => Phone)
4309
- ], Firm.prototype, "phone", void 0);
4310
- __decorate([
4311
- Type(() => AppFile)
4312
- ], Firm.prototype, "file", void 0);
4313
-
4314
- class FirmBranch extends AbstractModel {
4315
- constructor() {
4316
- super(...arguments);
4317
- this.isMain = false;
4318
- }
4319
- }
4320
- __decorate([
4321
- Type(() => Firm)
4322
- ], FirmBranch.prototype, "firm", void 0);
4323
- __decorate([
4324
- Type(() => Address)
4325
- ], FirmBranch.prototype, "address", void 0);
4326
- __decorate([
4327
- Type(() => Phone)
4328
- ], FirmBranch.prototype, "phone", void 0);
4329
-
4330
- class ClientInvite extends ClientInvite$1 {
4331
- /**
4332
- * Check if client invite status is pending
4333
- */
4334
- isPending() {
4335
- return this.status === ClientInviteStatusEnum.PENDING;
4336
- }
4337
- /**
4338
- * Check if client invite status is accepted
4339
- */
4340
- isAccepted() {
4341
- return !this.isPending() && !this.isRejected();
4342
- }
4343
- /**
4344
- * Check if client invite status is rejected
4345
- */
4346
- isRejected() {
4347
- return this.status === ClientInviteStatusEnum.REJECTED;
4348
- }
4349
- /**
4350
- * Check if client invite initiated by firm
4351
- */
4352
- isFromEmployee() {
4353
- return this.type === ClientInviteTypeEnum.FROM_EMPLOYEE;
4354
- }
4355
- /**
4356
- * Check if client invite initiated by client
4357
- */
4358
- isFromClient() {
4359
- return this.type === ClientInviteTypeEnum.FROM_CLIENT;
4360
- }
4361
- get firstName() {
4362
- return this.client ? this.client.firstName : this.registrationInvite?.firstName;
4363
- }
4364
- get fullName() {
4365
- return this.client ? this.client.fullName : this.registrationInvite?.fullName;
4366
- }
4367
- get email() {
4368
- return this.client ? this.client.email : this.registrationInvite?.email;
4369
- }
4370
- }
4371
- __decorate([
4372
- Type(() => Date)
4373
- ], ClientInvite.prototype, "sentOn", void 0);
4374
- __decorate([
4375
- Type(() => Date)
4376
- ], ClientInvite.prototype, "updatedAt", void 0);
4377
- __decorate([
4378
- Type(() => User)
4379
- ], ClientInvite.prototype, "client", void 0);
4380
- __decorate([
4381
- Type(() => User)
4382
- ], ClientInvite.prototype, "employee", void 0);
4383
- __decorate([
4384
- Type(() => RegistrationInvite)
4385
- ], ClientInvite.prototype, "registrationInvite", void 0);
4386
- __decorate([
4387
- Type(() => Firm)
4388
- ], ClientInvite.prototype, "firm", void 0);
4389
- __decorate([
4390
- Type(() => FirmBranch)
4391
- ], ClientInvite.prototype, "firmBranch", void 0);
4392
-
4393
- class ClientMovement extends ClientMovement$1 {
4394
- get firm() {
4395
- return this.firmBranch.firm;
4396
- }
4397
- }
4398
- __decorate([
4399
- Type(() => User)
4400
- ], ClientMovement.prototype, "client", void 0);
4401
- __decorate([
4402
- Type(() => User)
4403
- ], ClientMovement.prototype, "employee", void 0);
3999
+ __decorate([
4000
+ Type(() => User)
4001
+ ], ClientMovement.prototype, "client", void 0);
4002
+ __decorate([
4003
+ Type(() => User)
4004
+ ], ClientMovement.prototype, "employee", void 0);
4404
4005
  __decorate([
4405
4006
  Type(() => Date)
4406
4007
  ], ClientMovement.prototype, "dateFrom", void 0);
@@ -4487,6 +4088,19 @@ class ClientPortfolioChartData {
4487
4088
  class ClientPortfolioReport extends AbstractModel {
4488
4089
  }
4489
4090
 
4091
+ class CapitalLoss extends AbstractModel {
4092
+ constructor() {
4093
+ super(...arguments);
4094
+ this.financialYear = new FinancialYear().year;
4095
+ }
4096
+ }
4097
+ __decorate([
4098
+ Type(() => ClientDetails)
4099
+ ], CapitalLoss.prototype, "clientDetails", void 0);
4100
+ __decorate([
4101
+ Type(() => User)
4102
+ ], CapitalLoss.prototype, "updatedBy", void 0);
4103
+
4490
4104
  class EmployeeDetails extends EmployeeDetails$1 {
4491
4105
  get firmBranchNames() {
4492
4106
  return this.firmBranches.map(branch => branch.name).join(', ');
@@ -4922,6 +4536,15 @@ __decorate([
4922
4536
  __decorate([
4923
4537
  Type(() => SoleBusinessLossOffsetRule)
4924
4538
  ], SoleBusinessLoss.prototype, "offsetRule", void 0);
4539
+ __decorate([
4540
+ Type(() => User)
4541
+ ], SoleBusinessLoss.prototype, "updatedBy", void 0);
4542
+
4543
+ var TransactionSourceEnum;
4544
+ (function (TransactionSourceEnum) {
4545
+ TransactionSourceEnum[TransactionSourceEnum["CASH"] = 1] = "CASH";
4546
+ TransactionSourceEnum[TransactionSourceEnum["BANK_TRANSACTION"] = 2] = "BANK_TRANSACTION";
4547
+ })(TransactionSourceEnum || (TransactionSourceEnum = {}));
4925
4548
 
4926
4549
  var SoleInvoiceTaxTypeEnum;
4927
4550
  (function (SoleInvoiceTaxTypeEnum) {
@@ -5449,228 +5072,627 @@ class BasReport extends BasReport$1 {
5449
5072
  if (!this.id) {
5450
5073
  return 0;
5451
5074
  }
5452
- return this.incomeGST + this.expenseGST + this.taxWithheldTotal + this.paygTaxInstalment - this.fuelTaxCredit;
5075
+ return this.incomeGST + this.expenseGST + this.taxWithheldTotal + this.paygTaxInstalment - this.fuelTaxCredit;
5076
+ }
5077
+ }
5078
+ __decorate([
5079
+ Type(() => Date)
5080
+ ], BasReport.prototype, "dateFrom", void 0);
5081
+ __decorate([
5082
+ Type(() => Date)
5083
+ ], BasReport.prototype, "dateTo", void 0);
5084
+
5085
+ class SetupItem extends AbstractModel {
5086
+ }
5087
+
5088
+ /**
5089
+ * Enum list of all possible account setup items ids. Using with [ACCOUNT_SETUP_ITEMS]{@link ACCOUNT_SETUP_ITEMS}
5090
+ * @TODO Vik/Nikita: Do we need to generate it from backend? If some ids changed?
5091
+ */
5092
+ var AccountSetupItemsEnum;
5093
+ (function (AccountSetupItemsEnum) {
5094
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SALARY"] = 1] = "SALARY";
5095
+ AccountSetupItemsEnum[AccountSetupItemsEnum["OTHER_INCOME"] = 2] = "OTHER_INCOME";
5096
+ AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY"] = 3] = "PROPERTY";
5097
+ AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_FEEDS"] = 4] = "BANK_FEEDS";
5098
+ AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_LOGBOOK"] = 5] = "WORK_LOGBOOK";
5099
+ AccountSetupItemsEnum[AccountSetupItemsEnum["TRANSACTION_ALLOCATE"] = 6] = "TRANSACTION_ALLOCATE";
5100
+ AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESS"] = 7] = "SOLE_BUSINESS";
5101
+ AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDINGS"] = 8] = "HOLDINGS";
5102
+ AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_DETAILS"] = 9] = "FIRM_DETAILS";
5103
+ AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_TEAM"] = 10] = "INVITE_TEAM";
5104
+ AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_CLIENTS"] = 11] = "INVITE_CLIENTS";
5105
+ })(AccountSetupItemsEnum || (AccountSetupItemsEnum = {}));
5106
+
5107
+ class AccountSetupItem extends SetupItem {
5108
+ get isSalary() {
5109
+ return this.id === AccountSetupItemsEnum.SALARY;
5110
+ }
5111
+ get isOtherIncome() {
5112
+ return this.id === AccountSetupItemsEnum.OTHER_INCOME;
5113
+ }
5114
+ get isProperty() {
5115
+ return this.id === AccountSetupItemsEnum.PROPERTY;
5116
+ }
5117
+ get isBankFeeds() {
5118
+ return this.id === AccountSetupItemsEnum.BANK_FEEDS;
5119
+ }
5120
+ get isWorkLogbook() {
5121
+ return this.id === AccountSetupItemsEnum.WORK_LOGBOOK;
5122
+ }
5123
+ get isTransactionAllocate() {
5124
+ return this.id === AccountSetupItemsEnum.TRANSACTION_ALLOCATE;
5125
+ }
5126
+ get isSoleBusiness() {
5127
+ return this.id === AccountSetupItemsEnum.SOLE_BUSINESS;
5128
+ }
5129
+ get isHoldings() {
5130
+ return this.id === AccountSetupItemsEnum.HOLDINGS;
5131
+ }
5132
+ get isFirmDetails() {
5133
+ return this.id === AccountSetupItemsEnum.FIRM_DETAILS;
5134
+ }
5135
+ get isInviteTeam() {
5136
+ return this.id === AccountSetupItemsEnum.INVITE_TEAM;
5137
+ }
5138
+ get isInviteClients() {
5139
+ return this.id === AccountSetupItemsEnum.INVITE_CLIENTS;
5140
+ }
5141
+ }
5142
+
5143
+ class User extends User$1 {
5144
+ constructor() {
5145
+ super(...arguments);
5146
+ this.blacklistSetupItems = [];
5147
+ }
5148
+ get fullName() {
5149
+ return `${this.firstName} ${this.lastName}`;
5150
+ }
5151
+ get photo() {
5152
+ return this.file?.publicUrl;
5153
+ }
5154
+ get activeSubscription() {
5155
+ return this.subscriptions.find((ss) => ss.isActive);
5156
+ }
5157
+ get lastSubscription() {
5158
+ return this.subscriptions[this.subscriptions.length - 1];
5159
+ }
5160
+ /**
5161
+ * @TODO refactor
5162
+ *
5163
+ */
5164
+ get position() {
5165
+ switch (true) {
5166
+ case this.isFirmOwner():
5167
+ return USER_WORK_POSITION[UserRolesEnum.FIRM_OWNER];
5168
+ case this.isManager():
5169
+ return USER_WORK_POSITION[UserRolesEnum.FIRM_MANAGER];
5170
+ case this.isEmployee():
5171
+ return USER_WORK_POSITION[UserRolesEnum.EMPLOYEE];
5172
+ default:
5173
+ return '';
5174
+ }
5175
+ }
5176
+ /**
5177
+ * search roles including hierarchy
5178
+ */
5179
+ hasRoles(roles) {
5180
+ roles = roles instanceof Array ? roles : [roles];
5181
+ if (!roles.length) {
5182
+ return true;
5183
+ }
5184
+ roles = flatten(roles.map((role) => USER_ROLES[role]));
5185
+ return !!intersection(this.roles, roles).length;
5186
+ }
5187
+ isOnboarding() {
5188
+ return this.status === UserStatusEnum.ON_BOARDING;
5189
+ }
5190
+ isInactive() {
5191
+ return this.status === UserStatusEnum.INACTIVE;
5192
+ }
5193
+ hasSubscription() {
5194
+ return this.roles.includes(UserRolesEnum.SUBSCRIPTION);
5195
+ }
5196
+ isLoggedIn() {
5197
+ return this.id === +localStorage.getItem('userId');
5198
+ }
5199
+ isClient() {
5200
+ return this.roles.includes(UserRolesEnum.CLIENT);
5201
+ }
5202
+ isEmployee() {
5203
+ return this.isAccountant() || this.isAdvisor();
5204
+ }
5205
+ isAccountant() {
5206
+ return this.roles.includes(UserRolesEnum.ACCOUNTANT);
5207
+ }
5208
+ isAdvisor() {
5209
+ return this.roles.includes(UserRolesEnum.ADVISOR);
5210
+ }
5211
+ isImpersonator() {
5212
+ return this.roles.includes(UserRolesEnum.SWITCH_USER);
5213
+ }
5214
+ /**
5215
+ * Check if current user is firm owner
5216
+ */
5217
+ isFirmOwner() {
5218
+ return this.roles.includes(UserRolesEnum.FIRM_OWNER);
5219
+ }
5220
+ isTopManager() {
5221
+ return this.roles.includes(UserRolesEnum.FIRM_TOP_MANAGER) || this.roles.includes(UserRolesEnum.FIRM_OWNER);
5222
+ }
5223
+ isManager() {
5224
+ return this.roles.includes(UserRolesEnum.FIRM_MANAGER) || this.roles.includes(UserRolesEnum.FIRM_TOP_MANAGER) || this.roles.includes(UserRolesEnum.FIRM_OWNER);
5225
+ }
5226
+ /**
5227
+ * check if user has property tank access
5228
+ */
5229
+ hasPropertyTank() {
5230
+ return this.roles ?
5231
+ this.roles.includes(UserRolesEnum.PROPERTY_TANK) :
5232
+ !!this.getSubscriptionRole(UserRolesEnum.PROPERTY_TANK);
5233
+ }
5234
+ /**
5235
+ * check if user has property tank access
5236
+ */
5237
+ hasWorkTank() {
5238
+ return this.roles ?
5239
+ this.roles.includes(UserRolesEnum.WORK_TANK) :
5240
+ !!this.getSubscriptionRole(UserRolesEnum.WORK_TANK);
5241
+ }
5242
+ /**
5243
+ * Get user subscription role by provided role type
5244
+ * @param roleType by which role should be returned
5245
+ */
5246
+ getSubscriptionRole(roleType) {
5247
+ /**
5248
+ * Add @TODO for Alex to check if we should use getLastSubscription here
5249
+ */
5250
+ return this.activeSubscription?.items
5251
+ .find((subscriptionItem) => subscriptionItem.price.product.role.includes(roleType));
5252
+ }
5253
+ isCurrentFinancialYear() {
5254
+ return new FinancialYear(new Date()).year === this.financialYear;
5255
+ }
5256
+ /**
5257
+ * financial years available in the app for user
5258
+ * starts from 2022 for new users and registeredYear - 1 for old users
5259
+ */
5260
+ get financialYears() {
5261
+ return range(Math.min(FinancialYear.toFinYear(this.createdAt) - 1, 2022), FinancialYear.toFinYear(new Date()) + 1);
5262
+ }
5263
+ get firmBranchNames() {
5264
+ return this.employeeDetails.firmBranchNames;
5265
+ }
5266
+ }
5267
+ __decorate([
5268
+ Type(() => ServiceSubscription)
5269
+ ], User.prototype, "subscriptions", void 0);
5270
+ __decorate([
5271
+ Type(() => ClientDetails)
5272
+ ], User.prototype, "clientDetails", void 0);
5273
+ __decorate([
5274
+ Type(() => EmployeeDetails)
5275
+ ], User.prototype, "employeeDetails", void 0);
5276
+ __decorate([
5277
+ Type(() => SoleDetails)
5278
+ ], User.prototype, "soleDetails", void 0);
5279
+ __decorate([
5280
+ Type(() => Address)
5281
+ ], User.prototype, "address", void 0);
5282
+ __decorate([
5283
+ Type(() => Phone)
5284
+ ], User.prototype, "phone", void 0);
5285
+ __decorate([
5286
+ Type(() => Date)
5287
+ ], User.prototype, "createdAt", void 0);
5288
+ __decorate([
5289
+ Type(() => User)
5290
+ ], User.prototype, "clients", void 0);
5291
+ __decorate([
5292
+ Type(() => AppFile)
5293
+ ], User.prototype, "file", void 0);
5294
+ __decorate([
5295
+ Type(() => AccountSetupItem)
5296
+ ], User.prototype, "blacklistSetupItems", void 0);
5297
+
5298
+ class SalaryForecast extends SalaryForecast$1 {
5299
+ get grossAmount() {
5300
+ return this.netPay + this.tax;
5301
+ }
5302
+ get taxWithheld() {
5303
+ return this.grossAmount - this.netPay;
5304
+ }
5305
+ get monthlyAmount() {
5306
+ switch (this.frequency) {
5307
+ case SalaryForecastFrequencyEnum.ANNUAL:
5308
+ return this.netPay / FinancialYear.monthsInYear;
5309
+ case SalaryForecastFrequencyEnum.FORTNIGHTLY:
5310
+ return this.netPay * FinancialYear.weeksInYear / FinancialYear.monthsInYear / 2;
5311
+ case SalaryForecastFrequencyEnum.WEEKLY:
5312
+ return this.netPay * FinancialYear.weeksInYear / FinancialYear.monthsInYear;
5313
+ default:
5314
+ return this.netPay;
5315
+ }
5453
5316
  }
5454
5317
  }
5455
5318
  __decorate([
5456
- Type(() => Date)
5457
- ], BasReport.prototype, "dateFrom", void 0);
5319
+ Type(() => Number)
5320
+ ], SalaryForecast.prototype, "tax", void 0);
5458
5321
  __decorate([
5459
- Type(() => Date)
5460
- ], BasReport.prototype, "dateTo", void 0);
5322
+ Type(() => Number)
5323
+ ], SalaryForecast.prototype, "netPay", void 0);
5324
+ __decorate([
5325
+ Type(() => IncomeSource)
5326
+ ], SalaryForecast.prototype, "incomeSource", void 0);
5327
+ __decorate([
5328
+ Type(() => User)
5329
+ ], SalaryForecast.prototype, "updatedBy", void 0);
5461
5330
 
5462
- class SetupItem extends AbstractModel {
5331
+ class SoleForecast extends SoleForecast$1 {
5332
+ get netPay() {
5333
+ return this.amount;
5334
+ }
5463
5335
  }
5336
+ __decorate([
5337
+ Type(() => IncomeSource)
5338
+ ], SoleForecast.prototype, "incomeSource", void 0);
5339
+ __decorate([
5340
+ Type(() => User)
5341
+ ], SoleForecast.prototype, "updatedBy", void 0);
5464
5342
 
5465
- /**
5466
- * Enum list of all possible account setup items ids. Using with [ACCOUNT_SETUP_ITEMS]{@link ACCOUNT_SETUP_ITEMS}
5467
- * @TODO Vik/Nikita: Do we need to generate it from backend? If some ids changed?
5468
- */
5469
- var AccountSetupItemsEnum;
5470
- (function (AccountSetupItemsEnum) {
5471
- AccountSetupItemsEnum[AccountSetupItemsEnum["SALARY"] = 1] = "SALARY";
5472
- AccountSetupItemsEnum[AccountSetupItemsEnum["OTHER_INCOME"] = 2] = "OTHER_INCOME";
5473
- AccountSetupItemsEnum[AccountSetupItemsEnum["PROPERTY"] = 3] = "PROPERTY";
5474
- AccountSetupItemsEnum[AccountSetupItemsEnum["BANK_FEEDS"] = 4] = "BANK_FEEDS";
5475
- AccountSetupItemsEnum[AccountSetupItemsEnum["WORK_LOGBOOK"] = 5] = "WORK_LOGBOOK";
5476
- AccountSetupItemsEnum[AccountSetupItemsEnum["TRANSACTION_ALLOCATE"] = 6] = "TRANSACTION_ALLOCATE";
5477
- AccountSetupItemsEnum[AccountSetupItemsEnum["SOLE_BUSINESS"] = 7] = "SOLE_BUSINESS";
5478
- AccountSetupItemsEnum[AccountSetupItemsEnum["HOLDINGS"] = 8] = "HOLDINGS";
5479
- AccountSetupItemsEnum[AccountSetupItemsEnum["FIRM_DETAILS"] = 9] = "FIRM_DETAILS";
5480
- AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_TEAM"] = 10] = "INVITE_TEAM";
5481
- AccountSetupItemsEnum[AccountSetupItemsEnum["INVITE_CLIENTS"] = 11] = "INVITE_CLIENTS";
5482
- })(AccountSetupItemsEnum || (AccountSetupItemsEnum = {}));
5343
+ var IncomeSourceForecastTrustTypeEnum;
5344
+ (function (IncomeSourceForecastTrustTypeEnum) {
5345
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["SPECIAL_DISABILITY_TRUST"] = 1] = "SPECIAL_DISABILITY_TRUST";
5346
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DECEASED_ESTATE"] = 2] = "DECEASED_ESTATE";
5347
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["FIXED_TRUST"] = 3] = "FIXED_TRUST";
5348
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["HYBRID_TRUST"] = 4] = "HYBRID_TRUST";
5349
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DISCRETIONARY_SERVICE_TRUST"] = 5] = "DISCRETIONARY_SERVICE_TRUST";
5350
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DISCRETIONARY_TRADING_TRUST"] = 6] = "DISCRETIONARY_TRADING_TRUST";
5351
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["DISCRETIONARY_INVESTMENT_TRUST"] = 7] = "DISCRETIONARY_INVESTMENT_TRUST";
5352
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["CASH_MANAGEMENT_UNIT_TRUST"] = 8] = "CASH_MANAGEMENT_UNIT_TRUST";
5353
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["PUBLIC_UNIT_TRUST_LISTED"] = 9] = "PUBLIC_UNIT_TRUST_LISTED";
5354
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["PUBLIC_UNIT_TRUST_UNLISTED"] = 10] = "PUBLIC_UNIT_TRUST_UNLISTED";
5355
+ IncomeSourceForecastTrustTypeEnum[IncomeSourceForecastTrustTypeEnum["TESTAMENTARY_TRUST"] = 11] = "TESTAMENTARY_TRUST";
5356
+ })(IncomeSourceForecastTrustTypeEnum || (IncomeSourceForecastTrustTypeEnum = {}));
5483
5357
 
5484
- class AccountSetupItem extends SetupItem {
5485
- get isSalary() {
5486
- return this.id === AccountSetupItemsEnum.SALARY;
5487
- }
5488
- get isOtherIncome() {
5489
- return this.id === AccountSetupItemsEnum.OTHER_INCOME;
5490
- }
5491
- get isProperty() {
5492
- return this.id === AccountSetupItemsEnum.PROPERTY;
5493
- }
5494
- get isBankFeeds() {
5495
- return this.id === AccountSetupItemsEnum.BANK_FEEDS;
5496
- }
5497
- get isWorkLogbook() {
5498
- return this.id === AccountSetupItemsEnum.WORK_LOGBOOK;
5499
- }
5500
- get isTransactionAllocate() {
5501
- return this.id === AccountSetupItemsEnum.TRANSACTION_ALLOCATE;
5502
- }
5503
- get isSoleBusiness() {
5504
- return this.id === AccountSetupItemsEnum.SOLE_BUSINESS;
5358
+ var IncomeSourceTypeListOtherEnum;
5359
+ (function (IncomeSourceTypeListOtherEnum) {
5360
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PSI"] = 6] = "PSI";
5361
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
5362
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["TRUSTS"] = 9] = "TRUSTS";
5363
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["OTHER_INCOME"] = 10] = "OTHER_INCOME";
5364
+ IncomeSourceTypeListOtherEnum[IncomeSourceTypeListOtherEnum["PARTNERSHIPS"] = 12] = "PARTNERSHIPS";
5365
+ })(IncomeSourceTypeListOtherEnum || (IncomeSourceTypeListOtherEnum = {}));
5366
+
5367
+ var IncomeSourceTypeListSoleEnum;
5368
+ (function (IncomeSourceTypeListSoleEnum) {
5369
+ IncomeSourceTypeListSoleEnum[IncomeSourceTypeListSoleEnum["SOLE_TRADER"] = 7] = "SOLE_TRADER";
5370
+ })(IncomeSourceTypeListSoleEnum || (IncomeSourceTypeListSoleEnum = {}));
5371
+
5372
+ var IncomeSourceTypeListWorkEnum;
5373
+ (function (IncomeSourceTypeListWorkEnum) {
5374
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["BONUSES"] = 1] = "BONUSES";
5375
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["DIRECTOR_FEES"] = 2] = "DIRECTOR_FEES";
5376
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["INTEREST"] = 4] = "INTEREST";
5377
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["PENSIONS_AND_ALLOWANCES"] = 5] = "PENSIONS_AND_ALLOWANCES";
5378
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["SUPERANNUATION"] = 8] = "SUPERANNUATION";
5379
+ IncomeSourceTypeListWorkEnum[IncomeSourceTypeListWorkEnum["ATTRIBUTED_P_S_I"] = 11] = "ATTRIBUTED_P_S_I";
5380
+ })(IncomeSourceTypeListWorkEnum || (IncomeSourceTypeListWorkEnum = {}));
5381
+
5382
+ var IncomeSourceTypeListHoldingEnum;
5383
+ (function (IncomeSourceTypeListHoldingEnum) {
5384
+ IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["DIVIDENDS"] = 3] = "DIVIDENDS";
5385
+ IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["INTEREST"] = 4] = "INTEREST";
5386
+ IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["TRUSTS"] = 9] = "TRUSTS";
5387
+ IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["OTHER_INCOME"] = 10] = "OTHER_INCOME";
5388
+ IncomeSourceTypeListHoldingEnum[IncomeSourceTypeListHoldingEnum["PARTNERSHIPS"] = 12] = "PARTNERSHIPS";
5389
+ })(IncomeSourceTypeListHoldingEnum || (IncomeSourceTypeListHoldingEnum = {}));
5390
+
5391
+ class IncomeSourceType extends IncomeSourceType$1 {
5392
+ isBonuses() {
5393
+ return this.id === IncomeSourceTypeListWorkEnum.BONUSES;
5505
5394
  }
5506
- get isHoldings() {
5507
- return this.id === AccountSetupItemsEnum.HOLDINGS;
5395
+ isWork() {
5396
+ return !!IncomeSourceTypeListWorkEnum[this.id];
5508
5397
  }
5509
- get isFirmDetails() {
5510
- return this.id === AccountSetupItemsEnum.FIRM_DETAILS;
5398
+ isOther() {
5399
+ return !!IncomeSourceTypeListOtherEnum[this.id];
5511
5400
  }
5512
- get isInviteTeam() {
5513
- return this.id === AccountSetupItemsEnum.INVITE_TEAM;
5401
+ isHolding() {
5402
+ return !!IncomeSourceTypeListHoldingEnum[this.id];
5514
5403
  }
5515
- get isInviteClients() {
5516
- return this.id === AccountSetupItemsEnum.INVITE_CLIENTS;
5404
+ isSole() {
5405
+ return !!IncomeSourceTypeListSoleEnum[this.id];
5517
5406
  }
5518
5407
  }
5519
5408
 
5520
- class User extends User$1 {
5409
+ class IncomeSourceForecast extends IncomeSourceForecast$1 {
5521
5410
  constructor() {
5522
5411
  super(...arguments);
5523
- this.blacklistSetupItems = [];
5524
- }
5525
- get fullName() {
5526
- return `${this.firstName} ${this.lastName}`;
5527
- }
5528
- get photo() {
5529
- return this.file?.publicUrl;
5530
- }
5531
- get activeSubscription() {
5532
- return this.subscriptions.find((ss) => ss.isActive);
5533
- }
5534
- get lastSubscription() {
5535
- return this.subscriptions[this.subscriptions.length - 1];
5412
+ this.paygIncome = 0;
5413
+ this.frequency = SalaryForecastFrequencyEnum.ANNUAL;
5414
+ this.isTaxFree = false;
5536
5415
  }
5537
5416
  /**
5538
- * @TODO refactor
5539
- *
5417
+ * Sometimes Income source has Salary & Income source forecasts,
5418
+ * and we need these fields to work with Income source forecasts like with Salary Forecasts
5540
5419
  */
5541
- get position() {
5542
- switch (true) {
5543
- case this.isFirmOwner():
5544
- return USER_WORK_POSITION[UserRolesEnum.FIRM_OWNER];
5545
- case this.isManager():
5546
- return USER_WORK_POSITION[UserRolesEnum.FIRM_MANAGER];
5547
- case this.isEmployee():
5548
- return USER_WORK_POSITION[UserRolesEnum.EMPLOYEE];
5549
- default:
5550
- return '';
5551
- }
5420
+ get netPay() {
5421
+ return this.amount;
5552
5422
  }
5553
- /**
5554
- * search roles including hierarchy
5555
- */
5556
- hasRoles(roles) {
5557
- roles = roles instanceof Array ? roles : [roles];
5558
- if (!roles.length) {
5559
- return true;
5560
- }
5561
- roles = flatten(roles.map((role) => USER_ROLES[role]));
5562
- return !!intersection(this.roles, roles).length;
5423
+ get grossAmount() {
5424
+ return this.amount + this.tax + this.taxInstalments + this.frankingCredits;
5563
5425
  }
5564
- isOnboarding() {
5565
- return this.status === UserStatusEnum.ON_BOARDING;
5426
+ get monthlyAmount() {
5427
+ return this.amount / 12;
5566
5428
  }
5567
- isInactive() {
5568
- return this.status === UserStatusEnum.INACTIVE;
5429
+ }
5430
+ __decorate([
5431
+ Type(() => IncomeSourceType)
5432
+ ], IncomeSourceForecast.prototype, "incomeSourceType", void 0);
5433
+ __decorate([
5434
+ Type(() => IncomeSource)
5435
+ ], IncomeSourceForecast.prototype, "incomeSource", void 0);
5436
+
5437
+ class IncomeSource extends IncomeSource$1 {
5438
+ isSoleIncome() {
5439
+ return this.type === IncomeSourceTypeEnum.SOLE;
5569
5440
  }
5570
- hasSubscription() {
5571
- return this.roles.includes(UserRolesEnum.SUBSCRIPTION);
5441
+ isWorkIncome() {
5442
+ return this.type === IncomeSourceTypeEnum.WORK;
5572
5443
  }
5573
- isLoggedIn() {
5574
- return this.id === +localStorage.getItem('userId');
5444
+ isOtherIncome() {
5445
+ return this.type === IncomeSourceTypeEnum.OTHER;
5575
5446
  }
5576
- isClient() {
5577
- return this.roles.includes(UserRolesEnum.CLIENT);
5447
+ isHolding() {
5448
+ return this.type === IncomeSourceTypeEnum.HOLDING;
5578
5449
  }
5579
- isEmployee() {
5580
- return this.isAccountant() || this.isAdvisor();
5450
+ /**
5451
+ * Get salary and other income forecasts
5452
+ */
5453
+ get forecasts() {
5454
+ return [...this.salaryForecasts, ...this.incomeSourceForecasts, ...this.soleForecasts];
5581
5455
  }
5582
- isAccountant() {
5583
- return this.roles.includes(UserRolesEnum.ACCOUNTANT);
5456
+ /**
5457
+ * Get actual (1st from the list) forecast
5458
+ */
5459
+ get actualForecast() {
5460
+ return this.forecasts[0];
5584
5461
  }
5585
- isAdvisor() {
5586
- return this.roles.includes(UserRolesEnum.ADVISOR);
5462
+ /**
5463
+ * Check if user was working in month taken by the index
5464
+ * @param monthIndex by which month should be taken
5465
+ */
5466
+ isWorkedInMonth(monthIndex) {
5467
+ const monthDate = new FinancialYear().getMonthDate(monthIndex);
5468
+ return (!this.dateFrom || monthDate >= this.dateFrom) && (!this.dateTo || monthDate < this.dateTo);
5587
5469
  }
5588
- isImpersonator() {
5589
- return this.roles.includes(UserRolesEnum.SWITCH_USER);
5470
+ }
5471
+ __decorate([
5472
+ Type(() => SalaryForecast)
5473
+ ], IncomeSource.prototype, "salaryForecasts", void 0);
5474
+ __decorate([
5475
+ Type(() => SoleForecast)
5476
+ ], IncomeSource.prototype, "soleForecasts", void 0);
5477
+ __decorate([
5478
+ Type(() => IncomeSourceForecast)
5479
+ ], IncomeSource.prototype, "incomeSourceForecasts", void 0);
5480
+ __decorate([
5481
+ Type(() => Date)
5482
+ ], IncomeSource.prototype, "dateFrom", void 0);
5483
+ __decorate([
5484
+ Type(() => Date)
5485
+ ], IncomeSource.prototype, "dateTo", void 0);
5486
+
5487
+ /**
5488
+ * Income sources chart data
5489
+ */
5490
+ class IncomeSourceChartData {
5491
+ constructor(forecastedIncomeAmount, transactions) {
5492
+ this.forecastedIncomeAmount = forecastedIncomeAmount;
5493
+ this.transactions = transactions;
5590
5494
  }
5591
5495
  /**
5592
- * Check if current user is firm owner
5496
+ * Get prepared data for income sources chart
5593
5497
  */
5594
- isFirmOwner() {
5595
- return this.roles.includes(UserRolesEnum.FIRM_OWNER);
5498
+ get() {
5499
+ const chartData = [{
5500
+ id: 'actualIncome',
5501
+ name: 'Actual Income',
5502
+ data: [],
5503
+ // display future actual incomes with dash line and past actual incomes with solid line
5504
+ zones: [{
5505
+ // line style after current month
5506
+ value: new FinancialYear().getMonthDate(new Date().getMonth()).getTime(),
5507
+ dashStyle: 'Solid'
5508
+ }, {
5509
+ // default line style
5510
+ dashStyle: 'Dash'
5511
+ }]
5512
+ }, {
5513
+ id: 'forecastedIncome',
5514
+ name: 'Forecasted Income',
5515
+ data: [],
5516
+ }];
5517
+ for (const key in MonthNameShortEnum) {
5518
+ if (MonthNameShortEnum.hasOwnProperty(key)) {
5519
+ // transaction collection for provided month
5520
+ const monthTransactionCollection = this.transactions.getByMonth(+MonthNumberEnum[key]);
5521
+ chartData[0].data.push([new FinancialYear().getMonthDate(+MonthNumberEnum[key]).getTime(), monthTransactionCollection.amount]);
5522
+ chartData[1].data.push([new FinancialYear().getMonthDate(+MonthNumberEnum[key]).getTime(), this.forecastedIncomeAmount / 12]);
5523
+ }
5524
+ }
5525
+ return chartData;
5596
5526
  }
5597
- isTopManager() {
5598
- return this.roles.includes(UserRolesEnum.FIRM_TOP_MANAGER) || this.roles.includes(UserRolesEnum.FIRM_OWNER);
5527
+ }
5528
+
5529
+ class AllocationRuleTransaction extends AllocationRuleTransaction$1 {
5530
+ constructor() {
5531
+ super(...arguments);
5532
+ this.claimPercent = 100;
5533
+ this.tax = 0;
5534
+ this.amount = null;
5599
5535
  }
5600
- isManager() {
5601
- return this.roles.includes(UserRolesEnum.FIRM_MANAGER) || this.roles.includes(UserRolesEnum.FIRM_TOP_MANAGER) || this.roles.includes(UserRolesEnum.FIRM_OWNER);
5536
+ get amountPercentCoefficient() {
5537
+ return this.amountPercent ? this.amountPercent / 100 : 1;
5602
5538
  }
5603
- /**
5604
- * check if user has property tank access
5605
- */
5606
- hasPropertyTank() {
5607
- return this.roles ?
5608
- this.roles.includes(UserRolesEnum.PROPERTY_TANK) :
5609
- !!this.getSubscriptionRole(UserRolesEnum.PROPERTY_TANK);
5539
+ calculateClaimPercent() {
5540
+ if (!this.chartAccounts) {
5541
+ return null;
5542
+ }
5543
+ let claimPercent = this.chartAccounts.taxablePercent;
5544
+ // Property claim (ownership% x shared%) for property expenses, taxable percent for others
5545
+ if (this.chartAccounts?.isProperty() && this.property) {
5546
+ if (this.chartAccounts.isPropertyExpense() && this.chartAccounts.id !== ChartAccountsListEnum.PLATFORM_FEES) {
5547
+ claimPercent *= this.property?.claimCoefficient;
5548
+ }
5549
+ }
5550
+ return claimPercent;
5610
5551
  }
5611
5552
  /**
5612
- * check if user has property tank access
5553
+ * If rule transaction has amount then split enabled. There is 0 when split disabled
5613
5554
  */
5614
- hasWorkTank() {
5615
- return this.roles ?
5616
- this.roles.includes(UserRolesEnum.WORK_TANK) :
5617
- !!this.getSubscriptionRole(UserRolesEnum.WORK_TANK);
5555
+ isSplit() {
5556
+ return !!this.amountPercent;
5618
5557
  }
5619
5558
  /**
5620
- * Get user subscription role by provided role type
5621
- * @param roleType by which role should be returned
5559
+ * Create Transaction instance based on passed bank transaction and rule transaction
5622
5560
  */
5623
- getSubscriptionRole(roleType) {
5624
- /**
5625
- * Add @TODO for Alex to check if we should use getLastSubscription here
5626
- */
5627
- return this.activeSubscription?.items
5628
- .find((subscriptionItem) => subscriptionItem.price.product.role.includes(roleType));
5561
+ toTransaction(bankTransaction = null) {
5562
+ const transaction = bankTransaction ? bankTransaction.toTransaction(this.isGST) : plainToClass(Transaction, {});
5563
+ Object.assign(transaction, {
5564
+ isGST: this.isGST,
5565
+ tax: this.tax,
5566
+ claimPercent: this.claimPercent,
5567
+ chartAccounts: this.chartAccounts,
5568
+ property: this.property,
5569
+ loan: this.loan,
5570
+ incomeSource: this.incomeSource,
5571
+ metaFields: this.metaFields,
5572
+ business: this.business,
5573
+ source: TransactionSourceEnum.BANK_TRANSACTION,
5574
+ operation: TransactionOperationEnum.ALLOCATE,
5575
+ transactions: [],
5576
+ });
5577
+ // split allocation
5578
+ if (this.amountPercent) {
5579
+ transaction.amount = bankTransaction.amount * this.amountPercentCoefficient / this.gstCoefficient;
5580
+ }
5581
+ // child transactions inherit most of the fields from parent transaction
5582
+ this.childTransactions.forEach((childRuleTransaction) => {
5583
+ const childTransaction = childRuleTransaction.toTransaction();
5584
+ childTransaction.amount = childRuleTransaction.amount;
5585
+ childTransaction.setParent(transaction);
5586
+ transaction.transactions.push(childTransaction);
5587
+ });
5588
+ return transaction;
5629
5589
  }
5630
- isCurrentFinancialYear() {
5631
- return new FinancialYear(new Date()).year === this.financialYear;
5590
+ }
5591
+ __decorate([
5592
+ Type(() => ChartAccounts)
5593
+ // @TODO Alex: Create custom decorator for this transform
5594
+ ,
5595
+ Transform(({ value }) => ({ id: value.id }), { toPlainOnly: true })
5596
+ ], AllocationRuleTransaction.prototype, "chartAccounts", void 0);
5597
+ __decorate([
5598
+ Type(() => Property),
5599
+ Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
5600
+ ], AllocationRuleTransaction.prototype, "property", void 0);
5601
+ __decorate([
5602
+ Type(() => Loan),
5603
+ Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
5604
+ ], AllocationRuleTransaction.prototype, "loan", void 0);
5605
+ __decorate([
5606
+ Type(() => IncomeSource),
5607
+ Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
5608
+ ], AllocationRuleTransaction.prototype, "incomeSource", void 0);
5609
+ __decorate([
5610
+ Type(() => SoleBusiness),
5611
+ Transform(({ value }) => value ? { id: value.id } : null, { toPlainOnly: true })
5612
+ ], AllocationRuleTransaction.prototype, "business", void 0);
5613
+ __decorate([
5614
+ Type(() => AllocationRuleTransactionMetaField)
5615
+ ], AllocationRuleTransaction.prototype, "metaFields", void 0);
5616
+ __decorate([
5617
+ Type(() => AllocationRuleTransaction)
5618
+ ], AllocationRuleTransaction.prototype, "parentTransaction", void 0);
5619
+ __decorate([
5620
+ Type(() => AllocationRuleTransaction)
5621
+ ], AllocationRuleTransaction.prototype, "childTransactions", void 0);
5622
+ __decorate([
5623
+ Type(() => Number)
5624
+ ], AllocationRuleTransaction.prototype, "claimPercent", void 0);
5625
+ __decorate([
5626
+ Type(() => Number)
5627
+ ], AllocationRuleTransaction.prototype, "tax", void 0);
5628
+
5629
+ var TransactionTypeEnum;
5630
+ (function (TransactionTypeEnum) {
5631
+ TransactionTypeEnum[TransactionTypeEnum["DEBIT"] = 1] = "DEBIT";
5632
+ TransactionTypeEnum[TransactionTypeEnum["CREDIT"] = 2] = "CREDIT";
5633
+ })(TransactionTypeEnum || (TransactionTypeEnum = {}));
5634
+
5635
+ class TaxExemption extends TaxExemption$1 {
5636
+ isPartial() {
5637
+ return [TaxExemptionEnum.INVESTMENT_TO_PPR, TaxExemptionEnum.PPR_TO_INVESTMENT].includes(this.id);
5638
+ }
5639
+ }
5640
+
5641
+ class AssetSale extends ObservableModel {
5642
+ static { this.className = 'AssetSale'; }
5643
+ }
5644
+ __decorate([
5645
+ Type(() => Date)
5646
+ ], AssetSale.prototype, "date", void 0);
5647
+
5648
+ class PropertySale extends AssetSale {
5649
+ get saleCostsTotalAmount() {
5650
+ return this.commission + this.legalFees + this.otherCost;
5632
5651
  }
5633
5652
  /**
5634
- * financial years available in the app for user
5635
- * starts from 2022 for new users and registeredYear - 1 for old users
5653
+ * CGT is not applicable for sales with "Principle place of residence" exemption type.
5654
+ * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/4644110466/Tax+Return+MyTax+-+Online+Form ("Capital gains or losses" section)
5636
5655
  */
5637
- get financialYears() {
5638
- return range(Math.min(FinancialYear.toFinYear(this.createdAt) - 1, 2022), FinancialYear.toFinYear(new Date()) + 1);
5656
+ isCGTApplicable() {
5657
+ return this.taxExemption?.id !== TaxExemptionEnum.PPR;
5639
5658
  }
5640
- get firmBranchNames() {
5641
- return this.employeeDetails.firmBranchNames;
5659
+ get netPrice() {
5660
+ return this.price - this.saleCostsTotalAmount;
5642
5661
  }
5643
5662
  }
5644
5663
  __decorate([
5645
- Type(() => ServiceSubscription)
5646
- ], User.prototype, "subscriptions", void 0);
5664
+ Type(() => Number)
5665
+ ], PropertySale.prototype, "holdingCosts", void 0);
5647
5666
  __decorate([
5648
- Type(() => ClientDetails)
5649
- ], User.prototype, "clientDetails", void 0);
5667
+ Type(() => Number)
5668
+ ], PropertySale.prototype, "structuralImprovementsWDV", void 0);
5650
5669
  __decorate([
5651
- Type(() => EmployeeDetails)
5652
- ], User.prototype, "employeeDetails", void 0);
5670
+ Type(() => Number)
5671
+ ], PropertySale.prototype, "buildingAtCostClaimed", void 0);
5653
5672
  __decorate([
5654
- Type(() => SoleDetails)
5655
- ], User.prototype, "soleDetails", void 0);
5673
+ Type(() => Number)
5674
+ ], PropertySale.prototype, "price", void 0);
5656
5675
  __decorate([
5657
- Type(() => Address)
5658
- ], User.prototype, "address", void 0);
5676
+ Type(() => Number)
5677
+ ], PropertySale.prototype, "commission", void 0);
5659
5678
  __decorate([
5660
- Type(() => Phone)
5661
- ], User.prototype, "phone", void 0);
5679
+ Type(() => Number)
5680
+ ], PropertySale.prototype, "legalFees", void 0);
5681
+ __decorate([
5682
+ Type(() => Number)
5683
+ ], PropertySale.prototype, "otherCost", void 0);
5662
5684
  __decorate([
5663
5685
  Type(() => Date)
5664
- ], User.prototype, "createdAt", void 0);
5686
+ ], PropertySale.prototype, "settlementDate", void 0);
5665
5687
  __decorate([
5666
- Type(() => User)
5667
- ], User.prototype, "clients", void 0);
5688
+ Type(() => Date)
5689
+ ], PropertySale.prototype, "date", void 0);
5668
5690
  __decorate([
5669
- Type(() => AppFile)
5670
- ], User.prototype, "file", void 0);
5691
+ Type(() => TaxExemption)
5692
+ ], PropertySale.prototype, "taxExemption", void 0);
5671
5693
  __decorate([
5672
- Type(() => AccountSetupItem)
5673
- ], User.prototype, "blacklistSetupItems", void 0);
5694
+ Type(() => PropertySaleTaxExemptionMetaField$1)
5695
+ ], PropertySale.prototype, "taxExemptionMetaFields", void 0);
5674
5696
 
5675
5697
  class PropertySubscription extends PropertySubscription$1 {
5676
5698
  }
@@ -5794,6 +5816,9 @@ __decorate([
5794
5816
  __decorate([
5795
5817
  Transform(({ value }) => +value)
5796
5818
  ], PropertyForecast.prototype, "marketValue", void 0);
5819
+ __decorate([
5820
+ Type(() => User)
5821
+ ], PropertyForecast.prototype, "updatedBy", void 0);
5797
5822
 
5798
5823
  /**
5799
5824
  * propertySale docs - https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/4209508353/Property+Sold+button
@@ -14000,6 +14025,7 @@ var PropertyMessagesEnum;
14000
14025
  * Service for work with Property
14001
14026
  */
14002
14027
  class PropertyService extends RestService$1 {
14028
+ // roles = [UserRolesEnum.PROPERTY_TANK];
14003
14029
  constructor(environment) {
14004
14030
  super(environment);
14005
14031
  this.environment = environment;
@@ -15845,6 +15871,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
15845
15871
  }]
15846
15872
  }] });
15847
15873
 
15874
+ class CapitalLossService extends RestService$1 {
15875
+ constructor() {
15876
+ super(...arguments);
15877
+ this.endpointUri = 'capital-losses';
15878
+ this.modelClass = CapitalLoss;
15879
+ this.collectionClass = (Collection);
15880
+ this.disabledMethods = ['postBatch', 'putBatch', 'deleteBatch'];
15881
+ }
15882
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CapitalLossService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
15883
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CapitalLossService, providedIn: 'root' }); }
15884
+ }
15885
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CapitalLossService, decorators: [{
15886
+ type: Injectable,
15887
+ args: [{
15888
+ providedIn: 'root'
15889
+ }]
15890
+ }] });
15891
+
15892
+ var CapitalLossMessagesEnum;
15893
+ (function (CapitalLossMessagesEnum) {
15894
+ CapitalLossMessagesEnum["POST"] = "Capital loss created";
15895
+ CapitalLossMessagesEnum["PUT"] = "capital loss updated";
15896
+ CapitalLossMessagesEnum["DELETE"] = "capital loss deleted";
15897
+ })(CapitalLossMessagesEnum || (CapitalLossMessagesEnum = {}));
15898
+
15848
15899
  class UserEventTypeCategory extends UserEventTypeCategory$1 {
15849
15900
  }
15850
15901
 
@@ -19760,6 +19811,10 @@ const ENDPOINTS = {
19760
19811
  ANNUAL_CLIENT_DETAILS_POST: new Endpoint('POST', '\\/annual-client-details'),
19761
19812
  ANNUAL_CLIENT_DETAILS_PUT: new Endpoint('PUT', '\\/annual-client-details\\/\\d+'),
19762
19813
  ANNUAL_CLIENT_DETAILS_DELETE: new Endpoint('DELETE', '\\/annual-client-details\\/\\d+'),
19814
+ CAPITAL_LOSS_GET: new Endpoint('GET', '\\/capital-losses'),
19815
+ CAPITAL_LOSS_POST: new Endpoint('POST', '\\/capital-losses'),
19816
+ CAPITAL_LOSS_PUT: new Endpoint('PUT', '\\/capital-losses\\/\\d+'),
19817
+ CAPITAL_LOSS_DELETE: new Endpoint('DELETE', '\\/capital-losses\\/\\d+'),
19763
19818
  DEPRECIATIONS_OPENING_POST: new Endpoint('GET', '\\/depreciations\\/\\opening-balance'),
19764
19819
  DEPRECIATIONS_GET: new Endpoint('GET', '\\/depreciations'),
19765
19820
  DEPRECIATIONS_POST: new Endpoint('POST', '\\/depreciations'),
@@ -22159,7 +22214,6 @@ class BankAccountsImportForm extends AbstractForm {
22159
22214
  class AnnualClientDetailsForm extends AbstractForm {
22160
22215
  constructor(annualClientDetails = plainToClass(AnnualClientDetails, {})) {
22161
22216
  super({
22162
- capitalLoss: new UntypedFormControl(annualClientDetails.capitalLoss, Validators.required),
22163
22217
  privateHealthCare: new UntypedFormControl(annualClientDetails.privateHealthCare, Validators.required),
22164
22218
  spouse: new UntypedFormControl(annualClientDetails.spouse, Validators.required),
22165
22219
  spouseAnnualIncome: new UntypedFormControl(annualClientDetails.spouseAnnualIncome, conditionalValidator(() => this.get('spouse').value, Validators.required)),
@@ -22190,6 +22244,15 @@ class AnnualClientDetailsForm extends AbstractForm {
22190
22244
  }
22191
22245
  }
22192
22246
 
22247
+ class CapitalLossForm extends AbstractForm {
22248
+ constructor(capitalLoss = plainToClass(CapitalLoss, {})) {
22249
+ super({
22250
+ balance: new UntypedFormControl(capitalLoss.balance, Validators.required)
22251
+ }, capitalLoss);
22252
+ this.capitalLoss = capitalLoss;
22253
+ }
22254
+ }
22255
+
22193
22256
  class LoginForm extends AbstractForm {
22194
22257
  constructor() {
22195
22258
  super({
@@ -24500,5 +24563,5 @@ var MessagesEnum;
24500
24563
  * Generated bundle index. Do not edit.
24501
24564
  */
24502
24565
 
24503
- export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, 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, AssetEntityTypeEnum, AssetSale, AssetSaleCollection, AssetTypeEnum, AssetsService, AuthService, BANK_ACCOUNT_TYPES, 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, BusinessTypeEnum, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsAdjustmentIncludedListEnum, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsForm, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsHoldingUntaxedIncomeListEnum, ChartAccountsInvoiceEnum, ChartAccountsKeepSign, ChartAccountsListEnum, ChartAccountsMessagesEnum, ChartAccountsMetaField, ChartAccountsMetaFieldListEnum, ChartAccountsMetaFieldTypeEnum, ChartAccountsPropertyAdjustmentsListEnum, ChartAccountsSalaryAdjustmentsListEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsUnallocatableListEnum, ChartAccountsValue, 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, CorelogicService, CorelogicSuggestion, Country, CurrentFirmBranchService, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, 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, HeaderTitleService, Holding, HoldingCollection, HoldingForm, HoldingImport, HoldingImportForm, HoldingImportMessagesEnum, HoldingImportService, HoldingIncomeForm, HoldingMessagesEnum, HoldingReinvest, HoldingReinvestForm, HoldingSale, HoldingSaleCollection, HoldingSaleForm, HoldingSaleMessagesEnum, HoldingSaleService, HoldingService, HoldingType, HoldingTypeCategoryEnum, HoldingTypeCollection, HoldingTypeExchange, HoldingTypeExchangeListEnum, HoldingTypeExchangeService, HoldingTypeForm, HoldingTypeMessagesEnum, HoldingTypeService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastCollection, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceMessagesEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListHoldingEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, IncomeSourceTypeService, InterceptorsModule, IntercomService, InviteStatusEnum, InvoicePaymentForm, JsPdf, JwtService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanInterestTypeLabelEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanRepaymentTypeLabelEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MessagesEnum, MixpanelService, 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, 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, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, 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, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessLossesCollection, SoleBusinessMessagesEnum, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleIncomeForm, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemCollection, SoleInvoiceItemForm, SoleInvoiceService, 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, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseFilterForm, TransactionBaseForm, TransactionCategoryEnum, TransactionCollection, TransactionForm, TransactionMetaField, TransactionOperationEnum, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, 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, UserRolesEnum, 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, minDateValidator, passwordMatchValidator, passwordValidator, replace, sort, sortDeep, toArray };
24566
+ export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, 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, AssetEntityTypeEnum, AssetSale, AssetSaleCollection, AssetTypeEnum, AssetsService, AuthService, BANK_ACCOUNT_TYPES, 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, 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, ChartAccountsInvoiceEnum, ChartAccountsKeepSign, ChartAccountsListEnum, ChartAccountsMessagesEnum, ChartAccountsMetaField, ChartAccountsMetaFieldListEnum, ChartAccountsMetaFieldTypeEnum, ChartAccountsPropertyAdjustmentsListEnum, ChartAccountsSalaryAdjustmentsListEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsUnallocatableListEnum, ChartAccountsValue, 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, CorelogicService, CorelogicSuggestion, Country, CurrentFirmBranchService, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, 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, HeaderTitleService, Holding, HoldingCollection, HoldingForm, HoldingImport, HoldingImportForm, HoldingImportMessagesEnum, HoldingImportService, HoldingIncomeForm, HoldingMessagesEnum, HoldingReinvest, HoldingReinvestForm, HoldingSale, HoldingSaleCollection, HoldingSaleForm, HoldingSaleMessagesEnum, HoldingSaleService, HoldingService, HoldingType, HoldingTypeCategoryEnum, HoldingTypeCollection, HoldingTypeExchange, HoldingTypeExchangeListEnum, HoldingTypeExchangeService, HoldingTypeForm, HoldingTypeMessagesEnum, HoldingTypeService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastCollection, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceMessagesEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListHoldingEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, IncomeSourceTypeService, InterceptorsModule, IntercomService, InviteStatusEnum, InvoicePaymentForm, JsPdf, JwtService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanInterestTypeLabelEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanRepaymentTypeLabelEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LoginForm, LossTypeEnum, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MessagesEnum, MixpanelService, 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, 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, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, 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, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessLossesCollection, SoleBusinessMessagesEnum, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleIncomeForm, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemCollection, SoleInvoiceItemForm, SoleInvoiceService, 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, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseFilterForm, TransactionBaseForm, TransactionCategoryEnum, TransactionCollection, TransactionForm, TransactionMetaField, TransactionOperationEnum, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, 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, UserRolesEnum, 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, minDateValidator, passwordMatchValidator, passwordValidator, replace, sort, sortDeep, toArray };
24504
24567
  //# sourceMappingURL=taxtank-core.mjs.map