@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.
Files changed (39) hide show
  1. package/package.json +1 -1
  2. package/src/lib/commands/src/generate.summary.vendor.knock.off.pdf.handler.d.ts +1 -0
  3. package/src/lib/commands/src/generate.summary.vendor.knock.off.pdf.handler.js.map +1 -1
  4. package/src/lib/data-transfer-objects/src/command/create.statement.dto.d.ts +11 -0
  5. package/src/lib/data-transfer-objects/src/command/create.statement.dto.js +51 -1
  6. package/src/lib/data-transfer-objects/src/command/create.statement.dto.js.map +1 -1
  7. package/src/lib/data-transfer-objects/src/command/generate.summary.knock.off.dto.d.ts +19 -0
  8. package/src/lib/data-transfer-objects/src/command/generate.summary.knock.off.dto.js +47 -0
  9. package/src/lib/data-transfer-objects/src/command/generate.summary.knock.off.dto.js.map +1 -1
  10. package/src/lib/enums/src/alert.command.types.d.ts +2 -0
  11. package/src/lib/enums/src/alert.command.types.js +26 -0
  12. package/src/lib/enums/src/alert.command.types.js.map +1 -0
  13. package/src/lib/enums/src/command.type.enum.d.ts +1 -0
  14. package/src/lib/enums/src/command.type.enum.js +1 -0
  15. package/src/lib/enums/src/command.type.enum.js.map +1 -1
  16. package/src/lib/enums/src/index.d.ts +1 -0
  17. package/src/lib/enums/src/index.js +1 -0
  18. package/src/lib/enums/src/index.js.map +1 -1
  19. package/src/lib/routes/src/command.registry.routes.d.ts +1 -0
  20. package/src/lib/routes/src/command.registry.routes.js +1 -0
  21. package/src/lib/routes/src/command.registry.routes.js.map +1 -1
  22. package/src/lib/utilities/src/calculate.deducted.sharing.amount.d.ts +48 -0
  23. package/src/lib/utilities/src/calculate.deducted.sharing.amount.js +293 -0
  24. package/src/lib/utilities/src/calculate.deducted.sharing.amount.js.map +1 -0
  25. package/src/lib/utilities/src/find.ba.contract.for.booking.d.ts +25 -0
  26. package/src/lib/utilities/src/find.ba.contract.for.booking.js +66 -0
  27. package/src/lib/utilities/src/find.ba.contract.for.booking.js.map +1 -0
  28. package/src/lib/utilities/src/index.d.ts +4 -0
  29. package/src/lib/utilities/src/index.js +4 -0
  30. package/src/lib/utilities/src/index.js.map +1 -1
  31. package/src/lib/utilities/src/ist.d.ts +6 -0
  32. package/src/lib/utilities/src/ist.js +15 -0
  33. package/src/lib/utilities/src/ist.js.map +1 -1
  34. package/src/lib/utilities/src/pick.incentive.amount.d.ts +20 -0
  35. package/src/lib/utilities/src/pick.incentive.amount.js +30 -0
  36. package/src/lib/utilities/src/pick.incentive.amount.js.map +1 -0
  37. package/src/lib/utilities/src/pick.numbered.invoice.for.booking.d.ts +37 -0
  38. package/src/lib/utilities/src/pick.numbered.invoice.for.booking.js +96 -0
  39. 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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"}