@pisell/pisellos 2.1.128 → 2.1.130

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 (46) hide show
  1. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  2. package/dist/modules/Order/index.d.ts +4 -0
  3. package/dist/modules/Order/index.js +18 -1
  4. package/dist/modules/Order/types.d.ts +9 -1
  5. package/dist/modules/Order/utils.d.ts +7 -0
  6. package/dist/modules/Order/utils.js +27 -11
  7. package/dist/solution/ScanOrder/index.d.ts +27 -3
  8. package/dist/solution/ScanOrder/index.js +865 -481
  9. package/dist/solution/ScanOrder/types.d.ts +34 -24
  10. package/dist/solution/ScanOrder/types.js +5 -1
  11. package/dist/solution/ScanOrder/utils.d.ts +13 -1
  12. package/dist/solution/ScanOrder/utils.js +45 -6
  13. package/dist/solution/VenueBooking/index.d.ts +28 -5
  14. package/dist/solution/VenueBooking/index.js +463 -227
  15. package/dist/solution/VenueBooking/types.d.ts +23 -0
  16. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +1 -1
  17. package/dist/solution/VenueBooking/utils/dateSummary.js +1 -1
  18. package/dist/solution/VenueBooking/utils/resource.d.ts +11 -1
  19. package/dist/solution/VenueBooking/utils/resource.js +57 -21
  20. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +5 -0
  21. package/dist/solution/VenueBooking/utils/slotMerge.js +33 -12
  22. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +1 -1
  23. package/dist/solution/VenueBooking/utils/timeSlot.js +259 -62
  24. package/lib/model/strategy/adapter/promotion/index.js +49 -0
  25. package/lib/modules/Order/index.d.ts +4 -0
  26. package/lib/modules/Order/index.js +14 -1
  27. package/lib/modules/Order/types.d.ts +9 -1
  28. package/lib/modules/Order/utils.d.ts +7 -0
  29. package/lib/modules/Order/utils.js +22 -12
  30. package/lib/solution/ScanOrder/index.d.ts +27 -3
  31. package/lib/solution/ScanOrder/index.js +409 -114
  32. package/lib/solution/ScanOrder/types.d.ts +34 -24
  33. package/lib/solution/ScanOrder/utils.d.ts +13 -1
  34. package/lib/solution/ScanOrder/utils.js +37 -0
  35. package/lib/solution/VenueBooking/index.d.ts +28 -5
  36. package/lib/solution/VenueBooking/index.js +203 -58
  37. package/lib/solution/VenueBooking/types.d.ts +23 -0
  38. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +1 -1
  39. package/lib/solution/VenueBooking/utils/dateSummary.js +1 -1
  40. package/lib/solution/VenueBooking/utils/resource.d.ts +11 -1
  41. package/lib/solution/VenueBooking/utils/resource.js +15 -4
  42. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +5 -0
  43. package/lib/solution/VenueBooking/utils/slotMerge.js +29 -12
  44. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +1 -1
  45. package/lib/solution/VenueBooking/utils/timeSlot.js +182 -43
  46. package/package.json +1 -1
@@ -1,9 +0,0 @@
1
- // 导出评估器
2
- export { PromotionEvaluator } from "./evaluator";
3
-
4
- // 导出适配器
5
- export { PromotionAdapter } from "./adapter";
6
- export { default } from "./adapter";
7
-
8
- // 导出策略配置示例常量
9
- export { X_ITEMS_FOR_Y_PRICE_STRATEGY, BUY_X_GET_Y_FREE_STRATEGY } from "./examples";
@@ -2,6 +2,7 @@ import { Module, PisellCore, ModuleOptions } from '../../types';
2
2
  import { BaseModule } from '../BaseModule';
3
3
  import { OrderModuleAPI, CommitOrderParams, SubmitScanOrderParams, ScanOrderMoreParams, CheckoutOrderParams } from './types';
4
4
  import { CartItem } from '../Cart/types';
5
+ import { type SubmitPayloadEnhancer } from './utils';
5
6
  import type { ScanOrderOrderProduct, ScanOrderOrderProductIdentity, ScanOrderSummary, ScanOrderTempOrder } from '../../solution/ScanOrder/types';
6
7
  import type { Discount } from '../Discount/types';
7
8
  import { UnavailableReason } from '../Rules/types';
@@ -57,6 +58,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
57
58
  persistTempOrder(): void;
58
59
  private createDefaultTempOrderInstance;
59
60
  ensureTempOrder(): ScanOrderTempOrder;
61
+ restoreOrder(): ScanOrderTempOrder;
60
62
  getTempOrder(): ScanOrderTempOrder | null;
61
63
  addNewOrder(): Promise<ScanOrderTempOrder>;
62
64
  getOrderProducts(): ScanOrderOrderProduct[];
@@ -66,6 +68,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
66
68
  }): Promise<ScanOrderSummary | null>;
67
69
  getScanOrderSummary(): Promise<ScanOrderSummary>;
68
70
  updateTempOrderNote(note: string): string;
71
+ updateTempOrderBuzzer(buzzer: string): string;
69
72
  updateTempOrderContactsInfo(contactsInfo: any[]): any[];
70
73
  addProductToOrder(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): Promise<ScanOrderOrderProduct[]>;
71
74
  updateProductInOrder(params: {
@@ -80,6 +83,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
80
83
  businessCode?: string;
81
84
  channel?: string;
82
85
  type?: string;
86
+ enhancePayload?: SubmitPayloadEnhancer;
83
87
  }): Promise<T>;
84
88
  createOrder(params: CommitOrderParams['query']): {
85
89
  type: "virtual" | "appointment_booking";
@@ -419,6 +419,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
419
419
  this.persistTempOrder();
420
420
  return newOrder;
421
421
  }
422
+ }, {
423
+ key: "restoreOrder",
424
+ value: function restoreOrder() {
425
+ var freshTempOrder = this.createDefaultTempOrderInstance();
426
+ this.store.tempOrder = freshTempOrder;
427
+ this.persistTempOrder();
428
+ return freshTempOrder;
429
+ }
422
430
  }, {
423
431
  key: "getTempOrder",
424
432
  value: function getTempOrder() {
@@ -560,6 +568,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
560
568
  this.persistTempOrder();
561
569
  return tempOrder.note;
562
570
  }
571
+ }, {
572
+ key: "updateTempOrderBuzzer",
573
+ value: function updateTempOrderBuzzer(buzzer) {
574
+ var tempOrder = this.ensureTempOrder();
575
+ tempOrder.buzzer = String(buzzer || '');
576
+ this.persistTempOrder();
577
+ return tempOrder.buzzer;
578
+ }
563
579
  }, {
564
580
  key: "updateTempOrderContactsInfo",
565
581
  value: function updateTempOrderContactsInfo(contactsInfo) {
@@ -713,7 +729,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
713
729
  platform: params === null || params === void 0 ? void 0 : params.platform,
714
730
  businessCode: params === null || params === void 0 ? void 0 : params.businessCode,
715
731
  channel: params === null || params === void 0 ? void 0 : params.channel,
716
- type: params === null || params === void 0 ? void 0 : params.type
732
+ type: params === null || params === void 0 ? void 0 : params.type,
733
+ enhance: params === null || params === void 0 ? void 0 : params.enhancePayload
717
734
  });
718
735
  if (!tempOrder.order_id) {
719
736
  _context10.next = 12;
@@ -3,6 +3,7 @@ import type { ScanOrderTempOrder, ScanOrderOrderProduct, ScanOrderOrderProductId
3
3
  import type { DiscountModule } from '../Discount';
4
4
  import type { RulesModule } from '../Rules';
5
5
  import type { Discount } from '../Discount/types';
6
+ import type { SubmitPayloadEnhancer } from './utils';
6
7
  export declare enum OrderHooks {
7
8
  OnOrderCreate = "order:onOrderCreate",
8
9
  OnOrderUpdate = "order:onOrderUpdate",
@@ -68,10 +69,12 @@ export interface SubmitScanOrderBooking {
68
69
  start_time?: string;
69
70
  end_time?: string;
70
71
  metadata?: Record<string, any>;
72
+ resources?: Array<Record<string, any>>;
73
+ product_uid?: string;
71
74
  }
72
75
  export interface SubmitScanOrderFormRecord {
73
76
  form_id: number | string;
74
- form_record_ids: Array<number | string>;
77
+ form_record_id: number | string;
75
78
  }
76
79
  export interface SubmitScanOrderParams {
77
80
  url?: string;
@@ -107,6 +110,8 @@ export interface SubmitScanOrderParams {
107
110
  shop_discount: string;
108
111
  surcharge_fee: string;
109
112
  note: string;
113
+ delivery_type?: string;
114
+ table_number?: Record<string, any>;
110
115
  schedule_date: string;
111
116
  created_at?: string;
112
117
  products: SubmitScanOrderProduct[];
@@ -195,12 +200,14 @@ export interface OrderModuleAPI {
195
200
  getTempOrder: () => ScanOrderTempOrder | null;
196
201
  ensureTempOrder: () => ScanOrderTempOrder;
197
202
  addNewOrder: () => Promise<ScanOrderTempOrder>;
203
+ restoreOrder: () => ScanOrderTempOrder;
198
204
  getOrderProducts: () => ScanOrderOrderProduct[];
199
205
  getScanOrderSummary: () => Promise<ScanOrderSummary>;
200
206
  recalculateSummary: (options?: {
201
207
  createIfMissing?: boolean;
202
208
  }) => Promise<ScanOrderSummary | null>;
203
209
  updateTempOrderNote: (note: string) => string;
210
+ updateTempOrderBuzzer: (buzzer: string) => string;
204
211
  updateTempOrderContactsInfo: (contactsInfo: any[]) => any[];
205
212
  addProductToOrder: (product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity) => Promise<ScanOrderOrderProduct[]>;
206
213
  updateProductInOrder: (params: {
@@ -216,6 +223,7 @@ export interface OrderModuleAPI {
216
223
  businessCode?: string;
217
224
  channel?: string;
218
225
  type?: string;
226
+ enhancePayload?: SubmitPayloadEnhancer;
219
227
  }) => Promise<T>;
220
228
  loadDiscountConfig: (params: {
221
229
  customerId: number;
@@ -56,6 +56,12 @@ export declare function createDefaultTempOrder(params: {
56
56
  now: string;
57
57
  summary?: ScanOrderSummary;
58
58
  }): ScanOrderTempOrder;
59
+ export interface SubmitPayloadEnhancerContext {
60
+ tempOrder: ScanOrderTempOrder;
61
+ bookingUuid: string;
62
+ now: Date;
63
+ }
64
+ export type SubmitPayloadEnhancer = (payload: ScanOrderSubmitPayload, ctx: SubmitPayloadEnhancerContext) => ScanOrderSubmitPayload;
59
65
  export declare function buildSubmitPayload(params: {
60
66
  tempOrder: ScanOrderTempOrder;
61
67
  cacheId?: string;
@@ -64,6 +70,7 @@ export declare function buildSubmitPayload(params: {
64
70
  businessCode?: string;
65
71
  channel?: string;
66
72
  type?: string;
73
+ enhance?: SubmitPayloadEnhancer;
67
74
  }): ScanOrderSubmitPayload;
68
75
  export declare function formatV1Product(products: ScanOrderSubmitProduct[]): {
69
76
  bundle: any[];
@@ -1,5 +1,6 @@
1
1
  var _excluded = ["_origin", "identity_key"],
2
- _excluded2 = ["created_at", "summary", "surcharges"];
2
+ _excluded2 = ["created_at", "summary", "surcharges"],
3
+ _excluded3 = ["collect_pax", "table_occupancy_duration"];
3
4
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
4
5
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
5
6
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -187,6 +188,9 @@ function normalizeSubmitProduct(product) {
187
188
  if (rawMetadata.price_breakdown) {
188
189
  cleanMetadata.price_breakdown = rawMetadata.price_breakdown;
189
190
  }
191
+ if (rawMetadata.is_rule !== undefined) {
192
+ cleanMetadata.is_rule = rawMetadata.is_rule;
193
+ }
190
194
  return _objectSpread(_objectSpread(_objectSpread({}, submitProduct), bookingUid ? {
191
195
  booking_uid: bookingUid
192
196
  } : {}), {}, {
@@ -303,7 +307,8 @@ export function buildSubmitPayload(params) {
303
307
  platform = params.platform,
304
308
  businessCode = params.businessCode,
305
309
  channel = params.channel,
306
- type = params.type;
310
+ type = params.type,
311
+ enhance = params.enhance;
307
312
  var scheduleDate = tempOrder.schedule_date || tempOrder.created_at || formatDateTime(now);
308
313
  var summary = tempOrder.summary || createEmptySummary();
309
314
  var relationId = tempOrder.relation_id;
@@ -313,8 +318,8 @@ export function buildSubmitPayload(params) {
313
318
  var bookingDuration = resolveTableOccupancyDuration(tempOrder);
314
319
  var bookingEnd = bookingStart.add(bookingDuration, 'minute');
315
320
  var bookings = relationId && tableFormId ? [{
316
- relation_id: relationId,
317
- form_id: tableFormId,
321
+ relation_id: 0,
322
+ form_id: 0,
318
323
  start_time: bookingStart.format('HH:mm'),
319
324
  start_date: bookingStart.format('YYYY-MM-DD'),
320
325
  end_time: bookingEnd.format('HH:mm'),
@@ -326,20 +331,20 @@ export function buildSubmitPayload(params) {
326
331
  },
327
332
  select_date: bookingStart.format('YYYY-MM-DD'),
328
333
  is_all: false,
329
- "like_status": "common",
330
- "schedule_id": 0,
331
- "relation_type": "form",
332
- "number": 1
334
+ like_status: 'common',
335
+ schedule_id: 0,
336
+ relation_type: '',
337
+ number: 1
333
338
  }] : tempOrder.bookings || [];
334
339
  var formRecordIds = relationId && tableFormId ? [{
335
340
  form_id: tableFormId,
336
- form_record_ids: [relationId]
341
+ form_record_id: relationId
337
342
  }] : undefined;
338
343
  var _createdAt = tempOrder.created_at,
339
344
  _summary = tempOrder.summary,
340
345
  _surcharges = tempOrder.surcharges,
341
346
  tempOrderRest = _objectWithoutProperties(tempOrder, _excluded2);
342
- return _objectSpread(_objectSpread({}, tempOrderRest), {}, {
347
+ var payload = _objectSpread(_objectSpread({}, tempOrderRest), {}, {
343
348
  platform: normalizeSubmitPlatform(platform !== null && platform !== void 0 ? platform : tempOrder.platform),
344
349
  request_unique_idempotency_token: cacheId,
345
350
  type: (_ref2 = type !== null && type !== void 0 ? type : tempOrder.type) !== null && _ref2 !== void 0 ? _ref2 : 'table-order',
@@ -368,11 +373,22 @@ export function buildSubmitPayload(params) {
368
373
  contacts_info: tempOrder.contacts_info || [],
369
374
  // holder: tempOrder.holder || null,
370
375
  // summary,
371
- metadata: _objectSpread({}, tempOrder.metadata),
376
+ metadata: function () {
377
+ var _ref5 = tempOrder.metadata || {},
378
+ _collectPax = _ref5.collect_pax,
379
+ _tableOccupancyDuration = _ref5.table_occupancy_duration,
380
+ rest = _objectWithoutProperties(_ref5, _excluded3);
381
+ return _objectSpread({}, rest);
382
+ }(),
372
383
  products: (tempOrder.products || []).map(function (product) {
373
384
  return normalizeSubmitProduct(product);
374
385
  })
375
386
  });
387
+ return enhance ? enhance(payload, {
388
+ tempOrder: tempOrder,
389
+ bookingUuid: bookingUuid,
390
+ now: now
391
+ }) : payload;
376
392
  }
377
393
  export function formatV1Product(products) {
378
394
  return products.map(function (product) {
@@ -1,6 +1,6 @@
1
1
  import { Module, ModuleOptions, PisellCore } from '../../types';
2
2
  import { BaseModule } from '../../modules/BaseModule';
3
- import { ScanOrderAddLogParams, ScanOrderAvailabilityInfo, ScanOrderOrderProduct, ScanOrderOrderProductIdentity, ScanOrderTableConfigApiData } from './types';
3
+ import { ScanOrderAddLogParams, ScanOrderAvailabilityInfo, ScanOrderOrderProduct, ScanOrderOrderProductIdentity } from './types';
4
4
  import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
5
5
  import type { StrategyConfig } from '../../model/strategy/type';
6
6
  export * from './types';
@@ -43,7 +43,7 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
43
43
  refresh(): Promise<void>;
44
44
  getStatus(): import("./types").ScanOrderStatus;
45
45
  getEntryContext(): import("./types").ScanOrderEntryContext | null;
46
- getConfig(): ScanOrderTableConfigApiData;
46
+ getConfig(): Record<string, any>;
47
47
  getItemRuleQuantityLimits(): QuantityLimitResult[];
48
48
  getCartValidationPassed(): boolean | null;
49
49
  getCartValidation(): {
@@ -52,10 +52,17 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
52
52
  };
53
53
  getTempOrder(): import("./types").ScanOrderTempOrder | null;
54
54
  updateTempOrderNote(note: string): string;
55
+ setPickupReferenceMode(mode: 'counter_pickup' | 'table_service'): {
56
+ service_type: 'dine_in';
57
+ pickup_reference_mode: 'counter_pickup' | 'table_service';
58
+ };
59
+ setPickupRef(buzzer: string): string;
55
60
  private ensureTempOrder;
56
61
  addNewOrder(): Promise<import("./types").ScanOrderTempOrder>;
62
+ restoreOrder(): Promise<import("./types").ScanOrderTempOrder>;
57
63
  getOrderProducts(): ScanOrderOrderProduct[];
58
64
  getSummary(): Promise<import("./types").ScanOrderSummary>;
65
+ private buildSubmitPayloadEnhancer;
59
66
  submitScanOrder<T = any>(): Promise<T>;
60
67
  addProductToOrder(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): Promise<ScanOrderOrderProduct[]>;
61
68
  updateProductInOrder(params: {
@@ -78,7 +85,8 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
78
85
  private refreshCartValidationPassed;
79
86
  setItemRuleRuntimeConfig(config?: ScanOrderItemRuleRuntimeConfig): Promise<void>;
80
87
  private normalizeResourceState;
81
- private fetchTableConfigByResourceId;
88
+ private resolveResourceSelectType;
89
+ private fetchResourceOccupyDetailByResourceId;
82
90
  checkResourceAvailable(resourceId: string, hasOrderId: boolean): Promise<ScanOrderAvailabilityInfo>;
83
91
  getAdditionalOrderInfo(): Promise<{
84
92
  orderId: string;
@@ -92,6 +100,22 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
92
100
  setOtherParams(params: Record<string, any>, { cover }?: {
93
101
  cover?: boolean;
94
102
  }): Promise<void>;
103
+ private static readonly UI_STATE_KEY_PREFIX;
104
+ private getUIStateBucketKey;
105
+ private readUIStateBucket;
106
+ private writeUIStateBucket;
107
+ setUIState(key: string, value: any): void;
108
+ getUIState<T = any>(key: string): T | undefined;
109
+ deleteUIState(key: string): void;
110
+ clearUIState(): void;
95
111
  setEntryPaxNumber(number: number): Promise<void>;
96
112
  getEntryPaxNumber(): number | null;
113
+ getFulfillmentModes(): {
114
+ enablePickup: boolean;
115
+ enableTableService: boolean;
116
+ };
117
+ checkManualPickupRef(): {
118
+ enabled: boolean;
119
+ manualInputType?: string;
120
+ };
97
121
  }