@pisell/pisellos 2.2.189 → 2.2.191

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 (65) hide show
  1. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  2. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +2 -1
  3. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +2 -7
  4. package/dist/modules/Cart/utils/cartProduct.js +13 -2
  5. package/dist/modules/Order/index.d.ts +1 -3
  6. package/dist/modules/Order/index.js +88 -114
  7. package/dist/modules/Order/types.d.ts +10 -6
  8. package/dist/modules/Order/utils.d.ts +9 -2
  9. package/dist/modules/Order/utils.js +36 -13
  10. package/dist/modules/SalesSummary/types.d.ts +3 -1
  11. package/dist/modules/SalesSummary/utils.js +7 -3
  12. package/dist/server/modules/order/index.d.ts +126 -6
  13. package/dist/server/modules/order/index.js +1204 -285
  14. package/dist/server/modules/order/types.d.ts +0 -2
  15. package/dist/server/modules/products/index.d.ts +90 -6
  16. package/dist/server/modules/products/index.js +1017 -361
  17. package/dist/solution/BaseSales/index.js +54 -39
  18. package/dist/solution/BaseSales/types.d.ts +8 -5
  19. package/dist/solution/BaseSales/types.js +2 -3
  20. package/dist/solution/BaseSales/utils/cartPromotion.js +7 -7
  21. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +1 -0
  22. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +29 -14
  23. package/dist/solution/BaseSales/utils.d.ts +1 -1
  24. package/dist/solution/BaseSales/utils.js +22 -19
  25. package/dist/solution/BookingByStep/index.d.ts +1 -1
  26. package/dist/solution/ScanOrder/index.js +7 -5
  27. package/dist/solution/ScanOrder/types.d.ts +8 -5
  28. package/dist/solution/ScanOrder/types.js +2 -3
  29. package/dist/solution/ScanOrder/utils.d.ts +1 -1
  30. package/dist/solution/ScanOrder/utils.js +26 -23
  31. package/dist/solution/VenueBooking/index.js +5 -3
  32. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  33. package/lib/model/strategy/adapter/promotion/index.js +0 -49
  34. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +2 -1
  35. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +2 -1
  36. package/lib/modules/Cart/utils/cartProduct.js +9 -2
  37. package/lib/modules/Order/index.d.ts +1 -3
  38. package/lib/modules/Order/index.js +50 -63
  39. package/lib/modules/Order/types.d.ts +10 -6
  40. package/lib/modules/Order/utils.d.ts +9 -2
  41. package/lib/modules/Order/utils.js +41 -10
  42. package/lib/modules/SalesSummary/types.d.ts +3 -1
  43. package/lib/modules/SalesSummary/utils.js +5 -3
  44. package/lib/server/modules/order/index.d.ts +126 -6
  45. package/lib/server/modules/order/index.js +722 -42
  46. package/lib/server/modules/order/types.d.ts +0 -2
  47. package/lib/server/modules/products/index.d.ts +90 -6
  48. package/lib/server/modules/products/index.js +492 -30
  49. package/lib/solution/BaseSales/index.js +26 -8
  50. package/lib/solution/BaseSales/types.d.ts +8 -5
  51. package/lib/solution/BaseSales/utils/cartPromotion.js +6 -6
  52. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +1 -0
  53. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +32 -16
  54. package/lib/solution/BaseSales/utils.d.ts +1 -1
  55. package/lib/solution/BaseSales/utils.js +11 -7
  56. package/lib/solution/BookingByStep/index.d.ts +1 -1
  57. package/lib/solution/ScanOrder/index.js +4 -4
  58. package/lib/solution/ScanOrder/types.d.ts +8 -5
  59. package/lib/solution/ScanOrder/utils.d.ts +1 -1
  60. package/lib/solution/ScanOrder/utils.js +12 -8
  61. package/lib/solution/VenueBooking/index.js +2 -2
  62. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  63. package/package.json +1 -1
  64. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  65. package/lib/solution/Checkout/appointmentDemo.json +0 -1
@@ -5,7 +5,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
7
  import Decimal from 'decimal.js';
8
- import { composeLinePrice, createUuidV4, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
8
+ import { composeLinePrice, createUuidV4, ensureProductSku, normalizeProductSkuOptions, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
9
9
  import { ensureManualProductDiscountList } from "../../modules/Order/utils/manualProductDiscount";
10
10
 
11
11
  /**
@@ -39,12 +39,12 @@ export function createEmptySummary() {
39
39
  export function buildProductLineFingerprint(productOptionItem, productBundle) {
40
40
  var optArr = Array.isArray(productOptionItem) ? productOptionItem : [];
41
41
  var normalizedOpts = optArr.map(function (item) {
42
- var _item$price;
42
+ var _ref, _item$add_price;
43
43
  return {
44
44
  option_group_item_id: Number(item === null || item === void 0 ? void 0 : item.option_group_item_id) || 0,
45
45
  option_group_id: Number(item === null || item === void 0 ? void 0 : item.option_group_id) || 0,
46
46
  num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1,
47
- price: String((_item$price = item === null || item === void 0 ? void 0 : item.price) !== null && _item$price !== void 0 ? _item$price : '')
47
+ price: String((_ref = (_item$add_price = item === null || item === void 0 ? void 0 : item.add_price) !== null && _item$add_price !== void 0 ? _item$add_price : item === null || item === void 0 ? void 0 : item.price) !== null && _ref !== void 0 ? _ref : '')
48
48
  };
49
49
  }).sort(function (p, q) {
50
50
  if (p.option_group_item_id !== q.option_group_item_id) {
@@ -56,9 +56,9 @@ export function buildProductLineFingerprint(productOptionItem, productBundle) {
56
56
  });
57
57
  var bundleArr = Array.isArray(productBundle) ? productBundle : [];
58
58
  var normalizedBundles = bundleArr.map(function (item) {
59
- var _ref, _item$bundle_id;
59
+ var _ref2, _item$bundle_id;
60
60
  return {
61
- bundle_id: Number((_ref = (_item$bundle_id = item === null || item === void 0 ? void 0 : item.bundle_id) !== null && _item$bundle_id !== void 0 ? _item$bundle_id : item === null || item === void 0 ? void 0 : item.id) !== null && _ref !== void 0 ? _ref : 0) || 0,
61
+ bundle_id: Number((_ref2 = (_item$bundle_id = item === null || item === void 0 ? void 0 : item.bundle_id) !== null && _item$bundle_id !== void 0 ? _item$bundle_id : item === null || item === void 0 ? void 0 : item.id) !== null && _ref2 !== void 0 ? _ref2 : 0) || 0,
62
62
  product_id: Number(item === null || item === void 0 ? void 0 : item.product_id) || 0,
63
63
  num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1
64
64
  };
@@ -77,11 +77,11 @@ export function getSafeProductNum(num) {
77
77
 
78
78
  /**
79
79
  * removeProductFromOrder 仅传 SKU 时的通配 identity(对象上未声明选项键)。
80
- * 与显式 `product_option_item: []` 区分:后者只匹配「无选项」行。
80
+ * 与显式 `product_sku: { option: [] }` 区分:后者只匹配「无选项」行。
81
81
  */
82
82
  export function isSkuOnlyDeleteIdentity(x) {
83
83
  if (x.identity_key) return false;
84
- return !('product_option_item' in x) && !('product_bundle' in x);
84
+ return !('product_sku' in x) && !('product_bundle' in x);
85
85
  }
86
86
 
87
87
  /**
@@ -107,7 +107,7 @@ export function isSkuOnlyDeleteIdentity(x) {
107
107
  * - 因此多次 normalize 不会重复叠加 option/bundle。
108
108
  */
109
109
  export function normalizeOrderProduct(product) {
110
- var _product$metadata, _metadata$origin, _metadata$origin2, _variantList$find, _product$is_charge_ta;
110
+ var _product$metadata, _metadata$origin, _product$product_sku, _metadata$origin2, _variantList$find, _product$is_charge_ta;
111
111
  var metadata = _objectSpread({}, product.metadata || {});
112
112
  // 不透明 identity 契约:每条订单行必须带 identity_key。
113
113
  // 调用方未传时由 SDK 自动生成 UUID,后续 update/remove 只做严格比对,避免猜测合成 key。
@@ -119,9 +119,9 @@ export function normalizeOrderProduct(product) {
119
119
  if (priceOverride !== undefined && priceOverride !== null && priceOverride !== '' && Array.isArray(originOtherBundle) && originOtherBundle.length > 0) {
120
120
  var priceById = new Map();
121
121
  originOtherBundle.forEach(function (item) {
122
- var _item$price2;
122
+ var _item$price;
123
123
  if ((item === null || item === void 0 ? void 0 : item.id) == null) return;
124
- var unit = (_item$price2 = item.price) !== null && _item$price2 !== void 0 ? _item$price2 : item.bundle_selling_price;
124
+ var unit = (_item$price = item.price) !== null && _item$price !== void 0 ? _item$price : item.bundle_selling_price;
125
125
  if (unit === undefined || unit === null) return;
126
126
  priceById.set(String(item.id), String(unit));
127
127
  });
@@ -136,19 +136,22 @@ export function normalizeOrderProduct(product) {
136
136
  });
137
137
  }
138
138
  var normalizedBundle = bundleInput.map(function (item) {
139
- var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id, _ref2, _item$bundle_selling_, _ref3, _ref4, _item$price3, _ref5, _item$price_type, _ref6, _item$price_type_ext;
139
+ var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id, _ref3, _item$bundle_selling_, _ref4, _ref5, _item$price2, _ref6, _item$price_type, _ref7, _item$price_type_ext;
140
140
  return _objectSpread(_objectSpread({}, item), {}, {
141
141
  bundle_id: (_item$bundle_id2 = item.bundle_id) !== null && _item$bundle_id2 !== void 0 ? _item$bundle_id2 : item.id,
142
142
  bundle_product_id: (_item$bundle_product_ = item.bundle_product_id) !== null && _item$bundle_product_ !== void 0 ? _item$bundle_product_ : item._bundle_product_id,
143
143
  bundle_group_id: (_item$bundle_group_id = item.bundle_group_id) !== null && _item$bundle_group_id !== void 0 ? _item$bundle_group_id : item.group_id,
144
- bundle_selling_price: (_ref2 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref2 !== void 0 ? _ref2 : '0.00',
145
- price: (_ref3 = (_ref4 = (_item$price3 = item.price) !== null && _item$price3 !== void 0 ? _item$price3 : item.custom_price) !== null && _ref4 !== void 0 ? _ref4 : item.bundle_selling_price) !== null && _ref3 !== void 0 ? _ref3 : '0.00',
146
- price_type: (_ref5 = (_item$price_type = item.price_type) !== null && _item$price_type !== void 0 ? _item$price_type : item.custom_price_type) !== null && _ref5 !== void 0 ? _ref5 : '',
147
- price_type_ext: (_ref6 = (_item$price_type_ext = item.price_type_ext) !== null && _item$price_type_ext !== void 0 ? _item$price_type_ext : item.custom_price_type_ext) !== null && _ref6 !== void 0 ? _ref6 : ''
144
+ bundle_selling_price: (_ref3 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref3 !== void 0 ? _ref3 : '0.00',
145
+ price: (_ref4 = (_ref5 = (_item$price2 = item.price) !== null && _item$price2 !== void 0 ? _item$price2 : item.custom_price) !== null && _ref5 !== void 0 ? _ref5 : item.bundle_selling_price) !== null && _ref4 !== void 0 ? _ref4 : '0.00',
146
+ price_type: (_ref6 = (_item$price_type = item.price_type) !== null && _item$price_type !== void 0 ? _item$price_type : item.custom_price_type) !== null && _ref6 !== void 0 ? _ref6 : '',
147
+ price_type_ext: (_ref7 = (_item$price_type_ext = item.price_type_ext) !== null && _item$price_type_ext !== void 0 ? _item$price_type_ext : item.custom_price_type_ext) !== null && _ref7 !== void 0 ? _ref7 : ''
148
148
  });
149
149
  });
150
- var normalizedOptions = product.product_option_item || [];
150
+ var normalizedOptions = normalizeProductSkuOptions((_product$product_sku = product.product_sku) === null || _product$product_sku === void 0 ? void 0 : _product$product_sku.option);
151
151
  var optionSum = sumOptionUnitPrice(normalizedOptions);
152
+ var productSku = _objectSpread(_objectSpread({}, ensureProductSku(product)), {}, {
153
+ option: normalizedOptions
154
+ });
152
155
 
153
156
  // 1) 解析 source_product_price。
154
157
  // 优先级:
@@ -164,7 +167,7 @@ export function normalizeOrderProduct(product) {
164
167
  var variantPrice = Array.isArray(variantList) ? (_variantList$find = variantList.find(function (v) {
165
168
  return Number(v === null || v === void 0 ? void 0 : v.id) === variantId;
166
169
  })) === null || _variantList$find === void 0 ? void 0 : _variantList$find.price : undefined;
167
- var resolvedSource = function (_product$_origin, _product$_origin2, _ref7, _product$original_pri) {
170
+ var resolvedSource = function (_product$_origin, _product$_origin2, _ref8, _product$original_pri) {
168
171
  if (metadata.source_product_price !== undefined) {
169
172
  return String(metadata.source_product_price);
170
173
  }
@@ -182,7 +185,7 @@ export function normalizeOrderProduct(product) {
182
185
  if (!isV2 && metadata.main_product_original_price !== undefined) {
183
186
  return String(metadata.main_product_original_price);
184
187
  }
185
- return (_ref7 = (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : product.selling_price) !== null && _ref7 !== void 0 ? _ref7 : '0.00';
188
+ return (_ref8 = (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : product.selling_price) !== null && _ref8 !== void 0 ? _ref8 : '0.00';
186
189
  }();
187
190
 
188
191
  // 2) 派生 main_product_original_price(含 option、不含折扣)
@@ -247,7 +250,7 @@ export function normalizeOrderProduct(product) {
247
250
  product_id: product.product_id,
248
251
  num: getSafeProductNum(product.num),
249
252
  product_variant_id: product.product_variant_id,
250
- product_option_item: normalizedOptions,
253
+ product_sku: productSku,
251
254
  selling_price: composedSellingPrice,
252
255
  original_price: finalOriginalPrice,
253
256
  tax_fee: product.tax_fee || '0.00',
@@ -311,7 +311,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
311
311
  date: string;
312
312
  status: string;
313
313
  week: string;
314
- weekNum: 0 | 1 | 2 | 6 | 3 | 5 | 4;
314
+ weekNum: 0 | 2 | 1 | 5 | 3 | 4 | 6;
315
315
  }[]>;
316
316
  submitTimeSlot(timeSlots: TimeSliceItem): void;
317
317
  private getScheduleDataByIds;
@@ -37,7 +37,7 @@ import { createModule } from "../BookingByStep/types";
37
37
  import { ProductList } from "../../modules/ProductList";
38
38
  import { ScheduleModule } from "../../modules/Schedule";
39
39
  import { getDateIsInSchedule } from "../../modules/Schedule/getDateIsInSchedule";
40
- import { composeLinePrice, createUuidV4, normalizeSubmitCollectPaxValue, sumOptionUnitPrice } from "../../modules/Order/utils";
40
+ import { composeLinePrice, createUuidV4, getProductSkuOptions, normalizeSubmitCollectPaxValue, sumOptionUnitPrice } from "../../modules/Order/utils";
41
41
  import dayjs from 'dayjs';
42
42
  import { ItemRuleEvaluator } from "../../model/strategy/adapter/itemRule";
43
43
  export * from "./types";
@@ -1198,7 +1198,7 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
1198
1198
  totalPerUnitDiscount = (product.discount_list || []).reduce(function (sum, pd) {
1199
1199
  return sum + (pd.amount || 0);
1200
1200
  }, 0);
1201
- optionSum = sumOptionUnitPrice(product.product_option_item);
1201
+ optionSum = sumOptionUnitPrice(getProductSkuOptions(product));
1202
1202
  sourcePrice = (_product$metadata$sou = (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.source_product_price) !== null && _product$metadata$sou !== void 0 ? _product$metadata$sou : ((_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
1203
1203
  newSourceSellingPrice = new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount).toDecimalPlaces(2).toString();
1204
1204
  newMainSellingPrice = new Decimal(Number(newSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
@@ -1426,7 +1426,9 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
1426
1426
  original_price: originalPrice,
1427
1427
  payment_price: sellingPrice,
1428
1428
  is_charge_tax: (_ruleProduct$is_gst = ruleProduct.is_gst) !== null && _ruleProduct$is_gst !== void 0 ? _ruleProduct$is_gst : 0,
1429
- product_option_item: [],
1429
+ product_sku: {
1430
+ option: []
1431
+ },
1430
1432
  discount_list: [],
1431
1433
  product_bundle: [],
1432
1434
  booking_uid: bookingUuid,
@@ -1632,8 +1634,8 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
1632
1634
  }
1633
1635
  };
1634
1636
  if (identity.identity_key !== undefined) params.identity_key = identity.identity_key;
1635
- if (identity.product_option_item !== undefined) {
1636
- params.product_option_item = identity.product_option_item;
1637
+ if (identity.product_sku !== undefined) {
1638
+ params.product_sku = identity.product_sku;
1637
1639
  }
1638
1640
  if (identity.product_bundle !== undefined) params.product_bundle = identity.product_bundle;
1639
1641
  _context20.next = 8;
@@ -33,13 +33,17 @@ export interface ScanOrderOrderProductIdentity {
33
33
  identity_key?: string;
34
34
  unique_identification_number?: string;
35
35
  /** 参与合并/匹配;与 remove 通配语义见 isSkuOnlyDeleteIdentity */
36
- product_option_item?: any[];
36
+ product_sku?: ScanOrderProductSku;
37
37
  product_bundle?: any[];
38
38
  }
39
+ export interface ScanOrderProductSku {
40
+ option: any[];
41
+ [key: string]: any;
42
+ }
39
43
  export interface ScanOrderOrderProduct extends ScanOrderOrderProductIdentity {
40
44
  order_detail_id: number | null;
41
45
  num: number;
42
- product_option_item: any[];
46
+ product_sku: ScanOrderProductSku;
43
47
  /**
44
48
  * 券后 **行 composite 单价** = `metadata.main_product_selling_price`
45
49
  * + Σ((bundle.bundle_selling_price ?? bundle.price) × (bundle.num ?? 1))
@@ -85,9 +89,8 @@ export interface ScanOrderOrderProduct extends ScanOrderOrderProductIdentity {
85
89
  * 出站 payload 版本的商品行。
86
90
  *
87
91
  * 与 tempOrder 内部 `ScanOrderOrderProduct` 的字段差异:
88
- * - `product_option_item[*]`:内部为 `{ option_group_item_id, option_group_id, num, price, ... }`,
89
- * 出站保留 `{ option_group_item_id, option_group_id, num }`
90
- * (后端 checkout 协议;丢弃 `price` 等运行时辅助字段)。
92
+ * - `product_sku.option[*]`:内部直接维护统一 Sales 协议字段;
93
+ * 提交时仅规范 `add_price`,保留传入/恢复得到的展示字段。
91
94
  * - `product_bundle[*].option[*]`:同上重命名规则。
92
95
  *
93
96
  * 运行时(UI 显示、加购合并、指纹、持久化)与提交边界统一消费字段名
@@ -14,9 +14,8 @@ export var ScanOrderHooks = /*#__PURE__*/function (ScanOrderHooks) {
14
14
  * 出站 payload 版本的商品行。
15
15
  *
16
16
  * 与 tempOrder 内部 `ScanOrderOrderProduct` 的字段差异:
17
- * - `product_option_item[*]`:内部为 `{ option_group_item_id, option_group_id, num, price, ... }`,
18
- * 出站保留 `{ option_group_item_id, option_group_id, num }`
19
- * (后端 checkout 协议;丢弃 `price` 等运行时辅助字段)。
17
+ * - `product_sku.option[*]`:内部直接维护统一 Sales 协议字段;
18
+ * 提交时仅规范 `add_price`,保留传入/恢复得到的展示字段。
20
19
  * - `product_bundle[*].option[*]`:同上重命名规则。
21
20
  *
22
21
  * 运行时(UI 显示、加购合并、指纹、持久化)与提交边界统一消费字段名
@@ -88,7 +88,7 @@ export declare function attachItemRuleLimitsToTopLevelProducts<T>(productList: T
88
88
  export declare function buildProductLineFingerprint(productOptionItem?: unknown, productBundle?: unknown): string;
89
89
  /**
90
90
  * removeProductFromOrder 仅传 SKU 时的通配 identity(对象上未声明选项键)。
91
- * 与显式 `product_option_item: []` 区分:后者只匹配「无选项」行。
91
+ * 与显式 `product_sku: { option: [] }` 区分:后者只匹配「无选项」行。
92
92
  */
93
93
  export declare function isSkuOnlyDeleteIdentity(x: ScanOrderOrderProductIdentity): boolean;
94
94
  /**
@@ -13,7 +13,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
13
13
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
14
14
  import dayjs from 'dayjs';
15
15
  import Decimal from 'decimal.js';
16
- import { composeLinePrice, createUuidV4, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
16
+ import { composeLinePrice, createUuidV4, ensureProductSku, getProductSkuOptions, normalizeProductSkuOptions, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
17
17
  import { ensureManualProductDiscountList } from "../../modules/Order/utils/manualProductDiscount";
18
18
 
19
19
  /**
@@ -380,12 +380,12 @@ export function attachItemRuleLimitsToTopLevelProducts(productList, limits) {
380
380
  export function buildProductLineFingerprint(productOptionItem, productBundle) {
381
381
  var optArr = Array.isArray(productOptionItem) ? productOptionItem : [];
382
382
  var normalizedOpts = optArr.map(function (item) {
383
- var _item$price;
383
+ var _ref, _item$add_price;
384
384
  return {
385
385
  option_group_item_id: Number(item === null || item === void 0 ? void 0 : item.option_group_item_id) || 0,
386
386
  option_group_id: Number(item === null || item === void 0 ? void 0 : item.option_group_id) || 0,
387
387
  num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1,
388
- price: String((_item$price = item === null || item === void 0 ? void 0 : item.price) !== null && _item$price !== void 0 ? _item$price : '')
388
+ price: String((_ref = (_item$add_price = item === null || item === void 0 ? void 0 : item.add_price) !== null && _item$add_price !== void 0 ? _item$add_price : item === null || item === void 0 ? void 0 : item.price) !== null && _ref !== void 0 ? _ref : '')
389
389
  };
390
390
  }).sort(function (p, q) {
391
391
  if (p.option_group_item_id !== q.option_group_item_id) {
@@ -397,9 +397,9 @@ export function buildProductLineFingerprint(productOptionItem, productBundle) {
397
397
  });
398
398
  var bundleArr = Array.isArray(productBundle) ? productBundle : [];
399
399
  var normalizedBundles = bundleArr.map(function (item) {
400
- var _ref, _item$bundle_id;
400
+ var _ref2, _item$bundle_id;
401
401
  return {
402
- bundle_id: Number((_ref = (_item$bundle_id = item === null || item === void 0 ? void 0 : item.bundle_id) !== null && _item$bundle_id !== void 0 ? _item$bundle_id : item === null || item === void 0 ? void 0 : item.id) !== null && _ref !== void 0 ? _ref : 0) || 0,
402
+ bundle_id: Number((_ref2 = (_item$bundle_id = item === null || item === void 0 ? void 0 : item.bundle_id) !== null && _item$bundle_id !== void 0 ? _item$bundle_id : item === null || item === void 0 ? void 0 : item.id) !== null && _ref2 !== void 0 ? _ref2 : 0) || 0,
403
403
  product_id: Number(item === null || item === void 0 ? void 0 : item.product_id) || 0,
404
404
  num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1
405
405
  };
@@ -413,15 +413,15 @@ export function buildProductLineFingerprint(productOptionItem, productBundle) {
413
413
 
414
414
  /**
415
415
  * removeProductFromOrder 仅传 SKU 时的通配 identity(对象上未声明选项键)。
416
- * 与显式 `product_option_item: []` 区分:后者只匹配「无选项」行。
416
+ * 与显式 `product_sku: { option: [] }` 区分:后者只匹配「无选项」行。
417
417
  */
418
418
  export function isSkuOnlyDeleteIdentity(x) {
419
419
  if (x.unique_identification_number || x.identity_key) return false;
420
- return !('product_option_item' in x) && !('product_bundle' in x);
420
+ return !('product_sku' in x) && !('product_bundle' in x);
421
421
  }
422
422
  function fingerprintForIdentityWithOptionKeys(x) {
423
423
  var row = x;
424
- var opts = 'product_option_item' in row ? Array.isArray(row.product_option_item) ? row.product_option_item : [] : [];
424
+ var opts = 'product_sku' in row ? getProductSkuOptions(row) : [];
425
425
  var buds = 'product_bundle' in row ? Array.isArray(row.product_bundle) ? row.product_bundle : [] : [];
426
426
  return buildProductLineFingerprint(opts, buds);
427
427
  }
@@ -437,10 +437,10 @@ function fingerprintForIdentityWithOptionKeys(x) {
437
437
  * 忽略线侧 identity_key,按内容语义匹配。这给「行已 opaque、调用方却想按 SKU 通配 / 选项指纹删除」留兼容入口。
438
438
  */
439
439
  export function isIdentityMatch(a, b) {
440
- var _ref2, _metadata$unique_iden, _metadata2, _ref3, _metadata$unique_iden2, _metadata3;
440
+ var _ref3, _metadata$unique_iden, _metadata2, _ref4, _metadata$unique_iden2, _metadata3;
441
441
  if (a.product_id !== b.product_id || a.product_variant_id !== b.product_variant_id) return false;
442
- var aUid = (_ref2 = (_metadata$unique_iden = (_metadata2 = a.metadata) === null || _metadata2 === void 0 ? void 0 : _metadata2.unique_identification_number) !== null && _metadata$unique_iden !== void 0 ? _metadata$unique_iden : a.unique_identification_number) !== null && _ref2 !== void 0 ? _ref2 : a.identity_key;
443
- var bUid = (_ref3 = (_metadata$unique_iden2 = (_metadata3 = b.metadata) === null || _metadata3 === void 0 ? void 0 : _metadata3.unique_identification_number) !== null && _metadata$unique_iden2 !== void 0 ? _metadata$unique_iden2 : b.unique_identification_number) !== null && _ref3 !== void 0 ? _ref3 : b.identity_key;
442
+ var aUid = (_ref3 = (_metadata$unique_iden = (_metadata2 = a.metadata) === null || _metadata2 === void 0 ? void 0 : _metadata2.unique_identification_number) !== null && _metadata$unique_iden !== void 0 ? _metadata$unique_iden : a.unique_identification_number) !== null && _ref3 !== void 0 ? _ref3 : a.identity_key;
443
+ var bUid = (_ref4 = (_metadata$unique_iden2 = (_metadata3 = b.metadata) === null || _metadata3 === void 0 ? void 0 : _metadata3.unique_identification_number) !== null && _metadata$unique_iden2 !== void 0 ? _metadata$unique_iden2 : b.unique_identification_number) !== null && _ref4 !== void 0 ? _ref4 : b.identity_key;
444
444
  var aHasKey = typeof aUid === 'string' && aUid.length > 0;
445
445
  var bHasKey = typeof bUid === 'string' && bUid.length > 0;
446
446
  if (aHasKey && bHasKey) return aUid === bUid;
@@ -481,7 +481,7 @@ export function getProductIdentityIndex(products, identity) {
481
481
  * - 因此多次 normalize 不会重复叠加 option/bundle。
482
482
  */
483
483
  export function normalizeOrderProduct(product) {
484
- var _product$metadata, _metadata$origin, _metadata$origin2, _variantList$find, _product$is_charge_ta;
484
+ var _product$metadata, _metadata$origin, _product$product_sku, _metadata$origin2, _variantList$find, _product$is_charge_ta;
485
485
  var metadata = _objectSpread({}, product.metadata || {});
486
486
  // 不透明 identity 契约:每条订单行必须带 identity_key。
487
487
  // 调用方未传时由 SDK 自动生成 UUID,后续 update/remove 只做严格比对,避免猜测合成 key。
@@ -493,9 +493,9 @@ export function normalizeOrderProduct(product) {
493
493
  if (priceOverride !== undefined && priceOverride !== null && priceOverride !== '' && Array.isArray(originOtherBundle) && originOtherBundle.length > 0) {
494
494
  var priceById = new Map();
495
495
  originOtherBundle.forEach(function (item) {
496
- var _item$price2;
496
+ var _item$price;
497
497
  if ((item === null || item === void 0 ? void 0 : item.id) == null) return;
498
- var unit = (_item$price2 = item.price) !== null && _item$price2 !== void 0 ? _item$price2 : item.bundle_selling_price;
498
+ var unit = (_item$price = item.price) !== null && _item$price !== void 0 ? _item$price : item.bundle_selling_price;
499
499
  if (unit === undefined || unit === null) return;
500
500
  priceById.set(String(item.id), String(unit));
501
501
  });
@@ -510,19 +510,22 @@ export function normalizeOrderProduct(product) {
510
510
  });
511
511
  }
512
512
  var normalizedBundle = bundleInput.map(function (item) {
513
- var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id, _ref4, _item$bundle_selling_, _ref5, _ref6, _item$price3, _ref7, _item$price_type, _ref8, _item$price_type_ext;
513
+ var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id, _ref5, _item$bundle_selling_, _ref6, _ref7, _item$price2, _ref8, _item$price_type, _ref9, _item$price_type_ext;
514
514
  return _objectSpread(_objectSpread({}, item), {}, {
515
515
  bundle_id: (_item$bundle_id2 = item.bundle_id) !== null && _item$bundle_id2 !== void 0 ? _item$bundle_id2 : item.id,
516
516
  bundle_product_id: (_item$bundle_product_ = item.bundle_product_id) !== null && _item$bundle_product_ !== void 0 ? _item$bundle_product_ : item._bundle_product_id,
517
517
  bundle_group_id: (_item$bundle_group_id = item.bundle_group_id) !== null && _item$bundle_group_id !== void 0 ? _item$bundle_group_id : item.group_id,
518
- bundle_selling_price: (_ref4 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref4 !== void 0 ? _ref4 : '0.00',
519
- price: (_ref5 = (_ref6 = (_item$price3 = item.price) !== null && _item$price3 !== void 0 ? _item$price3 : item.custom_price) !== null && _ref6 !== void 0 ? _ref6 : item.bundle_selling_price) !== null && _ref5 !== void 0 ? _ref5 : '0.00',
520
- price_type: (_ref7 = (_item$price_type = item.price_type) !== null && _item$price_type !== void 0 ? _item$price_type : item.custom_price_type) !== null && _ref7 !== void 0 ? _ref7 : '',
521
- price_type_ext: (_ref8 = (_item$price_type_ext = item.price_type_ext) !== null && _item$price_type_ext !== void 0 ? _item$price_type_ext : item.custom_price_type_ext) !== null && _ref8 !== void 0 ? _ref8 : ''
518
+ bundle_selling_price: (_ref5 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref5 !== void 0 ? _ref5 : '0.00',
519
+ price: (_ref6 = (_ref7 = (_item$price2 = item.price) !== null && _item$price2 !== void 0 ? _item$price2 : item.custom_price) !== null && _ref7 !== void 0 ? _ref7 : item.bundle_selling_price) !== null && _ref6 !== void 0 ? _ref6 : '0.00',
520
+ price_type: (_ref8 = (_item$price_type = item.price_type) !== null && _item$price_type !== void 0 ? _item$price_type : item.custom_price_type) !== null && _ref8 !== void 0 ? _ref8 : '',
521
+ price_type_ext: (_ref9 = (_item$price_type_ext = item.price_type_ext) !== null && _item$price_type_ext !== void 0 ? _item$price_type_ext : item.custom_price_type_ext) !== null && _ref9 !== void 0 ? _ref9 : ''
522
522
  });
523
523
  });
524
- var normalizedOptions = product.product_option_item || [];
524
+ var normalizedOptions = normalizeProductSkuOptions((_product$product_sku = product.product_sku) === null || _product$product_sku === void 0 ? void 0 : _product$product_sku.option);
525
525
  var optionSum = sumOptionUnitPrice(normalizedOptions);
526
+ var productSku = _objectSpread(_objectSpread({}, ensureProductSku(product)), {}, {
527
+ option: normalizedOptions
528
+ });
526
529
 
527
530
  // 1) 解析 source_product_price。
528
531
  // 优先级:
@@ -538,7 +541,7 @@ export function normalizeOrderProduct(product) {
538
541
  var variantPrice = Array.isArray(variantList) ? (_variantList$find = variantList.find(function (v) {
539
542
  return Number(v === null || v === void 0 ? void 0 : v.id) === variantId;
540
543
  })) === null || _variantList$find === void 0 ? void 0 : _variantList$find.price : undefined;
541
- var resolvedSource = function (_product$_origin, _product$_origin2, _ref9, _product$original_pri) {
544
+ var resolvedSource = function (_product$_origin, _product$_origin2, _ref10, _product$original_pri) {
542
545
  if (metadata.source_product_price !== undefined) {
543
546
  return String(metadata.source_product_price);
544
547
  }
@@ -556,7 +559,7 @@ export function normalizeOrderProduct(product) {
556
559
  if (!isV2 && metadata.main_product_original_price !== undefined) {
557
560
  return String(metadata.main_product_original_price);
558
561
  }
559
- return (_ref9 = (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : product.selling_price) !== null && _ref9 !== void 0 ? _ref9 : '0.00';
562
+ return (_ref10 = (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : product.selling_price) !== null && _ref10 !== void 0 ? _ref10 : '0.00';
560
563
  }();
561
564
 
562
565
  // 2) 派生 main_product_original_price(含 option、不含折扣)
@@ -625,7 +628,7 @@ export function normalizeOrderProduct(product) {
625
628
  product_id: product.product_id,
626
629
  num: getSafeProductNum(product.num),
627
630
  product_variant_id: product.product_variant_id,
628
- product_option_item: normalizedOptions,
631
+ product_sku: productSku,
629
632
  selling_price: composedSellingPrice,
630
633
  original_price: manualOriginalPrice,
631
634
  tax_fee: product.tax_fee || '0.00',
@@ -45,7 +45,7 @@ import { extractResourceIds, buildResourceProductMap } from "./utils/resource";
45
45
  import { buildTimeSlotGrid, isBusinessHoursCrossDay, generateTimeLabels } from "./utils/timeSlot";
46
46
  import { buildDateRangeSummary } from "./utils/dateSummary";
47
47
  import { mergeConsecutiveSlots, expandMergedSlotToIndividual, buildVenueIdentityKey, buildVenueBookingEntry, buildVenueResourceMetadata, buildPriceBreakdown } from "./utils/slotMerge";
48
- import { composeLinePrice, createUuidV4, sumOptionUnitPrice } from "../../modules/Order/utils";
48
+ import { composeLinePrice, createUuidV4, getProductSkuOptions, sumOptionUnitPrice } from "../../modules/Order/utils";
49
49
  import { OrderModule } from "../../modules/Order";
50
50
  import { RegisterAndLoginHooks } from "../RegisterAndLogin/types";
51
51
  import Decimal from 'decimal.js';
@@ -1726,7 +1726,9 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1726
1726
  product_variant_id: 0,
1727
1727
  num: 1,
1728
1728
  product_bundle: [],
1729
- product_option_item: [],
1729
+ product_sku: {
1730
+ option: []
1731
+ },
1730
1732
  discount_list: [],
1731
1733
  custom_deposit_data: customDepositData,
1732
1734
  metadata: {}
@@ -2183,7 +2185,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2183
2185
  totalPerUnitDiscount = (product.discount_list || []).reduce(function (sum, pd) {
2184
2186
  return sum + (pd.amount || 0);
2185
2187
  }, 0);
2186
- optionSum = sumOptionUnitPrice(product.product_option_item);
2188
+ optionSum = sumOptionUnitPrice(getProductSkuOptions(product));
2187
2189
  sourcePrice = (_product$metadata$sou = (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.source_product_price) !== null && _product$metadata$sou !== void 0 ? _product$metadata$sou : ((_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
2188
2190
  newSourceSellingPrice = new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount).toDecimalPlaces(2).toString();
2189
2191
  newMainSellingPrice = new Decimal(Number(newSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
@@ -71,8 +71,6 @@
71
71
  "num__comment": "数量;int;↕;必填。统一使用 num,不再使用 product_quantity。",
72
72
  "product_variant_id": 0,
73
73
  "product_variant_id__comment": "多规格 ID;int;↕;可选。",
74
- "product_option_item": [],
75
- "product_option_item__comment": "选项配置;array;↕;可选。",
76
74
  "selling_price": "50.00",
77
75
  "selling_price__comment": "销售单价(交易快照);string;←;服务端返回,不能依赖基准数据回填。",
78
76
  "original_price": "60.00",
@@ -1,49 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
-
29
- // src/model/strategy/adapter/promotion/index.ts
30
- var promotion_exports = {};
31
- __export(promotion_exports, {
32
- BUY_X_GET_Y_FREE_STRATEGY: () => import_examples.BUY_X_GET_Y_FREE_STRATEGY,
33
- PromotionAdapter: () => import_adapter.PromotionAdapter,
34
- PromotionEvaluator: () => import_evaluator.PromotionEvaluator,
35
- X_ITEMS_FOR_Y_PRICE_STRATEGY: () => import_examples.X_ITEMS_FOR_Y_PRICE_STRATEGY,
36
- default: () => import_adapter2.default
37
- });
38
- module.exports = __toCommonJS(promotion_exports);
39
- var import_evaluator = require("./evaluator");
40
- var import_adapter = require("./adapter");
41
- var import_adapter2 = __toESM(require("./adapter"));
42
- var import_examples = require("./examples");
43
- // Annotate the CommonJS export names for ESM import in node:
44
- 0 && (module.exports = {
45
- BUY_X_GET_Y_FREE_STRATEGY,
46
- PromotionAdapter,
47
- PromotionEvaluator,
48
- X_ITEMS_FOR_Y_PRICE_STRATEGY
49
- });
@@ -33,6 +33,7 @@ __export(buildCacheItemFromOrderLine_exports, {
33
33
  });
34
34
  module.exports = __toCommonJS(buildCacheItemFromOrderLine_exports);
35
35
  var import_dayjs = __toESM(require("dayjs"));
36
+ var import_utils = require("../../Order/utils");
36
37
  var import_manualProductDiscount = require("../../Order/utils/manualProductDiscount");
37
38
  var import_orderLineDisplay = require("./orderLineDisplay");
38
39
  function safeFormat(value, fmt) {
@@ -182,7 +183,7 @@ function buildCacheItemFromOrderLine(input) {
182
183
  const productOptionString = (0, import_orderLineDisplay.buildProductOptionStringFromOrderLine)(product);
183
184
  const other = {
184
185
  product_variant_id: product.product_variant_id ?? 0,
185
- option: Array.isArray(product.product_option_item) ? [...product.product_option_item] : [],
186
+ option: (0, import_utils.getProductSkuOptions)(product),
186
187
  bundle: Array.isArray(product.product_bundle) ? [...product.product_bundle] : []
187
188
  };
188
189
  const extend = {
@@ -22,6 +22,7 @@ __export(buildNormalProductCacheItemFromOrderLine_exports, {
22
22
  buildNormalProductCacheItemFromOrderLine: () => buildNormalProductCacheItemFromOrderLine
23
23
  });
24
24
  module.exports = __toCommonJS(buildNormalProductCacheItemFromOrderLine_exports);
25
+ var import_utils = require("../../Order/utils");
25
26
  var import_orderLineDisplay = require("./orderLineDisplay");
26
27
  function resolveSourceProductPrice(product, sourceProduct) {
27
28
  var _a, _b, _c;
@@ -81,7 +82,7 @@ function buildNormalProductCacheItemFromOrderLine(input) {
81
82
  const selling = Number(product.selling_price ?? 0);
82
83
  const original = Number(product.original_price ?? selling);
83
84
  const uid = (_a = product.metadata) == null ? void 0 : _a.unique_identification_number;
84
- const option = Array.isArray(product.product_option_item) ? [...product.product_option_item] : [];
85
+ const option = (0, import_utils.getProductSkuOptions)(product);
85
86
  const bundle = mapOrderBundleToOtherBundle(
86
87
  Array.isArray(product.product_bundle) ? product.product_bundle : []
87
88
  );
@@ -185,7 +185,7 @@ var formatProductToCartItemOrigin = (params) => {
185
185
  product_id: product.id,
186
186
  product_variant_id: product_variant_id || 0,
187
187
  product_bundle: ((_b = origin.product) == null ? void 0 : _b.product_bundle) || [],
188
- product_option_item: ((_c = origin.product) == null ? void 0 : _c.product_option_item) || [],
188
+ product_sku: ((_c = origin.product) == null ? void 0 : _c.product_sku) || { option: [] },
189
189
  metadata: {
190
190
  product_discount_difference
191
191
  }
@@ -196,7 +196,14 @@ var formatProductToCartItemOrigin = (params) => {
196
196
  origin.product.product_bundle = formatBundleToOrigin(bundle);
197
197
  }
198
198
  if (options == null ? void 0 : options.length) {
199
- origin.product.product_option_item = formatOptionsToOrigin(options);
199
+ origin.product.product_sku = {
200
+ ...origin.product.product_sku || {},
201
+ option: formatOptionsToOrigin(options).map((option) => {
202
+ const next = { ...option, add_price: option.add_price ?? option.price };
203
+ delete next.price;
204
+ return next;
205
+ })
206
+ };
200
207
  }
201
208
  }
202
209
  return origin;
@@ -265,7 +265,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
265
265
  private logSubmitBackendRejected;
266
266
  syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
267
267
  createOrder(params: CommitOrderParams['query']): {
268
- type: "virtual" | "appointment_booking";
268
+ type: "appointment_booking" | "virtual";
269
269
  platform: string;
270
270
  sales_channel: string;
271
271
  order_sales_channel: string;
@@ -317,8 +317,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
317
317
  private formatHydratedNamePair;
318
318
  private buildHydratedProductOptionString;
319
319
  private normalizeHydratedProductOptionItem;
320
- private mergeHydratedProductOptionDisplayFields;
321
- private resolveHydratedProductOptions;
322
320
  private normalizeHydratedOrderProduct;
323
321
  getLastOrderInfo(): Record<string, any> | undefined;
324
322
  getOrderInfo(order_id: number): Promise<any>;