@pisell/pisellos 0.0.567 → 0.0.569

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 (557) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  3. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/adapter/walletPass/utils.js +7 -7
  6. package/dist/model/strategy/strategy-example.js +5 -19
  7. package/dist/modules/BaseModule.d.ts +2 -2
  8. package/dist/modules/BaseModule.js +4 -4
  9. package/dist/modules/BookingContext/index.d.ts +48 -0
  10. package/dist/modules/BookingContext/index.js +566 -0
  11. package/dist/modules/BookingContext/types.d.ts +102 -0
  12. package/dist/modules/BookingContext/types.js +51 -0
  13. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  14. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  15. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  16. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  17. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  18. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  19. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  20. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  21. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  22. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  23. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  24. package/dist/modules/BookingContext/utils/index.js +11 -0
  25. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  26. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  27. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  28. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  29. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  30. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  31. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  32. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  33. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  34. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  35. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  36. package/dist/modules/BookingContext/utils/resources.js +486 -0
  37. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  38. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  39. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  40. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  41. package/dist/modules/Cart/index.js +0 -3
  42. package/dist/modules/Cart/utils/cartProduct.js +26 -6
  43. package/dist/modules/Cart/utils/changePrice.js +27 -20
  44. package/dist/modules/Customer/index.d.ts +20 -0
  45. package/dist/modules/Customer/index.js +172 -83
  46. package/dist/modules/Customer/types.d.ts +2 -0
  47. package/dist/modules/Date/index.js +1 -5
  48. package/dist/modules/Discount/index.d.ts +2 -1
  49. package/dist/modules/Discount/index.js +37 -12
  50. package/dist/modules/Discount/types.d.ts +1 -0
  51. package/dist/modules/OpenData/index.d.ts +8 -0
  52. package/dist/modules/OpenData/index.js +35 -17
  53. package/dist/modules/Order/index.d.ts +449 -24
  54. package/dist/modules/Order/index.js +5437 -608
  55. package/dist/modules/Order/types.d.ts +693 -88
  56. package/dist/modules/Order/types.js +68 -1
  57. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  58. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  59. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  60. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  61. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  62. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  63. package/dist/modules/Order/utils.d.ts +167 -18
  64. package/dist/modules/Order/utils.js +960 -165
  65. package/dist/modules/Payment/index.d.ts +10 -9
  66. package/dist/modules/Payment/index.js +508 -874
  67. package/dist/modules/Payment/types.d.ts +40 -16
  68. package/dist/modules/Payment/utils.d.ts +1 -1
  69. package/dist/modules/Payment/utils.js +4 -3
  70. package/dist/modules/Payment/walletpass.js +48 -34
  71. package/dist/modules/Product/types.d.ts +29 -7
  72. package/dist/modules/ProductList/index.d.ts +17 -13
  73. package/dist/modules/ProductList/index.js +184 -74
  74. package/dist/modules/ProductList/types.d.ts +17 -0
  75. package/dist/modules/Quotation/index.d.ts +22 -2
  76. package/dist/modules/Quotation/index.js +108 -42
  77. package/dist/modules/Quotation/types.d.ts +19 -0
  78. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  79. package/dist/modules/ResourcePlanner/index.js +181 -0
  80. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  81. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  82. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  83. package/dist/modules/ResourcePlanner/types.js +1 -0
  84. package/dist/modules/Rules/index.d.ts +8 -10
  85. package/dist/modules/Rules/index.js +219 -114
  86. package/dist/modules/Rules/types.d.ts +14 -3
  87. package/dist/modules/SalesSummary/index.d.ts +23 -26
  88. package/dist/modules/SalesSummary/index.js +152 -46
  89. package/dist/modules/SalesSummary/types.d.ts +9 -1
  90. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  91. package/dist/modules/SalesSummary/utils.js +803 -163
  92. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -7
  93. package/dist/modules/Schedule/index.d.ts +18 -5
  94. package/dist/modules/Schedule/index.js +78 -24
  95. package/dist/modules/Schedule/types.d.ts +2 -0
  96. package/dist/modules/Schedule/utils.js +0 -1
  97. package/dist/modules/Step/index.js +0 -1
  98. package/dist/modules/Summary/index.js +4 -3
  99. package/dist/modules/SurchargeList/index.d.ts +18 -0
  100. package/dist/modules/SurchargeList/index.js +185 -0
  101. package/dist/modules/SurchargeList/types.d.ts +15 -0
  102. package/dist/modules/SurchargeList/types.js +1 -0
  103. package/dist/modules/index.d.ts +3 -0
  104. package/dist/modules/index.js +4 -1
  105. package/dist/plugins/app.d.ts +2 -0
  106. package/dist/plugins/request.d.ts +1 -0
  107. package/dist/plugins/request.js +1 -4
  108. package/dist/plugins/window.js +2 -6
  109. package/dist/server/index.d.ts +462 -8
  110. package/dist/server/index.js +6137 -714
  111. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  112. package/dist/server/modules/floor-plan/index.js +595 -0
  113. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  114. package/dist/server/modules/floor-plan/types.js +13 -0
  115. package/dist/server/modules/index.d.ts +7 -2
  116. package/dist/server/modules/index.js +6 -0
  117. package/dist/server/modules/menu/index.js +32 -41
  118. package/dist/server/modules/order/index.d.ts +207 -14
  119. package/dist/server/modules/order/index.js +2326 -379
  120. package/dist/server/modules/order/types.d.ts +76 -5
  121. package/dist/server/modules/order/types.js +14 -1
  122. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  123. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  124. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  125. package/dist/server/modules/payment/index.d.ts +28 -0
  126. package/dist/server/modules/payment/index.js +305 -0
  127. package/dist/server/modules/payment/types.d.ts +9 -0
  128. package/dist/server/modules/payment/types.js +1 -0
  129. package/dist/server/modules/products/index.d.ts +105 -14
  130. package/dist/server/modules/products/index.js +1397 -540
  131. package/dist/server/modules/products/types.d.ts +34 -1
  132. package/dist/server/modules/products/types.js +4 -0
  133. package/dist/server/modules/quotation/index.d.ts +39 -0
  134. package/dist/server/modules/quotation/index.js +289 -86
  135. package/dist/server/modules/resource/index.d.ts +2 -3
  136. package/dist/server/modules/resource/index.js +105 -84
  137. package/dist/server/modules/schedule/index.d.ts +6 -4
  138. package/dist/server/modules/schedule/index.js +137 -114
  139. package/dist/server/test.json +713 -0
  140. package/dist/server/types.d.ts +2 -0
  141. package/dist/server/utils/product.js +2 -3
  142. package/dist/server/utils/small-ticket.d.ts +71 -0
  143. package/dist/server/utils/small-ticket.js +963 -0
  144. package/dist/solution/BaseSales/index.d.ts +378 -0
  145. package/dist/solution/BaseSales/index.js +4006 -0
  146. package/dist/solution/BaseSales/types.d.ts +394 -0
  147. package/dist/solution/BaseSales/types.js +40 -0
  148. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  149. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  150. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  151. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  152. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  153. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  154. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  155. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  156. package/dist/solution/BaseSales/utils.d.ts +40 -0
  157. package/dist/solution/BaseSales/utils.js +263 -0
  158. package/dist/solution/BookingByStep/index.js +7 -59
  159. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  160. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  161. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  162. package/dist/solution/BookingTicket/index.d.ts +393 -24
  163. package/dist/solution/BookingTicket/index.js +2506 -445
  164. package/dist/solution/BookingTicket/types.d.ts +191 -6
  165. package/dist/solution/BookingTicket/types.js +83 -10
  166. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  167. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  168. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  169. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  170. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  171. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  172. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  173. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  174. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  175. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  176. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  177. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  178. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  179. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  180. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  181. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  182. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  183. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +41 -1
  184. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  185. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  186. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  187. package/dist/solution/BookingTicket/utils/scan/handleScan.js +36 -34
  188. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  189. package/dist/solution/BookingTicket/utils/scan/index.js +26 -18
  190. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  191. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  192. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  193. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  194. package/dist/solution/BuyTickets/index.js +9 -12
  195. package/dist/solution/Checkout/index.d.ts +1 -0
  196. package/dist/solution/Checkout/index.js +199 -277
  197. package/dist/solution/Checkout/utils/index.js +8 -20
  198. package/dist/solution/RegisterAndLogin/config.js +2 -10
  199. package/dist/solution/RegisterAndLogin/index.js +30 -76
  200. package/dist/solution/Sales/index.d.ts +50 -5
  201. package/dist/solution/Sales/index.js +484 -92
  202. package/dist/solution/Sales/types.d.ts +26 -2
  203. package/dist/solution/ScanOrder/index.d.ts +27 -21
  204. package/dist/solution/ScanOrder/index.js +509 -454
  205. package/dist/solution/ScanOrder/types.d.ts +33 -11
  206. package/dist/solution/ScanOrder/types.js +4 -5
  207. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  208. package/dist/solution/ScanOrder/utils.js +109 -34
  209. package/dist/solution/ShopDiscount/index.js +6 -11
  210. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  211. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  212. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  213. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  214. package/dist/solution/VenueBooking/index.d.ts +34 -20
  215. package/dist/solution/VenueBooking/index.js +630 -505
  216. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  217. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  218. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  219. package/dist/solution/index.d.ts +2 -0
  220. package/dist/solution/index.js +3 -1
  221. package/dist/types/index.d.ts +11 -1
  222. package/dist/utils/task.js +15 -18
  223. package/dist/utils/watch.js +0 -1
  224. package/lib/apis/picoding.js +2 -0
  225. package/lib/core/index.js +130 -131
  226. package/lib/effects/index.js +46 -57
  227. package/lib/index.js +92 -53
  228. package/lib/model/index.js +14 -21
  229. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  230. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  231. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  232. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  233. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  234. package/lib/model/strategy/adapter/index.js +100 -64
  235. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  236. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  237. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  238. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  239. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  240. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  241. package/lib/model/strategy/adapter/promotion/evaluator.js +383 -232
  242. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  243. package/lib/model/strategy/adapter/promotion/index.js +1 -49
  244. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  245. package/lib/model/strategy/adapter/type.js +4 -16
  246. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  247. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  248. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  249. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  250. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  251. package/lib/model/strategy/adapter/walletPass/utils.js +654 -402
  252. package/lib/model/strategy/engine.js +270 -168
  253. package/lib/model/strategy/index.js +49 -34
  254. package/lib/model/strategy/strategy-example.js +243 -239
  255. package/lib/model/strategy/type.js +100 -40
  256. package/lib/modules/Account/index.js +39 -53
  257. package/lib/modules/Account/types.js +20 -33
  258. package/lib/modules/AccountList/index.js +116 -154
  259. package/lib/modules/AccountList/types.js +30 -31
  260. package/lib/modules/AccountList/utils.js +18 -30
  261. package/lib/modules/BaseModule.d.ts +2 -2
  262. package/lib/modules/BaseModule.js +26 -49
  263. package/lib/modules/BookingContext/index.d.ts +48 -0
  264. package/lib/modules/BookingContext/index.js +390 -0
  265. package/lib/modules/BookingContext/types.d.ts +102 -0
  266. package/lib/modules/BookingContext/types.js +48 -0
  267. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  268. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +286 -0
  269. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  270. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +148 -0
  271. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  272. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +242 -0
  273. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  274. package/lib/modules/BookingContext/utils/flexible.js +63 -0
  275. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  276. package/lib/modules/BookingContext/utils/formatResourceList.js +35 -0
  277. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  278. package/lib/modules/BookingContext/utils/index.js +126 -0
  279. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  280. package/lib/modules/BookingContext/utils/noResource.js +78 -0
  281. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  282. package/lib/modules/BookingContext/utils/orderLineDisplay.js +29 -0
  283. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  284. package/lib/modules/BookingContext/utils/productExtend.js +330 -0
  285. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  286. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  287. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  288. package/lib/modules/BookingContext/utils/resourceSelection.js +24 -0
  289. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  290. package/lib/modules/BookingContext/utils/resources.js +419 -0
  291. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  292. package/lib/modules/BookingContext/utils/serviceTimes.js +161 -0
  293. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  294. package/lib/modules/BookingContext/utils/timeSlices.js +114 -0
  295. package/lib/modules/Cart/index.js +170 -124
  296. package/lib/modules/Cart/types.js +46 -51
  297. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  298. package/lib/modules/Cart/utils/cartDate.js +56 -61
  299. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  300. package/lib/modules/Cart/utils/cartNote.js +27 -32
  301. package/lib/modules/Cart/utils/cartProduct.js +331 -244
  302. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  303. package/lib/modules/Cart/utils/cartResource.js +72 -78
  304. package/lib/modules/Cart/utils/changePrice.js +37 -67
  305. package/lib/modules/Cart/utils/index.js +106 -48
  306. package/lib/modules/Customer/constants.js +13 -34
  307. package/lib/modules/Customer/index.d.ts +20 -0
  308. package/lib/modules/Customer/index.js +270 -154
  309. package/lib/modules/Customer/types.d.ts +2 -0
  310. package/lib/modules/Customer/types.js +38 -35
  311. package/lib/modules/Date/index.js +116 -115
  312. package/lib/modules/Date/types.js +16 -28
  313. package/lib/modules/Date/utils.js +174 -123
  314. package/lib/modules/Discount/index.d.ts +2 -1
  315. package/lib/modules/Discount/index.js +133 -113
  316. package/lib/modules/Discount/types.d.ts +1 -0
  317. package/lib/modules/Discount/types.js +9 -31
  318. package/lib/modules/Guests/index.js +30 -56
  319. package/lib/modules/Guests/types.js +23 -33
  320. package/lib/modules/Holder/index.js +209 -189
  321. package/lib/modules/Holder/types.js +4 -16
  322. package/lib/modules/Holder/utils.js +20 -49
  323. package/lib/modules/OpenData/index.d.ts +8 -0
  324. package/lib/modules/OpenData/index.js +81 -74
  325. package/lib/modules/OpenData/types.js +4 -16
  326. package/lib/modules/OpenData/utils.js +44 -78
  327. package/lib/modules/Order/index.d.ts +449 -24
  328. package/lib/modules/Order/index.js +3834 -489
  329. package/lib/modules/Order/types.d.ts +693 -88
  330. package/lib/modules/Order/types.js +78 -33
  331. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  332. package/lib/modules/Order/utils/bundleDiscountHydration.js +106 -0
  333. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  334. package/lib/modules/Order/utils/manualProductDiscount.js +207 -0
  335. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  336. package/lib/modules/Order/utils/orderCollectionIdentity.js +353 -0
  337. package/lib/modules/Order/utils.d.ts +167 -18
  338. package/lib/modules/Order/utils.js +1247 -345
  339. package/lib/modules/Payment/cash.js +20 -33
  340. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  341. package/lib/modules/Payment/eftpos.js +16 -30
  342. package/lib/modules/Payment/index.d.ts +10 -9
  343. package/lib/modules/Payment/index.js +542 -502
  344. package/lib/modules/Payment/mx51.js +1 -0
  345. package/lib/modules/Payment/types.d.ts +40 -16
  346. package/lib/modules/Payment/types.js +216 -107
  347. package/lib/modules/Payment/utils.d.ts +1 -1
  348. package/lib/modules/Payment/utils.js +53 -49
  349. package/lib/modules/Payment/walletpass.js +231 -203
  350. package/lib/modules/Product/index.js +51 -46
  351. package/lib/modules/Product/types.d.ts +29 -7
  352. package/lib/modules/Product/types.js +4 -16
  353. package/lib/modules/Product/utils.js +32 -33
  354. package/lib/modules/ProductList/index.d.ts +17 -13
  355. package/lib/modules/ProductList/index.js +160 -118
  356. package/lib/modules/ProductList/types.d.ts +17 -0
  357. package/lib/modules/ProductList/types.js +9 -31
  358. package/lib/modules/Quotation/index.d.ts +22 -2
  359. package/lib/modules/Quotation/index.js +123 -89
  360. package/lib/modules/Quotation/types.d.ts +19 -0
  361. package/lib/modules/Quotation/types.js +4 -16
  362. package/lib/modules/Resource/index.js +27 -59
  363. package/lib/modules/Resource/types.js +22 -32
  364. package/lib/modules/Resource/utils.js +30 -38
  365. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  366. package/lib/modules/ResourcePlanner/index.js +147 -0
  367. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  368. package/lib/modules/ResourcePlanner/planner.js +895 -0
  369. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  370. package/lib/modules/ResourcePlanner/types.js +5 -0
  371. package/lib/modules/Rules/index.d.ts +8 -10
  372. package/lib/modules/Rules/index.js +1286 -894
  373. package/lib/modules/Rules/types.d.ts +14 -3
  374. package/lib/modules/Rules/types.js +17 -40
  375. package/lib/modules/SalesSummary/index.d.ts +23 -26
  376. package/lib/modules/SalesSummary/index.js +130 -71
  377. package/lib/modules/SalesSummary/types.d.ts +9 -1
  378. package/lib/modules/SalesSummary/types.js +4 -16
  379. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  380. package/lib/modules/SalesSummary/utils.js +738 -250
  381. package/lib/modules/ScanOrderLogger/index.js +59 -79
  382. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  383. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  384. package/lib/modules/ScanOrderLogger/types.js +4 -16
  385. package/lib/modules/Schedule/getDateIsInSchedule.js +345 -171
  386. package/lib/modules/Schedule/index.d.ts +18 -5
  387. package/lib/modules/Schedule/index.js +139 -114
  388. package/lib/modules/Schedule/type.js +4 -16
  389. package/lib/modules/Schedule/types.d.ts +2 -0
  390. package/lib/modules/Schedule/types.js +4 -16
  391. package/lib/modules/Schedule/utils.js +433 -291
  392. package/lib/modules/Step/index.js +40 -52
  393. package/lib/modules/Step/tyeps.js +4 -16
  394. package/lib/modules/Summary/index.js +66 -70
  395. package/lib/modules/Summary/types.js +4 -16
  396. package/lib/modules/Summary/utils.js +782 -429
  397. package/lib/modules/SurchargeList/index.d.ts +18 -0
  398. package/lib/modules/SurchargeList/index.js +95 -0
  399. package/lib/modules/SurchargeList/types.d.ts +15 -0
  400. package/lib/modules/SurchargeList/types.js +5 -0
  401. package/lib/modules/index.d.ts +3 -0
  402. package/lib/modules/index.js +245 -57
  403. package/lib/plugins/app.d.ts +2 -0
  404. package/lib/plugins/app.js +4 -16
  405. package/lib/plugins/index.js +36 -25
  406. package/lib/plugins/request.d.ts +1 -0
  407. package/lib/plugins/request.js +137 -126
  408. package/lib/plugins/shopStore.js +4 -16
  409. package/lib/plugins/user.js +4 -16
  410. package/lib/plugins/window.js +171 -179
  411. package/lib/server/index.d.ts +462 -8
  412. package/lib/server/index.js +4668 -713
  413. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  414. package/lib/server/modules/floor-plan/index.js +306 -0
  415. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  416. package/lib/server/modules/floor-plan/types.js +19 -0
  417. package/lib/server/modules/index.d.ts +7 -2
  418. package/lib/server/modules/index.js +106 -59
  419. package/lib/server/modules/menu/index.js +146 -122
  420. package/lib/server/modules/menu/types.js +18 -31
  421. package/lib/server/modules/order/index.d.ts +207 -14
  422. package/lib/server/modules/order/index.js +1463 -316
  423. package/lib/server/modules/order/types.d.ts +76 -5
  424. package/lib/server/modules/order/types.js +117 -32
  425. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  426. package/lib/server/modules/order/utils/filterBookings.js +288 -146
  427. package/lib/server/modules/order/utils/filterOrders.js +318 -64
  428. package/lib/server/modules/payment/index.d.ts +28 -0
  429. package/lib/server/modules/payment/index.js +168 -0
  430. package/lib/server/modules/payment/types.d.ts +9 -0
  431. package/lib/server/modules/payment/types.js +5 -0
  432. package/lib/server/modules/products/index.d.ts +105 -14
  433. package/lib/server/modules/products/index.js +969 -383
  434. package/lib/server/modules/products/types.d.ts +34 -1
  435. package/lib/server/modules/products/types.js +44 -34
  436. package/lib/server/modules/quotation/index.d.ts +39 -0
  437. package/lib/server/modules/quotation/index.js +220 -77
  438. package/lib/server/modules/quotation/types.js +21 -31
  439. package/lib/server/modules/resource/index.d.ts +2 -3
  440. package/lib/server/modules/resource/index.js +269 -214
  441. package/lib/server/modules/resource/types.js +42 -33
  442. package/lib/server/modules/schedule/index.d.ts +6 -4
  443. package/lib/server/modules/schedule/index.js +158 -132
  444. package/lib/server/modules/schedule/types.js +14 -21
  445. package/lib/server/modules/schedule/utils.js +334 -163
  446. package/lib/server/test.json +713 -0
  447. package/lib/server/types.d.ts +2 -0
  448. package/lib/server/types.js +4 -16
  449. package/lib/server/utils/index.js +25 -23
  450. package/lib/server/utils/product.js +197 -140
  451. package/lib/server/utils/schedule.js +34 -41
  452. package/lib/server/utils/small-ticket.d.ts +71 -0
  453. package/lib/server/utils/small-ticket.js +926 -0
  454. package/lib/server/utils/time.js +40 -49
  455. package/lib/solution/BaseSales/index.d.ts +378 -0
  456. package/lib/solution/BaseSales/index.js +2367 -0
  457. package/lib/solution/BaseSales/types.d.ts +394 -0
  458. package/lib/solution/BaseSales/types.js +47 -0
  459. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  460. package/lib/solution/BaseSales/utils/cartPromotion.js +1155 -0
  461. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  462. package/lib/solution/BaseSales/utils/parseSalesResponse.js +140 -0
  463. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  464. package/lib/solution/BaseSales/utils/quotationPrice.js +231 -0
  465. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  466. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +215 -0
  467. package/lib/solution/BaseSales/utils.d.ts +40 -0
  468. package/lib/solution/BaseSales/utils.js +259 -0
  469. package/lib/solution/BookingByStep/index.js +1530 -1343
  470. package/lib/solution/BookingByStep/types.js +40 -99
  471. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  472. package/lib/solution/BookingByStep/utils/products.js +42 -52
  473. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  474. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  475. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  476. package/lib/solution/BookingTicket/index.d.ts +393 -24
  477. package/lib/solution/BookingTicket/index.js +1459 -160
  478. package/lib/solution/BookingTicket/types.d.ts +191 -6
  479. package/lib/solution/BookingTicket/types.js +101 -66
  480. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  481. package/lib/solution/BookingTicket/utils/addProductDecision.js +353 -0
  482. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  483. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +94 -0
  484. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  485. package/lib/solution/BookingTicket/utils/bookingStatus.js +136 -0
  486. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  487. package/lib/solution/BookingTicket/utils/cartView.js +200 -0
  488. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  489. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  490. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  491. package/lib/solution/BookingTicket/utils/orderCustomer.js +35 -0
  492. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  493. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +387 -0
  494. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  495. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +220 -0
  496. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  497. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +85 -80
  498. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  499. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +64 -0
  500. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  501. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -80
  502. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  503. package/lib/solution/BookingTicket/utils/scan/index.js +103 -95
  504. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  505. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  506. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +115 -0
  507. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  508. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +83 -0
  509. package/lib/solution/BuyTickets/index.js +67 -70
  510. package/lib/solution/BuyTickets/types.js +22 -38
  511. package/lib/solution/Checkout/index.d.ts +1 -0
  512. package/lib/solution/Checkout/index.js +1461 -1169
  513. package/lib/solution/Checkout/types.js +91 -61
  514. package/lib/solution/Checkout/utils/index.js +228 -159
  515. package/lib/solution/PlaceOrder/index.js +55 -0
  516. package/lib/solution/RegisterAndLogin/config.js +495 -470
  517. package/lib/solution/RegisterAndLogin/index.js +633 -630
  518. package/lib/solution/RegisterAndLogin/types.js +189 -76
  519. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  520. package/lib/solution/Sales/index.d.ts +50 -5
  521. package/lib/solution/Sales/index.js +495 -220
  522. package/lib/solution/Sales/types.d.ts +26 -2
  523. package/lib/solution/Sales/types.js +27 -33
  524. package/lib/solution/ScanOrder/index.d.ts +27 -21
  525. package/lib/solution/ScanOrder/index.js +908 -904
  526. package/lib/solution/ScanOrder/types.d.ts +33 -11
  527. package/lib/solution/ScanOrder/types.js +33 -34
  528. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  529. package/lib/solution/ScanOrder/utils.js +457 -344
  530. package/lib/solution/ShopDiscount/index.js +230 -236
  531. package/lib/solution/ShopDiscount/types.js +15 -37
  532. package/lib/solution/ShopDiscount/utils.js +309 -172
  533. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  534. package/lib/solution/UnifiedBookingSales/index.js +1050 -0
  535. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  536. package/lib/solution/UnifiedBookingSales/types.js +14 -0
  537. package/lib/solution/VenueBooking/index.d.ts +34 -20
  538. package/lib/solution/VenueBooking/index.js +982 -950
  539. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  540. package/lib/solution/VenueBooking/types.js +20 -40
  541. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  542. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  543. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  544. package/lib/solution/VenueBooking/utils/slotMerge.js +96 -108
  545. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  546. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  547. package/lib/solution/VenueBooking/utils.js +130 -67
  548. package/lib/solution/index.d.ts +2 -0
  549. package/lib/solution/index.js +124 -37
  550. package/lib/store/createStore.js +32 -29
  551. package/lib/types/index.d.ts +11 -1
  552. package/lib/types/index.js +4 -16
  553. package/lib/utils/task.js +36 -36
  554. package/lib/utils/watch.js +81 -47
  555. package/package.json +2 -1
  556. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  557. package/lib/solution/Checkout/appointmentDemo.json +0 -1
@@ -18,6 +18,8 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
18
18
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19
19
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
20
20
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
21
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
22
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
21
23
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
22
24
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23
25
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
@@ -116,7 +118,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
116
118
  // 非表单类型 holder 视为匹配
117
119
  if (((_discount$holder = discount.holder) === null || _discount$holder === void 0 ? void 0 : _discount$holder.holder_type) !== 'form') return true;
118
120
  // 主预约holder, 目前(20251124)默认只考虑单个holder的情况
119
- var orderHolderId = Array.isArray(holders) && holders.length > 0 ? holders[0].form_record_id : undefined;
121
+ // 旧版 holders[0].form_record_id 新版 holders[0]
122
+ var orderHolderId = Array.isArray(holders) && holders.length > 0 ? holders[0].form_record_id || holders[0] : undefined;
120
123
  var productHolderId = Array.isArray(product.holder_id) ? product.holder_id[0] : product.holder_id;
121
124
  // 商品不需要选holder,则不对比holder,直接返回true,
122
125
  if (!product.isNeedHolder) return true;
@@ -169,8 +172,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
169
172
  var result = this.calcDiscount({
170
173
  discountList: mergedDiscountList,
171
174
  productList: _toConsumableArray(productList),
172
- holders: holders,
173
175
  orderTotalAmount: orderTotalAmount,
176
+ holders: holders,
174
177
  isFormSubject: isFormSubject
175
178
  }, {
176
179
  scan: true
@@ -223,6 +226,21 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
223
226
  });
224
227
  }
225
228
 
229
+ /** 剔除指定 type/tag 的折扣项,保留手动改价(type=product) / 券等 */
230
+ }, {
231
+ key: "excludeDiscountListByType",
232
+ value: function excludeDiscountListByType(discountList, type) {
233
+ return (discountList || []).filter(function (item) {
234
+ return item.type !== type && item.tag !== type;
235
+ });
236
+ }
237
+
238
+ /** 手动改价场景:去掉 promotion,保留 type=product 等行内折扣 */
239
+ }, {
240
+ key: "resolveDiscountListForManualOverride",
241
+ value: function resolveDiscountListForManualOverride(discountList) {
242
+ return this.excludeDiscountListByType(discountList, 'promotion');
243
+ }
226
244
  // 获取券不可用的原因
227
245
  }, {
228
246
  key: "getUnavailableReason",
@@ -299,12 +317,50 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
299
317
  }, {
300
318
  key: "calcDiscount",
301
319
  value: function calcDiscount(_ref2, options) {
302
- var _this3 = this;
320
+ var _options$selectedList,
321
+ _this3 = this;
303
322
  var discountList = _ref2.discountList,
304
323
  productList = _ref2.productList,
305
324
  holders = _ref2.holders,
306
325
  isFormSubject = _ref2.isFormSubject,
307
326
  orderTotalAmount = _ref2.orderTotalAmount;
327
+ var resolveIsFormSubject = function resolveIsFormSubject(product) {
328
+ return typeof isFormSubject === 'function' ? Boolean(isFormSubject(product)) : Boolean(isFormSubject);
329
+ };
330
+
331
+ // 识别出来是不是在编辑的界面里又新增了商品
332
+ // 这种情况下,如果有可用的优惠券,也会自动勾选上
333
+ var isEditModeAddNewProduct = productList.find(function (n) {
334
+ return n.booking_id;
335
+ }) && productList.find(function (n) {
336
+ return !n.booking_id;
337
+ });
338
+ var reapplyBookingDiscountProductUids = new Set(((options === null || options === void 0 ? void 0 : options.reapplyBookingDiscountProductUids) || []).filter(function (uid) {
339
+ return uid !== undefined && uid !== null && uid !== '';
340
+ }).map(String));
341
+ var getOriginProductUid = function getOriginProductUid(originProduct) {
342
+ var _originProduct$metada, _originProduct$metada2;
343
+ var uid = (_originProduct$metada = originProduct === null || originProduct === void 0 || (_originProduct$metada2 = originProduct.metadata) === null || _originProduct$metada2 === void 0 ? void 0 : _originProduct$metada2.unique_identification_number) !== null && _originProduct$metada !== void 0 ? _originProduct$metada : originProduct === null || originProduct === void 0 ? void 0 : originProduct.unique_identification_number;
344
+ if (uid === undefined || uid === null || uid === '') return undefined;
345
+ return String(uid);
346
+ };
347
+ var shouldReapplyBookingDiscount = function shouldReapplyBookingDiscount(originProduct, selectedDiscount) {
348
+ if (!selectedDiscount) return false;
349
+ var uid = getOriginProductUid(originProduct);
350
+ if (!uid || !reapplyBookingDiscountProductUids.has(uid)) return false;
351
+ var discountType = selectedDiscount.tag || selectedDiscount.type;
352
+ return selectedDiscount.isEditMode === true && selectedDiscount.isSelected === true && ['good_pass', 'discount_card', 'product_discount_card'].includes(discountType);
353
+ };
354
+ var resolveReapplyEditModeDiscountPercent = function resolveReapplyEditModeDiscountPercent(originProduct, selectedDiscount) {
355
+ var _discount2;
356
+ if (!shouldReapplyBookingDiscount(originProduct, selectedDiscount)) return undefined;
357
+ var discountType = (selectedDiscount === null || selectedDiscount === void 0 ? void 0 : selectedDiscount.tag) || (selectedDiscount === null || selectedDiscount === void 0 ? void 0 : selectedDiscount.type);
358
+ if (discountType !== 'discount_card' && discountType !== 'product_discount_card') {
359
+ return undefined;
360
+ }
361
+ var percent = Number((_discount2 = selectedDiscount.discount) === null || _discount2 === void 0 ? void 0 : _discount2.percent);
362
+ return Number.isFinite(percent) ? percent : undefined;
363
+ };
308
364
  var editModeDiscount = [];
309
365
  var addModeDiscount = [];
310
366
  discountList.forEach(function (discount) {
@@ -333,11 +389,23 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
333
389
  }
334
390
  });
335
391
  }
392
+ var hasDiscountInput = editModeDiscount.length > 0 || addModeDiscount.length > 0 || Boolean(options === null || options === void 0 ? void 0 : options.discountId) || Boolean(options === null || options === void 0 || (_options$selectedList = options.selectedList) === null || _options$selectedList === void 0 ? void 0 : _options$selectedList.length) || Boolean(options === null || options === void 0 ? void 0 : options.scan);
393
+ if (!hasDiscountInput) {
394
+ return {
395
+ discountList: discountList,
396
+ productList: productList
397
+ };
398
+ }
399
+ var canUseEditModeDiscountForReapply = function canUseEditModeDiscountForReapply(discount) {
400
+ var discountType = discount.tag || discount.type;
401
+ return reapplyBookingDiscountProductUids.size > 0 && discount.isEditMode === true && discount.isSelected === true && ['good_pass', 'discount_card', 'product_discount_card'].includes(discountType);
402
+ };
336
403
 
337
- // 过滤掉手动取消false的优惠券,但仅用于应用优惠逻辑
338
- var filteredDiscountList = addModeDiscount.filter(function (discount) {
404
+ // 过滤掉手动取消false的优惠券,但仅用于应用优惠逻辑。
405
+ // Change time 重报价需要把已选编辑态折扣卡重新放入候选,再由目标 uid 限定作用范围。
406
+ var filteredDiscountList = [].concat(_toConsumableArray(addModeDiscount.filter(function (discount) {
339
407
  return !discount.isManualSelect;
340
- });
408
+ })), _toConsumableArray(editModeDiscount.filter(canUseEditModeDiscountForReapply)));
341
409
 
342
410
  // 🔥 扁平化商品列表:将 bundle 子商品展开为虚拟商品
343
411
  var flattenProductsWithBundle = function flattenProductsWithBundle(productList) {
@@ -518,14 +586,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
518
586
  // 🔥 扁平化商品列表(包含主商品和bundle子商品)
519
587
  var flattenedList = flattenProductsWithBundle(productList);
520
588
 
521
- // 识别出来是不是在编辑的界面里又新增了商品
522
- // 这种情况下,如果有可用的优惠券,也会自动勾选上
523
- var isEditModeAddNewProduct = flattenedList.find(function (n) {
524
- return n.booking_id;
525
- }) && flattenedList.find(function (n) {
526
- return !n.booking_id;
527
- });
528
-
529
589
  // 对扁平化后的列表按价格降序排序(用于应用优惠券时优先选择高价商品)
530
590
  var sortedFlattenedList = flattenedList.sort(function (a, b) {
531
591
  var _ref3, _a$original_price, _ref4, _b$original_price;
@@ -784,7 +844,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
784
844
  }
785
845
  }
786
846
  });
787
- console.log('occupiedItems', occupiedItems, 'orderLevelDiscountApplicableItems', orderLevelDiscountApplicableItems);
788
847
 
789
848
  // 🔥 第三步:识别 order_level 折扣卡并预计算分摊(排除被其他专属折扣卡占用的商品)
790
849
  sortedDiscountList.forEach(function (discount) {
@@ -884,7 +943,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
884
943
  // 拿到discount配置的holder信息 product信息 product.holder 加在 isLimitedProduct
885
944
  var _tempVar = (flatItem === null || flatItem === void 0 ? void 0 : flatItem.type) === 'bundle' ? flatItem === null || flatItem === void 0 ? void 0 : flatItem.parentProduct : flatItem === null || flatItem === void 0 ? void 0 : flatItem.product;
886
945
  var isHolderMatch = _this3.checkHolderMatch(discount, {
887
- isNeedHolder: isFormSubject && !(_tempVar !== null && _tempVar !== void 0 && _tempVar.isNormalProduct),
946
+ isNeedHolder: resolveIsFormSubject(_tempVar) && !(_tempVar !== null && _tempVar !== void 0 && _tempVar.isNormalProduct),
888
947
  holder_id: (_tempVar === null || _tempVar === void 0 ? void 0 : _tempVar.holder_id) || product.holder_id
889
948
  }, holders);
890
949
  var timeLimit = true;
@@ -927,7 +986,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
927
986
  title: discount.format_title,
928
987
  original_amount: product.price || product.origin_total,
929
988
  pre_value: discount.par_value,
930
- product_id: originProduct.id,
989
+ product_id: originProduct.id || originProduct.product_id,
931
990
  discount_product_id: discount.product_id
932
991
  },
933
992
  metadata: {
@@ -1002,7 +1061,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1002
1061
  // 然后再处理应用哪些优惠券,此时只考虑filteredDiscountList中的优惠券
1003
1062
  // 🔥 使用扁平化后的列表进行处理
1004
1063
  sortedFlattenedList.forEach(function (flatItem, index) {
1005
- var _product10, _product$discount_lis2, _product11, _selectedDiscount$con;
1064
+ var _product10, _originProduct, _originProduct2, _originProduct3, _product$discount_lis2, _product11, _selectedDiscount$con;
1006
1065
  // 获取商品数据
1007
1066
  var product, originProduct;
1008
1067
  if (flatItem.type === 'main') {
@@ -1026,11 +1085,16 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1026
1085
  };
1027
1086
  originProduct = flatItem.originProduct;
1028
1087
  }
1088
+ var isPersistedProduct = ((_product10 = product) === null || _product10 === void 0 ? void 0 : _product10.booking_id) || ((_originProduct = originProduct) === null || _originProduct === void 0 ? void 0 : _originProduct.order_detail_id) || ((_originProduct2 = originProduct) === null || _originProduct2 === void 0 ? void 0 : _originProduct2.orderDetailId) || ((_originProduct3 = originProduct) === null || _originProduct3 === void 0 ? void 0 : _originProduct3.booking_id);
1089
+ var hasExistingWalletDiscount = ((_product$discount_lis2 = product.discount_list) === null || _product$discount_lis2 === void 0 ? void 0 : _product$discount_lis2.length) && ((_product11 = product) === null || _product11 === void 0 || (_product11 = _product11.discount_list) === null || _product11 === void 0 ? void 0 : _product11.every(function (discount) {
1090
+ var _discount$id, _discount$discount4;
1091
+ var discountIdentity = (_discount$id = discount.id) !== null && _discount$id !== void 0 ? _discount$id : (_discount$discount4 = discount.discount) === null || _discount$discount4 === void 0 ? void 0 : _discount$discount4.resource_id;
1092
+ var discountType = discount.tag || discount.type;
1093
+ return Boolean(discountIdentity && ['good_pass', 'discount_card', 'product_discount_card'].includes(discountType));
1094
+ }));
1029
1095
 
1030
- // 已有优惠的商品跳过
1031
- if ((_product10 = product) !== null && _product10 !== void 0 && _product10.booking_id && (_product$discount_lis2 = product.discount_list) !== null && _product$discount_lis2 !== void 0 && _product$discount_lis2.length && (_product11 = product) !== null && _product11 !== void 0 && (_product11 = _product11.discount_list) !== null && _product11 !== void 0 && _product11.every(function (discount) {
1032
- return discount.id && ['good_pass', 'discount_card', 'product_discount_card'].includes(discount.tag || discount.type);
1033
- })) {
1096
+ // 已持久化且已有钱包券/折扣卡的商品行跳过,保留后端历史折扣结果。
1097
+ if (isPersistedProduct && hasExistingWalletDiscount) {
1034
1098
  if (flatItem.type === 'main') {
1035
1099
  processedProductsMap.set(product._id, [originProduct]);
1036
1100
  } else {
@@ -1046,7 +1110,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1046
1110
  var _product$discount_lis3, _product$discount_lis4;
1047
1111
  // 🔥 检查策略可用性(针对 good_pass 和折扣卡)
1048
1112
  var discountType = discount.tag || discount.type;
1049
- if (['good_pass', 'discount_card', 'product_discount_card'].includes(discountType)) {
1113
+ var currentOriginUid = getOriginProductUid(originProduct);
1114
+ var isReapplyEditModeDiscountForProduct = discount.isEditMode && reapplyBookingDiscountProductUids.size > 0 && currentOriginUid && reapplyBookingDiscountProductUids.has(String(currentOriginUid)) && discount.isSelected === true;
1115
+ if (discount.isEditMode && reapplyBookingDiscountProductUids.size > 0) {
1116
+ var uid = currentOriginUid;
1117
+ if (!uid || !reapplyBookingDiscountProductUids.has(uid)) return false;
1118
+ if (!discount.isSelected) return false;
1119
+ }
1120
+ if (['good_pass', 'discount_card', 'product_discount_card'].includes(discountType) && !isReapplyEditModeDiscountForProduct) {
1050
1121
  var _discount$config2;
1051
1122
  // 如果策略检查后没有config,说明不可用
1052
1123
  if (discount.config === undefined || !(discount !== null && discount !== void 0 && (_discount$config2 = discount.config) !== null && _discount$config2 !== void 0 && _discount$config2.isAvailable)) {
@@ -1096,7 +1167,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1096
1167
  // 拿到discount配置的holder信息 product信息 product.holder 不可用return false
1097
1168
  var _tempVar = (flatItem === null || flatItem === void 0 ? void 0 : flatItem.type) === 'bundle' ? flatItem === null || flatItem === void 0 ? void 0 : flatItem.parentProduct : flatItem === null || flatItem === void 0 ? void 0 : flatItem.product;
1098
1169
  var isHolderMatch = _this3.checkHolderMatch(discount, {
1099
- isNeedHolder: isFormSubject && !(_tempVar !== null && _tempVar !== void 0 && _tempVar.isNormalProduct),
1170
+ isNeedHolder: resolveIsFormSubject(_tempVar) && !(_tempVar !== null && _tempVar !== void 0 && _tempVar.isNormalProduct),
1100
1171
  holder_id: (_tempVar === null || _tempVar === void 0 ? void 0 : _tempVar.holder_id) || product.holder_id
1101
1172
  }, holders);
1102
1173
  // 如果 holder 不匹配,则不适用
@@ -1139,12 +1210,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1139
1210
  // 如果是手动折扣,则不适用优惠券
1140
1211
  var isManualDiscount = false;
1141
1212
  if (flatItem.type === 'main') {
1142
- var _product$discount_lis5, _product12, _product12$every;
1213
+ var _product$discount_lis5, _product$discount_lis6, _product12, _product12$every;
1143
1214
  // 主商品:判断自身是否手动折扣
1144
- isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount : product.total != product.origin_total && (product.bundle || []).every(function (item) {
1215
+ isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount : ((_product$discount_lis5 = product.discount_list) === null || _product$discount_lis5 === void 0 ? void 0 : _product$discount_lis5.some(function (item) {
1216
+ return item.type === 'product';
1217
+ })) || product.total != product.origin_total && (product.bundle || []).every(function (item) {
1145
1218
  var _ref11;
1146
1219
  return !((_ref11 = item.discount_list || []) !== null && _ref11 !== void 0 && _ref11.length);
1147
- }) && (!((_product$discount_lis5 = product.discount_list) !== null && _product$discount_lis5 !== void 0 && _product$discount_lis5.length) || ((_product12 = product) === null || _product12 === void 0 || (_product12 = _product12.discount_list) === null || _product12 === void 0 || (_product12$every = _product12.every) === null || _product12$every === void 0 ? void 0 : _product12$every.call(_product12, function (item) {
1220
+ }) && (!((_product$discount_lis6 = product.discount_list) !== null && _product$discount_lis6 !== void 0 && _product$discount_lis6.length) || ((_product12 = product) === null || _product12 === void 0 || (_product12 = _product12.discount_list) === null || _product12 === void 0 || (_product12$every = _product12.every) === null || _product12$every === void 0 ? void 0 : _product12$every.call(_product12, function (item) {
1148
1221
  return item.type === 'product';
1149
1222
  })));
1150
1223
  if (product.inPromotion) {
@@ -1154,11 +1227,13 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1154
1227
  // bundle子商品:判断父主商品是否手动折扣
1155
1228
  var parentProduct = flatItem.parentProduct;
1156
1229
  if (parentProduct) {
1157
- var _parentProduct$discou, _parentProduct$discou2, _parentProduct$discou3;
1158
- isManualDiscount = typeof parentProduct.isManualDiscount === 'boolean' ? parentProduct.isManualDiscount : parentProduct.total != parentProduct.origin_total && (parentProduct.bundle || []).every(function (item) {
1230
+ var _parentProduct$discou, _parentProduct$discou2, _parentProduct$discou3, _parentProduct$discou4;
1231
+ isManualDiscount = typeof parentProduct.isManualDiscount === 'boolean' ? parentProduct.isManualDiscount : ((_parentProduct$discou = parentProduct.discount_list) === null || _parentProduct$discou === void 0 ? void 0 : _parentProduct$discou.some(function (item) {
1232
+ return item.type === 'product';
1233
+ })) || parentProduct.total != parentProduct.origin_total && (parentProduct.bundle || []).every(function (item) {
1159
1234
  var _ref12;
1160
1235
  return !((_ref12 = item.discount_list || []) !== null && _ref12 !== void 0 && _ref12.length);
1161
- }) && (!((_parentProduct$discou = parentProduct.discount_list) !== null && _parentProduct$discou !== void 0 && _parentProduct$discou.length) || (parentProduct === null || parentProduct === void 0 || (_parentProduct$discou2 = parentProduct.discount_list) === null || _parentProduct$discou2 === void 0 || (_parentProduct$discou3 = _parentProduct$discou2.every) === null || _parentProduct$discou3 === void 0 ? void 0 : _parentProduct$discou3.call(_parentProduct$discou2, function (item) {
1236
+ }) && (!((_parentProduct$discou2 = parentProduct.discount_list) !== null && _parentProduct$discou2 !== void 0 && _parentProduct$discou2.length) || (parentProduct === null || parentProduct === void 0 || (_parentProduct$discou3 = parentProduct.discount_list) === null || _parentProduct$discou3 === void 0 || (_parentProduct$discou4 = _parentProduct$discou3.every) === null || _parentProduct$discou4 === void 0 ? void 0 : _parentProduct$discou4.call(_parentProduct$discou3, function (item) {
1162
1237
  return item.type === 'product';
1163
1238
  })));
1164
1239
  }
@@ -1166,9 +1241,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1166
1241
 
1167
1242
  // 勾选时覆盖手动折扣
1168
1243
  if (options !== null && options !== void 0 && options.discountId) {
1169
- var _product$discount_lis6;
1244
+ var _product$discount_lis7;
1170
1245
  // 主商品:检查自己的 discount_list
1171
- if (flatItem.type === 'main' && (_product$discount_lis6 = product.discount_list) !== null && _product$discount_lis6 !== void 0 && _product$discount_lis6.some(function (item) {
1246
+ if (flatItem.type === 'main' && (_product$discount_lis7 = product.discount_list) !== null && _product$discount_lis7 !== void 0 && _product$discount_lis7.some(function (item) {
1172
1247
  var _item$discount;
1173
1248
  return ((_item$discount = item.discount) === null || _item$discount === void 0 ? void 0 : _item$discount.resource_id) === options.discountId;
1174
1249
  })) {
@@ -1176,8 +1251,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1176
1251
  }
1177
1252
  // bundle子商品:检查自己的 discount_list 或父主商品的 discount_list
1178
1253
  if (flatItem.type === 'bundle') {
1179
- var _product$discount_lis7, _flatItem$parentProdu7;
1180
- if ((_product$discount_lis7 = product.discount_list) !== null && _product$discount_lis7 !== void 0 && _product$discount_lis7.some(function (item) {
1254
+ var _product$discount_lis8, _flatItem$parentProdu7;
1255
+ if ((_product$discount_lis8 = product.discount_list) !== null && _product$discount_lis8 !== void 0 && _product$discount_lis8.some(function (item) {
1181
1256
  var _item$discount2;
1182
1257
  return ((_item$discount2 = item.discount) === null || _item$discount2 === void 0 ? void 0 : _item$discount2.resource_id) === options.discountId;
1183
1258
  }) || (_flatItem$parentProdu7 = flatItem.parentProduct) !== null && _flatItem$parentProdu7 !== void 0 && (_flatItem$parentProdu7 = _flatItem$parentProdu7.discount_list) !== null && _flatItem$parentProdu7 !== void 0 && _flatItem$parentProdu7.some(function (item) {
@@ -1189,11 +1264,11 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1189
1264
  }
1190
1265
  }
1191
1266
  if (options !== null && options !== void 0 && options.selectedList) {
1192
- var _product$discount_lis8;
1267
+ var _product$discount_lis9;
1193
1268
  // 主商品:检查自己的 discount_list
1194
- if (flatItem.type === 'main' && (_product$discount_lis8 = product.discount_list) !== null && _product$discount_lis8 !== void 0 && _product$discount_lis8.some(function (item) {
1195
- var _options$selectedList;
1196
- return options === null || options === void 0 || (_options$selectedList = options.selectedList) === null || _options$selectedList === void 0 ? void 0 : _options$selectedList.some(function (n) {
1269
+ if (flatItem.type === 'main' && (_product$discount_lis9 = product.discount_list) !== null && _product$discount_lis9 !== void 0 && _product$discount_lis9.some(function (item) {
1270
+ var _options$selectedList2;
1271
+ return options === null || options === void 0 || (_options$selectedList2 = options.selectedList) === null || _options$selectedList2 === void 0 ? void 0 : _options$selectedList2.some(function (n) {
1197
1272
  var _item$discount4;
1198
1273
  return n.discountId === ((_item$discount4 = item.discount) === null || _item$discount4 === void 0 ? void 0 : _item$discount4.resource_id);
1199
1274
  });
@@ -1202,16 +1277,16 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1202
1277
  }
1203
1278
  // bundle子商品:检查自己的 discount_list 或父主商品的 discount_list
1204
1279
  if (flatItem.type === 'bundle') {
1205
- var _product$discount_lis9, _flatItem$parentProdu8;
1206
- if ((_product$discount_lis9 = product.discount_list) !== null && _product$discount_lis9 !== void 0 && _product$discount_lis9.some(function (item) {
1207
- var _options$selectedList2;
1208
- return options === null || options === void 0 || (_options$selectedList2 = options.selectedList) === null || _options$selectedList2 === void 0 ? void 0 : _options$selectedList2.some(function (n) {
1280
+ var _product$discount_lis10, _flatItem$parentProdu8;
1281
+ if ((_product$discount_lis10 = product.discount_list) !== null && _product$discount_lis10 !== void 0 && _product$discount_lis10.some(function (item) {
1282
+ var _options$selectedList3;
1283
+ return options === null || options === void 0 || (_options$selectedList3 = options.selectedList) === null || _options$selectedList3 === void 0 ? void 0 : _options$selectedList3.some(function (n) {
1209
1284
  var _item$discount5;
1210
1285
  return n.discountId === ((_item$discount5 = item.discount) === null || _item$discount5 === void 0 ? void 0 : _item$discount5.resource_id);
1211
1286
  });
1212
1287
  }) || (_flatItem$parentProdu8 = flatItem.parentProduct) !== null && _flatItem$parentProdu8 !== void 0 && (_flatItem$parentProdu8 = _flatItem$parentProdu8.discount_list) !== null && _flatItem$parentProdu8 !== void 0 && _flatItem$parentProdu8.some(function (item) {
1213
- var _options$selectedList3;
1214
- return options === null || options === void 0 || (_options$selectedList3 = options.selectedList) === null || _options$selectedList3 === void 0 ? void 0 : _options$selectedList3.some(function (n) {
1288
+ var _options$selectedList4;
1289
+ return options === null || options === void 0 || (_options$selectedList4 = options.selectedList) === null || _options$selectedList4 === void 0 ? void 0 : _options$selectedList4.some(function (n) {
1215
1290
  var _item$discount6;
1216
1291
  return n.discountId === ((_item$discount6 = item.discount) === null || _item$discount6 === void 0 ? void 0 : _item$discount6.resource_id);
1217
1292
  });
@@ -1247,7 +1322,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1247
1322
  price: product.price,
1248
1323
  options: restoredOptions
1249
1324
  }), {}, {
1250
- discount_list: _this3.filterDiscountListByType(product.discount_list, 'promotion')
1325
+ discount_list: isManualDiscount ? _this3.resolveDiscountListForManualOverride(product.discount_list) : _this3.filterDiscountListByType(product.discount_list, 'promotion')
1251
1326
  }))]);
1252
1327
  } else {
1253
1328
  var _ref13, _product$_promotion$f, _product13, _product$origin_total, _product$price2;
@@ -1265,26 +1340,26 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1265
1340
  } : {
1266
1341
  _id: product._id.split('___')[0] + '___' + index,
1267
1342
  total: total,
1268
- original_price: product.original_price,
1269
1343
  price: product.price,
1270
1344
  main_product_selling_price: main_product_selling_price,
1271
1345
  options: restoredOptions
1272
1346
  }), {}, {
1273
- discount_list: _this3.filterDiscountListByType(product.discount_list, 'promotion')
1347
+ discount_list: isManualDiscount ? _this3.resolveDiscountListForManualOverride(product.discount_list) : _this3.filterDiscountListByType(product.discount_list, 'promotion')
1274
1348
  }))]);
1275
1349
  }
1276
1350
  } else {
1277
- var _flatItem$bundleItem8;
1351
+ var _flatItem$bundleItem8, _flatItem$bundleItem9;
1278
1352
  // bundle子商品:保存到扁平化Map
1279
1353
  processedFlatItemsMap.set(flatItem._id, [_objectSpread(_objectSpread({}, flatItem), {}, {
1280
- discount_list: _this3.filterDiscountListByType(((_flatItem$bundleItem8 = flatItem.bundleItem) === null || _flatItem$bundleItem8 === void 0 ? void 0 : _flatItem$bundleItem8.discount_list) || [], 'promotion'),
1354
+ discount_list: isManualDiscount ? _this3.resolveDiscountListForManualOverride(((_flatItem$bundleItem8 = flatItem.bundleItem) === null || _flatItem$bundleItem8 === void 0 ? void 0 : _flatItem$bundleItem8.discount_list) || []) : _this3.filterDiscountListByType(((_flatItem$bundleItem9 = flatItem.bundleItem) === null || _flatItem$bundleItem9 === void 0 ? void 0 : _flatItem$bundleItem9.discount_list) || [], 'promotion'),
1281
1355
  price: isManualDiscount ? flatItem.bundleItem.price : flatItem.bundleItem.original_price,
1282
1356
  processed: true
1283
1357
  })]);
1284
1358
  }
1285
1359
  return;
1286
1360
  }
1287
- if (applicableDiscounts.length && product.booking_id && typeof selectedDiscount.isManualSelect === 'undefined' && !(options !== null && options !== void 0 && options.scan) && !isEditModeAddNewProduct) {
1361
+ var shouldReapplyBookingDiscountForProduct = shouldReapplyBookingDiscount(originProduct, selectedDiscount);
1362
+ if (applicableDiscounts.length && product.booking_id && typeof selectedDiscount.isManualSelect === 'undefined' && !(options !== null && options !== void 0 && options.scan) && !isEditModeAddNewProduct && !shouldReapplyBookingDiscountForProduct) {
1288
1363
  return;
1289
1364
  }
1290
1365
 
@@ -1343,7 +1418,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1343
1418
  }));
1344
1419
  }
1345
1420
  for (var i = 0; i < splitCount; i++) {
1346
- var _originProduct, _selectedDiscount$con2, _product$options, _product$options2, _selectedDiscount$met, _selectedDiscount$met2;
1421
+ var _originProduct4, _selectedDiscount$con2, _product$options, _product$options2, _selectedDiscount$met, _selectedDiscount$met2, _reapplyDiscountPerce;
1347
1422
  // 商品券:每个拆分商品使用不同的商品券(从 applicableDiscounts 按索引取)
1348
1423
  // 折扣卡:所有拆分商品使用同一张折扣卡(selectedDiscountCard 或 applicableDiscounts[0])
1349
1424
  var currentSelectedDiscount = isGoodPass ? selectedDiscountCard || applicableDiscounts[i] : selectedDiscountCard || applicableDiscounts[0];
@@ -1371,7 +1446,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1371
1446
  productOriginTotal = product.origin_total;
1372
1447
  }
1373
1448
  // 如果originProduct?._productInit?.original_price为 0,product.origin_total可能为空,此时取 product.total
1374
- if (Number(((_originProduct = originProduct) === null || _originProduct === void 0 || (_originProduct = _originProduct._productInit) === null || _originProduct === void 0 ? void 0 : _originProduct.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
1449
+ if (Number(((_originProduct4 = originProduct) === null || _originProduct4 === void 0 || (_originProduct4 = _originProduct4._productInit) === null || _originProduct4 === void 0 ? void 0 : _originProduct4.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
1375
1450
  productOriginTotal = product.total;
1376
1451
  }
1377
1452
 
@@ -1388,18 +1463,25 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1388
1463
  var productDiscountDifference = void 0;
1389
1464
  var discountedOptions = product.options;
1390
1465
  var optionDiscountAmount = 0;
1466
+ var reapplyDiscountPercent = void 0;
1391
1467
  if (isOrderLevel && productAllocation) {
1392
1468
  // order_level:使用预计算的分摊金额
1393
1469
  amount = productAllocation.discountAmount;
1394
1470
  productDiscountDifference = productAllocation.difference;
1395
1471
  mainProductSellingPrice = Math.max(new Decimal(product.price).minus(amount).toNumber(), 0);
1472
+ } else if (resolveReapplyEditModeDiscountPercent(originProduct, selectedDiscount) !== undefined) {
1473
+ // Change time 重套编辑态折扣卡时,历史 par_value 不是运行时折扣口径,优先使用后端快照里的 percent。
1474
+ var percent = resolveReapplyEditModeDiscountPercent(originProduct, selectedDiscount);
1475
+ reapplyDiscountPercent = new Decimal(percent).toFixed(2);
1476
+ mainProductSellingPrice = new Decimal(product.price || 0).mul(new Decimal(100).minus(percent)).div(100).toDecimalPlaces(2).toNumber();
1477
+ amount = new Decimal(product.price).minus(mainProductSellingPrice).toNumber();
1396
1478
  } else {
1397
1479
  // item_level 或其他类型:使用原有逻辑
1398
- mainProductSellingPrice = getDiscountAmount(currentSelectedDiscount, product.price, product.price);
1480
+ mainProductSellingPrice = getDiscountAmount(selectedDiscount, product.price, product.price);
1399
1481
  amount = new Decimal(product.price).minus(new Decimal(mainProductSellingPrice)).toNumber();
1400
1482
  }
1401
1483
  if (isDeductOptionPrice && (_product$options = product.options) !== null && _product$options !== void 0 && _product$options.length) {
1402
- var optionResult = applyDiscountToOptions(product.options, currentSelectedDiscount);
1484
+ var optionResult = applyDiscountToOptions(product.options, selectedDiscount);
1403
1485
  discountedOptions = optionResult.discountedOptions;
1404
1486
  optionDiscountAmount = optionResult.optionDiscountAmount;
1405
1487
  }
@@ -1412,9 +1494,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1412
1494
  // discount_list.amount / fixed_amount:行级总优惠 = 主商品优惠 + option 优惠(与 total 变化一致)
1413
1495
  var mainProductDiscountAmount = amount;
1414
1496
  var lineDiscountAmount = new Decimal(mainProductDiscountAmount).plus(optionDiscountAmount).toNumber();
1415
- var currentDiscountType = currentSelectedDiscount.tag === 'product_discount_card' ? 'discount_card' : currentSelectedDiscount.tag;
1416
1497
  var _discountType = selectedDiscount.tag || selectedDiscount.type;
1417
- var currentIsGoodPass = currentDiscountType === 'good_pass';
1498
+ var currentIsGoodPass = _discountType === 'good_pass';
1418
1499
  var discountDetail = {
1419
1500
  amount: lineDiscountAmount,
1420
1501
  type: selectedDiscount.tag === 'product_discount_card' ? 'discount_card' : _discountType,
@@ -1425,9 +1506,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1425
1506
  resource_id: selectedDiscount.id,
1426
1507
  title: selectedDiscount.format_title,
1427
1508
  original_amount: product.price,
1428
- product_id: originProduct.id,
1429
- percent: currentSelectedDiscount.par_value,
1430
- discount_product_id: currentSelectedDiscount.product_id
1509
+ product_id: originProduct.id || originProduct.product_id,
1510
+ percent: (_reapplyDiscountPerce = reapplyDiscountPercent) !== null && _reapplyDiscountPerce !== void 0 ? _reapplyDiscountPerce : selectedDiscount.par_value,
1511
+ discount_product_id: selectedDiscount.product_id
1431
1512
  },
1432
1513
  // 前端使用的num数量,为了计算优惠金额(拆分时为1)
1433
1514
  _num: isNeedSplit ? 1 : product.num,
@@ -1444,7 +1525,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1444
1525
  })
1445
1526
  };
1446
1527
  appliedProducts.push(discountDetail);
1447
- appliedDiscountProducts.set(currentSelectedDiscount.id, appliedProducts);
1528
+ appliedDiscountProducts.set(selectedDiscount.id, appliedProducts);
1448
1529
 
1449
1530
  // 记录应用了优惠券的商品
1450
1531
  // 后续更新价格改为 getProductTotalPrice getProductOriginTotalPrice逻辑
@@ -1452,7 +1533,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1452
1533
  arr.push(_this3.hooks.setProduct(originProduct, {
1453
1534
  discount_list: [discountDetail],
1454
1535
  // good_pass:主商品价以折后价为准;勿用 product.price - amount(amount 含 option 优惠时会算错)
1455
- price: currentIsGoodPass ? mainProductSellingPrice : product.price,
1536
+ price: isGoodPass ? mainProductSellingPrice : product.price,
1456
1537
  quantity: isNeedSplit ? 1 : product.quantity,
1457
1538
  origin_total: getProductOriginTotalPrice({
1458
1539
  product: {
@@ -1513,6 +1594,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1513
1594
  // 计算折扣后的价格(使用 getDiscountAmount,内部已处理 maxDeductionAmount)
1514
1595
  var discountedPrice = getDiscountAmount(currentBundleDiscount, product.origin_total, product.origin_total);
1515
1596
  var bundleDiscountAmount = new Decimal(product.origin_total || 0).minus(discountedPrice).toNumber();
1597
+ debugger;
1516
1598
 
1517
1599
  // 确定折扣类型
1518
1600
  var bundleDiscountType = currentBundleDiscount.tag === 'product_discount_card' ? 'discount_card' : currentBundleDiscount.tag;
@@ -1526,9 +1608,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1526
1608
  resource_id: currentBundleDiscount.id,
1527
1609
  title: currentBundleDiscount.format_title,
1528
1610
  original_amount: product.origin_total,
1529
- product_id: product.id,
1530
- percent: currentBundleDiscount.par_value,
1531
- discount_product_id: currentBundleDiscount.product_id
1611
+ product_id: product.id || product.product_id,
1612
+ discount_product_id: selectedDiscount.product_id
1532
1613
  },
1533
1614
  metadata: {
1534
1615
  // 🔥 使用拆分后的唯一 _id
@@ -1565,7 +1646,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1565
1646
  var _nextSelectedDiscount;
1566
1647
  // 重新查找适用于剩余商品的可用折扣(已使用的会被自动过滤掉)
1567
1648
  var nextApplicableDiscounts = sortedDiscountList.filter(function (nextDiscount) {
1568
- var _product$discount_lis10;
1649
+ var _product$discount_lis11;
1569
1650
  var nextDiscountType = nextDiscount.tag || nextDiscount.type;
1570
1651
  // 检查策略可用性
1571
1652
  if (['good_pass', 'discount_card', 'product_discount_card'].includes(nextDiscountType)) {
@@ -1575,7 +1656,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1575
1656
  }
1576
1657
  }
1577
1658
  // 折扣卡时总价为0时不可用
1578
- if ((Number(product.total) <= 0 || !product.total) && !((_product$discount_lis10 = product.discount_list) !== null && _product$discount_lis10 !== void 0 && _product$discount_lis10.find(function (n) {
1659
+ if ((Number(product.total) <= 0 || !product.total) && !((_product$discount_lis11 = product.discount_list) !== null && _product$discount_lis11 !== void 0 && _product$discount_lis11.find(function (n) {
1579
1660
  var _n$discount2;
1580
1661
  return ((_n$discount2 = n.discount) === null || _n$discount2 === void 0 ? void 0 : _n$discount2.resource_id) === nextDiscount.id;
1581
1662
  })) && nextDiscountType !== 'good_pass') return false;
@@ -1831,6 +1912,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1831
1912
 
1832
1913
  // 🔥 使用当前的 _id 作为唯一标识
1833
1914
  var _uniqueId = flatItem._id;
1915
+ debugger;
1834
1916
  var _discountDetail2 = {
1835
1917
  amount: bundleActualDiscountAmount * (product.num || 1),
1836
1918
  type: _currentBundleDiscount.tag === 'product_discount_card' ? 'discount_card' : _currentBundleDiscount.tag,
@@ -1841,9 +1923,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
1841
1923
  resource_id: _currentBundleDiscount.id,
1842
1924
  title: _currentBundleDiscount.format_title,
1843
1925
  original_amount: product.original_price,
1844
- product_id: product.id,
1845
- percent: _currentBundleDiscount.par_value,
1846
- discount_product_id: _currentBundleDiscount.product_id
1926
+ product_id: product.id || product.product_id,
1927
+ percent: selectedDiscount.par_value,
1928
+ discount_product_id: selectedDiscount.product_id
1847
1929
  },
1848
1930
  metadata: _objectSpread({
1849
1931
  // 🔥 使用唯一的 _id
@@ -2160,7 +2242,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2160
2242
  } else {
2161
2243
  // 🔥 没有子商品被拆分,使用原有逻辑
2162
2244
  mainProductArr.forEach(function (mainProduct) {
2163
- var _mainProductData$disc, _mainProductData$disc2, _mainProductData$disc3;
2245
+ var _ref15, _mainProductData$main, _mainProductData$disc, _mainProductData$disc2, _mainProductData$disc3;
2164
2246
  var mainProductData = _this3.hooks.getProduct(mainProduct);
2165
2247
 
2166
2248
  // 重组bundle
@@ -2175,6 +2257,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2175
2257
  } else {
2176
2258
  // 🔥 关键:拆分后的bundle item
2177
2259
  processedBundleItems.forEach(function (item) {
2260
+ var _item$price, _ref14, _item$bundle_selling_;
2261
+ var nextBundlePrice = (_item$price = item.price) !== null && _item$price !== void 0 ? _item$price : bundleItem.price;
2262
+ var nextBundleSellingPrice = (_ref14 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref14 !== void 0 ? _ref14 : bundleItem.bundle_selling_price;
2178
2263
  // 🔥 更新 discount_list 中的 num,使其与拆分后的 item.num 一致
2179
2264
  var updatedDiscountList = (item.discount_list || []).map(function (discount) {
2180
2265
  var _discount$metadata11;
@@ -2189,18 +2274,20 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2189
2274
  newBundle.push(_objectSpread(_objectSpread({}, bundleItem), {}, {
2190
2275
  _id: item._id,
2191
2276
  product_id: bundleItem.product_id,
2192
- price: item.price,
2277
+ price: nextBundlePrice,
2193
2278
  num: item.num,
2194
2279
  discount_list: updatedDiscountList,
2195
- bundle_selling_price: bundleItem.bundle_selling_price !== undefined ? item.price : undefined
2280
+ bundle_selling_price: bundleItem.bundle_selling_price !== undefined ? nextBundleSellingPrice : undefined
2196
2281
  }));
2197
2282
  });
2198
2283
  }
2199
2284
  });
2200
2285
  }
2201
2286
 
2202
- // 🔥 重新计算主商品的总价(包含bundle)
2203
- var newTotal = Number(mainProductData.price || 0);
2287
+ // 主商品已经在前面的 setProduct 中应用过折扣;这里只替换 bundle,
2288
+ // 避免把主商品 discount_list 再扣一次。
2289
+ var mainSellingPrice = (_ref15 = (_mainProductData$main = mainProductData.main_product_selling_price) !== null && _mainProductData$main !== void 0 ? _mainProductData$main : mainProductData.price) !== null && _ref15 !== void 0 ? _ref15 : 0;
2290
+ var newTotal = Number(mainSellingPrice || 0);
2204
2291
  var newOriginTotal = Number(mainProductData.original_price || mainProductData.price || 0);
2205
2292
 
2206
2293
  // 判断是否是手动折扣
@@ -2214,21 +2301,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2214
2301
  newTotal = (_mainProductData$tota = mainProductData.total) !== null && _mainProductData$tota !== void 0 ? _mainProductData$tota : newTotal;
2215
2302
  newOriginTotal = (_mainProductData$orig3 = mainProductData.origin_total) !== null && _mainProductData$orig3 !== void 0 ? _mainProductData$orig3 : newOriginTotal;
2216
2303
  } else {
2217
- // 不是手动折扣时,才重新计算
2218
- var _mainDiscountList = mainProductData.discount_list.filter(function (item) {
2219
- var _item$metadata5;
2220
- return !(item !== null && item !== void 0 && (_item$metadata5 = item.metadata) !== null && _item$metadata5 !== void 0 && _item$metadata5.custom_product_bundle_map_id);
2221
- });
2222
-
2223
- // 如果主商品本身有折扣,需要重新计算主商品价格
2224
- if (_mainDiscountList && _mainDiscountList.length > 0) {
2225
- var _Decimal$minus$toNumb3, _mainProductData$orig4;
2226
- var _allDiscountAmount2 = getDiscountListAmount(_mainDiscountList);
2227
- newTotal = (_Decimal$minus$toNumb3 = new Decimal(mainProductData.price || 0).minus(_allDiscountAmount2).toNumber()) !== null && _Decimal$minus$toNumb3 !== void 0 ? _Decimal$minus$toNumb3 : newTotal;
2228
- newOriginTotal = (_mainProductData$orig4 = mainProductData.origin_total) !== null && _mainProductData$orig4 !== void 0 ? _mainProductData$orig4 : newOriginTotal;
2229
- }
2230
-
2231
- // 累加bundle的价格(只累加一次)
2304
+ // 累加bundle的折后价格(只累加一次)
2232
2305
  if (newBundle.length > 0) {
2233
2306
  newBundle.forEach(function (item) {
2234
2307
  var _item$discount_list3;
@@ -2236,6 +2309,12 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2236
2309
  var originalPrice = ((_item$discount_list3 = item.discount_list) === null || _item$discount_list3 === void 0 || (_item$discount_list3 = _item$discount_list3[0]) === null || _item$discount_list3 === void 0 || (_item$discount_list3 = _item$discount_list3.discount) === null || _item$discount_list3 === void 0 ? void 0 : _item$discount_list3.original_amount) || item.price;
2237
2310
  newOriginTotal += Number(originalPrice) * Number(item.num);
2238
2311
  });
2312
+ // 计算原始总价(不考虑折扣)
2313
+ newBundle.forEach(function (item) {
2314
+ var _item$discount_list4;
2315
+ var originalPrice = ((_item$discount_list4 = item.discount_list) === null || _item$discount_list4 === void 0 || (_item$discount_list4 = _item$discount_list4[0]) === null || _item$discount_list4 === void 0 || (_item$discount_list4 = _item$discount_list4.discount) === null || _item$discount_list4 === void 0 ? void 0 : _item$discount_list4.original_amount) || item.price;
2316
+ newOriginTotal += Number(originalPrice) * Number(item.num);
2317
+ });
2239
2318
  }
2240
2319
  }
2241
2320
 
@@ -2329,7 +2408,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2329
2408
  appliedProductDetails: []
2330
2409
  });
2331
2410
  });
2332
- console.log(processedProductList, 'processedProductList');
2333
2411
  return {
2334
2412
  productList: processedProductList,
2335
2413
  discountList: [].concat(editModeDiscount, _toConsumableArray(updatedDiscountList))
@@ -2345,6 +2423,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2345
2423
  }, {
2346
2424
  key: "checkPackageSubItemUsageRules",
2347
2425
  value: function checkPackageSubItemUsageRules(discount, flatItem) {
2426
+ var _flatItem$product;
2348
2427
  var limitedData = discount.limited_relation_product_data;
2349
2428
  var usageRules = limitedData === null || limitedData === void 0 ? void 0 : limitedData.package_sub_item_usage_rules;
2350
2429
  var rules = ['original_price'].concat(_toConsumableArray((usageRules === null || usageRules === void 0 ? void 0 : usageRules.rules) || []));
@@ -2356,16 +2435,17 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2356
2435
  var ruleType = usageRules.type;
2357
2436
  // 套餐适用范围配置
2358
2437
  var packageScope = usageRules === null || usageRules === void 0 ? void 0 : usageRules.package_scope;
2359
- var _ref14 = packageScope || {},
2360
- scopeType = _ref14.type,
2361
- _ref14$exclude_bundle = _ref14.exclude_bundle_product_ids,
2362
- exclude_bundle_product_ids = _ref14$exclude_bundle === void 0 ? [] : _ref14$exclude_bundle,
2363
- _ref14$include_bundle = _ref14.include_bundle_product_ids,
2364
- include_bundle_product_ids = _ref14$include_bundle === void 0 ? [] : _ref14$include_bundle,
2365
- _ref14$filter = _ref14.filter,
2366
- filter = _ref14$filter === void 0 ? 0 : _ref14$filter;
2438
+ var _ref16 = packageScope || {},
2439
+ scopeType = _ref16.type,
2440
+ _ref16$exclude_bundle = _ref16.exclude_bundle_product_ids,
2441
+ exclude_bundle_product_ids = _ref16$exclude_bundle === void 0 ? [] : _ref16$exclude_bundle,
2442
+ _ref16$include_bundle = _ref16.include_bundle_product_ids,
2443
+ include_bundle_product_ids = _ref16$include_bundle === void 0 ? [] : _ref16$include_bundle,
2444
+ _ref16$filter = _ref16.filter,
2445
+ filter = _ref16$filter === void 0 ? 0 : _ref16$filter;
2367
2446
  var isMainProduct = flatItem.type === 'main'; // 单独购买
2368
2447
  var isBundleItem = flatItem.type === 'bundle'; // 套餐中购买
2448
+ var bundleMainProductId = (_flatItem$product = flatItem.product) === null || _flatItem$product === void 0 ? void 0 : _flatItem$product.product_id;
2369
2449
 
2370
2450
  // 主商品直接可用
2371
2451
  if (isMainProduct) {
@@ -2378,10 +2458,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2378
2458
  return true; // 单独购买时可用
2379
2459
  }
2380
2460
  if (isBundleItem) {
2381
- var _flatItem$bundleItem9, _flatItem$bundleItem10, _flatItem$originProdu, _flatItem$parentProdu11;
2461
+ var _flatItem$bundleItem10, _flatItem$bundleItem11, _flatItem$originProdu, _flatItem$parentProdu11;
2382
2462
  // 套餐中购买时,判断是否为原价
2383
- var priceType = (_flatItem$bundleItem9 = flatItem.bundleItem) === null || _flatItem$bundleItem9 === void 0 ? void 0 : _flatItem$bundleItem9.price_type;
2384
- var priceTypeExt = (_flatItem$bundleItem10 = flatItem.bundleItem) === null || _flatItem$bundleItem10 === void 0 ? void 0 : _flatItem$bundleItem10.price_type_ext;
2463
+ var priceType = (_flatItem$bundleItem10 = flatItem.bundleItem) === null || _flatItem$bundleItem10 === void 0 ? void 0 : _flatItem$bundleItem10.price_type;
2464
+ var priceTypeExt = (_flatItem$bundleItem11 = flatItem.bundleItem) === null || _flatItem$bundleItem11 === void 0 ? void 0 : _flatItem$bundleItem11.price_type_ext;
2385
2465
  // 主商品id
2386
2466
  var mainProductId = (flatItem === null || flatItem === void 0 || (_flatItem$originProdu = flatItem.originProduct) === null || _flatItem$originProdu === void 0 || (_flatItem$originProdu = _flatItem$originProdu._productOrigin) === null || _flatItem$originProdu === void 0 ? void 0 : _flatItem$originProdu.id) || (flatItem === null || flatItem === void 0 || (_flatItem$parentProdu11 = flatItem.parentProduct) === null || _flatItem$parentProdu11 === void 0 ? void 0 : _flatItem$parentProdu11.id) || 0;
2387
2467
  // original_price 对应:
@@ -2408,13 +2488,13 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2408
2488
  if (!filter) {
2409
2489
  isScopeValid = true;
2410
2490
  } else {
2411
- isScopeValid = !exclude_bundle_product_ids.includes(Number(mainProductId));
2491
+ isScopeValid = !exclude_bundle_product_ids.includes(Number(bundleMainProductId));
2412
2492
  }
2413
2493
  }
2414
2494
 
2415
2495
  // 包含套餐判断, products值兼容旧数据
2416
2496
  if (scopeType === 'specific_packages' || scopeType === 'products') {
2417
- isScopeValid = include_bundle_product_ids.includes(Number(mainProductId));
2497
+ isScopeValid = include_bundle_product_ids.includes(Number(bundleMainProductId));
2418
2498
  }
2419
2499
 
2420
2500
  // 价格和套餐适用范围都符合,则可用
@@ -2448,10 +2528,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2448
2528
  return false; // 单独购买时不可用
2449
2529
  }
2450
2530
  if (isBundleItem) {
2451
- var _flatItem$bundleItem11, _flatItem$bundleItem12;
2531
+ var _flatItem$bundleItem12, _flatItem$bundleItem13;
2452
2532
  // 套餐中购买时,判断是否为原价
2453
- var _priceType = (_flatItem$bundleItem11 = flatItem.bundleItem) === null || _flatItem$bundleItem11 === void 0 ? void 0 : _flatItem$bundleItem11.price_type;
2454
- var _priceTypeExt = (_flatItem$bundleItem12 = flatItem.bundleItem) === null || _flatItem$bundleItem12 === void 0 ? void 0 : _flatItem$bundleItem12.price_type_ext;
2533
+ var _priceType = (_flatItem$bundleItem12 = flatItem.bundleItem) === null || _flatItem$bundleItem12 === void 0 ? void 0 : _flatItem$bundleItem12.price_type;
2534
+ var _priceTypeExt = (_flatItem$bundleItem13 = flatItem.bundleItem) === null || _flatItem$bundleItem13 === void 0 ? void 0 : _flatItem$bundleItem13.price_type_ext;
2455
2535
 
2456
2536
  // original_price 对应:
2457
2537
  // 1. price_type: "markup" && price_type_ext: "product_price"
@@ -2464,16 +2544,43 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2464
2544
 
2465
2545
  // 检查 rules
2466
2546
  if (rules.length > 0) {
2467
- // 检查原价
2468
- if (_isOriginalPrice2 && rules.includes('original_price')) {
2469
- return true;
2547
+ var _isOriginalPrice3 = _isOriginalPrice2 && rules.includes('original_price');
2548
+ var _isMarkupPrice3 = _isMarkupPrice2 && rules.includes('markup_price');
2549
+ // 价格是否符合规则:原价或加价
2550
+ var _isPriceValid = _isOriginalPrice3 || _isMarkupPrice3;
2551
+ // 套餐适用范围校验
2552
+ var _isScopeValid = false;
2553
+
2554
+ // 排除套餐判断, product_all值兼容旧数据
2555
+ if (scopeType === 'all_packages' || scopeType === 'product_all') {
2556
+ // 所有套餐可用
2557
+ if (!filter) {
2558
+ _isScopeValid = true;
2559
+ } else {
2560
+ _isScopeValid = !exclude_bundle_product_ids.includes(Number(bundleMainProductId));
2561
+ }
2470
2562
  }
2471
2563
 
2472
- // 检查加价
2473
- if (_isMarkupPrice2 && rules.includes('markup_price')) {
2564
+ // 包含套餐判断, products值兼容旧数据
2565
+ if (scopeType === 'specific_packages' || scopeType === 'products') {
2566
+ _isScopeValid = include_bundle_product_ids.includes(Number(bundleMainProductId));
2567
+ }
2568
+
2569
+ // 价格和套餐适用范围都符合,则可用
2570
+ if (_isPriceValid && _isScopeValid) {
2474
2571
  return true;
2475
2572
  }
2476
2573
 
2574
+ // 检查原价
2575
+ // if (isOriginalPrice && rules.includes('original_price')) {
2576
+ // return true;
2577
+ // }
2578
+
2579
+ // 检查加价
2580
+ // if (isMarkupPrice && rules.includes('markup_price')) {
2581
+ // return true;
2582
+ // }
2583
+
2477
2584
  // 如果都不匹配,则不可用
2478
2585
  return false;
2479
2586
  }
@@ -2550,7 +2657,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2550
2657
  _context3.next = 3;
2551
2658
  return this.core.effects.emit("".concat(this.name, ":onDestroy"), {});
2552
2659
  case 3:
2553
- console.log('[Rules] 已销毁');
2660
+ _get(_getPrototypeOf(RulesModule.prototype), "destroy", this).call(this);
2554
2661
  case 4:
2555
2662
  case "end":
2556
2663
  return _context3.stop();
@@ -2569,8 +2676,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
2569
2676
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
2570
2677
  while (1) switch (_context4.prev = _context4.next) {
2571
2678
  case 0:
2572
- console.log('[Rules] clear');
2573
- case 1:
2574
2679
  case "end":
2575
2680
  return _context4.stop();
2576
2681
  }