@pisell/pisellos 2.2.282 → 2.2.284

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 (285) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  3. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  4. package/dist/model/strategy/strategy-example.js +5 -19
  5. package/dist/modules/Cart/index.js +0 -3
  6. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  7. package/dist/modules/Date/index.js +1 -5
  8. package/dist/modules/Discount/index.js +2 -4
  9. package/dist/modules/OpenData/index.js +0 -2
  10. package/dist/modules/Order/index.d.ts +2 -2
  11. package/dist/modules/Order/index.js +75 -91
  12. package/dist/modules/Order/types.d.ts +3 -1
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Rules/index.js +1 -4
  15. package/dist/modules/Schedule/index.js +0 -1
  16. package/dist/modules/Schedule/utils.js +0 -1
  17. package/dist/modules/Step/index.js +0 -1
  18. package/dist/modules/Summary/utils.d.ts +1 -1
  19. package/dist/plugins/request.js +1 -4
  20. package/dist/plugins/window.js +2 -6
  21. package/dist/server/index.js +97 -129
  22. package/dist/server/modules/menu/index.js +32 -41
  23. package/dist/server/modules/order/index.js +2 -4
  24. package/dist/server/modules/products/index.js +24 -42
  25. package/dist/server/modules/quotation/index.js +29 -38
  26. package/dist/server/modules/resource/index.js +3 -4
  27. package/dist/server/modules/schedule/index.js +27 -35
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BaseSales/index.js +100 -72
  30. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  31. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  32. package/dist/solution/BookingByStep/index.d.ts +1 -1
  33. package/dist/solution/BookingByStep/index.js +7 -59
  34. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  35. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  36. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  37. package/dist/solution/BookingTicket/index.js +8 -4
  38. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  39. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  40. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  41. package/dist/solution/BuyTickets/index.js +9 -12
  42. package/dist/solution/Checkout/index.js +177 -252
  43. package/dist/solution/Checkout/utils/index.js +4 -16
  44. package/dist/solution/RegisterAndLogin/index.js +30 -76
  45. package/dist/solution/ScanOrder/index.js +50 -60
  46. package/dist/solution/ShopDiscount/index.js +2 -7
  47. package/dist/solution/VenueBooking/index.js +45 -55
  48. package/dist/utils/task.js +15 -18
  49. package/dist/utils/watch.js +0 -1
  50. package/lib/apis/picoding.js +2 -0
  51. package/lib/core/index.js +131 -131
  52. package/lib/effects/index.js +46 -57
  53. package/lib/index.js +82 -49
  54. package/lib/model/index.js +14 -21
  55. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  56. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  57. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  58. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  59. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  60. package/lib/model/strategy/adapter/index.js +100 -64
  61. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  62. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  63. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  64. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  65. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  66. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  67. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  68. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  69. package/lib/model/strategy/adapter/promotion/index.js +1 -51
  70. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  71. package/lib/model/strategy/adapter/type.js +4 -16
  72. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  73. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  74. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  75. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  76. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  77. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  78. package/lib/model/strategy/engine.js +270 -168
  79. package/lib/model/strategy/index.js +49 -34
  80. package/lib/model/strategy/strategy-example.js +243 -239
  81. package/lib/model/strategy/type.js +100 -40
  82. package/lib/modules/Account/index.js +39 -53
  83. package/lib/modules/Account/types.js +20 -33
  84. package/lib/modules/AccountList/index.js +116 -154
  85. package/lib/modules/AccountList/types.js +30 -31
  86. package/lib/modules/AccountList/utils.js +18 -30
  87. package/lib/modules/BaseModule.js +23 -42
  88. package/lib/modules/BookingContext/index.js +158 -136
  89. package/lib/modules/BookingContext/types.js +46 -32
  90. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  91. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  92. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  93. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  94. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  95. package/lib/modules/BookingContext/utils/index.js +124 -41
  96. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  97. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  98. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  99. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  100. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  101. package/lib/modules/BookingContext/utils/resources.js +209 -167
  102. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  103. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  104. package/lib/modules/Cart/index.js +170 -124
  105. package/lib/modules/Cart/types.js +46 -51
  106. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  107. package/lib/modules/Cart/utils/cartDate.js +56 -61
  108. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  109. package/lib/modules/Cart/utils/cartNote.js +27 -32
  110. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  111. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  112. package/lib/modules/Cart/utils/cartResource.js +70 -78
  113. package/lib/modules/Cart/utils/changePrice.js +22 -50
  114. package/lib/modules/Cart/utils/index.js +106 -48
  115. package/lib/modules/Customer/constants.js +13 -34
  116. package/lib/modules/Customer/index.js +235 -172
  117. package/lib/modules/Customer/types.js +38 -35
  118. package/lib/modules/Date/index.js +116 -115
  119. package/lib/modules/Date/types.js +16 -28
  120. package/lib/modules/Date/utils.js +174 -123
  121. package/lib/modules/Discount/index.js +122 -127
  122. package/lib/modules/Discount/types.js +9 -31
  123. package/lib/modules/Guests/index.js +30 -56
  124. package/lib/modules/Guests/types.js +23 -33
  125. package/lib/modules/Holder/index.js +209 -189
  126. package/lib/modules/Holder/types.js +4 -16
  127. package/lib/modules/Holder/utils.js +20 -49
  128. package/lib/modules/OpenData/index.js +70 -76
  129. package/lib/modules/OpenData/types.js +4 -16
  130. package/lib/modules/OpenData/utils.js +44 -78
  131. package/lib/modules/Order/index.d.ts +2 -2
  132. package/lib/modules/Order/index.js +1733 -2121
  133. package/lib/modules/Order/payment-utils.js +77 -120
  134. package/lib/modules/Order/types.d.ts +3 -1
  135. package/lib/modules/Order/types.js +87 -35
  136. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  137. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  138. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  139. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  140. package/lib/modules/Order/utils.js +814 -647
  141. package/lib/modules/Payment/cash.js +20 -33
  142. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  143. package/lib/modules/Payment/eftpos.js +16 -30
  144. package/lib/modules/Payment/index.js +532 -399
  145. package/lib/modules/Payment/mx51.js +1 -0
  146. package/lib/modules/Payment/types.js +230 -108
  147. package/lib/modules/Payment/utils.js +52 -51
  148. package/lib/modules/Payment/walletpass.js +485 -660
  149. package/lib/modules/Product/index.js +51 -46
  150. package/lib/modules/Product/types.js +4 -16
  151. package/lib/modules/Product/utils.js +32 -33
  152. package/lib/modules/ProductList/index.js +113 -123
  153. package/lib/modules/ProductList/types.js +9 -31
  154. package/lib/modules/Quotation/index.js +66 -100
  155. package/lib/modules/Quotation/types.js +4 -16
  156. package/lib/modules/Resource/index.js +27 -59
  157. package/lib/modules/Resource/types.js +22 -32
  158. package/lib/modules/Resource/utils.js +30 -38
  159. package/lib/modules/ResourcePlanner/index.js +60 -61
  160. package/lib/modules/ResourcePlanner/planner.js +346 -384
  161. package/lib/modules/ResourcePlanner/types.js +4 -16
  162. package/lib/modules/Rules/index.js +1218 -959
  163. package/lib/modules/Rules/types.js +17 -40
  164. package/lib/modules/SalesSummary/index.js +85 -90
  165. package/lib/modules/SalesSummary/types.js +4 -16
  166. package/lib/modules/SalesSummary/utils.js +355 -430
  167. package/lib/modules/ScanOrderLogger/index.js +59 -79
  168. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  169. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  170. package/lib/modules/ScanOrderLogger/types.js +4 -16
  171. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  172. package/lib/modules/Schedule/index.js +100 -114
  173. package/lib/modules/Schedule/type.js +4 -16
  174. package/lib/modules/Schedule/types.js +4 -16
  175. package/lib/modules/Schedule/utils.js +433 -291
  176. package/lib/modules/Step/index.js +40 -52
  177. package/lib/modules/Step/tyeps.js +4 -16
  178. package/lib/modules/Summary/index.js +66 -71
  179. package/lib/modules/Summary/types.js +4 -16
  180. package/lib/modules/Summary/utils.d.ts +1 -1
  181. package/lib/modules/Summary/utils.js +773 -418
  182. package/lib/modules/SurchargeList/index.js +46 -60
  183. package/lib/modules/SurchargeList/types.js +4 -16
  184. package/lib/modules/index.js +245 -63
  185. package/lib/plugins/app.js +4 -16
  186. package/lib/plugins/index.js +36 -25
  187. package/lib/plugins/request.js +137 -126
  188. package/lib/plugins/shopStore.js +4 -16
  189. package/lib/plugins/user.js +4 -16
  190. package/lib/plugins/window.js +171 -179
  191. package/lib/server/index.js +3027 -2655
  192. package/lib/server/modules/floor-plan/index.js +102 -123
  193. package/lib/server/modules/floor-plan/types.js +15 -30
  194. package/lib/server/modules/index.js +106 -68
  195. package/lib/server/modules/menu/index.js +146 -122
  196. package/lib/server/modules/menu/types.js +18 -31
  197. package/lib/server/modules/order/index.js +758 -956
  198. package/lib/server/modules/order/types.js +122 -33
  199. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  200. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  201. package/lib/server/modules/payment/index.js +59 -83
  202. package/lib/server/modules/payment/types.js +4 -16
  203. package/lib/server/modules/products/index.js +575 -459
  204. package/lib/server/modules/products/types.js +44 -34
  205. package/lib/server/modules/quotation/index.js +137 -172
  206. package/lib/server/modules/quotation/types.js +21 -31
  207. package/lib/server/modules/resource/index.js +213 -184
  208. package/lib/server/modules/resource/types.js +42 -33
  209. package/lib/server/modules/schedule/index.js +135 -123
  210. package/lib/server/modules/schedule/types.js +14 -21
  211. package/lib/server/modules/schedule/utils.js +334 -163
  212. package/lib/server/types.js +4 -16
  213. package/lib/server/utils/index.js +25 -23
  214. package/lib/server/utils/product.js +196 -139
  215. package/lib/server/utils/schedule.js +34 -41
  216. package/lib/server/utils/small-ticket.js +479 -456
  217. package/lib/server/utils/time.js +40 -49
  218. package/lib/solution/BaseSales/index.js +1209 -1412
  219. package/lib/solution/BaseSales/types.js +42 -38
  220. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  221. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  222. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  223. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  224. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  225. package/lib/solution/BaseSales/utils.js +158 -143
  226. package/lib/solution/BookingByStep/index.d.ts +1 -1
  227. package/lib/solution/BookingByStep/index.js +1527 -1340
  228. package/lib/solution/BookingByStep/types.js +40 -99
  229. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  230. package/lib/solution/BookingByStep/utils/products.js +42 -52
  231. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  232. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  233. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  234. package/lib/solution/BookingTicket/index.js +598 -514
  235. package/lib/solution/BookingTicket/types.js +99 -77
  236. package/lib/solution/BookingTicket/utils/addProductDecision.js +225 -187
  237. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  238. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  239. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  240. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  241. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  242. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  243. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  244. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  245. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  246. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  247. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  248. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  249. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  250. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  251. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  252. package/lib/solution/BuyTickets/index.js +67 -70
  253. package/lib/solution/BuyTickets/types.js +22 -38
  254. package/lib/solution/Checkout/index.js +1451 -1158
  255. package/lib/solution/Checkout/types.js +91 -61
  256. package/lib/solution/Checkout/utils/index.js +228 -156
  257. package/lib/solution/PlaceOrder/index.js +55 -0
  258. package/lib/solution/RegisterAndLogin/config.js +493 -460
  259. package/lib/solution/RegisterAndLogin/index.js +633 -630
  260. package/lib/solution/RegisterAndLogin/types.js +189 -76
  261. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  262. package/lib/solution/Sales/index.js +328 -324
  263. package/lib/solution/Sales/types.js +27 -33
  264. package/lib/solution/ScanOrder/index.js +832 -864
  265. package/lib/solution/ScanOrder/types.js +33 -34
  266. package/lib/solution/ScanOrder/utils.js +409 -374
  267. package/lib/solution/ShopDiscount/index.js +226 -232
  268. package/lib/solution/ShopDiscount/types.js +15 -37
  269. package/lib/solution/ShopDiscount/utils.js +300 -172
  270. package/lib/solution/UnifiedBookingSales/index.js +437 -487
  271. package/lib/solution/UnifiedBookingSales/types.js +12 -31
  272. package/lib/solution/VenueBooking/index.js +811 -879
  273. package/lib/solution/VenueBooking/types.js +19 -39
  274. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  275. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  276. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  277. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  278. package/lib/solution/VenueBooking/utils.js +130 -67
  279. package/lib/solution/index.js +124 -41
  280. package/lib/store/createStore.js +32 -29
  281. package/lib/types/index.js +4 -16
  282. package/lib/utils/payment-number.js +26 -46
  283. package/lib/utils/task.js +36 -36
  284. package/lib/utils/watch.js +81 -47
  285. package/package.json +2 -1
@@ -1,152 +1,154 @@
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);
1
+ "use strict";
28
2
 
29
- // src/solution/BookingTicket/utils/addProductDecision.ts
30
- var addProductDecision_exports = {};
31
- __export(addProductDecision_exports, {
32
- buildCacheItemFromCartDetail: () => buildCacheItemFromCartDetail,
33
- buildCacheItemFromDetail: () => buildCacheItemFromDetail,
34
- buildRequiresDetailPayload: () => buildRequiresDetailPayload,
35
- decideAddProduct: () => decideAddProduct,
36
- decideAfterDetail: () => decideAfterDetail,
37
- decideAutoClose: () => decideAutoClose,
38
- getIsEject: () => getIsEject,
39
- getIsOnlySession: () => getIsOnlySession,
40
- prepareBookingCacheItem: () => prepareBookingCacheItem,
41
- transformDetailToProductAndBooking: () => transformDetailToProductAndBooking
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
42
5
  });
43
- module.exports = __toCommonJS(addProductDecision_exports);
44
- var import_dayjs = __toESM(require("dayjs"));
45
- var import_BookingContext = require("../../../modules/BookingContext");
46
- var import_transformBaseProductToOrderProduct = require("../../BaseSales/utils/transformBaseProductToOrderProduct");
47
- var import_weighingProductSku = require("./weighingProductSku");
6
+ exports.buildCacheItemFromCartDetail = buildCacheItemFromCartDetail;
7
+ exports.buildCacheItemFromDetail = buildCacheItemFromDetail;
8
+ exports.buildRequiresDetailPayload = buildRequiresDetailPayload;
9
+ exports.decideAddProduct = decideAddProduct;
10
+ exports.decideAfterDetail = decideAfterDetail;
11
+ exports.decideAutoClose = decideAutoClose;
12
+ exports.getIsEject = getIsEject;
13
+ exports.getIsOnlySession = getIsOnlySession;
14
+ exports.prepareBookingCacheItem = prepareBookingCacheItem;
15
+ exports.transformDetailToProductAndBooking = transformDetailToProductAndBooking;
16
+ var _dayjs = _interopRequireDefault(require("dayjs"));
17
+ var _BookingContext = require("../../../modules/BookingContext");
18
+ var _transformBaseProductToOrderProduct = require("../../BaseSales/utils/transformBaseProductToOrderProduct");
19
+ var _weighingProductSku = require("./weighingProductSku");
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ /**
22
+ * cart.addProduct 两阶段决策(与 ticketBooking `handleSelectProduct` 对齐):
23
+ *
24
+ * 1. `requiresDetail`:规格 / SKU / 套餐 / Session / 称重弹窗(门禁:`isOpenDetailModal` / `cartDetailValue` / `open_sold_weight`)
25
+ * 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(门禁:`getIsAutoClose` on prepared cacheItem)
26
+ * 3. `add`:两关均通过,直接 transform + 加车
27
+ */
28
+
29
+ /** 资源 / 时间编辑抽屉所需的最小 payload。 */
30
+
31
+ /**
32
+ * 第一段:是否需要打开规格 / SKU 详情弹窗(与 addService `handleSelectProduct` 一致,不用 `getIsEject` 做门禁)。
33
+ */
48
34
  function needsSpecDetailModal(item) {
49
- if (item == null ? void 0 : item.open_sold_weight)
50
- return true;
51
- if (item == null ? void 0 : item.isOpenDetailModal)
52
- return true;
53
- if (!(item == null ? void 0 : item.cartDetailValue))
54
- return true;
35
+ if (item?.open_sold_weight) return true;
36
+ if (item?.isOpenDetailModal) return true;
37
+ if (!item?.cartDetailValue) return true;
55
38
  return false;
56
39
  }
40
+
41
+ /**
42
+ * 第二段:预约商品是否仍需打开资源 / 时间编辑(与 info2 `cacheItem.autoClose` 等价)。
43
+ */
57
44
  function needsBookingEdit(cacheItem, ctx) {
58
- if (isNormalBookingProduct(cacheItem))
59
- return false;
60
- const isAutoAllocationOn = (ctx == null ? void 0 : ctx.isAutoAllocationOn) || (() => true);
61
- return !(0, import_BookingContext.getIsAutoClose)(cacheItem, isAutoAllocationOn);
45
+ if (isNormalBookingProduct(cacheItem)) return false;
46
+ const isAutoAllocationOn = ctx?.isAutoAllocationOn || (() => true);
47
+ return !(0, _BookingContext.getIsAutoClose)(cacheItem, isAutoAllocationOn);
62
48
  }
63
49
  function buildRequiresBookingEditPayload(cacheItem, ctx) {
64
50
  return {
65
51
  cacheItem,
66
- customerId: ctx == null ? void 0 : ctx.customerId,
67
- date: typeof (ctx == null ? void 0 : ctx.date) === "string" ? ctx.date : null
52
+ customerId: ctx?.customerId,
53
+ date: typeof ctx?.date === 'string' ? ctx.date : null
68
54
  };
69
55
  }
56
+
57
+ /**
58
+ * 加车主决策:对齐 `handleSelectProduct` 两段分支。
59
+ */
70
60
  function decideAddProduct(item, ctx) {
71
61
  const derivedCtx = withDerivedBookingCtx(ctx);
72
62
  if (needsSpecDetailModal(item)) {
73
63
  return {
74
- action: "requiresDetail",
64
+ action: 'requiresDetail',
75
65
  payload: buildRequiresDetailPayload(item, derivedCtx)
76
66
  };
77
67
  }
78
- const cacheItem = prepareBookingCacheItem(
79
- buildCacheItemFromCartDetail(item, derivedCtx),
80
- derivedCtx
81
- );
68
+ const cacheItem = prepareBookingCacheItem(buildCacheItemFromCartDetail(item, derivedCtx), derivedCtx);
82
69
  if (needsBookingEdit(cacheItem, derivedCtx)) {
83
70
  return {
84
- action: "requiresBookingEdit",
71
+ action: 'requiresBookingEdit',
85
72
  cacheItem,
86
73
  payload: buildRequiresBookingEditPayload(cacheItem, derivedCtx)
87
74
  };
88
75
  }
89
- return { action: "add", cacheItem };
76
+ return {
77
+ action: 'add',
78
+ cacheItem
79
+ };
90
80
  }
81
+
82
+ /**
83
+ * 规格弹窗 callback 后的第二段决策(对齐 `handleBooking4Service` 内 `cacheItem.autoClose` 分支)。
84
+ */
91
85
  function decideAfterDetail(cacheItem, ctx) {
92
86
  const derivedCtx = withDerivedBookingCtx(ctx);
93
87
  const extended = prepareBookingCacheItem(cacheItem, derivedCtx);
94
88
  if (needsBookingEdit(extended, derivedCtx)) {
95
89
  return {
96
- action: "requiresBookingEdit",
90
+ action: 'requiresBookingEdit',
97
91
  cacheItem: extended,
98
92
  payload: buildRequiresBookingEditPayload(extended, derivedCtx)
99
93
  };
100
94
  }
101
- return { action: "add", cacheItem: extended };
95
+ return {
96
+ action: 'add',
97
+ cacheItem: extended
98
+ };
102
99
  }
100
+
101
+ /**
102
+ * @deprecated 请用 `decideAddProduct`;保留兼容:autoClose=true 仅表示可直接加车(action=add)。
103
+ */
104
+
103
105
  function isNormalBookingProduct(item) {
104
- return !(0, import_BookingContext.isBookingProduct)(item);
106
+ return !(0, _BookingContext.isBookingProduct)(item);
105
107
  }
106
108
  function hasPreparedBookingExtend(cacheItem) {
107
- var _a;
108
- if ((0, import_BookingContext.productNeedsResourceExtend)(cacheItem) && !(0, import_BookingContext.hasActualResourceSelection)(cacheItem)) {
109
+ // 场次/时间已写入但资源仍未选中时,须继续走 getProductExtend(对齐 info2 必定调用 getProductExtend)。
110
+ if ((0, _BookingContext.productNeedsResourceExtend)(cacheItem) && !(0, _BookingContext.hasActualResourceSelection)(cacheItem)) {
109
111
  return false;
110
112
  }
111
- const ext = (cacheItem == null ? void 0 : cacheItem._extend) || {};
112
- const hasResourceState = Boolean(
113
- (0, import_BookingContext.hasActualResourceSelection)(cacheItem) && ext.capacity && (ext.endDate || ext.end_date)
114
- );
115
- const hasSessionState = Boolean(
116
- (0, import_BookingContext.isSessionProduct)(cacheItem) && ((_a = ext.other) == null ? void 0 : _a.session) && ext.start_time && (ext.end_time || ext.endDate)
117
- );
113
+ const ext = cacheItem?._extend || {};
114
+ const hasResourceState = Boolean((0, _BookingContext.hasActualResourceSelection)(cacheItem) && ext.capacity && (ext.endDate || ext.end_date));
115
+ const hasSessionState = Boolean((0, _BookingContext.isSessionProduct)(cacheItem) && ext.other?.session && ext.start_time && (ext.end_time || ext.endDate));
118
116
  const hasMultiDayState = Boolean(isNormalBookingProduct(cacheItem) === false && isMultiDayLike(cacheItem));
119
- const hasExplicitTimeState = Boolean(
120
- ext.duration && (ext.start_date || ext.startDate) && ext.start_time && (ext.end_date && ext.end_time || ext.endDate)
121
- );
117
+ const hasExplicitTimeState = Boolean(ext.duration && (ext.start_date || ext.startDate) && ext.start_time && (ext.end_date && ext.end_time || ext.endDate));
122
118
  return hasResourceState || hasSessionState || hasMultiDayState || hasExplicitTimeState;
123
119
  }
120
+
121
+ /** 弹窗 / Host 使用的日历日,与 ticketBooking `state.date.format('YYYY-MM-DD')` 对齐。 */
124
122
  function formatBookingDateForUI(date) {
125
- if (date == null || date === "")
126
- return null;
127
- const parsed = (0, import_dayjs.default)(date);
128
- return parsed.isValid() ? parsed.format("YYYY-MM-DD") : null;
123
+ if (date == null || date === '') return null;
124
+ const parsed = (0, _dayjs.default)(date);
125
+ return parsed.isValid() ? parsed.format('YYYY-MM-DD') : null;
129
126
  }
127
+
128
+ /** 补齐 presetStartTime(decideAutoClose / transform 与 BookingTicket.buildAddProductCtx 共用)。 */
130
129
  function withDerivedBookingCtx(ctx) {
131
- if (!ctx)
132
- return {};
130
+ if (!ctx) return {};
133
131
  return {
134
132
  ...ctx,
135
- presetStartTime: ctx.presetStartTime ?? (0, import_BookingContext.derivePresetStartTimeFromDate)(ctx.date)
133
+ presetStartTime: ctx.presetStartTime ?? (0, _BookingContext.derivePresetStartTimeFromDate)(ctx.date)
136
134
  };
137
135
  }
138
136
  function isMultiDayLike(cacheItem) {
139
- var _a;
140
- const ext = (cacheItem == null ? void 0 : cacheItem._extend) || {};
141
- return Boolean(
142
- ((_a = cacheItem == null ? void 0 : cacheItem.duration) == null ? void 0 : _a.type) === "days" && ext.duration && ext.start_date && ext.end_date
143
- );
137
+ const ext = cacheItem?._extend || {};
138
+ return Boolean(cacheItem?.duration?.type === 'days' && ext.duration && ext.start_date && ext.end_date);
144
139
  }
140
+
141
+ /**
142
+ * 统一补齐预约商品的运行态字段。
143
+ *
144
+ * 新链路不再让决策和提交各自重建 cacheItem;这里作为唯一入口补齐
145
+ * `_extend.resource / capacity / startDate / endDate` 等后续 booking mapper 需要的字段。
146
+ */
145
147
  function prepareBookingCacheItem(cacheItem, ctx) {
146
148
  if (isNormalBookingProduct(cacheItem) || hasPreparedBookingExtend(cacheItem)) {
147
149
  return cacheItem;
148
150
  }
149
- return (0, import_BookingContext.getProductExtend)({
151
+ return (0, _BookingContext.getProductExtend)({
150
152
  cacheItem,
151
153
  ctx: withDerivedBookingCtx(ctx),
152
154
  isDisabledTime: true
@@ -154,62 +156,83 @@ function prepareBookingCacheItem(cacheItem, ctx) {
154
156
  }
155
157
  function decideAutoClose(item, ctx) {
156
158
  const decision = decideAddProduct(item, ctx);
157
- if (decision.action === "add") {
158
- return { autoClose: true, cacheItem: decision.cacheItem };
159
+ if (decision.action === 'add') {
160
+ return {
161
+ autoClose: true,
162
+ cacheItem: decision.cacheItem
163
+ };
159
164
  }
160
- if (decision.action === "requiresBookingEdit") {
161
- return { autoClose: false, cacheItem: decision.cacheItem };
165
+ if (decision.action === 'requiresBookingEdit') {
166
+ return {
167
+ autoClose: false,
168
+ cacheItem: decision.cacheItem
169
+ };
162
170
  }
163
- return { autoClose: false };
171
+ return {
172
+ autoClose: false
173
+ };
164
174
  }
165
- function getIsEject(item, type = "select") {
166
- const isSession = (0, import_BookingContext.isSessionProduct)(item);
167
- const isSoldByWeight = Boolean(item == null ? void 0 : item.open_sold_weight);
168
- const need = type === "detail" || ((item == null ? void 0 : item.bundle_group_count) || 0) > 0 || ((item == null ? void 0 : item.option_group_count) || 0) > 0 || ((item == null ? void 0 : item.is_variant) || 0) > 0 || isSession || isSoldByWeight;
175
+
176
+ /**
177
+ * 替代 info2 `getIsEject`:商品是否需要弹窗(含 type='detail' / option_group / bundle_group / variant / session / sold_by_weight)。
178
+ */
179
+ function getIsEject(item, type = 'select') {
180
+ const isSession = (0, _BookingContext.isSessionProduct)(item);
181
+ const isSoldByWeight = Boolean(item?.open_sold_weight);
182
+ const need = type === 'detail' || (item?.bundle_group_count || 0) > 0 || (item?.option_group_count || 0) > 0 || (item?.is_variant || 0) > 0 || isSession || isSoldByWeight;
169
183
  return need ? 1 : 0;
170
184
  }
185
+
186
+ /** 仅 session 商品(且没有 variant/option/package)。 */
171
187
  function getIsOnlySession(item) {
172
- const isSession = (0, import_BookingContext.isSessionProduct)(item);
173
- return !(((item == null ? void 0 : item.bundle_group_count) || 0) > 0 || ((item == null ? void 0 : item.option_group_count) || 0) > 0 || ((item == null ? void 0 : item.is_variant) || 0) > 0) && isSession;
188
+ const isSession = (0, _BookingContext.isSessionProduct)(item);
189
+ return !((item?.bundle_group_count || 0) > 0 || (item?.option_group_count || 0) > 0 || (item?.is_variant || 0) > 0) && isSession;
174
190
  }
191
+
192
+ /**
193
+ * 拼装 requiresDetail payload;showConfig 与 info2 弹窗内部判断一致。
194
+ */
175
195
  function buildRequiresDetailPayload(item, ctx) {
176
196
  const isOnlySession = getIsOnlySession(item);
177
- const isEject = getIsEject(item, (ctx == null ? void 0 : ctx.type) || "select");
197
+ const isEject = getIsEject(item, ctx?.type || 'select');
178
198
  return {
179
199
  item,
180
200
  showConfig: {
181
- option: ((item == null ? void 0 : item.option_group_count) || 0) > 0,
182
- session: (0, import_BookingContext.isSessionProduct)(item),
183
- variant: ((item == null ? void 0 : item.is_variant) || 0) > 0,
184
- package: ((item == null ? void 0 : item.bundle_group_count) || 0) > 0,
185
- number: Boolean(item == null ? void 0 : item.open_sold_weight)
201
+ option: (item?.option_group_count || 0) > 0,
202
+ session: (0, _BookingContext.isSessionProduct)(item),
203
+ variant: (item?.is_variant || 0) > 0,
204
+ package: (item?.bundle_group_count || 0) > 0,
205
+ number: Boolean(item?.open_sold_weight)
186
206
  },
187
207
  isOnlySession,
188
208
  isEject: isEject ? 1 : 0,
189
- customerId: ctx == null ? void 0 : ctx.customerId,
190
- date: formatBookingDateForUI(ctx == null ? void 0 : ctx.date),
209
+ customerId: ctx?.customerId,
210
+ date: formatBookingDateForUI(ctx?.date),
191
211
  productData: item
192
212
  };
193
213
  }
214
+
215
+ /**
216
+ * 用 item.cartDetailValue 拼装一个 cacheItem 雏形(与 info2 `handleDirectAddService` 等价路径)。
217
+ * 这里只补 `_extend.start_date / quantity / other` 等运行态字段;后续走 getProductExtend 才会补齐资源 / 时间。
218
+ */
194
219
  function buildCacheItemFromCartDetail(item, ctx) {
195
- var _a;
196
220
  const cartDetailValue = item.cartDetailValue || {};
197
221
  const other = JSON.parse(JSON.stringify(cartDetailValue || {}));
198
222
  other.session = cartDetailValue.session;
223
+ /** 列表/接口可能只带 product_id 不带 id,勿用 item.id 覆盖掉已有 product_id */
199
224
  const resolvedId = item.id ?? item.product_id;
200
- let extend = (0, import_BookingContext.applySessionTimesToExtend)(
201
- item,
202
- {
203
- start_date: (ctx == null ? void 0 : ctx.date) || void 0,
204
- /** 列表连点 / 防抖合并时以 ctx.quantity 为准,避免 cartDetailValue 默认 1 盖掉合并数量 */
205
- quantity: (ctx == null ? void 0 : ctx.quantity) ?? (cartDetailValue == null ? void 0 : cartDetailValue.quantity) ?? 1,
206
- product_name: item.title,
207
- other,
208
- isNormalProduct: !(0, import_BookingContext.isBookingProduct)(item),
209
- price: ((_a = item == null ? void 0 : item._extend) == null ? void 0 : _a.price) ?? (item == null ? void 0 : item.price)
210
- },
211
- { date: ctx == null ? void 0 : ctx.date }
212
- );
225
+ let extend = (0, _BookingContext.applySessionTimesToExtend)(item, {
226
+ start_date: ctx?.date || undefined,
227
+ /** 列表连点 / 防抖合并时以 ctx.quantity 为准,避免 cartDetailValue 默认 1 盖掉合并数量 */
228
+ quantity: ctx?.quantity ?? cartDetailValue?.quantity ?? 1,
229
+ product_name: item.title,
230
+ other,
231
+ isNormalProduct: !(0, _BookingContext.isBookingProduct)(item),
232
+ price: item?._extend?.price ?? item?.price
233
+ }, {
234
+ date: ctx?.date
235
+ });
213
236
  return {
214
237
  ...item,
215
238
  id: resolvedId,
@@ -219,104 +242,119 @@ function buildCacheItemFromCartDetail(item, ctx) {
219
242
  new: 1
220
243
  };
221
244
  }
245
+
246
+ /**
247
+ * 用 Info2 callback 的 (e, extension_type, detail) 拼装 cacheItem。
248
+ *
249
+ * 保留 detail._extend 中的 pricing / note(规格弹窗改价、备注等),
250
+ * 再叠加 session 时间、ctx.quantity 等运行态字段;other 以 callback `e` 为准。
251
+ */
222
252
  function buildCacheItemFromDetail(item, detailResult, ctx) {
223
- var _a, _b, _c;
224
253
  const _currentItem = detailResult.detail || item;
225
254
  const _detail = _currentItem;
226
- const detailExtend = (_detail == null ? void 0 : _detail._extend) || {};
255
+ const detailExtend = _detail?._extend || {};
227
256
  const other = JSON.parse(JSON.stringify(detailResult.e || {}));
228
- other.session = (_a = detailResult.e) == null ? void 0 : _a.session;
257
+ other.session = detailResult.e?.session;
229
258
  const resolvedId = _currentItem.id ?? _currentItem.product_id;
230
- const mergedItem = { ...item, ..._detail, extension_type: _detail.extension_type ?? item.extension_type };
231
- const runtimeExtend = (0, import_BookingContext.applySessionTimesToExtend)(
232
- mergedItem,
233
- {
234
- start_date: (ctx == null ? void 0 : ctx.date) || detailExtend.start_date || void 0,
235
- quantity: (ctx == null ? void 0 : ctx.quantity) ?? ((_b = detailResult.e) == null ? void 0 : _b.quantity) ?? detailExtend.quantity ?? 1,
236
- price: detailExtend.price ?? (_detail == null ? void 0 : _detail.price) ?? (item == null ? void 0 : item.price),
237
- product_name: _currentItem.title ?? detailExtend.product_name,
238
- other,
239
- isNormalProduct: !(0, import_BookingContext.isBookingProduct)(mergedItem)
240
- },
241
- { date: ctx == null ? void 0 : ctx.date }
242
- );
259
+ const mergedItem = {
260
+ ...item,
261
+ ..._detail,
262
+ extension_type: _detail.extension_type ?? item.extension_type
263
+ };
264
+ const runtimeExtend = (0, _BookingContext.applySessionTimesToExtend)(mergedItem, {
265
+ start_date: ctx?.date || detailExtend.start_date || undefined,
266
+ quantity: ctx?.quantity ?? detailResult.e?.quantity ?? detailExtend.quantity ?? 1,
267
+ price: detailExtend.price ?? _detail?.price ?? item?.price,
268
+ product_name: _currentItem.title ?? detailExtend.product_name,
269
+ other,
270
+ isNormalProduct: !(0, _BookingContext.isBookingProduct)(mergedItem)
271
+ }, {
272
+ date: ctx?.date
273
+ });
243
274
  const extend = {
244
275
  ...detailExtend,
245
276
  ...runtimeExtend,
246
277
  other
247
278
  };
248
- const note = detailExtend.note ?? (_detail == null ? void 0 : _detail.note);
279
+ const note = detailExtend.note ?? _detail?.note;
249
280
  return {
250
281
  ..._detail,
251
282
  id: resolvedId,
252
283
  product_id: resolvedId,
253
284
  extension_type: mergedItem.extension_type,
254
- _key: (_c = detailResult.e) == null ? void 0 : _c.key,
255
- ...note != null && note !== "" ? { note: String(note) } : {},
285
+ _key: detailResult.e?.key,
286
+ ...(note != null && note !== '' ? {
287
+ note: String(note)
288
+ } : {}),
256
289
  _extend: extend,
257
290
  new: 1
258
291
  };
259
292
  }
293
+
294
+ /**
295
+ * `transformDetailToProductAndBooking`:把 cacheItem 拆成 OS `addProductToOrder` 所需的 `(product, booking)`。
296
+ *
297
+ * - `product` 走 `transformBaseProductToOrderProduct`(沿用 BaseSales 现有 mapper)。
298
+ * - `booking` 走 `cacheItemToBookingInput`(严格按 TEMP_ORDER_FIELDS_SUMMARY.md 协议)。
299
+ * - 普通商品(无 duration / 无 schedules)不产 booking,与 info2 一致。
300
+ */
260
301
  function transformDetailToProductAndBooking(cacheItem, ctx) {
261
302
  const preparedCacheItem = prepareBookingCacheItem(cacheItem, withDerivedBookingCtx(ctx));
262
303
  const payload = buildBasePayloadFromCacheItem(preparedCacheItem, ctx);
263
- const productInput = (0, import_transformBaseProductToOrderProduct.transformBaseProductToOrderProduct)({
304
+ const productInput = (0, _transformBaseProductToOrderProduct.transformBaseProductToOrderProduct)({
264
305
  payload,
265
306
  sourceProduct: preparedCacheItem
266
307
  });
267
308
  if (!productInput) {
268
- throw new Error(
269
- "[BookingTicket] transformDetailToProductAndBooking: product transform failed (missing numeric item.id / item.product_id)"
270
- );
309
+ throw new Error('[BookingTicket] transformDetailToProductAndBooking: product transform failed (missing numeric item.id / item.product_id)');
271
310
  }
272
311
  const isNormalProduct = isNormalBookingProduct(preparedCacheItem);
273
312
  let booking;
274
313
  if (!isNormalProduct) {
275
- booking = (0, import_BookingContext.cacheItemToBookingInput)(preparedCacheItem, { bookingConfig: ctx == null ? void 0 : ctx.bookingConfig });
314
+ booking = (0, _BookingContext.cacheItemToBookingInput)(preparedCacheItem, {
315
+ bookingConfig: ctx?.bookingConfig
316
+ });
276
317
  }
277
- return { product: productInput, booking, cacheItem: preparedCacheItem };
318
+ return {
319
+ product: productInput,
320
+ booking,
321
+ cacheItem: preparedCacheItem
322
+ };
278
323
  }
324
+
325
+ /**
326
+ * 把 cacheItem._extend.other 中的字段 + 顶层运行态拼成 `BaseProductDetailPayload`。
327
+ */
279
328
  function buildBasePayloadFromCacheItem(cacheItem, ctx) {
280
- var _a, _b, _c, _d;
281
- const other = ((_a = cacheItem == null ? void 0 : cacheItem._extend) == null ? void 0 : _a.other) || {};
282
- const quantity = (ctx == null ? void 0 : ctx.quantity) != null && ctx.quantity > 0 ? ctx.quantity : ((_b = cacheItem == null ? void 0 : cacheItem._extend) == null ? void 0 : _b.quantity) ?? 1;
283
- const resolvedPid = (cacheItem == null ? void 0 : cacheItem.product_id) ?? (cacheItem == null ? void 0 : cacheItem.id);
284
- const extend = (cacheItem == null ? void 0 : cacheItem._extend) || {};
285
- const productSku = (0, import_weighingProductSku.buildProductSkuFromCacheItem)(cacheItem);
329
+ const other = cacheItem?._extend?.other || {};
330
+ const quantity = ctx?.quantity != null && ctx.quantity > 0 ? ctx.quantity : cacheItem?._extend?.quantity ?? 1;
331
+ const resolvedPid = cacheItem?.product_id ?? cacheItem?.id;
332
+ const extend = cacheItem?._extend || {};
333
+ const productSku = (0, _weighingProductSku.buildProductSkuFromCacheItem)(cacheItem);
286
334
  return {
287
- id: (cacheItem == null ? void 0 : cacheItem.id) ?? (cacheItem == null ? void 0 : cacheItem.product_id),
335
+ id: cacheItem?.id ?? cacheItem?.product_id,
288
336
  product_id: resolvedPid,
289
- variant_id: (other == null ? void 0 : other.product_variant_id) ?? (other == null ? void 0 : other.variant_id) ?? 0,
337
+ variant_id: other?.product_variant_id ?? other?.variant_id ?? 0,
290
338
  quantity,
291
339
  // 规格弹窗本次选择是 option 权威源,避免目录/旧订单里的空 option 覆盖它。
292
- product_sku: productSku ? { ...productSku, option: (other == null ? void 0 : other.option) || [] } : void 0,
293
- option: (other == null ? void 0 : other.option) || [],
294
- bundle: (other == null ? void 0 : other.bundle) || ((_c = extend == null ? void 0 : extend.skuValue) == null ? void 0 : _c.bundle) || ((_d = extend == null ? void 0 : extend._skuValue) == null ? void 0 : _d.bundle) || [],
295
- unique: other == null ? void 0 : other.unique,
296
- session: other == null ? void 0 : other.session,
297
- note: extend == null ? void 0 : extend.note,
298
- price: (extend == null ? void 0 : extend.price) ?? (cacheItem == null ? void 0 : cacheItem.price),
299
- selling_price: (extend == null ? void 0 : extend.price) ?? (cacheItem == null ? void 0 : cacheItem.price),
300
- line_total: extend == null ? void 0 : extend.total,
301
- total: extend == null ? void 0 : extend.total,
302
- origin_total: extend == null ? void 0 : extend.origin_total,
303
- price_override: extend == null ? void 0 : extend.priceOverride,
304
- bundle_edit: extend == null ? void 0 : extend.bundle_edit,
305
- discount_reason: extend == null ? void 0 : extend.discount_reason,
306
- discount_list: cacheItem == null ? void 0 : cacheItem.discount_list,
340
+ product_sku: productSku ? {
341
+ ...productSku,
342
+ option: other?.option || []
343
+ } : undefined,
344
+ option: other?.option || [],
345
+ bundle: other?.bundle || extend?.skuValue?.bundle || extend?._skuValue?.bundle || [],
346
+ unique: other?.unique,
347
+ session: other?.session,
348
+ note: extend?.note,
349
+ price: extend?.price ?? cacheItem?.price,
350
+ selling_price: extend?.price ?? cacheItem?.price,
351
+ line_total: extend?.total,
352
+ total: extend?.total,
353
+ origin_total: extend?.origin_total,
354
+ price_override: extend?.priceOverride,
355
+ bundle_edit: extend?.bundle_edit,
356
+ discount_reason: extend?.discount_reason,
357
+ discount_list: cacheItem?.discount_list,
307
358
  _extend: extend
308
359
  };
309
- }
310
- // Annotate the CommonJS export names for ESM import in node:
311
- 0 && (module.exports = {
312
- buildCacheItemFromCartDetail,
313
- buildCacheItemFromDetail,
314
- buildRequiresDetailPayload,
315
- decideAddProduct,
316
- decideAfterDetail,
317
- decideAutoClose,
318
- getIsEject,
319
- getIsOnlySession,
320
- prepareBookingCacheItem,
321
- transformDetailToProductAndBooking
322
- });
360
+ }