@autologix-engineering/shared 1.2.371 → 1.2.373
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/package.json +1 -1
- package/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.js +8 -1
- package/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/create.report.dto.d.ts +3 -0
- package/src/lib/data-transfer-objects/src/create.report.dto.js +17 -1
- package/src/lib/data-transfer-objects/src/create.report.dto.js.map +1 -1
- package/src/lib/enums/src/trip.file.type.enum.d.ts +2 -1
- package/src/lib/enums/src/trip.file.type.enum.js +1 -0
- package/src/lib/enums/src/trip.file.type.enum.js.map +1 -1
- package/src/lib/utilities/src/index.d.ts +1 -0
- package/src/lib/utilities/src/index.js +1 -0
- package/src/lib/utilities/src/index.js.map +1 -1
- package/src/lib/utilities/src/ltr.cycle.month.index.d.ts +13 -0
- package/src/lib/utilities/src/ltr.cycle.month.index.js +15 -2
- package/src/lib/utilities/src/ltr.cycle.month.index.js.map +1 -1
- package/src/lib/utilities/src/resolve.gst.state.js +7 -1
- package/src/lib/utilities/src/resolve.gst.state.js.map +1 -1
- package/src/lib/utilities/src/vehicle.insurance.validity.d.ts +78 -0
- package/src/lib/utilities/src/vehicle.insurance.validity.js +184 -0
- package/src/lib/utilities/src/vehicle.insurance.validity.js.map +1 -0
package/package.json
CHANGED
|
@@ -26,6 +26,7 @@ export declare class ProcessExtRequestTripSheetDTO {
|
|
|
26
26
|
dayWiseDistance?: OutstationDayWiseDistance[];
|
|
27
27
|
trackingMode?: string;
|
|
28
28
|
dutySlipFile?: string;
|
|
29
|
+
qcImages?: string[];
|
|
29
30
|
fastTagTolls?: any[];
|
|
30
31
|
dutyClosureMode?: DutyClosureMode;
|
|
31
32
|
constructor(_obj?: Partial<ProcessExtRequestTripSheetDTO>);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { IsUUID, IsDateString, IsNumber, IsOptional, IsArray, ValidateNested, IsString, IsBoolean, IsEnum, } from 'class-validator';
|
|
2
|
+
import { IsUUID, IsDateString, IsNumber, IsOptional, IsArray, ArrayMaxSize, ValidateNested, IsString, IsBoolean, IsEnum, } from 'class-validator';
|
|
3
3
|
import { DutyClosureMode } from '../../../enums/src/index';
|
|
4
4
|
export class ProcessExtRequestTripSheetDTO {
|
|
5
5
|
constructor(_obj) {
|
|
@@ -133,6 +133,13 @@ __decorate([
|
|
|
133
133
|
IsString(),
|
|
134
134
|
__metadata("design:type", String)
|
|
135
135
|
], ProcessExtRequestTripSheetDTO.prototype, "dutySlipFile", void 0);
|
|
136
|
+
__decorate([
|
|
137
|
+
IsOptional(),
|
|
138
|
+
IsArray(),
|
|
139
|
+
ArrayMaxSize(10),
|
|
140
|
+
IsString({ each: true }),
|
|
141
|
+
__metadata("design:type", Array)
|
|
142
|
+
], ProcessExtRequestTripSheetDTO.prototype, "qcImages", void 0);
|
|
136
143
|
__decorate([
|
|
137
144
|
IsOptional(),
|
|
138
145
|
__metadata("design:type", Array)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.ext.request.trip.sheet.dto.js","sourceRoot":"","sources":["../../../../../../../../libs/shared/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,SAAS,EACT,MAAM,GACN,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,OAAO,6BAA6B;
|
|
1
|
+
{"version":3,"file":"process.ext.request.trip.sheet.dto.js","sourceRoot":"","sources":["../../../../../../../../libs/shared/src/lib/data-transfer-objects/src/command/process.ext.request.trip.sheet.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,9 @@ export declare class CreateReportDTO {
|
|
|
11
11
|
clientPersonaIds?: string[];
|
|
12
12
|
clientGroup?: string[];
|
|
13
13
|
bizTypes?: VehicleOwnershipType[];
|
|
14
|
+
vendorIds?: string[];
|
|
15
|
+
onlyExpired?: boolean;
|
|
16
|
+
onlyMandatory?: boolean;
|
|
14
17
|
type?: ReportFileType;
|
|
15
18
|
createdById?: string;
|
|
16
19
|
constructor(obj?: Partial<CreateReportDTO>);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { IsArray, IsDateString, IsEnum, IsOptional, IsString, IsUUID, } from 'class-validator';
|
|
2
|
+
import { IsArray, IsDateString, IsEnum, IsOptional, IsString, IsUUID, IsBoolean, } from 'class-validator';
|
|
3
3
|
import { ReportDateType, ReportFileType, ReportModuleType, VehicleOwnershipType, } from '../../enums/src/index';
|
|
4
4
|
export class CreateReportDTO {
|
|
5
5
|
constructor(obj) {
|
|
@@ -61,6 +61,22 @@ __decorate([
|
|
|
61
61
|
IsEnum(VehicleOwnershipType, { each: true }),
|
|
62
62
|
__metadata("design:type", Array)
|
|
63
63
|
], CreateReportDTO.prototype, "bizTypes", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
IsOptional(),
|
|
66
|
+
IsArray(),
|
|
67
|
+
IsUUID(undefined, { each: true }),
|
|
68
|
+
__metadata("design:type", Array)
|
|
69
|
+
], CreateReportDTO.prototype, "vendorIds", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
IsOptional(),
|
|
72
|
+
IsBoolean(),
|
|
73
|
+
__metadata("design:type", Boolean)
|
|
74
|
+
], CreateReportDTO.prototype, "onlyExpired", void 0);
|
|
75
|
+
__decorate([
|
|
76
|
+
IsOptional(),
|
|
77
|
+
IsBoolean(),
|
|
78
|
+
__metadata("design:type", Boolean)
|
|
79
|
+
], CreateReportDTO.prototype, "onlyMandatory", void 0);
|
|
64
80
|
__decorate([
|
|
65
81
|
IsOptional(),
|
|
66
82
|
IsEnum(ReportFileType),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.report.dto.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/data-transfer-objects/src/create.report.dto.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,OAAO,EACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,MAAM,
|
|
1
|
+
{"version":3,"file":"create.report.dto.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/data-transfer-objects/src/create.report.dto.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,OAAO,EACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,oBAAoB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,eAAe;IAqE3B,YAAY,GAA8B;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1B,CAAC;CACD;AAtEA;IADC,MAAM,EAAE;;kDACS;AAIlB;IAFC,UAAU,EAAE;IACZ,MAAM,CAAC,cAAc,CAAC;;iDACG;AAG1B;IADC,MAAM,CAAC,gBAAgB,CAAC;;mDACI;AAG7B;IADC,QAAQ,EAAE;;mDACQ;AAGnB;IADC,YAAY,EAAE;;iDACE;AAGjB;IADC,YAAY,EAAE;;+CACA;AAKf;IAHC,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;gDACf;AAKnB;IAHC,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;kDACb;AAKrB;IAHC,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;yDACN;AAK5B;IAHC,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;oDACF;AAKvB;IAHC,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;iDACX;AAQlC;IAHC,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;kDACb;AAIrB;IAFC,UAAU,EAAE;IACZ,SAAS,EAAE;;oDACU;AAItB;IAFC,UAAU,EAAE;IACZ,SAAS,EAAE;;sDACY;AAIxB;IAFC,UAAU,EAAE;IACZ,MAAM,CAAC,cAAc,CAAC;;6CACD;AAItB;IAFC,UAAU,EAAE;IACZ,MAAM,EAAE;;oDACY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trip.file.type.enum.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/enums/src/trip.file.type.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"trip.file.type.enum.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/enums/src/trip.file.type.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACvB,mCAAmB,CAAA;IACnB,2BAAW,CAAA;IACX,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;AACpB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qCAAqC,CAAC;AACpD,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC"}
|
|
@@ -1 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 1-based index of the IST calendar month `booking` falls in, counted from
|
|
3
|
+
* the IST calendar month of `anchor`. Same month → 1.
|
|
4
|
+
*
|
|
5
|
+
* The +5:30 shift moves the instant so that its UTC calendar fields read as
|
|
6
|
+
* IST wall-clock, so the components MUST be read with getUTC*. Reading the
|
|
7
|
+
* local ones (as this did originally) re-applies the host offset on top: on
|
|
8
|
+
* an IST-configured server that is +11:00, which lands on the next month for
|
|
9
|
+
* any booking picked up in the last 11 hours of a month and silently shifts
|
|
10
|
+
* that booking a whole cycle. Every sibling helper (isOnContractInMonth,
|
|
11
|
+
* monthIndexStartDate) already reads UTC fields — this is now consistent with
|
|
12
|
+
* them and independent of the host timezone.
|
|
13
|
+
*/
|
|
1
14
|
export declare function ltrCycleMonthIndex(anchor: Date, booking: Date): number;
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { IST_OFFSET_MS } from './ist';
|
|
2
|
+
/**
|
|
3
|
+
* 1-based index of the IST calendar month `booking` falls in, counted from
|
|
4
|
+
* the IST calendar month of `anchor`. Same month → 1.
|
|
5
|
+
*
|
|
6
|
+
* The +5:30 shift moves the instant so that its UTC calendar fields read as
|
|
7
|
+
* IST wall-clock, so the components MUST be read with getUTC*. Reading the
|
|
8
|
+
* local ones (as this did originally) re-applies the host offset on top: on
|
|
9
|
+
* an IST-configured server that is +11:00, which lands on the next month for
|
|
10
|
+
* any booking picked up in the last 11 hours of a month and silently shifts
|
|
11
|
+
* that booking a whole cycle. Every sibling helper (isOnContractInMonth,
|
|
12
|
+
* monthIndexStartDate) already reads UTC fields — this is now consistent with
|
|
13
|
+
* them and independent of the host timezone.
|
|
14
|
+
*/
|
|
2
15
|
export function ltrCycleMonthIndex(anchor, booking) {
|
|
3
16
|
const anchorIst = new Date(anchor.getTime() + IST_OFFSET_MS);
|
|
4
17
|
const bookingIst = new Date(booking.getTime() + IST_OFFSET_MS);
|
|
5
|
-
return ((bookingIst.
|
|
6
|
-
(bookingIst.
|
|
18
|
+
return ((bookingIst.getUTCFullYear() - anchorIst.getUTCFullYear()) * 12 +
|
|
19
|
+
(bookingIst.getUTCMonth() - anchorIst.getUTCMonth()) +
|
|
7
20
|
1);
|
|
8
21
|
}
|
|
9
22
|
//# sourceMappingURL=ltr.cycle.month.index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ltr.cycle.month.index.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/ltr.cycle.month.index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,UAAU,kBAAkB,CAAC,MAAY,EAAE,OAAa;IAC7D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC;IAC/D,OAAO,CACN,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"ltr.cycle.month.index.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/ltr.cycle.month.index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAY,EAAE,OAAa;IAC7D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC;IAC/D,OAAO,CACN,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE;QAC/D,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACpD,CAAC,CACD,CAAC;AACH,CAAC"}
|
|
@@ -19,7 +19,13 @@ export const resolveGstState = (explicitState, gstin, cities) => {
|
|
|
19
19
|
if (explicitState)
|
|
20
20
|
return explicitState;
|
|
21
21
|
const prefix = gstin?.trim()?.slice(0, 2);
|
|
22
|
-
|
|
22
|
+
// Typed as a possible miss on purpose: `prefix` is the first two characters
|
|
23
|
+
// of whatever GSTIN was supplied, not necessarily one of the codes the map
|
|
24
|
+
// holds, so the lookup can come back undefined — which the check below
|
|
25
|
+
// already treats as "unresolved" and falls through to the city.
|
|
26
|
+
const fromGstin = prefix
|
|
27
|
+
? GstStatemapping[prefix]
|
|
28
|
+
: undefined;
|
|
23
29
|
if (fromGstin)
|
|
24
30
|
return fromGstin;
|
|
25
31
|
// The legacy cityName/Address columns mirror cities[0] positionally, but for the state any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.gst.state.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/resolve.gst.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,gBAAgB,EAAE,eAAe,EAAS,MAAM,uBAAuB,CAAC;AAOvF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,aAA4B,EAC5B,KAAqB,EACrB,MAAoC,EACrB,EAAE;IACjB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"resolve.gst.state.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/resolve.gst.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,gBAAgB,EAAE,eAAe,EAAS,MAAM,uBAAuB,CAAC;AAOvF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,aAA4B,EAC5B,KAAqB,EACrB,MAAoC,EACrB,EAAE;IACjB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,4EAA4E;IAC5E,2EAA2E;IAC3E,uEAAuE;IACvE,gEAAgE;IAChE,MAAM,SAAS,GAAG,MAAM;QACvB,CAAC,CAAE,eAAqD,CAAC,MAAM,CAAC;QAChE,CAAC,CAAC,SAAS,CAAC;IACb,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,2FAA2F;IAC3F,6FAA6F;IAC7F,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC;SACvB,IAAI,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9C,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { IVehicleInsurance } from '../../models/src/index';
|
|
2
|
+
/**
|
|
3
|
+
* "Is this vehicle insured?" — one implementation, for every gate that asks.
|
|
4
|
+
*
|
|
5
|
+
* ── Why this file exists ───────────────────────────────────────────────────
|
|
6
|
+
* The BA payout flow asked that question in two places and answered it with
|
|
7
|
+
* two copies of the same twenty lines:
|
|
8
|
+
* • get.business.associate.payout.template.controller.ts — writes
|
|
9
|
+
* "Insurance has expired" into the downloaded template's Remarks column;
|
|
10
|
+
* • process.business.associate.payout.upload.controller.ts — pushes the same
|
|
11
|
+
* text into `invalidRows`, which Iris treats as a hard stop.
|
|
12
|
+
* Both shipped on 2025-12-16. AD-3227 adds a THIRD gate, at final generate,
|
|
13
|
+
* and three copies of a money-blocking predicate is two too many — so the
|
|
14
|
+
* predicate moved here and all three call it.
|
|
15
|
+
*
|
|
16
|
+
* ── Two questions, one predicate ───────────────────────────────────────────
|
|
17
|
+
* `hasInsuranceValidOn` is the original predicate, unchanged: is any policy
|
|
18
|
+
* in force on one given instant. The template and upload gates keep passing
|
|
19
|
+
* `new Date()` and keep behaving exactly as they did.
|
|
20
|
+
*
|
|
21
|
+
* `uninsuredDaysInPeriod` is the new question, and it is built ON that
|
|
22
|
+
* predicate rather than beside it: which days of a payout period is the
|
|
23
|
+
* vehicle NOT covered for. Generate needs the period, not today — see
|
|
24
|
+
* `uninsuredDaysInPeriod` for the measurement behind that choice.
|
|
25
|
+
*/
|
|
26
|
+
/** Reused verbatim; not a new string. */
|
|
27
|
+
export declare const INSURANCE_MISSING_ERROR = "Insurance is not added";
|
|
28
|
+
/** Reused verbatim; not a new string. */
|
|
29
|
+
export declare const INSURANCE_EXPIRED_ERROR = "Insurance has expired";
|
|
30
|
+
/**
|
|
31
|
+
* Is any of these policies in force on `at`?
|
|
32
|
+
*
|
|
33
|
+
* Lifted unchanged from the two payout controllers, down to the
|
|
34
|
+
* midnight-normalisation on both sides — a policy that expires today still
|
|
35
|
+
* counts as valid today, which is why an upload at 13:34 passed 96 seconds
|
|
36
|
+
* after the end date was set to that same day (AD-3227, comment 79918).
|
|
37
|
+
*
|
|
38
|
+
* The only thing dropped is the copies' `[...insurances].sort()` by `validTo`
|
|
39
|
+
* descending. Its result was fed straight to `.some()` over a pure predicate,
|
|
40
|
+
* where order cannot change the answer: dead work, not behaviour.
|
|
41
|
+
*/
|
|
42
|
+
export declare const hasInsuranceValidOn: (insurances: IVehicleInsurance[] | null | undefined, at: Date) => boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Which IST days between `from` and `to` (both inclusive) is this vehicle NOT
|
|
45
|
+
* insured for?
|
|
46
|
+
*
|
|
47
|
+
* ── Why the period and not "today" ─────────────────────────────────────────
|
|
48
|
+
* The obvious move for the generate gate was to reuse the upload gate's rule
|
|
49
|
+
* verbatim: is the vehicle insured RIGHT NOW. Measured against staging over
|
|
50
|
+
* 342 contract-runs (every context, every 2026 period), that rule blocks 134
|
|
51
|
+
* of them — and 85 of those 134 are payouts for a month the vehicle was
|
|
52
|
+
* insured throughout, refused in a later month because the policy has since
|
|
53
|
+
* lapsed. Generating August in September for a vehicle whose policy ran all
|
|
54
|
+
* August is exactly the legitimate historical payout the money depends on. The
|
|
55
|
+
* same measurement shows "today" also UNDER-detects: 17 runs pass it while the
|
|
56
|
+
* vehicle was uninsured for the period actually being paid.
|
|
57
|
+
*
|
|
58
|
+
* So the question asked here is coverage across the payout period. Within that
|
|
59
|
+
* there was a second choice — any overlap (60 blocked) versus every day
|
|
60
|
+
* covered (66 blocked). They differ on 6 of 342, and 4 of the 6 are not
|
|
61
|
+
* rounding: contract 1013 / KA67M0017 is paid for 01–24 Feb against a policy
|
|
62
|
+
* starting 23 Feb, 22 of 24 paid days uninsured, which "any overlap" waves
|
|
63
|
+
* through. Every-day-covered is what the money depends on, so that is what
|
|
64
|
+
* this returns — the caller decides what to do with a non-empty list.
|
|
65
|
+
*
|
|
66
|
+
* Returns the uninsured days in order, so a caller can name the gap rather
|
|
67
|
+
* than just assert one exists. An empty array means fully covered.
|
|
68
|
+
*/
|
|
69
|
+
export declare const uninsuredDaysInPeriod: (insurances: IVehicleInsurance[] | null | undefined, from: Date, to: Date) => string[];
|
|
70
|
+
/**
|
|
71
|
+
* The uninsured days as a phrase a user can act on.
|
|
72
|
+
*
|
|
73
|
+
* One day is named; an unbroken run becomes `01 Aug 2026 - 31 Aug 2026`. A
|
|
74
|
+
* BROKEN run — two policies with a hole between them — is NOT collapsed into a
|
|
75
|
+
* range, because that would claim the whole span was uncovered when only part
|
|
76
|
+
* of it was, and this text is the justification for refusing to pay someone.
|
|
77
|
+
*/
|
|
78
|
+
export declare const describeUninsuredDays: (days: string[]) => string;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { VehicleInsuranceField, } from '../../models/src/index';
|
|
2
|
+
import { IST_OFFSET_MS } from './ist';
|
|
3
|
+
/**
|
|
4
|
+
* "Is this vehicle insured?" — one implementation, for every gate that asks.
|
|
5
|
+
*
|
|
6
|
+
* ── Why this file exists ───────────────────────────────────────────────────
|
|
7
|
+
* The BA payout flow asked that question in two places and answered it with
|
|
8
|
+
* two copies of the same twenty lines:
|
|
9
|
+
* • get.business.associate.payout.template.controller.ts — writes
|
|
10
|
+
* "Insurance has expired" into the downloaded template's Remarks column;
|
|
11
|
+
* • process.business.associate.payout.upload.controller.ts — pushes the same
|
|
12
|
+
* text into `invalidRows`, which Iris treats as a hard stop.
|
|
13
|
+
* Both shipped on 2025-12-16. AD-3227 adds a THIRD gate, at final generate,
|
|
14
|
+
* and three copies of a money-blocking predicate is two too many — so the
|
|
15
|
+
* predicate moved here and all three call it.
|
|
16
|
+
*
|
|
17
|
+
* ── Two questions, one predicate ───────────────────────────────────────────
|
|
18
|
+
* `hasInsuranceValidOn` is the original predicate, unchanged: is any policy
|
|
19
|
+
* in force on one given instant. The template and upload gates keep passing
|
|
20
|
+
* `new Date()` and keep behaving exactly as they did.
|
|
21
|
+
*
|
|
22
|
+
* `uninsuredDaysInPeriod` is the new question, and it is built ON that
|
|
23
|
+
* predicate rather than beside it: which days of a payout period is the
|
|
24
|
+
* vehicle NOT covered for. Generate needs the period, not today — see
|
|
25
|
+
* `uninsuredDaysInPeriod` for the measurement behind that choice.
|
|
26
|
+
*/
|
|
27
|
+
/** Reused verbatim; not a new string. */
|
|
28
|
+
export const INSURANCE_MISSING_ERROR = 'Insurance is not added';
|
|
29
|
+
/** Reused verbatim; not a new string. */
|
|
30
|
+
export const INSURANCE_EXPIRED_ERROR = 'Insurance has expired';
|
|
31
|
+
/**
|
|
32
|
+
* A period longer than this is bad data, not a payout. Caps the day loop so a
|
|
33
|
+
* corrupt contract date cannot spin the request.
|
|
34
|
+
*/
|
|
35
|
+
const MAX_PERIOD_DAYS = 400;
|
|
36
|
+
/**
|
|
37
|
+
* Is any of these policies in force on `at`?
|
|
38
|
+
*
|
|
39
|
+
* Lifted unchanged from the two payout controllers, down to the
|
|
40
|
+
* midnight-normalisation on both sides — a policy that expires today still
|
|
41
|
+
* counts as valid today, which is why an upload at 13:34 passed 96 seconds
|
|
42
|
+
* after the end date was set to that same day (AD-3227, comment 79918).
|
|
43
|
+
*
|
|
44
|
+
* The only thing dropped is the copies' `[...insurances].sort()` by `validTo`
|
|
45
|
+
* descending. Its result was fed straight to `.some()` over a pure predicate,
|
|
46
|
+
* where order cannot change the answer: dead work, not behaviour.
|
|
47
|
+
*/
|
|
48
|
+
export const hasInsuranceValidOn = (insurances, at) => {
|
|
49
|
+
if (!insurances?.length)
|
|
50
|
+
return false;
|
|
51
|
+
const reference = new Date(at);
|
|
52
|
+
reference.setHours(0, 0, 0, 0);
|
|
53
|
+
return insurances.some((insurance) => {
|
|
54
|
+
const validFrom = insurance?.[VehicleInsuranceField.ValidFrom];
|
|
55
|
+
const validTo = insurance?.[VehicleInsuranceField.ValidTo];
|
|
56
|
+
if (!validFrom || !validTo)
|
|
57
|
+
return false;
|
|
58
|
+
const from = new Date(validFrom);
|
|
59
|
+
from.setHours(0, 0, 0, 0);
|
|
60
|
+
const to = new Date(validTo);
|
|
61
|
+
to.setHours(0, 0, 0, 0);
|
|
62
|
+
return reference >= from && reference <= to;
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
/** The IST calendar day an instant falls on, as `YYYY-MM-DD`. */
|
|
66
|
+
const istDayKey = (value) => new Date(value.getTime() + IST_OFFSET_MS).toISOString().slice(0, 10);
|
|
67
|
+
/**
|
|
68
|
+
* Midday IST on an IST calendar day — 06:30 UTC.
|
|
69
|
+
*
|
|
70
|
+
* Deliberately noon and not midnight. `hasInsuranceValidOn` normalises with
|
|
71
|
+
* `setHours(0, 0, 0, 0)`, which is the SERVER's local midnight; the staging and
|
|
72
|
+
* production boxes run UTC (verified), developers run IST. 06:30 UTC is inside
|
|
73
|
+
* the intended calendar day under BOTH — 00:00 UTC would slip to the previous
|
|
74
|
+
* day on an IST box, and 18:30 UTC to the next day on a UTC one.
|
|
75
|
+
*
|
|
76
|
+
* It is not universally timezone-proof and is not pretending to be: on a host
|
|
77
|
+
* more than 6.5 hours behind UTC the probe lands on the previous local day. The
|
|
78
|
+
* alternative was to re-normalise `hasInsuranceValidOn` itself to IST days,
|
|
79
|
+
* which would silently move the two ALREADY DEPLOYED gates (template download
|
|
80
|
+
* and template upload) by up to 5.5 hours at the boundary. Reusing the shipped
|
|
81
|
+
* predicate untouched is worth more than covering a timezone no server runs;
|
|
82
|
+
* jest.ba-payout-draft.config.js pins TZ=UTC so the specs assert what the
|
|
83
|
+
* servers do.
|
|
84
|
+
*/
|
|
85
|
+
const istNoonOf = (dayKey) => new Date(`${dayKey}T06:30:00.000Z`);
|
|
86
|
+
/**
|
|
87
|
+
* The next `YYYY-MM-DD`. Pure UTC arithmetic on the key itself — going back
|
|
88
|
+
* through `istDayKey` would shift by +5:30 and land on the SAME day, which is
|
|
89
|
+
* an infinite loop dressed up as an off-by-one.
|
|
90
|
+
*/
|
|
91
|
+
const nextDayKey = (dayKey) => new Date(new Date(`${dayKey}T00:00:00.000Z`).getTime() + 86400000)
|
|
92
|
+
.toISOString()
|
|
93
|
+
.slice(0, 10);
|
|
94
|
+
/**
|
|
95
|
+
* Which IST days between `from` and `to` (both inclusive) is this vehicle NOT
|
|
96
|
+
* insured for?
|
|
97
|
+
*
|
|
98
|
+
* ── Why the period and not "today" ─────────────────────────────────────────
|
|
99
|
+
* The obvious move for the generate gate was to reuse the upload gate's rule
|
|
100
|
+
* verbatim: is the vehicle insured RIGHT NOW. Measured against staging over
|
|
101
|
+
* 342 contract-runs (every context, every 2026 period), that rule blocks 134
|
|
102
|
+
* of them — and 85 of those 134 are payouts for a month the vehicle was
|
|
103
|
+
* insured throughout, refused in a later month because the policy has since
|
|
104
|
+
* lapsed. Generating August in September for a vehicle whose policy ran all
|
|
105
|
+
* August is exactly the legitimate historical payout the money depends on. The
|
|
106
|
+
* same measurement shows "today" also UNDER-detects: 17 runs pass it while the
|
|
107
|
+
* vehicle was uninsured for the period actually being paid.
|
|
108
|
+
*
|
|
109
|
+
* So the question asked here is coverage across the payout period. Within that
|
|
110
|
+
* there was a second choice — any overlap (60 blocked) versus every day
|
|
111
|
+
* covered (66 blocked). They differ on 6 of 342, and 4 of the 6 are not
|
|
112
|
+
* rounding: contract 1013 / KA67M0017 is paid for 01–24 Feb against a policy
|
|
113
|
+
* starting 23 Feb, 22 of 24 paid days uninsured, which "any overlap" waves
|
|
114
|
+
* through. Every-day-covered is what the money depends on, so that is what
|
|
115
|
+
* this returns — the caller decides what to do with a non-empty list.
|
|
116
|
+
*
|
|
117
|
+
* Returns the uninsured days in order, so a caller can name the gap rather
|
|
118
|
+
* than just assert one exists. An empty array means fully covered.
|
|
119
|
+
*/
|
|
120
|
+
export const uninsuredDaysInPeriod = (insurances, from, to) => {
|
|
121
|
+
if (!from || !to)
|
|
122
|
+
return [];
|
|
123
|
+
const first = istDayKey(from);
|
|
124
|
+
const last = istDayKey(to);
|
|
125
|
+
if (first > last)
|
|
126
|
+
return [];
|
|
127
|
+
const uninsured = [];
|
|
128
|
+
let day = first;
|
|
129
|
+
for (let guard = 0; guard < MAX_PERIOD_DAYS && day <= last; guard += 1) {
|
|
130
|
+
if (!hasInsuranceValidOn(insurances, istNoonOf(day))) {
|
|
131
|
+
uninsured.push(day);
|
|
132
|
+
}
|
|
133
|
+
day = nextDayKey(day);
|
|
134
|
+
}
|
|
135
|
+
return uninsured;
|
|
136
|
+
};
|
|
137
|
+
const MONTH_LABELS = [
|
|
138
|
+
'Jan',
|
|
139
|
+
'Feb',
|
|
140
|
+
'Mar',
|
|
141
|
+
'Apr',
|
|
142
|
+
'May',
|
|
143
|
+
'Jun',
|
|
144
|
+
'Jul',
|
|
145
|
+
'Aug',
|
|
146
|
+
'Sep',
|
|
147
|
+
'Oct',
|
|
148
|
+
'Nov',
|
|
149
|
+
'Dec',
|
|
150
|
+
];
|
|
151
|
+
/** `2026-08-01` -> `01 Aug 2026`. */
|
|
152
|
+
const dayLabel = (dayKey) => {
|
|
153
|
+
const [year, month, date] = dayKey.split('-');
|
|
154
|
+
return `${date} ${MONTH_LABELS[Number(month) - 1] ?? month} ${year}`;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* The uninsured days as a phrase a user can act on.
|
|
158
|
+
*
|
|
159
|
+
* One day is named; an unbroken run becomes `01 Aug 2026 - 31 Aug 2026`. A
|
|
160
|
+
* BROKEN run — two policies with a hole between them — is NOT collapsed into a
|
|
161
|
+
* range, because that would claim the whole span was uncovered when only part
|
|
162
|
+
* of it was, and this text is the justification for refusing to pay someone.
|
|
163
|
+
*/
|
|
164
|
+
export const describeUninsuredDays = (days) => {
|
|
165
|
+
if (!days.length)
|
|
166
|
+
return '';
|
|
167
|
+
if (days.length === 1)
|
|
168
|
+
return dayLabel(days[0]);
|
|
169
|
+
const first = days[0];
|
|
170
|
+
const last = days[days.length - 1];
|
|
171
|
+
let expected = first;
|
|
172
|
+
let contiguous = true;
|
|
173
|
+
for (const day of days) {
|
|
174
|
+
if (day !== expected) {
|
|
175
|
+
contiguous = false;
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
expected = nextDayKey(expected);
|
|
179
|
+
}
|
|
180
|
+
return contiguous
|
|
181
|
+
? `${dayLabel(first)} - ${dayLabel(last)}`
|
|
182
|
+
: `${days.length} days between ${dayLabel(first)} and ${dayLabel(last)}`;
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=vehicle.insurance.validity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicle.insurance.validity.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/vehicle.insurance.validity.ts"],"names":[],"mappings":"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"}
|