@pisell/pisellos 0.10.15 → 0.10.17

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 (331) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  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.d.ts +5 -2
  10. package/dist/modules/OpenData/index.js +27 -14
  11. package/dist/modules/OpenData/types.d.ts +42 -0
  12. package/dist/modules/OpenData/types.js +7 -1
  13. package/dist/modules/OpenData/utils.d.ts +15 -1
  14. package/dist/modules/OpenData/utils.js +85 -0
  15. package/dist/modules/Order/index.d.ts +4 -2
  16. package/dist/modules/Order/index.js +131 -123
  17. package/dist/modules/Order/types.d.ts +8 -1
  18. package/dist/modules/Order/types.js +1 -0
  19. package/dist/modules/Order/utils.js +7 -1
  20. package/dist/modules/Payment/index.js +97 -162
  21. package/dist/modules/Product/types.d.ts +2 -0
  22. package/dist/modules/ProductList/index.js +96 -74
  23. package/dist/modules/Rules/index.js +12 -12
  24. package/dist/modules/SalesSummary/index.js +6 -4
  25. package/dist/modules/Schedule/index.js +0 -1
  26. package/dist/modules/Schedule/utils.js +0 -1
  27. package/dist/modules/Step/index.js +0 -1
  28. package/dist/plugins/request.js +1 -4
  29. package/dist/plugins/window.js +2 -6
  30. package/dist/server/index.d.ts +11 -0
  31. package/dist/server/index.js +977 -641
  32. package/dist/server/modules/menu/index.js +32 -41
  33. package/dist/server/modules/order/index.d.ts +8 -0
  34. package/dist/server/modules/order/index.js +253 -219
  35. package/dist/server/modules/products/index.js +24 -42
  36. package/dist/server/modules/quotation/index.js +29 -38
  37. package/dist/server/modules/resource/index.js +3 -4
  38. package/dist/server/modules/schedule/index.js +27 -35
  39. package/dist/server/utils/product.js +0 -1
  40. package/dist/server/utils/small-ticket.d.ts +9 -1
  41. package/dist/server/utils/small-ticket.js +117 -43
  42. package/dist/solution/BaseSales/index.d.ts +7 -0
  43. package/dist/solution/BaseSales/index.js +350 -215
  44. package/dist/solution/BaseSales/types.d.ts +2 -0
  45. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  46. package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
  47. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  48. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -1
  49. package/dist/solution/BaseSales/utils.js +6 -3
  50. package/dist/solution/BookingByStep/index.d.ts +2 -2
  51. package/dist/solution/BookingByStep/index.js +7 -59
  52. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  53. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  54. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  55. package/dist/solution/BookingTicket/index.d.ts +14 -19
  56. package/dist/solution/BookingTicket/index.js +553 -433
  57. package/dist/solution/BookingTicket/utils/addProductDecision.js +3 -1
  58. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  59. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  60. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  61. package/dist/solution/BuyTickets/index.js +9 -12
  62. package/dist/solution/Checkout/index.js +177 -252
  63. package/dist/solution/Checkout/utils/index.js +4 -16
  64. package/dist/solution/RegisterAndLogin/index.js +30 -76
  65. package/dist/solution/Sales/index.d.ts +20 -4
  66. package/dist/solution/Sales/index.js +348 -75
  67. package/dist/solution/Sales/types.d.ts +10 -0
  68. package/dist/solution/ScanOrder/index.js +50 -60
  69. package/dist/solution/ScanOrder/types.d.ts +2 -0
  70. package/dist/solution/ScanOrder/utils.js +6 -3
  71. package/dist/solution/ShopDiscount/index.js +2 -7
  72. package/dist/solution/UnifiedBookingSales/index.d.ts +5 -4
  73. package/dist/solution/UnifiedBookingSales/index.js +495 -422
  74. package/dist/solution/UnifiedBookingSales/types.d.ts +7 -1
  75. package/dist/solution/VenueBooking/index.js +45 -55
  76. package/dist/utils/task.js +15 -18
  77. package/dist/utils/watch.js +0 -1
  78. package/lib/apis/picoding.js +2 -0
  79. package/lib/core/index.js +131 -131
  80. package/lib/effects/index.js +46 -57
  81. package/lib/index.js +82 -49
  82. package/lib/model/index.js +14 -21
  83. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  84. package/lib/model/strategy/adapter/dataVariant/evaluator.js +209 -315
  85. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  86. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  87. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  88. package/lib/model/strategy/adapter/index.js +100 -64
  89. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  90. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  91. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  92. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  93. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  94. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  95. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  96. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  97. package/lib/model/strategy/adapter/promotion/index.js +1 -51
  98. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  99. package/lib/model/strategy/adapter/type.js +4 -16
  100. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  101. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  102. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  103. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  104. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  105. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  106. package/lib/model/strategy/engine.js +270 -168
  107. package/lib/model/strategy/index.js +49 -34
  108. package/lib/model/strategy/strategy-example.js +243 -239
  109. package/lib/model/strategy/type.js +100 -40
  110. package/lib/modules/Account/index.js +39 -53
  111. package/lib/modules/Account/types.js +20 -33
  112. package/lib/modules/AccountList/index.js +116 -154
  113. package/lib/modules/AccountList/types.js +30 -31
  114. package/lib/modules/AccountList/utils.js +18 -30
  115. package/lib/modules/BaseModule.js +23 -42
  116. package/lib/modules/BookingContext/index.js +158 -136
  117. package/lib/modules/BookingContext/types.js +46 -32
  118. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  119. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  120. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  121. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  122. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  123. package/lib/modules/BookingContext/utils/index.js +124 -41
  124. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  125. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  126. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  127. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  128. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  129. package/lib/modules/BookingContext/utils/resources.js +209 -167
  130. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  131. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  132. package/lib/modules/Cart/index.js +170 -124
  133. package/lib/modules/Cart/types.js +46 -51
  134. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  135. package/lib/modules/Cart/utils/cartDate.js +56 -61
  136. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  137. package/lib/modules/Cart/utils/cartNote.js +27 -32
  138. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  139. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  140. package/lib/modules/Cart/utils/cartResource.js +70 -78
  141. package/lib/modules/Cart/utils/changePrice.js +22 -50
  142. package/lib/modules/Cart/utils/index.js +106 -48
  143. package/lib/modules/Customer/constants.js +13 -34
  144. package/lib/modules/Customer/index.js +235 -172
  145. package/lib/modules/Customer/types.js +38 -35
  146. package/lib/modules/Date/index.js +116 -115
  147. package/lib/modules/Date/types.js +16 -28
  148. package/lib/modules/Date/utils.js +174 -123
  149. package/lib/modules/Discount/index.js +133 -143
  150. package/lib/modules/Discount/types.js +9 -31
  151. package/lib/modules/Guests/index.js +30 -56
  152. package/lib/modules/Guests/types.js +23 -33
  153. package/lib/modules/Holder/index.js +209 -189
  154. package/lib/modules/Holder/types.js +4 -16
  155. package/lib/modules/Holder/utils.js +20 -49
  156. package/lib/modules/OpenData/index.d.ts +5 -2
  157. package/lib/modules/OpenData/index.js +119 -78
  158. package/lib/modules/OpenData/types.d.ts +42 -0
  159. package/lib/modules/OpenData/types.js +12 -16
  160. package/lib/modules/OpenData/utils.d.ts +15 -1
  161. package/lib/modules/OpenData/utils.js +129 -78
  162. package/lib/modules/Order/index.d.ts +4 -2
  163. package/lib/modules/Order/index.js +1843 -2251
  164. package/lib/modules/Order/payment-utils.js +77 -120
  165. package/lib/modules/Order/types.d.ts +8 -1
  166. package/lib/modules/Order/types.js +88 -35
  167. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  168. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  169. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  170. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  171. package/lib/modules/Order/utils/virtualSettlement.js +120 -171
  172. package/lib/modules/Order/utils.js +834 -668
  173. package/lib/modules/Payment/cash.js +20 -33
  174. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  175. package/lib/modules/Payment/eftpos.js +16 -30
  176. package/lib/modules/Payment/index.js +532 -399
  177. package/lib/modules/Payment/mx51.js +1 -0
  178. package/lib/modules/Payment/types.js +230 -108
  179. package/lib/modules/Payment/utils.js +52 -51
  180. package/lib/modules/Payment/walletpass.js +485 -660
  181. package/lib/modules/Product/index.js +51 -46
  182. package/lib/modules/Product/types.d.ts +2 -0
  183. package/lib/modules/Product/types.js +4 -16
  184. package/lib/modules/Product/utils.js +32 -33
  185. package/lib/modules/ProductList/index.js +141 -161
  186. package/lib/modules/ProductList/types.js +9 -31
  187. package/lib/modules/Quotation/index.js +66 -100
  188. package/lib/modules/Quotation/types.js +4 -16
  189. package/lib/modules/Resource/index.js +27 -59
  190. package/lib/modules/Resource/types.js +22 -32
  191. package/lib/modules/Resource/utils.js +30 -38
  192. package/lib/modules/ResourcePlanner/index.js +25 -23
  193. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  194. package/lib/modules/ResourcePlanner/planner.js +591 -772
  195. package/lib/modules/ResourcePlanner/types.js +10 -29
  196. package/lib/modules/Rules/index.js +1224 -963
  197. package/lib/modules/Rules/types.js +17 -40
  198. package/lib/modules/SalesSummary/index.js +80 -89
  199. package/lib/modules/SalesSummary/types.js +4 -16
  200. package/lib/modules/SalesSummary/utils.js +359 -442
  201. package/lib/modules/ScanOrderLogger/index.js +59 -79
  202. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  203. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  204. package/lib/modules/ScanOrderLogger/types.js +4 -16
  205. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  206. package/lib/modules/Schedule/index.js +100 -114
  207. package/lib/modules/Schedule/type.js +4 -16
  208. package/lib/modules/Schedule/types.js +4 -16
  209. package/lib/modules/Schedule/utils.js +433 -291
  210. package/lib/modules/Step/index.js +40 -52
  211. package/lib/modules/Step/tyeps.js +4 -16
  212. package/lib/modules/Summary/index.js +66 -71
  213. package/lib/modules/Summary/types.js +4 -16
  214. package/lib/modules/Summary/utils.js +773 -418
  215. package/lib/modules/SurchargeList/index.js +46 -60
  216. package/lib/modules/SurchargeList/types.js +4 -16
  217. package/lib/modules/index.js +245 -63
  218. package/lib/plugins/app.js +4 -16
  219. package/lib/plugins/index.js +36 -25
  220. package/lib/plugins/request.js +137 -126
  221. package/lib/plugins/shopStore.js +4 -16
  222. package/lib/plugins/user.js +4 -16
  223. package/lib/plugins/window.js +171 -179
  224. package/lib/server/index.d.ts +11 -0
  225. package/lib/server/index.js +3432 -2757
  226. package/lib/server/modules/floor-plan/index.js +102 -123
  227. package/lib/server/modules/floor-plan/types.js +15 -30
  228. package/lib/server/modules/index.js +106 -68
  229. package/lib/server/modules/menu/index.js +146 -122
  230. package/lib/server/modules/menu/types.js +18 -31
  231. package/lib/server/modules/order/index.d.ts +8 -0
  232. package/lib/server/modules/order/index.js +781 -956
  233. package/lib/server/modules/order/types.js +122 -33
  234. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  235. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  236. package/lib/server/modules/payment/index.js +59 -83
  237. package/lib/server/modules/payment/types.js +4 -16
  238. package/lib/server/modules/products/index.js +575 -459
  239. package/lib/server/modules/products/types.js +44 -34
  240. package/lib/server/modules/quotation/index.js +137 -172
  241. package/lib/server/modules/quotation/types.js +21 -31
  242. package/lib/server/modules/resource/index.js +213 -184
  243. package/lib/server/modules/resource/types.js +42 -33
  244. package/lib/server/modules/schedule/index.js +135 -123
  245. package/lib/server/modules/schedule/types.js +14 -21
  246. package/lib/server/modules/schedule/utils.js +334 -163
  247. package/lib/server/types.js +4 -16
  248. package/lib/server/utils/index.js +25 -23
  249. package/lib/server/utils/product.js +196 -139
  250. package/lib/server/utils/schedule.js +34 -41
  251. package/lib/server/utils/small-ticket.d.ts +9 -1
  252. package/lib/server/utils/small-ticket.js +565 -470
  253. package/lib/server/utils/time.js +40 -49
  254. package/lib/solution/BaseSales/index.d.ts +7 -0
  255. package/lib/solution/BaseSales/index.js +1385 -1503
  256. package/lib/solution/BaseSales/types.d.ts +2 -0
  257. package/lib/solution/BaseSales/types.js +42 -38
  258. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
  259. package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
  260. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  261. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  262. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  263. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +138 -180
  264. package/lib/solution/BaseSales/utils.js +161 -143
  265. package/lib/solution/BookingByStep/index.d.ts +2 -2
  266. package/lib/solution/BookingByStep/index.js +1527 -1340
  267. package/lib/solution/BookingByStep/types.js +40 -99
  268. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  269. package/lib/solution/BookingByStep/utils/products.js +42 -52
  270. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  271. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  272. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  273. package/lib/solution/BookingTicket/index.d.ts +14 -19
  274. package/lib/solution/BookingTicket/index.js +663 -526
  275. package/lib/solution/BookingTicket/types.js +99 -77
  276. package/lib/solution/BookingTicket/utils/addProductDecision.js +229 -190
  277. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  278. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  279. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  280. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  281. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  282. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  283. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  284. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  285. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  286. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  287. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  288. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  289. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  290. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  291. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  292. package/lib/solution/BuyTickets/index.js +67 -70
  293. package/lib/solution/BuyTickets/types.js +22 -38
  294. package/lib/solution/Checkout/index.js +1451 -1158
  295. package/lib/solution/Checkout/types.js +91 -61
  296. package/lib/solution/Checkout/utils/index.js +228 -156
  297. package/lib/solution/PlaceOrder/index.js +55 -0
  298. package/lib/solution/RegisterAndLogin/config.js +493 -460
  299. package/lib/solution/RegisterAndLogin/index.js +633 -630
  300. package/lib/solution/RegisterAndLogin/types.js +189 -76
  301. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  302. package/lib/solution/Sales/index.d.ts +20 -4
  303. package/lib/solution/Sales/index.js +502 -330
  304. package/lib/solution/Sales/types.d.ts +10 -0
  305. package/lib/solution/Sales/types.js +27 -33
  306. package/lib/solution/ScanOrder/index.js +822 -852
  307. package/lib/solution/ScanOrder/types.d.ts +2 -0
  308. package/lib/solution/ScanOrder/types.js +33 -34
  309. package/lib/solution/ScanOrder/utils.js +412 -374
  310. package/lib/solution/ShopDiscount/index.js +226 -232
  311. package/lib/solution/ShopDiscount/types.js +15 -37
  312. package/lib/solution/ShopDiscount/utils.js +300 -172
  313. package/lib/solution/UnifiedBookingSales/index.d.ts +5 -4
  314. package/lib/solution/UnifiedBookingSales/index.js +1087 -1222
  315. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  316. package/lib/solution/UnifiedBookingSales/types.d.ts +7 -1
  317. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  318. package/lib/solution/VenueBooking/index.js +811 -879
  319. package/lib/solution/VenueBooking/types.js +19 -39
  320. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  321. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  322. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  323. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  324. package/lib/solution/VenueBooking/utils.js +130 -67
  325. package/lib/solution/index.js +124 -41
  326. package/lib/store/createStore.js +32 -29
  327. package/lib/types/index.js +4 -16
  328. package/lib/utils/payment-number.js +26 -46
  329. package/lib/utils/task.js +36 -36
  330. package/lib/utils/watch.js +81 -47
  331. 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,105 +243,122 @@ 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, _e, _f;
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,
339
+ // SKUOptionsSelection 已按 Product / Variant 解析好主商品编码;显式空串也需保留。
340
+ production_code: other?.production_code ?? cacheItem?.production_code,
292
341
  quantity,
293
342
  // 规格弹窗本次选择是 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,
309
- selected_settlement_snapshot: ((_e = cacheItem == null ? void 0 : cacheItem.metadata) == null ? void 0 : _e.selected_settlement_snapshot) ?? ((_f = extend == null ? void 0 : extend.metadata) == null ? void 0 : _f.selected_settlement_snapshot),
343
+ product_sku: productSku ? {
344
+ ...productSku,
345
+ option: other?.option || []
346
+ } : undefined,
347
+ option: other?.option || [],
348
+ bundle: other?.bundle || extend?.skuValue?.bundle || extend?._skuValue?.bundle || [],
349
+ unique: other?.unique,
350
+ session: other?.session,
351
+ note: extend?.note,
352
+ price: extend?.price ?? cacheItem?.price,
353
+ selling_price: extend?.price ?? cacheItem?.price,
354
+ line_total: extend?.total,
355
+ total: extend?.total,
356
+ origin_total: extend?.origin_total,
357
+ price_override: extend?.priceOverride,
358
+ bundle_edit: extend?.bundle_edit,
359
+ discount_reason: extend?.discount_reason,
360
+ discount_list: cacheItem?.discount_list,
361
+ selected_settlement_snapshot: cacheItem?.metadata?.selected_settlement_snapshot ?? extend?.metadata?.selected_settlement_snapshot,
310
362
  _extend: extend
311
363
  };
312
- }
313
- // Annotate the CommonJS export names for ESM import in node:
314
- 0 && (module.exports = {
315
- buildCacheItemFromCartDetail,
316
- buildCacheItemFromDetail,
317
- buildRequiresDetailPayload,
318
- decideAddProduct,
319
- decideAfterDetail,
320
- decideAutoClose,
321
- getIsEject,
322
- getIsOnlySession,
323
- prepareBookingCacheItem,
324
- transformDetailToProductAndBooking
325
- });
364
+ }