@pisell/pisellos 0.0.568 → 0.0.570

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 (455) hide show
  1. package/dist/effects/index.d.ts +2 -2
  2. package/dist/model/strategy/adapter/dataVariant/type.d.ts +3 -3
  3. package/dist/model/strategy/adapter/itemRule/type.d.ts +6 -6
  4. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  5. package/dist/model/strategy/adapter/promotion/type.d.ts +5 -5
  6. package/dist/model/strategy/adapter/walletPass/utils.js +7 -4
  7. package/dist/model/strategy/type.d.ts +1 -1
  8. package/dist/modules/BaseModule.d.ts +2 -2
  9. package/dist/modules/BaseModule.js +4 -4
  10. package/dist/modules/BookingContext/index.d.ts +48 -0
  11. package/dist/modules/BookingContext/index.js +566 -0
  12. package/dist/modules/BookingContext/types.d.ts +102 -0
  13. package/dist/modules/BookingContext/types.js +51 -0
  14. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  15. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  16. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  17. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  18. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  19. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  20. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  21. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  22. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  23. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  24. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  25. package/dist/modules/BookingContext/utils/index.js +11 -0
  26. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  27. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  28. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  29. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  30. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  31. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  32. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  33. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  34. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  35. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  36. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  37. package/dist/modules/BookingContext/utils/resources.js +486 -0
  38. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  39. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  40. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  41. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  42. package/dist/modules/Cart/utils/cartProduct.js +26 -5
  43. package/dist/modules/Cart/utils/changePrice.js +27 -20
  44. package/dist/modules/Customer/index.d.ts +20 -0
  45. package/dist/modules/Customer/index.js +172 -83
  46. package/dist/modules/Customer/types.d.ts +3 -1
  47. package/dist/modules/Discount/index.d.ts +2 -1
  48. package/dist/modules/Discount/index.js +37 -9
  49. package/dist/modules/Discount/types.d.ts +2 -1
  50. package/dist/modules/Holder/types.d.ts +1 -1
  51. package/dist/modules/OpenData/index.d.ts +8 -0
  52. package/dist/modules/OpenData/index.js +36 -16
  53. package/dist/modules/OpenData/types.d.ts +1 -1
  54. package/dist/modules/Order/index.d.ts +448 -23
  55. package/dist/modules/Order/index.js +5417 -561
  56. package/dist/modules/Order/types.d.ts +693 -88
  57. package/dist/modules/Order/types.js +68 -1
  58. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  59. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  60. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  61. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  62. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  63. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  64. package/dist/modules/Order/utils.d.ts +167 -18
  65. package/dist/modules/Order/utils.js +960 -165
  66. package/dist/modules/Payment/index.d.ts +10 -9
  67. package/dist/modules/Payment/index.js +465 -703
  68. package/dist/modules/Payment/types.d.ts +47 -23
  69. package/dist/modules/Payment/utils.d.ts +1 -1
  70. package/dist/modules/Payment/utils.js +4 -3
  71. package/dist/modules/Payment/walletpass.js +44 -29
  72. package/dist/modules/Product/index.d.ts +1 -1
  73. package/dist/modules/Product/types.d.ts +29 -7
  74. package/dist/modules/ProductList/index.d.ts +17 -13
  75. package/dist/modules/ProductList/index.js +184 -74
  76. package/dist/modules/ProductList/types.d.ts +17 -0
  77. package/dist/modules/Quotation/index.d.ts +22 -2
  78. package/dist/modules/Quotation/index.js +108 -42
  79. package/dist/modules/Quotation/types.d.ts +19 -0
  80. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  81. package/dist/modules/ResourcePlanner/index.js +181 -0
  82. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  83. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  84. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  85. package/dist/modules/ResourcePlanner/types.js +1 -0
  86. package/dist/modules/Rules/index.d.ts +8 -10
  87. package/dist/modules/Rules/index.js +222 -109
  88. package/dist/modules/Rules/types.d.ts +15 -4
  89. package/dist/modules/SalesSummary/index.d.ts +23 -26
  90. package/dist/modules/SalesSummary/index.js +152 -46
  91. package/dist/modules/SalesSummary/types.d.ts +9 -1
  92. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  93. package/dist/modules/SalesSummary/utils.js +803 -163
  94. package/dist/modules/ScanOrderLogger/types.d.ts +2 -2
  95. package/dist/modules/Schedule/getDateIsInSchedule.d.ts +1 -1
  96. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -7
  97. package/dist/modules/Schedule/index.d.ts +18 -5
  98. package/dist/modules/Schedule/index.js +78 -24
  99. package/dist/modules/Schedule/type.d.ts +7 -7
  100. package/dist/modules/Schedule/types.d.ts +11 -9
  101. package/dist/modules/Summary/index.js +4 -3
  102. package/dist/modules/SurchargeList/index.d.ts +18 -0
  103. package/dist/modules/SurchargeList/index.js +185 -0
  104. package/dist/modules/SurchargeList/types.d.ts +15 -0
  105. package/dist/modules/SurchargeList/types.js +1 -0
  106. package/dist/modules/index.d.ts +3 -0
  107. package/dist/modules/index.js +4 -1
  108. package/dist/plugins/app.d.ts +2 -0
  109. package/dist/plugins/request.d.ts +3 -2
  110. package/dist/server/index.d.ts +462 -8
  111. package/dist/server/index.js +6112 -656
  112. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  113. package/dist/server/modules/floor-plan/index.js +595 -0
  114. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  115. package/dist/server/modules/floor-plan/types.js +13 -0
  116. package/dist/server/modules/index.d.ts +7 -2
  117. package/dist/server/modules/index.js +6 -0
  118. package/dist/server/modules/menu/types.d.ts +1 -1
  119. package/dist/server/modules/order/index.d.ts +207 -14
  120. package/dist/server/modules/order/index.js +2326 -379
  121. package/dist/server/modules/order/types.d.ts +91 -20
  122. package/dist/server/modules/order/types.js +14 -1
  123. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  124. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  125. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  126. package/dist/server/modules/payment/index.d.ts +28 -0
  127. package/dist/server/modules/payment/index.js +305 -0
  128. package/dist/server/modules/payment/types.d.ts +9 -0
  129. package/dist/server/modules/payment/types.js +1 -0
  130. package/dist/server/modules/products/index.d.ts +105 -14
  131. package/dist/server/modules/products/index.js +1393 -516
  132. package/dist/server/modules/products/types.d.ts +35 -2
  133. package/dist/server/modules/products/types.js +4 -0
  134. package/dist/server/modules/quotation/index.d.ts +39 -0
  135. package/dist/server/modules/quotation/index.js +278 -66
  136. package/dist/server/modules/resource/index.d.ts +2 -3
  137. package/dist/server/modules/resource/index.js +108 -86
  138. package/dist/server/modules/resource/types.d.ts +1 -1
  139. package/dist/server/modules/schedule/index.d.ts +6 -4
  140. package/dist/server/modules/schedule/index.js +116 -85
  141. package/dist/server/modules/schedule/utils.d.ts +1 -1
  142. package/dist/server/test.json +713 -0
  143. package/dist/server/types.d.ts +6 -4
  144. package/dist/server/utils/product.js +2 -2
  145. package/dist/server/utils/small-ticket.d.ts +71 -0
  146. package/dist/server/utils/small-ticket.js +963 -0
  147. package/dist/solution/BaseSales/index.d.ts +378 -0
  148. package/dist/solution/BaseSales/index.js +4006 -0
  149. package/dist/solution/BaseSales/types.d.ts +394 -0
  150. package/dist/solution/BaseSales/types.js +40 -0
  151. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  152. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  153. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  154. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  155. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  156. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  157. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  158. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  159. package/dist/solution/BaseSales/utils.d.ts +40 -0
  160. package/dist/solution/BaseSales/utils.js +263 -0
  161. package/dist/solution/BookingByStep/index.d.ts +2 -2
  162. package/dist/solution/BookingByStep/utils/resources.d.ts +1 -1
  163. package/dist/solution/BookingTicket/index.d.ts +382 -25
  164. package/dist/solution/BookingTicket/index.js +2506 -443
  165. package/dist/solution/BookingTicket/types.d.ts +191 -6
  166. package/dist/solution/BookingTicket/types.js +83 -10
  167. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  168. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  169. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  170. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  171. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  172. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  173. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  174. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  175. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  176. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  177. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  178. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  179. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  180. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  181. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  182. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  183. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  184. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +41 -1
  185. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  186. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  187. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  188. package/dist/solution/BookingTicket/utils/scan/handleScan.js +11 -3
  189. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  190. package/dist/solution/BookingTicket/utils/scan/index.js +20 -8
  191. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  192. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  193. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  194. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  195. package/dist/solution/Checkout/index.d.ts +1 -0
  196. package/dist/solution/Checkout/index.js +25 -34
  197. package/dist/solution/Checkout/utils/index.js +4 -4
  198. package/dist/solution/RegisterAndLogin/config.js +2 -10
  199. package/dist/solution/Sales/index.d.ts +50 -5
  200. package/dist/solution/Sales/index.js +484 -92
  201. package/dist/solution/Sales/types.d.ts +29 -5
  202. package/dist/solution/ScanOrder/index.d.ts +27 -21
  203. package/dist/solution/ScanOrder/index.js +499 -434
  204. package/dist/solution/ScanOrder/types.d.ts +38 -16
  205. package/dist/solution/ScanOrder/types.js +4 -5
  206. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  207. package/dist/solution/ScanOrder/utils.js +109 -34
  208. package/dist/solution/ShopDiscount/index.js +4 -4
  209. package/dist/solution/ShopDiscount/types.d.ts +1 -1
  210. package/dist/solution/ShopDiscount/utils.d.ts +2 -2
  211. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  212. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  213. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  214. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  215. package/dist/solution/VenueBooking/index.d.ts +29 -20
  216. package/dist/solution/VenueBooking/index.js +301 -213
  217. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  218. package/dist/solution/VenueBooking/types.d.ts +1 -1
  219. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  220. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  221. package/dist/solution/index.d.ts +2 -0
  222. package/dist/solution/index.js +3 -1
  223. package/dist/types/index.d.ts +12 -2
  224. package/dist/utils/task.d.ts +2 -2
  225. package/dist/utils/watch.d.ts +2 -2
  226. package/lib/effects/index.d.ts +2 -2
  227. package/lib/model/strategy/adapter/dataVariant/type.d.ts +3 -3
  228. package/lib/model/strategy/adapter/itemRule/type.d.ts +6 -6
  229. package/lib/model/strategy/adapter/promotion/evaluator.js +3 -2
  230. package/lib/model/strategy/adapter/promotion/type.d.ts +5 -5
  231. package/lib/model/strategy/adapter/walletPass/utils.js +6 -4
  232. package/lib/model/strategy/type.d.ts +1 -1
  233. package/lib/modules/BaseModule.d.ts +2 -2
  234. package/lib/modules/BaseModule.js +4 -4
  235. package/lib/modules/BookingContext/index.d.ts +48 -0
  236. package/lib/modules/BookingContext/index.js +390 -0
  237. package/lib/modules/BookingContext/types.d.ts +102 -0
  238. package/lib/modules/BookingContext/types.js +48 -0
  239. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  240. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +286 -0
  241. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  242. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +148 -0
  243. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  244. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +242 -0
  245. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  246. package/lib/modules/BookingContext/utils/flexible.js +63 -0
  247. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  248. package/lib/modules/BookingContext/utils/formatResourceList.js +35 -0
  249. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  250. package/lib/modules/BookingContext/utils/index.js +126 -0
  251. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  252. package/lib/modules/BookingContext/utils/noResource.js +78 -0
  253. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  254. package/lib/modules/BookingContext/utils/orderLineDisplay.js +29 -0
  255. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  256. package/lib/modules/BookingContext/utils/productExtend.js +330 -0
  257. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  258. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  259. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  260. package/lib/modules/BookingContext/utils/resourceSelection.js +24 -0
  261. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  262. package/lib/modules/BookingContext/utils/resources.js +419 -0
  263. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  264. package/lib/modules/BookingContext/utils/serviceTimes.js +161 -0
  265. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  266. package/lib/modules/BookingContext/utils/timeSlices.js +114 -0
  267. package/lib/modules/Cart/utils/cartProduct.js +27 -5
  268. package/lib/modules/Cart/utils/changePrice.js +20 -14
  269. package/lib/modules/Customer/index.d.ts +20 -0
  270. package/lib/modules/Customer/index.js +63 -10
  271. package/lib/modules/Customer/types.d.ts +3 -1
  272. package/lib/modules/Discount/index.d.ts +2 -1
  273. package/lib/modules/Discount/index.js +18 -2
  274. package/lib/modules/Discount/types.d.ts +2 -1
  275. package/lib/modules/Holder/types.d.ts +1 -1
  276. package/lib/modules/OpenData/index.d.ts +8 -0
  277. package/lib/modules/OpenData/index.js +21 -3
  278. package/lib/modules/OpenData/types.d.ts +1 -1
  279. package/lib/modules/Order/index.d.ts +448 -23
  280. package/lib/modules/Order/index.js +3641 -308
  281. package/lib/modules/Order/types.d.ts +693 -88
  282. package/lib/modules/Order/types.js +55 -1
  283. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  284. package/lib/modules/Order/utils/bundleDiscountHydration.js +106 -0
  285. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  286. package/lib/modules/Order/utils/manualProductDiscount.js +207 -0
  287. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  288. package/lib/modules/Order/utils/orderCollectionIdentity.js +353 -0
  289. package/lib/modules/Order/utils.d.ts +167 -18
  290. package/lib/modules/Order/utils.js +974 -138
  291. package/lib/modules/Payment/index.d.ts +10 -9
  292. package/lib/modules/Payment/index.js +30 -124
  293. package/lib/modules/Payment/types.d.ts +47 -23
  294. package/lib/modules/Payment/utils.d.ts +1 -1
  295. package/lib/modules/Payment/utils.js +4 -3
  296. package/lib/modules/Payment/walletpass.js +16 -6
  297. package/lib/modules/Product/index.d.ts +1 -1
  298. package/lib/modules/Product/types.d.ts +29 -7
  299. package/lib/modules/ProductList/index.d.ts +17 -13
  300. package/lib/modules/ProductList/index.js +92 -51
  301. package/lib/modules/ProductList/types.d.ts +17 -0
  302. package/lib/modules/Quotation/index.d.ts +22 -2
  303. package/lib/modules/Quotation/index.js +76 -20
  304. package/lib/modules/Quotation/types.d.ts +19 -0
  305. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  306. package/lib/modules/ResourcePlanner/index.js +147 -0
  307. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  308. package/lib/modules/ResourcePlanner/planner.js +895 -0
  309. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  310. package/lib/modules/ResourcePlanner/types.js +5 -0
  311. package/lib/modules/Rules/index.d.ts +8 -10
  312. package/lib/modules/Rules/index.js +153 -61
  313. package/lib/modules/Rules/types.d.ts +15 -4
  314. package/lib/modules/SalesSummary/index.d.ts +23 -26
  315. package/lib/modules/SalesSummary/index.js +84 -16
  316. package/lib/modules/SalesSummary/types.d.ts +9 -1
  317. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  318. package/lib/modules/SalesSummary/utils.js +616 -111
  319. package/lib/modules/ScanOrderLogger/types.d.ts +2 -2
  320. package/lib/modules/Schedule/getDateIsInSchedule.d.ts +1 -1
  321. package/lib/modules/Schedule/getDateIsInSchedule.js +14 -7
  322. package/lib/modules/Schedule/index.d.ts +18 -5
  323. package/lib/modules/Schedule/index.js +49 -14
  324. package/lib/modules/Schedule/type.d.ts +7 -7
  325. package/lib/modules/Schedule/types.d.ts +11 -9
  326. package/lib/modules/Summary/index.js +2 -2
  327. package/lib/modules/SurchargeList/index.d.ts +18 -0
  328. package/lib/modules/SurchargeList/index.js +95 -0
  329. package/lib/modules/SurchargeList/types.d.ts +15 -0
  330. package/lib/modules/SurchargeList/types.js +5 -0
  331. package/lib/modules/index.d.ts +3 -0
  332. package/lib/modules/index.js +33 -0
  333. package/lib/plugins/app.d.ts +2 -0
  334. package/lib/plugins/request.d.ts +3 -2
  335. package/lib/server/index.d.ts +462 -8
  336. package/lib/server/index.js +3901 -205
  337. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  338. package/lib/server/modules/floor-plan/index.js +306 -0
  339. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  340. package/lib/server/modules/floor-plan/types.js +19 -0
  341. package/lib/server/modules/index.d.ts +7 -2
  342. package/lib/server/modules/index.js +21 -0
  343. package/lib/server/modules/menu/types.d.ts +1 -1
  344. package/lib/server/modules/order/index.d.ts +207 -14
  345. package/lib/server/modules/order/index.js +1324 -141
  346. package/lib/server/modules/order/types.d.ts +91 -20
  347. package/lib/server/modules/order/types.js +11 -1
  348. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  349. package/lib/server/modules/order/utils/filterBookings.js +119 -11
  350. package/lib/server/modules/order/utils/filterOrders.js +238 -13
  351. package/lib/server/modules/payment/index.d.ts +28 -0
  352. package/lib/server/modules/payment/index.js +168 -0
  353. package/lib/server/modules/payment/types.d.ts +9 -0
  354. package/lib/server/modules/payment/types.js +5 -0
  355. package/lib/server/modules/products/index.d.ts +105 -14
  356. package/lib/server/modules/products/index.js +588 -97
  357. package/lib/server/modules/products/types.d.ts +35 -2
  358. package/lib/server/modules/products/types.js +3 -0
  359. package/lib/server/modules/quotation/index.d.ts +39 -0
  360. package/lib/server/modules/quotation/index.js +145 -1
  361. package/lib/server/modules/resource/index.d.ts +2 -3
  362. package/lib/server/modules/resource/index.js +71 -45
  363. package/lib/server/modules/resource/types.d.ts +1 -1
  364. package/lib/server/modules/schedule/index.d.ts +6 -4
  365. package/lib/server/modules/schedule/index.js +55 -44
  366. package/lib/server/modules/schedule/utils.d.ts +1 -1
  367. package/lib/server/test.json +713 -0
  368. package/lib/server/types.d.ts +6 -4
  369. package/lib/server/utils/product.js +2 -2
  370. package/lib/server/utils/small-ticket.d.ts +71 -0
  371. package/lib/server/utils/small-ticket.js +926 -0
  372. package/lib/solution/BaseSales/index.d.ts +378 -0
  373. package/lib/solution/BaseSales/index.js +2367 -0
  374. package/lib/solution/BaseSales/types.d.ts +394 -0
  375. package/lib/solution/BaseSales/types.js +47 -0
  376. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  377. package/lib/solution/BaseSales/utils/cartPromotion.js +1155 -0
  378. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  379. package/lib/solution/BaseSales/utils/parseSalesResponse.js +140 -0
  380. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  381. package/lib/solution/BaseSales/utils/quotationPrice.js +231 -0
  382. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  383. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +215 -0
  384. package/lib/solution/BaseSales/utils.d.ts +40 -0
  385. package/lib/solution/BaseSales/utils.js +259 -0
  386. package/lib/solution/BookingByStep/index.d.ts +2 -2
  387. package/lib/solution/BookingByStep/utils/resources.d.ts +1 -1
  388. package/lib/solution/BookingTicket/index.d.ts +382 -25
  389. package/lib/solution/BookingTicket/index.js +1350 -76
  390. package/lib/solution/BookingTicket/types.d.ts +191 -6
  391. package/lib/solution/BookingTicket/types.js +71 -10
  392. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  393. package/lib/solution/BookingTicket/utils/addProductDecision.js +353 -0
  394. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  395. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +94 -0
  396. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  397. package/lib/solution/BookingTicket/utils/bookingStatus.js +136 -0
  398. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  399. package/lib/solution/BookingTicket/utils/cartView.js +200 -0
  400. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  401. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  402. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  403. package/lib/solution/BookingTicket/utils/orderCustomer.js +35 -0
  404. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  405. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +387 -0
  406. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  407. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +220 -0
  408. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  409. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +24 -3
  410. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  411. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +64 -0
  412. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  413. package/lib/solution/BookingTicket/utils/scan/handleScan.js +4 -2
  414. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  415. package/lib/solution/BookingTicket/utils/scan/index.js +14 -2
  416. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  417. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +115 -0
  418. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  419. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +83 -0
  420. package/lib/solution/Checkout/index.d.ts +1 -0
  421. package/lib/solution/Checkout/index.js +18 -19
  422. package/lib/solution/Checkout/utils/index.js +4 -4
  423. package/lib/solution/RegisterAndLogin/config.js +2 -10
  424. package/lib/solution/Sales/index.d.ts +50 -5
  425. package/lib/solution/Sales/index.js +296 -39
  426. package/lib/solution/Sales/types.d.ts +29 -5
  427. package/lib/solution/ScanOrder/index.d.ts +27 -21
  428. package/lib/solution/ScanOrder/index.js +144 -103
  429. package/lib/solution/ScanOrder/types.d.ts +38 -16
  430. package/lib/solution/ScanOrder/types.js +4 -5
  431. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  432. package/lib/solution/ScanOrder/utils.js +98 -26
  433. package/lib/solution/ShopDiscount/index.js +3 -3
  434. package/lib/solution/ShopDiscount/types.d.ts +1 -1
  435. package/lib/solution/ShopDiscount/utils.d.ts +2 -2
  436. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  437. package/lib/solution/UnifiedBookingSales/index.js +1050 -0
  438. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  439. package/lib/solution/UnifiedBookingSales/types.js +14 -0
  440. package/lib/solution/VenueBooking/index.d.ts +29 -20
  441. package/lib/solution/VenueBooking/index.js +169 -94
  442. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  443. package/lib/solution/VenueBooking/types.d.ts +1 -1
  444. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  445. package/lib/solution/VenueBooking/utils/slotMerge.js +9 -3
  446. package/lib/solution/index.d.ts +2 -0
  447. package/lib/solution/index.js +22 -0
  448. package/lib/types/index.d.ts +12 -2
  449. package/lib/utils/task.d.ts +2 -2
  450. package/lib/utils/watch.d.ts +2 -2
  451. package/package.json +18 -19
  452. package/dist/model/strategy/adapter/promotion/index.d.ts +0 -4
  453. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  454. package/lib/model/strategy/adapter/promotion/index.d.ts +0 -4
  455. package/lib/solution/Checkout/appointmentDemo.json +0 -1
@@ -0,0 +1,419 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.formatResource = formatResource;
7
+ exports.formatResources = formatResources;
8
+ exports.formatTimes = formatTimes;
9
+ exports.getResourceByIds = getResourceByIds;
10
+ exports.getResourceTimeIsUsable = getResourceTimeIsUsable;
11
+ exports.getSumCapacity = getSumCapacity;
12
+ exports.getUsableTime = getUsableTime;
13
+ exports.setDefaultCapacitys = setDefaultCapacitys;
14
+ exports.setDefaultResource = setDefaultResource;
15
+ var _dayjs = _interopRequireDefault(require("dayjs"));
16
+ var _lodashEs = require("lodash-es");
17
+ var _flexible = require("./flexible");
18
+ var _noResource = require("./noResource");
19
+ var _serviceTimes = require("./serviceTimes");
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+ /**
22
+ * 资源运行态计算 helper(搬自 info2 `utilsByBooking.ts` + `service/addService/utils.tsx`)。
23
+ *
24
+ * 本文件输入输出全部为 plain object,不依赖 React / locales / @pisell/icon / mini-redux。
25
+ * 调用方传入:resource origin map(`/form/schedule` 返回) / cacheItem(含 `_extend.duration / _extend.start_date / _extend.start_time` 等)。
26
+ *
27
+ * 三个 info2 独有特性保留:
28
+ * 1. `resource_display_scope='all'`:取全部资源
29
+ * 2. `extraResources`:拖入未绑定资源时兼容渲染
30
+ * 3. `getNoResource2()`:占位"无资源"行
31
+ */
32
+
33
+ /**
34
+ * 从已选资源中取「最早结束」的 usableTime,供灵活时长计算上限。
35
+ * 与 info2 `service/addService/utils.tsx#getUsableTime` 等价。
36
+ */
37
+ function getUsableTime(cacheItem) {
38
+ try {
39
+ const resourceByForm = cacheItem?._extend?.resource || {};
40
+ const resourceMaps = cacheItem?._data?.resourceMaps || {};
41
+ let items = [];
42
+ for (const formId of Object.keys(resourceByForm)) {
43
+ const selected = resourceByForm[formId];
44
+ const maps = resourceMaps[formId]?.renderListMaps;
45
+ if (!Array.isArray(selected) || !maps) continue;
46
+ items = items.concat(selected.map(d => maps[d.relation_id]).filter(Boolean));
47
+ }
48
+ if (!items.length) return null;
49
+ return items.reduce((pre, event) => {
50
+ const endAt = (0, _dayjs.default)(event._extend?.usableTime?.end_at);
51
+ const preEnd = (0, _dayjs.default)(pre._extend?.usableTime?.end_at);
52
+ return endAt.isBefore(preEnd) ? event : pre;
53
+ }, items[0]);
54
+ } catch {
55
+ return null;
56
+ }
57
+ }
58
+
59
+ /** Σ cacheItem._extend.capacity[].value × _extend.quantity。 */
60
+ function getSumCapacity(cacheItem, isCalcQuantity = true) {
61
+ const list = cacheItem?._extend?.capacity || [];
62
+ let sum = 0;
63
+ for (const item of list) {
64
+ sum += Number(item?.value || 0);
65
+ }
66
+ return sum * (isCalcQuantity ? cacheItem?._extend?.quantity || 1 : 1);
67
+ }
68
+
69
+ /** 当前 time 剩余容量 = totalCapacity - Σ event.pax。 */
70
+ function getUseableEventCount(eventList, current) {
71
+ return (eventList || []).reduce((pre, event) => pre - (event?.pax || 0), current || 0);
72
+ }
73
+
74
+ /** 判断两个时间段是否有冲突。 */
75
+ function isConflict(event, current) {
76
+ const eventStart = (0, _dayjs.default)(event.start_at);
77
+ const eventEnd = (0, _dayjs.default)(event.end_at);
78
+ const currentStart = (0, _dayjs.default)(current.start_at);
79
+ const isBefore = currentStart.isBefore(eventEnd);
80
+ let isAfter = true;
81
+ if (current.end_at) {
82
+ const currentEnd = (0, _dayjs.default)(current.end_at);
83
+ isAfter = currentEnd.isAfter(eventStart);
84
+ }
85
+ return isBefore && isAfter;
86
+ }
87
+
88
+ /**
89
+ * 判断单个 time 是否可用,写回 `_extend` 标记位(isDateRange / isCountRange / isUsable / isMaxLimitRange)。
90
+ * 与 info2 `utilsByBooking.ts#getResourceTimeIsUsable` 等价。
91
+ */
92
+ function getResourceTimeIsUsable(item, cacheItem, resourceItem) {
93
+ const startDate = (0, _dayjs.default)(`${(0, _dayjs.default)(cacheItem._extend.start_date).format('YYYY-MM-DD')} ${(0, _serviceTimes.getServeStartTime)(cacheItem._extend.start_time)}`);
94
+ const isFlexible = _flexible.flexibleObj.isFlexible(cacheItem._extend.duration);
95
+ let isMaxLimitRange = false;
96
+ let isDateRange = false;
97
+ let isCountRange = false;
98
+ const time = {
99
+ ...item
100
+ };
101
+ const timeStartDate = (0, _dayjs.default)(`${time.start_date} ${time.start_time}`).subtract(1, 'second');
102
+ const timeEndDate = (0, _dayjs.default)(`${time.end_date} ${time.end_time}`).add(1, 'second');
103
+ const totalCount = getUseableEventCount(time.event_list, resourceItem.capacity);
104
+ const currentCount = getSumCapacity(cacheItem);
105
+ let eventList = time.event_list || [];
106
+ if (cacheItem?.booking_id) {
107
+ eventList = eventList.filter(event => event.id !== cacheItem.booking_id);
108
+ }
109
+ let endDate = null;
110
+ let isCalcCount = true;
111
+ if (isFlexible) {
112
+ isDateRange = startDate.isAfter(timeStartDate) && startDate.isBefore(timeEndDate);
113
+ if (!isDateRange && eventList.length) {
114
+ isCalcCount = false;
115
+ isDateRange = true;
116
+ isCountRange = false;
117
+ }
118
+ } else {
119
+ endDate = startDate.add(_flexible.flexibleObj.getValue(cacheItem._extend.duration), 'minute');
120
+ const isTimeRange = startDate.isAfter(timeStartDate) && endDate.isBefore(timeEndDate);
121
+ if (isTimeRange) isDateRange = true;
122
+ }
123
+ if (isCalcCount) {
124
+ const conflict = (eventList || []).filter(d => isConflict({
125
+ start_at: d.start_at,
126
+ end_at: d.end_at
127
+ }, {
128
+ start_at: startDate,
129
+ end_at: endDate
130
+ }));
131
+ if (resourceItem.resourceType === 'single') {
132
+ isCountRange = conflict.length === 0;
133
+ } else {
134
+ const conflictCount = getUseableEventCount(conflict, resourceItem.capacity);
135
+ isCountRange = currentCount <= conflictCount;
136
+ // totalCount 当前未直接参与判定,保留 reference 以与原版接近。
137
+ void totalCount;
138
+ }
139
+ }
140
+ const isUsable = isDateRange && isCountRange;
141
+ time._extend = {
142
+ isMaxLimitRange,
143
+ isDateRange,
144
+ isCountRange,
145
+ isUsable
146
+ };
147
+ return time;
148
+ }
149
+
150
+ /**
151
+ * 在 resource.times 中找到最佳可用 time,并写回 `_extend.usableTime`。
152
+ * 与 info2 `utilsByBooking.ts#formatTimes` 等价。
153
+ */
154
+ function formatTimes(resourceItem, cacheItem) {
155
+ const usableTimes = [];
156
+ const _resourceItem = {
157
+ ...resourceItem
158
+ };
159
+ const sum = getSumCapacity(cacheItem);
160
+ if (_resourceItem.capacity >= sum) {
161
+ _resourceItem.times = (_resourceItem.times || []).map(time => {
162
+ const _time = getResourceTimeIsUsable(time, cacheItem, _resourceItem);
163
+ if (_time?._extend?.isDateRange) usableTimes.push(_time);
164
+ return _time;
165
+ });
166
+ }
167
+ const _time = usableTimes.sort((a, b) => {
168
+ const aEnd = (0, _dayjs.default)(`${a.end_date} ${a.end_time}`).valueOf();
169
+ const bEnd = (0, _dayjs.default)(`${b.end_date} ${b.end_time}`).valueOf();
170
+ return aEnd - bEnd;
171
+ })[0];
172
+ resourceItem._extend = {
173
+ ...resourceItem._extend,
174
+ usableTime: _time
175
+ };
176
+ return resourceItem;
177
+ }
178
+
179
+ /**
180
+ * 单个 resource 的整体可用性 + labelText 填充。
181
+ * 与 info2 `utilsByBooking.ts#formatResource` 等价;不再接收 formatLabel 回调(OS 不渲染 JSX)。
182
+ */
183
+ function formatResource(resourceItem, cacheItem) {
184
+ let _resourceItem = {
185
+ ...resourceItem
186
+ };
187
+ _resourceItem = formatTimes(_resourceItem, cacheItem);
188
+ _resourceItem.labelText = _resourceItem.main_field;
189
+ const usable = _resourceItem._extend?.usableTime?._extend?.isUsable;
190
+ _resourceItem.usable = usable;
191
+ return _resourceItem;
192
+ }
193
+
194
+ /**
195
+ * 把单个 resource origin 类型(如「技师」)的 renderList 中每个资源跑一遍 formatResource,
196
+ * 并维护 unbound 标记(拖入未绑定资源时 UI 用)。
197
+ * 与 info2 `service/addService/utils.tsx#formatResources` 等价(剥 JSX)。
198
+ */
199
+ function formatResources(params) {
200
+ const {
201
+ cacheItem,
202
+ resourcesOrigin
203
+ } = params;
204
+ try {
205
+ const maps = {};
206
+ const list = resourcesOrigin.map(item => {
207
+ const _item = (0, _lodashEs.cloneDeep)(item);
208
+ const renderListMaps = {};
209
+ _item.renderList = _item.renderList.map(d => {
210
+ const res = formatResource(d, cacheItem);
211
+ const unbound = !item.optional_resource.includes(res.id) && !item.default_resource.includes(res.id) && res.id !== 0;
212
+ if (unbound) res.unbound = true;
213
+ renderListMaps[res.id] = res;
214
+ return res;
215
+ }).sort((a, b) => b.usable ? 1 : -1);
216
+ maps[_item.form_id] = {
217
+ ..._item,
218
+ renderListMaps
219
+ };
220
+ return _item;
221
+ });
222
+ return {
223
+ list,
224
+ maps
225
+ };
226
+ } catch (err) {
227
+ console.warn('[BookingContext] formatResources error', err);
228
+ return {
229
+ list: [],
230
+ maps: {}
231
+ };
232
+ }
233
+ }
234
+
235
+ /** 取可用资源中"最大空闲时长"的那一个,作为自动分派候选。 */
236
+ function getResourceMaxFreeTime(resource, isAutoAllocationOn) {
237
+ const {
238
+ renderList,
239
+ form_id
240
+ } = resource;
241
+ if (!isAutoAllocationOn(form_id)) return [];
242
+ const usableList = (renderList || []).filter(d => d.usable && d.id !== 0);
243
+ let defaultResource = [];
244
+ let maxFreeTime = 0;
245
+ usableList.forEach(d => {
246
+ const {
247
+ times = []
248
+ } = d;
249
+ const currentMaxFreeTime = times.reduce((pre, cur) => {
250
+ const start = cur.event_list?.[cur.event_list?.length - 1]?.end_at || cur.start_at;
251
+ const end = cur.end_at;
252
+ const diff = (0, _dayjs.default)(end).diff((0, _dayjs.default)(start), 'minute');
253
+ return diff > pre ? diff : pre;
254
+ }, 0);
255
+ if (currentMaxFreeTime > maxFreeTime) {
256
+ maxFreeTime = currentMaxFreeTime;
257
+ defaultResource = [d];
258
+ }
259
+ });
260
+ return defaultResource;
261
+ }
262
+
263
+ /**
264
+ * 计算每类资源的默认值(写入 cacheItem._extend.resource)。
265
+ * 与 info2 `service/addService/utils.tsx#setDefaultResource` 等价;
266
+ * `resourceIdFromCalendar` 替代原版 sessionStorage `serviceParams.resource_id` 读取。
267
+ */
268
+ function setDefaultResource(params) {
269
+ const {
270
+ cacheItem,
271
+ resources,
272
+ resourceIdFromCalendar,
273
+ isAutoAllocationOn = () => true
274
+ } = params;
275
+ const obj = {};
276
+ const resourceId = Number(resourceIdFromCalendar) || 0;
277
+ for (const item of resources) {
278
+ const {
279
+ select_type = {},
280
+ optional_resource = [],
281
+ default_resource = []
282
+ } = item;
283
+ const renderList = item.renderList.filter(d => {
284
+ if (select_type?.type === 'single') {
285
+ if (resourceId && (optional_resource.includes(resourceId) || default_resource.includes(resourceId))) {
286
+ return d.id === resourceId;
287
+ }
288
+ return d.is_default === 1;
289
+ }
290
+ return d.is_default === 1 || d.id === resourceId;
291
+ });
292
+ let defaultOriginalResource = [];
293
+ if (renderList.length === 0) {
294
+ defaultOriginalResource = getResourceMaxFreeTime(item, isAutoAllocationOn);
295
+ } else {
296
+ defaultOriginalResource = renderList;
297
+ }
298
+ obj[item.form_id] = defaultOriginalResource.map(d => ({
299
+ children: d.children,
300
+ relation_type: d.relation_type,
301
+ form_id: item.form_id,
302
+ relation_id: d.id,
303
+ like_status: 'common',
304
+ metadata: {
305
+ form_name: item.title,
306
+ resource_name: d.main_field
307
+ }
308
+ }));
309
+ // errors 字段由调用方在需要时通过 getResourceErrors 单独算,OS 这里不耦合。
310
+ }
311
+ return obj;
312
+ }
313
+
314
+ /**
315
+ * 计算默认容量(与 info2 `setDefaultCapacitys` 等价)。
316
+ * package:按 _extend.other.bundle 拆 quantity;custom:按 capacity.custom[].min;其他:[{id:0,value:1}]。
317
+ */
318
+ function setDefaultCapacitys(params) {
319
+ const {
320
+ capacitys,
321
+ cacheItem
322
+ } = params;
323
+ if (capacitys?.type === 'package') {
324
+ return (cacheItem?._extend?.other?.bundle || []).map(d => {
325
+ const id = d._bundle_product_id;
326
+ const item = (capacitys?.package || []).find(p => p.product_id === id);
327
+ return {
328
+ id,
329
+ value: item ? d.quantity || 0 : 0,
330
+ name: item?.name || d?.title
331
+ };
332
+ });
333
+ }
334
+ if (capacitys?.type === 'custom') {
335
+ return (capacitys?.custom || []).map(d => ({
336
+ id: d.id,
337
+ value: d.min,
338
+ name: d.name
339
+ }));
340
+ }
341
+ return [{
342
+ id: 0,
343
+ value: 1,
344
+ name: ''
345
+ }];
346
+ }
347
+
348
+ /**
349
+ * 通过商品 `product_resource.resources[]` 关联的 form/resource id,从 resourcesOriginMap 还原资源数据。
350
+ * 与 info2 `service/addService/utils.tsx#getResourceByIds` 等价(保留三特性)。
351
+ */
352
+ function getResourceByIds(resourcesOriginMap, cacheItem, extraParams) {
353
+ const _resources = [...(cacheItem?.product_resource?.resources || [])].filter(d => Number(d?.status) === 1).map(item => ({
354
+ ...item
355
+ }));
356
+ const {
357
+ extraResources = [],
358
+ resourcesOrigin = [],
359
+ resourceTab = {}
360
+ } = extraParams || {};
361
+ for (const item of _resources) {
362
+ const form_id = item.id;
363
+ const isAllResource = resourceTab?.[item.code]?.resource_display_scope === 'all';
364
+ let extraResourceIds = [];
365
+ if (isAllResource) {
366
+ extraResourceIds = (resourcesOrigin || []).filter(d => d.form_code === item.code).map(d => d.id);
367
+ } else {
368
+ extraResourceIds = extraResources.filter(_extraItem => _extraItem.form_id === form_id && !!_extraItem.id && !item.optional_resource.includes(_extraItem.id) && !item.default_resource.includes(_extraItem.id)).map(_extraItem => _extraItem.id);
369
+ }
370
+ extraResourceIds = Array.from(new Set(extraResourceIds));
371
+ item.optional_resource = (item.optional_resource || []).filter(d => item.default_resource.indexOf(d) === -1);
372
+ const getChildrenMetadata = id => {
373
+ const combiningResources = [];
374
+ const origin = resourcesOriginMap[id];
375
+ if (origin?.combined_resource && origin.combined_resource.status === 1) {
376
+ (origin.combined_resource.resource_ids || []).forEach(cid => {
377
+ if (resourcesOriginMap[cid]) {
378
+ combiningResources.push({
379
+ ...resourcesOriginMap[cid],
380
+ relation_id: resourcesOriginMap[cid]?.relation_id || resourcesOriginMap[cid]?.id
381
+ });
382
+ }
383
+ });
384
+ }
385
+ return {
386
+ children: combiningResources,
387
+ metadata: {
388
+ ...(origin?.metadata || {}),
389
+ combined_resource: origin?.combined_resource
390
+ }
391
+ };
392
+ };
393
+ const optional_resource = Array.from(new Set([...item.optional_resource, ...extraResourceIds])).map(d => {
394
+ if (!resourcesOriginMap[d]) return null;
395
+ return Object.assign({}, resourcesOriginMap[d], {
396
+ form_id,
397
+ resourceType: item.type,
398
+ ...getChildrenMetadata(d)
399
+ });
400
+ }).filter(d => d).concat((0, _noResource.getNoResource2)({
401
+ form_id
402
+ }));
403
+ const default_resource = (item.default_resource || []).map(d => {
404
+ const origin = resourcesOriginMap[d];
405
+ if (origin) {
406
+ origin.is_default = 1;
407
+ return Object.assign({}, origin, {
408
+ form_id,
409
+ resourceType: item.type,
410
+ ...getChildrenMetadata(d)
411
+ });
412
+ }
413
+ return null;
414
+ }).filter(d => d);
415
+ item.renderList = optional_resource.concat(default_resource);
416
+ item.form_id = form_id;
417
+ }
418
+ return _resources;
419
+ }
@@ -0,0 +1,55 @@
1
+ import { Dayjs } from 'dayjs';
2
+ import { getDurationValue } from './flexible';
3
+ /**
4
+ * 判断商品是否为跨日预约(duration.type === 'days')。与 info2 isMultiDayProduct 等价。
5
+ */
6
+ export declare function isMultiDayProduct(product: any): boolean;
7
+ /**
8
+ * 判断 cacheItem 是否为 session 商品(extension_type ∈ session_product / session_ticket)。
9
+ */
10
+ export declare function isSessionProduct(cacheItem: any): boolean;
11
+ /** 从 catalog `cartDetailValue` 或 `_extend.other` 取 session 快照。 */
12
+ export declare function getSessionFromItem(item: any): Record<string, any> | null;
13
+ /**
14
+ * 将 cartDetailValue.session 写入 _extend 的起止时间(与 info2 getServiceStartTimeAndEndTime 的 session 分支一致)。
15
+ * 日历日优先用 ctx.date,时分取自 session.start_at / end_at 或 session.start_time / end_time。
16
+ */
17
+ export declare function applySessionTimesToExtend(item: any, extend: Record<string, any>, ctx?: {
18
+ date?: string | Dayjs | null;
19
+ }): Record<string, any>;
20
+ /**
21
+ * 是否应写入 booking(与 Product.utils isNormalProduct 对齐,并覆盖 session_ticket / cartDetailValue.session)。
22
+ */
23
+ export declare function isBookingProduct(item: any): boolean;
24
+ /**
25
+ * 处理 'now' 时间占位:'now' → 当前 HH:mm;其他原样返回。
26
+ * 与 info2 `getServeStartTime` 等价。
27
+ */
28
+ export declare function getServeStartTime(startTime: string | undefined | null): string;
29
+ /**
30
+ * 计算商品的开始结束时间(统一为 dayjs 实例)。
31
+ * 与 info2 `getServiceTimes` 行为等价:
32
+ * - 跨日商品:startDate = start_date + start_time,endDate = _extend.end_date 原样
33
+ * - session 商品:从 _extend.other.session 取 start_at / end_at
34
+ * - 普通商品:startDate + duration(含 flexible 处理)
35
+ */
36
+ export declare function getServiceTimes(service: any): {
37
+ startDate: Dayjs;
38
+ endDate: Dayjs;
39
+ };
40
+ /**
41
+ * 跨日预约相关:把 _extend.start_date / end_date 都对齐到 dayjs startOf('day')。
42
+ * 与 info2 `formatDayDate` 等价。
43
+ */
44
+ export declare function formatDayDate(_extend: any): {
45
+ start_date: Dayjs;
46
+ end_date: Dayjs;
47
+ };
48
+ /**
49
+ * 计算跨日预约时长:
50
+ * - type='days' → end - start 的天数
51
+ * - type='minutes' → end - start 的分钟数
52
+ * 与 info2 `getDays` 等价。
53
+ */
54
+ export declare function getDays(cacheItem: any, type: 'minutes' | 'days'): number;
55
+ export { getDurationValue };
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.applySessionTimesToExtend = applySessionTimesToExtend;
7
+ exports.formatDayDate = formatDayDate;
8
+ exports.getDays = getDays;
9
+ Object.defineProperty(exports, "getDurationValue", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _flexible.getDurationValue;
13
+ }
14
+ });
15
+ exports.getServeStartTime = getServeStartTime;
16
+ exports.getServiceTimes = getServiceTimes;
17
+ exports.getSessionFromItem = getSessionFromItem;
18
+ exports.isBookingProduct = isBookingProduct;
19
+ exports.isMultiDayProduct = isMultiDayProduct;
20
+ exports.isSessionProduct = isSessionProduct;
21
+ var _dayjs = _interopRequireDefault(require("dayjs"));
22
+ var _flexible = require("./flexible");
23
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
+ /**
25
+ * 判断商品是否为跨日预约(duration.type === 'days')。与 info2 isMultiDayProduct 等价。
26
+ */
27
+ function isMultiDayProduct(product) {
28
+ return product?.duration?.type === 'days';
29
+ }
30
+
31
+ /**
32
+ * 判断 cacheItem 是否为 session 商品(extension_type ∈ session_product / session_ticket)。
33
+ */
34
+ function isSessionProduct(cacheItem) {
35
+ return ['session_product', 'session_ticket'].includes(cacheItem?.extension_type);
36
+ }
37
+
38
+ /** 从 catalog `cartDetailValue` 或 `_extend.other` 取 session 快照。 */
39
+ function getSessionFromItem(item) {
40
+ const session = item?.cartDetailValue?.session ?? item?._extend?.other?.session;
41
+ return session && typeof session === 'object' ? session : null;
42
+ }
43
+
44
+ /**
45
+ * 将 cartDetailValue.session 写入 _extend 的起止时间(与 info2 getServiceStartTimeAndEndTime 的 session 分支一致)。
46
+ * 日历日优先用 ctx.date,时分取自 session.start_at / end_at 或 session.start_time / end_time。
47
+ */
48
+ function applySessionTimesToExtend(item, extend, ctx) {
49
+ const session = extend?.other?.session ?? getSessionFromItem(item);
50
+ if (!session || !isSessionProduct(item)) {
51
+ return extend;
52
+ }
53
+ const baseDate = ctx?.date ? (0, _dayjs.default)(ctx.date) : (0, _dayjs.default)();
54
+ const startAt = (0, _dayjs.default)(`${baseDate.format('YYYY-MM-DD')} ${(0, _dayjs.default)(session.start_at).format('HH:mm:ss')}`);
55
+ const endAt = (0, _dayjs.default)(`${baseDate.format('YYYY-MM-DD')} ${(0, _dayjs.default)(session.end_at).format('HH:mm:ss')}`);
56
+ const nextExtend = {
57
+ ...extend,
58
+ other: {
59
+ ...(extend.other || {}),
60
+ session
61
+ },
62
+ start_date: startAt,
63
+ startDate: startAt,
64
+ start_time: session.start_time ?? (0, _dayjs.default)(session.start_at).format('HH:mm'),
65
+ end_date: endAt,
66
+ endDate: endAt,
67
+ end_time: session.end_time ?? (0, _dayjs.default)(session.end_at).format('HH:mm')
68
+ };
69
+ return {
70
+ ...nextExtend,
71
+ duration: getDays({
72
+ _extend: nextExtend
73
+ }, 'minutes')
74
+ };
75
+ }
76
+
77
+ /**
78
+ * 是否应写入 booking(与 Product.utils isNormalProduct 对齐,并覆盖 session_ticket / cartDetailValue.session)。
79
+ */
80
+ function isBookingProduct(item) {
81
+ if (!item) return false;
82
+ if (item.duration) return true;
83
+ if (item?.schedules?.length) return true;
84
+ if (item?.['schedule.ids']?.length) return true;
85
+ if (isSessionProduct(item)) return true;
86
+ if (getSessionFromItem(item)) return true;
87
+ return false;
88
+ }
89
+
90
+ /**
91
+ * 处理 'now' 时间占位:'now' → 当前 HH:mm;其他原样返回。
92
+ * 与 info2 `getServeStartTime` 等价。
93
+ */
94
+ function getServeStartTime(startTime) {
95
+ if (startTime === 'now') return (0, _dayjs.default)().format('HH:mm');
96
+ return startTime || '';
97
+ }
98
+
99
+ /**
100
+ * 计算商品的开始结束时间(统一为 dayjs 实例)。
101
+ * 与 info2 `getServiceTimes` 行为等价:
102
+ * - 跨日商品:startDate = start_date + start_time,endDate = _extend.end_date 原样
103
+ * - session 商品:从 _extend.other.session 取 start_at / end_at
104
+ * - 普通商品:startDate + duration(含 flexible 处理)
105
+ */
106
+ function getServiceTimes(service) {
107
+ const startDate = (0, _dayjs.default)(`${(0, _dayjs.default)(service?._extend?.start_date).format('YYYY-MM-DD')} ${getServeStartTime(service?._extend?.start_time)}`);
108
+ if (isMultiDayProduct(service)) {
109
+ const startTime = getServeStartTime(service?._extend?.start_time);
110
+ const endDateRaw = service?._extend?.end_date ?? service?._extend?.endDate;
111
+ const endBase = (0, _dayjs.default)(endDateRaw);
112
+ // 跨日结束日保留与开始相同的时刻(如 11:24),避免 end_date 仅日期时被解析为 00:00
113
+ const endDate = endBase.isValid() ? (0, _dayjs.default)(`${endBase.format('YYYY-MM-DD')} ${startTime}`) : endBase;
114
+ return {
115
+ startDate,
116
+ endDate
117
+ };
118
+ }
119
+ const session = service?._extend?.other?.session;
120
+ if (isSessionProduct(service) && session) {
121
+ return {
122
+ startDate: (0, _dayjs.default)(session.start_at),
123
+ endDate: (0, _dayjs.default)(session.end_at)
124
+ };
125
+ }
126
+ const endDate = startDate.add(_flexible.flexibleObj.getValue(service?._extend?.duration), 'minute');
127
+ return {
128
+ startDate,
129
+ endDate
130
+ };
131
+ }
132
+
133
+ /**
134
+ * 跨日预约相关:把 _extend.start_date / end_date 都对齐到 dayjs startOf('day')。
135
+ * 与 info2 `formatDayDate` 等价。
136
+ */
137
+ function formatDayDate(_extend) {
138
+ return {
139
+ start_date: (0, _dayjs.default)(_extend?.start_date).startOf('day'),
140
+ end_date: (0, _dayjs.default)(_extend?.end_date).startOf('day')
141
+ };
142
+ }
143
+
144
+ /**
145
+ * 计算跨日预约时长:
146
+ * - type='days' → end - start 的天数
147
+ * - type='minutes' → end - start 的分钟数
148
+ * 与 info2 `getDays` 等价。
149
+ */
150
+ function getDays(cacheItem, type) {
151
+ if (type === 'days') {
152
+ const {
153
+ start_date,
154
+ end_date
155
+ } = formatDayDate(cacheItem._extend);
156
+ return end_date.diff(start_date, 'day');
157
+ }
158
+ const startDate = (0, _dayjs.default)(cacheItem?._extend?.start_date);
159
+ const endDate = (0, _dayjs.default)(cacheItem?._extend?.end_date);
160
+ return endDate.diff(startDate, type);
161
+ }
@@ -0,0 +1,42 @@
1
+ import dayjs from 'dayjs';
2
+ import { getDurationValue } from './flexible';
3
+ export interface TimeSlice {
4
+ label: string;
5
+ value: string;
6
+ }
7
+ export interface DurationSlice {
8
+ label: string;
9
+ value: number;
10
+ }
11
+ export interface TimeSlicesResult {
12
+ timeSlices: TimeSlice[];
13
+ durationSlicesBasedOnTime: DurationSlice[];
14
+ }
15
+ /**
16
+ * 把一天切成等长时间槽,输出 timeSlices(开始时间标签)与 durationSlicesBasedOnTime(基于切片的时长选项)。
17
+ *
18
+ * 与 info2 `sliceDayIntoFiveMinutes` 行为等价;为了不依赖 `locales`,label 输出原始时间字符串('08:00 AM' / '90'),
19
+ * UI 侧需要本地化展示时可基于 value 自行包装。
20
+ *
21
+ * @param config booking config `basic.service_time`,{ value: minutes }
22
+ * @param isDay 是否跨日预约(true 时按 1~30 天切片)
23
+ */
24
+ export declare function sliceDayIntoFiveMinutes(config: {
25
+ value?: number;
26
+ } | undefined | null, isDay?: boolean): TimeSlicesResult;
27
+ /**
28
+ * 取「下一个 duration 选项」:优先用 defaultValue;否则在 array 中找匹配的;找不到取第一个。
29
+ * 与 info2 `findNextDuration` 等价。
30
+ */
31
+ export declare function findNextDuration(current: {
32
+ value?: number;
33
+ } | undefined, array: DurationSlice[], defaultValue?: number): number | undefined;
34
+ /** 取首选 time slice:若指定 date(HH:mm)则找第一个 >= date 的;否则第一个。 */
35
+ export declare function findNextSlice(params: {
36
+ timeSlices: TimeSlice[];
37
+ index?: number;
38
+ date?: string;
39
+ }): string | undefined;
40
+ /** 取 endDate;duration='flexible' 时取 endDate 与店铺营业时间的较小值,否则 startDate + duration 分钟。 */
41
+ export declare function getEndDate(startDate: dayjs.Dayjs, duration: string | number, endDate: any, shopOpeningHours?: string): dayjs.Dayjs;
42
+ export { getDurationValue };