taxtank-core 0.27.4 → 0.27.5

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 (53) hide show
  1. package/bundles/taxtank-core.umd.js +153 -131
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/collections/chart-accounts.collection.js +3 -3
  4. package/esm2015/lib/collections/transaction/transaction.collection.js +5 -2
  5. package/esm2015/lib/collections/vehicle/vehicle-claim.collection.js +2 -4
  6. package/esm2015/lib/collections/vehicle/vehicle-logbook.collection.js +15 -30
  7. package/esm2015/lib/db/Enums/depreciation-calculation.enum.js +2 -1
  8. package/esm2015/lib/forms/abstract.form.js +11 -5
  9. package/esm2015/lib/forms/bank/bank-account/bank-account-allocation.form.js +6 -3
  10. package/esm2015/lib/forms/sole/sole-business-allocations.form.js +2 -1
  11. package/esm2015/lib/forms/sole/sole-invoice-template.form.js +2 -2
  12. package/esm2015/lib/forms/vehicle/vehicle-claim-details.form.js +3 -7
  13. package/esm2015/lib/forms/vehicle/vehicle-claim.form.js +8 -2
  14. package/esm2015/lib/forms/vehicle/vehicle-logbook.form.js +22 -15
  15. package/esm2015/lib/models/account-setup/account-setup-items.const.js +2 -2
  16. package/esm2015/lib/models/bank/bank-account.js +4 -1
  17. package/esm2015/lib/models/chart-accounts/chart-accounts.js +9 -9
  18. package/esm2015/lib/models/financial-year/financial-year.js +2 -1
  19. package/esm2015/lib/models/report/my-tax/my-tax-deductions/my-tax-deductions.js +2 -2
  20. package/esm2015/lib/models/sole/sole-invoice-template.js +5 -4
  21. package/esm2015/lib/models/transaction/transaction.js +3 -3
  22. package/esm2015/lib/models/vehicle/logbook-period.js +2 -1
  23. package/esm2015/lib/models/vehicle/vehicle-claim-details.js +12 -11
  24. package/esm2015/lib/models/vehicle/vehicle-claim.js +14 -13
  25. package/esm2015/lib/models/vehicle/vehicle-logbook.js +18 -5
  26. package/esm2015/lib/services/account-setup/account-setup.service.js +2 -2
  27. package/esm2015/lib/services/http/depreciation/depreciation.service.js +1 -2
  28. package/esm2015/lib/services/http/transaction/transaction.service.js +1 -2
  29. package/esm2015/lib/services/http/vehicle/vehicle-claim-details.service.js +7 -6
  30. package/esm2015/lib/services/http/vehicle/vehicle-claim.service.js +10 -10
  31. package/fesm2015/taxtank-core.js +137 -118
  32. package/fesm2015/taxtank-core.js.map +1 -1
  33. package/lib/collections/chart-accounts.collection.d.ts +2 -2
  34. package/lib/collections/transaction/transaction.collection.d.ts +2 -2
  35. package/lib/collections/vehicle/vehicle-claim.collection.d.ts +1 -3
  36. package/lib/collections/vehicle/vehicle-logbook.collection.d.ts +4 -9
  37. package/lib/db/Enums/depreciation-calculation.enum.d.ts +1 -0
  38. package/lib/forms/abstract.form.d.ts +3 -1
  39. package/lib/forms/bank/bank-account/bank-account-allocation.form.d.ts +4 -2
  40. package/lib/forms/sole/sole-business-allocations.form.d.ts +1 -0
  41. package/lib/forms/vehicle/vehicle-claim-details.form.d.ts +1 -6
  42. package/lib/forms/vehicle/vehicle-claim.form.d.ts +3 -0
  43. package/lib/forms/vehicle/vehicle-logbook.form.d.ts +4 -0
  44. package/lib/models/bank/bank-account.d.ts +2 -0
  45. package/lib/models/chart-accounts/chart-accounts.d.ts +6 -6
  46. package/lib/models/financial-year/financial-year.d.ts +1 -0
  47. package/lib/models/sole/sole-invoice-template.d.ts +1 -1
  48. package/lib/models/transaction/transaction.d.ts +2 -2
  49. package/lib/models/vehicle/logbook-period.d.ts +1 -0
  50. package/lib/models/vehicle/vehicle-claim-details.d.ts +8 -2
  51. package/lib/models/vehicle/vehicle-claim.d.ts +6 -4
  52. package/lib/models/vehicle/vehicle-logbook.d.ts +8 -4
  53. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { Collection } from './collection';
2
2
  import { ChartAccounts } from '../models/chart-accounts/chart-accounts';
3
3
  export declare class ChartAccountsCollection extends Collection<ChartAccounts> {
4
4
  /**
5
- * Get 'Klms travelled for work' related chart account value
5
+ * Get 'Kms travelled for work' related chart account value
6
6
  */
7
- getVehicleKlmsRate(year?: number): number;
7
+ getVehicleKmsRate(year?: number): number;
8
8
  }
@@ -86,9 +86,9 @@ export declare class TransactionCollection extends ExportableCollection<Transact
86
86
  /**
87
87
  * Get list of vehicle transactions filtered by vehicle claim
88
88
  */
89
- getByVehicleClaim(vehicleClaim: VehicleClaim): this;
89
+ getByVehicleClaim(vehicleClaim?: VehicleClaim): this;
90
90
  /**
91
- * Get list of vehicle transactions except KLMS transactions
91
+ * Get list of vehicle transactions except KMS transactions
92
92
  */
93
93
  getLogbookTransactions(): this;
94
94
  }
@@ -3,12 +3,10 @@ import { VehicleClaim } from '../../models';
3
3
  export declare class VehicleClaimCollection extends Collection<VehicleClaim> {
4
4
  /**
5
5
  * Get remaining kilometers limit. Total limit ({@link VehicleClaim.totalKmsLimit}) - claimed kilometers from other vehicle claims
6
- * @param claim may not exist when user come to vehicle claim page 1st time and not created claim yet
7
6
  */
8
- getKlmsLimitForClaim(claim?: VehicleClaim): number;
7
+ getKmsLimitForClaim(claim?: VehicleClaim): number;
9
8
  /**
10
9
  * Get remaining work usage limit. Total limit ({@link VehicleClaim.totalWorkUsagePercent}) - claimed percent from other vehicle claims
11
- * @param claim may not exist when user come to vehicle claim page 1st time and not created claim yet
12
10
  */
13
11
  getWorkUsageLimitForClaim(claim?: VehicleClaim): number;
14
12
  }
@@ -2,7 +2,7 @@ import { Collection } from '../collection';
2
2
  import { LogbookPeriod, VehicleClaim, VehicleLogbook } from '../../models';
3
3
  export declare class VehicleLogbookCollection extends Collection<VehicleLogbook> {
4
4
  /**
5
- * Best period may be calculated only when user has logbooks minimum for {@link VehicleLogbook.periodDuration}
5
+ * Best period may be calculated only when user has logbooks minimum for VehicleLogbook.bestPeriodWeeks
6
6
  * @TODO Vik: Best period: move this and related logic to backend
7
7
  */
8
8
  isBestPeriodExist(): boolean;
@@ -12,8 +12,8 @@ export declare class VehicleLogbookCollection extends Collection<VehicleLogbook>
12
12
  */
13
13
  getClaimableLogbooks(): this;
14
14
  /**
15
- * Logbook Period is the best when it has the biggest work usage percent
16
- * Best period duration is defined as {@link VehicleLogbook.periodDuration} by the ATO
15
+ * Get Logbook Period with the biggest work usage percent
16
+ * Best period duration is defined as VehicleLogbook.bestPeriodWeeks by the ATO
17
17
  * @TODO Vik: Best period: move this and related logic to backend
18
18
  */
19
19
  getBestPeriod(): LogbookPeriod;
@@ -26,13 +26,8 @@ export declare class VehicleLogbookCollection extends Collection<VehicleLogbook>
26
26
  * @TODO Alex: TT-2089 replace with getter
27
27
  */
28
28
  getWorkUsage(): number;
29
- /**
30
- * Get LOGBOOK_PERIOD_DURATION date range from passed start date
31
- * @TODO Vik: Best period: move this and related logic to backend
32
- */
33
- private getPeriodRange;
34
29
  /**
35
30
  * Get list of logbooks related to passed vehicle claim
36
31
  */
37
- getByVehicleClaim(claim: VehicleClaim): this;
32
+ getByVehicleClaim(vehicleClaim: VehicleClaim): this;
38
33
  }
@@ -1,6 +1,7 @@
1
1
  export declare enum DepreciationCalculationEnum {
2
2
  PRIME_COST = 1,
3
3
  DIMINISHING = 2,
4
+ CAPITAL = 3,
4
5
  LVP = 4,
5
6
  AMORTISATION = 5,
6
7
  SBP = 6
@@ -3,7 +3,7 @@ import { EventEmitter, Type } from '@angular/core';
3
3
  /**
4
4
  * Abstract form class
5
5
  * @TODO rename to AbstractFormGroup
6
- * @TODO Alex: refactor: check and improve logic
6
+ * @TODO Alex TT-2190: refactor: check and improve logic
7
7
  */
8
8
  export declare abstract class AbstractForm<Model> extends FormGroup {
9
9
  /**
@@ -22,6 +22,7 @@ export declare abstract class AbstractForm<Model> extends FormGroup {
22
22
  [key: string]: AbstractControl;
23
23
  }, model?: Model, validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);
24
24
  get saved(): boolean;
25
+ get currentValue(): Model;
25
26
  /**
26
27
  * Check validation and return a new instance of generic model.
27
28
  * Merge form value to initial object
@@ -34,4 +35,5 @@ export declare abstract class AbstractForm<Model> extends FormGroup {
34
35
  markAsUnsaved(): void;
35
36
  markAsSaved(): void;
36
37
  private createModelInstance;
38
+ private listenValueChanges;
37
39
  }
@@ -1,7 +1,9 @@
1
1
  import { AbstractForm } from '../../abstract.form';
2
2
  import { BankAccount } from '../../../models/bank/bank-account';
3
- export declare class BankAccountAllocationForm extends AbstractForm<BankAccount> {
3
+ import { IEventListener } from '../../../interfaces/event-listener.interface';
4
+ export declare class BankAccountAllocationForm extends AbstractForm<BankAccount> implements IEventListener {
4
5
  private bankAccount?;
5
6
  constructor(bankAccount?: BankAccount);
6
- watchTankType(): void;
7
+ listenEvents(): void;
8
+ listenTankTypeChanges(): void;
7
9
  }
@@ -3,6 +3,7 @@ import { SoleBusinessAllocation } from '../../models';
3
3
  /**
4
4
  * Form array with bank account business allocations
5
5
  * @TODO create AbstractFormArray
6
+ * @TODO Alex/Vik (TT-2184): copypasted from bank-account-properties.form, improve logic and create common parent class maybe
6
7
  */
7
8
  export declare class SoleBusinessAllocationsForm extends FormArray {
8
9
  constructor(businessAllocations?: SoleBusinessAllocation[]);
@@ -1,13 +1,8 @@
1
1
  import { AbstractForm } from '../abstract.form';
2
2
  import { VehicleClaimDetails } from '../../models';
3
- import { VehicleLogbookCollection } from '../../collections';
4
3
  /**
5
4
  * Add/Edit vehicle claim details form
6
5
  */
7
6
  export declare class VehicleClaimDetailsForm extends AbstractForm<VehicleClaimDetails> {
8
- /**
9
- * @param vehicleClaimDetails required because we create a new details with prefilled data (like Financial year)
10
- * @param logbooks required for isManual field disabled state management
11
- */
12
- constructor(vehicleClaimDetails: VehicleClaimDetails, logbooks: VehicleLogbookCollection);
7
+ constructor(vehicleClaimDetails: VehicleClaimDetails, isBestPeriodExist: boolean);
13
8
  }
@@ -5,9 +5,12 @@ import { VehicleClaimDetails } from '../../models';
5
5
  * Add/Edit Vehicle Claim form
6
6
  */
7
7
  export declare class VehicleClaimForm extends AbstractForm<VehicleClaim> {
8
+ private vehicleClaim;
9
+ private details;
8
10
  /**
9
11
  * @param vehicleClaim required even for the new claim, because claim needs business for sole tank
10
12
  * @param details required for form controls disabled state management
11
13
  */
12
14
  constructor(vehicleClaim: VehicleClaim, details: VehicleClaimDetails);
15
+ getAverageWeeklyKMS(): number;
13
16
  }
@@ -17,4 +17,8 @@ export declare class VehicleLogbookForm extends AbstractForm<VehicleLogbook> {
17
17
  * @param logbooks list of all logbooks related to current logbook's vehicle. Required for form fields validation and disabled state management
18
18
  */
19
19
  constructor(logbook: VehicleLogbook, logbooks: VehicleLogbookCollection);
20
+ /**
21
+ * Set logbook validators and disable state depends of initial logbook and its place in the whole list
22
+ */
23
+ private updateStateAndValidators;
20
24
  }
@@ -6,6 +6,7 @@ import { BankAccountBalance } from '../../db/Models/bank/bank-account-balance';
6
6
  import { BankAccountProperty } from './bank-account-property';
7
7
  import { BankConnection } from './bank-connection';
8
8
  import { SoleBusinessAllocation } from '../sole';
9
+ import { Bank } from './bank';
9
10
  export declare class BankAccount extends BankAccountBase {
10
11
  bankAccountProperties: BankAccountProperty[];
11
12
  businessAllocations: SoleBusinessAllocation[];
@@ -13,6 +14,7 @@ export declare class BankAccount extends BankAccountBase {
13
14
  loan: Loan;
14
15
  bankConnection: BankConnection;
15
16
  type: BankAccountTypeEnum;
17
+ get bank(): Bank;
16
18
  /**
17
19
  * Get current opening balance amount
18
20
  */
@@ -11,17 +11,17 @@ export declare class ChartAccounts extends ChartAccountsBase {
11
11
  */
12
12
  toString(): string;
13
13
  /**
14
- * Check if chart accounts id is related for 'Klms travelled for work' category
14
+ * Check if chart accounts id is related for 'Kms travelled for work' category
15
15
  */
16
- isKlmsForWork(): boolean;
16
+ isKmsForWork(): boolean;
17
17
  /**
18
- * Check if chart accounts id is related for 'Klms travelled for sole' category
18
+ * Check if chart accounts id is related for 'Kms travelled for sole' category
19
19
  */
20
- isKlmsForSole(): boolean;
20
+ isKmsForSole(): boolean;
21
21
  /**
22
- * Check if accounts id is related for KLMs category related to passed tank type
22
+ * Check if accounts id is related for KMs category related to passed tank type
23
23
  */
24
- isKLMsByTankType(tankType: TankTypeEnum): boolean;
24
+ isKMsByTankType(tankType: TankTypeEnum): boolean;
25
25
  /**
26
26
  * Check if chart accounts id is related for 'NRAS Tax Offset' category
27
27
  */
@@ -1,5 +1,6 @@
1
1
  export declare class FinancialYear {
2
2
  constructor(date?: Date);
3
+ static weeksInYear: number;
3
4
  static startMonthIndex: number;
4
5
  year: number;
5
6
  startDate: Date;
@@ -2,7 +2,7 @@ import { SoleBusiness } from './sole-business';
2
2
  import { BankAccount } from '../bank/bank-account';
3
3
  import { SoleInvoiceTemplate as SoleInvoiceTemplateBase } from '../../db/Models/sole/sole-invoice-template';
4
4
  export declare class SoleInvoiceTemplate extends SoleInvoiceTemplateBase {
5
+ isTaxIncluded: boolean;
5
6
  business: SoleBusiness;
6
7
  bankAccount: BankAccount;
7
- static create(businessId: number): SoleInvoiceTemplate;
8
8
  }
@@ -38,9 +38,9 @@ export declare class Transaction extends TransactionBase implements Expense, IRe
38
38
  isPersonal(): boolean;
39
39
  get chartAccountsCategories(): ChartAccountsCategoryEnum[];
40
40
  /**
41
- * Check if transaction has 'Klms travelled for work' chart accounts category
41
+ * Check if transaction has 'Kms travelled for work' chart accounts category
42
42
  */
43
- get isKlmsChartAccountsCategory(): boolean;
43
+ get isKmsChartAccountsCategory(): boolean;
44
44
  /**
45
45
  * Get transaction date
46
46
  */
@@ -3,6 +3,7 @@ import { VehicleClaim } from './vehicle-claim';
3
3
  /**
4
4
  * Class contains traveled kilometers and work usage percent in 12 weeks date range
5
5
  * @TODO Vik: Best period: move this and related logic to backend
6
+ * @TODO Alex: check if we need this class when calculation refactored with backend
6
7
  */
7
8
  export declare class LogbookPeriod {
8
9
  from: Date;
@@ -1,8 +1,14 @@
1
1
  import { VehicleClaimDetails as VehicleClaimDetailsBase } from '../../db/Models/vehicle/vehicle-claim-details';
2
2
  import { User } from '../user/user';
3
+ import { VehicleClaimDetailsMethodEnum } from '../../db/Enums/vehicle-claim-details-method.enum';
3
4
  export declare class VehicleClaimDetails extends VehicleClaimDetailsBase {
5
+ /**
6
+ * Init default values for the new instances
7
+ */
8
+ isManual: boolean;
9
+ method: VehicleClaimDetailsMethodEnum;
10
+ financialYear: number;
4
11
  user: User;
5
12
  isLogbookMethod(): boolean;
6
- isKlmsMethod(): boolean;
7
- static create(): VehicleClaimDetails;
13
+ isKmsMethod(): boolean;
8
14
  }
@@ -14,18 +14,20 @@ export declare class VehicleClaim extends VehicleClaimBase {
14
14
  static totalWorkUsagePercent: number;
15
15
  details: VehicleClaimDetails;
16
16
  business: SoleBusiness;
17
+ kilometers: number;
18
+ workUsage: number;
17
19
  isWorkTank(): boolean;
18
20
  isSoleTank(): boolean;
19
21
  get tankType(): TankTypeEnum;
20
22
  /**
21
- * Claim amount for KLMs method. Exists only for KLMs method.
23
+ * Claim amount for KMs method. Exists only for KMs method.
22
24
  */
23
- getKLMsClaimAmount(vehicleClaimRate: number): number;
25
+ getKMSClaimAmount(vehicleClaimRate: number): number;
24
26
  /**
25
27
  * Get logbook claim amount. Exists only for logbook method.
26
28
  * ClaimAmount = WorkUsage * transaction/depreciation amount
27
29
  */
28
30
  getLogbookClaimAmount(transactions: TransactionCollection): number;
29
- getKlmsChartAccountsIdByTankType(tankType?: TankTypeEnum): number;
30
- static create(details: VehicleClaimDetails, business?: SoleBusiness): VehicleClaim;
31
+ getAverageWeeklyKMS(): number;
32
+ static getKMSChartAccountsIdByTankType(tankType: TankTypeEnum): number;
31
33
  }
@@ -1,17 +1,21 @@
1
1
  import { VehicleLogbook as VehicleLogbookBase } from '../../db/Models/vehicle/vehicle-logbook';
2
2
  import { SoleBusiness } from '../sole';
3
3
  import { TankTypeEnum } from '../../db/Enums/tank-type.enum';
4
+ import { DateRange } from 'moment-range';
4
5
  export declare class VehicleLogbook extends VehicleLogbookBase {
5
6
  /**
6
- * 12 weeks in milliseconds
7
- * "To work out your business-use percentage, you need to keep a logbook and the odometer readings for the logbook period.
8
- * The logbook period is a minimum continuous period of 12 weeks." © Nicole Kelly
7
+ * Logbook period duration in weeks.
8
+ * https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/211517441/Logbook+Vehicle
9
9
  */
10
- static periodDuration: number;
10
+ static bestPeriodWeeks: number;
11
11
  date: Date;
12
12
  business: SoleBusiness;
13
13
  get kilometers(): number;
14
14
  get tankType(): TankTypeEnum;
15
15
  isWorkTank(): boolean;
16
16
  isSoleTank(): boolean;
17
+ /**
18
+ * Get logbook period date range from logbook date and weeksInPeriod duration
19
+ */
20
+ getPeriod(): DateRange;
17
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taxtank-core",
3
- "version": "0.27.4",
3
+ "version": "0.27.5",
4
4
  "private": false,
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^12.2.3 || ~13.0.0",