@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
@@ -1,42 +1,15 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";
28
2
 
29
- // src/model/strategy/adapter/walletPass/evaluator.ts
30
- var evaluator_exports = {};
31
- __export(evaluator_exports, {
32
- WalletPassEvaluator: () => WalletPassEvaluator
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
34
- module.exports = __toCommonJS(evaluator_exports);
35
- var import__ = require("../../index");
36
- var import_utils = require("./utils");
37
- var import_locales = require("./locales");
38
- var import_decimal = __toESM(require("decimal.js"));
39
- var defaultStrategyMetadataCustom = {
6
+ exports.WalletPassEvaluator = void 0;
7
+ var _index = require("../../index");
8
+ var _utils = require("./utils");
9
+ var _locales = require("./locales");
10
+ var _decimal = _interopRequireDefault(require("decimal.js"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ const defaultStrategyMetadataCustom = {
40
13
  maxDeductionAmount: 99999,
41
14
  maxUsagePerOrder: 0,
42
15
  allowCrossProduct: true,
@@ -45,34 +18,54 @@ var defaultStrategyMetadataCustom = {
45
18
  maxPassesPerItem: 0,
46
19
  deductOptionPrice: false
47
20
  };
48
- var FIELD_REASON_CODE_MAP = {
49
- orderTotalAmount: "order_total_amount_not_enough",
50
- applicableProductTotalAmount: "applicable_product_total_amount_not_enough",
51
- applicableProductCount: "applicable_product_count_not_enough"
21
+
22
+ /**
23
+ * 条件 field → reasonCode 映射
24
+ * 用于将策略引擎返回的 failedField 转换为本地化文案 key
25
+ */
26
+ const FIELD_REASON_CODE_MAP = {
27
+ orderTotalAmount: 'order_total_amount_not_enough',
28
+ applicableProductTotalAmount: 'applicable_product_total_amount_not_enough',
29
+ applicableProductCount: 'applicable_product_count_not_enough'
52
30
  };
53
- var AMOUNT_FIELDS = /* @__PURE__ */ new Set([
54
- "orderTotalAmount",
55
- "applicableProductTotalAmount"
56
- ]);
57
- function formatReason(template, value, currency = "") {
58
- if (!template)
59
- return template;
60
- const v = value === void 0 || value === null ? "" : String(value);
61
- const c = currency === void 0 || currency === null ? "" : String(currency);
31
+
32
+ /**
33
+ * 金额类型 field 集合(需要在文案前拼货币符号)
34
+ */
35
+ const AMOUNT_FIELDS = new Set(['orderTotalAmount', 'applicableProductTotalAmount']);
36
+
37
+ /**
38
+ * 用阈值与货币符号替换文案中的占位符
39
+ * 支持占位符:{value} / ${value} / {currency}
40
+ */
41
+ function formatReason(template, value, currency = '') {
42
+ if (!template) return template;
43
+ const v = value === undefined || value === null ? '' : String(value);
44
+ const c = currency === undefined || currency === null ? '' : String(currency);
45
+ // 注意:必须先替换 value,再替换 currency
46
+ // 否则 currency 注入的 "$" 会被后续的 /\$\{value\}/ 正则误吞
47
+ // 使用函数作为替换参数,避免替换串中的 "$" 被 String.prototype.replace
48
+ // 当作特殊序列(如 $$ -> $、$& 等)处理
62
49
  return template.replace(/\$\{value\}/g, () => v).replace(/\{value\}/g, () => v).replace(/\{currency\}/g, () => c);
63
50
  }
64
- var WalletPassEvaluator = class {
51
+
52
+ /**
53
+ * Wallet Pass 评估器
54
+ * 用于评估哪些 voucher 可以在当前订单中使用
55
+ */
56
+ class WalletPassEvaluator {
57
+ engine;
58
+ strategyConfigs = [];
59
+ locale = 'en';
60
+ otherParams = {};
65
61
  constructor() {
66
- this.strategyConfigs = [];
67
- this.locale = "en";
68
- this.otherParams = {};
69
- this.engine = new import__.StrategyEngine({
62
+ this.engine = new _index.StrategyEngine({
70
63
  debug: false,
71
64
  enableTrace: false
72
65
  });
73
66
  }
74
67
  setStrategyConfigs(strategyConfigs) {
75
- const newStrategyConfigs = strategyConfigs.filter((item) => item.metadata.type === "wallet_pass");
68
+ const newStrategyConfigs = strategyConfigs.filter(item => item.metadata.type === 'wallet_pass');
76
69
  this.strategyConfigs = newStrategyConfigs;
77
70
  }
78
71
  getStrategyConfigs() {
@@ -85,9 +78,9 @@ var WalletPassEvaluator = class {
85
78
  this.otherParams = otherParams;
86
79
  }
87
80
  getText(key) {
88
- var _a, _b;
89
- return (_b = (_a = import_locales.locales) == null ? void 0 : _a[this.locale]) == null ? void 0 : _b[key];
81
+ return _locales.locales?.[this.locale]?.[key];
90
82
  }
83
+
91
84
  /**
92
85
  * 搜索券的格式
93
86
  * @param input 输入
@@ -95,20 +88,19 @@ var WalletPassEvaluator = class {
95
88
  */
96
89
  searchVoucherFormat(input) {
97
90
  const results = this.evaluate(input);
98
- return results.map((item) => {
99
- var _a, _b;
91
+ return results.map(item => {
100
92
  if (item.isApplicable) {
101
93
  return {
102
94
  ...item.voucher,
103
95
  config: {
104
- ...(_a = item == null ? void 0 : item.strategyResult) == null ? void 0 : _a.config.metadata.custom
96
+ ...item?.strategyResult?.config.metadata.custom
105
97
  }
106
98
  };
107
99
  } else {
108
100
  return {
109
101
  ...item.voucher,
110
102
  config: {
111
- ...(_b = item == null ? void 0 : item.strategyResult) == null ? void 0 : _b.config.metadata.custom
103
+ ...item?.strategyResult?.config.metadata.custom
112
104
  },
113
105
  _unified_available_status: 0,
114
106
  reason: item.reason,
@@ -117,20 +109,28 @@ var WalletPassEvaluator = class {
117
109
  }
118
110
  });
119
111
  }
112
+
120
113
  /**
121
114
  * 评估可用的 vouchers
122
115
  */
123
116
  evaluate(input) {
124
- var _a, _b, _c, _d, _e, _f, _g;
125
- const { orderTotalAmount, products, vouchers, strategyConfigs } = input;
126
- const productIds = products.map((p) => p.product_id);
117
+ const {
118
+ orderTotalAmount,
119
+ products,
120
+ vouchers,
121
+ strategyConfigs
122
+ } = input;
123
+
124
+ // 提取订单中的商品ID
125
+ const productIds = products.map(p => p.product_id);
127
126
  const results = [];
127
+
128
+ // 遍历每个 voucher 进行评估
128
129
  for (const voucher of vouchers) {
129
- const applicableStrategies = this.findApplicableStrategies(
130
- voucher,
131
- strategyConfigs || this.strategyConfigs
132
- );
130
+ // 查找适用此 voucher 的策略配置
131
+ const applicableStrategies = this.findApplicableStrategies(voucher, strategyConfigs || this.strategyConfigs);
133
132
  if (applicableStrategies.length === 0) {
133
+ // 没有匹配的策略 默认可用
134
134
  results.push({
135
135
  voucher,
136
136
  isApplicable: true,
@@ -138,8 +138,8 @@ var WalletPassEvaluator = class {
138
138
  maxDeduction: 0,
139
139
  deductTaxAndFee: true,
140
140
  applicableProductIds: [],
141
- reason: "",
142
- reasonCode: "",
141
+ reason: '',
142
+ reasonCode: '',
143
143
  strategyResult: {
144
144
  config: {
145
145
  metadata: {
@@ -152,13 +152,20 @@ var WalletPassEvaluator = class {
152
152
  });
153
153
  continue;
154
154
  }
155
+
156
+ // 对每个策略进行评估(取第一个匹配的策略)
155
157
  const strategy = applicableStrategies[0];
156
- const applicableProductIds = (0, import_utils.getApplicableProductIds)(voucher);
157
- const { applicableTotal, applicableCount } = this.calculateApplicableProducts(
158
- products,
159
- applicableProductIds,
160
- ((_b = (_a = strategy == null ? void 0 : strategy.metadata) == null ? void 0 : _a.custom) == null ? void 0 : _b.deductTaxAndFee) ?? true
161
- );
158
+
159
+ // 从 voucher 中获取适用商品ID
160
+ const applicableProductIds = (0, _utils.getApplicableProductIds)(voucher);
161
+
162
+ // 计算适用商品的总金额和数量
163
+ const {
164
+ applicableTotal,
165
+ applicableCount
166
+ } = this.calculateApplicableProducts(products, applicableProductIds, strategy?.metadata?.custom?.deductTaxAndFee ?? true);
167
+
168
+ // 准备运行时上下文
162
169
  const context = {
163
170
  entities: {
164
171
  voucher,
@@ -169,7 +176,7 @@ var WalletPassEvaluator = class {
169
176
  }
170
177
  },
171
178
  attributes: {
172
- orderTotalAmount,
179
+ orderTotalAmount: orderTotalAmount,
173
180
  applicableProductTotalAmount: applicableTotal,
174
181
  applicableProductCount: applicableCount,
175
182
  voucherProductId: voucher.product_id,
@@ -179,7 +186,11 @@ var WalletPassEvaluator = class {
179
186
  timestamp: Date.now()
180
187
  }
181
188
  };
189
+
190
+ // 执行策略评估
182
191
  const evaluationResult = this.engine.evaluate(strategy, context);
192
+
193
+ // 从策略配置中获取业务配置
183
194
  const businessConfig = strategy.metadata.custom || {};
184
195
  const maxDeduction = businessConfig.maxDeductionAmount || 0;
185
196
  const canUseCount = businessConfig.maxUsagePerOrder || 0;
@@ -195,27 +206,29 @@ var WalletPassEvaluator = class {
195
206
  strategyResult: evaluationResult
196
207
  });
197
208
  } else {
198
- let reasonCode = "not_meet_the_required_conditions";
199
- let thresholdValue = void 0;
200
- const failedField = (_c = evaluationResult.matched) == null ? void 0 : _c.failedField;
201
- const failedRule = (_e = (_d = evaluationResult.matched) == null ? void 0 : _d.failedRules) == null ? void 0 : _e[0];
209
+ // 优先根据失败的 field 映射到具体的 reasonCode(更精确的失败原因)
210
+ let reasonCode = 'not_meet_the_required_conditions';
211
+ let thresholdValue = undefined;
212
+ const failedField = evaluationResult.matched?.failedField;
213
+ const failedRule = evaluationResult.matched?.failedRules?.[0];
202
214
  if (failedField && FIELD_REASON_CODE_MAP[failedField]) {
203
215
  reasonCode = FIELD_REASON_CODE_MAP[failedField];
204
- thresholdValue = failedRule == null ? void 0 : failedRule.value;
216
+ thresholdValue = failedRule?.value;
205
217
  } else if (evaluationResult.code) {
218
+ // 兜底:保留原有 code → reasonCode 映射
206
219
  const codeMapping = {
207
- INSUFFICIENT_AMOUNT: "not_meet_the_required_conditions",
208
- USAGE_LIMIT_EXCEEDED: "usage_limit_reached",
209
- CHANNEL_NOT_ALLOWED: "not_available_for_this_channel",
210
- ORDER_TYPE_NOT_ALLOWED: "not_valid_for_this_order_type",
211
- DEDUCTION_LIMIT_EXCEEDED: "exceeds_the_maximum_deduction_limit"
220
+ INSUFFICIENT_AMOUNT: 'not_meet_the_required_conditions',
221
+ USAGE_LIMIT_EXCEEDED: 'usage_limit_reached',
222
+ CHANNEL_NOT_ALLOWED: 'not_available_for_this_channel',
223
+ ORDER_TYPE_NOT_ALLOWED: 'not_valid_for_this_order_type',
224
+ DEDUCTION_LIMIT_EXCEEDED: 'exceeds_the_maximum_deduction_limit'
212
225
  };
213
- reasonCode = codeMapping[evaluationResult.code] || "not_meet_the_required_conditions";
226
+ reasonCode = codeMapping[evaluationResult.code] || 'not_meet_the_required_conditions';
214
227
  }
215
228
  const rawText = this.getText(reasonCode);
216
- const currency = failedField && AMOUNT_FIELDS.has(failedField) ? ((_g = (_f = this.otherParams) == null ? void 0 : _f.getData) == null ? void 0 : _g.call(_f, "shop_symbol")) || "" : "";
217
- console.log(currency, "currency12345");
218
- const reason = thresholdValue !== void 0 ? formatReason(rawText, thresholdValue, currency) : rawText;
229
+ // 金额类型字段:从 otherParams.getData 取货币符号;非金额或取不到则留空
230
+ const currency = failedField && AMOUNT_FIELDS.has(failedField) ? this.otherParams?.getData?.('shop_symbol') || '' : '';
231
+ const reason = thresholdValue !== undefined ? formatReason(rawText, thresholdValue, currency) : rawText;
219
232
  results.push({
220
233
  voucher,
221
234
  isApplicable: false,
@@ -224,36 +237,47 @@ var WalletPassEvaluator = class {
224
237
  deductTaxAndFee: false,
225
238
  applicableProductIds: [],
226
239
  reason,
227
- reasonCode,
240
+ reasonCode: reasonCode,
228
241
  strategyResult: evaluationResult
229
242
  });
230
243
  }
231
244
  }
232
245
  return results;
233
246
  }
247
+
234
248
  /** 检查代金券/折扣卡是否可用 并返回config */
235
249
  checkVoucherAvailability(input) {
236
- var _a, _b, _c, _d, _e;
237
- const { orderTotalAmount, products, vouchers } = input;
250
+ const {
251
+ orderTotalAmount,
252
+ products,
253
+ vouchers
254
+ } = input;
238
255
  const results = this.evaluate(input);
239
- const isAvailable = ((_a = results[0]) == null ? void 0 : _a.isApplicable) || false;
256
+ const isAvailable = results[0]?.isApplicable || false;
240
257
  return {
241
258
  isAvailable,
242
259
  config: {
243
- ...(_e = (_d = (_c = (_b = results[0]) == null ? void 0 : _b.strategyResult) == null ? void 0 : _c.config) == null ? void 0 : _d.metadata) == null ? void 0 : _e.custom
260
+ ...results[0]?.strategyResult?.config?.metadata?.custom
244
261
  }
245
262
  };
246
263
  }
264
+
247
265
  /**
248
266
  * 获取推荐券
249
267
  * @param input 输入
250
268
  * @returns 返回推荐券列表
251
269
  */
252
270
  getRecommendedVouchers(input) {
253
- const { orderTotalAmount, products, vouchers } = input;
271
+ const {
272
+ orderTotalAmount,
273
+ products,
274
+ vouchers
275
+ } = input;
276
+ // 基于后端返回的状态不可用券
254
277
  const noApplicableVoucher = [];
278
+ // 基于后端返回的状态可用券
255
279
  const applicableVoucher = [];
256
- vouchers.forEach((voucher) => {
280
+ vouchers.forEach(voucher => {
257
281
  if (voucher.unified_available_status === 1) {
258
282
  applicableVoucher.push(voucher);
259
283
  } else {
@@ -265,17 +289,17 @@ var WalletPassEvaluator = class {
265
289
  vouchers: applicableVoucher
266
290
  });
267
291
  const newVouchers = [];
268
- results.forEach((item) => {
269
- var _a, _b, _c;
292
+ results.forEach(item => {
270
293
  if (item.isApplicable) {
271
294
  newVouchers.push({
272
295
  ...item.voucher,
273
296
  config: {
274
297
  ...defaultStrategyMetadataCustom,
275
- ...((_c = (_b = (_a = item == null ? void 0 : item.strategyResult) == null ? void 0 : _a.config) == null ? void 0 : _b.metadata) == null ? void 0 : _c.custom) || {}
298
+ ...(item?.strategyResult?.config?.metadata?.custom || {})
276
299
  }
277
300
  });
278
301
  } else {
302
+ // 不可用的券,添加原因信息
279
303
  noApplicableVoucher.push({
280
304
  ...item.voucher,
281
305
  _unified_available_status: 0,
@@ -284,13 +308,12 @@ var WalletPassEvaluator = class {
284
308
  });
285
309
  }
286
310
  });
287
- const { recommended, transformList } = this.processVouchers(
288
- newVouchers,
289
- orderTotalAmount,
290
- products
291
- );
311
+ const {
312
+ recommended,
313
+ transformList
314
+ } = this.processVouchers(newVouchers, orderTotalAmount, products);
292
315
  const recommendedAmount = recommended.reduce((sum, item) => {
293
- return new import_decimal.default(sum).add(item._available_max_amount || 0).toNumber();
316
+ return new _decimal.default(sum).add(item._available_max_amount || 0).toNumber();
294
317
  }, 0);
295
318
  return {
296
319
  // 推荐券总金额
@@ -312,6 +335,7 @@ var WalletPassEvaluator = class {
312
335
  }
313
336
  return voucher;
314
337
  }
338
+
315
339
  /**
316
340
  * 优惠券处理函数
317
341
  * @param applicableVouchers 可用的券列表
@@ -320,16 +344,13 @@ var WalletPassEvaluator = class {
320
344
  * @returns 返回推荐券列表和全部列表,每个券包含 _available_max_amount 和 _unified_available_status
321
345
  */
322
346
  processVouchers(vouchers, orderTotalAmount, products) {
323
- const result = (0, import_utils.processVouchers)(vouchers, orderTotalAmount, products);
347
+ const result = (0, _utils.processVouchers)(vouchers, orderTotalAmount, products);
324
348
  return {
325
- recommended: result.recommended.map(
326
- (item) => this.enhanceWithReason(item)
327
- ),
328
- transformList: result.transformList.map(
329
- (item) => this.enhanceWithReason(item)
330
- )
349
+ recommended: result.recommended.map(item => this.enhanceWithReason(item)),
350
+ transformList: result.transformList.map(item => this.enhanceWithReason(item))
331
351
  };
332
352
  }
353
+
333
354
  /**
334
355
  * 重新计算优惠券状态(基于已选券的增量计算)
335
356
  * @param allVouchers 所有原始券列表
@@ -339,47 +360,44 @@ var WalletPassEvaluator = class {
339
360
  * @returns 返回更新后的所有券列表和已选券的详细抵扣信息
340
361
  */
341
362
  recalculateVouchers(allVouchers, selectedVouchers, orderTotalAmount, products) {
342
- const result = (0, import_utils.recalculateVouchers)(
343
- allVouchers,
344
- selectedVouchers,
345
- orderTotalAmount,
346
- products
347
- );
363
+ const result = (0, _utils.recalculateVouchers)(allVouchers, selectedVouchers, orderTotalAmount, products);
348
364
  return {
349
- allWithUpdatedStatus: result.allWithUpdatedStatus.map(
350
- (item) => this.enhanceWithReason(item)
351
- ),
352
- selectedWithDetails: result.selectedWithDetails.map(
353
- (item) => this.enhanceWithReason(item)
354
- )
365
+ allWithUpdatedStatus: result.allWithUpdatedStatus.map(item => this.enhanceWithReason(item)),
366
+ selectedWithDetails: result.selectedWithDetails.map(item => this.enhanceWithReason(item))
355
367
  };
356
368
  }
369
+
357
370
  /**
358
371
  * 查找适用于指定 voucher 的策略配置
359
372
  */
360
373
  findApplicableStrategies(voucher, strategyConfigs) {
361
- return strategyConfigs.filter((config) => {
374
+ return strategyConfigs.filter(config => {
375
+ // 检查策略的 conditions 中是否包含匹配此 voucher 的规则
362
376
  return this.checkVoucherInStrategy(voucher.product_id, config);
363
377
  });
364
378
  }
379
+
365
380
  /**
366
381
  * 检查策略中是否包含指定的 voucher ID
367
382
  */
368
383
  checkVoucherInStrategy(voucherProductId, config) {
369
384
  const rules = config.conditions.rules;
370
385
  for (const rule of rules) {
371
- if ("operator" in rule && "rules" in rule) {
386
+ // 如果是条件组,递归检查
387
+ if ('operator' in rule && 'rules' in rule) {
372
388
  if (this.checkVoucherInConditionGroup(voucherProductId, rule)) {
373
389
  return true;
374
390
  }
375
391
  } else {
392
+ // 检查是否是 voucherProductId 字段的规则
376
393
  const conditionRule = rule;
377
- if (conditionRule.field === "voucherProductId" && conditionRule.operator === "in" && Array.isArray(conditionRule.value)) {
394
+ if (conditionRule.field === 'voucherProductId' && conditionRule.operator === 'in' && Array.isArray(conditionRule.value)) {
378
395
  if (conditionRule.value.includes(voucherProductId)) {
379
396
  return true;
380
397
  }
381
398
  }
382
- if (conditionRule.field === "voucherProductId" && (conditionRule.operator === "=" || conditionRule.operator === "==")) {
399
+ // 支持等于判断
400
+ if (conditionRule.field === 'voucherProductId' && (conditionRule.operator === '=' || conditionRule.operator === '==')) {
383
401
  if (conditionRule.value === voucherProductId) {
384
402
  return true;
385
403
  }
@@ -388,22 +406,23 @@ var WalletPassEvaluator = class {
388
406
  }
389
407
  return false;
390
408
  }
409
+
391
410
  /**
392
411
  * 递归检查条件组中是否包含 voucher ID
393
412
  */
394
413
  checkVoucherInConditionGroup(voucherProductId, group) {
395
414
  for (const rule of group.rules) {
396
- if ("operator" in rule && "rules" in rule) {
415
+ if ('operator' in rule && 'rules' in rule) {
397
416
  if (this.checkVoucherInConditionGroup(voucherProductId, rule)) {
398
417
  return true;
399
418
  }
400
419
  } else {
401
- if (rule.field === "voucherProductId" && rule.operator === "in" && Array.isArray(rule.value)) {
420
+ if (rule.field === 'voucherProductId' && rule.operator === 'in' && Array.isArray(rule.value)) {
402
421
  if (rule.value.includes(voucherProductId)) {
403
422
  return true;
404
423
  }
405
424
  }
406
- if (rule.field === "voucherProductId" && (rule.operator === "=" || rule.operator === "==")) {
425
+ if (rule.field === 'voucherProductId' && (rule.operator === '=' || rule.operator === '==')) {
407
426
  if (rule.value === voucherProductId) {
408
427
  return true;
409
428
  }
@@ -412,44 +431,53 @@ var WalletPassEvaluator = class {
412
431
  }
413
432
  return false;
414
433
  }
434
+
415
435
  /**
416
436
  * 计算适用商品的总金额和数量
417
437
  */
418
438
  calculateApplicableProducts(products, applicableProductIds, deductTaxAndFee) {
419
- console.log(products, "products1234");
420
439
  let total = 0;
421
440
  let count = 0;
441
+
442
+ // 如果为空数组,不适用任何商品
422
443
  if (applicableProductIds !== null && applicableProductIds.length === 0) {
423
- return { applicableTotal: 0, applicableCount: 0 };
444
+ return {
445
+ applicableTotal: 0,
446
+ applicableCount: 0
447
+ };
424
448
  }
425
- products.forEach((product) => {
426
- const productQuantity = (0, import_utils.getProductQuantity)(product);
449
+ products.forEach(product => {
450
+ const productQuantity = (0, _utils.getProductQuantity)(product);
451
+
452
+ // 检查主商品是否适用
427
453
  const isMainProductApplicable = applicableProductIds === null || applicableProductIds.includes(product.product_id);
428
454
  if (isMainProductApplicable) {
429
- total += (0, import_utils.getMainProductPrice)(product, deductTaxAndFee) * productQuantity + (0, import_utils.getTaxAndFeeRoundingRemainder)(product, deductTaxAndFee) - (0, import_utils.getProductDiscountDifference)(product);
455
+ // 计算主商品价格(包含加减价子商品)= 单价 * 数量 + 舍入余数 - 商品差额
456
+ total += (0, _utils.getMainProductPrice)(product, deductTaxAndFee) * productQuantity + (0, _utils.getTaxAndFeeRoundingRemainder)(product, deductTaxAndFee) - (0, _utils.getProductDiscountDifference)(product);
430
457
  count += productQuantity;
431
458
  }
459
+
460
+ // 检查原价子商品(需要单独判断适用性)
432
461
  if (product.product_bundle && product.product_bundle.length > 0) {
433
- product.product_bundle.forEach((bundleItem) => {
434
- if ((0, import_utils.getBundleItemIsOriginalPrice)(bundleItem)) {
462
+ product.product_bundle.forEach(bundleItem => {
463
+ // 只处理原价子商品,加减价子商品已包含在主商品价格中
464
+ if ((0, _utils.getBundleItemIsOriginalPrice)(bundleItem)) {
465
+ // 检查子商品是否适用
435
466
  const isBundleItemApplicable = applicableProductIds === null || applicableProductIds.includes(bundleItem.bundle_product_id);
436
467
  if (isBundleItemApplicable) {
468
+ // 计算原价子商品价格 = 总价 + 舍入余数 - 商品差额
437
469
  const bundleItemQuantity = bundleItem.num * productQuantity;
438
- total += (0, import_utils.getBundleItemPrice)(
439
- bundleItem,
440
- productQuantity,
441
- deductTaxAndFee
442
- ) + (0, import_utils.getBundleItemTaxAndFeeRoundingRemainder)(bundleItem, deductTaxAndFee) - (0, import_utils.getBundleItemDiscountDifference)(bundleItem);
470
+ total += (0, _utils.getBundleItemPrice)(bundleItem, productQuantity, deductTaxAndFee) + (0, _utils.getBundleItemTaxAndFeeRoundingRemainder)(bundleItem, deductTaxAndFee) - (0, _utils.getBundleItemDiscountDifference)(bundleItem);
443
471
  count += bundleItemQuantity;
444
472
  }
445
473
  }
446
474
  });
447
475
  }
448
476
  });
449
- return { applicableTotal: total, applicableCount: count };
477
+ return {
478
+ applicableTotal: total,
479
+ applicableCount: count
480
+ };
450
481
  }
451
- };
452
- // Annotate the CommonJS export names for ESM import in node:
453
- 0 && (module.exports = {
454
- WalletPassEvaluator
455
- });
482
+ }
483
+ exports.WalletPassEvaluator = WalletPassEvaluator;