@autologix-engineering/shared 1.2.339 → 1.2.341
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/add.ltr.payout.rows.dto.d.ts +33 -11
- package/src/lib/data-transfer-objects/src/add.ltr.payout.rows.dto.js +38 -31
- package/src/lib/data-transfer-objects/src/add.ltr.payout.rows.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/calculate.non.pool.ltr.invoice.data.dto.d.ts +1 -0
- package/src/lib/data-transfer-objects/src/calculate.non.pool.ltr.invoice.data.dto.js +5 -0
- package/src/lib/data-transfer-objects/src/calculate.non.pool.ltr.invoice.data.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/duties.query.dto.d.ts +14 -0
- package/src/lib/data-transfer-objects/src/duties.query.dto.js +5 -0
- package/src/lib/data-transfer-objects/src/duties.query.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/get.ltr.driver.payout.rows.dto.d.ts +31 -3
- package/src/lib/data-transfer-objects/src/get.ltr.driver.payout.rows.dto.js +23 -4
- package/src/lib/data-transfer-objects/src/get.ltr.driver.payout.rows.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/index.d.ts +3 -0
- package/src/lib/data-transfer-objects/src/index.js +3 -0
- package/src/lib/data-transfer-objects/src/index.js.map +1 -1
- package/src/lib/data-transfer-objects/src/passenger.custom.query.dto.d.ts +12 -0
- package/src/lib/data-transfer-objects/src/passenger.custom.query.dto.js +6 -0
- package/src/lib/data-transfer-objects/src/passenger.custom.query.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/si.setup.dto.d.ts +3 -0
- package/src/lib/data-transfer-objects/src/si.setup.dto.js +12 -1
- package/src/lib/data-transfer-objects/src/si.setup.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/unblock.user.dto.d.ts +15 -0
- package/src/lib/data-transfer-objects/src/unblock.user.dto.js +24 -0
- package/src/lib/data-transfer-objects/src/unblock.user.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/update.global.config.dto.js +9 -4
- package/src/lib/data-transfer-objects/src/update.global.config.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/update.ltr.payout.rows.dto.d.ts +18 -0
- package/src/lib/data-transfer-objects/src/update.ltr.payout.rows.dto.js +20 -0
- package/src/lib/data-transfer-objects/src/update.ltr.payout.rows.dto.js.map +1 -0
- package/src/lib/data-transfer-objects/src/update.placard.fields.config.dto.d.ts +6 -0
- package/src/lib/data-transfer-objects/src/update.placard.fields.config.dto.js +18 -0
- package/src/lib/data-transfer-objects/src/update.placard.fields.config.dto.js.map +1 -0
- package/src/lib/enums/src/cities.enum.d.ts +7 -1
- package/src/lib/enums/src/cities.enum.js +6 -0
- package/src/lib/enums/src/cities.enum.js.map +1 -1
- package/src/lib/enums/src/city.state.mapping.js +6 -0
- package/src/lib/enums/src/city.state.mapping.js.map +1 -1
- package/src/lib/enums/src/command.type.enum.d.ts +3 -0
- package/src/lib/enums/src/command.type.enum.js +3 -0
- package/src/lib/enums/src/command.type.enum.js.map +1 -1
- package/src/lib/enums/src/index.d.ts +1 -0
- package/src/lib/enums/src/index.js +1 -0
- package/src/lib/enums/src/index.js.map +1 -1
- package/src/lib/enums/src/ltr.payout.enum.d.ts +26 -5
- package/src/lib/enums/src/ltr.payout.enum.js +27 -5
- package/src/lib/enums/src/ltr.payout.enum.js.map +1 -1
- package/src/lib/enums/src/model.enum.d.ts +2 -0
- package/src/lib/enums/src/model.enum.js +2 -0
- package/src/lib/enums/src/model.enum.js.map +1 -1
- package/src/lib/enums/src/placard.field.enum.d.ts +10 -0
- package/src/lib/enums/src/placard.field.enum.js +12 -0
- package/src/lib/enums/src/placard.field.enum.js.map +1 -0
- package/src/lib/models/src/client.configuration.model.d.ts +3 -1
- package/src/lib/models/src/client.configuration.model.js +1 -0
- package/src/lib/models/src/client.configuration.model.js.map +1 -1
- package/src/lib/models/src/index.d.ts +2 -0
- package/src/lib/models/src/index.js +2 -0
- package/src/lib/models/src/index.js.map +1 -1
- package/src/lib/models/src/ltr.payout.model.d.ts +6 -5
- package/src/lib/models/src/ltr.payout.model.js +4 -2
- package/src/lib/models/src/ltr.payout.model.js.map +1 -1
- package/src/lib/models/src/ltr.payout.row.group.model.d.ts +56 -0
- package/src/lib/models/src/ltr.payout.row.group.model.js +21 -0
- package/src/lib/models/src/ltr.payout.row.group.model.js.map +1 -0
- package/src/lib/models/src/ltr.payout.row.image.model.d.ts +34 -0
- package/src/lib/models/src/ltr.payout.row.image.model.js +11 -0
- package/src/lib/models/src/ltr.payout.row.image.model.js.map +1 -0
- package/src/lib/models/src/passenger.model.d.ts +9 -0
- package/src/lib/models/src/passenger.model.js +1 -0
- package/src/lib/models/src/passenger.model.js.map +1 -1
- package/src/lib/routes/src/command.registry.routes.d.ts +3 -0
- package/src/lib/routes/src/command.registry.routes.js +3 -0
- package/src/lib/routes/src/command.registry.routes.js.map +1 -1
- package/src/lib/utilities/src/concurrency.peak.d.ts +8 -5
- package/src/lib/utilities/src/concurrency.peak.js +36 -13
- package/src/lib/utilities/src/concurrency.peak.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.payout.row.key.d.ts +43 -0
- package/src/lib/utilities/src/ltr.payout.row.key.js +78 -0
- package/src/lib/utilities/src/ltr.payout.row.key.js.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency.peak.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/concurrency.peak.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"concurrency.peak.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/concurrency.peak.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAsBH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,QAA4B,EAC5B,IAAU,EACV,EAAQ,EACR,OAAa,EACC,EAAE;IAChB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACnC,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE9D,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAClD,8DAA8D;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;YAAE,SAAS;QAC7B,UAAU,CAAC,IAAI,CAAC;YACf,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,CAAC;YACR,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC1C,CAAC,CAAC;QACH,UAAU,CAAC,IAAI,CAAC;YACf,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,CAAC,CAAC;YACT,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC1C,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEtD,yEAAyE;IACzE,2EAA2E;IAC3E,sEAAsE;IACtE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE5D,uEAAuE;IACvE,EAAE;IACF,6EAA6E;IAC7E,0EAA0E;IAC1E,4EAA4E;IAC5E,uEAAuE;IACvE,+CAA+C;IAC/C,EAAE;IACF,6EAA6E;IAC7E,2EAA2E;IAC3E,uEAAuE;IACvE,2CAA2C;IAC3C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAwB,CAAC;IAC7B,IAAI,SAAS,GAAa,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACtB,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACP,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,gEAAgE;QAChE,gEAAgE;QAChE,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;YAAE,SAAS;QAE9C,uEAAuE;QACvE,4CAA4C;QAC5C,IAAI,WAAW,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;YAC7B,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;YACxB,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC/B,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACzB,QAA4B,EAC5B,IAAU,EACV,EAAQ,EACR,OAAa,EACb,aAAqB,EACmB,EAAE;IAC1C,MAAM,QAAQ,GAAG,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAElC,+EAA+E;IAC/E,MAAM,aAAa,GAClB,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC;IAEpE,MAAM,OAAO,GAA0C,EAAE,CAAC;IAC1D,KACC,IAAI,QAAQ,GAAG,aAAa,EAC5B,QAAQ,GAAG,EAAE,CAAC,OAAO,EAAE,EACvB,QAAQ,IAAI,KAAK,EAChB,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QAChC,mEAAmE;QACnE,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC;YACZ,GAAG,IAAI;YACP,IAAI,EAAE,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SAC9D,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -34,5 +34,6 @@ export * from './amount.in.words';
|
|
|
34
34
|
export * from './calculate.ba.payout.working.days';
|
|
35
35
|
export * from './garage.start.from.pickup';
|
|
36
36
|
export * from './parse.display.date';
|
|
37
|
+
export * from './ltr.payout.row.key';
|
|
37
38
|
export * from './invoice.generation.alert.util';
|
|
38
39
|
export * from './concurrency.peak';
|
|
@@ -34,6 +34,7 @@ export * from './amount.in.words';
|
|
|
34
34
|
export * from './calculate.ba.payout.working.days';
|
|
35
35
|
export * from './garage.start.from.pickup';
|
|
36
36
|
export * from './parse.display.date';
|
|
37
|
+
export * from './ltr.payout.row.key';
|
|
37
38
|
export * from './invoice.generation.alert.util';
|
|
38
39
|
export * from './concurrency.peak';
|
|
39
40
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,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,iCAAiC,CAAC;AAChD,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,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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { LTRPayoutRow } from '../../models/src/index';
|
|
2
|
+
/**
|
|
3
|
+
* A payout row's stable identity: the calendar date it covers, plus its shift
|
|
4
|
+
* where the contract has shifts.
|
|
5
|
+
*
|
|
6
|
+
* Derived from the row's own content rather than its position in
|
|
7
|
+
* `LTRPayout.ltrPayoutRows`. That matters because the array is re-sorted by
|
|
8
|
+
* date whenever an entry is added, so a row logged for an earlier date shifts
|
|
9
|
+
* the index of every row after it — an index captured in one response is not
|
|
10
|
+
* the same row in the next.
|
|
11
|
+
*
|
|
12
|
+
* This is already the uniqueness rule the system enforces: at most one row per
|
|
13
|
+
* date, or per (date, shift) on a shift contract. Two rows can therefore never
|
|
14
|
+
* share a key.
|
|
15
|
+
*
|
|
16
|
+
* Returns null when the row carries no parsable date, which only happens on
|
|
17
|
+
* malformed data; callers should fall back to the array index for those.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ltrPayoutRowKey(row: LTRPayoutRow): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* The instant a row starts, for ordering a booking's rows by date.
|
|
22
|
+
*
|
|
23
|
+
* Duty start first, garage start for garage-to-garage rows that record no
|
|
24
|
+
* separate duty window.
|
|
25
|
+
*/
|
|
26
|
+
export declare function ltrPayoutRowStart(row: LTRPayoutRow): Date | null;
|
|
27
|
+
/**
|
|
28
|
+
* A booking's rows in date order.
|
|
29
|
+
*
|
|
30
|
+
* The stored array is kept sorted so the charge calculation sees the duty as
|
|
31
|
+
* one continuous sequence — running KM and overtime both depend on the
|
|
32
|
+
* preceding row.
|
|
33
|
+
*/
|
|
34
|
+
export declare function sortLTRPayoutRowsByDate(rows: LTRPayoutRow[]): LTRPayoutRow[];
|
|
35
|
+
/**
|
|
36
|
+
* The first date in `newRows` that `existingRows` already occupies, as a label
|
|
37
|
+
* for the caller's error message — or null when there is no clash.
|
|
38
|
+
*
|
|
39
|
+
* Callers decide which rows count as "existing": adding an entry checks every
|
|
40
|
+
* stored row, while editing one checks only the OTHER entries, since the dates
|
|
41
|
+
* it currently holds are being released.
|
|
42
|
+
*/
|
|
43
|
+
export declare function findOverlappingLTRPayoutDate(existingRows: LTRPayoutRow[], newRows: LTRPayoutRow[]): string | null;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { LTRPayoutRowField } from '../../models/src/index';
|
|
2
|
+
import { firstParsableDisplayDate } from './parse.display.date';
|
|
3
|
+
/**
|
|
4
|
+
* A payout row's stable identity: the calendar date it covers, plus its shift
|
|
5
|
+
* where the contract has shifts.
|
|
6
|
+
*
|
|
7
|
+
* Derived from the row's own content rather than its position in
|
|
8
|
+
* `LTRPayout.ltrPayoutRows`. That matters because the array is re-sorted by
|
|
9
|
+
* date whenever an entry is added, so a row logged for an earlier date shifts
|
|
10
|
+
* the index of every row after it — an index captured in one response is not
|
|
11
|
+
* the same row in the next.
|
|
12
|
+
*
|
|
13
|
+
* This is already the uniqueness rule the system enforces: at most one row per
|
|
14
|
+
* date, or per (date, shift) on a shift contract. Two rows can therefore never
|
|
15
|
+
* share a key.
|
|
16
|
+
*
|
|
17
|
+
* Returns null when the row carries no parsable date, which only happens on
|
|
18
|
+
* malformed data; callers should fall back to the array index for those.
|
|
19
|
+
*/
|
|
20
|
+
export function ltrPayoutRowKey(row) {
|
|
21
|
+
const date = firstParsableDisplayDate([
|
|
22
|
+
row?.[LTRPayoutRowField.DutyStartDateTime],
|
|
23
|
+
row?.[LTRPayoutRowField.DutyStartDate],
|
|
24
|
+
row?.[LTRPayoutRowField.GarageStartDateTime],
|
|
25
|
+
row?.[LTRPayoutRowField.GarageStartDate],
|
|
26
|
+
]);
|
|
27
|
+
if (!date)
|
|
28
|
+
return null;
|
|
29
|
+
const datePart = `${String(date.getDate()).padStart(2, '0')}/${String(date.getMonth() + 1).padStart(2, '0')}/${date.getFullYear()}`;
|
|
30
|
+
const shift = row?.[LTRPayoutRowField.Shift];
|
|
31
|
+
return shift ? `${datePart}#${shift}` : datePart;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The instant a row starts, for ordering a booking's rows by date.
|
|
35
|
+
*
|
|
36
|
+
* Duty start first, garage start for garage-to-garage rows that record no
|
|
37
|
+
* separate duty window.
|
|
38
|
+
*/
|
|
39
|
+
export function ltrPayoutRowStart(row) {
|
|
40
|
+
return firstParsableDisplayDate([
|
|
41
|
+
row?.[LTRPayoutRowField.DutyStartDateTime],
|
|
42
|
+
row?.[LTRPayoutRowField.GarageStartDateTime],
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A booking's rows in date order.
|
|
47
|
+
*
|
|
48
|
+
* The stored array is kept sorted so the charge calculation sees the duty as
|
|
49
|
+
* one continuous sequence — running KM and overtime both depend on the
|
|
50
|
+
* preceding row.
|
|
51
|
+
*/
|
|
52
|
+
export function sortLTRPayoutRowsByDate(rows) {
|
|
53
|
+
return [...rows].sort((a, b) => (ltrPayoutRowStart(a)?.getTime() ?? 0) -
|
|
54
|
+
(ltrPayoutRowStart(b)?.getTime() ?? 0));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The first date in `newRows` that `existingRows` already occupies, as a label
|
|
58
|
+
* for the caller's error message — or null when there is no clash.
|
|
59
|
+
*
|
|
60
|
+
* Callers decide which rows count as "existing": adding an entry checks every
|
|
61
|
+
* stored row, while editing one checks only the OTHER entries, since the dates
|
|
62
|
+
* it currently holds are being released.
|
|
63
|
+
*/
|
|
64
|
+
export function findOverlappingLTRPayoutDate(existingRows, newRows) {
|
|
65
|
+
const taken = new Set(existingRows
|
|
66
|
+
.map((row) => ltrPayoutRowKey(row))
|
|
67
|
+
.filter((key) => !!key));
|
|
68
|
+
for (const row of newRows) {
|
|
69
|
+
const key = ltrPayoutRowKey(row);
|
|
70
|
+
if (!key || !taken.has(key))
|
|
71
|
+
continue;
|
|
72
|
+
const shift = row?.[LTRPayoutRowField.Shift];
|
|
73
|
+
const date = row?.[LTRPayoutRowField.DutyStartDate] ?? key.split('#')[0];
|
|
74
|
+
return shift ? `${date} (shift ${shift})` : date;
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=ltr.payout.row.key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ltr.payout.row.key.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/ltr.payout.row.key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,GAAiB;IAChD,MAAM,IAAI,GAAG,wBAAwB,CAAC;QACrC,GAAG,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;QAC1C,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC;QACtC,GAAG,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;QAC5C,GAAG,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC;KACxC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CACpE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CACnB,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IAClD,OAAO,wBAAwB,CAAC;QAC/B,GAAG,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;QAC1C,GAAG,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;KAC5C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAoB;IAC3D,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CACpB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CACvC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC3C,YAA4B,EAC5B,OAAuB;IAEvB,MAAM,KAAK,GAAG,IAAI,GAAG,CACpB,YAAY;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAClC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CACvC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAEtC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,IAAI,GACT,GAAG,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|