@voyant-travel/inventory 0.1.0
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/LICENSE +201 -0
- package/dist/action-ledger-drift.d.ts +29 -0
- package/dist/action-ledger-drift.d.ts.map +1 -0
- package/dist/action-ledger-drift.js +338 -0
- package/dist/action-ledger.d.ts +104 -0
- package/dist/action-ledger.d.ts.map +1 -0
- package/dist/action-ledger.js +100 -0
- package/dist/authoring/builder.d.ts +37 -0
- package/dist/authoring/builder.d.ts.map +1 -0
- package/dist/authoring/builder.js +248 -0
- package/dist/authoring/clone-content.d.ts +38 -0
- package/dist/authoring/clone-content.d.ts.map +1 -0
- package/dist/authoring/clone-content.js +367 -0
- package/dist/authoring/clone-pricing.d.ts +9 -0
- package/dist/authoring/clone-pricing.d.ts.map +1 -0
- package/dist/authoring/clone-pricing.js +242 -0
- package/dist/authoring/clone.d.ts +45 -0
- package/dist/authoring/clone.d.ts.map +1 -0
- package/dist/authoring/clone.js +142 -0
- package/dist/authoring/errors.d.ts +21 -0
- package/dist/authoring/errors.d.ts.map +1 -0
- package/dist/authoring/errors.js +13 -0
- package/dist/authoring/extension.d.ts +248 -0
- package/dist/authoring/extension.d.ts.map +1 -0
- package/dist/authoring/extension.js +116 -0
- package/dist/authoring/index.d.ts +12 -0
- package/dist/authoring/index.d.ts.map +1 -0
- package/dist/authoring/index.js +11 -0
- package/dist/authoring/schema.d.ts +85 -0
- package/dist/authoring/schema.d.ts.map +1 -0
- package/dist/authoring/schema.js +16 -0
- package/dist/authoring/service.d.ts +28 -0
- package/dist/authoring/service.d.ts.map +1 -0
- package/dist/authoring/service.js +66 -0
- package/dist/authoring/spec.d.ts +524 -0
- package/dist/authoring/spec.d.ts.map +1 -0
- package/dist/authoring/spec.js +167 -0
- package/dist/authoring/validate.d.ts +17 -0
- package/dist/authoring/validate.d.ts.map +1 -0
- package/dist/authoring/validate.js +83 -0
- package/dist/authoring.d.ts +2 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +1 -0
- package/dist/booking-engine/handler-support.d.ts +91 -0
- package/dist/booking-engine/handler-support.d.ts.map +1 -0
- package/dist/booking-engine/handler-support.js +355 -0
- package/dist/booking-engine/handler.d.ts +404 -0
- package/dist/booking-engine/handler.d.ts.map +1 -0
- package/dist/booking-engine/handler.js +398 -0
- package/dist/booking-engine/index.d.ts +8 -0
- package/dist/booking-engine/index.d.ts.map +1 -0
- package/dist/booking-engine/index.js +7 -0
- package/dist/booking-engine.d.ts +2 -0
- package/dist/booking-engine.d.ts.map +1 -0
- package/dist/booking-engine.js +1 -0
- package/dist/booking-extension.d.ts +278 -0
- package/dist/booking-extension.d.ts.map +1 -0
- package/dist/booking-extension.js +161 -0
- package/dist/catalog-policy-departures.d.ts +52 -0
- package/dist/catalog-policy-departures.d.ts.map +1 -0
- package/dist/catalog-policy-departures.js +169 -0
- package/dist/catalog-policy-destinations.d.ts +43 -0
- package/dist/catalog-policy-destinations.d.ts.map +1 -0
- package/dist/catalog-policy-destinations.js +165 -0
- package/dist/catalog-policy-pricing.d.ts +55 -0
- package/dist/catalog-policy-pricing.d.ts.map +1 -0
- package/dist/catalog-policy-pricing.js +109 -0
- package/dist/catalog-policy-promotions.d.ts +52 -0
- package/dist/catalog-policy-promotions.d.ts.map +1 -0
- package/dist/catalog-policy-promotions.js +270 -0
- package/dist/catalog-policy-taxonomy.d.ts +51 -0
- package/dist/catalog-policy-taxonomy.d.ts.map +1 -0
- package/dist/catalog-policy-taxonomy.js +191 -0
- package/dist/catalog-policy.d.ts +33 -0
- package/dist/catalog-policy.d.ts.map +1 -0
- package/dist/catalog-policy.js +733 -0
- package/dist/content-shape.d.ts +15 -0
- package/dist/content-shape.d.ts.map +1 -0
- package/dist/content-shape.js +28 -0
- package/dist/draft-shape.d.ts +43 -0
- package/dist/draft-shape.d.ts.map +1 -0
- package/dist/draft-shape.js +48 -0
- package/dist/events.d.ts +37 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +32 -0
- package/dist/extras/catalog-policy.d.ts +30 -0
- package/dist/extras/catalog-policy.d.ts.map +1 -0
- package/dist/extras/catalog-policy.js +319 -0
- package/dist/extras/content-shape.d.ts +5 -0
- package/dist/extras/content-shape.d.ts.map +1 -0
- package/dist/extras/content-shape.js +13 -0
- package/dist/extras/draft-shape.d.ts +34 -0
- package/dist/extras/draft-shape.d.ts.map +1 -0
- package/dist/extras/draft-shape.js +69 -0
- package/dist/extras/routes.d.ts +380 -0
- package/dist/extras/routes.d.ts.map +1 -0
- package/dist/extras/routes.js +59 -0
- package/dist/extras/schema-sourced-content.d.ts +254 -0
- package/dist/extras/schema-sourced-content.d.ts.map +1 -0
- package/dist/extras/schema-sourced-content.js +45 -0
- package/dist/extras/schema.d.ts +628 -0
- package/dist/extras/schema.d.ts.map +1 -0
- package/dist/extras/schema.js +87 -0
- package/dist/extras/service-catalog-plane.d.ts +77 -0
- package/dist/extras/service-catalog-plane.d.ts.map +1 -0
- package/dist/extras/service-catalog-plane.js +219 -0
- package/dist/extras/service-content-synthesizer.d.ts +41 -0
- package/dist/extras/service-content-synthesizer.d.ts.map +1 -0
- package/dist/extras/service-content-synthesizer.js +138 -0
- package/dist/extras/service-content.d.ts +48 -0
- package/dist/extras/service-content.d.ts.map +1 -0
- package/dist/extras/service-content.js +253 -0
- package/dist/extras/service.d.ts +185 -0
- package/dist/extras/service.d.ts.map +1 -0
- package/dist/extras/service.js +96 -0
- package/dist/extras/validation.d.ts +437 -0
- package/dist/extras/validation.d.ts.map +1 -0
- package/dist/extras/validation.js +149 -0
- package/dist/extras.d.ts +267 -0
- package/dist/extras.d.ts.map +1 -0
- package/dist/extras.js +19 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/interface.d.ts +5869 -0
- package/dist/interface.d.ts.map +1 -0
- package/dist/interface.js +54 -0
- package/dist/public-routes.d.ts +2 -0
- package/dist/public-routes.d.ts.map +1 -0
- package/dist/public-routes.js +1 -0
- package/dist/public-validation.d.ts +2 -0
- package/dist/public-validation.d.ts.map +1 -0
- package/dist/public-validation.js +1 -0
- package/dist/read-model.d.ts +25 -0
- package/dist/read-model.d.ts.map +1 -0
- package/dist/read-model.js +99 -0
- package/dist/route-env.d.ts +22 -0
- package/dist/route-env.d.ts.map +1 -0
- package/dist/route-env.js +1 -0
- package/dist/routes-associations.d.ts +164 -0
- package/dist/routes-associations.d.ts.map +1 -0
- package/dist/routes-associations.js +100 -0
- package/dist/routes-catalog.d.ts +436 -0
- package/dist/routes-catalog.d.ts.map +1 -0
- package/dist/routes-catalog.js +104 -0
- package/dist/routes-configuration.d.ts +773 -0
- package/dist/routes-configuration.d.ts.map +1 -0
- package/dist/routes-configuration.js +364 -0
- package/dist/routes-content.d.ts +74 -0
- package/dist/routes-content.d.ts.map +1 -0
- package/dist/routes-content.js +117 -0
- package/dist/routes-core.d.ts +331 -0
- package/dist/routes-core.d.ts.map +1 -0
- package/dist/routes-core.js +95 -0
- package/dist/routes-itinerary.d.ts +759 -0
- package/dist/routes-itinerary.d.ts.map +1 -0
- package/dist/routes-itinerary.js +387 -0
- package/dist/routes-maintenance.d.ts +32 -0
- package/dist/routes-maintenance.d.ts.map +1 -0
- package/dist/routes-maintenance.js +14 -0
- package/dist/routes-media.d.ts +634 -0
- package/dist/routes-media.d.ts.map +1 -0
- package/dist/routes-media.js +245 -0
- package/dist/routes-merchandising.d.ts +1120 -0
- package/dist/routes-merchandising.d.ts.map +1 -0
- package/dist/routes-merchandising.js +377 -0
- package/dist/routes-options.d.ts +363 -0
- package/dist/routes-options.d.ts.map +1 -0
- package/dist/routes-options.js +173 -0
- package/dist/routes-public.d.ts +776 -0
- package/dist/routes-public.d.ts.map +1 -0
- package/dist/routes-public.js +119 -0
- package/dist/routes-translations.d.ts +489 -0
- package/dist/routes-translations.d.ts.map +1 -0
- package/dist/routes-translations.js +258 -0
- package/dist/routes.d.ts +5097 -0
- package/dist/routes.d.ts.map +1 -0
- package/dist/routes.js +64 -0
- package/dist/schema-core.d.ts +1238 -0
- package/dist/schema-core.d.ts.map +1 -0
- package/dist/schema-core.js +157 -0
- package/dist/schema-itinerary.d.ts +1169 -0
- package/dist/schema-itinerary.d.ts.map +1 -0
- package/dist/schema-itinerary.js +130 -0
- package/dist/schema-relations.d.ts +117 -0
- package/dist/schema-relations.d.ts.map +1 -0
- package/dist/schema-relations.js +192 -0
- package/dist/schema-settings.d.ts +1800 -0
- package/dist/schema-settings.d.ts.map +1 -0
- package/dist/schema-settings.js +220 -0
- package/dist/schema-shared.d.ts +15 -0
- package/dist/schema-shared.d.ts.map +1 -0
- package/dist/schema-shared.js +91 -0
- package/dist/schema-sourced-content.d.ts +262 -0
- package/dist/schema-sourced-content.d.ts.map +1 -0
- package/dist/schema-sourced-content.js +69 -0
- package/dist/schema-taxonomy.d.ts +1363 -0
- package/dist/schema-taxonomy.d.ts.map +1 -0
- package/dist/schema-taxonomy.js +203 -0
- package/dist/schema.d.ts +10 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +9 -0
- package/dist/service-aggregates.d.ts +29 -0
- package/dist/service-aggregates.d.ts.map +1 -0
- package/dist/service-aggregates.js +56 -0
- package/dist/service-catalog-plane-destinations.d.ts +30 -0
- package/dist/service-catalog-plane-destinations.d.ts.map +1 -0
- package/dist/service-catalog-plane-destinations.js +143 -0
- package/dist/service-catalog-plane-taxonomy.d.ts +73 -0
- package/dist/service-catalog-plane-taxonomy.d.ts.map +1 -0
- package/dist/service-catalog-plane-taxonomy.js +242 -0
- package/dist/service-catalog-plane.d.ts +179 -0
- package/dist/service-catalog-plane.d.ts.map +1 -0
- package/dist/service-catalog-plane.js +431 -0
- package/dist/service-catalog.d.ts +251 -0
- package/dist/service-catalog.d.ts.map +1 -0
- package/dist/service-catalog.js +517 -0
- package/dist/service-configuration.d.ts +261 -0
- package/dist/service-configuration.d.ts.map +1 -0
- package/dist/service-configuration.js +343 -0
- package/dist/service-content-owned.d.ts +68 -0
- package/dist/service-content-owned.d.ts.map +1 -0
- package/dist/service-content-owned.js +329 -0
- package/dist/service-content-synthesizer.d.ts +90 -0
- package/dist/service-content-synthesizer.d.ts.map +1 -0
- package/dist/service-content-synthesizer.js +178 -0
- package/dist/service-content.d.ts +106 -0
- package/dist/service-content.d.ts.map +1 -0
- package/dist/service-content.js +388 -0
- package/dist/service-core.d.ts +194 -0
- package/dist/service-core.d.ts.map +1 -0
- package/dist/service-core.js +213 -0
- package/dist/service-delivery-formats.d.ts +58 -0
- package/dist/service-delivery-formats.d.ts.map +1 -0
- package/dist/service-delivery-formats.js +107 -0
- package/dist/service-destinations.d.ts +223 -0
- package/dist/service-destinations.d.ts.map +1 -0
- package/dist/service-destinations.js +310 -0
- package/dist/service-itinerary-history.d.ts +457 -0
- package/dist/service-itinerary-history.d.ts.map +1 -0
- package/dist/service-itinerary-history.js +135 -0
- package/dist/service-itinerary.d.ts +1149 -0
- package/dist/service-itinerary.d.ts.map +1 -0
- package/dist/service-itinerary.js +419 -0
- package/dist/service-media.d.ts +272 -0
- package/dist/service-media.d.ts.map +1 -0
- package/dist/service-media.js +320 -0
- package/dist/service-merchandising.d.ts +184 -0
- package/dist/service-merchandising.d.ts.map +1 -0
- package/dist/service-merchandising.js +181 -0
- package/dist/service-option-translations.d.ts +268 -0
- package/dist/service-option-translations.d.ts.map +1 -0
- package/dist/service-option-translations.js +300 -0
- package/dist/service-options.d.ts +181 -0
- package/dist/service-options.d.ts.map +1 -0
- package/dist/service-options.js +179 -0
- package/dist/service-product-destinations.d.ts +37 -0
- package/dist/service-product-destinations.d.ts.map +1 -0
- package/dist/service-product-destinations.js +94 -0
- package/dist/service-public.d.ts +664 -0
- package/dist/service-public.d.ts.map +1 -0
- package/dist/service-public.js +374 -0
- package/dist/service-taxonomy.d.ts +197 -0
- package/dist/service-taxonomy.d.ts.map +1 -0
- package/dist/service-taxonomy.js +221 -0
- package/dist/service.d.ts +3929 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +28 -0
- package/dist/tasks/brochure-printers.d.ts +31 -0
- package/dist/tasks/brochure-printers.d.ts.map +1 -0
- package/dist/tasks/brochure-printers.js +149 -0
- package/dist/tasks/brochure-templates.d.ts +36 -0
- package/dist/tasks/brochure-templates.d.ts.map +1 -0
- package/dist/tasks/brochure-templates.js +110 -0
- package/dist/tasks/brochures.d.ts +43 -0
- package/dist/tasks/brochures.d.ts.map +1 -0
- package/dist/tasks/brochures.js +72 -0
- package/dist/tasks/generate-pdf.d.ts +8 -0
- package/dist/tasks/generate-pdf.d.ts.map +1 -0
- package/dist/tasks/generate-pdf.js +106 -0
- package/dist/tasks/index.d.ts +5 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +4 -0
- package/dist/tasks/pdf-text.d.ts +2 -0
- package/dist/tasks/pdf-text.d.ts.map +1 -0
- package/dist/tasks/pdf-text.js +40 -0
- package/dist/tasks.d.ts +2 -0
- package/dist/tasks.d.ts.map +1 -0
- package/dist/tasks.js +1 -0
- package/dist/validation-catalog.d.ts +2 -0
- package/dist/validation-catalog.d.ts.map +1 -0
- package/dist/validation-catalog.js +3 -0
- package/dist/validation-config.d.ts +2 -0
- package/dist/validation-config.d.ts.map +1 -0
- package/dist/validation-config.js +3 -0
- package/dist/validation-content.d.ts +2 -0
- package/dist/validation-content.d.ts.map +1 -0
- package/dist/validation-content.js +3 -0
- package/dist/validation-core.d.ts +2 -0
- package/dist/validation-core.d.ts.map +1 -0
- package/dist/validation-core.js +3 -0
- package/dist/validation-public.d.ts +2 -0
- package/dist/validation-public.d.ts.map +1 -0
- package/dist/validation-public.js +3 -0
- package/dist/validation-shared.d.ts +2 -0
- package/dist/validation-shared.d.ts.map +1 -0
- package/dist/validation-shared.js +3 -0
- package/dist/validation.d.ts +2 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +3 -0
- package/package.json +204 -0
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owned-arm booking handler for the `products` vertical.
|
|
3
|
+
* agent-quality: file-size exception -- Product booking handler keeps quote, commit, cancel, and status behavior together until booking-engine handlers are split by operation.
|
|
4
|
+
*
|
|
5
|
+
* Per `docs/architecture/booking-journey-architecture.md` §6 +
|
|
6
|
+
* §10 Phase A. Composes:
|
|
7
|
+
*
|
|
8
|
+
* - The products vertical's existing pricing primitives
|
|
9
|
+
* (`products.sellAmountCents` / `sellCurrency`) for pricing
|
|
10
|
+
* basis. Per-pax / per-band pricing layered in Phase C+ via
|
|
11
|
+
* `product_pax_pricing_tiers`.
|
|
12
|
+
* - `getProductContent` + `buildProductDraftShape` for the journey
|
|
13
|
+
* wizard's step descriptor.
|
|
14
|
+
* - An injected `createBooking` function for the commit path
|
|
15
|
+
* — keeps the Inventory-owned Product handler from depending on
|
|
16
|
+
* `@voyant-travel/finance` (no workspace cycle).
|
|
17
|
+
*
|
|
18
|
+
* Phase A scope (deliberately narrow):
|
|
19
|
+
* - Price = product.sellAmountCents × pax_count, no taxes / addons /
|
|
20
|
+
* accommodation / vouchers.
|
|
21
|
+
* - Commit goes through the bridge into `bookingsCreate`'s input
|
|
22
|
+
* shape — products-only, no extras / accommodations / cruises / encrypted
|
|
23
|
+
* travel details / snapshot graph.
|
|
24
|
+
*
|
|
25
|
+
* Phase C+ extensions land on this same handler without re-architecting
|
|
26
|
+
* the dispatch.
|
|
27
|
+
*/
|
|
28
|
+
import { type AddonOffer, type BookingDraftShape, type OwnedBookingHandler, type OwnedHandlerContext, type PaxBandDependency, type PaxBandSpec, type ProductVariantOption, type TravelerFieldRequirement } from "@voyant-travel/catalog/booking-engine";
|
|
29
|
+
/**
|
|
30
|
+
* Subset of `bookingsCreate`'s input the bridge builds.
|
|
31
|
+
* Mirrors the schema in `service-booking-create.ts` — kept
|
|
32
|
+
* structural here so we don't pull a dependency into products.
|
|
33
|
+
*/
|
|
34
|
+
export interface BookingCreateBridgeInput {
|
|
35
|
+
productId: string;
|
|
36
|
+
optionId?: string | null;
|
|
37
|
+
slotId?: string | null;
|
|
38
|
+
bookingNumber: string;
|
|
39
|
+
personId?: string | null;
|
|
40
|
+
organizationId?: string | null;
|
|
41
|
+
contactFirstName?: string | null;
|
|
42
|
+
contactLastName?: string | null;
|
|
43
|
+
contactEmail?: string | null;
|
|
44
|
+
contactPhone?: string | null;
|
|
45
|
+
internalNotes?: string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Override the seed sellAmountCents the booking lands at. The owned
|
|
48
|
+
* commit passes this when the catalog booking-engine's promotion hook
|
|
49
|
+
* has discounted the quote — without it, customers would be charged
|
|
50
|
+
* the product's list price even with a successful promotion. Per
|
|
51
|
+
* docs/architecture/promotions-architecture.md §7.1.
|
|
52
|
+
*/
|
|
53
|
+
sellAmountCentsOverride?: number | null;
|
|
54
|
+
/**
|
|
55
|
+
* Status the booking lands in. When omitted, `@voyant-travel/finance`'s
|
|
56
|
+
* `createBooking` defaults to `"draft"`. Callers that compose bookings
|
|
57
|
+
* via the catalog booking engine (e.g. trips reserve, journey
|
|
58
|
+
* commit) typically want `"awaiting_payment"` so the booking shows in
|
|
59
|
+
* the operator's queue with a payable balance. The handler forwards
|
|
60
|
+
* whatever value is passed via `commit`'s `request.parameters.initialStatus`.
|
|
61
|
+
*/
|
|
62
|
+
initialStatus?: "draft" | "on_hold" | "awaiting_payment" | "confirmed" | "in_progress" | "completed" | "cancelled" | "expired";
|
|
63
|
+
travelers?: Array<{
|
|
64
|
+
firstName: string;
|
|
65
|
+
lastName: string;
|
|
66
|
+
email?: string | null;
|
|
67
|
+
phone?: string | null;
|
|
68
|
+
personId?: string | null;
|
|
69
|
+
participantType: "traveler" | "occupant" | "other";
|
|
70
|
+
travelerCategory?: "adult" | "child" | "infant" | "senior" | "other" | null;
|
|
71
|
+
isPrimary?: boolean | null;
|
|
72
|
+
}>;
|
|
73
|
+
paymentSchedules?: Array<{
|
|
74
|
+
scheduleType: "deposit" | "installment" | "balance" | "hold" | "other";
|
|
75
|
+
status: "pending" | "due" | "paid" | "waived" | "cancelled" | "expired";
|
|
76
|
+
dueDate: string;
|
|
77
|
+
currency: string;
|
|
78
|
+
amountCents: number;
|
|
79
|
+
notes?: string | null;
|
|
80
|
+
}>;
|
|
81
|
+
documentGeneration?: {
|
|
82
|
+
contractDocument: boolean;
|
|
83
|
+
invoiceDocument: boolean;
|
|
84
|
+
invoiceType: "invoice" | "proforma";
|
|
85
|
+
};
|
|
86
|
+
/** Suppress post-commit notifications (operator-only). */
|
|
87
|
+
suppressNotifications?: boolean;
|
|
88
|
+
/** List/quote price before a manual override (drives the override audit + reason check). */
|
|
89
|
+
catalogSellAmountCents?: number | null;
|
|
90
|
+
/** Manual operator price override — wins over the quote/promotion price. */
|
|
91
|
+
confirmedSellAmountCents?: number | null;
|
|
92
|
+
/** Required by booking-create when confirmed != catalog. */
|
|
93
|
+
priceOverrideReason?: string | null;
|
|
94
|
+
/**
|
|
95
|
+
* Gift / refund-credit voucher to redeem atomically inside the create
|
|
96
|
+
* transaction. booking-create re-validates status / expiry / balance.
|
|
97
|
+
*/
|
|
98
|
+
voucherRedemption?: {
|
|
99
|
+
voucherId: string;
|
|
100
|
+
amountCents: number;
|
|
101
|
+
};
|
|
102
|
+
taxLines?: Array<{
|
|
103
|
+
code?: string | null;
|
|
104
|
+
name: string;
|
|
105
|
+
jurisdiction?: string | null;
|
|
106
|
+
scope?: "included" | "excluded" | "withheld";
|
|
107
|
+
currency: string;
|
|
108
|
+
amountCents: number;
|
|
109
|
+
rateBasisPoints?: number | null;
|
|
110
|
+
includedInPrice?: boolean;
|
|
111
|
+
remittanceParty?: string | null;
|
|
112
|
+
sortOrder?: number;
|
|
113
|
+
}>;
|
|
114
|
+
itemLines?: Array<{
|
|
115
|
+
optionId?: string | null;
|
|
116
|
+
optionUnitId: string;
|
|
117
|
+
quantity: number;
|
|
118
|
+
title?: string | null;
|
|
119
|
+
description?: string | null;
|
|
120
|
+
unitSellAmountCents?: number | null;
|
|
121
|
+
totalSellAmountCents?: number | null;
|
|
122
|
+
}>;
|
|
123
|
+
extraLines?: Array<{
|
|
124
|
+
productExtraId: string;
|
|
125
|
+
name: string;
|
|
126
|
+
description?: string | null;
|
|
127
|
+
pricingMode?: string | null;
|
|
128
|
+
pricedPerPerson?: boolean | null;
|
|
129
|
+
quantity: number;
|
|
130
|
+
sellCurrency: string;
|
|
131
|
+
unitSellAmountCents?: number | null;
|
|
132
|
+
totalSellAmountCents?: number | null;
|
|
133
|
+
}>;
|
|
134
|
+
}
|
|
135
|
+
export interface BookingCreateBridgeResult {
|
|
136
|
+
status: "ok" | "product_not_found" | string;
|
|
137
|
+
bookingId?: string;
|
|
138
|
+
bookingNumber?: string;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Caller-supplied bridge to `bookingsCreate`. Templates wire
|
|
142
|
+
* this up — `(input, opts) => createBooking(db as PostgresJsDatabase, input, opts)`.
|
|
143
|
+
*/
|
|
144
|
+
export type BookingCreateBridge = (input: BookingCreateBridgeInput, options?: {
|
|
145
|
+
userId?: string;
|
|
146
|
+
}) => Promise<BookingCreateBridgeResult>;
|
|
147
|
+
export interface DraftLike {
|
|
148
|
+
configure?: {
|
|
149
|
+
pax?: Partial<Record<string, number>>;
|
|
150
|
+
departureSlotId?: string;
|
|
151
|
+
departureDate?: string;
|
|
152
|
+
departureTime?: string;
|
|
153
|
+
variantId?: string;
|
|
154
|
+
optionSelections?: Array<{
|
|
155
|
+
optionId: string;
|
|
156
|
+
optionName?: string;
|
|
157
|
+
optionUnitId?: string;
|
|
158
|
+
optionUnitName?: string;
|
|
159
|
+
quantity: number;
|
|
160
|
+
}>;
|
|
161
|
+
};
|
|
162
|
+
billing?: {
|
|
163
|
+
buyerType?: "B2C" | "B2B";
|
|
164
|
+
contact?: {
|
|
165
|
+
firstName?: string;
|
|
166
|
+
lastName?: string;
|
|
167
|
+
email?: string;
|
|
168
|
+
phone?: string;
|
|
169
|
+
};
|
|
170
|
+
address?: {
|
|
171
|
+
country?: string;
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
travelers?: Array<{
|
|
175
|
+
firstName: string;
|
|
176
|
+
lastName: string;
|
|
177
|
+
email?: string;
|
|
178
|
+
phone?: string;
|
|
179
|
+
band?: string;
|
|
180
|
+
}>;
|
|
181
|
+
paymentSchedules?: BookingCreateBridgeInput["paymentSchedules"];
|
|
182
|
+
documentGeneration?: BookingCreateBridgeInput["documentGeneration"];
|
|
183
|
+
suppressNotifications?: boolean;
|
|
184
|
+
priceOverride?: {
|
|
185
|
+
amountCents: number;
|
|
186
|
+
reason: string;
|
|
187
|
+
};
|
|
188
|
+
voucherRedemption?: {
|
|
189
|
+
voucherId: string;
|
|
190
|
+
amountCents: number;
|
|
191
|
+
};
|
|
192
|
+
addons?: Array<{
|
|
193
|
+
extraId: string;
|
|
194
|
+
quantity: number;
|
|
195
|
+
}>;
|
|
196
|
+
}
|
|
197
|
+
export interface BuildOwnedProductDraftShapeOptions {
|
|
198
|
+
/**
|
|
199
|
+
* Per-traveler field requirements pulled from
|
|
200
|
+
* `@voyant-travel/bookings/requirements` for this product. Caller-supplied
|
|
201
|
+
* so the Inventory package doesn't depend on booking requirements.
|
|
202
|
+
*/
|
|
203
|
+
travelerFields?: ReadonlyArray<TravelerFieldRequirement>;
|
|
204
|
+
/**
|
|
205
|
+
* Add-on catalog projected from extras. Caller-supplied so products
|
|
206
|
+
* doesn't depend on the Inventory/Bookings extras owner facades. When omitted,
|
|
207
|
+
* `showsAddons` is false.
|
|
208
|
+
*/
|
|
209
|
+
addonCatalog?: ReadonlyArray<AddonOffer>;
|
|
210
|
+
/**
|
|
211
|
+
* Product options / variants. These select `draft.configure.variantId`
|
|
212
|
+
* and are distinct from extras: one option changes the underlying
|
|
213
|
+
* booking configuration, while extras add optional line items.
|
|
214
|
+
*/
|
|
215
|
+
productOptions?: ReadonlyArray<ProductVariantOption>;
|
|
216
|
+
/**
|
|
217
|
+
* Traveler bands derived from the product's configured traveler types
|
|
218
|
+
* (e.g. pricing categories like "Adult" / "Child under 6"). When
|
|
219
|
+
* omitted or empty, falls back to the generic adult/child/infant
|
|
220
|
+
* defaults. `code` must stay aligned with the pricing resolver's
|
|
221
|
+
* traveler-category codes so per-band pricing keeps matching.
|
|
222
|
+
*/
|
|
223
|
+
paxBands?: ReadonlyArray<PaxBandSpec>;
|
|
224
|
+
/**
|
|
225
|
+
* Cross-band occupancy rules (e.g. "Child under 6 requires an Adult"),
|
|
226
|
+
* derived from the product's pricing-category dependencies. Codes must
|
|
227
|
+
* match the `paxBands` codes.
|
|
228
|
+
*/
|
|
229
|
+
paxBandDependencies?: ReadonlyArray<PaxBandDependency>;
|
|
230
|
+
}
|
|
231
|
+
export declare function buildOwnedProductDraftShape(options?: BuildOwnedProductDraftShapeOptions): BookingDraftShape;
|
|
232
|
+
/** A per-unit price within a resolved option price rule, returned by
|
|
233
|
+
* `loadResolvedOptionPrice`. The handler matches `travelerCategory`
|
|
234
|
+
* to the draft's pax-band codes ("adult" / "child" / "infant" /
|
|
235
|
+
* "senior") to compute per-band totals. Units that don't map to a
|
|
236
|
+
* band — or whose band has zero count — are dropped. */
|
|
237
|
+
export interface ResolvedUnitPrice {
|
|
238
|
+
unitId: string;
|
|
239
|
+
unitType: "person" | "room" | "vehicle" | "service" | "group" | "other" | string;
|
|
240
|
+
travelerCategory: "adult" | "child" | "infant" | "senior" | null;
|
|
241
|
+
sellAmountCents: number | null;
|
|
242
|
+
}
|
|
243
|
+
/** Output of `loadResolvedOptionPrice`. The handler prefers
|
|
244
|
+
* `unitPrices` (per-band pricing) when present and any unit matches a
|
|
245
|
+
* pax band; otherwise falls back to `baseSellAmountCents × paxCount`
|
|
246
|
+
* for per-booking rules; otherwise back to `product.sellAmountCents`. */
|
|
247
|
+
export interface ResolvedOptionPrice {
|
|
248
|
+
baseSellAmountCents: number | null;
|
|
249
|
+
unitPrices: ReadonlyArray<ResolvedUnitPrice>;
|
|
250
|
+
}
|
|
251
|
+
/** A resolved tax-rate decision — resolved from `tax_classes` ×
|
|
252
|
+
* `tax_regimes` × buyer country at quote time. */
|
|
253
|
+
export interface ResolvedTaxRate {
|
|
254
|
+
/** Stable code (e.g. "vat-ro-19", "exempt-art311"). */
|
|
255
|
+
code: string;
|
|
256
|
+
/** Display label for the breakdown. */
|
|
257
|
+
label: string;
|
|
258
|
+
/** Rate as a fraction (0..1). 0 means exempt / zero-rated. */
|
|
259
|
+
rate: number;
|
|
260
|
+
/** Whether the configured product price already includes this tax. */
|
|
261
|
+
priceMode?: "inclusive" | "exclusive";
|
|
262
|
+
}
|
|
263
|
+
/** Caller-supplied loaders for descriptor enrichment. Each is
|
|
264
|
+
* optional — when omitted the handler returns the default shape.
|
|
265
|
+
* Templates wire these to the modules they have on hand
|
|
266
|
+
* (booking requirements, Inventory/Bookings extras, finance). */
|
|
267
|
+
export interface OwnedProductsShapeLoaders {
|
|
268
|
+
/**
|
|
269
|
+
* Resolve per-traveler field requirements from
|
|
270
|
+
* @voyant-travel/bookings/requirements. Called per-quote so the descriptor
|
|
271
|
+
* reflects current configuration.
|
|
272
|
+
*/
|
|
273
|
+
loadTravelerFields?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<TravelerFieldRequirement>>;
|
|
274
|
+
/**
|
|
275
|
+
* Resolve the addon catalog for the product (typically a projection
|
|
276
|
+
* over `extras` + `option_extra_configs`). Caller-supplied to keep
|
|
277
|
+
* the Inventory package free of an extras-owner dependency.
|
|
278
|
+
*/
|
|
279
|
+
loadAddonCatalog?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<AddonOffer>>;
|
|
280
|
+
/**
|
|
281
|
+
* Resolve product options / variants from the owning products module.
|
|
282
|
+
* Optional for tests and deployments that do not expose option
|
|
283
|
+
* variants in the booking flow.
|
|
284
|
+
*/
|
|
285
|
+
loadProductOptions?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<ProductVariantOption>>;
|
|
286
|
+
/**
|
|
287
|
+
* Resolve the product's configured traveler types as pax bands
|
|
288
|
+
* (e.g. from Commerce pricing categories). Caller-supplied
|
|
289
|
+
* so the journey's Configure step offers exactly the traveler types
|
|
290
|
+
* the product is priced for ("Adult", "Child under 6", …) instead of
|
|
291
|
+
* the generic adult/child/infant defaults. Returns undefined/empty to
|
|
292
|
+
* fall back to the defaults.
|
|
293
|
+
*/
|
|
294
|
+
loadPaxBands?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<PaxBandSpec> | undefined>;
|
|
295
|
+
/**
|
|
296
|
+
* Resolve cross-band occupancy rules (e.g. "Child requires an Adult")
|
|
297
|
+
* from the product's pricing-category dependencies. Caller-supplied;
|
|
298
|
+
* codes must match `loadPaxBands`. Returns undefined/empty when the
|
|
299
|
+
* product has no dependency rules.
|
|
300
|
+
*/
|
|
301
|
+
loadPaxBandDependencies?: (ctx: OwnedHandlerContext, productId: string) => Promise<ReadonlyArray<PaxBandDependency> | undefined>;
|
|
302
|
+
/**
|
|
303
|
+
* Resolve the tax rate for a given (product, buyer country) pair.
|
|
304
|
+
* Templates wire this to a function that reads
|
|
305
|
+
* `products.tax_class_id`, `tax_classes.default_regime_id`, and
|
|
306
|
+
* `tax_regimes.rate_percent`. Returns null when tax can't be
|
|
307
|
+
* resolved — the engine renders the breakdown without a tax line.
|
|
308
|
+
*
|
|
309
|
+
* Per booking-journey-architecture §9.
|
|
310
|
+
*/
|
|
311
|
+
loadTaxRate?: (ctx: OwnedHandlerContext, args: {
|
|
312
|
+
productId: string;
|
|
313
|
+
buyerCountry?: string;
|
|
314
|
+
buyerType?: "B2C" | "B2B";
|
|
315
|
+
}) => Promise<ResolvedTaxRate | null>;
|
|
316
|
+
/**
|
|
317
|
+
* Resolve the option price rule for a given (product, option, date)
|
|
318
|
+
* — typically backed by Commerce's
|
|
319
|
+
* `resolveOptionPriceRulesForDate` plus a join into per-unit prices.
|
|
320
|
+
* Returns null when no rule applies or the resolver can't run; the
|
|
321
|
+
* handler then falls back to `product.sellAmountCents × pax`.
|
|
322
|
+
*
|
|
323
|
+
* Caller-supplied so Inventory does not import
|
|
324
|
+
* `@voyant-travel/commerce` (the dependency direction is commerce →
|
|
325
|
+
* inventory, not the reverse).
|
|
326
|
+
*/
|
|
327
|
+
loadResolvedOptionPrice?: (ctx: OwnedHandlerContext, args: {
|
|
328
|
+
productId: string;
|
|
329
|
+
optionId: string;
|
|
330
|
+
/** ISO yyyy-mm-dd in the slot's local timezone. */
|
|
331
|
+
date: string;
|
|
332
|
+
catalogId?: string;
|
|
333
|
+
}) => Promise<ResolvedOptionPrice | null>;
|
|
334
|
+
/**
|
|
335
|
+
* Look up the local date of a departure slot (`availability_slots`).
|
|
336
|
+
* Caller-supplied so the Inventory package does not import
|
|
337
|
+
* `@voyant-travel/operations`. Returns null when the slot is missing.
|
|
338
|
+
*
|
|
339
|
+
* Used together with `loadResolvedOptionPrice` to convert a draft's
|
|
340
|
+
* `departureSlotId` into a date the resolver can match against.
|
|
341
|
+
*/
|
|
342
|
+
loadSlotDate?: (ctx: OwnedHandlerContext, slotId: string) => Promise<string | null>;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Caller-supplied availability-hold bridge — keeps the products
|
|
346
|
+
* package free of an `@voyant-travel/operations` dependency. When
|
|
347
|
+
* wired, the handler's `placeHold/extendHold/releaseHold` route
|
|
348
|
+
* through `availability_holds` (real inventory locks). When
|
|
349
|
+
* omitted, the handler falls back to stamping no-ops.
|
|
350
|
+
*/
|
|
351
|
+
export interface AvailabilityHoldBridge {
|
|
352
|
+
place: (input: {
|
|
353
|
+
draftId: string;
|
|
354
|
+
productId: string;
|
|
355
|
+
slotId: string;
|
|
356
|
+
paxCount: number;
|
|
357
|
+
ttlMs: number;
|
|
358
|
+
holdToken?: string;
|
|
359
|
+
}) => Promise<{
|
|
360
|
+
status: "ok";
|
|
361
|
+
holdToken: string;
|
|
362
|
+
expiresAt: Date;
|
|
363
|
+
} | {
|
|
364
|
+
status: "slot_not_found";
|
|
365
|
+
} | {
|
|
366
|
+
status: "insufficient_capacity";
|
|
367
|
+
remaining: number;
|
|
368
|
+
needed: number;
|
|
369
|
+
}>;
|
|
370
|
+
extend: (input: {
|
|
371
|
+
holdToken: string;
|
|
372
|
+
ttlMs: number;
|
|
373
|
+
}) => Promise<{
|
|
374
|
+
status: "ok";
|
|
375
|
+
expiresAt: Date;
|
|
376
|
+
} | {
|
|
377
|
+
status: "not_found";
|
|
378
|
+
}>;
|
|
379
|
+
release: (holdToken: string) => Promise<void>;
|
|
380
|
+
}
|
|
381
|
+
export interface CreateProductsBookingHandlerOptions extends OwnedProductsShapeLoaders {
|
|
382
|
+
/**
|
|
383
|
+
* Caller-supplied bridge to `bookingsCreate`. Wired by the
|
|
384
|
+
* template at boot, since Inventory does not import
|
|
385
|
+
* `@voyant-travel/finance`.
|
|
386
|
+
*/
|
|
387
|
+
createBooking: BookingCreateBridge;
|
|
388
|
+
/**
|
|
389
|
+
* Generator for booking numbers. Defaults to a timestamp-based
|
|
390
|
+
* value if not supplied. Templates that have a sequence service
|
|
391
|
+
* (operator: numbering plugin) override.
|
|
392
|
+
*/
|
|
393
|
+
generateBookingNumber?: () => string;
|
|
394
|
+
/**
|
|
395
|
+
* Optional inventory-hold bridge. When wired, `placeHold`
|
|
396
|
+
* decrements `availability_slots.remainingPax` against the
|
|
397
|
+
* draft's chosen slot; `releaseHold` restores it. When omitted,
|
|
398
|
+
* the handler returns a stamping token without touching
|
|
399
|
+
* inventory.
|
|
400
|
+
*/
|
|
401
|
+
holds?: AvailabilityHoldBridge;
|
|
402
|
+
}
|
|
403
|
+
export declare function createProductsBookingHandler(options: CreateProductsBookingHandlerOptions): OwnedBookingHandler;
|
|
404
|
+
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/booking-engine/handler.ts"],"names":[],"mappings":"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"}
|