@pisell/pisellos 0.0.568 → 0.10.1

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 (588) hide show
  1. package/dist/core/index.js +10 -6
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -3
  4. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  5. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  6. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  7. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  8. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  9. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  10. package/dist/model/strategy/adapter/walletPass/utils.js +24 -96
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +2 -2
  13. package/dist/modules/BaseModule.js +12 -14
  14. package/dist/modules/BookingContext/index.d.ts +48 -0
  15. package/dist/modules/BookingContext/index.js +566 -0
  16. package/dist/modules/BookingContext/types.d.ts +102 -0
  17. package/dist/modules/BookingContext/types.js +51 -0
  18. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  19. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  20. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  21. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  22. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  23. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  24. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  25. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  26. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  27. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  28. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  29. package/dist/modules/BookingContext/utils/index.js +11 -0
  30. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  31. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  32. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  33. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  34. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  35. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  36. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  37. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  38. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  39. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  40. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  41. package/dist/modules/BookingContext/utils/resources.js +486 -0
  42. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  43. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  44. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  45. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  46. package/dist/modules/Cart/index.js +3 -0
  47. package/dist/modules/Cart/utils/cartProduct.js +27 -5
  48. package/dist/modules/Cart/utils/cartResource.js +0 -2
  49. package/dist/modules/Cart/utils/changePrice.js +11 -11
  50. package/dist/modules/Customer/index.d.ts +20 -0
  51. package/dist/modules/Customer/index.js +172 -83
  52. package/dist/modules/Customer/types.d.ts +2 -0
  53. package/dist/modules/Date/index.js +5 -1
  54. package/dist/modules/Discount/index.d.ts +2 -2
  55. package/dist/modules/Discount/index.js +43 -30
  56. package/dist/modules/Discount/types.d.ts +1 -1
  57. package/dist/modules/OpenData/index.d.ts +8 -0
  58. package/dist/modules/OpenData/index.js +38 -16
  59. package/dist/modules/Order/index.d.ts +449 -24
  60. package/dist/modules/Order/index.js +5460 -574
  61. package/dist/modules/Order/types.d.ts +693 -88
  62. package/dist/modules/Order/types.js +68 -1
  63. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  64. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  65. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  66. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  67. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  68. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  69. package/dist/modules/Order/utils.d.ts +167 -18
  70. package/dist/modules/Order/utils.js +960 -165
  71. package/dist/modules/Payment/index.d.ts +10 -9
  72. package/dist/modules/Payment/index.js +573 -746
  73. package/dist/modules/Payment/types.d.ts +44 -24
  74. package/dist/modules/Payment/utils.d.ts +1 -1
  75. package/dist/modules/Payment/utils.js +4 -3
  76. package/dist/modules/Payment/walletpass.d.ts +0 -2
  77. package/dist/modules/Payment/walletpass.js +49 -33
  78. package/dist/modules/Product/types.d.ts +29 -7
  79. package/dist/modules/ProductList/index.d.ts +17 -13
  80. package/dist/modules/ProductList/index.js +182 -81
  81. package/dist/modules/ProductList/types.d.ts +16 -0
  82. package/dist/modules/Quotation/index.d.ts +22 -2
  83. package/dist/modules/Quotation/index.js +108 -42
  84. package/dist/modules/Quotation/types.d.ts +19 -0
  85. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  86. package/dist/modules/ResourcePlanner/index.js +181 -0
  87. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  88. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  89. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  90. package/dist/modules/ResourcePlanner/types.js +1 -0
  91. package/dist/modules/Rules/index.d.ts +8 -10
  92. package/dist/modules/Rules/index.js +324 -513
  93. package/dist/modules/Rules/types.d.ts +14 -3
  94. package/dist/modules/SalesSummary/index.d.ts +23 -26
  95. package/dist/modules/SalesSummary/index.js +152 -46
  96. package/dist/modules/SalesSummary/types.d.ts +9 -1
  97. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  98. package/dist/modules/SalesSummary/utils.js +804 -165
  99. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -12
  100. package/dist/modules/Schedule/index.d.ts +18 -5
  101. package/dist/modules/Schedule/index.js +79 -24
  102. package/dist/modules/Schedule/types.d.ts +2 -0
  103. package/dist/modules/Schedule/utils.js +1 -0
  104. package/dist/modules/Step/index.js +1 -0
  105. package/dist/modules/Summary/index.js +4 -3
  106. package/dist/modules/Summary/utils.js +22 -43
  107. package/dist/modules/SurchargeList/index.d.ts +18 -0
  108. package/dist/modules/SurchargeList/index.js +185 -0
  109. package/dist/modules/SurchargeList/types.d.ts +15 -0
  110. package/dist/modules/SurchargeList/types.js +1 -0
  111. package/dist/modules/index.d.ts +3 -0
  112. package/dist/modules/index.js +4 -1
  113. package/dist/plugins/app.d.ts +2 -0
  114. package/dist/plugins/request.d.ts +1 -0
  115. package/dist/plugins/request.js +4 -1
  116. package/dist/plugins/window.js +6 -2
  117. package/dist/server/index.d.ts +462 -8
  118. package/dist/server/index.js +6168 -680
  119. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  120. package/dist/server/modules/floor-plan/index.js +595 -0
  121. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  122. package/dist/server/modules/floor-plan/types.js +13 -0
  123. package/dist/server/modules/index.d.ts +7 -2
  124. package/dist/server/modules/index.js +6 -0
  125. package/dist/server/modules/menu/index.js +41 -32
  126. package/dist/server/modules/order/index.d.ts +207 -14
  127. package/dist/server/modules/order/index.js +2328 -379
  128. package/dist/server/modules/order/types.d.ts +76 -5
  129. package/dist/server/modules/order/types.js +14 -1
  130. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  131. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  132. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  133. package/dist/server/modules/payment/index.d.ts +28 -0
  134. package/dist/server/modules/payment/index.js +305 -0
  135. package/dist/server/modules/payment/types.d.ts +9 -0
  136. package/dist/server/modules/payment/types.js +1 -0
  137. package/dist/server/modules/products/index.d.ts +105 -14
  138. package/dist/server/modules/products/index.js +1416 -521
  139. package/dist/server/modules/products/types.d.ts +34 -1
  140. package/dist/server/modules/products/types.js +4 -0
  141. package/dist/server/modules/quotation/index.d.ts +39 -0
  142. package/dist/server/modules/quotation/index.js +298 -77
  143. package/dist/server/modules/resource/index.d.ts +2 -3
  144. package/dist/server/modules/resource/index.js +109 -86
  145. package/dist/server/modules/schedule/index.d.ts +6 -4
  146. package/dist/server/modules/schedule/index.js +145 -106
  147. package/dist/server/test.json +713 -0
  148. package/dist/server/types.d.ts +2 -0
  149. package/dist/server/utils/product.js +3 -2
  150. package/dist/server/utils/small-ticket.d.ts +71 -0
  151. package/dist/server/utils/small-ticket.js +963 -0
  152. package/dist/solution/BaseSales/index.d.ts +378 -0
  153. package/dist/solution/BaseSales/index.js +4009 -0
  154. package/dist/solution/BaseSales/types.d.ts +394 -0
  155. package/dist/solution/BaseSales/types.js +40 -0
  156. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  157. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  158. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  159. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  160. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  161. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  162. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  163. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  164. package/dist/solution/BaseSales/utils.d.ts +40 -0
  165. package/dist/solution/BaseSales/utils.js +263 -0
  166. package/dist/solution/BookingByStep/index.d.ts +1 -1
  167. package/dist/solution/BookingByStep/index.js +60 -11
  168. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  169. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  170. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  171. package/dist/solution/BookingTicket/index.d.ts +393 -24
  172. package/dist/solution/BookingTicket/index.js +2508 -443
  173. package/dist/solution/BookingTicket/types.d.ts +191 -6
  174. package/dist/solution/BookingTicket/types.js +83 -10
  175. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  176. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  177. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  178. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  179. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  180. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  181. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  182. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  183. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  184. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  185. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  186. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  187. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  188. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  189. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  190. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  191. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  192. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +42 -1
  193. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  194. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  195. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  196. package/dist/solution/BookingTicket/utils/scan/handleScan.js +42 -28
  197. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  198. package/dist/solution/BookingTicket/utils/scan/index.js +30 -14
  199. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  200. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  201. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  202. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  203. package/dist/solution/BuyTickets/index.js +12 -9
  204. package/dist/solution/Checkout/index.d.ts +1 -0
  205. package/dist/solution/Checkout/index.js +275 -209
  206. package/dist/solution/Checkout/utils/index.js +20 -8
  207. package/dist/solution/RegisterAndLogin/config.js +2 -10
  208. package/dist/solution/RegisterAndLogin/index.js +76 -30
  209. package/dist/solution/Sales/index.d.ts +50 -5
  210. package/dist/solution/Sales/index.js +484 -92
  211. package/dist/solution/Sales/types.d.ts +26 -2
  212. package/dist/solution/ScanOrder/index.d.ts +27 -21
  213. package/dist/solution/ScanOrder/index.js +519 -444
  214. package/dist/solution/ScanOrder/types.d.ts +33 -11
  215. package/dist/solution/ScanOrder/types.js +4 -5
  216. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  217. package/dist/solution/ScanOrder/utils.js +109 -34
  218. package/dist/solution/ShopDiscount/index.js +18 -19
  219. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  220. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  221. package/dist/solution/ShopDiscount/utils.js +0 -9
  222. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  223. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  224. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  225. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  226. package/dist/solution/VenueBooking/index.d.ts +32 -51
  227. package/dist/solution/VenueBooking/index.js +741 -808
  228. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  229. package/dist/solution/VenueBooking/types.d.ts +1 -3
  230. package/dist/solution/VenueBooking/types.js +0 -1
  231. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  232. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  233. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  234. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  235. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  236. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  237. package/dist/solution/index.d.ts +2 -0
  238. package/dist/solution/index.js +3 -1
  239. package/dist/types/index.d.ts +12 -2
  240. package/dist/utils/task.js +18 -15
  241. package/dist/utils/watch.js +1 -0
  242. package/lib/apis/picoding.js +0 -2
  243. package/lib/core/index.js +132 -130
  244. package/lib/effects/index.js +57 -46
  245. package/lib/index.d.ts +0 -1
  246. package/lib/index.js +50 -92
  247. package/lib/model/index.js +21 -14
  248. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  249. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  250. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  251. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  252. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  253. package/lib/model/strategy/adapter/index.js +64 -100
  254. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  255. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  256. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  257. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  258. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  259. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  260. package/lib/model/strategy/adapter/promotion/evaluator.js +233 -382
  261. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  262. package/lib/model/strategy/adapter/promotion/index.js +0 -1
  263. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  264. package/lib/model/strategy/adapter/type.js +16 -4
  265. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  266. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  267. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  268. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  269. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  270. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  271. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  272. package/lib/model/strategy/adapter/walletPass/utils.js +383 -676
  273. package/lib/model/strategy/engine.js +168 -270
  274. package/lib/model/strategy/index.js +34 -49
  275. package/lib/model/strategy/strategy-example.js +239 -243
  276. package/lib/model/strategy/type.js +40 -100
  277. package/lib/modules/Account/index.js +53 -39
  278. package/lib/modules/Account/types.js +33 -20
  279. package/lib/modules/AccountList/index.js +154 -116
  280. package/lib/modules/AccountList/types.js +31 -30
  281. package/lib/modules/AccountList/utils.js +30 -18
  282. package/lib/modules/BaseModule.d.ts +2 -2
  283. package/lib/modules/BaseModule.js +50 -29
  284. package/lib/modules/BookingContext/index.d.ts +48 -0
  285. package/lib/modules/BookingContext/index.js +368 -0
  286. package/lib/modules/BookingContext/types.d.ts +102 -0
  287. package/lib/modules/BookingContext/types.js +34 -0
  288. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  289. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +298 -0
  290. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  291. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +155 -0
  292. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  293. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +222 -0
  294. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  295. package/lib/modules/BookingContext/utils/flexible.js +80 -0
  296. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  297. package/lib/modules/BookingContext/utils/formatResourceList.js +50 -0
  298. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  299. package/lib/modules/BookingContext/utils/index.js +43 -0
  300. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  301. package/lib/modules/BookingContext/utils/noResource.js +90 -0
  302. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  303. package/lib/modules/BookingContext/utils/orderLineDisplay.js +56 -0
  304. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  305. package/lib/modules/BookingContext/utils/productExtend.js +283 -0
  306. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  307. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  308. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  309. package/lib/modules/BookingContext/utils/resourceSelection.js +46 -0
  310. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  311. package/lib/modules/BookingContext/utils/resources.js +377 -0
  312. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  313. package/lib/modules/BookingContext/utils/serviceTimes.js +162 -0
  314. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  315. package/lib/modules/BookingContext/utils/timeSlices.js +124 -0
  316. package/lib/modules/Cart/index.js +124 -170
  317. package/lib/modules/Cart/types.js +51 -46
  318. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  319. package/lib/modules/Cart/utils/cartDate.js +61 -56
  320. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  321. package/lib/modules/Cart/utils/cartNote.js +32 -27
  322. package/lib/modules/Cart/utils/cartProduct.js +261 -309
  323. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  324. package/lib/modules/Cart/utils/cartResource.js +78 -72
  325. package/lib/modules/Cart/utils/changePrice.js +59 -31
  326. package/lib/modules/Cart/utils/index.js +48 -106
  327. package/lib/modules/Customer/constants.js +34 -13
  328. package/lib/modules/Customer/index.d.ts +20 -0
  329. package/lib/modules/Customer/index.js +207 -217
  330. package/lib/modules/Customer/types.d.ts +2 -0
  331. package/lib/modules/Customer/types.js +35 -38
  332. package/lib/modules/Date/index.js +115 -116
  333. package/lib/modules/Date/types.js +28 -16
  334. package/lib/modules/Date/utils.js +123 -174
  335. package/lib/modules/Discount/index.d.ts +2 -2
  336. package/lib/modules/Discount/index.js +133 -119
  337. package/lib/modules/Discount/types.d.ts +1 -1
  338. package/lib/modules/Discount/types.js +31 -9
  339. package/lib/modules/Guests/index.js +56 -30
  340. package/lib/modules/Guests/types.js +33 -23
  341. package/lib/modules/Holder/index.js +189 -209
  342. package/lib/modules/Holder/types.js +16 -4
  343. package/lib/modules/Holder/utils.js +49 -20
  344. package/lib/modules/OpenData/index.d.ts +8 -0
  345. package/lib/modules/OpenData/index.js +88 -63
  346. package/lib/modules/OpenData/types.js +16 -4
  347. package/lib/modules/OpenData/utils.js +78 -44
  348. package/lib/modules/Order/index.d.ts +449 -24
  349. package/lib/modules/Order/index.js +4184 -514
  350. package/lib/modules/Order/types.d.ts +693 -88
  351. package/lib/modules/Order/types.js +35 -24
  352. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  353. package/lib/modules/Order/utils/bundleDiscountHydration.js +139 -0
  354. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  355. package/lib/modules/Order/utils/manualProductDiscount.js +206 -0
  356. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  357. package/lib/modules/Order/utils/orderCollectionIdentity.js +415 -0
  358. package/lib/modules/Order/utils.d.ts +167 -18
  359. package/lib/modules/Order/utils.js +1085 -414
  360. package/lib/modules/Payment/cash.js +33 -20
  361. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  362. package/lib/modules/Payment/eftpos.js +30 -16
  363. package/lib/modules/Payment/index.d.ts +10 -9
  364. package/lib/modules/Payment/index.js +402 -636
  365. package/lib/modules/Payment/mx51.js +0 -1
  366. package/lib/modules/Payment/types.d.ts +44 -24
  367. package/lib/modules/Payment/types.js +107 -216
  368. package/lib/modules/Payment/utils.d.ts +1 -1
  369. package/lib/modules/Payment/utils.js +50 -52
  370. package/lib/modules/Payment/walletpass.d.ts +0 -2
  371. package/lib/modules/Payment/walletpass.js +216 -221
  372. package/lib/modules/Product/index.js +46 -51
  373. package/lib/modules/Product/types.d.ts +29 -7
  374. package/lib/modules/Product/types.js +16 -4
  375. package/lib/modules/Product/utils.js +33 -32
  376. package/lib/modules/ProductList/index.d.ts +17 -13
  377. package/lib/modules/ProductList/index.js +161 -120
  378. package/lib/modules/ProductList/types.d.ts +16 -0
  379. package/lib/modules/ProductList/types.js +31 -9
  380. package/lib/modules/Quotation/index.d.ts +22 -2
  381. package/lib/modules/Quotation/index.js +154 -64
  382. package/lib/modules/Quotation/types.d.ts +19 -0
  383. package/lib/modules/Quotation/types.js +16 -4
  384. package/lib/modules/Resource/index.js +59 -27
  385. package/lib/modules/Resource/types.js +32 -22
  386. package/lib/modules/Resource/utils.js +38 -30
  387. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  388. package/lib/modules/ResourcePlanner/index.js +148 -0
  389. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  390. package/lib/modules/ResourcePlanner/planner.js +933 -0
  391. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  392. package/lib/modules/ResourcePlanner/types.js +17 -0
  393. package/lib/modules/Rules/index.d.ts +8 -10
  394. package/lib/modules/Rules/index.js +960 -1440
  395. package/lib/modules/Rules/types.d.ts +14 -3
  396. package/lib/modules/Rules/types.js +40 -17
  397. package/lib/modules/SalesSummary/index.d.ts +23 -26
  398. package/lib/modules/SalesSummary/index.js +134 -61
  399. package/lib/modules/SalesSummary/types.d.ts +9 -1
  400. package/lib/modules/SalesSummary/types.js +16 -4
  401. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  402. package/lib/modules/SalesSummary/utils.js +814 -233
  403. package/lib/modules/ScanOrderLogger/index.js +79 -59
  404. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  405. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  406. package/lib/modules/ScanOrderLogger/types.js +16 -4
  407. package/lib/modules/Schedule/getDateIsInSchedule.js +169 -338
  408. package/lib/modules/Schedule/index.d.ts +18 -5
  409. package/lib/modules/Schedule/index.js +153 -104
  410. package/lib/modules/Schedule/type.js +16 -4
  411. package/lib/modules/Schedule/types.d.ts +2 -0
  412. package/lib/modules/Schedule/types.js +16 -4
  413. package/lib/modules/Schedule/utils.js +291 -433
  414. package/lib/modules/Step/index.js +52 -40
  415. package/lib/modules/Step/tyeps.js +16 -4
  416. package/lib/modules/Summary/index.js +71 -66
  417. package/lib/modules/Summary/types.js +16 -4
  418. package/lib/modules/Summary/utils.js +418 -791
  419. package/lib/modules/SurchargeList/index.d.ts +18 -0
  420. package/lib/modules/SurchargeList/index.js +109 -0
  421. package/lib/modules/SurchargeList/types.d.ts +15 -0
  422. package/lib/modules/SurchargeList/types.js +17 -0
  423. package/lib/modules/index.d.ts +3 -0
  424. package/lib/modules/index.js +63 -212
  425. package/lib/plugins/app.d.ts +2 -0
  426. package/lib/plugins/app.js +16 -4
  427. package/lib/plugins/index.js +25 -36
  428. package/lib/plugins/request.d.ts +1 -0
  429. package/lib/plugins/request.js +126 -137
  430. package/lib/plugins/shopStore.js +16 -4
  431. package/lib/plugins/user.js +16 -4
  432. package/lib/plugins/window.js +179 -171
  433. package/lib/server/index.d.ts +462 -8
  434. package/lib/server/index.js +4520 -1162
  435. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  436. package/lib/server/modules/floor-plan/index.js +327 -0
  437. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  438. package/lib/server/modules/floor-plan/types.js +34 -0
  439. package/lib/server/modules/index.d.ts +7 -2
  440. package/lib/server/modules/index.js +67 -84
  441. package/lib/server/modules/menu/index.js +122 -146
  442. package/lib/server/modules/menu/types.js +31 -18
  443. package/lib/server/modules/order/index.d.ts +207 -14
  444. package/lib/server/modules/order/index.js +1543 -285
  445. package/lib/server/modules/order/types.d.ts +76 -5
  446. package/lib/server/modules/order/types.js +32 -107
  447. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  448. package/lib/server/modules/order/utils/filterBookings.js +259 -176
  449. package/lib/server/modules/order/utils/filterOrders.js +293 -94
  450. package/lib/server/modules/payment/index.d.ts +28 -0
  451. package/lib/server/modules/payment/index.js +192 -0
  452. package/lib/server/modules/payment/types.d.ts +9 -0
  453. package/lib/server/modules/payment/types.js +17 -0
  454. package/lib/server/modules/products/index.d.ts +105 -14
  455. package/lib/server/modules/products/index.js +850 -475
  456. package/lib/server/modules/products/types.d.ts +34 -1
  457. package/lib/server/modules/products/types.js +34 -41
  458. package/lib/server/modules/quotation/index.d.ts +39 -0
  459. package/lib/server/modules/quotation/index.js +254 -75
  460. package/lib/server/modules/quotation/types.js +31 -21
  461. package/lib/server/modules/resource/index.d.ts +2 -3
  462. package/lib/server/modules/resource/index.js +240 -243
  463. package/lib/server/modules/resource/types.js +33 -42
  464. package/lib/server/modules/schedule/index.d.ts +6 -4
  465. package/lib/server/modules/schedule/index.js +146 -147
  466. package/lib/server/modules/schedule/types.js +21 -14
  467. package/lib/server/modules/schedule/utils.js +163 -334
  468. package/lib/server/test.json +713 -0
  469. package/lib/server/types.d.ts +2 -0
  470. package/lib/server/types.js +16 -4
  471. package/lib/server/utils/index.js +23 -25
  472. package/lib/server/utils/product.js +140 -197
  473. package/lib/server/utils/schedule.js +41 -34
  474. package/lib/server/utils/small-ticket.d.ts +71 -0
  475. package/lib/server/utils/small-ticket.js +904 -0
  476. package/lib/server/utils/time.js +49 -40
  477. package/lib/solution/BaseSales/index.d.ts +378 -0
  478. package/lib/solution/BaseSales/index.js +2533 -0
  479. package/lib/solution/BaseSales/types.d.ts +394 -0
  480. package/lib/solution/BaseSales/types.js +43 -0
  481. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  482. package/lib/solution/BaseSales/utils/cartPromotion.js +1004 -0
  483. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  484. package/lib/solution/BaseSales/utils/parseSalesResponse.js +160 -0
  485. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  486. package/lib/solution/BaseSales/utils/quotationPrice.js +289 -0
  487. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  488. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +256 -0
  489. package/lib/solution/BaseSales/utils.d.ts +40 -0
  490. package/lib/solution/BaseSales/utils.js +244 -0
  491. package/lib/solution/BookingByStep/index.d.ts +1 -1
  492. package/lib/solution/BookingByStep/index.js +1340 -1530
  493. package/lib/solution/BookingByStep/types.js +99 -40
  494. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  495. package/lib/solution/BookingByStep/utils/products.js +52 -42
  496. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  497. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  498. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  499. package/lib/solution/BookingTicket/index.d.ts +393 -24
  500. package/lib/solution/BookingTicket/index.js +1374 -184
  501. package/lib/solution/BookingTicket/types.d.ts +191 -6
  502. package/lib/solution/BookingTicket/types.js +79 -40
  503. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  504. package/lib/solution/BookingTicket/utils/addProductDecision.js +318 -0
  505. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  506. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +125 -0
  507. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  508. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -0
  509. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  510. package/lib/solution/BookingTicket/utils/cartView.js +184 -0
  511. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  512. package/lib/solution/BookingTicket/utils/exampleData.js +0 -0
  513. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  514. package/lib/solution/BookingTicket/utils/orderCustomer.js +58 -0
  515. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  516. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +254 -0
  517. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  518. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +169 -0
  519. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  520. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +97 -64
  521. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  522. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +51 -0
  523. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  524. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -82
  525. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  526. package/lib/solution/BookingTicket/utils/scan/index.js +109 -91
  527. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  528. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  529. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +127 -0
  530. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  531. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +85 -0
  532. package/lib/solution/BuyTickets/index.js +70 -67
  533. package/lib/solution/BuyTickets/types.js +38 -22
  534. package/lib/solution/Checkout/index.d.ts +1 -0
  535. package/lib/solution/Checkout/index.js +1169 -1463
  536. package/lib/solution/Checkout/types.js +61 -91
  537. package/lib/solution/Checkout/utils/index.js +156 -228
  538. package/lib/solution/PlaceOrder/index.js +0 -55
  539. package/lib/solution/RegisterAndLogin/config.js +462 -503
  540. package/lib/solution/RegisterAndLogin/index.js +630 -633
  541. package/lib/solution/RegisterAndLogin/types.js +76 -189
  542. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  543. package/lib/solution/Sales/index.d.ts +50 -5
  544. package/lib/solution/Sales/index.js +498 -238
  545. package/lib/solution/Sales/types.d.ts +26 -2
  546. package/lib/solution/Sales/types.js +33 -27
  547. package/lib/solution/ScanOrder/index.d.ts +27 -21
  548. package/lib/solution/ScanOrder/index.js +936 -864
  549. package/lib/solution/ScanOrder/types.d.ts +33 -11
  550. package/lib/solution/ScanOrder/types.js +34 -34
  551. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  552. package/lib/solution/ScanOrder/utils.js +422 -385
  553. package/lib/solution/ShopDiscount/index.js +233 -235
  554. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  555. package/lib/solution/ShopDiscount/types.js +37 -15
  556. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  557. package/lib/solution/ShopDiscount/utils.js +172 -309
  558. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  559. package/lib/solution/UnifiedBookingSales/index.js +1076 -0
  560. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  561. package/lib/solution/UnifiedBookingSales/types.js +33 -0
  562. package/lib/solution/VenueBooking/index.d.ts +32 -51
  563. package/lib/solution/VenueBooking/index.js +1008 -984
  564. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  565. package/lib/solution/VenueBooking/types.d.ts +1 -3
  566. package/lib/solution/VenueBooking/types.js +39 -20
  567. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  568. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  569. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  570. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  571. package/lib/solution/VenueBooking/utils/slotMerge.js +109 -90
  572. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  573. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  574. package/lib/solution/VenueBooking/utils.js +67 -130
  575. package/lib/solution/index.d.ts +2 -0
  576. package/lib/solution/index.js +41 -102
  577. package/lib/store/createStore.js +29 -32
  578. package/lib/types/index.d.ts +12 -2
  579. package/lib/types/index.js +16 -4
  580. package/lib/utils/task.js +36 -36
  581. package/lib/utils/watch.js +47 -81
  582. package/package.json +2 -4
  583. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  584. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  585. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  586. package/lib/solution/Checkout/appointmentDemo.json +0 -1
  587. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  588. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -45,6 +45,7 @@ var PisellOSCore = /*#__PURE__*/function () {
45
45
  this.serverOptions = options.server;
46
46
  }
47
47
  this.initialize(options);
48
+ console.log('constructor1234');
48
49
  }
49
50
  _createClass(PisellOSCore, [{
50
51
  key: "initialize",
@@ -106,20 +107,21 @@ var PisellOSCore = /*#__PURE__*/function () {
106
107
  _context.next = 16;
107
108
  return this.server.initialize(this.serverOptions.modules, this.serverOptions.autoInitData !== false, options);
108
109
  case 16:
110
+ console.log('[PisellOS] ✅ Server 初始化完成,所有数据已预加载');
109
111
  this.log('[PisellOS] Server 初始化完成');
110
- _context.next = 24;
112
+ _context.next = 25;
111
113
  break;
112
- case 19:
113
- _context.prev = 19;
114
+ case 20:
115
+ _context.prev = 20;
114
116
  _context.t0 = _context["catch"](6);
115
117
  console.error('[PisellOS] ❌ Server 初始化失败:', _context.t0);
116
118
  this.log("Server \u521D\u59CB\u5316\u5931\u8D25: ".concat(_context.t0), 'error');
117
119
  throw _context.t0;
118
- case 24:
120
+ case 25:
119
121
  case "end":
120
122
  return _context.stop();
121
123
  }
122
- }, _callee, this, [[6, 19]]);
124
+ }, _callee, this, [[6, 20]]);
123
125
  }));
124
126
  function initializeServer(_x) {
125
127
  return _initializeServer.apply(this, arguments);
@@ -137,10 +139,11 @@ var PisellOSCore = /*#__PURE__*/function () {
137
139
  var prefix = '[PisellOS]';
138
140
  switch (level) {
139
141
  case 'info':
142
+ console.log("".concat(prefix, " ").concat(message));
140
143
  break;
141
144
  case 'warn':
142
145
  // 使用 console.log 避免显示堆栈跟踪,提升性能
143
-
146
+ console.log("%c".concat(prefix, "%c ").concat(message), 'color: #f59e0b; font-weight: bold;', 'color: #f59e0b;');
144
147
  break;
145
148
  case 'error':
146
149
  console.error("".concat(prefix, " ").concat(message));
@@ -247,6 +250,7 @@ var PisellOSCore = /*#__PURE__*/function () {
247
250
  }
248
251
  // 预先给模块初始化值系统
249
252
  var _createStore = createStore((options === null || options === void 0 ? void 0 : options.initialState) || {}, module.name, function (path, value) {
253
+ console.log('core 检测到模块值更新', module.name, path, value);
250
254
  _this3.effects.emit("".concat(module.name, ":changed"), {
251
255
  path: path,
252
256
  value: value
package/dist/index.d.ts CHANGED
@@ -8,6 +8,5 @@ export * from './plugins';
8
8
  export * from './solution';
9
9
  export * from './model';
10
10
  export { PisellOSCore } from './core';
11
- export { DataVariantEvaluator } from './model/strategy/adapter/dataVariant/evaluator';
12
11
  import PisellOSCore from './core';
13
12
  export default PisellOSCore;
package/dist/index.js CHANGED
@@ -13,9 +13,6 @@ export * from "./model";
13
13
  // 导出核心实现
14
14
  export { PisellOSCore } from "./core";
15
15
 
16
- // 策略评估器(宿主注入 smart pricing / promotion 等场景使用)
17
- export { DataVariantEvaluator } from "./model/strategy/adapter/dataVariant/evaluator";
18
-
19
16
  // 导出框架主类
20
17
  import PisellOSCore from "./core";
21
18
  export default PisellOSCore;
@@ -747,9 +747,10 @@ export var PromotionEvaluator = /*#__PURE__*/function () {
747
747
  return b.price - a.price;
748
748
  });
749
749
 
750
- // 3. 计算可以凑成多少组
750
+ // 3. 计算可以凑成多少组(cumulative 缺省视为 true,与 adapter 一致)
751
751
  var totalUnits = unitProducts.length;
752
- var groupCount = cumulative ? Math.floor(totalUnits / x) : totalUnits >= x ? 1 : 0;
752
+ var isCumulative = cumulative !== false;
753
+ var groupCount = isCumulative ? Math.floor(totalUnits / x) : totalUnits >= x ? 1 : 0;
753
754
  var promotionUnits = groupCount * x;
754
755
 
755
756
  // 4. 分离参与促销的和不参与的商品
@@ -11,7 +11,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
11
11
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
12
12
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
13
  import { StrategyEngine } from "../../index";
14
- import { processVouchers as _processVouchers, recalculateVouchers as _recalculateVouchers, getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice, getTaxAndFeeRoundingRemainder, getBundleItemTaxAndFeeRoundingRemainder, getProductDiscountDifference, getBundleItemDiscountDifference } from "./utils";
14
+ import { processVouchers as _processVouchers, recalculateVouchers as _recalculateVouchers, getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice } from "./utils";
15
15
  import { locales } from "./locales";
16
16
  import Decimal from 'decimal.js';
17
17
  var defaultStrategyMetadataCustom = {
@@ -257,6 +257,7 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
257
257
  var rawText = this.getText(reasonCode);
258
258
  // 金额类型字段:从 otherParams.getData 取货币符号;非金额或取不到则留空
259
259
  var currency = failedField && AMOUNT_FIELDS.has(failedField) ? ((_this$otherParams = this.otherParams) === null || _this$otherParams === void 0 || (_this$otherParams$get = (_this$otherParams2 = _this$otherParams).getData) === null || _this$otherParams$get === void 0 ? void 0 : _this$otherParams$get.call(_this$otherParams2, 'shop_symbol')) || '' : '';
260
+ console.log(currency, 'currency12345');
260
261
  var reason = thresholdValue !== undefined ? formatReason(rawText, thresholdValue, currency) : rawText;
261
262
  results.push({
262
263
  voucher: voucher,
@@ -505,6 +506,7 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
505
506
  }, {
506
507
  key: "calculateApplicableProducts",
507
508
  value: function calculateApplicableProducts(products, applicableProductIds, deductTaxAndFee) {
509
+ console.log(products, 'products1234');
508
510
  var total = 0;
509
511
  var count = 0;
510
512
 
@@ -521,8 +523,8 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
521
523
  // 检查主商品是否适用
522
524
  var isMainProductApplicable = applicableProductIds === null || applicableProductIds.includes(product.product_id);
523
525
  if (isMainProductApplicable) {
524
- // 计算主商品价格(包含加减价子商品)= 单价 * 数量 + 舍入余数 - 商品差额
525
- total += getMainProductPrice(product, deductTaxAndFee) * productQuantity + getTaxAndFeeRoundingRemainder(product, deductTaxAndFee) - getProductDiscountDifference(product);
526
+ // 计算主商品价格(包含加减价子商品)
527
+ total += getMainProductPrice(product, deductTaxAndFee) * productQuantity;
526
528
  count += productQuantity;
527
529
  }
528
530
 
@@ -534,9 +536,9 @@ export var WalletPassEvaluator = /*#__PURE__*/function () {
534
536
  // 检查子商品是否适用
535
537
  var isBundleItemApplicable = applicableProductIds === null || applicableProductIds.includes(bundleItem.bundle_product_id);
536
538
  if (isBundleItemApplicable) {
537
- // 计算原价子商品价格 = 总价 + 舍入余数 - 商品差额
539
+ // 计算原价子商品价格
538
540
  var bundleItemQuantity = bundleItem.num * productQuantity;
539
- total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee) + getBundleItemTaxAndFeeRoundingRemainder(bundleItem, deductTaxAndFee) - getBundleItemDiscountDifference(bundleItem);
541
+ total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee);
540
542
  count += bundleItemQuantity;
541
543
  }
542
544
  }
@@ -164,6 +164,8 @@ var strategyConfigs = [
164
164
  // ============================================
165
165
 
166
166
  function runExample() {
167
+ console.log('========== WalletPass 评估器示例 ==========\n');
168
+
167
169
  // 创建评估器实例
168
170
  var evaluator = new WalletPassEvaluator();
169
171
 
@@ -176,17 +178,38 @@ function runExample() {
176
178
  });
177
179
 
178
180
  // 输出结果
179
-
181
+ console.log('订单信息:');
182
+ console.log("- \u603B\u91D1\u989D: ".concat(180, " \u5143"));
183
+ console.log("- \u5546\u54C1: ".concat(products.map(function (p) {
184
+ return "".concat(p.name, "(").concat(p.quantity, "\u4EF6)");
185
+ }).join(', '), "\n"));
186
+ console.log('评估结果:\n');
180
187
  results.forEach(function (result, index) {
181
- if (result.isApplicable) {} else {}
188
+ console.log("Voucher ".concat(index + 1, ": ").concat(result.voucher.id));
189
+ console.log(" \u9762\u989D: ".concat(result.voucher.amount, " \u5143"));
190
+ console.log(" \u53EF\u7528: ".concat(result.isApplicable ? '✅ 是' : '❌ 否'));
191
+ if (result.isApplicable) {
192
+ console.log(" \u6700\u5927\u62B5\u6263: ".concat(result.maxDeduction, " \u5143"));
193
+ console.log(" \u6BCF\u5355\u53EF\u7528: ".concat(result.canUseCount, " \u5F20"));
194
+ console.log(" \u62B5\u6263\u7A0E\u8D39: ".concat(result.deductTaxAndFee ? '是' : '否'));
195
+ console.log(" \u9002\u7528\u5546\u54C1: ".concat(result.applicableProductIds.join(', ')));
196
+ } else {
197
+ console.log(" \u539F\u56E0: ".concat(result.reason));
198
+ console.log(" \u539F\u56E0\u7801: ".concat(result.reasonCode));
199
+ }
200
+ console.log('');
182
201
  });
183
202
 
184
203
  // 筛选可用的 vouchers
185
204
  var availableVouchers = results.filter(function (r) {
186
205
  return r.isApplicable;
187
206
  });
207
+ console.log("\n\u5171 ".concat(availableVouchers.length, " \u5F20\u53EF\u7528"));
188
208
  if (availableVouchers.length > 0) {
189
- availableVouchers.forEach(function (v) {});
209
+ console.log('可用 voucher ID:');
210
+ availableVouchers.forEach(function (v) {
211
+ console.log(" - ".concat(v.voucher.id, ": \u6700\u591A\u62B5\u6263 ").concat(v.maxDeduction, " \u5143"));
212
+ });
190
213
  }
191
214
  }
192
215
 
@@ -5,7 +5,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
7
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
- import { getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice, getTaxAndFeeRoundingRemainder, getBundleItemTaxAndFeeRoundingRemainder, getProductDiscountDifference, getBundleItemDiscountDifference } from "./utils";
8
+ import { getApplicableProductIds, getMainProductPrice, getBundleItemPrice, getProductQuantity, getBundleItemIsOriginalPrice } from "./utils";
9
9
 
10
10
  /**
11
11
  * Wallet Pass 适配器
@@ -149,8 +149,8 @@ var WalletPassAdapter = /*#__PURE__*/function () {
149
149
  // 检查主商品是否适用
150
150
  var isMainProductApplicable = applicableProductIds === null || applicableProductIds.includes(product.product_id);
151
151
  if (isMainProductApplicable) {
152
- // 计算主商品价格(包含加减价子商品)= 单价 * 数量 + 舍入余数 - 商品差额
153
- total += getMainProductPrice(product, deductTaxAndFee) * productQuantity + getTaxAndFeeRoundingRemainder(product, deductTaxAndFee) - getProductDiscountDifference(product);
152
+ // 计算主商品价格(包含加减价子商品)
153
+ total += getMainProductPrice(product, deductTaxAndFee) * productQuantity;
154
154
  count += productQuantity;
155
155
  }
156
156
 
@@ -162,9 +162,9 @@ var WalletPassAdapter = /*#__PURE__*/function () {
162
162
  // 检查子商品是否适用
163
163
  var isBundleItemApplicable = applicableProductIds === null || applicableProductIds.includes(bundleItem.bundle_product_id);
164
164
  if (isBundleItemApplicable) {
165
- // 计算原价子商品价格 = 总价 + 舍入余数 - 商品差额
165
+ // 计算原价子商品价格
166
166
  var bundleItemQuantity = bundleItem.num * productQuantity;
167
- total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee) + getBundleItemTaxAndFeeRoundingRemainder(bundleItem, deductTaxAndFee) - getBundleItemDiscountDifference(bundleItem);
167
+ total += getBundleItemPrice(bundleItem, productQuantity, deductTaxAndFee);
168
168
  count += bundleItemQuantity;
169
169
  }
170
170
  }
@@ -82,8 +82,6 @@ export interface Product {
82
82
  surcharge_rounding_remainder?: number;
83
83
  tax_fee_rounding_remainder?: number;
84
84
  main_product_selling_price: number;
85
- /** 商品折扣差额 */
86
- product_discount_difference?: number;
87
85
  };
88
86
  is_price_include_tax: 0 | 1;
89
87
  product_bundle: {
@@ -101,7 +99,6 @@ export interface Product {
101
99
  surcharge_fee: number;
102
100
  surcharge_rounding_remainder?: number;
103
101
  tax_fee_rounding_remainder?: number;
104
- product_discount_difference?: number;
105
102
  };
106
103
  }[];
107
104
  }
@@ -29,19 +29,6 @@ export declare function recalculateVouchers(allVouchers: any[], selectedVouchers
29
29
  allWithUpdatedStatus: any[];
30
30
  selectedWithDetails: any[];
31
31
  };
32
- /**
33
- * 获取税费和附加费的舍入余数
34
- * @param product 商品
35
- * @param isDeductTaxAndFee 是否抵扣税费与附加费
36
- * @returns 舍入余数(税费 + 附加费的舍入余数)
37
- */
38
- export declare const getTaxAndFeeRoundingRemainder: (product: Product, isDeductTaxAndFee: boolean) => number;
39
- /**
40
- * 获取主商品的商品差额
41
- * @param product 商品
42
- * @returns 商品差额(与数量无关,计算总价时需要减去)
43
- */
44
- export declare const getProductDiscountDifference: (product: Product) => number;
45
32
  /**
46
33
  * 获取主商品价格(单价,不含舍入余数)
47
34
  * @param product 商品
@@ -49,19 +36,6 @@ export declare const getProductDiscountDifference: (product: Product) => number;
49
36
  * @returns 商品单价
50
37
  */
51
38
  export declare const getMainProductPrice: (product: Product, isDeductTaxAndFee: boolean) => number;
52
- /**
53
- * 获取套餐子商品税费和附加费的舍入余数
54
- * @param bundleItem 套餐子商品
55
- * @param isDeductTaxAndFee 是否抵扣税费与附加费
56
- * @returns 舍入余数(税费 + 附加费的舍入余数)
57
- */
58
- export declare const getBundleItemTaxAndFeeRoundingRemainder: (bundleItem: any, isDeductTaxAndFee: boolean) => number;
59
- /**
60
- * 获取套餐子商品的商品差额
61
- * @param bundleItem 套餐子商品
62
- * @returns 商品差额(与数量无关,计算总价时需要减去)
63
- */
64
- export declare const getBundleItemDiscountDifference: (bundleItem: any) => number;
65
39
  /**
66
40
  * 获取套餐子商品价格(不含舍入余数)
67
41
  * @param bundleItem 套餐子商品
@@ -72,6 +72,7 @@ function applyMaxPassUsageIncrements(usageMap, walletPassProductId, maxPassesPer
72
72
  // 辅助函数:根据 deductTaxAndFee 配置获取推荐使用金额
73
73
  var getRecommendedAmount = function getRecommendedAmount(voucher) {
74
74
  var _config$deductTaxAndF;
75
+ console.log('voucher312', voucher);
75
76
  var config = voucher.config,
76
77
  recommended_usage_amount = voucher.recommended_usage_amount,
77
78
  recommended_pure_product_usage_amount = voucher.recommended_pure_product_usage_amount;
@@ -165,6 +166,8 @@ var getApplicableProducts = function getApplicableProducts(voucher, productsData
165
166
  * @returns 返回推荐券列表和全部列表,每个券包含 _available_max_amount 和 _unified_available_status
166
167
  */
167
168
  export function processVouchers(applicableVouchers, orderTotalAmount, products) {
169
+ console.log(products, 'products123');
170
+
168
171
  // 拆分商品数据,同时维护含税和不含税两个金额池
169
172
  // remainingAmountWithTax: 含税费的剩余可抵扣金额
170
173
  // remainingAmountPure: 纯商品金额(不含税费)的剩余可抵扣金额
@@ -491,7 +494,7 @@ export function processVouchers(applicableVouchers, orderTotalAmount, products)
491
494
  // ======================================================================================
492
495
 
493
496
  // 计算本次抵扣金额(使用同样的 usageAmount)
494
- var maxDeduction = Decimal.min(new Decimal(usageAmount), new Decimal(maxDeductionAmount));
497
+ var maxDeduction = Decimal.min(new Decimal(usageAmount), new Decimal(maxDeductionAmount), remainingOrderAmount);
495
498
  var deductionLeft = maxDeduction;
496
499
  var deductionDetails = [];
497
500
  if (allowCrossProduct) {
@@ -674,6 +677,7 @@ export function recalculateVouchers(allVouchers, selectedVouchers, orderTotalAmo
674
677
 
675
678
  // 第一步:按顺序应用已选中的券,计算实际抵扣
676
679
  selectedVouchers.forEach(function (selectedVoucher) {
680
+ var _selectedVoucher$_ava;
677
681
  var config = selectedVoucher.config,
678
682
  id = selectedVoucher.id;
679
683
  var maxDeductionAmount = config.maxDeductionAmount,
@@ -707,9 +711,11 @@ export function recalculateVouchers(allVouchers, selectedVouchers, orderTotalAmo
707
711
  return;
708
712
  }
709
713
 
710
- // 计算本次抵扣金额
711
- // 优先使用用户手动编辑的金额,否则根据 deductTaxAndFee 配置获取推荐金额
712
- var usageAmount = typeof selectedVoucher.edit_current_amount === 'number' ? selectedVoucher.edit_current_amount : getRecommendedAmount(selectedVoucher);
714
+ // 计算本次抵扣金额:
715
+ // - 用户手动编辑时以编辑金额为准;
716
+ // - 自动推荐/重算时沿用上一轮基于剩余待付金额算出的 _available_max_amount,
717
+ // 避免 recalculateVouchers 又回退到后端单券 recommended_usage_amount 造成超付。
718
+ var usageAmount = typeof selectedVoucher.edit_current_amount === 'number' ? selectedVoucher.edit_current_amount : (_selectedVoucher$_ava = selectedVoucher._available_max_amount) !== null && _selectedVoucher$_ava !== void 0 ? _selectedVoucher$_ava : getRecommendedAmount(selectedVoucher);
713
719
  var maxDeduction = Decimal.min(new Decimal(usageAmount), new Decimal(maxDeductionAmount), remainingOrderAmount);
714
720
  var deductionLeft = maxDeduction;
715
721
  var deductionDetails = [];
@@ -936,40 +942,6 @@ export function recalculateVouchers(allVouchers, selectedVouchers, orderTotalAmo
936
942
  };
937
943
  }
938
944
 
939
- /**
940
- * 获取税费和附加费的舍入余数
941
- * @param product 商品
942
- * @param isDeductTaxAndFee 是否抵扣税费与附加费
943
- * @returns 舍入余数(税费 + 附加费的舍入余数)
944
- */
945
- export var getTaxAndFeeRoundingRemainder = function getTaxAndFeeRoundingRemainder(product, isDeductTaxAndFee) {
946
- var _product$metadata2;
947
- if (!isDeductTaxAndFee) {
948
- return 0;
949
- }
950
-
951
- // 税费舍入余数(如果价格包含税则为0)
952
- var taxFeeRoundingRemainder = new Decimal(0);
953
- if (product.is_price_include_tax !== 1) {
954
- var _product$metadata;
955
- taxFeeRoundingRemainder = new Decimal((product === null || product === void 0 || (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.tax_fee_rounding_remainder) || 0);
956
- }
957
-
958
- // 附加费舍入余数
959
- var surchargeFeeRoundingRemainder = new Decimal((product === null || product === void 0 || (_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.surcharge_rounding_remainder) || 0);
960
- return taxFeeRoundingRemainder.add(surchargeFeeRoundingRemainder).toNumber();
961
- };
962
-
963
- /**
964
- * 获取主商品的商品差额
965
- * @param product 商品
966
- * @returns 商品差额(与数量无关,计算总价时需要减去)
967
- */
968
- export var getProductDiscountDifference = function getProductDiscountDifference(product) {
969
- var _product$metadata3;
970
- return new Decimal((product === null || product === void 0 || (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.product_discount_difference) || 0).toNumber();
971
- };
972
-
973
945
  /**
974
946
  * 获取主商品价格(单价,不含舍入余数)
975
947
  * @param product 商品
@@ -977,8 +949,8 @@ export var getProductDiscountDifference = function getProductDiscountDifference(
977
949
  * @returns 商品单价
978
950
  */
979
951
  export var getMainProductPrice = function getMainProductPrice(product, isDeductTaxAndFee) {
980
- var _product$metadata4, _product$metadata5, _product$metadata6, _product$metadata7, _product$metadata8;
981
- var mainProductPrice = new Decimal((product === null || product === void 0 ? void 0 : product.main_product_selling_price) || ((_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_selling_price) || 0);
952
+ var _product$metadata, _product$metadata2, _product$metadata3, _product$metadata4, _product$metadata5;
953
+ var mainProductPrice = new Decimal((product === null || product === void 0 ? void 0 : product.main_product_selling_price) || ((_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.main_product_selling_price) || 0);
982
954
  var _iterator6 = _createForOfIteratorHelper((product === null || product === void 0 ? void 0 : product.product_bundle) || []),
983
955
  _step6;
984
956
  try {
@@ -997,14 +969,14 @@ export var getMainProductPrice = function getMainProductPrice(product, isDeductT
997
969
  } finally {
998
970
  _iterator6.f();
999
971
  }
1000
- var taxFee = new Decimal((product === null || product === void 0 ? void 0 : product.tax_fee) || (product === null || product === void 0 || (_product$metadata5 = product.metadata) === null || _product$metadata5 === void 0 ? void 0 : _product$metadata5.main_product_attached_bundle_tax_fee) || 0).add((product === null || product === void 0 || (_product$metadata6 = product.metadata) === null || _product$metadata6 === void 0 ? void 0 : _product$metadata6.tax_fee_rounding_remainder) || 0);
972
+ var taxFee = new Decimal((product === null || product === void 0 ? void 0 : product.tax_fee) || (product === null || product === void 0 || (_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.main_product_attached_bundle_tax_fee) || 0).add((product === null || product === void 0 || (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.tax_fee_rounding_remainder) || 0);
1001
973
  if (product.is_price_include_tax === 1) {
1002
974
  taxFee = new Decimal(0);
1003
975
  }
1004
976
 
1005
977
  // 税费
1006
978
  // 附加费
1007
- var surchargeFee = new Decimal((product === null || product === void 0 || (_product$metadata7 = product.metadata) === null || _product$metadata7 === void 0 ? void 0 : _product$metadata7.main_product_attached_bundle_surcharge_fee) || 0).add((product === null || product === void 0 || (_product$metadata8 = product.metadata) === null || _product$metadata8 === void 0 ? void 0 : _product$metadata8.surcharge_rounding_remainder) || 0);
979
+ var surchargeFee = new Decimal((product === null || product === void 0 || (_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_attached_bundle_surcharge_fee) || 0).add((product === null || product === void 0 || (_product$metadata5 = product.metadata) === null || _product$metadata5 === void 0 ? void 0 : _product$metadata5.surcharge_rounding_remainder) || 0);
1008
980
 
1009
981
  // 税费附加费总额
1010
982
  var taxAndFeeTotal = taxFee.add(surchargeFee);
@@ -1016,40 +988,6 @@ export var getMainProductPrice = function getMainProductPrice(product, isDeductT
1016
988
  return mainProductPrice.toNumber();
1017
989
  };
1018
990
 
1019
- /**
1020
- * 获取套餐子商品税费和附加费的舍入余数
1021
- * @param bundleItem 套餐子商品
1022
- * @param isDeductTaxAndFee 是否抵扣税费与附加费
1023
- * @returns 舍入余数(税费 + 附加费的舍入余数)
1024
- */
1025
- export var getBundleItemTaxAndFeeRoundingRemainder = function getBundleItemTaxAndFeeRoundingRemainder(bundleItem, isDeductTaxAndFee) {
1026
- var _bundleItem$metadata2;
1027
- if (!isDeductTaxAndFee) {
1028
- return 0;
1029
- }
1030
-
1031
- // 税费舍入余数(如果价格包含税则为0)
1032
- var taxFeeRoundingRemainder = new Decimal(0);
1033
- if (bundleItem.is_price_include_tax !== 1) {
1034
- var _bundleItem$metadata;
1035
- taxFeeRoundingRemainder = new Decimal(((_bundleItem$metadata = bundleItem.metadata) === null || _bundleItem$metadata === void 0 ? void 0 : _bundleItem$metadata.tax_fee_rounding_remainder) || 0);
1036
- }
1037
-
1038
- // 附加费舍入余数
1039
- var surchargeFeeRoundingRemainder = new Decimal(((_bundleItem$metadata2 = bundleItem.metadata) === null || _bundleItem$metadata2 === void 0 ? void 0 : _bundleItem$metadata2.surcharge_rounding_remainder) || 0);
1040
- return taxFeeRoundingRemainder.add(surchargeFeeRoundingRemainder).toNumber();
1041
- };
1042
-
1043
- /**
1044
- * 获取套餐子商品的商品差额
1045
- * @param bundleItem 套餐子商品
1046
- * @returns 商品差额(与数量无关,计算总价时需要减去)
1047
- */
1048
- export var getBundleItemDiscountDifference = function getBundleItemDiscountDifference(bundleItem) {
1049
- var _bundleItem$metadata3;
1050
- return new Decimal(((_bundleItem$metadata3 = bundleItem.metadata) === null || _bundleItem$metadata3 === void 0 ? void 0 : _bundleItem$metadata3.product_discount_difference) || 0).toNumber();
1051
- };
1052
-
1053
991
  /**
1054
992
  * 获取套餐子商品价格(不含舍入余数)
1055
993
  * @param bundleItem 套餐子商品
@@ -1065,14 +1003,14 @@ export var getBundleItemPrice = function getBundleItemPrice(bundleItem, parentQu
1065
1003
 
1066
1004
  // 根据 deductTaxAndFee 配置决定是否加上税费和附加费
1067
1005
  if (isDeductTaxAndFee) {
1068
- var _bundleItem$tax_fee, _bundleItem$metadata$, _bundleItem$metadata4;
1006
+ var _bundleItem$tax_fee, _bundleItem$metadata$, _bundleItem$metadata;
1069
1007
  // 税费
1070
1008
  var taxFee = new Decimal((_bundleItem$tax_fee = bundleItem.tax_fee) !== null && _bundleItem$tax_fee !== void 0 ? _bundleItem$tax_fee : 0).times(totalQuantity);
1071
1009
  if (bundleItem.is_price_include_tax === 1) {
1072
1010
  taxFee = new Decimal(0);
1073
1011
  }
1074
1012
  // 附加费
1075
- var surchargeFee = new Decimal((_bundleItem$metadata$ = (_bundleItem$metadata4 = bundleItem.metadata) === null || _bundleItem$metadata4 === void 0 ? void 0 : _bundleItem$metadata4.surcharge_fee) !== null && _bundleItem$metadata$ !== void 0 ? _bundleItem$metadata$ : 0).times(totalQuantity);
1013
+ var surchargeFee = new Decimal((_bundleItem$metadata$ = (_bundleItem$metadata = bundleItem.metadata) === null || _bundleItem$metadata === void 0 ? void 0 : _bundleItem$metadata.surcharge_fee) !== null && _bundleItem$metadata$ !== void 0 ? _bundleItem$metadata$ : 0).times(totalQuantity);
1076
1014
  bundleItemPrice = bundleItemPrice.add(taxFee).add(surchargeFee);
1077
1015
  }
1078
1016
  return bundleItemPrice.toNumber();
@@ -1094,11 +1032,6 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
1094
1032
  var unitPriceWithTax = getMainProductPrice(product, true);
1095
1033
  var unitPricePure = getMainProductPrice(product, false);
1096
1034
 
1097
- // 获取舍入余数(与数量无关,只加一次)
1098
- var roundingRemainderWithTax = getTaxAndFeeRoundingRemainder(product, true);
1099
- // 获取商品差额(与数量无关,计算总价时需要减去)
1100
- var discountDifference = getProductDiscountDifference(product);
1101
-
1102
1035
  // 1. 添加主商品(同时计算含税和不含税两个金额,以及单价和剩余数量)
1103
1036
  expandedProducts.push(_objectSpread(_objectSpread({}, product), {}, {
1104
1037
  is_bundle_item: false,
@@ -1110,10 +1043,10 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
1110
1043
  unitPricePure: new Decimal(unitPricePure),
1111
1044
  // 剩余可抵扣数量
1112
1045
  remainingQuantity: productQuantity,
1113
- // 含税费的剩余金额(单价 * 数量 + 舍入余数 - 商品差额)
1114
- remainingAmountWithTax: new Decimal(unitPriceWithTax).times(productQuantity).add(roundingRemainderWithTax).sub(discountDifference),
1115
- // 纯商品金额(不含税费,也需要减去商品差额)
1116
- remainingAmountPure: new Decimal(unitPricePure).times(productQuantity).sub(discountDifference)
1046
+ // 含税费的剩余金额
1047
+ remainingAmountWithTax: new Decimal(unitPriceWithTax).times(productQuantity),
1048
+ // 纯商品金额(不含税费)
1049
+ remainingAmountPure: new Decimal(unitPricePure).times(productQuantity)
1117
1050
  }));
1118
1051
 
1119
1052
  // 2. 添加原价子商品(作为独立商品项)
@@ -1126,11 +1059,6 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
1126
1059
  var bundleUnitPriceWithTax = new Decimal(getBundleItemPrice(bundleItem, 1, true)).dividedBy(bundleItem.num);
1127
1060
  var bundleUnitPricePure = new Decimal(getBundleItemPrice(bundleItem, 1, false)).dividedBy(bundleItem.num);
1128
1061
 
1129
- // 获取子商品舍入余数(与数量无关,只加一次)
1130
- var bundleRoundingRemainder = getBundleItemTaxAndFeeRoundingRemainder(bundleItem, true);
1131
- // 获取子商品差额(与数量无关,计算总价时需要减去)
1132
- var bundleDiscountDifference = getBundleItemDiscountDifference(bundleItem);
1133
-
1134
1062
  // 原价子商品作为独立商品
1135
1063
  expandedProducts.push(_objectSpread(_objectSpread({}, bundleItem), {}, {
1136
1064
  product_id: bundleItem.bundle_product_id,
@@ -1146,10 +1074,10 @@ var expandProductsWithBundleItems = function expandProductsWithBundleItems(produ
1146
1074
  unitPricePure: bundleUnitPricePure,
1147
1075
  // 剩余可抵扣数量
1148
1076
  remainingQuantity: bundleQuantity,
1149
- // 含税费的剩余金额(总价 + 舍入余数 - 商品差额)
1150
- remainingAmountWithTax: new Decimal(getBundleItemPrice(bundleItem, productQuantity, true)).add(bundleRoundingRemainder).sub(bundleDiscountDifference),
1151
- // 纯商品金额(不含税费,也需要减去商品差额)
1152
- remainingAmountPure: new Decimal(getBundleItemPrice(bundleItem, productQuantity, false)).sub(bundleDiscountDifference)
1077
+ // 含税费的剩余金额
1078
+ remainingAmountWithTax: new Decimal(getBundleItemPrice(bundleItem, productQuantity, true)),
1079
+ // 纯商品金额(不含税费)
1080
+ remainingAmountPure: new Decimal(getBundleItemPrice(bundleItem, productQuantity, false))
1153
1081
  }));
1154
1082
  }
1155
1083
  });
@@ -246,6 +246,8 @@ var codeContext = {
246
246
  // ============================================
247
247
 
248
248
  function runExamples() {
249
+ console.log('====== 策略模型使用示例 ======\n');
250
+
249
251
  // 创建引擎实例(开启调试和追踪)
250
252
  var engine = createStrategyEngine({
251
253
  debug: true,
@@ -253,23 +255,32 @@ function runExamples() {
253
255
  });
254
256
 
255
257
  // 示例1: 代金券
256
-
258
+ console.log('示例1: 10元代金券');
257
259
  var result1 = engine.evaluate(voucherConfig, voucherContext);
260
+ console.log('结果:', JSON.stringify(result1, null, 2));
261
+ console.log('\n');
258
262
 
259
263
  // 示例2: 阶梯满减
260
-
264
+ console.log('示例2: 阶梯满减(订单金额250)');
261
265
  var result2 = engine.evaluate(tieredDiscountConfig, tieredContext);
266
+ console.log('结果:', JSON.stringify(result2, null, 2));
267
+ console.log('\n');
262
268
 
263
269
  // 示例3: Code 模式
264
-
270
+ console.log('示例3: Code 模式条件');
265
271
  var result3 = engine.evaluate(codeConditionConfig, codeContext);
272
+ console.log('结果:', JSON.stringify(result3, null, 2));
273
+ console.log('\n');
266
274
 
267
275
  // 快速评估(不需要创建引擎实例)
268
-
276
+ console.log('示例4: 快速评估');
269
277
  var result4 = evaluate(voucherConfig, voucherContext);
278
+ console.log('适用:', result4.applicable);
279
+ console.log('匹配动作数:', result4.matchedActions.length);
280
+ console.log('\n');
270
281
 
271
282
  // 注册自定义运算符
272
-
283
+ console.log('示例5: 自定义运算符');
273
284
  engine.registerOperator('divisible_by', function (fieldValue, compareValue) {
274
285
  return Number(fieldValue) % Number(compareValue) === 0;
275
286
  });
@@ -306,8 +317,11 @@ function runExamples() {
306
317
  }
307
318
  };
308
319
  var result5 = engine.evaluate(customOperatorConfig, customContext);
320
+ console.log('结果:', result5.applicable ? '适用' : '不适用');
321
+ console.log('匹配动作:', result5.matchedActions);
309
322
 
310
323
  // 调试信息
324
+ console.log('\n引擎调试信息:', engine.getDebugInfo());
311
325
  }
312
326
 
313
327
  // 运行示例(如果直接执行此文件)
@@ -14,9 +14,9 @@ export declare class BaseModule {
14
14
  store: any;
15
15
  cacheKey: string[];
16
16
  }): void;
17
- effectsOn(eventType: string, callback: (payload: any) => void, force?: boolean): void;
17
+ effectsOn(eventType: string, callback: (payload: any) => void): () => void;
18
18
  effectsOff(eventType: string, callback: (payload: any) => void): void;
19
- effectsOnce(eventType: string, callback: (payload: any) => void, force?: boolean): void;
19
+ effectsOnce(eventType: string, callback: (payload: any) => void): () => void;
20
20
  effectsEmit(eventType: string, payload: any): Promise<{
21
21
  status: boolean;
22
22
  data: any;
@@ -1,6 +1,4 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
2
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
3
  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); } }
6
4
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -41,7 +39,7 @@ export var BaseModule = /*#__PURE__*/function () {
41
39
  var currentCacheData = window.sessionStorage.getItem(fatherModule);
42
40
  var currentCacheDataObj = JSON.parse(currentCacheData || '{}');
43
41
  if (!currentCacheData || !currentCacheDataObj[cacheId]) {
44
- currentCacheDataObj = _objectSpread(_defineProperty({}, cacheId, _defineProperty({}, this.name, {})), currentCacheDataObj);
42
+ currentCacheDataObj = _defineProperty({}, cacheId, _defineProperty({}, this.name, {}));
45
43
  }
46
44
  if (!currentCacheDataObj[cacheId][this.name]) {
47
45
  currentCacheDataObj[cacheId][this.name] = {};
@@ -52,24 +50,24 @@ export var BaseModule = /*#__PURE__*/function () {
52
50
  window.sessionStorage.setItem(fatherModule, JSON.stringify(currentCacheDataObj));
53
51
  } else {
54
52
  var _currentCacheData = window.sessionStorage.getItem(cacheId);
55
- var _currentCacheDataObj = JSON.parse(_currentCacheData || '{}');
56
- if (!_currentCacheDataObj) {
57
- _currentCacheDataObj = {};
53
+ var _currentCacheDataObj2 = JSON.parse(_currentCacheData || '{}');
54
+ if (!_currentCacheDataObj2) {
55
+ _currentCacheDataObj2 = {};
58
56
  }
59
- if (!_currentCacheDataObj[this.name]) {
60
- _currentCacheDataObj[this.name] = {};
57
+ if (!_currentCacheDataObj2[this.name]) {
58
+ _currentCacheDataObj2[this.name] = {};
61
59
  }
62
60
  cacheKey.forEach(function (key) {
63
- _currentCacheDataObj[_this.name][key] = store[key];
61
+ _currentCacheDataObj2[_this.name][key] = store[key];
64
62
  });
65
- window.sessionStorage.setItem(cacheId, JSON.stringify(_currentCacheDataObj));
63
+ window.sessionStorage.setItem(cacheId, JSON.stringify(_currentCacheDataObj2));
66
64
  }
67
65
  }
68
66
  }
69
67
  }, {
70
68
  key: "effectsOn",
71
- value: function effectsOn(eventType, callback, force) {
72
- return this.core.effects.on("".concat(this.name, ":").concat(eventType), callback, force);
69
+ value: function effectsOn(eventType, callback) {
70
+ return this.core.effects.on("".concat(this.name, ":").concat(eventType), callback);
73
71
  }
74
72
  }, {
75
73
  key: "effectsOff",
@@ -78,8 +76,8 @@ export var BaseModule = /*#__PURE__*/function () {
78
76
  }
79
77
  }, {
80
78
  key: "effectsOnce",
81
- value: function effectsOnce(eventType, callback, force) {
82
- return this.core.effects.once("".concat(this.name, ":").concat(eventType), callback, force);
79
+ value: function effectsOnce(eventType, callback) {
80
+ return this.core.effects.once("".concat(this.name, ":").concat(eventType), callback);
83
81
  }
84
82
  }, {
85
83
  key: "effectsEmit",