@voyantjs/bookings 0.10.0 → 0.12.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/dist/service.d.ts CHANGED
@@ -2,18 +2,20 @@ import type { EventBus } from "@voyantjs/core";
2
2
  import type { PostgresJsDatabase } from "drizzle-orm/postgres-js";
3
3
  import type { z } from "zod";
4
4
  import { type BookingStatus } from "./state-machine.js";
5
- import type { bookingListQuerySchema, cancelBookingSchema, confirmBookingSchema, convertProductSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingItemParticipantSchema, insertBookingItemSchema, insertBookingNoteSchema, insertBookingSchema, insertTravelerRecordSchema, insertTravelerSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, updateBookingFulfillmentSchema, updateBookingItemSchema, updateBookingSchema, updateBookingStatusSchema, updateTravelerRecordSchema, updateTravelerSchema } from "./validation.js";
5
+ import type { bookingListQuerySchema, cancelBookingSchema, completeBookingSchema, confirmBookingSchema, convertProductSchema, expireBookingSchema, expireStaleBookingsSchema, extendBookingHoldSchema, insertBookingDocumentSchema, insertBookingFulfillmentSchema, insertBookingItemParticipantSchema, insertBookingItemSchema, insertBookingNoteSchema, insertBookingSchema, insertTravelerRecordSchema, insertTravelerSchema, overrideBookingStatusSchema, recordBookingRedemptionSchema, reserveBookingFromTransactionSchema, reserveBookingSchema, startBookingSchema, updateBookingFulfillmentSchema, updateBookingItemSchema, updateBookingSchema, updateTravelerRecordSchema, updateTravelerSchema } from "./validation.js";
6
6
  type BookingListQuery = z.infer<typeof bookingListQuerySchema>;
7
7
  type ConvertProductInput = z.infer<typeof convertProductSchema>;
8
8
  type CreateBookingInput = z.infer<typeof insertBookingSchema>;
9
9
  type UpdateBookingInput = z.infer<typeof updateBookingSchema>;
10
- type UpdateBookingStatusInput = z.infer<typeof updateBookingStatusSchema>;
11
10
  type ReserveBookingInput = z.infer<typeof reserveBookingSchema>;
12
11
  type ExtendBookingHoldInput = z.infer<typeof extendBookingHoldSchema>;
13
12
  type ConfirmBookingInput = z.infer<typeof confirmBookingSchema>;
14
13
  type CancelBookingInput = z.infer<typeof cancelBookingSchema>;
15
14
  type ExpireBookingInput = z.infer<typeof expireBookingSchema>;
16
15
  type ExpireStaleBookingsInput = z.infer<typeof expireStaleBookingsSchema>;
16
+ type StartBookingInput = z.infer<typeof startBookingSchema>;
17
+ type CompleteBookingInput = z.infer<typeof completeBookingSchema>;
18
+ type OverrideBookingStatusInput = z.infer<typeof overrideBookingStatusSchema>;
17
19
  type CreateTravelerInput = z.infer<typeof insertTravelerSchema>;
18
20
  type UpdateTravelerInput = z.infer<typeof updateTravelerSchema>;
19
21
  type CreateTravelerRecordInput = z.infer<typeof insertTravelerRecordSchema>;
@@ -113,6 +115,31 @@ export interface BookingExpiredEvent {
113
115
  cause: "route" | "sweep";
114
116
  actorId: string | null;
115
117
  }
118
+ /** Payload for `booking.started` — confirmed → in_progress. */
119
+ export interface BookingStartedEvent {
120
+ bookingId: string;
121
+ bookingNumber: string;
122
+ actorId: string | null;
123
+ }
124
+ /** Payload for `booking.completed` — in_progress → completed. */
125
+ export interface BookingCompletedEvent {
126
+ bookingId: string;
127
+ bookingNumber: string;
128
+ actorId: string | null;
129
+ }
130
+ /**
131
+ * Payload for `booking.status_overridden`. Fires when an admin bypasses the
132
+ * transition graph. Subscribers should treat this as a privileged audit signal
133
+ * distinct from the normal lifecycle events — e.g. compliance dashboards.
134
+ */
135
+ export interface BookingStatusOverriddenEvent {
136
+ bookingId: string;
137
+ bookingNumber: string;
138
+ fromStatus: BookingStatus;
139
+ toStatus: BookingStatus;
140
+ reason: string;
141
+ actorId: string | null;
142
+ }
116
143
  export interface BookingAggregates {
117
144
  /** Total bookings across all statuses in range. */
118
145
  total: number;
@@ -1053,9 +1080,6 @@ export declare const bookingsService: {
1053
1080
  deleteBooking(db: PostgresJsDatabase, id: string): Promise<{
1054
1081
  id: string;
1055
1082
  } | null>;
1056
- updateBookingStatus(db: PostgresJsDatabase, id: string, data: UpdateBookingStatusInput, userId?: string, runtime?: BookingServiceRuntime): Promise<{
1057
- status: Exclude<string, "ok">;
1058
- }>;
1059
1083
  confirmBooking(db: PostgresJsDatabase, id: string, data: ConfirmBookingInput, userId?: string, runtime?: BookingServiceRuntime): Promise<{
1060
1084
  status: "ok";
1061
1085
  booking: {
@@ -1244,6 +1268,149 @@ export declare const bookingsService: {
1244
1268
  status: Exclude<string, "ok">;
1245
1269
  booking?: undefined;
1246
1270
  }>;
1271
+ startBooking(db: PostgresJsDatabase, id: string, data: StartBookingInput, userId?: string, runtime?: BookingServiceRuntime): Promise<{
1272
+ status: "ok";
1273
+ booking: {
1274
+ id: string;
1275
+ bookingNumber: string;
1276
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
1277
+ personId: string | null;
1278
+ organizationId: string | null;
1279
+ sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1280
+ externalBookingRef: string | null;
1281
+ communicationLanguage: string | null;
1282
+ contactFirstName: string | null;
1283
+ contactLastName: string | null;
1284
+ contactEmail: string | null;
1285
+ contactPhone: string | null;
1286
+ contactPreferredLanguage: string | null;
1287
+ contactCountry: string | null;
1288
+ contactRegion: string | null;
1289
+ contactCity: string | null;
1290
+ contactAddressLine1: string | null;
1291
+ contactPostalCode: string | null;
1292
+ sellCurrency: string;
1293
+ baseCurrency: string | null;
1294
+ fxRateSetId: string | null;
1295
+ sellAmountCents: number | null;
1296
+ baseSellAmountCents: number | null;
1297
+ costAmountCents: number | null;
1298
+ baseCostAmountCents: number | null;
1299
+ marginPercent: number | null;
1300
+ startDate: string | null;
1301
+ endDate: string | null;
1302
+ pax: number | null;
1303
+ internalNotes: string | null;
1304
+ holdExpiresAt: Date | null;
1305
+ confirmedAt: Date | null;
1306
+ expiredAt: Date | null;
1307
+ cancelledAt: Date | null;
1308
+ completedAt: Date | null;
1309
+ redeemedAt: Date | null;
1310
+ createdAt: Date;
1311
+ updatedAt: Date;
1312
+ } | null;
1313
+ } | {
1314
+ status: Exclude<string, "ok">;
1315
+ }>;
1316
+ completeBooking(db: PostgresJsDatabase, id: string, data: CompleteBookingInput, userId?: string, runtime?: BookingServiceRuntime): Promise<{
1317
+ status: "ok";
1318
+ booking: {
1319
+ id: string;
1320
+ bookingNumber: string;
1321
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
1322
+ personId: string | null;
1323
+ organizationId: string | null;
1324
+ sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1325
+ externalBookingRef: string | null;
1326
+ communicationLanguage: string | null;
1327
+ contactFirstName: string | null;
1328
+ contactLastName: string | null;
1329
+ contactEmail: string | null;
1330
+ contactPhone: string | null;
1331
+ contactPreferredLanguage: string | null;
1332
+ contactCountry: string | null;
1333
+ contactRegion: string | null;
1334
+ contactCity: string | null;
1335
+ contactAddressLine1: string | null;
1336
+ contactPostalCode: string | null;
1337
+ sellCurrency: string;
1338
+ baseCurrency: string | null;
1339
+ fxRateSetId: string | null;
1340
+ sellAmountCents: number | null;
1341
+ baseSellAmountCents: number | null;
1342
+ costAmountCents: number | null;
1343
+ baseCostAmountCents: number | null;
1344
+ marginPercent: number | null;
1345
+ startDate: string | null;
1346
+ endDate: string | null;
1347
+ pax: number | null;
1348
+ internalNotes: string | null;
1349
+ holdExpiresAt: Date | null;
1350
+ confirmedAt: Date | null;
1351
+ expiredAt: Date | null;
1352
+ cancelledAt: Date | null;
1353
+ completedAt: Date | null;
1354
+ redeemedAt: Date | null;
1355
+ createdAt: Date;
1356
+ updatedAt: Date;
1357
+ } | null;
1358
+ } | {
1359
+ status: Exclude<string, "ok">;
1360
+ }>;
1361
+ /**
1362
+ * Admin-only force: bypasses the transition graph. Updates the booking row
1363
+ * only — does NOT cascade to items, allocations, or fulfillments. If the
1364
+ * operator needs cascaded behavior (e.g. release allocations), they should
1365
+ * call the verb-specific method instead. The override is for data
1366
+ * correction; misuse leaves child state inconsistent with the parent.
1367
+ */
1368
+ overrideBookingStatus(db: PostgresJsDatabase, id: string, data: OverrideBookingStatusInput, userId?: string, runtime?: BookingServiceRuntime): Promise<{
1369
+ status: "ok";
1370
+ booking: {
1371
+ id: string;
1372
+ bookingNumber: string;
1373
+ status: "cancelled" | "draft" | "on_hold" | "confirmed" | "in_progress" | "completed" | "expired";
1374
+ personId: string | null;
1375
+ organizationId: string | null;
1376
+ sourceType: "internal" | "reseller" | "direct" | "manual" | "affiliate" | "ota" | "api_partner";
1377
+ externalBookingRef: string | null;
1378
+ communicationLanguage: string | null;
1379
+ contactFirstName: string | null;
1380
+ contactLastName: string | null;
1381
+ contactEmail: string | null;
1382
+ contactPhone: string | null;
1383
+ contactPreferredLanguage: string | null;
1384
+ contactCountry: string | null;
1385
+ contactRegion: string | null;
1386
+ contactCity: string | null;
1387
+ contactAddressLine1: string | null;
1388
+ contactPostalCode: string | null;
1389
+ sellCurrency: string;
1390
+ baseCurrency: string | null;
1391
+ fxRateSetId: string | null;
1392
+ sellAmountCents: number | null;
1393
+ baseSellAmountCents: number | null;
1394
+ costAmountCents: number | null;
1395
+ baseCostAmountCents: number | null;
1396
+ marginPercent: number | null;
1397
+ startDate: string | null;
1398
+ endDate: string | null;
1399
+ pax: number | null;
1400
+ internalNotes: string | null;
1401
+ holdExpiresAt: Date | null;
1402
+ confirmedAt: Date | null;
1403
+ expiredAt: Date | null;
1404
+ cancelledAt: Date | null;
1405
+ completedAt: Date | null;
1406
+ redeemedAt: Date | null;
1407
+ createdAt: Date;
1408
+ updatedAt: Date;
1409
+ } | null;
1410
+ } | {
1411
+ status: Exclude<string, "ok">;
1412
+ booking?: undefined;
1413
+ }>;
1247
1414
  listTravelerRecords(db: PostgresJsDatabase, bookingId: string): Omit<import("drizzle-orm/pg-core").PgSelectBase<"booking_travelers", {
1248
1415
  id: import("drizzle-orm/pg-core").PgColumn<{
1249
1416
  name: string;
@@ -4509,14 +4676,14 @@ export declare const bookingsService: {
4509
4676
  tableName: "booking_activity_log";
4510
4677
  dataType: "string";
4511
4678
  columnType: "PgEnumColumn";
4512
- data: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "hold_extended" | "hold_expired" | "status_change" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
4679
+ data: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "booking_started" | "booking_completed" | "hold_extended" | "hold_expired" | "status_change" | "status_overridden" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
4513
4680
  driverParam: string;
4514
4681
  notNull: true;
4515
4682
  hasDefault: false;
4516
4683
  isPrimaryKey: false;
4517
4684
  isAutoincrement: false;
4518
4685
  hasRuntimeDefault: false;
4519
- enumValues: ["booking_created", "booking_reserved", "booking_converted", "booking_confirmed", "hold_extended", "hold_expired", "status_change", "item_update", "allocation_released", "fulfillment_issued", "fulfillment_updated", "redemption_recorded", "supplier_update", "passenger_update", "note_added"];
4686
+ enumValues: ["booking_created", "booking_reserved", "booking_converted", "booking_confirmed", "booking_started", "booking_completed", "hold_extended", "hold_expired", "status_change", "status_overridden", "item_update", "allocation_released", "fulfillment_issued", "fulfillment_updated", "redemption_recorded", "supplier_update", "passenger_update", "note_added"];
4520
4687
  baseColumn: never;
4521
4688
  identity: undefined;
4522
4689
  generated: undefined;
@@ -4578,7 +4745,7 @@ export declare const bookingsService: {
4578
4745
  id: string;
4579
4746
  bookingId: string;
4580
4747
  actorId: string | null;
4581
- activityType: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "hold_extended" | "hold_expired" | "status_change" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
4748
+ activityType: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "booking_started" | "booking_completed" | "hold_extended" | "hold_expired" | "status_change" | "status_overridden" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
4582
4749
  description: string;
4583
4750
  metadata: Record<string, unknown> | null;
4584
4751
  createdAt: Date;
@@ -4639,14 +4806,14 @@ export declare const bookingsService: {
4639
4806
  tableName: "booking_activity_log";
4640
4807
  dataType: "string";
4641
4808
  columnType: "PgEnumColumn";
4642
- data: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "hold_extended" | "hold_expired" | "status_change" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
4809
+ data: "booking_created" | "booking_reserved" | "booking_converted" | "booking_confirmed" | "booking_started" | "booking_completed" | "hold_extended" | "hold_expired" | "status_change" | "status_overridden" | "item_update" | "allocation_released" | "fulfillment_issued" | "fulfillment_updated" | "redemption_recorded" | "supplier_update" | "passenger_update" | "note_added";
4643
4810
  driverParam: string;
4644
4811
  notNull: true;
4645
4812
  hasDefault: false;
4646
4813
  isPrimaryKey: false;
4647
4814
  isAutoincrement: false;
4648
4815
  hasRuntimeDefault: false;
4649
- enumValues: ["booking_created", "booking_reserved", "booking_converted", "booking_confirmed", "hold_extended", "hold_expired", "status_change", "item_update", "allocation_released", "fulfillment_issued", "fulfillment_updated", "redemption_recorded", "supplier_update", "passenger_update", "note_added"];
4816
+ enumValues: ["booking_created", "booking_reserved", "booking_converted", "booking_confirmed", "booking_started", "booking_completed", "hold_extended", "hold_expired", "status_change", "status_overridden", "item_update", "allocation_released", "fulfillment_issued", "fulfillment_updated", "redemption_recorded", "supplier_update", "passenger_update", "note_added"];
4650
4817
  baseColumn: never;
4651
4818
  identity: undefined;
4652
4819
  generated: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/dist/service.js CHANGED
@@ -4,7 +4,7 @@ import { exchangeRatesRef } from "./markets-ref.js";
4
4
  import { bookingItemProductDetailsRef, bookingProductDetailsRef, optionUnitsRef, productDayServicesRef, productDaysRef, productItinerariesRef, productOptionsRef, productsRef, productTicketSettingsRef, } from "./products-ref.js";
5
5
  import { bookingActivityLog, bookingAllocations, bookingDocuments, bookingFulfillments, bookingItems, bookingItemTravelers, bookingNotes, bookingRedemptionEvents, bookingStaffAssignments, bookingSupplierStatuses, bookings, bookingTravelers, } from "./schema.js";
6
6
  import { cleanupGroupOnBookingCancelled } from "./service-groups.js";
7
- import { BookingTransitionError, canTransitionBooking, transitionBooking, } from "./state-machine.js";
7
+ import { canTransitionBooking, transitionBooking } from "./state-machine.js";
8
8
  import { bookingTransactionDetailsRef, offerItemParticipantsRef, offerItemsRef, offerParticipantsRef, offerStaffAssignmentsRef, offersRef, orderItemParticipantsRef, orderItemsRef, orderParticipantsRef, orderStaffAssignmentsRef, ordersRef, } from "./transactions-ref.js";
9
9
  const travelerParticipantTypes = ["traveler", "occupant"];
10
10
  class BookingServiceError extends Error {
@@ -1550,65 +1550,6 @@ export const bookingsService = {
1550
1550
  .returning({ id: bookings.id });
1551
1551
  return row ?? null;
1552
1552
  },
1553
- async updateBookingStatus(db, id, data, userId, runtime = {}) {
1554
- const [current] = await db
1555
- .select({ id: bookings.id, status: bookings.status })
1556
- .from(bookings)
1557
- .where(eq(bookings.id, id))
1558
- .limit(1);
1559
- if (!current) {
1560
- return { status: "not_found" };
1561
- }
1562
- if (current.status === "on_hold" && data.status === "confirmed") {
1563
- return bookingsService.confirmBooking(db, id, { note: data.note }, userId, runtime);
1564
- }
1565
- if (current.status === "on_hold" && data.status === "expired") {
1566
- return bookingsService.expireBooking(db, id, { note: data.note }, userId, runtime);
1567
- }
1568
- if (data.status === "cancelled") {
1569
- return bookingsService.cancelBooking(db, id, { note: data.note }, userId, runtime);
1570
- }
1571
- // `on_hold` is only reachable through `reserveBooking`, never via direct status PATCH.
1572
- if (data.status === "on_hold") {
1573
- return { status: "invalid_transition" };
1574
- }
1575
- let patch;
1576
- try {
1577
- patch = transitionBooking(current.status, data.status);
1578
- }
1579
- catch (error) {
1580
- if (error instanceof BookingTransitionError) {
1581
- return { status: "invalid_transition" };
1582
- }
1583
- throw error;
1584
- }
1585
- const [row] = await db
1586
- .update(bookings)
1587
- .set({
1588
- ...patch,
1589
- updatedAt: new Date(),
1590
- })
1591
- .where(eq(bookings.id, id))
1592
- .returning();
1593
- await db.insert(bookingActivityLog).values({
1594
- bookingId: id,
1595
- actorId: userId ?? "system",
1596
- activityType: "status_change",
1597
- description: `Status changed from ${current.status} to ${data.status}`,
1598
- metadata: { oldStatus: current.status, newStatus: data.status },
1599
- });
1600
- if (data.note) {
1601
- await db.insert(bookingNotes).values({
1602
- bookingId: id,
1603
- authorId: userId ?? "system",
1604
- content: data.note,
1605
- });
1606
- }
1607
- if (data.status === "confirmed") {
1608
- await autoIssueFulfillmentsForBooking(db, id, userId);
1609
- }
1610
- return { status: "ok", booking: row ?? null };
1611
- },
1612
1553
  async confirmBooking(db, id, data, userId, runtime = {}) {
1613
1554
  try {
1614
1555
  const result = await db.transaction(async (tx) => {
@@ -1919,6 +1860,198 @@ export const bookingsService = {
1919
1860
  throw error;
1920
1861
  }
1921
1862
  },
1863
+ async startBooking(db, id, data, userId, runtime = {}) {
1864
+ try {
1865
+ const result = await db.transaction(async (tx) => {
1866
+ const rows = await tx.execute(sql `SELECT id, booking_number, status
1867
+ FROM ${bookings}
1868
+ WHERE ${bookings.id} = ${id}
1869
+ FOR UPDATE`);
1870
+ const booking = rows[0];
1871
+ if (!booking) {
1872
+ throw new BookingServiceError("not_found");
1873
+ }
1874
+ if (!canTransitionBooking(booking.status, "in_progress")) {
1875
+ throw new BookingServiceError("invalid_transition");
1876
+ }
1877
+ const patch = transitionBooking(booking.status, "in_progress");
1878
+ const [row] = await tx
1879
+ .update(bookings)
1880
+ .set({
1881
+ ...patch,
1882
+ updatedAt: new Date(),
1883
+ })
1884
+ .where(eq(bookings.id, id))
1885
+ .returning();
1886
+ await tx.insert(bookingActivityLog).values({
1887
+ bookingId: id,
1888
+ actorId: userId ?? "system",
1889
+ activityType: "booking_started",
1890
+ description: `Booking ${booking.booking_number} started`,
1891
+ });
1892
+ if (data.note) {
1893
+ await tx.insert(bookingNotes).values({
1894
+ bookingId: id,
1895
+ authorId: userId ?? "system",
1896
+ content: data.note,
1897
+ });
1898
+ }
1899
+ return { status: "ok", booking: row ?? null };
1900
+ });
1901
+ if (result.status === "ok" && result.booking) {
1902
+ await runtime.eventBus?.emit("booking.started", {
1903
+ bookingId: result.booking.id,
1904
+ bookingNumber: result.booking.bookingNumber,
1905
+ actorId: userId ?? null,
1906
+ }, { category: "domain", source: "service" });
1907
+ }
1908
+ return result;
1909
+ }
1910
+ catch (error) {
1911
+ if (error instanceof BookingServiceError) {
1912
+ return { status: error.code };
1913
+ }
1914
+ throw error;
1915
+ }
1916
+ },
1917
+ async completeBooking(db, id, data, userId, runtime = {}) {
1918
+ try {
1919
+ const result = await db.transaction(async (tx) => {
1920
+ const rows = await tx.execute(sql `SELECT id, booking_number, status
1921
+ FROM ${bookings}
1922
+ WHERE ${bookings.id} = ${id}
1923
+ FOR UPDATE`);
1924
+ const booking = rows[0];
1925
+ if (!booking) {
1926
+ throw new BookingServiceError("not_found");
1927
+ }
1928
+ if (!canTransitionBooking(booking.status, "completed")) {
1929
+ throw new BookingServiceError("invalid_transition");
1930
+ }
1931
+ const patch = transitionBooking(booking.status, "completed");
1932
+ await tx
1933
+ .update(bookingAllocations)
1934
+ .set({ status: "fulfilled", updatedAt: new Date() })
1935
+ .where(and(eq(bookingAllocations.bookingId, id), eq(bookingAllocations.status, "confirmed")));
1936
+ await tx
1937
+ .update(bookingItems)
1938
+ .set({ status: "fulfilled", updatedAt: new Date() })
1939
+ .where(and(eq(bookingItems.bookingId, id), eq(bookingItems.status, "confirmed")));
1940
+ const [row] = await tx
1941
+ .update(bookings)
1942
+ .set({
1943
+ ...patch,
1944
+ updatedAt: new Date(),
1945
+ })
1946
+ .where(eq(bookings.id, id))
1947
+ .returning();
1948
+ await tx.insert(bookingActivityLog).values({
1949
+ bookingId: id,
1950
+ actorId: userId ?? "system",
1951
+ activityType: "booking_completed",
1952
+ description: `Booking ${booking.booking_number} completed`,
1953
+ });
1954
+ if (data.note) {
1955
+ await tx.insert(bookingNotes).values({
1956
+ bookingId: id,
1957
+ authorId: userId ?? "system",
1958
+ content: data.note,
1959
+ });
1960
+ }
1961
+ return { status: "ok", booking: row ?? null };
1962
+ });
1963
+ if (result.status === "ok" && result.booking) {
1964
+ await runtime.eventBus?.emit("booking.completed", {
1965
+ bookingId: result.booking.id,
1966
+ bookingNumber: result.booking.bookingNumber,
1967
+ actorId: userId ?? null,
1968
+ }, { category: "domain", source: "service" });
1969
+ }
1970
+ return result;
1971
+ }
1972
+ catch (error) {
1973
+ if (error instanceof BookingServiceError) {
1974
+ return { status: error.code };
1975
+ }
1976
+ throw error;
1977
+ }
1978
+ },
1979
+ /**
1980
+ * Admin-only force: bypasses the transition graph. Updates the booking row
1981
+ * only — does NOT cascade to items, allocations, or fulfillments. If the
1982
+ * operator needs cascaded behavior (e.g. release allocations), they should
1983
+ * call the verb-specific method instead. The override is for data
1984
+ * correction; misuse leaves child state inconsistent with the parent.
1985
+ */
1986
+ async overrideBookingStatus(db, id, data, userId, runtime = {}) {
1987
+ try {
1988
+ const result = await db.transaction(async (tx) => {
1989
+ const rows = await tx.execute(sql `SELECT id, booking_number, status
1990
+ FROM ${bookings}
1991
+ WHERE ${bookings.id} = ${id}
1992
+ FOR UPDATE`);
1993
+ const booking = rows[0];
1994
+ if (!booking) {
1995
+ throw new BookingServiceError("not_found");
1996
+ }
1997
+ const now = new Date();
1998
+ const updates = {
1999
+ status: data.status,
2000
+ updatedAt: now,
2001
+ };
2002
+ if (data.status === "confirmed")
2003
+ updates.confirmedAt = now;
2004
+ if (data.status === "expired")
2005
+ updates.expiredAt = now;
2006
+ if (data.status === "cancelled")
2007
+ updates.cancelledAt = now;
2008
+ if (data.status === "completed")
2009
+ updates.completedAt = now;
2010
+ const [row] = await tx.update(bookings).set(updates).where(eq(bookings.id, id)).returning();
2011
+ await tx.insert(bookingActivityLog).values({
2012
+ bookingId: id,
2013
+ actorId: userId ?? "system",
2014
+ activityType: "status_overridden",
2015
+ description: `Booking status overridden from ${booking.status} to ${data.status}`,
2016
+ metadata: {
2017
+ oldStatus: booking.status,
2018
+ newStatus: data.status,
2019
+ reason: data.reason,
2020
+ },
2021
+ });
2022
+ if (data.note) {
2023
+ await tx.insert(bookingNotes).values({
2024
+ bookingId: id,
2025
+ authorId: userId ?? "system",
2026
+ content: data.note,
2027
+ });
2028
+ }
2029
+ return {
2030
+ status: "ok",
2031
+ booking: row ?? null,
2032
+ fromStatus: booking.status,
2033
+ toStatus: data.status,
2034
+ };
2035
+ });
2036
+ if (result.status === "ok" && result.booking) {
2037
+ await runtime.eventBus?.emit("booking.status_overridden", {
2038
+ bookingId: result.booking.id,
2039
+ bookingNumber: result.booking.bookingNumber,
2040
+ fromStatus: result.fromStatus,
2041
+ toStatus: result.toStatus,
2042
+ reason: data.reason,
2043
+ actorId: userId ?? null,
2044
+ }, { category: "domain", source: "service" });
2045
+ }
2046
+ return { status: result.status, booking: result.booking };
2047
+ }
2048
+ catch (error) {
2049
+ if (error instanceof BookingServiceError) {
2050
+ return { status: error.code };
2051
+ }
2052
+ throw error;
2053
+ }
2054
+ },
1922
2055
  listTravelerRecords(db, bookingId) {
1923
2056
  return db
1924
2057
  .select()