@autologix-engineering/shared 1.2.263 → 1.2.265
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/commands/src/generate.summary.vendor.knock.off.pdf.handler.d.ts +1 -0
- package/src/lib/commands/src/generate.summary.vendor.knock.off.pdf.handler.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/create.statement.dto.d.ts +11 -0
- package/src/lib/data-transfer-objects/src/command/create.statement.dto.js +51 -1
- package/src/lib/data-transfer-objects/src/command/create.statement.dto.js.map +1 -1
- package/src/lib/data-transfer-objects/src/command/generate.summary.knock.off.dto.d.ts +19 -0
- package/src/lib/data-transfer-objects/src/command/generate.summary.knock.off.dto.js +47 -0
- package/src/lib/data-transfer-objects/src/command/generate.summary.knock.off.dto.js.map +1 -1
- package/src/lib/enums/src/alert.command.types.d.ts +2 -0
- package/src/lib/enums/src/alert.command.types.js +26 -0
- package/src/lib/enums/src/alert.command.types.js.map +1 -0
- package/src/lib/enums/src/command.type.enum.d.ts +1 -0
- package/src/lib/enums/src/command.type.enum.js +1 -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/routes/src/command.registry.routes.d.ts +1 -0
- package/src/lib/routes/src/command.registry.routes.js +1 -0
- package/src/lib/routes/src/command.registry.routes.js.map +1 -1
- package/src/lib/utilities/src/calculate.deducted.sharing.amount.d.ts +48 -0
- package/src/lib/utilities/src/calculate.deducted.sharing.amount.js +293 -0
- package/src/lib/utilities/src/calculate.deducted.sharing.amount.js.map +1 -0
- package/src/lib/utilities/src/find.ba.contract.for.booking.d.ts +25 -0
- package/src/lib/utilities/src/find.ba.contract.for.booking.js +66 -0
- package/src/lib/utilities/src/find.ba.contract.for.booking.js.map +1 -0
- package/src/lib/utilities/src/index.d.ts +4 -0
- package/src/lib/utilities/src/index.js +4 -0
- package/src/lib/utilities/src/index.js.map +1 -1
- package/src/lib/utilities/src/ist.d.ts +6 -0
- package/src/lib/utilities/src/ist.js +15 -0
- package/src/lib/utilities/src/ist.js.map +1 -1
- package/src/lib/utilities/src/pick.incentive.amount.d.ts +20 -0
- package/src/lib/utilities/src/pick.incentive.amount.js +30 -0
- package/src/lib/utilities/src/pick.incentive.amount.js.map +1 -0
- package/src/lib/utilities/src/pick.numbered.invoice.for.booking.d.ts +37 -0
- package/src/lib/utilities/src/pick.numbered.invoice.for.booking.js +96 -0
- package/src/lib/utilities/src/pick.numbered.invoice.for.booking.js.map +1 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { InstantInvoiceBodyField, NumberedInvoiceField, RequestField, TaxInvoiceField, TripField, } from '../../models/src/index';
|
|
2
|
+
import { InvoiceType } from '../../enums/src/index';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the per-booking NumberedInvoice and the right line-item slice
|
|
5
|
+
* for a (request, taxInvoice) pair, with CN/DN, full-cancel, and
|
|
6
|
+
* consolidated cases handled.
|
|
7
|
+
*
|
|
8
|
+
* - CN/DN: source NI from `ti.ReferenceInvoice` (the parent TI), not
|
|
9
|
+
* the CN itself. CN entities don't carry their own NumberedInvoice
|
|
10
|
+
* for the original sale — only the reversal.
|
|
11
|
+
* - Consolidated source: walk `sourceTI.NumberedInvoices` and pick
|
|
12
|
+
* the one whose `instantInvBody.tripId` matches the request's
|
|
13
|
+
* `Trip.TripId`. Single-child fallback when no tripId match.
|
|
14
|
+
* - Non-consolidated source: use `sourceTI.NumberedInvoice` (direct
|
|
15
|
+
* ManyToOne FK on the TI entity).
|
|
16
|
+
* - Consolidated full-cancel CN/DN: returns the parent NI's
|
|
17
|
+
* lineItems (positive originals) and `negateForFullCancel=true`
|
|
18
|
+
* so the caller sign-flips. If per-booking NI can't be resolved,
|
|
19
|
+
* returns empty lineItems rather than surfacing the consolidated
|
|
20
|
+
* whole-invoice total once per booking.
|
|
21
|
+
*
|
|
22
|
+
* Mirrors `VendorKnockOffCalculationService.pickNumberedInvoiceAndLineItems`
|
|
23
|
+
* — kept in shared so BA-payout / booking-report / vendor-KO can all
|
|
24
|
+
* use one source of truth.
|
|
25
|
+
*/
|
|
26
|
+
export function pickNumberedInvoiceForBooking(request, taxInvoice, debug) {
|
|
27
|
+
const allNumberedInvoices = request?.[RequestField.NumberedInvoices] || [];
|
|
28
|
+
const isCNOrDN = !!taxInvoice &&
|
|
29
|
+
(taxInvoice[TaxInvoiceField.InvoiceType] === InvoiceType.CreditNote ||
|
|
30
|
+
taxInvoice[TaxInvoiceField.InvoiceType] === InvoiceType.DebitNote);
|
|
31
|
+
const sourceTI = isCNOrDN
|
|
32
|
+
? taxInvoice?.[TaxInvoiceField.ReferenceInvoice]
|
|
33
|
+
: taxInvoice;
|
|
34
|
+
const isConsolidatedSource = !!sourceTI?.[TaxInvoiceField.Consolidated];
|
|
35
|
+
let ni;
|
|
36
|
+
if (sourceTI) {
|
|
37
|
+
if (isConsolidatedSource) {
|
|
38
|
+
const requestTripId = request?.[RequestField.Trip]?.[TripField.TripId] ||
|
|
39
|
+
request?.[RequestField.TripId];
|
|
40
|
+
const candidateNIs = sourceTI?.[TaxInvoiceField.NumberedInvoices] || [];
|
|
41
|
+
if (requestTripId) {
|
|
42
|
+
ni = candidateNIs.find((n) => n?.[NumberedInvoiceField.InstantInvoiceBody]?.[InstantInvoiceBodyField.TripId] === requestTripId);
|
|
43
|
+
}
|
|
44
|
+
if (!ni && candidateNIs.length === 1) {
|
|
45
|
+
ni = candidateNIs[0];
|
|
46
|
+
}
|
|
47
|
+
if (!ni) {
|
|
48
|
+
debug?.(`[picker] consolidated source TI ${sourceTI?.[TaxInvoiceField.InvoiceId]} ` +
|
|
49
|
+
`has no NI matching tripId=${requestTripId} for ` +
|
|
50
|
+
`booking ${request?.[RequestField.BookingNumber]} — falling back to last NI on request`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
ni = sourceTI?.[TaxInvoiceField.NumberedInvoice];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const fellBackToRequestNI = !ni;
|
|
58
|
+
if (!ni) {
|
|
59
|
+
ni = allNumberedInvoices[allNumberedInvoices.length - 1];
|
|
60
|
+
}
|
|
61
|
+
const isFullCancelCNDN = isCNOrDN && !!taxInvoice?.[TaxInvoiceField.FullCancel];
|
|
62
|
+
let lineItems;
|
|
63
|
+
let sourcedFromParentNI = false;
|
|
64
|
+
if (isFullCancelCNDN && isConsolidatedSource) {
|
|
65
|
+
if (ni && !fellBackToRequestNI) {
|
|
66
|
+
lineItems = ni?.[NumberedInvoiceField.LineItems];
|
|
67
|
+
sourcedFromParentNI = !!lineItems?.length;
|
|
68
|
+
}
|
|
69
|
+
if (!lineItems?.length) {
|
|
70
|
+
debug?.(`[picker] consolidated full-cancel ${taxInvoice?.[TaxInvoiceField.InvoiceType]} ` +
|
|
71
|
+
`${taxInvoice?.[TaxInvoiceField.InvoiceId]} could not resolve per-booking NI ` +
|
|
72
|
+
`for booking ${request?.[RequestField.BookingNumber]} — empty lineItems`);
|
|
73
|
+
lineItems = [];
|
|
74
|
+
sourcedFromParentNI = false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (isConsolidatedSource) {
|
|
78
|
+
if (ni && !fellBackToRequestNI) {
|
|
79
|
+
lineItems = ni?.[NumberedInvoiceField.LineItems];
|
|
80
|
+
}
|
|
81
|
+
if (!lineItems?.length) {
|
|
82
|
+
debug?.(`[picker] consolidated TI ${taxInvoice?.[TaxInvoiceField.InvoiceId]} ` +
|
|
83
|
+
`could not resolve per-booking NI for booking ` +
|
|
84
|
+
`${request?.[RequestField.BookingNumber]} — empty lineItems`);
|
|
85
|
+
lineItems = [];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (taxInvoice && !isConsolidatedSource) {
|
|
89
|
+
lineItems = taxInvoice?.[TaxInvoiceField.LineItems];
|
|
90
|
+
}
|
|
91
|
+
else if (ni) {
|
|
92
|
+
lineItems = ni?.[NumberedInvoiceField.LineItems];
|
|
93
|
+
}
|
|
94
|
+
return { ni, lineItems, negateForFullCancel: sourcedFromParentNI };
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=pick.numbered.invoice.for.booking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick.numbered.invoice.for.booking.js","sourceRoot":"","sources":["../../../../../../../libs/shared/src/lib/utilities/src/pick.numbered.invoice.for.booking.ts"],"names":[],"mappings":"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"}
|