@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
@@ -17,13 +17,29 @@ export interface FormattedProductData extends ProductData {
17
17
  /** 购物车详情值 */
18
18
  cartDetailValue?: any;
19
19
  }
20
+ /**
21
+ * 商品轻量查询范围
22
+ */
23
+ export interface ProductIdScope {
24
+ /** 是否返回全部商品 ID */
25
+ isAllProducts?: boolean;
26
+ /** 指定商品 ID */
27
+ productIds?: number[];
28
+ /** 指定商品集合 ID */
29
+ collectionIds?: number[];
30
+ }
31
+ export interface ProductSnapshot {
32
+ cover?: ProductData['cover'];
33
+ holder_config?: ProductData['holder_config'];
34
+ }
20
35
  /**
21
36
  * 加载报价单商品价格参数
22
37
  */
23
38
  export interface LoadProductsPriceParams {
24
39
  ids: number[];
25
40
  schedule_date: string;
26
- customer_id?: number;
41
+ schedule_datetime?: string;
42
+ customer_id?: number | string;
27
43
  }
28
44
  /**
29
45
  * 加载报价单商品价格返回数据
@@ -47,6 +63,7 @@ export interface LoadProductsPriceData {
47
63
  bundle_product_id: number;
48
64
  bundle_variant_id: number;
49
65
  price: number;
66
+ base_price?: number | string;
50
67
  price_type: string;
51
68
  price_type_ext: string;
52
69
  }[];
@@ -97,6 +114,8 @@ export interface ProductSyncMessage {
97
114
  change_types?: string[];
98
115
  /** 关联商品 ID(product_collection / product_category / product_quotation 变更时携带) */
99
116
  relation_product_ids?: number[];
117
+ /** 关联商品 ID(product_data_variant 变更时携带) */
118
+ product_ids?: number[];
100
119
  message_uuid?: string;
101
120
  timestamp?: string;
102
121
  /** 内部标记:来源频道 key */
@@ -107,8 +126,22 @@ export interface ProductSyncMessage {
107
126
  */
108
127
  export interface ProductFormatterContext {
109
128
  schedule_date: string;
129
+ schedule_datetime?: string;
130
+ customer_id?: number | string;
110
131
  priceData?: LoadProductsPriceData[];
111
132
  scheduleModule?: any;
133
+ /** 全量餐牌列表,供智能定价 menu_match 等条件判断使用 */
134
+ menuList?: any[];
135
+ /** 全量日程列表,供智能定价 schedule_match 等条件判断使用 */
136
+ scheduleList?: any[];
137
+ /** 外部传入的策略上下文,仅承载定价条件,不参与商品集合筛选 */
138
+ strategy_context?: Record<string, any>;
139
+ /** 智能定价评估器,由宿主统一注入到 PisellOS context */
140
+ dataVariantEvaluator?: {
141
+ resolveProducts: (businessData: any) => {
142
+ products: ProductData[];
143
+ };
144
+ };
112
145
  locale?: string;
113
146
  }
114
147
  /**
@@ -1,43 +1,36 @@
1
- "use strict";
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
18
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
19
+ // src/server/modules/products/types.ts
20
+ var types_exports = {};
21
+ __export(types_exports, {
22
+ ProductsHooks: () => ProductsHooks
23
+ });
24
+ module.exports = __toCommonJS(types_exports);
25
+ var ProductsHooks = /* @__PURE__ */ ((ProductsHooks2) => {
26
+ ProductsHooks2["onProductsLoaded"] = "products:onProductsLoaded";
27
+ ProductsHooks2["onProductsChanged"] = "products:onProductsChanged";
28
+ ProductsHooks2["onProductSelected"] = "products:onProductSelected";
29
+ ProductsHooks2["onProductsPriceApplied"] = "products:onProductsPriceApplied";
30
+ ProductsHooks2["onProductsSyncCompleted"] = "products:onProductsSyncCompleted";
31
+ return ProductsHooks2;
32
+ })(ProductsHooks || {});
33
+ // Annotate the CommonJS export names for ESM import in node:
34
+ 0 && (module.exports = {
35
+ ProductsHooks
5
36
  });
6
- exports.ProductsHooks = void 0;
7
- /**
8
- * Products 模块状态
9
- */
10
- /**
11
- * 商品格式化后数据
12
- */
13
- /**
14
- * 加载报价单商品价格参数
15
- */
16
- /**
17
- * 加载报价单商品价格返回数据
18
- */
19
- /**
20
- * 加载报价单商品价格返回数据
21
- */
22
- /**
23
- * Products 模块状态
24
- */
25
- /**
26
- * Products 模块钩子
27
- */
28
- let ProductsHooks = exports.ProductsHooks = /*#__PURE__*/function (ProductsHooks) {
29
- ProductsHooks["onProductsLoaded"] = "products:onProductsLoaded";
30
- ProductsHooks["onProductsChanged"] = "products:onProductsChanged";
31
- ProductsHooks["onProductSelected"] = "products:onProductSelected";
32
- ProductsHooks["onProductsPriceApplied"] = "products:onProductsPriceApplied";
33
- ProductsHooks["onProductsSyncCompleted"] = "products:onProductsSyncCompleted";
34
- return ProductsHooks;
35
- }({});
36
- /** pubsub 商品同步消息结构 */
37
- /**
38
- * 商品格式化器上下文
39
- */
40
- /**
41
- * 商品格式化器类型
42
- * 用于对商品数据进行处理和格式化(包括价格应用、字段扩展等)
43
- */
@@ -1,6 +1,8 @@
1
1
  import { Module, PisellCore, ModuleOptions } from '../../../types';
2
2
  import { BaseModule } from '../../../modules/BaseModule';
3
3
  import { QuotationData } from './types';
4
+ import type { ScheduleItem } from '../../../modules/Schedule/types';
5
+ import type { QuotationCustomerScopeInfo } from '../../../modules/Quotation/types';
4
6
  /**
5
7
  * 报价单模块 - 用于管理报价单数据和计算商品价格
6
8
  */
@@ -10,6 +12,7 @@ export declare class QuotationModule extends BaseModule implements Module {
10
12
  private request;
11
13
  private store;
12
14
  private dbManager;
15
+ private scheduleResolver?;
13
16
  constructor(name?: string, version?: string);
14
17
  initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
15
18
  /**
@@ -25,10 +28,46 @@ export declare class QuotationModule extends BaseModule implements Module {
25
28
  * 获取报价单列表
26
29
  */
27
30
  getQuotationList(): QuotationData[];
31
+ loadQuotations(params?: {
32
+ channel?: string;
33
+ customer_id?: number | string;
34
+ }): Promise<void>;
35
+ setScheduleResolver(resolver: (id: number) => ScheduleItem | undefined): void;
36
+ getPriceForProduct(params: {
37
+ productId: number;
38
+ variantId?: number;
39
+ datetime: string;
40
+ channel?: string;
41
+ customer_id?: number | string;
42
+ }): string | null;
43
+ getQuotationMatchForProduct(params: {
44
+ productId: number;
45
+ variantId?: number;
46
+ datetime: string;
47
+ channel?: string;
48
+ customer_id?: number | string;
49
+ }): {
50
+ price: string | null;
51
+ quotationShelfId: number;
52
+ } | null;
53
+ getQuotationShelfId(params: {
54
+ productId: number;
55
+ variantId?: number;
56
+ datetime: string;
57
+ channel?: string;
58
+ customer_id?: number | string;
59
+ }): number;
60
+ getQuotationCustomerScopeInfo(): QuotationCustomerScopeInfo;
28
61
  /**
29
62
  * 清空缓存
30
63
  */
31
64
  clear(): Promise<void>;
65
+ private normalizeCustomerId;
66
+ private hasValidCustomerId;
67
+ private isQuotationVisibleForCustomer;
68
+ private isQuotationVisibleForChannel;
69
+ private isQuotationActiveAt;
70
+ private findProductData;
32
71
  /**
33
72
  * 从 IndexDB 加载报价单数据
34
73
  * @private
@@ -1,111 +1,293 @@
1
- "use strict";
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);
2
28
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
29
+ // src/server/modules/quotation/index.ts
30
+ var quotation_exports = {};
31
+ __export(quotation_exports, {
32
+ QuotationModule: () => QuotationModule
5
33
  });
6
- exports.QuotationModule = void 0;
7
- var _lodashEs = require("lodash-es");
8
- var _BaseModule = require("../../../modules/BaseModule");
9
- var _types = require("./types");
10
- /**
11
- * IndexDB 存储名称
12
- */
13
- const INDEXDB_STORE_NAME = 'quotation';
14
-
15
- /**
16
- * 报价单模块 - 用于管理报价单数据和计算商品价格
17
- */
18
- class QuotationModule extends _BaseModule.BaseModule {
19
- defaultName = 'quotation';
20
- defaultVersion = '1.0.0';
21
- request;
22
- store;
23
- dbManager; // IndexDBManager 实例
24
-
34
+ module.exports = __toCommonJS(quotation_exports);
35
+ var import_lodash_es = require("lodash-es");
36
+ var import_dayjs = __toESM(require("dayjs"));
37
+ var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
38
+ var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
39
+ var import_BaseModule = require("../../../modules/BaseModule");
40
+ var import_types = require("./types");
41
+ var import_getDateIsInSchedule = require("../../../modules/Schedule/getDateIsInSchedule");
42
+ import_dayjs.default.extend(import_isSameOrBefore.default);
43
+ import_dayjs.default.extend(import_isSameOrAfter.default);
44
+ var INDEXDB_STORE_NAME = "quotation";
45
+ var QuotationModule = class extends import_BaseModule.BaseModule {
25
46
  constructor(name, version) {
26
47
  super(name, version);
48
+ this.defaultName = "quotation";
49
+ this.defaultVersion = "1.0.0";
27
50
  }
28
51
  async initialize(core, options) {
52
+ var _a;
29
53
  this.core = core;
30
- this.store = options?.store;
31
- if (Array.isArray(options?.initialState?.quotationList)) {
32
- this.store.quotationList = options?.initialState.quotationList;
33
- this.core.effects.emit(_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
54
+ this.store = options == null ? void 0 : options.store;
55
+ if (Array.isArray((_a = options == null ? void 0 : options.initialState) == null ? void 0 : _a.quotationList)) {
56
+ this.store.quotationList = options == null ? void 0 : options.initialState.quotationList;
57
+ this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
34
58
  } else {
35
59
  this.store.quotationList = [];
36
60
  }
37
-
38
- // 获取依赖的插件
39
- this.request = core.getPlugin('request');
61
+ this.request = core.getPlugin("request");
40
62
  if (!this.request) {
41
- throw new Error('QuotationModule 需要 request 插件支持');
63
+ throw new Error("QuotationModule 需要 request 插件支持");
42
64
  }
43
-
44
- // 获取并存储 dbManager
45
- const appPlugin = core.getPlugin('app');
65
+ const appPlugin = core.getPlugin("app");
46
66
  if (appPlugin) {
47
67
  const app = appPlugin.getApp();
48
68
  this.dbManager = app.dbManager;
49
- if (this.dbManager) {} else {
50
- console.warn('[Quotation] IndexDB Manager 未找到');
69
+ if (this.dbManager) {
70
+ console.log("[Quotation] IndexDB Manager 已初始化");
71
+ } else {
72
+ console.warn("[Quotation] IndexDB Manager 未找到");
51
73
  }
52
74
  }
53
75
  }
54
-
55
76
  /**
56
77
  * 加载报价单列表(从服务器)
57
78
  * TODO: 接口地址待定
58
79
  */
59
80
  async loadQuotationList() {
81
+ var _a;
60
82
  try {
61
- // TODO: 替换为实际的接口地址
62
- const response = await this.request.get(`/quotation`, {
63
- num: 999,
64
- skip: 1,
65
- status: 'published'
66
- });
67
- const quotationList = response.data?.list || [];
68
-
69
- // 保存到 IndexDB
83
+ const response = await this.request.get(
84
+ `/quotation`,
85
+ {
86
+ num: 999,
87
+ skip: 1,
88
+ status: "published"
89
+ }
90
+ );
91
+ const quotationList = ((_a = response.data) == null ? void 0 : _a.list) || [];
70
92
  await this.saveQuotationToIndexDB(quotationList);
71
93
  await this.setQuotationList(quotationList);
72
94
  return quotationList;
73
95
  } catch (error) {
74
- console.error('[Quotation] 加载报价单数据失败:', error);
96
+ console.error("[Quotation] 加载报价单数据失败:", error);
75
97
  return [];
76
98
  }
77
99
  }
78
-
79
100
  /**
80
101
  * 设置报价单列表
81
102
  */
82
103
  async setQuotationList(quotationList) {
83
104
  this.store.quotationList = quotationList;
84
- await this.core.effects.emit(_types.QuotationHooks.onQuotationLoaded, quotationList);
105
+ await this.core.effects.emit(import_types.QuotationHooks.onQuotationLoaded, quotationList);
85
106
  }
86
-
87
107
  /**
88
108
  * 获取报价单列表
89
109
  */
90
110
  getQuotationList() {
91
111
  return this.store.quotationList;
92
112
  }
113
+ async loadQuotations(params) {
114
+ var _a;
115
+ if (Array.isArray(this.store.quotationList) && this.store.quotationList.length > 0) {
116
+ this.store.quotationList.sort(
117
+ (a, b) => Number(a.sort ?? a.priority ?? 0) - Number(b.sort ?? b.priority ?? 0)
118
+ );
119
+ return;
120
+ }
121
+ const query = {};
122
+ if (params == null ? void 0 : params.channel)
123
+ query.channel = params.channel;
124
+ if ((params == null ? void 0 : params.channel) === "online_store")
125
+ query.channel = "online-store";
126
+ const res = await this.request.get(
127
+ "/quotation/available",
128
+ query,
129
+ { useCache: false, osServer: true }
130
+ );
131
+ const list = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [];
132
+ list.sort((a, b) => Number(a.sort ?? a.priority ?? 0) - Number(b.sort ?? b.priority ?? 0));
133
+ this.store.quotationList = list;
134
+ await this.core.effects.emit(import_types.QuotationHooks.onQuotationLoaded, this.store.quotationList);
135
+ }
136
+ setScheduleResolver(resolver) {
137
+ this.scheduleResolver = resolver;
138
+ }
139
+ getPriceForProduct(params) {
140
+ var _a;
141
+ return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.price) ?? null;
142
+ }
143
+ getQuotationMatchForProduct(params) {
144
+ const { productId, variantId, datetime, channel, customer_id } = params;
145
+ for (const quotation of this.store.quotationList) {
146
+ if (!this.isQuotationVisibleForChannel(quotation, channel))
147
+ continue;
148
+ if (!this.isQuotationVisibleForCustomer(quotation, customer_id))
149
+ continue;
150
+ if (!this.isQuotationActiveAt(quotation, datetime))
151
+ continue;
152
+ const match = this.findProductData(quotation, productId, variantId);
153
+ if (!match)
154
+ continue;
155
+ const value = match.value ?? match.final_price ?? match.discount_value;
156
+ if (Number(value) === 0)
157
+ continue;
158
+ if (value === void 0 || value === null || value === "")
159
+ continue;
160
+ return {
161
+ price: String(value),
162
+ quotationShelfId: Number(quotation.id) || 0
163
+ };
164
+ }
165
+ return null;
166
+ }
167
+ getQuotationShelfId(params) {
168
+ var _a;
169
+ return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.quotationShelfId) ?? 0;
170
+ }
171
+ getQuotationCustomerScopeInfo() {
172
+ const customerById = /* @__PURE__ */ new Map();
173
+ const quotationScopes = this.store.quotationList.filter((quotation) => Array.isArray(quotation == null ? void 0 : quotation.customer) && quotation.customer.length > 0).map((quotation) => {
174
+ const customerIds = [];
175
+ const customers = [];
176
+ const localSeen = /* @__PURE__ */ new Set();
177
+ (quotation.customer || []).forEach((customer) => {
178
+ const customerId = this.normalizeCustomerId(customer == null ? void 0 : customer.id);
179
+ if (!customerId || localSeen.has(customerId))
180
+ return;
181
+ localSeen.add(customerId);
182
+ customerIds.push(customerId);
183
+ customers.push(customer);
184
+ if (!customerById.has(customerId))
185
+ customerById.set(customerId, customer);
186
+ });
187
+ return {
188
+ quotationId: Number(quotation.id),
189
+ quotationName: String(quotation.name || ""),
190
+ customerIds,
191
+ customers
192
+ };
193
+ });
194
+ const result = {
195
+ quotationCount: this.store.quotationList.length,
196
+ hasCustomerScopedQuotations: quotationScopes.length > 0,
197
+ allQuotationsCustomerScoped: this.store.quotationList.length > 0 && quotationScopes.length === this.store.quotationList.length,
198
+ customerIds: Array.from(customerById.keys()),
199
+ customers: Array.from(customerById.values()),
200
+ quotationScopes
201
+ };
202
+ return result;
203
+ }
93
204
  /**
94
205
  * 清空缓存
95
206
  */
96
207
  async clear() {
97
208
  this.store.quotationList = [];
98
-
99
- // 同时清空 IndexDB 中的数据
100
209
  if (this.dbManager) {
101
210
  try {
102
211
  await this.dbManager.clear(INDEXDB_STORE_NAME);
212
+ console.log("[Quotation] IndexDB 缓存已清空");
103
213
  } catch (error) {
104
- console.error('[Quotation] 清空 IndexDB 缓存失败:', error);
214
+ console.error("[Quotation] 清空 IndexDB 缓存失败:", error);
105
215
  }
106
216
  }
217
+ console.log("[Quotation] 缓存已清空");
218
+ }
219
+ normalizeCustomerId(customerId) {
220
+ if (customerId === void 0 || customerId === null || customerId === "")
221
+ return null;
222
+ return String(customerId);
223
+ }
224
+ hasValidCustomerId(customerId) {
225
+ if (customerId === void 0 || customerId === null || customerId === "")
226
+ return false;
227
+ return Number(customerId) > 0;
228
+ }
229
+ isQuotationVisibleForCustomer(quotation, customerId) {
230
+ const customers = quotation.customer || [];
231
+ if (!Array.isArray(customers) || customers.length === 0)
232
+ return true;
233
+ if (!this.hasValidCustomerId(customerId))
234
+ return false;
235
+ return customers.some((customer) => String(customer.id) === String(customerId));
236
+ }
237
+ isQuotationVisibleForChannel(quotation, channel) {
238
+ if (!channel)
239
+ return true;
240
+ const normalizedChannel = channel === "online_store" ? "online-store" : channel;
241
+ const channels = quotation.channel;
242
+ if (!Array.isArray(channels) || channels.length === 0)
243
+ return true;
244
+ return channels.some((item) => String(item) === normalizedChannel);
245
+ }
246
+ isQuotationActiveAt(quotation, datetime) {
247
+ const quotationSchedules = Array.isArray(quotation.schedule) ? quotation.schedule : [];
248
+ const scheduleIds = Array.isArray(quotation.schedule_ids) ? quotation.schedule_ids : [];
249
+ if (!quotationSchedules.length && !scheduleIds.length)
250
+ return false;
251
+ const scheduleItems = [];
252
+ quotationSchedules.forEach((schedule) => {
253
+ var _a;
254
+ const full = (_a = this.scheduleResolver) == null ? void 0 : _a.call(this, schedule.id);
255
+ if (full) {
256
+ scheduleItems.push(full);
257
+ return;
258
+ }
259
+ if (this.scheduleResolver)
260
+ return;
261
+ scheduleItems.push({
262
+ ...schedule,
263
+ repeat_type: schedule.repeat_type || "none",
264
+ repeat_rule: schedule.repeat_rule || null,
265
+ time_slot: schedule.time_slot || []
266
+ });
267
+ });
268
+ scheduleIds.forEach((id) => {
269
+ var _a;
270
+ const full = (_a = this.scheduleResolver) == null ? void 0 : _a.call(this, id);
271
+ if (full)
272
+ scheduleItems.push(full);
273
+ });
274
+ if (!scheduleItems.length)
275
+ return false;
276
+ return (0, import_getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
277
+ }
278
+ findProductData(quotation, productId, variantId) {
279
+ const productData = Array.isArray(quotation.product_data) ? quotation.product_data : Array.isArray(quotation.product_prices) ? quotation.product_prices : [];
280
+ if (variantId && variantId !== 0) {
281
+ const variantMatch = productData.find(
282
+ (item) => Number(item.product_id) === productId && Number(item.variant_id || 0) === variantId
283
+ );
284
+ if (variantMatch)
285
+ return variantMatch;
286
+ }
287
+ return productData.find(
288
+ (item) => Number(item.product_id) === productId && Number(item.variant_id || 0) === 0
289
+ );
107
290
  }
108
-
109
291
  /**
110
292
  * 从 IndexDB 加载报价单数据
111
293
  * @private
@@ -115,15 +297,13 @@ class QuotationModule extends _BaseModule.BaseModule {
115
297
  return [];
116
298
  }
117
299
  try {
118
- // 直接获取所有报价单记录
119
300
  const quotationList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
120
301
  return quotationList || [];
121
302
  } catch (error) {
122
- console.error('[Quotation] 从 IndexDB 读取数据失败:', error);
303
+ console.error("[Quotation] 从 IndexDB 读取数据失败:", error);
123
304
  return [];
124
305
  }
125
306
  }
126
-
127
307
  /**
128
308
  * 保存报价单数据到 IndexDB
129
309
  * @private
@@ -133,44 +313,43 @@ class QuotationModule extends _BaseModule.BaseModule {
133
313
  return;
134
314
  }
135
315
  try {
136
- // 先清空现有的报价单数据
137
316
  await this.dbManager.clear(INDEXDB_STORE_NAME);
138
-
139
- // 逐个保存报价单(每个报价单是独立的记录)
140
- const savePromises = quotationList.map(quotation => this.dbManager.add(INDEXDB_STORE_NAME, quotation));
317
+ const savePromises = quotationList.map(
318
+ (quotation) => this.dbManager.add(INDEXDB_STORE_NAME, quotation)
319
+ );
141
320
  await Promise.all(savePromises);
321
+ console.log(`[Quotation] 已将 ${quotationList.length} 条报价单数据保存到 IndexDB`);
142
322
  } catch (error) {
143
- console.error('[Quotation] 保存数据到 IndexDB 失败:', error);
323
+ console.error("[Quotation] 保存数据到 IndexDB 失败:", error);
144
324
  }
145
325
  }
146
-
147
326
  /**
148
327
  * 预加载模块数据(统一接口)
149
328
  * 在模块注册后自动调用
150
329
  */
151
330
  async preload() {
331
+ console.log("[Quotation] 开始预加载数据...");
152
332
  try {
153
- // 1. 尝试从 IndexDB 加载数据
154
333
  const cachedData = await this.loadQuotationFromIndexDB();
155
334
  if (cachedData && cachedData.length > 0) {
156
- // 将缓存数据放入 store
157
- this.store.quotationList = (0, _lodashEs.cloneDeep)(cachedData);
158
- this.core.effects.emit(_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
335
+ console.log(`[Quotation] 从 IndexDB 加载了 ${cachedData.length} 条报价单数据`);
336
+ this.store.quotationList = (0, import_lodash_es.cloneDeep)(cachedData);
337
+ this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
159
338
  return;
160
339
  }
340
+ console.log("[Quotation] IndexDB 中没有缓存数据,从服务器加载...");
161
341
  } catch (error) {
162
- console.warn('[Quotation] 从 IndexDB 加载数据失败:', error);
342
+ console.warn("[Quotation] 从 IndexDB 加载数据失败:", error);
163
343
  }
164
-
165
- // 2. 如果 IndexDB 中没有数据,从服务器加载
166
344
  const quotationList = await this.loadQuotationList();
167
-
168
- // 3. 将服务器数据保存到 IndexDB 和 store
169
345
  if (quotationList && quotationList.length > 0) {
170
346
  await this.saveQuotationToIndexDB(quotationList);
171
- this.store.quotationList = (0, _lodashEs.cloneDeep)(quotationList);
172
- this.core.effects.emit(_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
347
+ this.store.quotationList = (0, import_lodash_es.cloneDeep)(quotationList);
348
+ this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
173
349
  }
174
350
  }
175
- }
176
- exports.QuotationModule = QuotationModule;
351
+ };
352
+ // Annotate the CommonJS export names for ESM import in node:
353
+ 0 && (module.exports = {
354
+ QuotationModule
355
+ });