taxtank-core 0.31.59 → 0.31.61
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.
- package/esm2020/lib/collections/vehicle/best-vehicle-logbook.collection.mjs +92 -0
- package/esm2020/lib/collections/vehicle/index.mjs +2 -1
- package/esm2020/lib/collections/vehicle/vehicle-logbook.collection.mjs +15 -58
- package/esm2020/lib/models/vehicle/index.mjs +1 -2
- package/esm2020/lib/models/vehicle/vehicle-logbook.mjs +1 -28
- package/esm2020/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.mjs +4 -9
- package/esm2020/lib/services/http/transaction/transaction.service.mjs +1 -1
- package/esm2020/lib/services/http/vehicle/vehicle-claim-details.service.mjs +1 -18
- package/esm2020/lib/services/http/vehicle/vehicle-claim.service.mjs +3 -19
- package/esm2020/lib/services/index.mjs +1 -2
- package/esm2020/lib/validators/current-fin-year.validator.mjs +2 -2
- package/fesm2015/taxtank-core.mjs +131 -219
- package/fesm2015/taxtank-core.mjs.map +1 -1
- package/fesm2020/taxtank-core.mjs +131 -219
- package/fesm2020/taxtank-core.mjs.map +1 -1
- package/lib/collections/vehicle/best-vehicle-logbook.collection.d.ts +49 -0
- package/lib/collections/vehicle/index.d.ts +1 -0
- package/lib/collections/vehicle/vehicle-logbook.collection.d.ts +7 -13
- package/lib/models/vehicle/index.d.ts +0 -1
- package/lib/models/vehicle/vehicle-logbook.d.ts +0 -17
- package/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.d.ts +3 -5
- package/lib/services/http/vehicle/vehicle-claim-details.service.d.ts +1 -8
- package/lib/services/http/vehicle/vehicle-claim.service.d.ts +0 -5
- package/lib/services/index.d.ts +0 -1
- package/package.json +1 -1
- package/esm2020/lib/models/vehicle/logbook-period.mjs +0 -25
- package/esm2020/lib/services/vehicle/index.mjs +0 -2
- package/esm2020/lib/services/vehicle/logbook-best-period.service.mjs +0 -71
- package/lib/models/vehicle/logbook-period.d.ts +0 -16
- package/lib/services/vehicle/index.d.ts +0 -1
- package/lib/services/vehicle/logbook-best-period.service.d.ts +0 -28
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { VehicleClaim } from '../../models';
|
|
2
|
+
import { VehicleLogbookCollection } from './vehicle-logbook.collection';
|
|
3
|
+
import { DateRange } from 'moment-range';
|
|
4
|
+
/**
|
|
5
|
+
* Special logbook collection that contains logbooks from date period with the highest work usage percent
|
|
6
|
+
* Docs: https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/211517441/Logbook+Vehicle
|
|
7
|
+
*/
|
|
8
|
+
export declare class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
9
|
+
/**
|
|
10
|
+
* Logbook claimable period duration in milliseconds.
|
|
11
|
+
* https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/211517441/Logbook+Vehicle
|
|
12
|
+
*/
|
|
13
|
+
static periodDuration: number;
|
|
14
|
+
/**
|
|
15
|
+
* Date range with the biggest work usage percent
|
|
16
|
+
*/
|
|
17
|
+
period: DateRange;
|
|
18
|
+
/**
|
|
19
|
+
* constructor is private because we want to prevent collection initialization via 'new' operator.
|
|
20
|
+
* We should create instances only with fromLogbooks method
|
|
21
|
+
*/
|
|
22
|
+
private constructor();
|
|
23
|
+
/**
|
|
24
|
+
* Best period may be calculated only when user has logbooks minimum for VehicleLogbook.bestPeriodWeeks
|
|
25
|
+
*/
|
|
26
|
+
isBestPeriodExist(logbooks?: VehicleLogbookCollection): boolean;
|
|
27
|
+
getWorkUsageByClaim(claim: VehicleClaim): number;
|
|
28
|
+
/**
|
|
29
|
+
* Set Date Range with the biggest work usage percent
|
|
30
|
+
* Range duration is defined as BestVehicleLogbookCollection.periodDuration by the ATO
|
|
31
|
+
*
|
|
32
|
+
* Algorithm:
|
|
33
|
+
* Claimable logbooks or claimable trips - work/business logbook items.
|
|
34
|
+
* We should work with dates from the first to the last trip (include personal trips).
|
|
35
|
+
* Get date ranges starts on each claimable trip, all other ranges are definetily worst.
|
|
36
|
+
* Also get extra date range which ends with the last claimable trip.
|
|
37
|
+
* Get all trips included to each date range.
|
|
38
|
+
* Find and return range with the biggest workUsage percent.
|
|
39
|
+
*/
|
|
40
|
+
private calculateBestPeriod;
|
|
41
|
+
private getPeriods;
|
|
42
|
+
/**
|
|
43
|
+
* Get claimable date range for passed logbook
|
|
44
|
+
* @param logbook logbook instance for range calculation
|
|
45
|
+
* @param isBackward Flag false - range for logbook + duration; flag true - range for logbook - duration. Used for extra case, when we should add an extra date range for the last logbook
|
|
46
|
+
*/
|
|
47
|
+
private getPeriodByLogbook;
|
|
48
|
+
static fromLogbooks(logbooks: VehicleLogbookCollection): BestVehicleLogbookCollection | null;
|
|
49
|
+
}
|
|
@@ -1,22 +1,12 @@
|
|
|
1
1
|
import { Collection } from '../collection';
|
|
2
|
-
import {
|
|
2
|
+
import { VehicleClaim, VehicleLogbook } from '../../models';
|
|
3
|
+
import { BestVehicleLogbookCollection } from './best-vehicle-logbook.collection';
|
|
3
4
|
export declare class VehicleLogbookCollection extends Collection<VehicleLogbook> {
|
|
4
|
-
/**
|
|
5
|
-
* Best period may be calculated only when user has logbooks minimum for VehicleLogbook.bestPeriodWeeks
|
|
6
|
-
* @TODO Vik: Best period: move this and related logic to backend
|
|
7
|
-
*/
|
|
8
|
-
isBestPeriodExist(): boolean;
|
|
9
5
|
/**
|
|
10
6
|
* Get collection of non-personal logbooks (work-related, sole-related).
|
|
11
7
|
* @TODO Vik: Best period: move this and related logic to backend
|
|
12
8
|
*/
|
|
13
9
|
getClaimableLogbooks(): this;
|
|
14
|
-
/**
|
|
15
|
-
* Get Logbook Period with the biggest work usage percent
|
|
16
|
-
* Best period duration is defined as VehicleLogbook.bestPeriodWeeks by the ATO
|
|
17
|
-
* @TODO Vik: Best period: move this and related logic to backend
|
|
18
|
-
*/
|
|
19
|
-
getBestPeriod(): LogbookPeriod;
|
|
20
10
|
/**
|
|
21
11
|
* Calculate total kilometers traveled
|
|
22
12
|
*/
|
|
@@ -25,9 +15,13 @@ export declare class VehicleLogbookCollection extends Collection<VehicleLogbook>
|
|
|
25
15
|
* Calculate work usage (percent of business-related kilometers from total kilometers)
|
|
26
16
|
* @TODO Alex: TT-2089 replace with getter
|
|
27
17
|
*/
|
|
28
|
-
|
|
18
|
+
get workUsage(): number;
|
|
29
19
|
/**
|
|
30
20
|
* Get list of logbooks related to passed vehicle claim
|
|
31
21
|
*/
|
|
32
22
|
getByVehicleClaim(vehicleClaim: VehicleClaim): this;
|
|
23
|
+
/**
|
|
24
|
+
* get collection of logbooks with the biggest work usage for {@link BestVehicleLogbookCollection.periodDuration}
|
|
25
|
+
*/
|
|
26
|
+
getBest(): BestVehicleLogbookCollection | null;
|
|
33
27
|
}
|
|
@@ -1,28 +1,11 @@
|
|
|
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
|
-
/**
|
|
5
|
-
* moment js import for date range
|
|
6
|
-
* Hack: The library is using not by documentation, but works
|
|
7
|
-
* https://github.com/rotaready/moment-range
|
|
8
|
-
* extendMoment(Moment) cause errors since we updated to Typescript 4 (https://github.com/rotaready/moment-range/issues/238)
|
|
9
|
-
* @TODO Alex: move this import to some global const if we will need it one more time
|
|
10
|
-
*/
|
|
11
|
-
import { DateRange } from 'moment-range';
|
|
12
4
|
export declare class VehicleLogbook extends VehicleLogbookBase {
|
|
13
|
-
/**
|
|
14
|
-
* Logbook period duration in milliseconds.
|
|
15
|
-
* https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/211517441/Logbook+Vehicle
|
|
16
|
-
*/
|
|
17
|
-
static bestPeriodDuration: number;
|
|
18
5
|
date: Date;
|
|
19
6
|
business: SoleBusiness;
|
|
20
7
|
get kilometers(): number;
|
|
21
8
|
get tankType(): TankTypeEnum;
|
|
22
9
|
isWorkTank(): boolean;
|
|
23
10
|
isSoleTank(): boolean;
|
|
24
|
-
/**
|
|
25
|
-
* Get logbook period date range from logbook date and weeksInPeriod duration
|
|
26
|
-
*/
|
|
27
|
-
getPeriod(): DateRange;
|
|
28
11
|
}
|
package/lib/services/http/transaction/transaction-allocation/transaction-allocation.service.d.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { TransactionAllocation as TransactionAllocationBase } from '../../../../db/Models/transaction/transaction-allocation';
|
|
2
|
-
import { TransactionAllocation } from '../../../../models
|
|
3
|
-
import { Transaction } from '../../../../models/transaction/transaction';
|
|
2
|
+
import { Transaction, TransactionAllocation } from '../../../../models';
|
|
4
3
|
import { RestService } from '../../rest/rest-old.service';
|
|
5
4
|
import { Observable } from 'rxjs';
|
|
6
|
-
import { IEventListener } from '../../../../interfaces
|
|
5
|
+
import { IEventListener } from '../../../../interfaces';
|
|
7
6
|
import * as i0 from "@angular/core";
|
|
8
7
|
/**
|
|
9
|
-
*
|
|
10
|
-
* @TODO alex refactor
|
|
8
|
+
* @TODO move to new rest
|
|
11
9
|
*/
|
|
12
10
|
export declare class TransactionAllocationService extends RestService<TransactionAllocationBase, TransactionAllocation> implements IEventListener {
|
|
13
11
|
url: string;
|
|
@@ -2,12 +2,11 @@ import { VehicleClaimDetails } from '../../../models';
|
|
|
2
2
|
import { Observable, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { HttpClient } from '@angular/common/http';
|
|
4
4
|
import { EventDispatcherService } from '../../event/event-dispatcher.service';
|
|
5
|
-
import { IEventListener } from '../../../interfaces/event-listener.interface';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
/**
|
|
8
7
|
* @TODO TT-1777 Alex: extend from rest service when it refactored
|
|
9
8
|
*/
|
|
10
|
-
export declare class VehicleClaimDetailsService
|
|
9
|
+
export declare class VehicleClaimDetailsService {
|
|
11
10
|
protected environment: any;
|
|
12
11
|
private http;
|
|
13
12
|
private eventDispatcherService;
|
|
@@ -15,15 +14,9 @@ export declare class VehicleClaimDetailsService implements IEventListener {
|
|
|
15
14
|
cacheSubject: ReplaySubject<VehicleClaimDetails>;
|
|
16
15
|
url: string;
|
|
17
16
|
constructor(environment: any, http: HttpClient, eventDispatcherService: EventDispatcherService);
|
|
18
|
-
listenEvents(): void;
|
|
19
17
|
get(): Observable<VehicleClaimDetails>;
|
|
20
18
|
add(details: VehicleClaimDetails): Observable<VehicleClaimDetails>;
|
|
21
19
|
update(details: VehicleClaimDetails): Observable<VehicleClaimDetails>;
|
|
22
|
-
/**
|
|
23
|
-
* Listen logbook best period updates
|
|
24
|
-
* @TODO Vik: Best period move this and related logic to backend
|
|
25
|
-
*/
|
|
26
|
-
private listenBestPeriodChanges;
|
|
27
20
|
/**
|
|
28
21
|
* Set vehicle claim details as manual
|
|
29
22
|
* @TODO Vik: Best period move this and related logic to backend
|
|
@@ -17,11 +17,6 @@ export declare class VehicleClaimService extends RestService<VehicleClaimBase, V
|
|
|
17
17
|
* when details method changed, all claims current values become 0
|
|
18
18
|
*/
|
|
19
19
|
private listenVehicleClaimDetailsChanges;
|
|
20
|
-
/**
|
|
21
|
-
* Best period changes affect to claims workUsage
|
|
22
|
-
* @TODO Vik: Best period move this and related logic to backend
|
|
23
|
-
*/
|
|
24
|
-
private listenBestPeriodChanges;
|
|
25
20
|
/**
|
|
26
21
|
* Update workUsage for all vehicle claims if logbook best period changed
|
|
27
22
|
* @TODO Vik: Best period move this and related logic to backend
|
package/lib/services/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Type } from 'class-transformer';
|
|
3
|
-
import { FinancialYear } from '../financial-year';
|
|
4
|
-
import round from 'lodash/round';
|
|
5
|
-
/**
|
|
6
|
-
* Class contains traveled kilometers and work usage percent in 12 weeks date range
|
|
7
|
-
* @TODO Vik: Best period: move this and related logic to backend
|
|
8
|
-
* @TODO Alex: check if we need this class when calculation refactored with backend
|
|
9
|
-
*/
|
|
10
|
-
export class LogbookPeriod {
|
|
11
|
-
isEndOfYear() {
|
|
12
|
-
return this.to === new FinancialYear().endDate;
|
|
13
|
-
}
|
|
14
|
-
getWorkUsageByClaim(claim) {
|
|
15
|
-
const claimKilometers = this.logbooks.getByVehicleClaim(claim).getClaimableLogbooks().kilometers;
|
|
16
|
-
return round(this.workUsage * (claimKilometers / this.kilometers), 2);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
__decorate([
|
|
20
|
-
Type(() => Date)
|
|
21
|
-
], LogbookPeriod.prototype, "from", void 0);
|
|
22
|
-
__decorate([
|
|
23
|
-
Type(() => Date)
|
|
24
|
-
], LogbookPeriod.prototype, "to", void 0);
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nYm9vay1wZXJpb2QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3ZlaGljbGUvbG9nYm9vay1wZXJpb2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBRWpDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQVd4QixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2pELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFtQjtRQUNyQyxNQUFNLGVBQWUsR0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixFQUFFLENBQUMsVUFBVSxDQUFDO1FBRXpHLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQWxCRztJQURELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0o7QUFHWDtJQURELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ04iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgRmluYW5jaWFsWWVhciB9IGZyb20gJy4uL2ZpbmFuY2lhbC15ZWFyJztcbmltcG9ydCB7IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IFZlaGljbGVDbGFpbSB9IGZyb20gJy4vdmVoaWNsZS1jbGFpbSc7XG5pbXBvcnQgcm91bmQgZnJvbSAnbG9kYXNoL3JvdW5kJztcblxuLyoqXG4gKiBDbGFzcyBjb250YWlucyB0cmF2ZWxlZCBraWxvbWV0ZXJzIGFuZCB3b3JrIHVzYWdlIHBlcmNlbnQgaW4gMTIgd2Vla3MgZGF0ZSByYW5nZVxuICogQFRPRE8gVmlrOiBCZXN0IHBlcmlvZDogbW92ZSB0aGlzIGFuZCByZWxhdGVkIGxvZ2ljIHRvIGJhY2tlbmRcbiAqIEBUT0RPIEFsZXg6IGNoZWNrIGlmIHdlIG5lZWQgdGhpcyBjbGFzcyB3aGVuIGNhbGN1bGF0aW9uIHJlZmFjdG9yZWQgd2l0aCBiYWNrZW5kXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dib29rUGVyaW9kIHtcbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgICBmcm9tOiBEYXRlO1xuXG4gIEBUeXBlKCgpID0+IERhdGUpXG4gICAgdG86IERhdGU7XG5cbiAga2lsb21ldGVyczogbnVtYmVyO1xuICB3b3JrVXNhZ2U6IG51bWJlcjtcbiAgbG9nYm9va3M6IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbjtcblxuICBpc0VuZE9mWWVhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50byA9PT0gbmV3IEZpbmFuY2lhbFllYXIoKS5lbmREYXRlO1xuICB9XG5cbiAgZ2V0V29ya1VzYWdlQnlDbGFpbShjbGFpbTogVmVoaWNsZUNsYWltKTogbnVtYmVyIHtcbiAgICBjb25zdCBjbGFpbUtpbG9tZXRlcnM6IG51bWJlciA9IHRoaXMubG9nYm9va3MuZ2V0QnlWZWhpY2xlQ2xhaW0oY2xhaW0pLmdldENsYWltYWJsZUxvZ2Jvb2tzKCkua2lsb21ldGVycztcblxuICAgIHJldHVybiByb3VuZCh0aGlzLndvcmtVc2FnZSAqIChjbGFpbUtpbG9tZXRlcnMgLyB0aGlzLmtpbG9tZXRlcnMpLCAyKTtcbiAgfVxufVxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './logbook-best-period.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvdmVoaWNsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sb2dib29rLWJlc3QtcGVyaW9kLnNlcnZpY2UnO1xuIl19
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ReplaySubject, combineLatest } from 'rxjs';
|
|
3
|
-
import { skip } from 'rxjs/operators';
|
|
4
|
-
import { AppEvent } from '../../models/event/app-event';
|
|
5
|
-
import { AppEventTypeEnum } from '../../models/event/app-event-type.enum';
|
|
6
|
-
import isEqual from 'lodash/isEqual';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../http";
|
|
9
|
-
import * as i2 from "../event/event-dispatcher.service";
|
|
10
|
-
/**
|
|
11
|
-
* Service for logbook best period calculation
|
|
12
|
-
* @TODO Vik: improve structure for such cases (TT-2043)
|
|
13
|
-
* @TODO Vik: Best period move this and related logic to backend
|
|
14
|
-
*/
|
|
15
|
-
export class LogbookBestPeriodService {
|
|
16
|
-
constructor(vehicleClaimDetailsService, vehicleClaimService, vehicleLogbookService, eventDispatcherService) {
|
|
17
|
-
this.vehicleClaimDetailsService = vehicleClaimDetailsService;
|
|
18
|
-
this.vehicleClaimService = vehicleClaimService;
|
|
19
|
-
this.vehicleLogbookService = vehicleLogbookService;
|
|
20
|
-
this.eventDispatcherService = eventDispatcherService;
|
|
21
|
-
this.cacheSubject = new ReplaySubject();
|
|
22
|
-
this.listenEvents();
|
|
23
|
-
}
|
|
24
|
-
listenEvents() {
|
|
25
|
-
this.listenCacheUpdates();
|
|
26
|
-
}
|
|
27
|
-
get() {
|
|
28
|
-
if (!this.cache) {
|
|
29
|
-
combineLatest([
|
|
30
|
-
this.vehicleClaimDetailsService.get(),
|
|
31
|
-
this.vehicleLogbookService.get()
|
|
32
|
-
])
|
|
33
|
-
.subscribe(([details, logbooks]) => {
|
|
34
|
-
let period;
|
|
35
|
-
// calculate current initial best period
|
|
36
|
-
if (details?.isManual || !details?.isLogbookMethod() || !logbooks.isBestPeriodExist()) {
|
|
37
|
-
period = null;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
period = logbooks.getBestPeriod();
|
|
41
|
-
}
|
|
42
|
-
// update cache only when best period changed
|
|
43
|
-
if (!isEqual(this.cache, period)) {
|
|
44
|
-
this.cache = period;
|
|
45
|
-
this.cacheSubject.next(this.cache);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return this.cacheSubject.asObservable();
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Dispatch event when logbook best period changed
|
|
53
|
-
*/
|
|
54
|
-
listenCacheUpdates() {
|
|
55
|
-
// Skip initial calculation and fire event only when subject changed
|
|
56
|
-
this.cacheSubject
|
|
57
|
-
.pipe(skip(1))
|
|
58
|
-
.subscribe((period) => {
|
|
59
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_LOGBOOK_BEST_PERIOD_UPDATED, period));
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
LogbookBestPeriodService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: LogbookBestPeriodService, deps: [{ token: i1.VehicleClaimDetailsService }, { token: i1.VehicleClaimService }, { token: i1.VehicleLogbookService }, { token: i2.EventDispatcherService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
64
|
-
LogbookBestPeriodService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: LogbookBestPeriodService, providedIn: 'root' });
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: LogbookBestPeriodService, decorators: [{
|
|
66
|
-
type: Injectable,
|
|
67
|
-
args: [{
|
|
68
|
-
providedIn: 'root'
|
|
69
|
-
}]
|
|
70
|
-
}], ctorParameters: function () { return [{ type: i1.VehicleClaimDetailsService }, { type: i1.VehicleClaimService }, { type: i1.VehicleLogbookService }, { type: i2.EventDispatcherService }]; } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nYm9vay1iZXN0LXBlcmlvZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZlaGljbGUvbG9nYm9vay1iZXN0LXBlcmlvZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGFBQWEsRUFBRSxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFPLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUVyQzs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQUluQyxZQUNVLDBCQUFzRCxFQUN0RCxtQkFBd0MsRUFDeEMscUJBQTRDLEVBQzVDLHNCQUE4QztRQUg5QywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3RELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBTnhELGlCQUFZLEdBQWlDLElBQUksYUFBYSxFQUFpQixDQUFDO1FBUTlFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxHQUFHO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixhQUFhLENBQUM7Z0JBQ1osSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRTtnQkFDckMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRTthQUNqQyxDQUFDO2lCQUNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksTUFBcUIsQ0FBQztnQkFFMUIsd0NBQXdDO2dCQUN4QyxJQUFJLE9BQU8sRUFBRSxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtvQkFDckYsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDZjtxQkFBTTtvQkFDTCxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUNuQztnQkFFRCw2Q0FBNkM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEM7WUFDSCxDQUFDLENBQUMsQ0FBQTtTQUNMO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQjtRQUN4QixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLFlBQVk7YUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLENBQUMsTUFBcUIsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsbUNBQW1DLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUNsSCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7O3FIQXREVSx3QkFBd0I7eUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBWZWhpY2xlQ2xhaW1EZXRhaWxzU2VydmljZSwgVmVoaWNsZUNsYWltU2VydmljZSwgVmVoaWNsZUxvZ2Jvb2tTZXJ2aWNlIH0gZnJvbSAnLi4vaHR0cCc7XG5pbXBvcnQgeyBMb2dib29rUGVyaW9kLCBWZWhpY2xlTG9nYm9vayB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9ldmVudC1saXN0ZW5lci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgbG9nYm9vayBiZXN0IHBlcmlvZCBjYWxjdWxhdGlvblxuICogQFRPRE8gVmlrOiBpbXByb3ZlIHN0cnVjdHVyZSBmb3Igc3VjaCBjYXNlcyAoVFQtMjA0MylcbiAqIEBUT0RPIFZpazogQmVzdCBwZXJpb2QgbW92ZSB0aGlzIGFuZCByZWxhdGVkIGxvZ2ljIHRvIGJhY2tlbmRcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9nYm9va0Jlc3RQZXJpb2RTZXJ2aWNlIGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBjYWNoZTogTG9nYm9va1BlcmlvZDtcbiAgY2FjaGVTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PExvZ2Jvb2tQZXJpb2Q+ID0gbmV3IFJlcGxheVN1YmplY3Q8TG9nYm9va1BlcmlvZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZlaGljbGVDbGFpbURldGFpbHNTZXJ2aWNlOiBWZWhpY2xlQ2xhaW1EZXRhaWxzU2VydmljZSxcbiAgICBwcml2YXRlIHZlaGljbGVDbGFpbVNlcnZpY2U6IFZlaGljbGVDbGFpbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2ZWhpY2xlTG9nYm9va1NlcnZpY2U6IFZlaGljbGVMb2dib29rU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgfVxuXG4gIGxpc3RlbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RlbkNhY2hlVXBkYXRlcygpO1xuICB9XG5cbiAgZ2V0KCk6IE9ic2VydmFibGU8TG9nYm9va1BlcmlvZD4ge1xuICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudmVoaWNsZUNsYWltRGV0YWlsc1NlcnZpY2UuZ2V0KCksXG4gICAgICAgIHRoaXMudmVoaWNsZUxvZ2Jvb2tTZXJ2aWNlLmdldCgpXG4gICAgICBdKVxuICAgICAgICAuc3Vic2NyaWJlKChbZGV0YWlscywgbG9nYm9va3NdKSA9PiB7XG4gICAgICAgICAgbGV0IHBlcmlvZDogTG9nYm9va1BlcmlvZDtcblxuICAgICAgICAgIC8vIGNhbGN1bGF0ZSBjdXJyZW50IGluaXRpYWwgYmVzdCBwZXJpb2RcbiAgICAgICAgICBpZiAoZGV0YWlscz8uaXNNYW51YWwgfHwgIWRldGFpbHM/LmlzTG9nYm9va01ldGhvZCgpIHx8ICFsb2dib29rcy5pc0Jlc3RQZXJpb2RFeGlzdCgpKSB7XG4gICAgICAgICAgICBwZXJpb2QgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZXJpb2QgPSBsb2dib29rcy5nZXRCZXN0UGVyaW9kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdXBkYXRlIGNhY2hlIG9ubHkgd2hlbiBiZXN0IHBlcmlvZCBjaGFuZ2VkXG4gICAgICAgICAgaWYgKCFpc0VxdWFsKHRoaXMuY2FjaGUsIHBlcmlvZCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUgPSBwZXJpb2Q7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU3ViamVjdC5uZXh0KHRoaXMuY2FjaGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0Y2ggZXZlbnQgd2hlbiBsb2dib29rIGJlc3QgcGVyaW9kIGNoYW5nZWRcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuQ2FjaGVVcGRhdGVzKCkge1xuICAgIC8vIFNraXAgaW5pdGlhbCBjYWxjdWxhdGlvbiBhbmQgZmlyZSBldmVudCBvbmx5IHdoZW4gc3ViamVjdCBjaGFuZ2VkXG4gICAgdGhpcy5jYWNoZVN1YmplY3RcbiAgICAgIC5waXBlKHNraXAoMSkpXG4gICAgICAuc3Vic2NyaWJlKChwZXJpb2Q6IExvZ2Jvb2tQZXJpb2QpID0+IHtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfTE9HQk9PS19CRVNUX1BFUklPRF9VUERBVEVELCBwZXJpb2QpKVxuICAgICAgfSlcbiAgfVxufVxuIl19
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { VehicleLogbookCollection } from '../../collections';
|
|
2
|
-
import { VehicleClaim } from './vehicle-claim';
|
|
3
|
-
/**
|
|
4
|
-
* Class contains traveled kilometers and work usage percent in 12 weeks date range
|
|
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
|
|
7
|
-
*/
|
|
8
|
-
export declare class LogbookPeriod {
|
|
9
|
-
from: Date;
|
|
10
|
-
to: Date;
|
|
11
|
-
kilometers: number;
|
|
12
|
-
workUsage: number;
|
|
13
|
-
logbooks: VehicleLogbookCollection;
|
|
14
|
-
isEndOfYear(): boolean;
|
|
15
|
-
getWorkUsageByClaim(claim: VehicleClaim): number;
|
|
16
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './logbook-best-period.service';
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Observable, ReplaySubject } from 'rxjs';
|
|
2
|
-
import { VehicleClaimDetailsService, VehicleClaimService, VehicleLogbookService } from '../http';
|
|
3
|
-
import { LogbookPeriod } from '../../models';
|
|
4
|
-
import { EventDispatcherService } from '../event/event-dispatcher.service';
|
|
5
|
-
import { IEventListener } from '../../interfaces/event-listener.interface';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
/**
|
|
8
|
-
* Service for logbook best period calculation
|
|
9
|
-
* @TODO Vik: improve structure for such cases (TT-2043)
|
|
10
|
-
* @TODO Vik: Best period move this and related logic to backend
|
|
11
|
-
*/
|
|
12
|
-
export declare class LogbookBestPeriodService implements IEventListener {
|
|
13
|
-
private vehicleClaimDetailsService;
|
|
14
|
-
private vehicleClaimService;
|
|
15
|
-
private vehicleLogbookService;
|
|
16
|
-
private eventDispatcherService;
|
|
17
|
-
cache: LogbookPeriod;
|
|
18
|
-
cacheSubject: ReplaySubject<LogbookPeriod>;
|
|
19
|
-
constructor(vehicleClaimDetailsService: VehicleClaimDetailsService, vehicleClaimService: VehicleClaimService, vehicleLogbookService: VehicleLogbookService, eventDispatcherService: EventDispatcherService);
|
|
20
|
-
listenEvents(): void;
|
|
21
|
-
get(): Observable<LogbookPeriod>;
|
|
22
|
-
/**
|
|
23
|
-
* Dispatch event when logbook best period changed
|
|
24
|
-
*/
|
|
25
|
-
private listenCacheUpdates;
|
|
26
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LogbookBestPeriodService, never>;
|
|
27
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<LogbookBestPeriodService>;
|
|
28
|
-
}
|