@pisell/pisellos 2.3.74 → 2.3.75

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