@pisell/pisellos 0.0.568 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/dist/core/index.js +10 -6
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -3
  4. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  5. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  6. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  7. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  8. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  9. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  10. package/dist/model/strategy/adapter/walletPass/utils.js +24 -96
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +2 -2
  13. package/dist/modules/BaseModule.js +12 -14
  14. package/dist/modules/BookingContext/index.d.ts +48 -0
  15. package/dist/modules/BookingContext/index.js +566 -0
  16. package/dist/modules/BookingContext/types.d.ts +102 -0
  17. package/dist/modules/BookingContext/types.js +51 -0
  18. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  19. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  20. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  21. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  22. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  23. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  24. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  25. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  26. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  27. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  28. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  29. package/dist/modules/BookingContext/utils/index.js +11 -0
  30. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  31. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  32. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  33. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  34. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  35. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  36. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  37. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  38. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  39. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  40. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  41. package/dist/modules/BookingContext/utils/resources.js +486 -0
  42. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  43. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  44. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  45. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  46. package/dist/modules/Cart/index.js +3 -0
  47. package/dist/modules/Cart/utils/cartProduct.js +27 -5
  48. package/dist/modules/Cart/utils/cartResource.js +0 -2
  49. package/dist/modules/Cart/utils/changePrice.js +11 -11
  50. package/dist/modules/Customer/index.d.ts +20 -0
  51. package/dist/modules/Customer/index.js +172 -83
  52. package/dist/modules/Customer/types.d.ts +2 -0
  53. package/dist/modules/Date/index.js +5 -1
  54. package/dist/modules/Discount/index.d.ts +2 -2
  55. package/dist/modules/Discount/index.js +43 -30
  56. package/dist/modules/Discount/types.d.ts +1 -1
  57. package/dist/modules/OpenData/index.d.ts +8 -0
  58. package/dist/modules/OpenData/index.js +38 -16
  59. package/dist/modules/Order/index.d.ts +449 -24
  60. package/dist/modules/Order/index.js +5460 -574
  61. package/dist/modules/Order/types.d.ts +693 -88
  62. package/dist/modules/Order/types.js +68 -1
  63. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  64. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  65. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  66. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  67. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  68. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  69. package/dist/modules/Order/utils.d.ts +167 -18
  70. package/dist/modules/Order/utils.js +960 -165
  71. package/dist/modules/Payment/index.d.ts +10 -9
  72. package/dist/modules/Payment/index.js +573 -746
  73. package/dist/modules/Payment/types.d.ts +44 -24
  74. package/dist/modules/Payment/utils.d.ts +1 -1
  75. package/dist/modules/Payment/utils.js +4 -3
  76. package/dist/modules/Payment/walletpass.d.ts +0 -2
  77. package/dist/modules/Payment/walletpass.js +49 -33
  78. package/dist/modules/Product/types.d.ts +29 -7
  79. package/dist/modules/ProductList/index.d.ts +17 -13
  80. package/dist/modules/ProductList/index.js +182 -81
  81. package/dist/modules/ProductList/types.d.ts +16 -0
  82. package/dist/modules/Quotation/index.d.ts +22 -2
  83. package/dist/modules/Quotation/index.js +108 -42
  84. package/dist/modules/Quotation/types.d.ts +19 -0
  85. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  86. package/dist/modules/ResourcePlanner/index.js +181 -0
  87. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  88. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  89. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  90. package/dist/modules/ResourcePlanner/types.js +1 -0
  91. package/dist/modules/Rules/index.d.ts +8 -10
  92. package/dist/modules/Rules/index.js +324 -513
  93. package/dist/modules/Rules/types.d.ts +14 -3
  94. package/dist/modules/SalesSummary/index.d.ts +23 -26
  95. package/dist/modules/SalesSummary/index.js +152 -46
  96. package/dist/modules/SalesSummary/types.d.ts +9 -1
  97. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  98. package/dist/modules/SalesSummary/utils.js +804 -165
  99. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -12
  100. package/dist/modules/Schedule/index.d.ts +18 -5
  101. package/dist/modules/Schedule/index.js +79 -24
  102. package/dist/modules/Schedule/types.d.ts +2 -0
  103. package/dist/modules/Schedule/utils.js +1 -0
  104. package/dist/modules/Step/index.js +1 -0
  105. package/dist/modules/Summary/index.js +4 -3
  106. package/dist/modules/Summary/utils.js +22 -43
  107. package/dist/modules/SurchargeList/index.d.ts +18 -0
  108. package/dist/modules/SurchargeList/index.js +185 -0
  109. package/dist/modules/SurchargeList/types.d.ts +15 -0
  110. package/dist/modules/SurchargeList/types.js +1 -0
  111. package/dist/modules/index.d.ts +3 -0
  112. package/dist/modules/index.js +4 -1
  113. package/dist/plugins/app.d.ts +2 -0
  114. package/dist/plugins/request.d.ts +1 -0
  115. package/dist/plugins/request.js +4 -1
  116. package/dist/plugins/window.js +6 -2
  117. package/dist/server/index.d.ts +462 -8
  118. package/dist/server/index.js +6168 -680
  119. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  120. package/dist/server/modules/floor-plan/index.js +595 -0
  121. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  122. package/dist/server/modules/floor-plan/types.js +13 -0
  123. package/dist/server/modules/index.d.ts +7 -2
  124. package/dist/server/modules/index.js +6 -0
  125. package/dist/server/modules/menu/index.js +41 -32
  126. package/dist/server/modules/order/index.d.ts +207 -14
  127. package/dist/server/modules/order/index.js +2328 -379
  128. package/dist/server/modules/order/types.d.ts +76 -5
  129. package/dist/server/modules/order/types.js +14 -1
  130. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  131. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  132. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  133. package/dist/server/modules/payment/index.d.ts +28 -0
  134. package/dist/server/modules/payment/index.js +305 -0
  135. package/dist/server/modules/payment/types.d.ts +9 -0
  136. package/dist/server/modules/payment/types.js +1 -0
  137. package/dist/server/modules/products/index.d.ts +105 -14
  138. package/dist/server/modules/products/index.js +1416 -521
  139. package/dist/server/modules/products/types.d.ts +34 -1
  140. package/dist/server/modules/products/types.js +4 -0
  141. package/dist/server/modules/quotation/index.d.ts +39 -0
  142. package/dist/server/modules/quotation/index.js +298 -77
  143. package/dist/server/modules/resource/index.d.ts +2 -3
  144. package/dist/server/modules/resource/index.js +109 -86
  145. package/dist/server/modules/schedule/index.d.ts +6 -4
  146. package/dist/server/modules/schedule/index.js +145 -106
  147. package/dist/server/test.json +713 -0
  148. package/dist/server/types.d.ts +2 -0
  149. package/dist/server/utils/product.js +3 -2
  150. package/dist/server/utils/small-ticket.d.ts +71 -0
  151. package/dist/server/utils/small-ticket.js +963 -0
  152. package/dist/solution/BaseSales/index.d.ts +378 -0
  153. package/dist/solution/BaseSales/index.js +4009 -0
  154. package/dist/solution/BaseSales/types.d.ts +394 -0
  155. package/dist/solution/BaseSales/types.js +40 -0
  156. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  157. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  158. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  159. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  160. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  161. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  162. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  163. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  164. package/dist/solution/BaseSales/utils.d.ts +40 -0
  165. package/dist/solution/BaseSales/utils.js +263 -0
  166. package/dist/solution/BookingByStep/index.d.ts +1 -1
  167. package/dist/solution/BookingByStep/index.js +60 -11
  168. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  169. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  170. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  171. package/dist/solution/BookingTicket/index.d.ts +393 -24
  172. package/dist/solution/BookingTicket/index.js +2508 -443
  173. package/dist/solution/BookingTicket/types.d.ts +191 -6
  174. package/dist/solution/BookingTicket/types.js +83 -10
  175. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  176. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  177. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  178. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  179. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  180. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  181. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  182. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  183. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  184. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  185. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  186. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  187. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  188. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  189. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  190. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  191. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  192. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +42 -1
  193. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  194. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  195. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  196. package/dist/solution/BookingTicket/utils/scan/handleScan.js +42 -28
  197. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  198. package/dist/solution/BookingTicket/utils/scan/index.js +30 -14
  199. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  200. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  201. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  202. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  203. package/dist/solution/BuyTickets/index.js +12 -9
  204. package/dist/solution/Checkout/index.d.ts +1 -0
  205. package/dist/solution/Checkout/index.js +275 -209
  206. package/dist/solution/Checkout/utils/index.js +20 -8
  207. package/dist/solution/RegisterAndLogin/config.js +2 -10
  208. package/dist/solution/RegisterAndLogin/index.js +76 -30
  209. package/dist/solution/Sales/index.d.ts +50 -5
  210. package/dist/solution/Sales/index.js +484 -92
  211. package/dist/solution/Sales/types.d.ts +26 -2
  212. package/dist/solution/ScanOrder/index.d.ts +27 -21
  213. package/dist/solution/ScanOrder/index.js +519 -444
  214. package/dist/solution/ScanOrder/types.d.ts +33 -11
  215. package/dist/solution/ScanOrder/types.js +4 -5
  216. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  217. package/dist/solution/ScanOrder/utils.js +109 -34
  218. package/dist/solution/ShopDiscount/index.js +18 -19
  219. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  220. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  221. package/dist/solution/ShopDiscount/utils.js +0 -9
  222. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  223. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  224. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  225. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  226. package/dist/solution/VenueBooking/index.d.ts +32 -51
  227. package/dist/solution/VenueBooking/index.js +741 -808
  228. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  229. package/dist/solution/VenueBooking/types.d.ts +1 -3
  230. package/dist/solution/VenueBooking/types.js +0 -1
  231. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  232. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  233. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  234. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  235. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  236. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  237. package/dist/solution/index.d.ts +2 -0
  238. package/dist/solution/index.js +3 -1
  239. package/dist/types/index.d.ts +12 -2
  240. package/dist/utils/task.js +18 -15
  241. package/dist/utils/watch.js +1 -0
  242. package/lib/apis/picoding.js +0 -2
  243. package/lib/core/index.js +132 -130
  244. package/lib/effects/index.js +57 -46
  245. package/lib/index.d.ts +0 -1
  246. package/lib/index.js +50 -92
  247. package/lib/model/index.js +21 -14
  248. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  249. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  250. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  251. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  252. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  253. package/lib/model/strategy/adapter/index.js +64 -100
  254. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  255. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  256. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  257. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  258. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  259. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  260. package/lib/model/strategy/adapter/promotion/evaluator.js +233 -382
  261. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  262. package/lib/model/strategy/adapter/promotion/index.js +0 -1
  263. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  264. package/lib/model/strategy/adapter/type.js +16 -4
  265. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  266. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  267. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  268. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  269. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  270. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  271. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  272. package/lib/model/strategy/adapter/walletPass/utils.js +383 -676
  273. package/lib/model/strategy/engine.js +168 -270
  274. package/lib/model/strategy/index.js +34 -49
  275. package/lib/model/strategy/strategy-example.js +239 -243
  276. package/lib/model/strategy/type.js +40 -100
  277. package/lib/modules/Account/index.js +53 -39
  278. package/lib/modules/Account/types.js +33 -20
  279. package/lib/modules/AccountList/index.js +154 -116
  280. package/lib/modules/AccountList/types.js +31 -30
  281. package/lib/modules/AccountList/utils.js +30 -18
  282. package/lib/modules/BaseModule.d.ts +2 -2
  283. package/lib/modules/BaseModule.js +50 -29
  284. package/lib/modules/BookingContext/index.d.ts +48 -0
  285. package/lib/modules/BookingContext/index.js +368 -0
  286. package/lib/modules/BookingContext/types.d.ts +102 -0
  287. package/lib/modules/BookingContext/types.js +34 -0
  288. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  289. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +298 -0
  290. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  291. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +155 -0
  292. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  293. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +222 -0
  294. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  295. package/lib/modules/BookingContext/utils/flexible.js +80 -0
  296. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  297. package/lib/modules/BookingContext/utils/formatResourceList.js +50 -0
  298. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  299. package/lib/modules/BookingContext/utils/index.js +43 -0
  300. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  301. package/lib/modules/BookingContext/utils/noResource.js +90 -0
  302. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  303. package/lib/modules/BookingContext/utils/orderLineDisplay.js +56 -0
  304. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  305. package/lib/modules/BookingContext/utils/productExtend.js +283 -0
  306. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  307. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  308. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  309. package/lib/modules/BookingContext/utils/resourceSelection.js +46 -0
  310. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  311. package/lib/modules/BookingContext/utils/resources.js +377 -0
  312. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  313. package/lib/modules/BookingContext/utils/serviceTimes.js +162 -0
  314. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  315. package/lib/modules/BookingContext/utils/timeSlices.js +124 -0
  316. package/lib/modules/Cart/index.js +124 -170
  317. package/lib/modules/Cart/types.js +51 -46
  318. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  319. package/lib/modules/Cart/utils/cartDate.js +61 -56
  320. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  321. package/lib/modules/Cart/utils/cartNote.js +32 -27
  322. package/lib/modules/Cart/utils/cartProduct.js +261 -309
  323. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  324. package/lib/modules/Cart/utils/cartResource.js +78 -72
  325. package/lib/modules/Cart/utils/changePrice.js +59 -31
  326. package/lib/modules/Cart/utils/index.js +48 -106
  327. package/lib/modules/Customer/constants.js +34 -13
  328. package/lib/modules/Customer/index.d.ts +20 -0
  329. package/lib/modules/Customer/index.js +207 -217
  330. package/lib/modules/Customer/types.d.ts +2 -0
  331. package/lib/modules/Customer/types.js +35 -38
  332. package/lib/modules/Date/index.js +115 -116
  333. package/lib/modules/Date/types.js +28 -16
  334. package/lib/modules/Date/utils.js +123 -174
  335. package/lib/modules/Discount/index.d.ts +2 -2
  336. package/lib/modules/Discount/index.js +133 -119
  337. package/lib/modules/Discount/types.d.ts +1 -1
  338. package/lib/modules/Discount/types.js +31 -9
  339. package/lib/modules/Guests/index.js +56 -30
  340. package/lib/modules/Guests/types.js +33 -23
  341. package/lib/modules/Holder/index.js +189 -209
  342. package/lib/modules/Holder/types.js +16 -4
  343. package/lib/modules/Holder/utils.js +49 -20
  344. package/lib/modules/OpenData/index.d.ts +8 -0
  345. package/lib/modules/OpenData/index.js +88 -63
  346. package/lib/modules/OpenData/types.js +16 -4
  347. package/lib/modules/OpenData/utils.js +78 -44
  348. package/lib/modules/Order/index.d.ts +449 -24
  349. package/lib/modules/Order/index.js +4184 -514
  350. package/lib/modules/Order/types.d.ts +693 -88
  351. package/lib/modules/Order/types.js +35 -24
  352. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  353. package/lib/modules/Order/utils/bundleDiscountHydration.js +139 -0
  354. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  355. package/lib/modules/Order/utils/manualProductDiscount.js +206 -0
  356. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  357. package/lib/modules/Order/utils/orderCollectionIdentity.js +415 -0
  358. package/lib/modules/Order/utils.d.ts +167 -18
  359. package/lib/modules/Order/utils.js +1085 -414
  360. package/lib/modules/Payment/cash.js +33 -20
  361. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  362. package/lib/modules/Payment/eftpos.js +30 -16
  363. package/lib/modules/Payment/index.d.ts +10 -9
  364. package/lib/modules/Payment/index.js +402 -636
  365. package/lib/modules/Payment/mx51.js +0 -1
  366. package/lib/modules/Payment/types.d.ts +44 -24
  367. package/lib/modules/Payment/types.js +107 -216
  368. package/lib/modules/Payment/utils.d.ts +1 -1
  369. package/lib/modules/Payment/utils.js +50 -52
  370. package/lib/modules/Payment/walletpass.d.ts +0 -2
  371. package/lib/modules/Payment/walletpass.js +216 -221
  372. package/lib/modules/Product/index.js +46 -51
  373. package/lib/modules/Product/types.d.ts +29 -7
  374. package/lib/modules/Product/types.js +16 -4
  375. package/lib/modules/Product/utils.js +33 -32
  376. package/lib/modules/ProductList/index.d.ts +17 -13
  377. package/lib/modules/ProductList/index.js +161 -120
  378. package/lib/modules/ProductList/types.d.ts +16 -0
  379. package/lib/modules/ProductList/types.js +31 -9
  380. package/lib/modules/Quotation/index.d.ts +22 -2
  381. package/lib/modules/Quotation/index.js +154 -64
  382. package/lib/modules/Quotation/types.d.ts +19 -0
  383. package/lib/modules/Quotation/types.js +16 -4
  384. package/lib/modules/Resource/index.js +59 -27
  385. package/lib/modules/Resource/types.js +32 -22
  386. package/lib/modules/Resource/utils.js +38 -30
  387. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  388. package/lib/modules/ResourcePlanner/index.js +148 -0
  389. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  390. package/lib/modules/ResourcePlanner/planner.js +933 -0
  391. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  392. package/lib/modules/ResourcePlanner/types.js +17 -0
  393. package/lib/modules/Rules/index.d.ts +8 -10
  394. package/lib/modules/Rules/index.js +960 -1440
  395. package/lib/modules/Rules/types.d.ts +14 -3
  396. package/lib/modules/Rules/types.js +40 -17
  397. package/lib/modules/SalesSummary/index.d.ts +23 -26
  398. package/lib/modules/SalesSummary/index.js +134 -61
  399. package/lib/modules/SalesSummary/types.d.ts +9 -1
  400. package/lib/modules/SalesSummary/types.js +16 -4
  401. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  402. package/lib/modules/SalesSummary/utils.js +814 -233
  403. package/lib/modules/ScanOrderLogger/index.js +79 -59
  404. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  405. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  406. package/lib/modules/ScanOrderLogger/types.js +16 -4
  407. package/lib/modules/Schedule/getDateIsInSchedule.js +169 -338
  408. package/lib/modules/Schedule/index.d.ts +18 -5
  409. package/lib/modules/Schedule/index.js +153 -104
  410. package/lib/modules/Schedule/type.js +16 -4
  411. package/lib/modules/Schedule/types.d.ts +2 -0
  412. package/lib/modules/Schedule/types.js +16 -4
  413. package/lib/modules/Schedule/utils.js +291 -433
  414. package/lib/modules/Step/index.js +52 -40
  415. package/lib/modules/Step/tyeps.js +16 -4
  416. package/lib/modules/Summary/index.js +71 -66
  417. package/lib/modules/Summary/types.js +16 -4
  418. package/lib/modules/Summary/utils.js +418 -791
  419. package/lib/modules/SurchargeList/index.d.ts +18 -0
  420. package/lib/modules/SurchargeList/index.js +109 -0
  421. package/lib/modules/SurchargeList/types.d.ts +15 -0
  422. package/lib/modules/SurchargeList/types.js +17 -0
  423. package/lib/modules/index.d.ts +3 -0
  424. package/lib/modules/index.js +63 -212
  425. package/lib/plugins/app.d.ts +2 -0
  426. package/lib/plugins/app.js +16 -4
  427. package/lib/plugins/index.js +25 -36
  428. package/lib/plugins/request.d.ts +1 -0
  429. package/lib/plugins/request.js +126 -137
  430. package/lib/plugins/shopStore.js +16 -4
  431. package/lib/plugins/user.js +16 -4
  432. package/lib/plugins/window.js +179 -171
  433. package/lib/server/index.d.ts +462 -8
  434. package/lib/server/index.js +4520 -1162
  435. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  436. package/lib/server/modules/floor-plan/index.js +327 -0
  437. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  438. package/lib/server/modules/floor-plan/types.js +34 -0
  439. package/lib/server/modules/index.d.ts +7 -2
  440. package/lib/server/modules/index.js +67 -84
  441. package/lib/server/modules/menu/index.js +122 -146
  442. package/lib/server/modules/menu/types.js +31 -18
  443. package/lib/server/modules/order/index.d.ts +207 -14
  444. package/lib/server/modules/order/index.js +1543 -285
  445. package/lib/server/modules/order/types.d.ts +76 -5
  446. package/lib/server/modules/order/types.js +32 -107
  447. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  448. package/lib/server/modules/order/utils/filterBookings.js +259 -176
  449. package/lib/server/modules/order/utils/filterOrders.js +293 -94
  450. package/lib/server/modules/payment/index.d.ts +28 -0
  451. package/lib/server/modules/payment/index.js +192 -0
  452. package/lib/server/modules/payment/types.d.ts +9 -0
  453. package/lib/server/modules/payment/types.js +17 -0
  454. package/lib/server/modules/products/index.d.ts +105 -14
  455. package/lib/server/modules/products/index.js +850 -475
  456. package/lib/server/modules/products/types.d.ts +34 -1
  457. package/lib/server/modules/products/types.js +34 -41
  458. package/lib/server/modules/quotation/index.d.ts +39 -0
  459. package/lib/server/modules/quotation/index.js +254 -75
  460. package/lib/server/modules/quotation/types.js +31 -21
  461. package/lib/server/modules/resource/index.d.ts +2 -3
  462. package/lib/server/modules/resource/index.js +240 -243
  463. package/lib/server/modules/resource/types.js +33 -42
  464. package/lib/server/modules/schedule/index.d.ts +6 -4
  465. package/lib/server/modules/schedule/index.js +146 -147
  466. package/lib/server/modules/schedule/types.js +21 -14
  467. package/lib/server/modules/schedule/utils.js +163 -334
  468. package/lib/server/test.json +713 -0
  469. package/lib/server/types.d.ts +2 -0
  470. package/lib/server/types.js +16 -4
  471. package/lib/server/utils/index.js +23 -25
  472. package/lib/server/utils/product.js +140 -197
  473. package/lib/server/utils/schedule.js +41 -34
  474. package/lib/server/utils/small-ticket.d.ts +71 -0
  475. package/lib/server/utils/small-ticket.js +904 -0
  476. package/lib/server/utils/time.js +49 -40
  477. package/lib/solution/BaseSales/index.d.ts +378 -0
  478. package/lib/solution/BaseSales/index.js +2533 -0
  479. package/lib/solution/BaseSales/types.d.ts +394 -0
  480. package/lib/solution/BaseSales/types.js +43 -0
  481. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  482. package/lib/solution/BaseSales/utils/cartPromotion.js +1004 -0
  483. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  484. package/lib/solution/BaseSales/utils/parseSalesResponse.js +160 -0
  485. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  486. package/lib/solution/BaseSales/utils/quotationPrice.js +289 -0
  487. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  488. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +256 -0
  489. package/lib/solution/BaseSales/utils.d.ts +40 -0
  490. package/lib/solution/BaseSales/utils.js +244 -0
  491. package/lib/solution/BookingByStep/index.d.ts +1 -1
  492. package/lib/solution/BookingByStep/index.js +1340 -1530
  493. package/lib/solution/BookingByStep/types.js +99 -40
  494. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  495. package/lib/solution/BookingByStep/utils/products.js +52 -42
  496. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  497. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  498. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  499. package/lib/solution/BookingTicket/index.d.ts +393 -24
  500. package/lib/solution/BookingTicket/index.js +1374 -184
  501. package/lib/solution/BookingTicket/types.d.ts +191 -6
  502. package/lib/solution/BookingTicket/types.js +79 -40
  503. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  504. package/lib/solution/BookingTicket/utils/addProductDecision.js +318 -0
  505. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  506. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +125 -0
  507. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  508. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -0
  509. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  510. package/lib/solution/BookingTicket/utils/cartView.js +184 -0
  511. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  512. package/lib/solution/BookingTicket/utils/exampleData.js +0 -0
  513. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  514. package/lib/solution/BookingTicket/utils/orderCustomer.js +58 -0
  515. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  516. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +254 -0
  517. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  518. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +169 -0
  519. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  520. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +97 -64
  521. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  522. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +51 -0
  523. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  524. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -82
  525. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  526. package/lib/solution/BookingTicket/utils/scan/index.js +109 -91
  527. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  528. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  529. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +127 -0
  530. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  531. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +85 -0
  532. package/lib/solution/BuyTickets/index.js +70 -67
  533. package/lib/solution/BuyTickets/types.js +38 -22
  534. package/lib/solution/Checkout/index.d.ts +1 -0
  535. package/lib/solution/Checkout/index.js +1169 -1463
  536. package/lib/solution/Checkout/types.js +61 -91
  537. package/lib/solution/Checkout/utils/index.js +156 -228
  538. package/lib/solution/PlaceOrder/index.js +0 -55
  539. package/lib/solution/RegisterAndLogin/config.js +462 -503
  540. package/lib/solution/RegisterAndLogin/index.js +630 -633
  541. package/lib/solution/RegisterAndLogin/types.js +76 -189
  542. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  543. package/lib/solution/Sales/index.d.ts +50 -5
  544. package/lib/solution/Sales/index.js +498 -238
  545. package/lib/solution/Sales/types.d.ts +26 -2
  546. package/lib/solution/Sales/types.js +33 -27
  547. package/lib/solution/ScanOrder/index.d.ts +27 -21
  548. package/lib/solution/ScanOrder/index.js +936 -864
  549. package/lib/solution/ScanOrder/types.d.ts +33 -11
  550. package/lib/solution/ScanOrder/types.js +34 -34
  551. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  552. package/lib/solution/ScanOrder/utils.js +422 -385
  553. package/lib/solution/ShopDiscount/index.js +233 -235
  554. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  555. package/lib/solution/ShopDiscount/types.js +37 -15
  556. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  557. package/lib/solution/ShopDiscount/utils.js +172 -309
  558. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  559. package/lib/solution/UnifiedBookingSales/index.js +1076 -0
  560. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  561. package/lib/solution/UnifiedBookingSales/types.js +33 -0
  562. package/lib/solution/VenueBooking/index.d.ts +32 -51
  563. package/lib/solution/VenueBooking/index.js +1008 -984
  564. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  565. package/lib/solution/VenueBooking/types.d.ts +1 -3
  566. package/lib/solution/VenueBooking/types.js +39 -20
  567. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  568. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  569. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  570. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  571. package/lib/solution/VenueBooking/utils/slotMerge.js +109 -90
  572. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  573. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  574. package/lib/solution/VenueBooking/utils.js +67 -130
  575. package/lib/solution/index.d.ts +2 -0
  576. package/lib/solution/index.js +41 -102
  577. package/lib/store/createStore.js +29 -32
  578. package/lib/types/index.d.ts +12 -2
  579. package/lib/types/index.js +16 -4
  580. package/lib/utils/task.js +36 -36
  581. package/lib/utils/watch.js +47 -81
  582. package/package.json +2 -4
  583. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  584. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  585. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  586. package/lib/solution/Checkout/appointmentDemo.json +0 -1
  587. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  588. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -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,157 @@
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
5
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
10
+ /**
11
+ * 把 `/order/sales/{id}` 响应(OrderData)解析为 ISalesDetail。
12
+ *
13
+ * - 纯函数:不依赖任何运行时模块/插件,便于单测与 view-model 适配
14
+ * - products 保留 tempOrder / 后端详情原字段,仅规范化集合身份并浅拷贝,避免丢失 product_sku 等协议字段
15
+ * - bookings 平铺保留服务端原顺序,同时输出 byProductUid 反查表与 rootBooking
16
+ * - header 收敛"非数组顶层字段",便于 ticketBooking view-model 直接消费
17
+ *
18
+ * 设计原则参考 `.cursor/rules/data-field-semantics.mdc`:
19
+ * - 字段命名以《统一 Sales 数据协议》为准(OrderData 类型)
20
+ * - root booking 以 `parent_id === 0` 判定,沿用 ticketBooking 现有约定
21
+ * (`packages/private-materials/src/components/ticketBooking/index.tsx`:
22
+ * `booking.parent_id === 0 ? 'list' : 'detail'`)
23
+ * - 不在此处发明等价关系;UI 侧(ticketBooking)若需要别的字段,由 view-model 适配层做转换
24
+ */
25
+
26
+ import { normalizeOrderCollections } from "../../../modules/Order/utils/orderCollectionIdentity";
27
+ /** OrderData 中除大数组外的"顶层 header 字段"白名单,按需扩展。 */
28
+ var 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'];
29
+ function pickHeader(raw) {
30
+ var _raw$order_id;
31
+ var header = {
32
+ order_id: (_raw$order_id = raw === null || raw === void 0 ? void 0 : raw.order_id) !== null && _raw$order_id !== void 0 ? _raw$order_id : null
33
+ };
34
+ if (!raw || _typeof(raw) !== 'object') return header;
35
+ var _iterator = _createForOfIteratorHelper(HEADER_KEYS),
36
+ _step;
37
+ try {
38
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
39
+ var _key = _step.value;
40
+ if (raw[_key] !== undefined) header[_key] = raw[_key];
41
+ }
42
+ } catch (err) {
43
+ _iterator.e(err);
44
+ } finally {
45
+ _iterator.f();
46
+ }
47
+ return header;
48
+ }
49
+ function pickCustomer(raw) {
50
+ var _raw$customer_id, _raw$customer_name;
51
+ if (!raw || _typeof(raw) !== 'object') return null;
52
+ var explicit = raw.customer;
53
+ if (explicit && _typeof(explicit) === 'object') {
54
+ var _ref, _explicit$id, _ref2, _explicit$name, _explicit$phone, _explicit$email, _explicit$country_cal;
55
+ return _objectSpread({
56
+ id: (_ref = (_explicit$id = explicit.id) !== null && _explicit$id !== void 0 ? _explicit$id : raw.customer_id) !== null && _ref !== void 0 ? _ref : null,
57
+ name: (_ref2 = (_explicit$name = explicit.name) !== null && _explicit$name !== void 0 ? _explicit$name : raw.customer_name) !== null && _ref2 !== void 0 ? _ref2 : '',
58
+ phone: (_explicit$phone = explicit.phone) !== null && _explicit$phone !== void 0 ? _explicit$phone : raw.phone,
59
+ email: (_explicit$email = explicit.email) !== null && _explicit$email !== void 0 ? _explicit$email : raw.email,
60
+ country_calling_code: (_explicit$country_cal = explicit.country_calling_code) !== null && _explicit$country_cal !== void 0 ? _explicit$country_cal : raw.country_calling_code
61
+ }, explicit);
62
+ }
63
+ if (raw.customer_id == null && !raw.customer_name) return null;
64
+ return {
65
+ id: (_raw$customer_id = raw.customer_id) !== null && _raw$customer_id !== void 0 ? _raw$customer_id : null,
66
+ name: (_raw$customer_name = raw.customer_name) !== null && _raw$customer_name !== void 0 ? _raw$customer_name : '',
67
+ phone: raw.phone,
68
+ email: raw.email,
69
+ country_calling_code: raw.country_calling_code
70
+ };
71
+ }
72
+
73
+ /**
74
+ * 判定根 booking。沿用 ticketBooking 现有约定:
75
+ * `parent_id === 0` 视为根;其余为子(item_type === 'recurring_booking' 也按 parent_id 判定)。
76
+ * 见 `packages/private-materials/src/components/ticketBooking/index.tsx`:
77
+ * `type: booking.parent_id === 0 ? 'list' : 'detail'`。
78
+ */
79
+ function isRootBooking(booking) {
80
+ if (!booking || _typeof(booking) !== 'object') return false;
81
+ var parentId = booking.parent_id;
82
+ if (parentId === 0 || parentId === null || parentId === undefined) return true;
83
+ return false;
84
+ }
85
+ function indexBookingsByProductUid(bookings) {
86
+ var result = {};
87
+ var _iterator2 = _createForOfIteratorHelper(bookings),
88
+ _step2;
89
+ try {
90
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
91
+ var _b$metadata;
92
+ var b = _step2.value;
93
+ var uid = b && (b.product_uid || ((_b$metadata = b.metadata) === null || _b$metadata === void 0 ? void 0 : _b$metadata.product_uid)) || '';
94
+ if (!uid) continue;
95
+ var _key2 = String(uid);
96
+ if (!result[_key2]) result[_key2] = [];
97
+ result[_key2].push(b);
98
+ }
99
+ } catch (err) {
100
+ _iterator2.e(err);
101
+ } finally {
102
+ _iterator2.f();
103
+ }
104
+ return result;
105
+ }
106
+
107
+ /**
108
+ * 将 `/order/sales/{id}` 响应解析为 ISalesDetail。
109
+ *
110
+ * 注意:
111
+ * - 入参允许是 `{ data: OrderData }` 或直接 `OrderData`,自动识别。
112
+ * - products/bookings/payments 在此补齐集合身份;其余 runtime 字段由 OrderModule hydrate 负责。
113
+ * - 不做远程请求;不修改入参;返回新对象。
114
+ */
115
+ export function parseSalesResponse(input) {
116
+ var sourceRaw = input && _typeof(input) === 'object' && input.data && input.order_id == null ? input.data : input || {};
117
+ var raw = normalizeOrderCollections(sourceRaw).order;
118
+ var productsRaw = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.products) ? raw.products : [];
119
+ var products = productsRaw.map(function (p) {
120
+ var row = _objectSpread({}, p || {});
121
+ var metadata = row.metadata && _typeof(row.metadata) === 'object' ? _objectSpread({}, row.metadata) : {};
122
+ delete metadata.price_schema_version;
123
+ delete row.identity_key;
124
+ return _objectSpread(_objectSpread({}, row), {}, {
125
+ metadata: metadata
126
+ });
127
+ });
128
+ var bookingsRaw = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.bookings) ? raw.bookings : [];
129
+ var bookings = bookingsRaw.map(function (b) {
130
+ return _objectSpread({}, b || {});
131
+ });
132
+ var rootBooking = bookings.find(isRootBooking) || null;
133
+ var bookingsByProductUid = indexBookingsByProductUid(bookings);
134
+ var payments = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.payments) ? raw.payments.map(function (p) {
135
+ return _objectSpread({}, p || {});
136
+ }) : [];
137
+ var surcharges = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.surcharges) ? raw.surcharges.map(function (s) {
138
+ return _objectSpread({}, s || {});
139
+ }) : [];
140
+ var discount_list = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.discount_list) ? raw.discount_list.map(function (d) {
141
+ return _objectSpread({}, d || {});
142
+ }) : [];
143
+ var summary = raw !== null && raw !== void 0 && raw.summary && _typeof(raw.summary) === 'object' ? _objectSpread({}, raw.summary) : {};
144
+ return {
145
+ header: pickHeader(raw),
146
+ products: products,
147
+ bookings: bookings,
148
+ rootBooking: rootBooking,
149
+ bookingsByProductUid: bookingsByProductUid,
150
+ payments: payments,
151
+ surcharges: surcharges,
152
+ discount_list: discount_list,
153
+ customer: pickCustomer(raw),
154
+ summary: summary,
155
+ raw: raw
156
+ };
157
+ }
@@ -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,250 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import dayjs from 'dayjs';
8
+ import Decimal from 'decimal.js';
9
+ function toFiniteNumber(value) {
10
+ var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
11
+ var parsedValue = Number(value);
12
+ if (!Number.isFinite(parsedValue)) return fallback;
13
+ return parsedValue;
14
+ }
15
+ function toPositiveInt(value) {
16
+ var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
17
+ var parsedValue = Math.floor(Number(value));
18
+ if (!Number.isFinite(parsedValue) || parsedValue < 1) return fallback;
19
+ return parsedValue;
20
+ }
21
+ function toPriceString(value) {
22
+ return new Decimal(Number(value) || 0).toDecimalPlaces(2).toFixed(2);
23
+ }
24
+ function normalizeDateTime(value) {
25
+ if (typeof value !== 'string' || !value.trim()) return null;
26
+ var normalized = value.includes(':') ? value : "".concat(value, " 00:00:00");
27
+ var datetime = dayjs(normalized);
28
+ if (!datetime.isValid()) return null;
29
+ return datetime;
30
+ }
31
+ function buildBookingDateTime(date, time) {
32
+ if (typeof date !== 'string' || !date.trim()) return null;
33
+ var timeText = typeof time === 'string' && time.trim() ? time.trim() : '00:00';
34
+ var datetime = dayjs("".concat(date.trim(), " ").concat(timeText));
35
+ if (!datetime.isValid()) return null;
36
+ return datetime;
37
+ }
38
+ function getDurationUnit(type) {
39
+ var normalizedType = String(type || '').toLowerCase();
40
+ if (normalizedType === 'day' || normalizedType === 'days') return 'day';
41
+ if (normalizedType === 'minute' || normalizedType === 'minutes') return 'minute';
42
+ return null;
43
+ }
44
+ function getProductId(product) {
45
+ var _product$product_id;
46
+ var productId = toFiniteNumber((_product$product_id = product.product_id) !== null && _product$product_id !== void 0 ? _product$product_id : product.id, NaN);
47
+ if (!Number.isFinite(productId)) return null;
48
+ return productId;
49
+ }
50
+ function getProductVariantId(product) {
51
+ var _product$product_vari;
52
+ var variantId = toFiniteNumber((_product$product_vari = product.product_variant_id) !== null && _product$product_vari !== void 0 ? _product$product_vari : product.variant_id, 0);
53
+ if (!Number.isFinite(variantId) || variantId <= 0) return undefined;
54
+ return variantId;
55
+ }
56
+ function getFallbackPrice(params) {
57
+ var _ref, _ref2, _ref3, _params$fallback_pric;
58
+ var product = params.product || {};
59
+ return toPriceString((_ref = (_ref2 = (_ref3 = (_params$fallback_pric = params.fallback_price) !== null && _params$fallback_pric !== void 0 ? _params$fallback_pric : product.price) !== null && _ref3 !== void 0 ? _ref3 : product.selling_price) !== null && _ref2 !== void 0 ? _ref2 : product.original_price) !== null && _ref !== void 0 ? _ref : 0);
60
+ }
61
+ function getProductQuantity(product) {
62
+ var _product$num;
63
+ return toPositiveInt((_product$num = product.num) !== null && _product$num !== void 0 ? _product$num : product.quantity, 1);
64
+ }
65
+ function getBundleProductId(bundle) {
66
+ var _bundle$bundle_produc;
67
+ var productId = toFiniteNumber((_bundle$bundle_produc = bundle.bundle_product_id) !== null && _bundle$bundle_produc !== void 0 ? _bundle$bundle_produc : bundle._bundle_product_id, NaN);
68
+ if (!Number.isFinite(productId)) return null;
69
+ return productId;
70
+ }
71
+ function getBundleVariantId(bundle) {
72
+ var _bundle$bundle_varian;
73
+ var variantId = toFiniteNumber((_bundle$bundle_varian = bundle.bundle_variant_id) !== null && _bundle$bundle_varian !== void 0 ? _bundle$bundle_varian : bundle.variant_id, 0);
74
+ if (!Number.isFinite(variantId) || variantId <= 0) return undefined;
75
+ return variantId;
76
+ }
77
+ function getBundleFallbackPrice(bundle) {
78
+ var _ref4, _ref5, _ref6, _bundle$bundle_sellin;
79
+ return toPriceString((_ref4 = (_ref5 = (_ref6 = (_bundle$bundle_sellin = bundle.bundle_selling_price) !== null && _bundle$bundle_sellin !== void 0 ? _bundle$bundle_sellin : bundle.price) !== null && _ref6 !== void 0 ? _ref6 : bundle.original_price) !== null && _ref5 !== void 0 ? _ref5 : bundle.base_price) !== null && _ref4 !== void 0 ? _ref4 : 0);
80
+ }
81
+ function shouldSplitByDuration(duration, start, end) {
82
+ if (!duration) return false;
83
+ if (!start || !end || !end.isAfter(start)) return false;
84
+ var unit = getDurationUnit(duration.type);
85
+ var value = toFiniteNumber(duration.value);
86
+ return !!unit && value > 0;
87
+ }
88
+ function buildTimeSegments(params) {
89
+ var booking = params.booking || {};
90
+ var explicitDatetime = normalizeDateTime(params.datetime);
91
+ var bookingStart = buildBookingDateTime(booking.start_date, booking.start_time);
92
+ var start = bookingStart || explicitDatetime || dayjs();
93
+ var bookingEnd = buildBookingDateTime(booking.end_date, booking.end_time);
94
+ if (!shouldSplitByDuration(params.duration, start, bookingEnd)) {
95
+ return [{
96
+ start: start
97
+ }];
98
+ }
99
+ var unit = getDurationUnit(params.duration.type);
100
+ var value = toFiniteNumber(params.duration.value);
101
+ var segments = [];
102
+ var cursor = start;
103
+ var guard = 0;
104
+ while (cursor.isBefore(bookingEnd) && guard < 10000) {
105
+ var next = cursor.add(value, unit);
106
+ segments.push({
107
+ start: cursor,
108
+ end: next.isBefore(bookingEnd) ? next : bookingEnd !== null && bookingEnd !== void 0 ? bookingEnd : undefined
109
+ });
110
+ cursor = next;
111
+ guard += 1;
112
+ }
113
+ return segments.length ? segments : [{
114
+ start: start
115
+ }];
116
+ }
117
+ function formatTimePoint(datetime) {
118
+ return datetime.format('YYYY-MM-DD HH:mm:ss');
119
+ }
120
+ function buildPriceSegment(params) {
121
+ var _match$quotationShelf;
122
+ var timePoint = formatTimePoint(params.segment.start);
123
+ var match = params.quotation && params.productId !== null && params.quotation.getQuotationMatchForProduct ? params.quotation.getQuotationMatchForProduct({
124
+ productId: params.productId,
125
+ variantId: params.variantId,
126
+ datetime: timePoint,
127
+ channel: params.channel,
128
+ customer_id: params.customerId
129
+ }) : null;
130
+ var quotedPrice = match ? match.price : params.quotation && params.productId !== null ? params.quotation.getPriceForProduct({
131
+ productId: params.productId,
132
+ variantId: params.variantId,
133
+ datetime: timePoint,
134
+ channel: params.channel,
135
+ customer_id: params.customerId
136
+ }) : null;
137
+ var unitPrice = toPriceString(quotedPrice !== null && quotedPrice !== void 0 ? quotedPrice : params.fallbackPrice);
138
+ var quotationShelfId = quotedPrice !== null ? (_match$quotationShelf = match === null || match === void 0 ? void 0 : match.quotationShelfId) !== null && _match$quotationShelf !== void 0 ? _match$quotationShelf : params.quotation && params.productId !== null ? params.quotation.getQuotationShelfId({
139
+ productId: params.productId,
140
+ variantId: params.variantId,
141
+ datetime: timePoint,
142
+ channel: params.channel,
143
+ customer_id: params.customerId
144
+ }) : 0 : 0;
145
+ return {
146
+ start_datetime: timePoint,
147
+ end_datetime: params.segment.end ? formatTimePoint(params.segment.end) : undefined,
148
+ time_point: timePoint,
149
+ unit_price: unitPrice,
150
+ quantity: 1,
151
+ total_price: unitPrice,
152
+ quotation_shelf_id: quotationShelfId,
153
+ source: quotedPrice !== null ? 'quotation' : 'fallback'
154
+ };
155
+ }
156
+ function calculatePriceForProduct(params) {
157
+ var _segments$find;
158
+ var segments = params.segments.map(function (segment) {
159
+ return buildPriceSegment({
160
+ quotation: params.quotation,
161
+ productId: params.productId,
162
+ variantId: params.variantId,
163
+ customerId: params.customerId,
164
+ channel: params.channel,
165
+ fallbackPrice: params.fallbackPrice,
166
+ segment: segment
167
+ });
168
+ });
169
+ var unitPrice = segments.reduce(function (total, segment) {
170
+ return total.plus(segment.total_price);
171
+ }, new Decimal(0));
172
+ var totalPrice = unitPrice.times(params.quantity);
173
+ var quotationShelfId = ((_segments$find = segments.find(function (segment) {
174
+ return segment.quotation_shelf_id;
175
+ })) === null || _segments$find === void 0 ? void 0 : _segments$find.quotation_shelf_id) || 0;
176
+ return {
177
+ unitPrice: unitPrice,
178
+ totalPrice: totalPrice,
179
+ quotationShelfId: quotationShelfId,
180
+ segments: segments
181
+ };
182
+ }
183
+ function calculateBundlePrices(params, segments) {
184
+ var _params$product;
185
+ var bundleList = ((_params$product = params.product) === null || _params$product === void 0 ? void 0 : _params$product.product_bundle) || [];
186
+ if (!bundleList.length) return undefined;
187
+ return bundleList.map(function (bundle) {
188
+ var _bundle$bundle_id;
189
+ var productId = getBundleProductId(bundle);
190
+ var variantId = getBundleVariantId(bundle);
191
+ var quantity = getProductQuantity(bundle);
192
+ var price = calculatePriceForProduct({
193
+ quotation: params.quotation,
194
+ productId: productId,
195
+ variantId: variantId,
196
+ customerId: params.customer_id,
197
+ channel: params.channel,
198
+ quantity: quantity,
199
+ fallbackPrice: getBundleFallbackPrice(bundle),
200
+ segments: segments
201
+ });
202
+ return {
203
+ bundle_id: (_bundle$bundle_id = bundle.bundle_id) !== null && _bundle$bundle_id !== void 0 ? _bundle$bundle_id : bundle.id,
204
+ group_id: bundle.group_id,
205
+ bundle_group_id: bundle.bundle_group_id,
206
+ bundle_product_id: productId,
207
+ bundle_variant_id: variantId !== null && variantId !== void 0 ? variantId : 0,
208
+ unit_price: price.unitPrice.toDecimalPlaces(2).toFixed(2),
209
+ total_price: price.totalPrice.toDecimalPlaces(2).toFixed(2),
210
+ quantity: quantity,
211
+ quotation_shelf_id: price.quotationShelfId,
212
+ source: price.segments.some(function (segment) {
213
+ return segment.source === 'quotation';
214
+ }) ? 'quotation' : 'fallback',
215
+ segments: price.segments
216
+ };
217
+ });
218
+ }
219
+ export function calculateBaseSalesProductBookingPrice(params) {
220
+ var product = params.product || {};
221
+ var productId = getProductId(product);
222
+ var variantId = getProductVariantId(product);
223
+ var productQuantity = getProductQuantity(product);
224
+ var fallbackPrice = getFallbackPrice(params);
225
+ var timeSegments = buildTimeSegments(params);
226
+ var price = calculatePriceForProduct({
227
+ quotation: params.quotation,
228
+ productId: productId,
229
+ variantId: variantId,
230
+ customerId: params.customer_id,
231
+ channel: params.channel,
232
+ quantity: productQuantity,
233
+ fallbackPrice: fallbackPrice,
234
+ segments: timeSegments
235
+ });
236
+ var bundlePrices = calculateBundlePrices(params, timeSegments);
237
+ return _objectSpread({
238
+ product_id: productId,
239
+ product_variant_id: variantId !== null && variantId !== void 0 ? variantId : 0,
240
+ customer_id: params.customer_id,
241
+ unit_price: price.unitPrice.toDecimalPlaces(2).toFixed(2),
242
+ total_price: price.totalPrice.toDecimalPlaces(2).toFixed(2),
243
+ quantity: productQuantity,
244
+ duration: params.duration,
245
+ quotation_shelf_id: price.quotationShelfId,
246
+ segments: price.segments
247
+ }, bundlePrices ? {
248
+ product_bundle: bundlePrices
249
+ } : {});
250
+ }
@@ -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;