@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
@@ -1,70 +1,126 @@
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/order/utils/filterBookings.ts
30
+ var filterBookings_exports = {};
31
+ __export(filterBookings_exports, {
32
+ filterBookings: () => filterBookings,
33
+ filterBookingsFromOrders: () => filterBookingsFromOrders,
34
+ flattenOrdersToBookings: () => flattenOrdersToBookings,
35
+ productsForBooking: () => productsForBooking,
36
+ sortBookings: () => sortBookings
5
37
  });
6
- exports.filterBookings = filterBookings;
7
- exports.filterBookingsFromOrders = filterBookingsFromOrders;
8
- exports.flattenOrdersToBookings = flattenOrdersToBookings;
9
- exports.sortBookings = sortBookings;
10
- /** 预约状态:协议 appointment_status 优先,兼容历史 status */
38
+ module.exports = __toCommonJS(filterBookings_exports);
39
+ var import_dayjs = __toESM(require("dayjs"));
11
40
  function getBookingAppointmentStatus(booking) {
12
- return String(booking.appointment_status ?? booking.status ?? '');
41
+ return String(booking.appointment_status ?? booking.status ?? "");
13
42
  }
14
-
15
- // ─────────────────────────────────────────────────────────────────
16
- // 时间戳 / 范围解析
17
- // ─────────────────────────────────────────────────────────────────
18
-
19
43
  function toTimestamp(value) {
20
- if (value === undefined || value === null || value === '') return 0;
21
- if (typeof value === 'number') return value;
22
- return new Date(value).getTime();
44
+ if (value === void 0 || value === null || value === "")
45
+ return 0;
46
+ if (typeof value === "number")
47
+ return value;
48
+ const d = (0, import_dayjs.default)(value);
49
+ return d.isValid() ? d.valueOf() : 0;
50
+ }
51
+ var DATE_ONLY_RE = /^\d{4}-\d{2}-\d{2}$/;
52
+ function toRangeBoundary(value, isEnd) {
53
+ if (value === void 0 || value === null || value === "")
54
+ return 0;
55
+ if (typeof value === "number")
56
+ return value;
57
+ const str = String(value).trim();
58
+ const d = (0, import_dayjs.default)(str);
59
+ if (!d.isValid())
60
+ return 0;
61
+ if (DATE_ONLY_RE.test(str)) {
62
+ return (isEnd ? d.endOf("day") : d.startOf("day")).valueOf();
63
+ }
64
+ return d.valueOf();
23
65
  }
24
-
25
- /**
26
- * 将 start_date / start_time(或 end_*)拼成可被 Date 稳定解析的字符串。
27
- * 时间字段协议为 H:i(如 15:00)时补全为 H:i:00,避免部分环境对「无秒」非 ISO 串(空格分隔)解析不一致。
28
- */
29
66
  function bookingDateTimeString(datePart, timePart) {
30
- const d = (datePart ?? '').trim();
31
- let t = (timePart ?? '').trim();
67
+ const d = (datePart ?? "").trim();
68
+ let t = (timePart ?? "").trim();
32
69
  if (t && /^\d{1,2}:\d{2}$/.test(t)) {
33
70
  t = `${t}:00`;
34
71
  }
35
72
  return `${d} ${t}`.trim();
36
73
  }
74
+ function resolveBookingTimeRange(booking) {
75
+ const start = toTimestamp(bookingDateTimeString(booking.start_date, booking.start_time));
76
+ if (!start)
77
+ return null;
78
+ const end = toTimestamp(
79
+ bookingDateTimeString(
80
+ booking.end_date || booking.start_date,
81
+ booking.end_time || booking.start_time
82
+ )
83
+ ) || start;
84
+ return end >= start ? [start, end] : [end, start];
85
+ }
86
+ function isRangeOverlapping(left, right) {
87
+ return left[0] <= right[1] && left[1] >= right[0];
88
+ }
37
89
  function parseDateRange(range) {
38
- if (!Array.isArray(range) || range.length < 2) return null;
39
- const start = toTimestamp(range[0]);
40
- const end = toTimestamp(range[1]);
41
- if (!start && !end) return null;
90
+ if (!Array.isArray(range) || range.length < 2)
91
+ return null;
92
+ const start = toRangeBoundary(range[0], false);
93
+ const end = toRangeBoundary(range[1], true);
94
+ if (!start && !end)
95
+ return null;
42
96
  return [start, end];
43
97
  }
44
98
  function parseNumberRange(range) {
45
- if (!Array.isArray(range) || range.length < 2) return null;
99
+ if (!Array.isArray(range) || range.length < 2)
100
+ return null;
46
101
  const min = Number(range[0]);
47
102
  const max = Number(range[1]);
48
- if (isNaN(min) || isNaN(max)) return null;
103
+ if (isNaN(min) || isNaN(max))
104
+ return null;
49
105
  return [min, max];
50
106
  }
51
-
52
- // ─────────────────────────────────────────────────────────────────
53
- // 预编译过滤上下文:将 filters 一次性解析为高效的 Set / Range,
54
- // 供 matchOrder、matchBooking 复用,避免重复计算
55
- // ─────────────────────────────────────────────────────────────────
56
-
107
+ function resolveBookingKeyword(f) {
108
+ const keyword = f.keyword ?? f.keywords;
109
+ return typeof keyword === "string" ? keyword.trim() : "";
110
+ }
57
111
  function prepareFilters(f) {
58
- const hasCustomerId = f.customer_id !== undefined && f.customer_id !== null;
112
+ var _a, _b, _c, _d, _e, _f;
113
+ const hasCustomerId = f.customer_id !== void 0 && f.customer_id !== null;
114
+ const keyword = resolveBookingKeyword(f);
59
115
  return {
60
- orderPaymentStatusSet: f.order_payment_status?.length ? new Set(f.order_payment_status) : null,
61
- orderStatusSet: f.order_status?.length ? new Set(f.order_status) : null,
62
- orderSalesChannelSet: f.order_sales_channel?.length ? new Set(f.order_sales_channel) : null,
63
- paymentMethodSet: f.payment_method?.length ? new Set(f.payment_method) : null,
64
- appointmentStatusSet: f.appointment_status?.length ? new Set(f.appointment_status) : null,
65
- formRecordIdSet: f.form_record_ids?.length ? new Set(f.form_record_ids) : null,
116
+ orderPaymentStatusSet: ((_a = f.order_payment_status) == null ? void 0 : _a.length) ? new Set(f.order_payment_status) : null,
117
+ orderStatusSet: ((_b = f.order_status) == null ? void 0 : _b.length) ? new Set(f.order_status) : null,
118
+ orderSalesChannelSet: ((_c = f.order_sales_channel) == null ? void 0 : _c.length) ? new Set(f.order_sales_channel) : null,
119
+ paymentMethodSet: ((_d = f.payment_method) == null ? void 0 : _d.length) ? new Set(f.payment_method) : null,
120
+ appointmentStatusSet: ((_e = f.appointment_status) == null ? void 0 : _e.length) ? new Set(f.appointment_status) : null,
121
+ formRecordIdSet: ((_f = f.form_record_ids) == null ? void 0 : _f.length) ? new Set(f.form_record_ids) : null,
66
122
  hasCustomerId,
67
- customerIdStr: hasCustomerId ? String(f.customer_id) : '',
123
+ customerIdStr: hasCustomerId ? String(f.customer_id) : "",
68
124
  hasBusinessCode: !!f.business_code,
69
125
  businessCode: f.business_code,
70
126
  bookingTimeRange: parseDateRange(f.sales_time_between),
@@ -72,30 +128,33 @@ function prepareFilters(f) {
72
128
  updatedAtRange: parseDateRange(f.updated_at_between),
73
129
  numberRange: parseNumberRange(f.number_between),
74
130
  totalAmountRange: Array.isArray(f.total_amount_between) && f.total_amount_between.length === 2 ? f.total_amount_between : null,
75
- keywordLower: f.keyword ? f.keyword.toLowerCase() : '',
131
+ keywordLower: keyword ? keyword.toLowerCase() : "",
76
132
  afterExecutionTimeMs: (() => {
77
133
  const raw = f.after_execution_time;
78
- if (raw === undefined || raw === null || raw === '') return null;
134
+ if (raw === void 0 || raw === null || raw === "")
135
+ return null;
79
136
  const ms = toTimestamp(raw);
80
137
  return Number.isFinite(ms) ? ms : null;
81
138
  })(),
82
139
  enableChildBookingFilter: f.child_booking === 1
83
140
  };
84
141
  }
85
-
86
- // ─────────────────────────────────────────────────────────────────
87
- // 订单级匹配:不通过则整个 order 下所有 bookings 跳过
88
- // ─────────────────────────────────────────────────────────────────
89
-
90
142
  function matchOrder(order, ctx) {
91
- if (ctx.hasBusinessCode && order.business_code !== ctx.businessCode) return false;
92
- if (ctx.hasCustomerId && String(order.customer_id) !== ctx.customerIdStr) return false;
93
- if (ctx.orderPaymentStatusSet && !ctx.orderPaymentStatusSet.has(order.payment_status)) return false;
94
- if (ctx.orderStatusSet && !ctx.orderStatusSet.has(order.status)) return false;
95
- if (ctx.orderSalesChannelSet && !ctx.orderSalesChannelSet.has(order.order_sales_channel)) return false;
143
+ var _a;
144
+ if (ctx.hasBusinessCode && order.business_code !== ctx.businessCode)
145
+ return false;
146
+ if (ctx.hasCustomerId && String(order.customer_id) !== ctx.customerIdStr)
147
+ return false;
148
+ if (ctx.orderPaymentStatusSet && !ctx.orderPaymentStatusSet.has(order.payment_status))
149
+ return false;
150
+ if (ctx.orderStatusSet && !ctx.orderStatusSet.has(order.status))
151
+ return false;
152
+ if (ctx.orderSalesChannelSet && !ctx.orderSalesChannelSet.has(order.order_sales_channel))
153
+ return false;
96
154
  if (ctx.paymentMethodSet) {
97
155
  const pm = order.payments;
98
- if (!Array.isArray(pm) || pm.length === 0) return false;
156
+ if (!Array.isArray(pm) || pm.length === 0)
157
+ return false;
99
158
  let matched = false;
100
159
  for (let k = 0; k < pm.length; k++) {
101
160
  if (ctx.paymentMethodSet.has(pm[k].code)) {
@@ -103,121 +162,162 @@ function matchOrder(order, ctx) {
103
162
  break;
104
163
  }
105
164
  }
106
- if (!matched) return false;
165
+ if (!matched)
166
+ return false;
107
167
  }
108
168
  if (ctx.createdAtRange) {
109
169
  const ts = toTimestamp(order.created_at);
110
- if (ts < ctx.createdAtRange[0] || ts > ctx.createdAtRange[1]) return false;
170
+ if (ts < ctx.createdAtRange[0] || ts > ctx.createdAtRange[1])
171
+ return false;
111
172
  }
112
173
  if (ctx.updatedAtRange) {
113
174
  const ts = toTimestamp(order.updated_at);
114
- if (ts < ctx.updatedAtRange[0] || ts > ctx.updatedAtRange[1]) return false;
175
+ if (ts < ctx.updatedAtRange[0] || ts > ctx.updatedAtRange[1])
176
+ return false;
115
177
  }
116
178
  if (ctx.totalAmountRange) {
117
- const raw = order.summary?.total_amount ?? order.total_amount;
179
+ const raw = ((_a = order.summary) == null ? void 0 : _a.total_amount) ?? order.total_amount;
118
180
  const amt = Number(raw);
119
- if (isNaN(amt)) return false;
120
- if (ctx.totalAmountRange[0] != null && amt < ctx.totalAmountRange[0]) return false;
121
- if (ctx.totalAmountRange[1] != null && amt > ctx.totalAmountRange[1]) return false;
181
+ if (isNaN(amt))
182
+ return false;
183
+ if (ctx.totalAmountRange[0] != null && amt < ctx.totalAmountRange[0])
184
+ return false;
185
+ if (ctx.totalAmountRange[1] != null && amt > ctx.totalAmountRange[1])
186
+ return false;
122
187
  }
123
188
  return true;
124
189
  }
125
-
126
- // ─────────────────────────────────────────────────────────────────
127
- // Booking 级匹配:在订单通过之后逐条检查每个 booking
128
- // orderInfo 用于 keyword 搜索时的 JSON 序列化
129
- // ─────────────────────────────────────────────────────────────────
130
-
131
190
  function matchBooking(booking, orderInfo, ctx) {
132
- if (ctx.enableChildBookingFilter) {
133
- const parentId = Number(booking.parent_id ?? 0);
134
- const itemType = String(booking.item_type ?? '');
135
- const isMatched = parentId !== 0 && itemType !== 'recurring_booking' || parentId === 0 && itemType === 'recurring_booking';
136
- if (!isMatched) return false;
191
+ if (ctx.enableChildBookingFilter && booking.booking_id) {
192
+ const parentId = Number(
193
+ booking.parent_id ?? 0
194
+ );
195
+ const itemType = String(
196
+ booking.item_type ?? ""
197
+ );
198
+ const isMatched = parentId !== 0 && itemType !== "recurring_booking" || parentId === 0 && itemType === "recurring_booking";
199
+ if (!isMatched)
200
+ return false;
137
201
  }
138
- if (ctx.appointmentStatusSet && !ctx.appointmentStatusSet.has(getBookingAppointmentStatus(booking))) return false;
202
+ if (ctx.appointmentStatusSet && !ctx.appointmentStatusSet.has(getBookingAppointmentStatus(booking)))
203
+ return false;
139
204
  if (ctx.bookingTimeRange) {
140
- const ts = toTimestamp(booking.start_date);
141
- if (ts < ctx.bookingTimeRange[0] || ts > ctx.bookingTimeRange[1]) return false;
205
+ const bookingRange = resolveBookingTimeRange(booking);
206
+ if (!bookingRange || !isRangeOverlapping(bookingRange, ctx.bookingTimeRange))
207
+ return false;
142
208
  }
143
209
  if (ctx.afterExecutionTimeMs != null) {
144
210
  const bookingStartMs = toTimestamp(bookingDateTimeString(booking.start_date, booking.start_time));
145
- if (!Number.isFinite(bookingStartMs) || bookingStartMs < ctx.afterExecutionTimeMs) return false;
211
+ if (!Number.isFinite(bookingStartMs) || bookingStartMs < ctx.afterExecutionTimeMs)
212
+ return false;
146
213
  }
147
214
  if (ctx.numberRange) {
148
215
  const num = Number(booking.number);
149
- if (isNaN(num) || num < ctx.numberRange[0] || num > ctx.numberRange[1]) return false;
216
+ if (isNaN(num) || num < ctx.numberRange[0] || num > ctx.numberRange[1])
217
+ return false;
150
218
  }
151
219
  if (ctx.formRecordIdSet) {
152
220
  let formMatched = false;
153
221
  const resources = booking.resources;
154
222
  if (Array.isArray(resources)) {
155
223
  for (let r = 0; r < resources.length; r++) {
156
- if (resources[r].relation_type === 'form' && ctx.formRecordIdSet.has(resources[r].relation_id)) {
224
+ if (resources[r].relation_type === "form" && ctx.formRecordIdSet.has(resources[r].relation_id)) {
157
225
  formMatched = true;
158
226
  break;
159
227
  }
160
228
  }
161
229
  }
162
- if (!formMatched && booking.relation_type === 'form' && booking.relation_id && booking.relation_id > 0) {
230
+ if (!formMatched && booking.relation_type === "form" && booking.relation_id && booking.relation_id > 0) {
163
231
  formMatched = ctx.formRecordIdSet.has(booking.relation_id);
164
232
  }
165
- if (!formMatched) return false;
233
+ if (!formMatched)
234
+ return false;
166
235
  }
167
236
  if (ctx.keywordLower) {
168
- const target = orderInfo ? {
169
- ...booking,
170
- order: orderInfo
171
- } : booking;
237
+ const target = orderInfo ? { ...booking, order: orderInfo } : booking;
172
238
  const str = JSON.stringify(target).toLowerCase();
173
- if (!str.includes(ctx.keywordLower)) return false;
239
+ if (!str.includes(ctx.keywordLower))
240
+ return false;
174
241
  }
175
242
  return true;
176
243
  }
177
-
178
- // ─────────────────────────────────────────────────────────────────
179
- // 转换:OrderData[] → BookingData[](独立导出,供其他场景使用)
180
- // ─────────────────────────────────────────────────────────────────
181
-
244
+ function productsForBooking(order, booking) {
245
+ var _a;
246
+ const products = order.products;
247
+ if (!Array.isArray(products) || products.length === 0)
248
+ return [];
249
+ const bookingEventId = booking.schedule_event_id;
250
+ const byDetailId = /* @__PURE__ */ new Map();
251
+ for (let i = 0, len = products.length; i < len; i++) {
252
+ const p = products[i];
253
+ const oid = p.order_detail_id;
254
+ if (oid === void 0 || oid === null)
255
+ continue;
256
+ const detailId = Number(oid);
257
+ if (Number.isNaN(detailId))
258
+ continue;
259
+ byDetailId.set(detailId, p);
260
+ }
261
+ const seen = /* @__PURE__ */ new Set();
262
+ const out = [];
263
+ for (let i = 0, len = products.length; i < len; i++) {
264
+ const p = products[i];
265
+ const oid = p.order_detail_id;
266
+ if (oid === void 0 || oid === null)
267
+ continue;
268
+ const detailId = Number(oid);
269
+ if (Number.isNaN(detailId))
270
+ continue;
271
+ if (bookingEventId !== void 0 && bookingEventId !== null && p.schedule_event_id !== void 0 && p.schedule_event_id !== null && Number(p.schedule_event_id) === Number(bookingEventId)) {
272
+ if (!seen.has(detailId)) {
273
+ seen.add(detailId);
274
+ out.push(p);
275
+ }
276
+ }
277
+ }
278
+ const relationItems = booking.relation_items;
279
+ if (Array.isArray(relationItems) && relationItems.length > 0) {
280
+ for (let r = 0, rLen = relationItems.length; r < rLen; r++) {
281
+ const rid = (_a = relationItems[r]) == null ? void 0 : _a.resource_id;
282
+ if (rid === void 0 || rid === null)
283
+ continue;
284
+ const detailId = Number(rid);
285
+ if (Number.isNaN(detailId) || seen.has(detailId))
286
+ continue;
287
+ const line = byDetailId.get(detailId);
288
+ if (line) {
289
+ seen.add(detailId);
290
+ out.push(line);
291
+ }
292
+ }
293
+ }
294
+ return out;
295
+ }
182
296
  function flattenOrdersToBookings(orders) {
183
- if (!orders || !Array.isArray(orders)) return [];
297
+ if (!orders || !Array.isArray(orders))
298
+ return [];
184
299
  const result = [];
185
300
  for (let i = 0, len = orders.length; i < len; i++) {
186
301
  const order = orders[i];
187
302
  const bookings = order.bookings;
188
- if (!Array.isArray(bookings) || bookings.length === 0) continue;
189
- const {
190
- bookings: _omit,
191
- ...orderInfo
192
- } = order;
303
+ if (!Array.isArray(bookings) || bookings.length === 0)
304
+ continue;
305
+ const { bookings: _omit, ...orderInfo } = order;
193
306
  for (let j = 0, bLen = bookings.length; j < bLen; j++) {
307
+ const booking = bookings[j];
194
308
  result.push({
195
- ...bookings[j],
196
- order: orderInfo
309
+ ...booking,
310
+ order: orderInfo,
311
+ products: order.products
197
312
  });
198
313
  }
199
314
  }
200
315
  return result;
201
316
  }
202
-
203
- // ─────────────────────────────────────────────────────────────────
204
- // 核心:单遍扫描 — 展开 + 过滤 + 分页
205
- //
206
- // 性能策略:
207
- // 1. 订单级条件在外层循环 matchOrder 预判,不匹配则整组 bookings 跳过
208
- // 2. orderInfo 延迟到有命中 booking 时才创建,同一 order 只创建一次
209
- // 3. 只对最终命中的 booking 做 object spread
210
- // ─────────────────────────────────────────────────────────────────
211
-
212
317
  function filterBookingsFromOrders(orders, filters) {
213
318
  const f = filters || {};
214
319
  if (!orders || !Array.isArray(orders)) {
215
- return {
216
- list: [],
217
- count: 0,
218
- size: 0,
219
- skip: 0
220
- };
320
+ return { list: [], count: 0, size: 0, skip: 0 };
221
321
  }
222
322
  const size = f.num || 20;
223
323
  const page = f.skip || 1;
@@ -228,38 +328,28 @@ function filterBookingsFromOrders(orders, filters) {
228
328
  for (let i = 0, oLen = orders.length; i < oLen; i++) {
229
329
  const order = orders[i];
230
330
  const bookings = order.bookings;
231
- if (!Array.isArray(bookings) || bookings.length === 0) continue;
232
-
233
- // 订单级预过滤
234
- if (!matchOrder(order, ctx)) continue;
235
-
236
- // 订单通过,遍历其 bookings;orderInfo 延迟创建
331
+ if (!Array.isArray(bookings) || bookings.length === 0)
332
+ continue;
333
+ if (!matchOrder(order, ctx))
334
+ continue;
237
335
  let orderInfo = null;
238
336
  for (let j = 0, bLen = bookings.length; j < bLen; j++) {
239
337
  const booking = bookings[j];
240
-
241
- // keyword 匹配需要 orderInfo,提前创建
242
338
  if (ctx.keywordLower && !orderInfo) {
243
- const {
244
- bookings: _omit,
245
- ...rest
246
- } = order;
339
+ const { bookings: _omit, ...rest } = order;
247
340
  orderInfo = rest;
248
341
  }
249
- if (!matchBooking(booking, orderInfo, ctx)) continue;
250
-
251
- // 命中:收集到分页窗口内
342
+ if (!matchBooking(booking, orderInfo, ctx))
343
+ continue;
252
344
  if (totalCount >= startIndex && paginatedList.length < size) {
253
345
  if (!orderInfo) {
254
- const {
255
- bookings: _omit,
256
- ...rest
257
- } = order;
346
+ const { bookings: _omit, ...rest } = order;
258
347
  orderInfo = rest;
259
348
  }
260
349
  paginatedList.push({
261
350
  ...booking,
262
- order: orderInfo
351
+ order: orderInfo,
352
+ products: order.products
263
353
  });
264
354
  }
265
355
  totalCount++;
@@ -272,32 +362,28 @@ function filterBookingsFromOrders(orders, filters) {
272
362
  skip: page
273
363
  };
274
364
  }
275
-
276
- // ─────────────────────────────────────────────────────────────────
277
- // 排序预约列表
278
- // order_by 格式:"field:direction",如 "start_at:desc"
279
- // 不带方向后缀则不排序
280
- // ─────────────────────────────────────────────────────────────────
281
-
282
365
  function sortBookings(result, filters) {
283
366
  const f = filters || {};
284
367
  const orderBy = f.order_by;
285
- if (!orderBy) return result;
286
- const separatorIdx = orderBy.lastIndexOf(':');
287
- if (separatorIdx === -1) return result;
368
+ if (!orderBy)
369
+ return result;
370
+ const separatorIdx = orderBy.lastIndexOf(":");
371
+ if (separatorIdx === -1)
372
+ return result;
288
373
  const field = orderBy.slice(0, separatorIdx);
289
374
  const direction = orderBy.slice(separatorIdx + 1);
290
- if (direction !== 'asc' && direction !== 'desc') return result;
291
- const multiplier = direction === 'asc' ? 1 : -1;
292
- const getTimestamp = booking => {
375
+ if (direction !== "asc" && direction !== "desc")
376
+ return result;
377
+ const multiplier = direction === "asc" ? 1 : -1;
378
+ const getTimestamp = (booking) => {
293
379
  switch (field) {
294
- case 'start_at':
380
+ case "start_at":
295
381
  return toTimestamp(bookingDateTimeString(booking.start_date, booking.start_time));
296
- case 'end_at':
382
+ case "end_at":
297
383
  return toTimestamp(bookingDateTimeString(booking.end_date, booking.end_time));
298
- case 'created_at':
384
+ case "created_at":
299
385
  return toTimestamp(booking.order.created_at);
300
- case 'updated_at':
386
+ case "updated_at":
301
387
  return toTimestamp(booking.order.updated_at);
302
388
  default:
303
389
  return 0;
@@ -306,26 +392,12 @@ function sortBookings(result, filters) {
306
392
  const sorted = result.list.slice().sort((a, b) => {
307
393
  return (getTimestamp(a) - getTimestamp(b)) * multiplier;
308
394
  });
309
- return {
310
- ...result,
311
- list: sorted
312
- };
395
+ return { ...result, list: sorted };
313
396
  }
314
-
315
- // ─────────────────────────────────────────────────────────────────
316
- // 兼容独立调用:对已展开的 BookingData[] 做筛选
317
- // 复用 matchOrder + matchBooking,仅负责迭代与分页
318
- // ─────────────────────────────────────────────────────────────────
319
-
320
397
  function filterBookings(bookings, filters) {
321
398
  const f = filters || {};
322
399
  if (!bookings || !Array.isArray(bookings)) {
323
- return {
324
- list: [],
325
- count: 0,
326
- size: 0,
327
- skip: 0
328
- };
400
+ return { list: [], count: 0, size: 0, skip: 0 };
329
401
  }
330
402
  const size = f.num || 20;
331
403
  const page = f.skip || 1;
@@ -336,12 +408,15 @@ function filterBookings(bookings, filters) {
336
408
  for (let i = 0, len = bookings.length; i < len; i++) {
337
409
  const booking = bookings[i];
338
410
  const order = booking.order;
339
-
340
- // 订单级 + booking 级统一匹配
341
- if (!matchOrder(order, ctx)) continue;
342
- if (!matchBooking(booking, order, ctx)) continue;
411
+ if (!matchOrder(order, ctx))
412
+ continue;
413
+ if (!matchBooking(booking, order, ctx))
414
+ continue;
343
415
  if (totalCount >= startIndex && paginatedList.length < size) {
344
- paginatedList.push(booking);
416
+ paginatedList.push({
417
+ ...booking,
418
+ products: booking.order.products
419
+ });
345
420
  }
346
421
  totalCount++;
347
422
  }
@@ -351,4 +426,12 @@ function filterBookings(bookings, filters) {
351
426
  size,
352
427
  skip: page
353
428
  };
354
- }
429
+ }
430
+ // Annotate the CommonJS export names for ESM import in node:
431
+ 0 && (module.exports = {
432
+ filterBookings,
433
+ filterBookingsFromOrders,
434
+ flattenOrdersToBookings,
435
+ productsForBooking,
436
+ sortBookings
437
+ });