@pisell/pisellos 0.0.567 → 0.0.569

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  3. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/adapter/walletPass/utils.js +7 -7
  6. package/dist/model/strategy/strategy-example.js +5 -19
  7. package/dist/modules/BaseModule.d.ts +2 -2
  8. package/dist/modules/BaseModule.js +4 -4
  9. package/dist/modules/BookingContext/index.d.ts +48 -0
  10. package/dist/modules/BookingContext/index.js +566 -0
  11. package/dist/modules/BookingContext/types.d.ts +102 -0
  12. package/dist/modules/BookingContext/types.js +51 -0
  13. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  14. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  15. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  16. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  17. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  18. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  19. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  20. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  21. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  22. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  23. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  24. package/dist/modules/BookingContext/utils/index.js +11 -0
  25. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  26. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  27. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  28. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  29. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  30. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  31. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  32. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  33. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  34. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  35. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  36. package/dist/modules/BookingContext/utils/resources.js +486 -0
  37. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  38. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  39. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  40. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  41. package/dist/modules/Cart/index.js +0 -3
  42. package/dist/modules/Cart/utils/cartProduct.js +26 -6
  43. package/dist/modules/Cart/utils/changePrice.js +27 -20
  44. package/dist/modules/Customer/index.d.ts +20 -0
  45. package/dist/modules/Customer/index.js +172 -83
  46. package/dist/modules/Customer/types.d.ts +2 -0
  47. package/dist/modules/Date/index.js +1 -5
  48. package/dist/modules/Discount/index.d.ts +2 -1
  49. package/dist/modules/Discount/index.js +37 -12
  50. package/dist/modules/Discount/types.d.ts +1 -0
  51. package/dist/modules/OpenData/index.d.ts +8 -0
  52. package/dist/modules/OpenData/index.js +35 -17
  53. package/dist/modules/Order/index.d.ts +449 -24
  54. package/dist/modules/Order/index.js +5437 -608
  55. package/dist/modules/Order/types.d.ts +693 -88
  56. package/dist/modules/Order/types.js +68 -1
  57. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  58. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  59. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  60. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  61. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  62. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  63. package/dist/modules/Order/utils.d.ts +167 -18
  64. package/dist/modules/Order/utils.js +960 -165
  65. package/dist/modules/Payment/index.d.ts +10 -9
  66. package/dist/modules/Payment/index.js +508 -874
  67. package/dist/modules/Payment/types.d.ts +40 -16
  68. package/dist/modules/Payment/utils.d.ts +1 -1
  69. package/dist/modules/Payment/utils.js +4 -3
  70. package/dist/modules/Payment/walletpass.js +48 -34
  71. package/dist/modules/Product/types.d.ts +29 -7
  72. package/dist/modules/ProductList/index.d.ts +17 -13
  73. package/dist/modules/ProductList/index.js +184 -74
  74. package/dist/modules/ProductList/types.d.ts +17 -0
  75. package/dist/modules/Quotation/index.d.ts +22 -2
  76. package/dist/modules/Quotation/index.js +108 -42
  77. package/dist/modules/Quotation/types.d.ts +19 -0
  78. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  79. package/dist/modules/ResourcePlanner/index.js +181 -0
  80. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  81. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  82. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  83. package/dist/modules/ResourcePlanner/types.js +1 -0
  84. package/dist/modules/Rules/index.d.ts +8 -10
  85. package/dist/modules/Rules/index.js +219 -114
  86. package/dist/modules/Rules/types.d.ts +14 -3
  87. package/dist/modules/SalesSummary/index.d.ts +23 -26
  88. package/dist/modules/SalesSummary/index.js +152 -46
  89. package/dist/modules/SalesSummary/types.d.ts +9 -1
  90. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  91. package/dist/modules/SalesSummary/utils.js +803 -163
  92. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -7
  93. package/dist/modules/Schedule/index.d.ts +18 -5
  94. package/dist/modules/Schedule/index.js +78 -24
  95. package/dist/modules/Schedule/types.d.ts +2 -0
  96. package/dist/modules/Schedule/utils.js +0 -1
  97. package/dist/modules/Step/index.js +0 -1
  98. package/dist/modules/Summary/index.js +4 -3
  99. package/dist/modules/SurchargeList/index.d.ts +18 -0
  100. package/dist/modules/SurchargeList/index.js +185 -0
  101. package/dist/modules/SurchargeList/types.d.ts +15 -0
  102. package/dist/modules/SurchargeList/types.js +1 -0
  103. package/dist/modules/index.d.ts +3 -0
  104. package/dist/modules/index.js +4 -1
  105. package/dist/plugins/app.d.ts +2 -0
  106. package/dist/plugins/request.d.ts +1 -0
  107. package/dist/plugins/request.js +1 -4
  108. package/dist/plugins/window.js +2 -6
  109. package/dist/server/index.d.ts +462 -8
  110. package/dist/server/index.js +6137 -714
  111. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  112. package/dist/server/modules/floor-plan/index.js +595 -0
  113. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  114. package/dist/server/modules/floor-plan/types.js +13 -0
  115. package/dist/server/modules/index.d.ts +7 -2
  116. package/dist/server/modules/index.js +6 -0
  117. package/dist/server/modules/menu/index.js +32 -41
  118. package/dist/server/modules/order/index.d.ts +207 -14
  119. package/dist/server/modules/order/index.js +2326 -379
  120. package/dist/server/modules/order/types.d.ts +76 -5
  121. package/dist/server/modules/order/types.js +14 -1
  122. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  123. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  124. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  125. package/dist/server/modules/payment/index.d.ts +28 -0
  126. package/dist/server/modules/payment/index.js +305 -0
  127. package/dist/server/modules/payment/types.d.ts +9 -0
  128. package/dist/server/modules/payment/types.js +1 -0
  129. package/dist/server/modules/products/index.d.ts +105 -14
  130. package/dist/server/modules/products/index.js +1397 -540
  131. package/dist/server/modules/products/types.d.ts +34 -1
  132. package/dist/server/modules/products/types.js +4 -0
  133. package/dist/server/modules/quotation/index.d.ts +39 -0
  134. package/dist/server/modules/quotation/index.js +289 -86
  135. package/dist/server/modules/resource/index.d.ts +2 -3
  136. package/dist/server/modules/resource/index.js +105 -84
  137. package/dist/server/modules/schedule/index.d.ts +6 -4
  138. package/dist/server/modules/schedule/index.js +137 -114
  139. package/dist/server/test.json +713 -0
  140. package/dist/server/types.d.ts +2 -0
  141. package/dist/server/utils/product.js +2 -3
  142. package/dist/server/utils/small-ticket.d.ts +71 -0
  143. package/dist/server/utils/small-ticket.js +963 -0
  144. package/dist/solution/BaseSales/index.d.ts +378 -0
  145. package/dist/solution/BaseSales/index.js +4006 -0
  146. package/dist/solution/BaseSales/types.d.ts +394 -0
  147. package/dist/solution/BaseSales/types.js +40 -0
  148. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  149. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  150. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  151. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  152. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  153. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  154. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  155. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  156. package/dist/solution/BaseSales/utils.d.ts +40 -0
  157. package/dist/solution/BaseSales/utils.js +263 -0
  158. package/dist/solution/BookingByStep/index.js +7 -59
  159. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  160. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  161. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  162. package/dist/solution/BookingTicket/index.d.ts +393 -24
  163. package/dist/solution/BookingTicket/index.js +2506 -445
  164. package/dist/solution/BookingTicket/types.d.ts +191 -6
  165. package/dist/solution/BookingTicket/types.js +83 -10
  166. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  167. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  168. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  169. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  170. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  171. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  172. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  173. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  174. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  175. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  176. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  177. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  178. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  179. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  180. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  181. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  182. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  183. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +41 -1
  184. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  185. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  186. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  187. package/dist/solution/BookingTicket/utils/scan/handleScan.js +36 -34
  188. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  189. package/dist/solution/BookingTicket/utils/scan/index.js +26 -18
  190. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  191. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  192. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  193. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  194. package/dist/solution/BuyTickets/index.js +9 -12
  195. package/dist/solution/Checkout/index.d.ts +1 -0
  196. package/dist/solution/Checkout/index.js +199 -277
  197. package/dist/solution/Checkout/utils/index.js +8 -20
  198. package/dist/solution/RegisterAndLogin/config.js +2 -10
  199. package/dist/solution/RegisterAndLogin/index.js +30 -76
  200. package/dist/solution/Sales/index.d.ts +50 -5
  201. package/dist/solution/Sales/index.js +484 -92
  202. package/dist/solution/Sales/types.d.ts +26 -2
  203. package/dist/solution/ScanOrder/index.d.ts +27 -21
  204. package/dist/solution/ScanOrder/index.js +509 -454
  205. package/dist/solution/ScanOrder/types.d.ts +33 -11
  206. package/dist/solution/ScanOrder/types.js +4 -5
  207. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  208. package/dist/solution/ScanOrder/utils.js +109 -34
  209. package/dist/solution/ShopDiscount/index.js +6 -11
  210. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  211. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  212. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  213. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  214. package/dist/solution/VenueBooking/index.d.ts +34 -20
  215. package/dist/solution/VenueBooking/index.js +630 -505
  216. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  217. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  218. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  219. package/dist/solution/index.d.ts +2 -0
  220. package/dist/solution/index.js +3 -1
  221. package/dist/types/index.d.ts +11 -1
  222. package/dist/utils/task.js +15 -18
  223. package/dist/utils/watch.js +0 -1
  224. package/lib/apis/picoding.js +2 -0
  225. package/lib/core/index.js +130 -131
  226. package/lib/effects/index.js +46 -57
  227. package/lib/index.js +92 -53
  228. package/lib/model/index.js +14 -21
  229. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  230. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  231. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  232. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  233. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  234. package/lib/model/strategy/adapter/index.js +100 -64
  235. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  236. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  237. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  238. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  239. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  240. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  241. package/lib/model/strategy/adapter/promotion/evaluator.js +383 -232
  242. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  243. package/lib/model/strategy/adapter/promotion/index.js +1 -49
  244. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  245. package/lib/model/strategy/adapter/type.js +4 -16
  246. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  247. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  248. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  249. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  250. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  251. package/lib/model/strategy/adapter/walletPass/utils.js +654 -402
  252. package/lib/model/strategy/engine.js +270 -168
  253. package/lib/model/strategy/index.js +49 -34
  254. package/lib/model/strategy/strategy-example.js +243 -239
  255. package/lib/model/strategy/type.js +100 -40
  256. package/lib/modules/Account/index.js +39 -53
  257. package/lib/modules/Account/types.js +20 -33
  258. package/lib/modules/AccountList/index.js +116 -154
  259. package/lib/modules/AccountList/types.js +30 -31
  260. package/lib/modules/AccountList/utils.js +18 -30
  261. package/lib/modules/BaseModule.d.ts +2 -2
  262. package/lib/modules/BaseModule.js +26 -49
  263. package/lib/modules/BookingContext/index.d.ts +48 -0
  264. package/lib/modules/BookingContext/index.js +390 -0
  265. package/lib/modules/BookingContext/types.d.ts +102 -0
  266. package/lib/modules/BookingContext/types.js +48 -0
  267. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  268. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +286 -0
  269. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  270. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +148 -0
  271. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  272. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +242 -0
  273. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  274. package/lib/modules/BookingContext/utils/flexible.js +63 -0
  275. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  276. package/lib/modules/BookingContext/utils/formatResourceList.js +35 -0
  277. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  278. package/lib/modules/BookingContext/utils/index.js +126 -0
  279. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  280. package/lib/modules/BookingContext/utils/noResource.js +78 -0
  281. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  282. package/lib/modules/BookingContext/utils/orderLineDisplay.js +29 -0
  283. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  284. package/lib/modules/BookingContext/utils/productExtend.js +330 -0
  285. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  286. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  287. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  288. package/lib/modules/BookingContext/utils/resourceSelection.js +24 -0
  289. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  290. package/lib/modules/BookingContext/utils/resources.js +419 -0
  291. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  292. package/lib/modules/BookingContext/utils/serviceTimes.js +161 -0
  293. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  294. package/lib/modules/BookingContext/utils/timeSlices.js +114 -0
  295. package/lib/modules/Cart/index.js +170 -124
  296. package/lib/modules/Cart/types.js +46 -51
  297. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  298. package/lib/modules/Cart/utils/cartDate.js +56 -61
  299. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  300. package/lib/modules/Cart/utils/cartNote.js +27 -32
  301. package/lib/modules/Cart/utils/cartProduct.js +331 -244
  302. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  303. package/lib/modules/Cart/utils/cartResource.js +72 -78
  304. package/lib/modules/Cart/utils/changePrice.js +37 -67
  305. package/lib/modules/Cart/utils/index.js +106 -48
  306. package/lib/modules/Customer/constants.js +13 -34
  307. package/lib/modules/Customer/index.d.ts +20 -0
  308. package/lib/modules/Customer/index.js +270 -154
  309. package/lib/modules/Customer/types.d.ts +2 -0
  310. package/lib/modules/Customer/types.js +38 -35
  311. package/lib/modules/Date/index.js +116 -115
  312. package/lib/modules/Date/types.js +16 -28
  313. package/lib/modules/Date/utils.js +174 -123
  314. package/lib/modules/Discount/index.d.ts +2 -1
  315. package/lib/modules/Discount/index.js +133 -113
  316. package/lib/modules/Discount/types.d.ts +1 -0
  317. package/lib/modules/Discount/types.js +9 -31
  318. package/lib/modules/Guests/index.js +30 -56
  319. package/lib/modules/Guests/types.js +23 -33
  320. package/lib/modules/Holder/index.js +209 -189
  321. package/lib/modules/Holder/types.js +4 -16
  322. package/lib/modules/Holder/utils.js +20 -49
  323. package/lib/modules/OpenData/index.d.ts +8 -0
  324. package/lib/modules/OpenData/index.js +81 -74
  325. package/lib/modules/OpenData/types.js +4 -16
  326. package/lib/modules/OpenData/utils.js +44 -78
  327. package/lib/modules/Order/index.d.ts +449 -24
  328. package/lib/modules/Order/index.js +3834 -489
  329. package/lib/modules/Order/types.d.ts +693 -88
  330. package/lib/modules/Order/types.js +78 -33
  331. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  332. package/lib/modules/Order/utils/bundleDiscountHydration.js +106 -0
  333. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  334. package/lib/modules/Order/utils/manualProductDiscount.js +207 -0
  335. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  336. package/lib/modules/Order/utils/orderCollectionIdentity.js +353 -0
  337. package/lib/modules/Order/utils.d.ts +167 -18
  338. package/lib/modules/Order/utils.js +1247 -345
  339. package/lib/modules/Payment/cash.js +20 -33
  340. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  341. package/lib/modules/Payment/eftpos.js +16 -30
  342. package/lib/modules/Payment/index.d.ts +10 -9
  343. package/lib/modules/Payment/index.js +542 -502
  344. package/lib/modules/Payment/mx51.js +1 -0
  345. package/lib/modules/Payment/types.d.ts +40 -16
  346. package/lib/modules/Payment/types.js +216 -107
  347. package/lib/modules/Payment/utils.d.ts +1 -1
  348. package/lib/modules/Payment/utils.js +53 -49
  349. package/lib/modules/Payment/walletpass.js +231 -203
  350. package/lib/modules/Product/index.js +51 -46
  351. package/lib/modules/Product/types.d.ts +29 -7
  352. package/lib/modules/Product/types.js +4 -16
  353. package/lib/modules/Product/utils.js +32 -33
  354. package/lib/modules/ProductList/index.d.ts +17 -13
  355. package/lib/modules/ProductList/index.js +160 -118
  356. package/lib/modules/ProductList/types.d.ts +17 -0
  357. package/lib/modules/ProductList/types.js +9 -31
  358. package/lib/modules/Quotation/index.d.ts +22 -2
  359. package/lib/modules/Quotation/index.js +123 -89
  360. package/lib/modules/Quotation/types.d.ts +19 -0
  361. package/lib/modules/Quotation/types.js +4 -16
  362. package/lib/modules/Resource/index.js +27 -59
  363. package/lib/modules/Resource/types.js +22 -32
  364. package/lib/modules/Resource/utils.js +30 -38
  365. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  366. package/lib/modules/ResourcePlanner/index.js +147 -0
  367. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  368. package/lib/modules/ResourcePlanner/planner.js +895 -0
  369. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  370. package/lib/modules/ResourcePlanner/types.js +5 -0
  371. package/lib/modules/Rules/index.d.ts +8 -10
  372. package/lib/modules/Rules/index.js +1286 -894
  373. package/lib/modules/Rules/types.d.ts +14 -3
  374. package/lib/modules/Rules/types.js +17 -40
  375. package/lib/modules/SalesSummary/index.d.ts +23 -26
  376. package/lib/modules/SalesSummary/index.js +130 -71
  377. package/lib/modules/SalesSummary/types.d.ts +9 -1
  378. package/lib/modules/SalesSummary/types.js +4 -16
  379. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  380. package/lib/modules/SalesSummary/utils.js +738 -250
  381. package/lib/modules/ScanOrderLogger/index.js +59 -79
  382. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  383. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  384. package/lib/modules/ScanOrderLogger/types.js +4 -16
  385. package/lib/modules/Schedule/getDateIsInSchedule.js +345 -171
  386. package/lib/modules/Schedule/index.d.ts +18 -5
  387. package/lib/modules/Schedule/index.js +139 -114
  388. package/lib/modules/Schedule/type.js +4 -16
  389. package/lib/modules/Schedule/types.d.ts +2 -0
  390. package/lib/modules/Schedule/types.js +4 -16
  391. package/lib/modules/Schedule/utils.js +433 -291
  392. package/lib/modules/Step/index.js +40 -52
  393. package/lib/modules/Step/tyeps.js +4 -16
  394. package/lib/modules/Summary/index.js +66 -70
  395. package/lib/modules/Summary/types.js +4 -16
  396. package/lib/modules/Summary/utils.js +782 -429
  397. package/lib/modules/SurchargeList/index.d.ts +18 -0
  398. package/lib/modules/SurchargeList/index.js +95 -0
  399. package/lib/modules/SurchargeList/types.d.ts +15 -0
  400. package/lib/modules/SurchargeList/types.js +5 -0
  401. package/lib/modules/index.d.ts +3 -0
  402. package/lib/modules/index.js +245 -57
  403. package/lib/plugins/app.d.ts +2 -0
  404. package/lib/plugins/app.js +4 -16
  405. package/lib/plugins/index.js +36 -25
  406. package/lib/plugins/request.d.ts +1 -0
  407. package/lib/plugins/request.js +137 -126
  408. package/lib/plugins/shopStore.js +4 -16
  409. package/lib/plugins/user.js +4 -16
  410. package/lib/plugins/window.js +171 -179
  411. package/lib/server/index.d.ts +462 -8
  412. package/lib/server/index.js +4668 -713
  413. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  414. package/lib/server/modules/floor-plan/index.js +306 -0
  415. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  416. package/lib/server/modules/floor-plan/types.js +19 -0
  417. package/lib/server/modules/index.d.ts +7 -2
  418. package/lib/server/modules/index.js +106 -59
  419. package/lib/server/modules/menu/index.js +146 -122
  420. package/lib/server/modules/menu/types.js +18 -31
  421. package/lib/server/modules/order/index.d.ts +207 -14
  422. package/lib/server/modules/order/index.js +1463 -316
  423. package/lib/server/modules/order/types.d.ts +76 -5
  424. package/lib/server/modules/order/types.js +117 -32
  425. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  426. package/lib/server/modules/order/utils/filterBookings.js +288 -146
  427. package/lib/server/modules/order/utils/filterOrders.js +318 -64
  428. package/lib/server/modules/payment/index.d.ts +28 -0
  429. package/lib/server/modules/payment/index.js +168 -0
  430. package/lib/server/modules/payment/types.d.ts +9 -0
  431. package/lib/server/modules/payment/types.js +5 -0
  432. package/lib/server/modules/products/index.d.ts +105 -14
  433. package/lib/server/modules/products/index.js +969 -383
  434. package/lib/server/modules/products/types.d.ts +34 -1
  435. package/lib/server/modules/products/types.js +44 -34
  436. package/lib/server/modules/quotation/index.d.ts +39 -0
  437. package/lib/server/modules/quotation/index.js +220 -77
  438. package/lib/server/modules/quotation/types.js +21 -31
  439. package/lib/server/modules/resource/index.d.ts +2 -3
  440. package/lib/server/modules/resource/index.js +269 -214
  441. package/lib/server/modules/resource/types.js +42 -33
  442. package/lib/server/modules/schedule/index.d.ts +6 -4
  443. package/lib/server/modules/schedule/index.js +158 -132
  444. package/lib/server/modules/schedule/types.js +14 -21
  445. package/lib/server/modules/schedule/utils.js +334 -163
  446. package/lib/server/test.json +713 -0
  447. package/lib/server/types.d.ts +2 -0
  448. package/lib/server/types.js +4 -16
  449. package/lib/server/utils/index.js +25 -23
  450. package/lib/server/utils/product.js +197 -140
  451. package/lib/server/utils/schedule.js +34 -41
  452. package/lib/server/utils/small-ticket.d.ts +71 -0
  453. package/lib/server/utils/small-ticket.js +926 -0
  454. package/lib/server/utils/time.js +40 -49
  455. package/lib/solution/BaseSales/index.d.ts +378 -0
  456. package/lib/solution/BaseSales/index.js +2367 -0
  457. package/lib/solution/BaseSales/types.d.ts +394 -0
  458. package/lib/solution/BaseSales/types.js +47 -0
  459. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  460. package/lib/solution/BaseSales/utils/cartPromotion.js +1155 -0
  461. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  462. package/lib/solution/BaseSales/utils/parseSalesResponse.js +140 -0
  463. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  464. package/lib/solution/BaseSales/utils/quotationPrice.js +231 -0
  465. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  466. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +215 -0
  467. package/lib/solution/BaseSales/utils.d.ts +40 -0
  468. package/lib/solution/BaseSales/utils.js +259 -0
  469. package/lib/solution/BookingByStep/index.js +1530 -1343
  470. package/lib/solution/BookingByStep/types.js +40 -99
  471. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  472. package/lib/solution/BookingByStep/utils/products.js +42 -52
  473. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  474. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  475. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  476. package/lib/solution/BookingTicket/index.d.ts +393 -24
  477. package/lib/solution/BookingTicket/index.js +1459 -160
  478. package/lib/solution/BookingTicket/types.d.ts +191 -6
  479. package/lib/solution/BookingTicket/types.js +101 -66
  480. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  481. package/lib/solution/BookingTicket/utils/addProductDecision.js +353 -0
  482. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  483. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +94 -0
  484. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  485. package/lib/solution/BookingTicket/utils/bookingStatus.js +136 -0
  486. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  487. package/lib/solution/BookingTicket/utils/cartView.js +200 -0
  488. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  489. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  490. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  491. package/lib/solution/BookingTicket/utils/orderCustomer.js +35 -0
  492. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  493. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +387 -0
  494. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  495. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +220 -0
  496. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  497. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +85 -80
  498. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  499. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +64 -0
  500. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  501. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -80
  502. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  503. package/lib/solution/BookingTicket/utils/scan/index.js +103 -95
  504. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  505. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  506. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +115 -0
  507. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  508. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +83 -0
  509. package/lib/solution/BuyTickets/index.js +67 -70
  510. package/lib/solution/BuyTickets/types.js +22 -38
  511. package/lib/solution/Checkout/index.d.ts +1 -0
  512. package/lib/solution/Checkout/index.js +1461 -1169
  513. package/lib/solution/Checkout/types.js +91 -61
  514. package/lib/solution/Checkout/utils/index.js +228 -159
  515. package/lib/solution/PlaceOrder/index.js +55 -0
  516. package/lib/solution/RegisterAndLogin/config.js +495 -470
  517. package/lib/solution/RegisterAndLogin/index.js +633 -630
  518. package/lib/solution/RegisterAndLogin/types.js +189 -76
  519. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  520. package/lib/solution/Sales/index.d.ts +50 -5
  521. package/lib/solution/Sales/index.js +495 -220
  522. package/lib/solution/Sales/types.d.ts +26 -2
  523. package/lib/solution/Sales/types.js +27 -33
  524. package/lib/solution/ScanOrder/index.d.ts +27 -21
  525. package/lib/solution/ScanOrder/index.js +908 -904
  526. package/lib/solution/ScanOrder/types.d.ts +33 -11
  527. package/lib/solution/ScanOrder/types.js +33 -34
  528. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  529. package/lib/solution/ScanOrder/utils.js +457 -344
  530. package/lib/solution/ShopDiscount/index.js +230 -236
  531. package/lib/solution/ShopDiscount/types.js +15 -37
  532. package/lib/solution/ShopDiscount/utils.js +309 -172
  533. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  534. package/lib/solution/UnifiedBookingSales/index.js +1050 -0
  535. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  536. package/lib/solution/UnifiedBookingSales/types.js +14 -0
  537. package/lib/solution/VenueBooking/index.d.ts +34 -20
  538. package/lib/solution/VenueBooking/index.js +982 -950
  539. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  540. package/lib/solution/VenueBooking/types.js +20 -40
  541. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  542. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  543. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  544. package/lib/solution/VenueBooking/utils/slotMerge.js +96 -108
  545. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  546. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  547. package/lib/solution/VenueBooking/utils.js +130 -67
  548. package/lib/solution/index.d.ts +2 -0
  549. package/lib/solution/index.js +124 -37
  550. package/lib/store/createStore.js +32 -29
  551. package/lib/types/index.d.ts +11 -1
  552. package/lib/types/index.js +4 -16
  553. package/lib/utils/task.js +36 -36
  554. package/lib/utils/watch.js +81 -47
  555. package/package.json +2 -1
  556. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  557. package/lib/solution/Checkout/appointmentDemo.json +0 -1
@@ -0,0 +1,144 @@
1
+ /**
2
+ * 把 `/order/sales/{id}` 响应(OrderData)解析为 ISalesDetail。
3
+ *
4
+ * - 纯函数:不依赖任何运行时模块/插件,便于单测与 view-model 适配
5
+ * - products 保留 tempOrder / 后端详情原字段,仅规范化集合身份并浅拷贝,避免丢失 product_sku 等协议字段
6
+ * - bookings 平铺保留服务端原顺序,同时输出 byProductUid 反查表与 rootBooking
7
+ * - header 收敛"非数组顶层字段",便于 ticketBooking view-model 直接消费
8
+ *
9
+ * 设计原则参考 `.cursor/rules/data-field-semantics.mdc`:
10
+ * - 字段命名以《统一 Sales 数据协议》为准(OrderData 类型)
11
+ * - root booking 以 `parent_id === 0` 判定,沿用 ticketBooking 现有约定
12
+ * (`packages/private-materials/src/components/ticketBooking/index.tsx`:
13
+ * `booking.parent_id === 0 ? 'list' : 'detail'`)
14
+ * - 不在此处发明等价关系;UI 侧(ticketBooking)若需要别的字段,由 view-model 适配层做转换
15
+ */
16
+ import type { BaseSalesOrderProduct } from '../types';
17
+ export interface ISalesDetailHeader {
18
+ order_id: number | string | null;
19
+ order_number?: string;
20
+ shop_order_number?: string;
21
+ shop_full_order_number?: string;
22
+ type?: string;
23
+ business_code?: string;
24
+ platform?: string;
25
+ sales_channel?: string;
26
+ order_sales_channel?: string;
27
+ vouchers?: any[];
28
+ status?: string;
29
+ payment_status?: string;
30
+ shipping_status?: string;
31
+ customer_id?: number | string | null;
32
+ customer_name?: string;
33
+ country_calling_code?: string;
34
+ phone?: string;
35
+ email?: string;
36
+ is_price_include_tax?: 0 | 1;
37
+ tax_title?: string;
38
+ tax_country_code?: string;
39
+ currency_code?: string;
40
+ currency_symbol?: string;
41
+ currency_format?: string;
42
+ is_deposit?: 0 | 1;
43
+ deposit_amount?: string;
44
+ shop_discount?: string;
45
+ surcharge_fee?: string;
46
+ note?: string;
47
+ schedule_date?: string;
48
+ created_at?: string;
49
+ updated_at?: string | number;
50
+ metadata?: Record<string, any> | null;
51
+ total_amount?: string | number;
52
+ [key: string]: any;
53
+ }
54
+ export interface ISalesDetailCustomer {
55
+ id: number | string | null;
56
+ name: string;
57
+ phone?: string;
58
+ email?: string;
59
+ country_calling_code?: string;
60
+ [key: string]: any;
61
+ }
62
+ export interface ISalesBooking {
63
+ schedule_event_id?: number | null;
64
+ booking_id?: string;
65
+ appointment_status?: string;
66
+ status?: string;
67
+ start_date?: string;
68
+ start_time?: string;
69
+ end_date?: string;
70
+ end_time?: string;
71
+ duration?: number;
72
+ sub_type?: string;
73
+ number?: number;
74
+ resources?: any[];
75
+ product?: any;
76
+ relation_products?: any[];
77
+ relation_type?: string;
78
+ relation_id?: number;
79
+ parent_id?: number | null;
80
+ item_type?: string;
81
+ product_uid?: string;
82
+ metadata?: Record<string, any> | null;
83
+ [key: string]: any;
84
+ }
85
+ export interface ISalesPayment {
86
+ order_payment_id?: number | null;
87
+ custom_payment_id?: number;
88
+ code?: string;
89
+ name?: string;
90
+ type?: string;
91
+ voucher_id?: number | null;
92
+ amount: string;
93
+ origin_amount?: string;
94
+ rounding_amount?: string;
95
+ status?: string;
96
+ payment_time?: string | null;
97
+ service_charge?: Record<string, any> | null;
98
+ metadata?: Record<string, any> | null;
99
+ [key: string]: any;
100
+ }
101
+ export interface ISalesSurcharge {
102
+ order_surcharge_id?: number | null;
103
+ surcharge_id?: number;
104
+ type?: string;
105
+ name?: Record<string, string>;
106
+ description?: Record<string, string>;
107
+ percentage?: string | null;
108
+ fixed?: string | null;
109
+ amount?: string;
110
+ [key: string]: any;
111
+ }
112
+ export interface ISalesDetail {
113
+ /** 顶部订单字段集合(不含 products / bookings / payments / surcharges 等大数组) */
114
+ header: ISalesDetailHeader;
115
+ /** 商品行快照(保留 tempOrder / 后端详情原字段) */
116
+ products: BaseSalesOrderProduct[];
117
+ /** 全部 bookings,按服务端原始顺序输出(含 root + child) */
118
+ bookings: ISalesBooking[];
119
+ /** root booking(parent_id === 0),多个时取首个,无则为 null */
120
+ rootBooking: ISalesBooking | null;
121
+ /** product_uid → bookings 反查表,便于商品行 ↔ booking 映射 */
122
+ bookingsByProductUid: Record<string, ISalesBooking[]>;
123
+ /** 支付列表 */
124
+ payments: ISalesPayment[];
125
+ /** 附加费 */
126
+ surcharges: ISalesSurcharge[];
127
+ /** 订单级折扣列表 */
128
+ discount_list: any[];
129
+ /** 客户信息(按 header 抽取,必要时透传 raw.customer) */
130
+ customer: ISalesDetailCustomer | null;
131
+ /** 服务端 summary(仅输出) */
132
+ summary: Record<string, any>;
133
+ /** 规范化后的响应快照,方便 UI 兜底使用 */
134
+ raw: Record<string, any>;
135
+ }
136
+ /**
137
+ * 将 `/order/sales/{id}` 响应解析为 ISalesDetail。
138
+ *
139
+ * 注意:
140
+ * - 入参允许是 `{ data: OrderData }` 或直接 `OrderData`,自动识别。
141
+ * - products/bookings/payments 在此补齐集合身份;其余 runtime 字段由 OrderModule hydrate 负责。
142
+ * - 不做远程请求;不修改入参;返回新对象。
143
+ */
144
+ export declare function parseSalesResponse(input: Record<string, any> | null | undefined): ISalesDetail;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseSalesResponse = parseSalesResponse;
7
+ var _orderCollectionIdentity = require("../../../modules/Order/utils/orderCollectionIdentity");
8
+ /**
9
+ * 把 `/order/sales/{id}` 响应(OrderData)解析为 ISalesDetail。
10
+ *
11
+ * - 纯函数:不依赖任何运行时模块/插件,便于单测与 view-model 适配
12
+ * - products 保留 tempOrder / 后端详情原字段,仅规范化集合身份并浅拷贝,避免丢失 product_sku 等协议字段
13
+ * - bookings 平铺保留服务端原顺序,同时输出 byProductUid 反查表与 rootBooking
14
+ * - header 收敛"非数组顶层字段",便于 ticketBooking view-model 直接消费
15
+ *
16
+ * 设计原则参考 `.cursor/rules/data-field-semantics.mdc`:
17
+ * - 字段命名以《统一 Sales 数据协议》为准(OrderData 类型)
18
+ * - root booking 以 `parent_id === 0` 判定,沿用 ticketBooking 现有约定
19
+ * (`packages/private-materials/src/components/ticketBooking/index.tsx`:
20
+ * `booking.parent_id === 0 ? 'list' : 'detail'`)
21
+ * - 不在此处发明等价关系;UI 侧(ticketBooking)若需要别的字段,由 view-model 适配层做转换
22
+ */
23
+
24
+ /** OrderData 中除大数组外的"顶层 header 字段"白名单,按需扩展。 */
25
+ const HEADER_KEYS = ['order_id', 'order_number', 'shop_order_number', 'shop_full_order_number', 'type', 'business_code', 'platform', 'sales_channel', 'order_sales_channel', 'vouchers', 'status', 'payment_status', 'shipping_status', 'customer_id', 'customer_name', 'country_calling_code', 'phone', 'email', 'is_price_include_tax', 'tax_title', 'tax_country_code', 'currency_code', 'currency_symbol', 'currency_format', 'is_deposit', 'deposit_amount', 'shop_discount', 'surcharge_fee', 'note', 'schedule_date', 'created_at', 'updated_at', 'metadata', 'total_amount', 'shop_id', 'create_date', 'holder', 'relation_forms', 'contacts', 'contacts_info'];
26
+ function pickHeader(raw) {
27
+ const header = {
28
+ order_id: raw?.order_id ?? null
29
+ };
30
+ if (!raw || typeof raw !== 'object') return header;
31
+ for (const key of HEADER_KEYS) {
32
+ if (raw[key] !== undefined) header[key] = raw[key];
33
+ }
34
+ return header;
35
+ }
36
+ function pickCustomer(raw) {
37
+ if (!raw || typeof raw !== 'object') return null;
38
+ const explicit = raw.customer;
39
+ if (explicit && typeof explicit === 'object') {
40
+ return {
41
+ id: explicit.id ?? raw.customer_id ?? null,
42
+ name: explicit.name ?? raw.customer_name ?? '',
43
+ phone: explicit.phone ?? raw.phone,
44
+ email: explicit.email ?? raw.email,
45
+ country_calling_code: explicit.country_calling_code ?? raw.country_calling_code,
46
+ ...explicit
47
+ };
48
+ }
49
+ if (raw.customer_id == null && !raw.customer_name) return null;
50
+ return {
51
+ id: raw.customer_id ?? null,
52
+ name: raw.customer_name ?? '',
53
+ phone: raw.phone,
54
+ email: raw.email,
55
+ country_calling_code: raw.country_calling_code
56
+ };
57
+ }
58
+
59
+ /**
60
+ * 判定根 booking。沿用 ticketBooking 现有约定:
61
+ * `parent_id === 0` 视为根;其余为子(item_type === 'recurring_booking' 也按 parent_id 判定)。
62
+ * 见 `packages/private-materials/src/components/ticketBooking/index.tsx`:
63
+ * `type: booking.parent_id === 0 ? 'list' : 'detail'`。
64
+ */
65
+ function isRootBooking(booking) {
66
+ if (!booking || typeof booking !== 'object') return false;
67
+ const parentId = booking.parent_id;
68
+ if (parentId === 0 || parentId === null || parentId === undefined) return true;
69
+ return false;
70
+ }
71
+ function indexBookingsByProductUid(bookings) {
72
+ const result = {};
73
+ for (const b of bookings) {
74
+ const uid = b && (b.product_uid || b.metadata?.product_uid) || '';
75
+ if (!uid) continue;
76
+ const key = String(uid);
77
+ if (!result[key]) result[key] = [];
78
+ result[key].push(b);
79
+ }
80
+ return result;
81
+ }
82
+
83
+ /**
84
+ * 将 `/order/sales/{id}` 响应解析为 ISalesDetail。
85
+ *
86
+ * 注意:
87
+ * - 入参允许是 `{ data: OrderData }` 或直接 `OrderData`,自动识别。
88
+ * - products/bookings/payments 在此补齐集合身份;其余 runtime 字段由 OrderModule hydrate 负责。
89
+ * - 不做远程请求;不修改入参;返回新对象。
90
+ */
91
+ function parseSalesResponse(input) {
92
+ const sourceRaw = input && typeof input === 'object' && input.data && input.order_id == null ? input.data : input || {};
93
+ const raw = (0, _orderCollectionIdentity.normalizeOrderCollections)(sourceRaw).order;
94
+ const productsRaw = Array.isArray(raw?.products) ? raw.products : [];
95
+ const products = productsRaw.map(p => {
96
+ const row = {
97
+ ...(p || {})
98
+ };
99
+ const metadata = row.metadata && typeof row.metadata === 'object' ? {
100
+ ...row.metadata
101
+ } : {};
102
+ delete metadata.price_schema_version;
103
+ delete row.identity_key;
104
+ return {
105
+ ...row,
106
+ metadata
107
+ };
108
+ });
109
+ const bookingsRaw = Array.isArray(raw?.bookings) ? raw.bookings : [];
110
+ const bookings = bookingsRaw.map(b => ({
111
+ ...(b || {})
112
+ }));
113
+ const rootBooking = bookings.find(isRootBooking) || null;
114
+ const bookingsByProductUid = indexBookingsByProductUid(bookings);
115
+ const payments = Array.isArray(raw?.payments) ? raw.payments.map(p => ({
116
+ ...(p || {})
117
+ })) : [];
118
+ const surcharges = Array.isArray(raw?.surcharges) ? raw.surcharges.map(s => ({
119
+ ...(s || {})
120
+ })) : [];
121
+ const discount_list = Array.isArray(raw?.discount_list) ? raw.discount_list.map(d => ({
122
+ ...(d || {})
123
+ })) : [];
124
+ const summary = raw?.summary && typeof raw.summary === 'object' ? {
125
+ ...raw.summary
126
+ } : {};
127
+ return {
128
+ header: pickHeader(raw),
129
+ products,
130
+ bookings,
131
+ rootBooking,
132
+ bookingsByProductUid,
133
+ payments,
134
+ surcharges,
135
+ discount_list,
136
+ customer: pickCustomer(raw),
137
+ summary,
138
+ raw
139
+ };
140
+ }
@@ -0,0 +1,18 @@
1
+ import type { QuotationModule } from '../../../modules/Quotation';
2
+ import type { BaseSalesCalculateProductBookingPriceParams, BaseSalesProductBookingPriceResult } from '../types';
3
+ interface BuildBaseSalesQuotationPriceParams extends BaseSalesCalculateProductBookingPriceParams {
4
+ quotation?: (Pick<QuotationModule, 'getPriceForProduct' | 'getQuotationShelfId'> & {
5
+ getQuotationMatchForProduct?: (params: {
6
+ productId: number;
7
+ variantId?: number;
8
+ datetime: string;
9
+ channel?: string;
10
+ customer_id?: number | string;
11
+ }) => {
12
+ price: string | null;
13
+ quotationShelfId: number;
14
+ } | null;
15
+ }) | null;
16
+ }
17
+ export declare function calculateBaseSalesProductBookingPrice(params: BuildBaseSalesQuotationPriceParams): BaseSalesProductBookingPriceResult;
18
+ export {};
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calculateBaseSalesProductBookingPrice = calculateBaseSalesProductBookingPrice;
7
+ var _dayjs = _interopRequireDefault(require("dayjs"));
8
+ var _decimal = _interopRequireDefault(require("decimal.js"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ function toFiniteNumber(value, fallback = 0) {
11
+ const parsedValue = Number(value);
12
+ if (!Number.isFinite(parsedValue)) return fallback;
13
+ return parsedValue;
14
+ }
15
+ function toPositiveInt(value, fallback = 1) {
16
+ const parsedValue = Math.floor(Number(value));
17
+ if (!Number.isFinite(parsedValue) || parsedValue < 1) return fallback;
18
+ return parsedValue;
19
+ }
20
+ function toPriceString(value) {
21
+ return new _decimal.default(Number(value) || 0).toDecimalPlaces(2).toFixed(2);
22
+ }
23
+ function normalizeDateTime(value) {
24
+ if (typeof value !== 'string' || !value.trim()) return null;
25
+ const normalized = value.includes(':') ? value : `${value} 00:00:00`;
26
+ const datetime = (0, _dayjs.default)(normalized);
27
+ if (!datetime.isValid()) return null;
28
+ return datetime;
29
+ }
30
+ function buildBookingDateTime(date, time) {
31
+ if (typeof date !== 'string' || !date.trim()) return null;
32
+ const timeText = typeof time === 'string' && time.trim() ? time.trim() : '00:00';
33
+ const datetime = (0, _dayjs.default)(`${date.trim()} ${timeText}`);
34
+ if (!datetime.isValid()) return null;
35
+ return datetime;
36
+ }
37
+ function getDurationUnit(type) {
38
+ const normalizedType = String(type || '').toLowerCase();
39
+ if (normalizedType === 'day' || normalizedType === 'days') return 'day';
40
+ if (normalizedType === 'minute' || normalizedType === 'minutes') return 'minute';
41
+ return null;
42
+ }
43
+ function getProductId(product) {
44
+ const productId = toFiniteNumber(product.product_id ?? product.id, NaN);
45
+ if (!Number.isFinite(productId)) return null;
46
+ return productId;
47
+ }
48
+ function getProductVariantId(product) {
49
+ const variantId = toFiniteNumber(product.product_variant_id ?? product.variant_id, 0);
50
+ if (!Number.isFinite(variantId) || variantId <= 0) return undefined;
51
+ return variantId;
52
+ }
53
+ function getFallbackPrice(params) {
54
+ const product = params.product || {};
55
+ return toPriceString(params.fallback_price ?? product.price ?? product.selling_price ?? product.original_price ?? 0);
56
+ }
57
+ function getProductQuantity(product) {
58
+ return toPositiveInt(product.num ?? product.quantity, 1);
59
+ }
60
+ function getBundleProductId(bundle) {
61
+ const productId = toFiniteNumber(bundle.bundle_product_id ?? bundle._bundle_product_id, NaN);
62
+ if (!Number.isFinite(productId)) return null;
63
+ return productId;
64
+ }
65
+ function getBundleVariantId(bundle) {
66
+ const variantId = toFiniteNumber(bundle.bundle_variant_id ?? bundle.variant_id, 0);
67
+ if (!Number.isFinite(variantId) || variantId <= 0) return undefined;
68
+ return variantId;
69
+ }
70
+ function getBundleFallbackPrice(bundle) {
71
+ return toPriceString(bundle.bundle_selling_price ?? bundle.price ?? bundle.original_price ?? bundle.base_price ?? 0);
72
+ }
73
+ function shouldSplitByDuration(duration, start, end) {
74
+ if (!duration) return false;
75
+ if (!start || !end || !end.isAfter(start)) return false;
76
+ const unit = getDurationUnit(duration.type);
77
+ const value = toFiniteNumber(duration.value);
78
+ return !!unit && value > 0;
79
+ }
80
+ function buildTimeSegments(params) {
81
+ const booking = params.booking || {};
82
+ const explicitDatetime = normalizeDateTime(params.datetime);
83
+ const bookingStart = buildBookingDateTime(booking.start_date, booking.start_time);
84
+ const start = bookingStart || explicitDatetime || (0, _dayjs.default)();
85
+ const bookingEnd = buildBookingDateTime(booking.end_date, booking.end_time);
86
+ if (!shouldSplitByDuration(params.duration, start, bookingEnd)) {
87
+ return [{
88
+ start
89
+ }];
90
+ }
91
+ const unit = getDurationUnit(params.duration.type);
92
+ const value = toFiniteNumber(params.duration.value);
93
+ const segments = [];
94
+ let cursor = start;
95
+ let guard = 0;
96
+ while (cursor.isBefore(bookingEnd) && guard < 10000) {
97
+ const next = cursor.add(value, unit);
98
+ segments.push({
99
+ start: cursor,
100
+ end: next.isBefore(bookingEnd) ? next : bookingEnd ?? undefined
101
+ });
102
+ cursor = next;
103
+ guard += 1;
104
+ }
105
+ return segments.length ? segments : [{
106
+ start
107
+ }];
108
+ }
109
+ function formatTimePoint(datetime) {
110
+ return datetime.format('YYYY-MM-DD HH:mm:ss');
111
+ }
112
+ function buildPriceSegment(params) {
113
+ const timePoint = formatTimePoint(params.segment.start);
114
+ const match = params.quotation && params.productId !== null && params.quotation.getQuotationMatchForProduct ? params.quotation.getQuotationMatchForProduct({
115
+ productId: params.productId,
116
+ variantId: params.variantId,
117
+ datetime: timePoint,
118
+ channel: params.channel,
119
+ customer_id: params.customerId
120
+ }) : null;
121
+ const quotedPrice = match ? match.price : params.quotation && params.productId !== null ? params.quotation.getPriceForProduct({
122
+ productId: params.productId,
123
+ variantId: params.variantId,
124
+ datetime: timePoint,
125
+ channel: params.channel,
126
+ customer_id: params.customerId
127
+ }) : null;
128
+ const unitPrice = toPriceString(quotedPrice ?? params.fallbackPrice);
129
+ const quotationShelfId = quotedPrice !== null ? match?.quotationShelfId ?? (params.quotation && params.productId !== null ? params.quotation.getQuotationShelfId({
130
+ productId: params.productId,
131
+ variantId: params.variantId,
132
+ datetime: timePoint,
133
+ channel: params.channel,
134
+ customer_id: params.customerId
135
+ }) : 0) : 0;
136
+ return {
137
+ start_datetime: timePoint,
138
+ end_datetime: params.segment.end ? formatTimePoint(params.segment.end) : undefined,
139
+ time_point: timePoint,
140
+ unit_price: unitPrice,
141
+ quantity: 1,
142
+ total_price: unitPrice,
143
+ quotation_shelf_id: quotationShelfId,
144
+ source: quotedPrice !== null ? 'quotation' : 'fallback'
145
+ };
146
+ }
147
+ function calculatePriceForProduct(params) {
148
+ const segments = params.segments.map(segment => buildPriceSegment({
149
+ quotation: params.quotation,
150
+ productId: params.productId,
151
+ variantId: params.variantId,
152
+ customerId: params.customerId,
153
+ channel: params.channel,
154
+ fallbackPrice: params.fallbackPrice,
155
+ segment
156
+ }));
157
+ const unitPrice = segments.reduce((total, segment) => total.plus(segment.total_price), new _decimal.default(0));
158
+ const totalPrice = unitPrice.times(params.quantity);
159
+ const quotationShelfId = segments.find(segment => segment.quotation_shelf_id)?.quotation_shelf_id || 0;
160
+ return {
161
+ unitPrice,
162
+ totalPrice,
163
+ quotationShelfId,
164
+ segments
165
+ };
166
+ }
167
+ function calculateBundlePrices(params, segments) {
168
+ const bundleList = params.product?.product_bundle || [];
169
+ if (!bundleList.length) return undefined;
170
+ return bundleList.map(bundle => {
171
+ const productId = getBundleProductId(bundle);
172
+ const variantId = getBundleVariantId(bundle);
173
+ const quantity = getProductQuantity(bundle);
174
+ const price = calculatePriceForProduct({
175
+ quotation: params.quotation,
176
+ productId,
177
+ variantId,
178
+ customerId: params.customer_id,
179
+ channel: params.channel,
180
+ quantity,
181
+ fallbackPrice: getBundleFallbackPrice(bundle),
182
+ segments
183
+ });
184
+ return {
185
+ bundle_id: bundle.bundle_id ?? bundle.id,
186
+ group_id: bundle.group_id,
187
+ bundle_group_id: bundle.bundle_group_id,
188
+ bundle_product_id: productId,
189
+ bundle_variant_id: variantId ?? 0,
190
+ unit_price: price.unitPrice.toDecimalPlaces(2).toFixed(2),
191
+ total_price: price.totalPrice.toDecimalPlaces(2).toFixed(2),
192
+ quantity,
193
+ quotation_shelf_id: price.quotationShelfId,
194
+ source: price.segments.some(segment => segment.source === 'quotation') ? 'quotation' : 'fallback',
195
+ segments: price.segments
196
+ };
197
+ });
198
+ }
199
+ function calculateBaseSalesProductBookingPrice(params) {
200
+ const product = params.product || {};
201
+ const productId = getProductId(product);
202
+ const variantId = getProductVariantId(product);
203
+ const productQuantity = getProductQuantity(product);
204
+ const fallbackPrice = getFallbackPrice(params);
205
+ const timeSegments = buildTimeSegments(params);
206
+ const price = calculatePriceForProduct({
207
+ quotation: params.quotation,
208
+ productId,
209
+ variantId,
210
+ customerId: params.customer_id,
211
+ channel: params.channel,
212
+ quantity: productQuantity,
213
+ fallbackPrice,
214
+ segments: timeSegments
215
+ });
216
+ const bundlePrices = calculateBundlePrices(params, timeSegments);
217
+ return {
218
+ product_id: productId,
219
+ product_variant_id: variantId ?? 0,
220
+ customer_id: params.customer_id,
221
+ unit_price: price.unitPrice.toDecimalPlaces(2).toFixed(2),
222
+ total_price: price.totalPrice.toDecimalPlaces(2).toFixed(2),
223
+ quantity: productQuantity,
224
+ duration: params.duration,
225
+ quotation_shelf_id: price.quotationShelfId,
226
+ segments: price.segments,
227
+ ...(bundlePrices ? {
228
+ product_bundle: bundlePrices
229
+ } : {})
230
+ };
231
+ }
@@ -0,0 +1,63 @@
1
+ import type { OrderProduct, OrderProductIdentity } from '../../../modules/Order/types';
2
+ import type { ProductData } from '../../../modules/Product/types';
3
+ export interface BaseProductDetailOptionItem {
4
+ option_group_item_id?: number | string;
5
+ option_group_id?: number | string;
6
+ num?: number | string;
7
+ quantity?: number | string;
8
+ price?: number | string;
9
+ add_price?: number | string;
10
+ [key: string]: any;
11
+ }
12
+ export interface BaseProductDetailBundleItem {
13
+ option?: BaseProductDetailOptionItem[];
14
+ [key: string]: any;
15
+ }
16
+ export interface BaseProductDetailPayload {
17
+ id?: number | string | null;
18
+ product_id?: number | string | null;
19
+ variant_id?: number | string | null;
20
+ product_variant_id?: number | string | null;
21
+ quantity?: number | string;
22
+ num?: number | string;
23
+ option?: BaseProductDetailOptionItem[];
24
+ options?: BaseProductDetailOptionItem[];
25
+ product_option_item?: BaseProductDetailOptionItem[];
26
+ product_sku?: Record<string, any>;
27
+ bundle?: BaseProductDetailBundleItem[];
28
+ product_bundle?: BaseProductDetailBundleItem[];
29
+ unique?: string;
30
+ unique_identification_number?: string;
31
+ session?: any;
32
+ form?: any;
33
+ service_times?: any;
34
+ machine_code?: string;
35
+ schedule_id?: number[];
36
+ duration?: number;
37
+ policy_id?: number;
38
+ source_shop_id?: number;
39
+ origin?: Record<string, any>;
40
+ _origin?: Record<string, any>;
41
+ price?: number | string;
42
+ selling_price?: number | string;
43
+ original_price?: number | string;
44
+ tax_fee?: number | string;
45
+ is_charge_tax?: number;
46
+ note?: string;
47
+ [key: string]: any;
48
+ }
49
+ export interface TransformBaseProductToOrderProductParams {
50
+ payload: BaseProductDetailPayload;
51
+ fallbackProductId?: number | string | null;
52
+ sourceProduct?: ProductData | Record<string, any> | null;
53
+ sourceItem?: ProductData | Record<string, any> | null;
54
+ }
55
+ export type BaseProductOrderProductInput = Partial<OrderProduct> & OrderProductIdentity & {
56
+ _origin?: Record<string, any>;
57
+ };
58
+ /**
59
+ * 将商品列表原始数据 + 商品详情选择回调转换成 OrderModule.addProductToOrder 入参。
60
+ *
61
+ * 注意:这里不生成 identity,缺省时由 OrderModule 自动补齐。
62
+ */
63
+ export declare function transformBaseProductToOrderProduct(params: TransformBaseProductToOrderProductParams): BaseProductOrderProductInput | null;