@pisell/pisellos 0.0.568 → 0.0.570

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/dist/effects/index.d.ts +2 -2
  2. package/dist/model/strategy/adapter/dataVariant/type.d.ts +3 -3
  3. package/dist/model/strategy/adapter/itemRule/type.d.ts +6 -6
  4. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  5. package/dist/model/strategy/adapter/promotion/type.d.ts +5 -5
  6. package/dist/model/strategy/adapter/walletPass/utils.js +7 -4
  7. package/dist/model/strategy/type.d.ts +1 -1
  8. package/dist/modules/BaseModule.d.ts +2 -2
  9. package/dist/modules/BaseModule.js +4 -4
  10. package/dist/modules/BookingContext/index.d.ts +48 -0
  11. package/dist/modules/BookingContext/index.js +566 -0
  12. package/dist/modules/BookingContext/types.d.ts +102 -0
  13. package/dist/modules/BookingContext/types.js +51 -0
  14. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  15. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  16. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  17. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  18. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  19. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  20. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  21. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  22. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  23. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  24. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  25. package/dist/modules/BookingContext/utils/index.js +11 -0
  26. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  27. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  28. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  29. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  30. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  31. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  32. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  33. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  34. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  35. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  36. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  37. package/dist/modules/BookingContext/utils/resources.js +486 -0
  38. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  39. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  40. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  41. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  42. package/dist/modules/Cart/utils/cartProduct.js +26 -5
  43. package/dist/modules/Cart/utils/changePrice.js +27 -20
  44. package/dist/modules/Customer/index.d.ts +20 -0
  45. package/dist/modules/Customer/index.js +172 -83
  46. package/dist/modules/Customer/types.d.ts +3 -1
  47. package/dist/modules/Discount/index.d.ts +2 -1
  48. package/dist/modules/Discount/index.js +37 -9
  49. package/dist/modules/Discount/types.d.ts +2 -1
  50. package/dist/modules/Holder/types.d.ts +1 -1
  51. package/dist/modules/OpenData/index.d.ts +8 -0
  52. package/dist/modules/OpenData/index.js +36 -16
  53. package/dist/modules/OpenData/types.d.ts +1 -1
  54. package/dist/modules/Order/index.d.ts +448 -23
  55. package/dist/modules/Order/index.js +5417 -561
  56. package/dist/modules/Order/types.d.ts +693 -88
  57. package/dist/modules/Order/types.js +68 -1
  58. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  59. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  60. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  61. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  62. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  63. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  64. package/dist/modules/Order/utils.d.ts +167 -18
  65. package/dist/modules/Order/utils.js +960 -165
  66. package/dist/modules/Payment/index.d.ts +10 -9
  67. package/dist/modules/Payment/index.js +465 -703
  68. package/dist/modules/Payment/types.d.ts +47 -23
  69. package/dist/modules/Payment/utils.d.ts +1 -1
  70. package/dist/modules/Payment/utils.js +4 -3
  71. package/dist/modules/Payment/walletpass.js +44 -29
  72. package/dist/modules/Product/index.d.ts +1 -1
  73. package/dist/modules/Product/types.d.ts +29 -7
  74. package/dist/modules/ProductList/index.d.ts +17 -13
  75. package/dist/modules/ProductList/index.js +184 -74
  76. package/dist/modules/ProductList/types.d.ts +17 -0
  77. package/dist/modules/Quotation/index.d.ts +22 -2
  78. package/dist/modules/Quotation/index.js +108 -42
  79. package/dist/modules/Quotation/types.d.ts +19 -0
  80. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  81. package/dist/modules/ResourcePlanner/index.js +181 -0
  82. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  83. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  84. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  85. package/dist/modules/ResourcePlanner/types.js +1 -0
  86. package/dist/modules/Rules/index.d.ts +8 -10
  87. package/dist/modules/Rules/index.js +222 -109
  88. package/dist/modules/Rules/types.d.ts +15 -4
  89. package/dist/modules/SalesSummary/index.d.ts +23 -26
  90. package/dist/modules/SalesSummary/index.js +152 -46
  91. package/dist/modules/SalesSummary/types.d.ts +9 -1
  92. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  93. package/dist/modules/SalesSummary/utils.js +803 -163
  94. package/dist/modules/ScanOrderLogger/types.d.ts +2 -2
  95. package/dist/modules/Schedule/getDateIsInSchedule.d.ts +1 -1
  96. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -7
  97. package/dist/modules/Schedule/index.d.ts +18 -5
  98. package/dist/modules/Schedule/index.js +78 -24
  99. package/dist/modules/Schedule/type.d.ts +7 -7
  100. package/dist/modules/Schedule/types.d.ts +11 -9
  101. package/dist/modules/Summary/index.js +4 -3
  102. package/dist/modules/SurchargeList/index.d.ts +18 -0
  103. package/dist/modules/SurchargeList/index.js +185 -0
  104. package/dist/modules/SurchargeList/types.d.ts +15 -0
  105. package/dist/modules/SurchargeList/types.js +1 -0
  106. package/dist/modules/index.d.ts +3 -0
  107. package/dist/modules/index.js +4 -1
  108. package/dist/plugins/app.d.ts +2 -0
  109. package/dist/plugins/request.d.ts +3 -2
  110. package/dist/server/index.d.ts +462 -8
  111. package/dist/server/index.js +6112 -656
  112. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  113. package/dist/server/modules/floor-plan/index.js +595 -0
  114. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  115. package/dist/server/modules/floor-plan/types.js +13 -0
  116. package/dist/server/modules/index.d.ts +7 -2
  117. package/dist/server/modules/index.js +6 -0
  118. package/dist/server/modules/menu/types.d.ts +1 -1
  119. package/dist/server/modules/order/index.d.ts +207 -14
  120. package/dist/server/modules/order/index.js +2326 -379
  121. package/dist/server/modules/order/types.d.ts +91 -20
  122. package/dist/server/modules/order/types.js +14 -1
  123. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  124. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  125. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  126. package/dist/server/modules/payment/index.d.ts +28 -0
  127. package/dist/server/modules/payment/index.js +305 -0
  128. package/dist/server/modules/payment/types.d.ts +9 -0
  129. package/dist/server/modules/payment/types.js +1 -0
  130. package/dist/server/modules/products/index.d.ts +105 -14
  131. package/dist/server/modules/products/index.js +1393 -516
  132. package/dist/server/modules/products/types.d.ts +35 -2
  133. package/dist/server/modules/products/types.js +4 -0
  134. package/dist/server/modules/quotation/index.d.ts +39 -0
  135. package/dist/server/modules/quotation/index.js +278 -66
  136. package/dist/server/modules/resource/index.d.ts +2 -3
  137. package/dist/server/modules/resource/index.js +108 -86
  138. package/dist/server/modules/resource/types.d.ts +1 -1
  139. package/dist/server/modules/schedule/index.d.ts +6 -4
  140. package/dist/server/modules/schedule/index.js +116 -85
  141. package/dist/server/modules/schedule/utils.d.ts +1 -1
  142. package/dist/server/test.json +713 -0
  143. package/dist/server/types.d.ts +6 -4
  144. package/dist/server/utils/product.js +2 -2
  145. package/dist/server/utils/small-ticket.d.ts +71 -0
  146. package/dist/server/utils/small-ticket.js +963 -0
  147. package/dist/solution/BaseSales/index.d.ts +378 -0
  148. package/dist/solution/BaseSales/index.js +4006 -0
  149. package/dist/solution/BaseSales/types.d.ts +394 -0
  150. package/dist/solution/BaseSales/types.js +40 -0
  151. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  152. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  153. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  154. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  155. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  156. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  157. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  158. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  159. package/dist/solution/BaseSales/utils.d.ts +40 -0
  160. package/dist/solution/BaseSales/utils.js +263 -0
  161. package/dist/solution/BookingByStep/index.d.ts +2 -2
  162. package/dist/solution/BookingByStep/utils/resources.d.ts +1 -1
  163. package/dist/solution/BookingTicket/index.d.ts +382 -25
  164. package/dist/solution/BookingTicket/index.js +2506 -443
  165. package/dist/solution/BookingTicket/types.d.ts +191 -6
  166. package/dist/solution/BookingTicket/types.js +83 -10
  167. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  168. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  169. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  170. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  171. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  172. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  173. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  174. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  175. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  176. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  177. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  178. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  179. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  180. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  181. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  182. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  183. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  184. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +41 -1
  185. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  186. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  187. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  188. package/dist/solution/BookingTicket/utils/scan/handleScan.js +11 -3
  189. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  190. package/dist/solution/BookingTicket/utils/scan/index.js +20 -8
  191. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  192. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  193. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  194. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  195. package/dist/solution/Checkout/index.d.ts +1 -0
  196. package/dist/solution/Checkout/index.js +25 -34
  197. package/dist/solution/Checkout/utils/index.js +4 -4
  198. package/dist/solution/RegisterAndLogin/config.js +2 -10
  199. package/dist/solution/Sales/index.d.ts +50 -5
  200. package/dist/solution/Sales/index.js +484 -92
  201. package/dist/solution/Sales/types.d.ts +29 -5
  202. package/dist/solution/ScanOrder/index.d.ts +27 -21
  203. package/dist/solution/ScanOrder/index.js +499 -434
  204. package/dist/solution/ScanOrder/types.d.ts +38 -16
  205. package/dist/solution/ScanOrder/types.js +4 -5
  206. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  207. package/dist/solution/ScanOrder/utils.js +109 -34
  208. package/dist/solution/ShopDiscount/index.js +4 -4
  209. package/dist/solution/ShopDiscount/types.d.ts +1 -1
  210. package/dist/solution/ShopDiscount/utils.d.ts +2 -2
  211. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  212. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  213. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  214. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  215. package/dist/solution/VenueBooking/index.d.ts +29 -20
  216. package/dist/solution/VenueBooking/index.js +301 -213
  217. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  218. package/dist/solution/VenueBooking/types.d.ts +1 -1
  219. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  220. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  221. package/dist/solution/index.d.ts +2 -0
  222. package/dist/solution/index.js +3 -1
  223. package/dist/types/index.d.ts +12 -2
  224. package/dist/utils/task.d.ts +2 -2
  225. package/dist/utils/watch.d.ts +2 -2
  226. package/lib/effects/index.d.ts +2 -2
  227. package/lib/model/strategy/adapter/dataVariant/type.d.ts +3 -3
  228. package/lib/model/strategy/adapter/itemRule/type.d.ts +6 -6
  229. package/lib/model/strategy/adapter/promotion/evaluator.js +3 -2
  230. package/lib/model/strategy/adapter/promotion/type.d.ts +5 -5
  231. package/lib/model/strategy/adapter/walletPass/utils.js +6 -4
  232. package/lib/model/strategy/type.d.ts +1 -1
  233. package/lib/modules/BaseModule.d.ts +2 -2
  234. package/lib/modules/BaseModule.js +4 -4
  235. package/lib/modules/BookingContext/index.d.ts +48 -0
  236. package/lib/modules/BookingContext/index.js +390 -0
  237. package/lib/modules/BookingContext/types.d.ts +102 -0
  238. package/lib/modules/BookingContext/types.js +48 -0
  239. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  240. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +286 -0
  241. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  242. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +148 -0
  243. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  244. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +242 -0
  245. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  246. package/lib/modules/BookingContext/utils/flexible.js +63 -0
  247. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  248. package/lib/modules/BookingContext/utils/formatResourceList.js +35 -0
  249. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  250. package/lib/modules/BookingContext/utils/index.js +126 -0
  251. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  252. package/lib/modules/BookingContext/utils/noResource.js +78 -0
  253. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  254. package/lib/modules/BookingContext/utils/orderLineDisplay.js +29 -0
  255. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  256. package/lib/modules/BookingContext/utils/productExtend.js +330 -0
  257. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  258. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  259. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  260. package/lib/modules/BookingContext/utils/resourceSelection.js +24 -0
  261. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  262. package/lib/modules/BookingContext/utils/resources.js +419 -0
  263. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  264. package/lib/modules/BookingContext/utils/serviceTimes.js +161 -0
  265. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  266. package/lib/modules/BookingContext/utils/timeSlices.js +114 -0
  267. package/lib/modules/Cart/utils/cartProduct.js +27 -5
  268. package/lib/modules/Cart/utils/changePrice.js +20 -14
  269. package/lib/modules/Customer/index.d.ts +20 -0
  270. package/lib/modules/Customer/index.js +63 -10
  271. package/lib/modules/Customer/types.d.ts +3 -1
  272. package/lib/modules/Discount/index.d.ts +2 -1
  273. package/lib/modules/Discount/index.js +18 -2
  274. package/lib/modules/Discount/types.d.ts +2 -1
  275. package/lib/modules/Holder/types.d.ts +1 -1
  276. package/lib/modules/OpenData/index.d.ts +8 -0
  277. package/lib/modules/OpenData/index.js +21 -3
  278. package/lib/modules/OpenData/types.d.ts +1 -1
  279. package/lib/modules/Order/index.d.ts +448 -23
  280. package/lib/modules/Order/index.js +3641 -308
  281. package/lib/modules/Order/types.d.ts +693 -88
  282. package/lib/modules/Order/types.js +55 -1
  283. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  284. package/lib/modules/Order/utils/bundleDiscountHydration.js +106 -0
  285. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  286. package/lib/modules/Order/utils/manualProductDiscount.js +207 -0
  287. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  288. package/lib/modules/Order/utils/orderCollectionIdentity.js +353 -0
  289. package/lib/modules/Order/utils.d.ts +167 -18
  290. package/lib/modules/Order/utils.js +974 -138
  291. package/lib/modules/Payment/index.d.ts +10 -9
  292. package/lib/modules/Payment/index.js +30 -124
  293. package/lib/modules/Payment/types.d.ts +47 -23
  294. package/lib/modules/Payment/utils.d.ts +1 -1
  295. package/lib/modules/Payment/utils.js +4 -3
  296. package/lib/modules/Payment/walletpass.js +16 -6
  297. package/lib/modules/Product/index.d.ts +1 -1
  298. package/lib/modules/Product/types.d.ts +29 -7
  299. package/lib/modules/ProductList/index.d.ts +17 -13
  300. package/lib/modules/ProductList/index.js +92 -51
  301. package/lib/modules/ProductList/types.d.ts +17 -0
  302. package/lib/modules/Quotation/index.d.ts +22 -2
  303. package/lib/modules/Quotation/index.js +76 -20
  304. package/lib/modules/Quotation/types.d.ts +19 -0
  305. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  306. package/lib/modules/ResourcePlanner/index.js +147 -0
  307. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  308. package/lib/modules/ResourcePlanner/planner.js +895 -0
  309. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  310. package/lib/modules/ResourcePlanner/types.js +5 -0
  311. package/lib/modules/Rules/index.d.ts +8 -10
  312. package/lib/modules/Rules/index.js +153 -61
  313. package/lib/modules/Rules/types.d.ts +15 -4
  314. package/lib/modules/SalesSummary/index.d.ts +23 -26
  315. package/lib/modules/SalesSummary/index.js +84 -16
  316. package/lib/modules/SalesSummary/types.d.ts +9 -1
  317. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  318. package/lib/modules/SalesSummary/utils.js +616 -111
  319. package/lib/modules/ScanOrderLogger/types.d.ts +2 -2
  320. package/lib/modules/Schedule/getDateIsInSchedule.d.ts +1 -1
  321. package/lib/modules/Schedule/getDateIsInSchedule.js +14 -7
  322. package/lib/modules/Schedule/index.d.ts +18 -5
  323. package/lib/modules/Schedule/index.js +49 -14
  324. package/lib/modules/Schedule/type.d.ts +7 -7
  325. package/lib/modules/Schedule/types.d.ts +11 -9
  326. package/lib/modules/Summary/index.js +2 -2
  327. package/lib/modules/SurchargeList/index.d.ts +18 -0
  328. package/lib/modules/SurchargeList/index.js +95 -0
  329. package/lib/modules/SurchargeList/types.d.ts +15 -0
  330. package/lib/modules/SurchargeList/types.js +5 -0
  331. package/lib/modules/index.d.ts +3 -0
  332. package/lib/modules/index.js +33 -0
  333. package/lib/plugins/app.d.ts +2 -0
  334. package/lib/plugins/request.d.ts +3 -2
  335. package/lib/server/index.d.ts +462 -8
  336. package/lib/server/index.js +3901 -205
  337. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  338. package/lib/server/modules/floor-plan/index.js +306 -0
  339. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  340. package/lib/server/modules/floor-plan/types.js +19 -0
  341. package/lib/server/modules/index.d.ts +7 -2
  342. package/lib/server/modules/index.js +21 -0
  343. package/lib/server/modules/menu/types.d.ts +1 -1
  344. package/lib/server/modules/order/index.d.ts +207 -14
  345. package/lib/server/modules/order/index.js +1324 -141
  346. package/lib/server/modules/order/types.d.ts +91 -20
  347. package/lib/server/modules/order/types.js +11 -1
  348. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  349. package/lib/server/modules/order/utils/filterBookings.js +119 -11
  350. package/lib/server/modules/order/utils/filterOrders.js +238 -13
  351. package/lib/server/modules/payment/index.d.ts +28 -0
  352. package/lib/server/modules/payment/index.js +168 -0
  353. package/lib/server/modules/payment/types.d.ts +9 -0
  354. package/lib/server/modules/payment/types.js +5 -0
  355. package/lib/server/modules/products/index.d.ts +105 -14
  356. package/lib/server/modules/products/index.js +588 -97
  357. package/lib/server/modules/products/types.d.ts +35 -2
  358. package/lib/server/modules/products/types.js +3 -0
  359. package/lib/server/modules/quotation/index.d.ts +39 -0
  360. package/lib/server/modules/quotation/index.js +145 -1
  361. package/lib/server/modules/resource/index.d.ts +2 -3
  362. package/lib/server/modules/resource/index.js +71 -45
  363. package/lib/server/modules/resource/types.d.ts +1 -1
  364. package/lib/server/modules/schedule/index.d.ts +6 -4
  365. package/lib/server/modules/schedule/index.js +55 -44
  366. package/lib/server/modules/schedule/utils.d.ts +1 -1
  367. package/lib/server/test.json +713 -0
  368. package/lib/server/types.d.ts +6 -4
  369. package/lib/server/utils/product.js +2 -2
  370. package/lib/server/utils/small-ticket.d.ts +71 -0
  371. package/lib/server/utils/small-ticket.js +926 -0
  372. package/lib/solution/BaseSales/index.d.ts +378 -0
  373. package/lib/solution/BaseSales/index.js +2367 -0
  374. package/lib/solution/BaseSales/types.d.ts +394 -0
  375. package/lib/solution/BaseSales/types.js +47 -0
  376. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  377. package/lib/solution/BaseSales/utils/cartPromotion.js +1155 -0
  378. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  379. package/lib/solution/BaseSales/utils/parseSalesResponse.js +140 -0
  380. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  381. package/lib/solution/BaseSales/utils/quotationPrice.js +231 -0
  382. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  383. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +215 -0
  384. package/lib/solution/BaseSales/utils.d.ts +40 -0
  385. package/lib/solution/BaseSales/utils.js +259 -0
  386. package/lib/solution/BookingByStep/index.d.ts +2 -2
  387. package/lib/solution/BookingByStep/utils/resources.d.ts +1 -1
  388. package/lib/solution/BookingTicket/index.d.ts +382 -25
  389. package/lib/solution/BookingTicket/index.js +1350 -76
  390. package/lib/solution/BookingTicket/types.d.ts +191 -6
  391. package/lib/solution/BookingTicket/types.js +71 -10
  392. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  393. package/lib/solution/BookingTicket/utils/addProductDecision.js +353 -0
  394. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  395. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +94 -0
  396. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  397. package/lib/solution/BookingTicket/utils/bookingStatus.js +136 -0
  398. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  399. package/lib/solution/BookingTicket/utils/cartView.js +200 -0
  400. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  401. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  402. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  403. package/lib/solution/BookingTicket/utils/orderCustomer.js +35 -0
  404. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  405. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +387 -0
  406. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  407. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +220 -0
  408. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  409. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +24 -3
  410. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  411. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +64 -0
  412. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  413. package/lib/solution/BookingTicket/utils/scan/handleScan.js +4 -2
  414. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  415. package/lib/solution/BookingTicket/utils/scan/index.js +14 -2
  416. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  417. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +115 -0
  418. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  419. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +83 -0
  420. package/lib/solution/Checkout/index.d.ts +1 -0
  421. package/lib/solution/Checkout/index.js +18 -19
  422. package/lib/solution/Checkout/utils/index.js +4 -4
  423. package/lib/solution/RegisterAndLogin/config.js +2 -10
  424. package/lib/solution/Sales/index.d.ts +50 -5
  425. package/lib/solution/Sales/index.js +296 -39
  426. package/lib/solution/Sales/types.d.ts +29 -5
  427. package/lib/solution/ScanOrder/index.d.ts +27 -21
  428. package/lib/solution/ScanOrder/index.js +144 -103
  429. package/lib/solution/ScanOrder/types.d.ts +38 -16
  430. package/lib/solution/ScanOrder/types.js +4 -5
  431. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  432. package/lib/solution/ScanOrder/utils.js +98 -26
  433. package/lib/solution/ShopDiscount/index.js +3 -3
  434. package/lib/solution/ShopDiscount/types.d.ts +1 -1
  435. package/lib/solution/ShopDiscount/utils.d.ts +2 -2
  436. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  437. package/lib/solution/UnifiedBookingSales/index.js +1050 -0
  438. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  439. package/lib/solution/UnifiedBookingSales/types.js +14 -0
  440. package/lib/solution/VenueBooking/index.d.ts +29 -20
  441. package/lib/solution/VenueBooking/index.js +169 -94
  442. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  443. package/lib/solution/VenueBooking/types.d.ts +1 -1
  444. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  445. package/lib/solution/VenueBooking/utils/slotMerge.js +9 -3
  446. package/lib/solution/index.d.ts +2 -0
  447. package/lib/solution/index.js +22 -0
  448. package/lib/types/index.d.ts +12 -2
  449. package/lib/utils/task.d.ts +2 -2
  450. package/lib/utils/watch.d.ts +2 -2
  451. package/package.json +18 -19
  452. package/dist/model/strategy/adapter/promotion/index.d.ts +0 -4
  453. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  454. package/lib/model/strategy/adapter/promotion/index.d.ts +0 -4
  455. package/lib/solution/Checkout/appointmentDemo.json +0 -1
@@ -0,0 +1,353 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.applyOrderCollectionUidRemaps = applyOrderCollectionUidRemaps;
7
+ exports.buildOrderCollectionFallbackUid = buildOrderCollectionFallbackUid;
8
+ exports.createUuidV4 = createUuidV4;
9
+ exports.getOrderCollectionPersistentId = getOrderCollectionPersistentId;
10
+ exports.getOrderCollectionReferenceUid = getOrderCollectionReferenceUid;
11
+ exports.getOrderCollectionUid = getOrderCollectionUid;
12
+ exports.isBlankOrderCollectionIdentity = isBlankOrderCollectionIdentity;
13
+ exports.isSameOrderCollectionItem = isSameOrderCollectionItem;
14
+ exports.mergeOrderCollectionItems = mergeOrderCollectionItems;
15
+ exports.normalizeOrderCollection = normalizeOrderCollection;
16
+ exports.normalizeOrderCollections = normalizeOrderCollections;
17
+ exports.setOrderCollectionUid = setOrderCollectionUid;
18
+ var _lodashEs = require("lodash-es");
19
+ const IDENTITY_CONFIG = {
20
+ product: {
21
+ persistentIdField: 'order_detail_id',
22
+ uidField: 'unique_identification_number',
23
+ fallbackPrefix: 'os-fallback:product:order-detail'
24
+ },
25
+ booking: {
26
+ persistentIdField: 'schedule_event_id',
27
+ uidField: 'unique_identification_number',
28
+ fallbackPrefix: 'os-fallback:booking:schedule-event'
29
+ },
30
+ payment: {
31
+ persistentIdField: 'order_payment_id',
32
+ uidField: 'unique_payment_number',
33
+ fallbackPrefix: 'os-fallback:payment:order-payment'
34
+ }
35
+ };
36
+ function createUuidV4() {
37
+ const template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
38
+ return template.replace(/[xy]/g, char => {
39
+ const randomValue = Math.floor(Math.random() * 16);
40
+ const value = char === 'x' ? randomValue : randomValue & 0x3 | 0x8;
41
+ return value.toString(16);
42
+ });
43
+ }
44
+ function isBlankOrderCollectionIdentity(value) {
45
+ return value === undefined || value === null || value === '';
46
+ }
47
+ function getOrderCollectionPersistentId(kind, item) {
48
+ const record = item;
49
+ if (!record) return null;
50
+ const value = record[IDENTITY_CONFIG[kind].persistentIdField];
51
+ if (isBlankOrderCollectionIdentity(value)) return null;
52
+ return String(value);
53
+ }
54
+ function getOrderCollectionUid(kind, item) {
55
+ const record = item;
56
+ if (!record) return null;
57
+ const uidField = IDENTITY_CONFIG[kind].uidField;
58
+ const metadataValue = record.metadata?.[uidField];
59
+ if (!isBlankOrderCollectionIdentity(metadataValue)) return String(metadataValue);
60
+ const topLevelValue = record[uidField];
61
+ if (isBlankOrderCollectionIdentity(topLevelValue)) return null;
62
+ return String(topLevelValue);
63
+ }
64
+ function buildOrderCollectionFallbackUid(kind, persistentId) {
65
+ return `${IDENTITY_CONFIG[kind].fallbackPrefix}:${String(persistentId)}`;
66
+ }
67
+ function getOrderCollectionReferenceUid(kind, item) {
68
+ const uid = getOrderCollectionUid(kind, item);
69
+ if (uid) return uid;
70
+ const persistentId = getOrderCollectionPersistentId(kind, item);
71
+ return persistentId ? buildOrderCollectionFallbackUid(kind, persistentId) : null;
72
+ }
73
+ function setOrderCollectionUid(kind, item, uid) {
74
+ const record = (0, _lodashEs.cloneDeep)(item || {});
75
+ const uidField = IDENTITY_CONFIG[kind].uidField;
76
+ record.metadata = {
77
+ ...(record.metadata && typeof record.metadata === 'object' ? record.metadata : {}),
78
+ [uidField]: uid
79
+ };
80
+ delete record[uidField];
81
+ return record;
82
+ }
83
+
84
+ /**
85
+ * 持久化行 ID 是服务端事实主键;只有至少一侧尚未持久化时,才允许用 runtime UID 对齐。
86
+ */
87
+ function isSameOrderCollectionItem(kind, left, right) {
88
+ const leftPersistentId = getOrderCollectionPersistentId(kind, left);
89
+ const rightPersistentId = getOrderCollectionPersistentId(kind, right);
90
+ if (leftPersistentId && rightPersistentId) {
91
+ return leftPersistentId === rightPersistentId;
92
+ }
93
+ const leftUid = getOrderCollectionUid(kind, left);
94
+ const rightUid = getOrderCollectionUid(kind, right);
95
+ return Boolean(leftUid && rightUid && leftUid === rightUid);
96
+ }
97
+ function mergeOrderCollectionItems(kind, currentItem, incomingItem, options) {
98
+ const current = (0, _lodashEs.cloneDeep)(currentItem || {});
99
+ const incoming = (0, _lodashEs.cloneDeep)(incomingItem || {});
100
+ const persistentIdField = IDENTITY_CONFIG[kind].persistentIdField;
101
+ const currentPersistentIdValue = current[persistentIdField];
102
+ const incomingPersistentIdValue = incoming[persistentIdField];
103
+ const incomingUid = getOrderCollectionUid(kind, incoming);
104
+ const currentUid = getOrderCollectionUid(kind, current);
105
+ const persistentId = getOrderCollectionPersistentId(kind, incoming) || getOrderCollectionPersistentId(kind, current);
106
+ const merged = {
107
+ ...current,
108
+ ...incoming,
109
+ metadata: {
110
+ ...(current.metadata && typeof current.metadata === 'object' ? current.metadata : {}),
111
+ ...(incoming.metadata && typeof incoming.metadata === 'object' ? incoming.metadata : {})
112
+ }
113
+ };
114
+
115
+ // UID 对齐允许一侧尚未持久化,但稀疏 incoming 的 null/空值不能擦掉已存在行 ID。
116
+ if (!isBlankOrderCollectionIdentity(incomingPersistentIdValue)) {
117
+ merged[persistentIdField] = incomingPersistentIdValue;
118
+ } else if (!isBlankOrderCollectionIdentity(currentPersistentIdValue)) {
119
+ merged[persistentIdField] = currentPersistentIdValue;
120
+ }
121
+ const incomingUidIsDerived = Boolean(incomingUid && persistentId && (incomingUid === buildOrderCollectionFallbackUid(kind, persistentId) || incomingUid.startsWith(`${buildOrderCollectionFallbackUid(kind, persistentId)}:conflict:`)));
122
+ const uid = (incomingUid && !incomingUidIsDerived ? incomingUid : null) || currentUid || incomingUid || (options?.ensureUid === false ? null : persistentId ? buildOrderCollectionFallbackUid(kind, persistentId) : options?.createAnonymousUid?.() || createUuidV4());
123
+ return uid ? setOrderCollectionUid(kind, merged, uid) : merged;
124
+ }
125
+ function createEmptyIdentityStats() {
126
+ return {
127
+ backfilledUidCount: 0,
128
+ collapsedDuplicateCount: 0,
129
+ uidConflictCount: 0,
130
+ anonymousRowCount: 0
131
+ };
132
+ }
133
+ function allocateAnonymousUid(occupiedUids, createAnonymousUid) {
134
+ let uid = createAnonymousUid();
135
+ while (occupiedUids.has(uid)) uid = createAnonymousUid();
136
+ return uid;
137
+ }
138
+ function allocatePersistentConflictUid(kind, persistentId, occupiedUids) {
139
+ const fallbackUid = buildOrderCollectionFallbackUid(kind, persistentId);
140
+ if (!occupiedUids.has(fallbackUid)) return fallbackUid;
141
+
142
+ // 极端情况下其它行可能把本行 fallback 当作显式 UID 使用;继续派生稳定后缀,
143
+ // 避免修复冲突后仍留下重复 UID。规范化结果一旦持久化,后续读取保持幂等。
144
+ let suffix = 1;
145
+ let candidate = `${fallbackUid}:conflict:${suffix}`;
146
+ while (occupiedUids.has(candidate)) {
147
+ suffix += 1;
148
+ candidate = `${fallbackUid}:conflict:${suffix}`;
149
+ }
150
+ return candidate;
151
+ }
152
+
153
+ /**
154
+ * 规范化单一数组:强身份重复时保留首次位置、用最后一条业务字段覆盖,并统一补 UID。
155
+ */
156
+ function normalizeOrderCollection(kind, items, options) {
157
+ const stats = createEmptyIdentityStats();
158
+ const uidRemaps = [];
159
+ const result = [];
160
+ const ensureUid = options?.ensureUid !== false;
161
+ const createAnonymousUid = options?.createAnonymousUid || createUuidV4;
162
+ for (const rawItem of items || []) {
163
+ const item = (0, _lodashEs.cloneDeep)(rawItem);
164
+ const existingIndex = result.findIndex(existing => isSameOrderCollectionItem(kind, existing, item));
165
+ if (existingIndex === -1) {
166
+ result.push(item);
167
+ continue;
168
+ }
169
+ const previousReferenceUid = getOrderCollectionReferenceUid(kind, result[existingIndex]);
170
+ const incomingReferenceUid = getOrderCollectionReferenceUid(kind, item);
171
+ result[existingIndex] = mergeOrderCollectionItems(kind, result[existingIndex], item, {
172
+ ensureUid: false
173
+ });
174
+ const nextUid = getOrderCollectionUid(kind, result[existingIndex]);
175
+ if (nextUid) {
176
+ for (const from of new Set([previousReferenceUid, incomingReferenceUid])) {
177
+ if (!from || from === nextUid) continue;
178
+ uidRemaps.push({
179
+ kind,
180
+ from,
181
+ to: nextUid,
182
+ persistentId: getOrderCollectionPersistentId(kind, result[existingIndex])
183
+ });
184
+ }
185
+ }
186
+ stats.collapsedDuplicateCount += 1;
187
+ }
188
+ if (!ensureUid) return {
189
+ items: result,
190
+ stats,
191
+ uidRemaps
192
+ };
193
+ const occupiedUids = new Set();
194
+ for (let index = 0; index < result.length; index += 1) {
195
+ let item = result[index];
196
+ const persistentId = getOrderCollectionPersistentId(kind, item);
197
+ let uid = getOrderCollectionUid(kind, item);
198
+ if (!uid) {
199
+ uid = persistentId ? buildOrderCollectionFallbackUid(kind, persistentId) : allocateAnonymousUid(occupiedUids, createAnonymousUid);
200
+ item = setOrderCollectionUid(kind, item, uid);
201
+ result[index] = item;
202
+ stats.backfilledUidCount += 1;
203
+ if (!persistentId) stats.anonymousRowCount += 1;
204
+ }
205
+ if (occupiedUids.has(uid)) {
206
+ const replacementUid = persistentId ? allocatePersistentConflictUid(kind, persistentId, occupiedUids) : allocateAnonymousUid(occupiedUids, createAnonymousUid);
207
+ result[index] = setOrderCollectionUid(kind, item, replacementUid);
208
+ uidRemaps.push({
209
+ kind,
210
+ from: uid,
211
+ to: replacementUid,
212
+ persistentId,
213
+ scope: 'linked-owner',
214
+ referenceOwnerUid: kind === 'product' ? String(item?.booking_uid || item?.metadata?.booking_uid || '') || null : kind === 'booking' ? String(item?.product_uid || item?.metadata?.product_uid || '') || null : null
215
+ });
216
+ uid = replacementUid;
217
+ stats.uidConflictCount += 1;
218
+ }
219
+ occupiedUids.add(uid);
220
+ }
221
+ return {
222
+ items: result,
223
+ stats,
224
+ uidRemaps
225
+ };
226
+ }
227
+ function applyOrderCollectionUidRemaps(sourceOrder, uidRemaps) {
228
+ if (!uidRemaps.length) return sourceOrder;
229
+ const order = (0, _lodashEs.cloneDeep)(sourceOrder);
230
+ const hasAmbiguousLinkedOwner = remap => {
231
+ if (remap.scope !== 'linked-owner' || !remap.referenceOwnerUid) return false;
232
+ const ownerKind = remap.kind === 'product' ? 'booking' : remap.kind === 'booking' ? 'product' : null;
233
+ if (!ownerKind) return false;
234
+ return uidRemaps.some(candidate => candidate.scope === 'linked-owner' && candidate.kind === ownerKind && candidate.from === remap.referenceOwnerUid);
235
+ };
236
+ for (const remap of uidRemaps) {
237
+ if (remap.from === remap.to) continue;
238
+ const linkedOwnerIsAmbiguous = hasAmbiguousLinkedOwner(remap);
239
+ if (remap.kind === 'product') {
240
+ for (const booking of order.bookings || []) {
241
+ if (remap.scope === 'linked-owner' && (linkedOwnerIsAmbiguous || getOrderCollectionUid('booking', booking) !== remap.referenceOwnerUid)) {
242
+ continue;
243
+ }
244
+ if (String(booking?.product_uid || '') === remap.from) {
245
+ booking.product_uid = remap.to;
246
+ }
247
+ if (String(booking?.metadata?.product_uid || '') === remap.from) {
248
+ booking.metadata = {
249
+ ...(booking.metadata || {}),
250
+ product_uid: remap.to
251
+ };
252
+ }
253
+ }
254
+ // 冲突 UID 仍由第一条持有;赠品父引用缺少可用的持久化行定位时不能全局改写。
255
+ if (remap.scope !== 'linked-owner') {
256
+ for (const product of order.products || []) {
257
+ if (String(product?.metadata?.parent_unique_identification_number || '') === remap.from) {
258
+ product.metadata = {
259
+ ...(product.metadata || {}),
260
+ parent_unique_identification_number: remap.to
261
+ };
262
+ }
263
+ const giftInfo = product?.metadata?._giftInfo;
264
+ if (giftInfo && typeof giftInfo === 'object') {
265
+ const sourceProductIds = Array.isArray(giftInfo.sourceProductIds) ? giftInfo.sourceProductIds.map(uid => String(uid) === remap.from ? remap.to : uid) : giftInfo.sourceProductIds;
266
+ const sourceProductId = String(giftInfo.sourceProductId || '') === remap.from ? remap.to : giftInfo.sourceProductId;
267
+ product.metadata = {
268
+ ...(product.metadata || {}),
269
+ _giftInfo: {
270
+ ...giftInfo,
271
+ ...(sourceProductIds !== undefined ? {
272
+ sourceProductIds
273
+ } : {}),
274
+ ...(sourceProductId !== undefined ? {
275
+ sourceProductId
276
+ } : {})
277
+ }
278
+ };
279
+ }
280
+ }
281
+ }
282
+ const productsByUid = order._extend?.productsByUid;
283
+ const cachedProduct = productsByUid?.[remap.from];
284
+ const cachedPersistentId = getOrderCollectionPersistentId('product', cachedProduct?.origin || cachedProduct);
285
+ if (productsByUid && remap.scope === 'linked-owner') {
286
+ const retainedProduct = (order.products || []).find(product => getOrderCollectionUid('product', product) === remap.from);
287
+ const remappedProduct = (order.products || []).find(product => getOrderCollectionUid('product', product) === remap.to);
288
+ if (cachedProduct && remap.persistentId && cachedPersistentId === remap.persistentId) {
289
+ productsByUid[remap.to] = {
290
+ ...(cachedProduct || {}),
291
+ ...(productsByUid[remap.to] || {})
292
+ };
293
+ if (retainedProduct) {
294
+ productsByUid[remap.from] = {
295
+ ...(cachedProduct || {}),
296
+ origin: (0, _lodashEs.cloneDeep)(retainedProduct)
297
+ };
298
+ }
299
+ } else if (remappedProduct && !productsByUid[remap.to]) {
300
+ productsByUid[remap.to] = {
301
+ origin: (0, _lodashEs.cloneDeep)(remappedProduct)
302
+ };
303
+ }
304
+ continue;
305
+ }
306
+ if (cachedProduct && remap.scope !== 'linked-owner') {
307
+ productsByUid[remap.to] = {
308
+ ...(cachedProduct || {}),
309
+ ...(productsByUid[remap.to] || {})
310
+ };
311
+ delete productsByUid[remap.from];
312
+ }
313
+ }
314
+ if (remap.kind === 'booking') {
315
+ for (const product of order.products || []) {
316
+ if (remap.scope === 'linked-owner' && (linkedOwnerIsAmbiguous || getOrderCollectionUid('product', product) !== remap.referenceOwnerUid)) {
317
+ continue;
318
+ }
319
+ if (String(product?.booking_uid || '') === remap.from) {
320
+ product.booking_uid = remap.to;
321
+ }
322
+ if (String(product?.metadata?.booking_uid || '') === remap.from) {
323
+ product.metadata = {
324
+ ...(product.metadata || {}),
325
+ booking_uid: remap.to
326
+ };
327
+ }
328
+ }
329
+ }
330
+ }
331
+ return order;
332
+ }
333
+ function normalizeOrderCollections(sourceOrder, options) {
334
+ let order = (0, _lodashEs.cloneDeep)(sourceOrder || {});
335
+ const orderRecord = order;
336
+ const productResult = normalizeOrderCollection('product', Array.isArray(orderRecord.products) ? orderRecord.products : [], options);
337
+ const bookingResult = normalizeOrderCollection('booking', Array.isArray(orderRecord.bookings) ? orderRecord.bookings : [], options);
338
+ const paymentResult = normalizeOrderCollection('payment', Array.isArray(orderRecord.payments) ? orderRecord.payments : [], options);
339
+ if (Array.isArray(orderRecord.products)) orderRecord.products = productResult.items;
340
+ if (Array.isArray(orderRecord.bookings)) orderRecord.bookings = bookingResult.items;
341
+ if (Array.isArray(orderRecord.payments)) orderRecord.payments = paymentResult.items;
342
+ const uidRemaps = [...productResult.uidRemaps, ...bookingResult.uidRemaps, ...paymentResult.uidRemaps];
343
+ order = applyOrderCollectionUidRemaps(order, uidRemaps);
344
+ return {
345
+ order,
346
+ stats: {
347
+ product: productResult.stats,
348
+ booking: bookingResult.stats,
349
+ payment: paymentResult.stats
350
+ },
351
+ uidRemaps
352
+ };
353
+ }
@@ -1,7 +1,20 @@
1
1
  import Decimal from 'decimal.js';
2
- import { CartItem } from "../Cart";
3
- import type { ScanOrderSubmitPayload, ScanOrderSubmitProduct, ScanOrderSummary, ScanOrderTempOrder } from '../../solution/ScanOrder/types';
2
+ import type { CartItem } from "../Cart";
3
+ import type { OrderProductDiscountItem, OrderProduct, OrderSubmitPayload, OrderSubmitProduct, OrderSummary, OrderTempOrder } from './types';
4
4
  import type { RulesParamsHooks } from '../Rules/types';
5
+ import type { MapOrderPaymentsOptions, OrderPaymentData, OrderPaymentSource } from './types';
6
+ import { createUuidV4 } from './utils/orderCollectionIdentity';
7
+ export interface OrderProductsDepositProtocol {
8
+ id: number;
9
+ title: string;
10
+ }
11
+ export interface OrderProductsDepositSummary {
12
+ total: number;
13
+ totalText: string;
14
+ protocols: OrderProductsDepositProtocol[];
15
+ deposit_policy_ids: number[];
16
+ hasDeposit: boolean;
17
+ }
5
18
  import type { WindowPlugin } from '../../plugins';
6
19
  /**
7
20
  * 把"含 option 的主商品单价"与 bundle 合成"单行 composite 单价"。
@@ -21,21 +34,68 @@ export declare function composeLinePrice(params: {
21
34
  bundle?: Array<{
22
35
  bundle_selling_price?: any;
23
36
  price?: any;
37
+ custom_price?: any;
24
38
  num?: any;
25
39
  quantity?: any;
26
40
  original_price?: any;
27
41
  product_price?: any;
42
+ price_type?: any;
43
+ price_type_ext?: any;
44
+ custom_price_type?: any;
45
+ custom_price_type_ext?: any;
46
+ option?: Array<{
47
+ add_price?: any;
48
+ price?: any;
49
+ num?: any;
50
+ }>;
28
51
  }> | null;
29
52
  useOriginalBundle?: boolean;
30
53
  }): string;
54
+ export declare function normalizeProductSkuOptions(options?: unknown): Record<string, any>[];
55
+ export declare function ensureProductSku(product?: Record<string, any> | null): Record<string, any> & {
56
+ option: Record<string, any>[];
57
+ };
58
+ export declare function getProductSkuOptions(product?: Record<string, any> | null): Record<string, any>[];
31
59
  /**
32
- * 计算 option 单价合计:Σ(option.price × option.num)。
60
+ * 计算 option 单价合计:Σ(option.add_price × option.num)。
61
+ * 兼容入参仍带旧 `price` 的调用方,但运行时归一化后只维护 `add_price`。
33
62
  * 在新语义 v2 下,main_product_original_price = source_product_price + 本函数结果。
34
63
  */
35
64
  export declare function sumOptionUnitPrice(options?: Array<{
65
+ add_price?: any;
36
66
  price?: any;
37
67
  num?: any;
38
68
  }> | null): Decimal;
69
+ /**
70
+ * 仅基于 tempOrder.products 重算整单定金。
71
+ *
72
+ * 商品折扣在进入定金计算前已体现在商品行价格字段中,
73
+ * 因此这里只按商品定金规则汇总,不再扣减 discount_list;tempOrder.bookings 不参与这里的计算。
74
+ */
75
+ export declare function calculateOrderProductsDeposit(products?: OrderProduct[], options?: {
76
+ productsByUid?: Record<string, Record<string, any>>;
77
+ }): OrderProductsDepositSummary;
78
+ /**
79
+ * 判定套餐子商品是否为 markdown(减价)类型。
80
+ * 与后端口径一致:price_type='markdown' 且 price_type_ext 非 'product_price'(原价子商品)。
81
+ */
82
+ export declare function isMarkdownBundle(bundle: Record<string, any> | null | undefined): boolean;
83
+ /**
84
+ * 套餐子商品对「行价」的带符号单位贡献(与后端 markdown 口径对齐)。
85
+ *
86
+ * - markdown(减价):净额 = |catalog 毛价| − Σ(option.add_price×num),**取负**(行内减)。
87
+ * catalog 毛价优先 `price`/`custom_price`(避免读已落净额的 `bundle_selling_price` 造成 option 二次扣减);
88
+ * 仅当毛价缺失(历史/hydrate 仅剩净额)时退回 `bundle_selling_price`,且此时不再扣 option。
89
+ * - markup(加价)/原价子商品:维持 `+(bundle_selling_price ?? price)`,行为不变。
90
+ */
91
+ export declare function getBundleSignedUnit(bundle: Record<string, any> | null | undefined, options?: {
92
+ useOriginal?: boolean;
93
+ }): Decimal;
94
+ /**
95
+ * 套餐子商品 `bundle_selling_price` 的存储净额(正值幅度)。
96
+ * markdown 取净额绝对值(3.70);markup/原价维持原值。
97
+ */
98
+ export declare function getBundleSellingMagnitude(bundle: Record<string, any> | null | undefined): Decimal;
39
99
  /**
40
100
  * OrderModule 默认 Rules 钩子工厂。
41
101
  *
@@ -48,7 +108,7 @@ export declare function sumOptionUnitPrice(options?: Array<{
48
108
  * 不含折扣。**权威源**。
49
109
  * - `metadata.main_product_original_price` = source + Σ(option.price × option.num)(含 option、不含折扣)。
50
110
  * - `metadata.main_product_selling_price` = main_original − 主商品券 per-unit amount(含 option、含折扣)。
51
- * - `payment_price`:出站 payload 中由 `selling_price` 派生以兼容后端(composite)。
111
+ * - `payment_price`:出站 payload 中为行 composite 已减整单折扣均摊价(无折扣时与 `selling_price` 同义)。
52
112
  *
53
113
  * Rules 钩子契约(hook_adapt 方案,Rules 内部保持不变):
54
114
  * - `getProduct.price` / `getProduct.original_price` 回传 **source-level 主价**
@@ -65,6 +125,37 @@ export declare function sumOptionUnitPrice(options?: Array<{
65
125
  *
66
126
  * 导出为纯函数方便单测直接驱动钩子,不依赖 OrderModule 实例。
67
127
  */
128
+ /** Rules calcDiscount 用手动价标记;undefined 表示交给 Rules 用 total/origin_total 推断 */
129
+ export declare function resolveRulesManualDiscountFlag(metadata: Record<string, any> | null | undefined): boolean | undefined;
130
+ /**
131
+ * 商品行折扣只保留后端 OrderProductDiscountItem 协议字段。
132
+ * Rules/券计算过程中的 `_num`、`config` 等运行态字段不应进入 tempOrder 或提交 payload。
133
+ */
134
+ export declare function normalizeOrderProductDiscountList(discountList?: unknown[] | null): OrderProductDiscountItem[];
135
+ /**
136
+ * 手动改价(price_override)时行级 original_price(composite 单价):
137
+ * 购物车划线价应对齐 metadata.origin._extend.origin_total(改价前单价 composite,如 40),
138
+ * 而非 bundle 子项 catalog 原价合成的 composedOriginalPrice(如 30)。
139
+ *
140
+ * origin_total 与 SkuDetailModal / cacheItem._extend 一致,为单价语义,不再除以 num。
141
+ */
142
+ export declare function resolveManualOverrideLineOriginalPrice(params: {
143
+ num?: number;
144
+ metadata?: Record<string, any> | null;
145
+ /** 已有行级 original_price(origin 被裁剪时兜底划线价) */
146
+ lineOriginalPrice?: string | number | null;
147
+ }, fallbackCompositeOriginal: string): string;
148
+ /**
149
+ * 计算商品行「每单位有效折扣」:discount_list 合计 + 被 Rules 剥离但仍 inPromotion 的差额。
150
+ *
151
+ * Rules.calcDiscount 会把 type=promotion 从 discount_list 去掉,但 metadata._promotion 仍保留;
152
+ * applyProductDiscountPrices 必须回读 _promotion,否则抬价/降价都会在第二步被 source 原价覆盖。
153
+ *
154
+ * @example
155
+ * resolveEffectivePerUnitDiscount({ metadata: { _promotion: { inPromotion: true, originalPrice: 1, finalPrice: 5 } }, discount_list: [] });
156
+ * // => -4
157
+ */
158
+ export declare function resolveEffectivePerUnitDiscount(product: Record<string, any>): number;
68
159
  export declare function createDefaultOrderRulesHooks(): RulesParamsHooks;
69
160
  /**
70
161
  * 通过 session 类商品的开始时间结束时间生成商品的时长
@@ -97,46 +188,49 @@ export interface CartOrderHolder {
97
188
  */
98
189
  export declare function ensureCartItemOriginHolder(cartItem: CartItem, window?: WindowPlugin): void;
99
190
  export declare const getAllDiscountList: (cartItem: CartItem) => any;
100
- export declare function createUuidV4(): string;
101
- export declare function isTempOrder(data: any): data is ScanOrderTempOrder;
191
+ export { createUuidV4 };
192
+ export declare function isTempOrder(data: any): data is OrderTempOrder;
102
193
  export declare function formatDateTime(date: Date): string;
194
+ export declare function normalizeBookingIsAll(booking: Record<string, any>): 0 | 1;
195
+ export declare function normalizeBookingSubType(booking: Record<string, any>): string;
103
196
  export declare function normalizeSubmitBooking<T extends {
104
197
  metadata?: Record<string, any>;
105
198
  }>(booking: T): T;
106
199
  /** 提交用人数:有限且为正则向下取整,否则为 1 */
107
200
  export declare function normalizeSubmitCollectPaxValue(value: unknown): number;
108
201
  /** 从临时订单 metadata 解析合成 booking 的 collect_pax */
109
- export declare function resolveSubmitCollectPax(tempOrder: ScanOrderTempOrder): number;
202
+ export declare function resolveSubmitCollectPax(tempOrder: OrderTempOrder): number;
110
203
  export declare function createDefaultTempOrder(params: {
111
204
  now: string;
112
- summary?: ScanOrderSummary;
113
- }): ScanOrderTempOrder;
205
+ summary?: OrderSummary;
206
+ }): OrderTempOrder;
114
207
  export interface SubmitPayloadEnhancerContext {
115
- tempOrder: ScanOrderTempOrder;
208
+ tempOrder: OrderTempOrder;
116
209
  bookingUuid: string;
117
210
  now: Date;
118
211
  }
119
- export type SubmitPayloadEnhancer = (payload: ScanOrderSubmitPayload, ctx: SubmitPayloadEnhancerContext) => ScanOrderSubmitPayload;
212
+ export declare type SubmitPayloadEnhancer = (payload: OrderSubmitPayload, ctx: SubmitPayloadEnhancerContext) => OrderSubmitPayload;
120
213
  export declare function buildSubmitPayload(params: {
121
- tempOrder: ScanOrderTempOrder;
214
+ tempOrder: OrderTempOrder;
122
215
  cacheId?: string;
123
216
  now?: Date;
124
217
  platform?: string;
125
218
  businessCode?: string;
126
219
  channel?: string;
127
220
  type?: string;
221
+ summary?: OrderSummary | null;
222
+ request_unique_idempotency_token?: string;
128
223
  enhance?: SubmitPayloadEnhancer;
129
- }): ScanOrderSubmitPayload;
130
- /** 加单(scanOrderMore)不应提交 booking 关联的虚拟规则商品行 */
131
- export declare function filterProductsForScanOrderMore(products: ScanOrderSubmitProduct[]): ScanOrderSubmitProduct[];
224
+ }): OrderSubmitPayload;
225
+ export declare function mapPaymentItemToOrderPayment(paymentItem: OrderPaymentSource): OrderPaymentData;
226
+ export declare function mapPaymentItemsToOrderPayments(paymentItems: OrderPaymentSource[], options?: MapOrderPaymentsOptions): OrderPaymentData[];
132
227
  /**
133
228
  * 历史 V1 加餐结构映射器。
134
229
  *
135
- * @deprecated 加餐(`PUT /order/order/product/:id`)已改为与正常 checkout 共用
136
- * `ScanOrderSubmitProduct` 新结构(见 `OrderModule.submitTempOrder` 的加餐分支)。
230
+ * @deprecated 标准 Sales checkout 已统一提交结构。
137
231
  * 本函数仅保留以兼容历史接入方,未来会移除。新代码请勿再调用。
138
232
  */
139
- export declare function formatV1Product(products: ScanOrderSubmitProduct[]): {
233
+ export declare function formatV1Product(products: OrderSubmitProduct[]): {
140
234
  bundle: any[];
141
235
  key: number | null;
142
236
  option: any[];
@@ -148,4 +242,59 @@ export declare function formatV1Product(products: ScanOrderSubmitProduct[]): {
148
242
  session: null;
149
243
  unique: string;
150
244
  }[];
245
+ /**
246
+ * 判断 holder_id 是否已分配(非空)。
247
+ *
248
+ * @example
249
+ * hasAssignedHolderId(12); // true
250
+ * hasAssignedHolderId([]); // false
251
+ */
252
+ export declare function hasAssignedHolderId(value: unknown): boolean;
253
+ /**
254
+ * 清空 tempOrder 购物车行上的 holder 分配(products / bookings / runtime origin)。
255
+ * 移除或更换下单客户时调用,与 booking 页换客户清 holder 行为对齐。
256
+ *
257
+ * @example
258
+ * clearTempOrderHolderAssignments(tempOrder);
259
+ */
260
+ export declare function clearTempOrderHolderAssignments(tempOrder: OrderTempOrder): boolean;
261
+ /**
262
+ * 读取购物车行的 stable uid(优先 metadata.unique_identification_number)。
263
+ *
264
+ * @example
265
+ * getOrderProductLineUid({ metadata: { unique_identification_number: 'line-1' } }); // 'line-1'
266
+ */
267
+ export declare function getOrderProductLineUid(product: Record<string, any> | null | undefined): string | null;
268
+ export declare function getRuntimeProductOrigin(tempOrder: OrderTempOrder | null | undefined, product: any): Record<string, any> | null;
269
+ export declare function isHolderConfigRequired(holderConfig: any): boolean;
270
+ export declare function productRequiresFormSubject(tempOrder: OrderTempOrder | null | undefined, product: any): boolean;
271
+ export declare function resolveIsFormSubject(tempOrder: OrderTempOrder | null | undefined, product?: any): boolean;
272
+ /**
273
+ * 判断展示字段是否为空(含 i18n 对象全空)。
274
+ *
275
+ * @example
276
+ * isEmptyOrderProductDisplayValue(''); // true
277
+ * isEmptyOrderProductDisplayValue({ auto: '桌台费' }); // false
278
+ */
279
+ export declare function isEmptyOrderProductDisplayValue(value: unknown): boolean;
280
+ /**
281
+ * calcDiscount / applyDiscount 回写时 Rules 往往不带 product_title 等展示字段;
282
+ * 用旧行补齐,避免编辑态 hydrate 后标题被冲掉。
283
+ *
284
+ * @example
285
+ * mergeOrderProductDisplayFields(
286
+ * { product_title: { auto: '桌台费' }, metadata: { unique_identification_number: 'u1' } },
287
+ * { selling_price: '10.00', metadata: { unique_identification_number: 'u1' } },
288
+ * );
289
+ */
290
+ export declare function mergeOrderProductDisplayFields(previous: Record<string, any>, next: Record<string, any>): Record<string, any>;
291
+ /**
292
+ * 按 uid 索引 tempOrder.products,供 applyDiscount 合并展示字段。
293
+ *
294
+ * @example
295
+ * indexOrderProductsByUid([{ metadata: { unique_identification_number: 'u1' } }]);
296
+ */
297
+ export declare function indexOrderProductsByUid(products: Array<Record<string, any>> | null | undefined): Map<string, Record<string, any>>;
151
298
  export { createEmptySummary } from '../../solution/ScanOrder/utils';
299
+ export { buildManualProductDiscountItem, ensureManualProductDiscountList, findManualProductDiscountItem, mergeManualProductDiscountIntoList, resolveManualDiscountMessage, resolveManualDiscountOriginTotal, resolveManualDiscountReasonFromSources, resolveSafeProductNum, shouldBuildManualProductDiscount, syncManualProductDiscountProductNum, stripManualProductDiscountItems, } from './utils/manualProductDiscount';
300
+ export type { ManualProductDiscountItem } from './utils/manualProductDiscount';