@pisell/pisellos 0.0.567 → 0.0.569

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/dist/core/index.js +6 -9
  2. package/dist/model/strategy/adapter/promotion/evaluator.js +3 -2
  3. package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -2
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/adapter/walletPass/utils.js +7 -7
  6. package/dist/model/strategy/strategy-example.js +5 -19
  7. package/dist/modules/BaseModule.d.ts +2 -2
  8. package/dist/modules/BaseModule.js +4 -4
  9. package/dist/modules/BookingContext/index.d.ts +48 -0
  10. package/dist/modules/BookingContext/index.js +566 -0
  11. package/dist/modules/BookingContext/types.d.ts +102 -0
  12. package/dist/modules/BookingContext/types.js +51 -0
  13. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  14. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +302 -0
  15. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  16. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +149 -0
  17. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  18. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +249 -0
  19. package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
  20. package/dist/modules/BookingContext/utils/flexible.js +56 -0
  21. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  22. package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
  23. package/dist/modules/BookingContext/utils/index.d.ts +11 -0
  24. package/dist/modules/BookingContext/utils/index.js +11 -0
  25. package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
  26. package/dist/modules/BookingContext/utils/noResource.js +77 -0
  27. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  28. package/dist/modules/BookingContext/utils/orderLineDisplay.js +36 -0
  29. package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
  30. package/dist/modules/BookingContext/utils/productExtend.js +339 -0
  31. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  32. package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
  33. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  34. package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
  35. package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
  36. package/dist/modules/BookingContext/utils/resources.js +486 -0
  37. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  38. package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
  39. package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  40. package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
  41. package/dist/modules/Cart/index.js +0 -3
  42. package/dist/modules/Cart/utils/cartProduct.js +26 -6
  43. package/dist/modules/Cart/utils/changePrice.js +27 -20
  44. package/dist/modules/Customer/index.d.ts +20 -0
  45. package/dist/modules/Customer/index.js +172 -83
  46. package/dist/modules/Customer/types.d.ts +2 -0
  47. package/dist/modules/Date/index.js +1 -5
  48. package/dist/modules/Discount/index.d.ts +2 -1
  49. package/dist/modules/Discount/index.js +37 -12
  50. package/dist/modules/Discount/types.d.ts +1 -0
  51. package/dist/modules/OpenData/index.d.ts +8 -0
  52. package/dist/modules/OpenData/index.js +35 -17
  53. package/dist/modules/Order/index.d.ts +449 -24
  54. package/dist/modules/Order/index.js +5437 -608
  55. package/dist/modules/Order/types.d.ts +693 -88
  56. package/dist/modules/Order/types.js +68 -1
  57. package/dist/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  58. package/dist/modules/Order/utils/bundleDiscountHydration.js +144 -0
  59. package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  60. package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
  61. package/dist/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  62. package/dist/modules/Order/utils/orderCollectionIdentity.js +405 -0
  63. package/dist/modules/Order/utils.d.ts +167 -18
  64. package/dist/modules/Order/utils.js +960 -165
  65. package/dist/modules/Payment/index.d.ts +10 -9
  66. package/dist/modules/Payment/index.js +508 -874
  67. package/dist/modules/Payment/types.d.ts +40 -16
  68. package/dist/modules/Payment/utils.d.ts +1 -1
  69. package/dist/modules/Payment/utils.js +4 -3
  70. package/dist/modules/Payment/walletpass.js +48 -34
  71. package/dist/modules/Product/types.d.ts +29 -7
  72. package/dist/modules/ProductList/index.d.ts +17 -13
  73. package/dist/modules/ProductList/index.js +184 -74
  74. package/dist/modules/ProductList/types.d.ts +17 -0
  75. package/dist/modules/Quotation/index.d.ts +22 -2
  76. package/dist/modules/Quotation/index.js +108 -42
  77. package/dist/modules/Quotation/types.d.ts +19 -0
  78. package/dist/modules/ResourcePlanner/index.d.ts +24 -0
  79. package/dist/modules/ResourcePlanner/index.js +181 -0
  80. package/dist/modules/ResourcePlanner/planner.d.ts +14 -0
  81. package/dist/modules/ResourcePlanner/planner.js +1069 -0
  82. package/dist/modules/ResourcePlanner/types.d.ts +227 -0
  83. package/dist/modules/ResourcePlanner/types.js +1 -0
  84. package/dist/modules/Rules/index.d.ts +8 -10
  85. package/dist/modules/Rules/index.js +219 -114
  86. package/dist/modules/Rules/types.d.ts +14 -3
  87. package/dist/modules/SalesSummary/index.d.ts +23 -26
  88. package/dist/modules/SalesSummary/index.js +152 -46
  89. package/dist/modules/SalesSummary/types.d.ts +9 -1
  90. package/dist/modules/SalesSummary/utils.d.ts +3 -22
  91. package/dist/modules/SalesSummary/utils.js +803 -163
  92. package/dist/modules/Schedule/getDateIsInSchedule.js +14 -7
  93. package/dist/modules/Schedule/index.d.ts +18 -5
  94. package/dist/modules/Schedule/index.js +78 -24
  95. package/dist/modules/Schedule/types.d.ts +2 -0
  96. package/dist/modules/Schedule/utils.js +0 -1
  97. package/dist/modules/Step/index.js +0 -1
  98. package/dist/modules/Summary/index.js +4 -3
  99. package/dist/modules/SurchargeList/index.d.ts +18 -0
  100. package/dist/modules/SurchargeList/index.js +185 -0
  101. package/dist/modules/SurchargeList/types.d.ts +15 -0
  102. package/dist/modules/SurchargeList/types.js +1 -0
  103. package/dist/modules/index.d.ts +3 -0
  104. package/dist/modules/index.js +4 -1
  105. package/dist/plugins/app.d.ts +2 -0
  106. package/dist/plugins/request.d.ts +1 -0
  107. package/dist/plugins/request.js +1 -4
  108. package/dist/plugins/window.js +2 -6
  109. package/dist/server/index.d.ts +462 -8
  110. package/dist/server/index.js +6137 -714
  111. package/dist/server/modules/floor-plan/index.d.ts +39 -0
  112. package/dist/server/modules/floor-plan/index.js +595 -0
  113. package/dist/server/modules/floor-plan/types.d.ts +43 -0
  114. package/dist/server/modules/floor-plan/types.js +13 -0
  115. package/dist/server/modules/index.d.ts +7 -2
  116. package/dist/server/modules/index.js +6 -0
  117. package/dist/server/modules/menu/index.js +32 -41
  118. package/dist/server/modules/order/index.d.ts +207 -14
  119. package/dist/server/modules/order/index.js +2326 -379
  120. package/dist/server/modules/order/types.d.ts +76 -5
  121. package/dist/server/modules/order/types.js +14 -1
  122. package/dist/server/modules/order/utils/filterBookings.d.ts +7 -1
  123. package/dist/server/modules/order/utils/filterBookings.js +118 -11
  124. package/dist/server/modules/order/utils/filterOrders.js +242 -14
  125. package/dist/server/modules/payment/index.d.ts +28 -0
  126. package/dist/server/modules/payment/index.js +305 -0
  127. package/dist/server/modules/payment/types.d.ts +9 -0
  128. package/dist/server/modules/payment/types.js +1 -0
  129. package/dist/server/modules/products/index.d.ts +105 -14
  130. package/dist/server/modules/products/index.js +1397 -540
  131. package/dist/server/modules/products/types.d.ts +34 -1
  132. package/dist/server/modules/products/types.js +4 -0
  133. package/dist/server/modules/quotation/index.d.ts +39 -0
  134. package/dist/server/modules/quotation/index.js +289 -86
  135. package/dist/server/modules/resource/index.d.ts +2 -3
  136. package/dist/server/modules/resource/index.js +105 -84
  137. package/dist/server/modules/schedule/index.d.ts +6 -4
  138. package/dist/server/modules/schedule/index.js +137 -114
  139. package/dist/server/test.json +713 -0
  140. package/dist/server/types.d.ts +2 -0
  141. package/dist/server/utils/product.js +2 -3
  142. package/dist/server/utils/small-ticket.d.ts +71 -0
  143. package/dist/server/utils/small-ticket.js +963 -0
  144. package/dist/solution/BaseSales/index.d.ts +378 -0
  145. package/dist/solution/BaseSales/index.js +4006 -0
  146. package/dist/solution/BaseSales/types.d.ts +394 -0
  147. package/dist/solution/BaseSales/types.js +40 -0
  148. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  149. package/dist/solution/BaseSales/utils/cartPromotion.js +1450 -0
  150. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  151. package/dist/solution/BaseSales/utils/parseSalesResponse.js +157 -0
  152. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  153. package/dist/solution/BaseSales/utils/quotationPrice.js +250 -0
  154. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  155. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +218 -0
  156. package/dist/solution/BaseSales/utils.d.ts +40 -0
  157. package/dist/solution/BaseSales/utils.js +263 -0
  158. package/dist/solution/BookingByStep/index.js +7 -59
  159. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  160. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  161. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  162. package/dist/solution/BookingTicket/index.d.ts +393 -24
  163. package/dist/solution/BookingTicket/index.js +2506 -445
  164. package/dist/solution/BookingTicket/types.d.ts +191 -6
  165. package/dist/solution/BookingTicket/types.js +83 -10
  166. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  167. package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
  168. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  169. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +95 -0
  170. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  171. package/dist/solution/BookingTicket/utils/bookingStatus.js +136 -0
  172. package/dist/solution/BookingTicket/utils/cartView.d.ts +29 -0
  173. package/dist/solution/BookingTicket/utils/cartView.js +209 -0
  174. package/dist/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  175. package/dist/solution/BookingTicket/utils/exampleData.js +183 -0
  176. package/dist/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  177. package/dist/solution/BookingTicket/utils/orderCustomer.js +31 -0
  178. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  179. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +438 -0
  180. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  181. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +400 -0
  182. package/dist/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  183. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +41 -1
  184. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  185. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +56 -0
  186. package/dist/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  187. package/dist/solution/BookingTicket/utils/scan/handleScan.js +36 -34
  188. package/dist/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  189. package/dist/solution/BookingTicket/utils/scan/index.js +26 -18
  190. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  191. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +150 -0
  192. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  193. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +78 -0
  194. package/dist/solution/BuyTickets/index.js +9 -12
  195. package/dist/solution/Checkout/index.d.ts +1 -0
  196. package/dist/solution/Checkout/index.js +199 -277
  197. package/dist/solution/Checkout/utils/index.js +8 -20
  198. package/dist/solution/RegisterAndLogin/config.js +2 -10
  199. package/dist/solution/RegisterAndLogin/index.js +30 -76
  200. package/dist/solution/Sales/index.d.ts +50 -5
  201. package/dist/solution/Sales/index.js +484 -92
  202. package/dist/solution/Sales/types.d.ts +26 -2
  203. package/dist/solution/ScanOrder/index.d.ts +27 -21
  204. package/dist/solution/ScanOrder/index.js +509 -454
  205. package/dist/solution/ScanOrder/types.d.ts +33 -11
  206. package/dist/solution/ScanOrder/types.js +4 -5
  207. package/dist/solution/ScanOrder/utils.d.ts +4 -1
  208. package/dist/solution/ScanOrder/utils.js +109 -34
  209. package/dist/solution/ShopDiscount/index.js +6 -11
  210. package/dist/solution/UnifiedBookingSales/index.d.ts +183 -0
  211. package/dist/solution/UnifiedBookingSales/index.js +1871 -0
  212. package/dist/solution/UnifiedBookingSales/types.d.ts +143 -0
  213. package/dist/solution/UnifiedBookingSales/types.js +11 -0
  214. package/dist/solution/VenueBooking/index.d.ts +34 -20
  215. package/dist/solution/VenueBooking/index.js +630 -505
  216. package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  217. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  218. package/dist/solution/VenueBooking/utils/slotMerge.js +9 -3
  219. package/dist/solution/index.d.ts +2 -0
  220. package/dist/solution/index.js +3 -1
  221. package/dist/types/index.d.ts +11 -1
  222. package/dist/utils/task.js +15 -18
  223. package/dist/utils/watch.js +0 -1
  224. package/lib/apis/picoding.js +2 -0
  225. package/lib/core/index.js +130 -131
  226. package/lib/effects/index.js +46 -57
  227. package/lib/index.js +92 -53
  228. package/lib/model/index.js +14 -21
  229. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  230. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  231. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  232. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  233. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  234. package/lib/model/strategy/adapter/index.js +100 -64
  235. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  236. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  237. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  238. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  239. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  240. package/lib/model/strategy/adapter/promotion/adapter.js +84 -63
  241. package/lib/model/strategy/adapter/promotion/evaluator.js +383 -232
  242. package/lib/model/strategy/adapter/promotion/examples.js +139 -159
  243. package/lib/model/strategy/adapter/promotion/index.js +1 -49
  244. package/lib/model/strategy/adapter/promotion/type.js +199 -35
  245. package/lib/model/strategy/adapter/type.js +4 -16
  246. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -152
  247. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  248. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  249. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  250. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  251. package/lib/model/strategy/adapter/walletPass/utils.js +654 -402
  252. package/lib/model/strategy/engine.js +270 -168
  253. package/lib/model/strategy/index.js +49 -34
  254. package/lib/model/strategy/strategy-example.js +243 -239
  255. package/lib/model/strategy/type.js +100 -40
  256. package/lib/modules/Account/index.js +39 -53
  257. package/lib/modules/Account/types.js +20 -33
  258. package/lib/modules/AccountList/index.js +116 -154
  259. package/lib/modules/AccountList/types.js +30 -31
  260. package/lib/modules/AccountList/utils.js +18 -30
  261. package/lib/modules/BaseModule.d.ts +2 -2
  262. package/lib/modules/BaseModule.js +26 -49
  263. package/lib/modules/BookingContext/index.d.ts +48 -0
  264. package/lib/modules/BookingContext/index.js +390 -0
  265. package/lib/modules/BookingContext/types.d.ts +102 -0
  266. package/lib/modules/BookingContext/types.js +48 -0
  267. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
  268. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +286 -0
  269. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
  270. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +148 -0
  271. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +76 -0
  272. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +242 -0
  273. package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
  274. package/lib/modules/BookingContext/utils/flexible.js +63 -0
  275. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
  276. package/lib/modules/BookingContext/utils/formatResourceList.js +35 -0
  277. package/lib/modules/BookingContext/utils/index.d.ts +11 -0
  278. package/lib/modules/BookingContext/utils/index.js +126 -0
  279. package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
  280. package/lib/modules/BookingContext/utils/noResource.js +78 -0
  281. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +1 -0
  282. package/lib/modules/BookingContext/utils/orderLineDisplay.js +29 -0
  283. package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
  284. package/lib/modules/BookingContext/utils/productExtend.js +330 -0
  285. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
  286. package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
  287. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
  288. package/lib/modules/BookingContext/utils/resourceSelection.js +24 -0
  289. package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
  290. package/lib/modules/BookingContext/utils/resources.js +419 -0
  291. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
  292. package/lib/modules/BookingContext/utils/serviceTimes.js +161 -0
  293. package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
  294. package/lib/modules/BookingContext/utils/timeSlices.js +114 -0
  295. package/lib/modules/Cart/index.js +170 -124
  296. package/lib/modules/Cart/types.js +46 -51
  297. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  298. package/lib/modules/Cart/utils/cartDate.js +56 -61
  299. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  300. package/lib/modules/Cart/utils/cartNote.js +27 -32
  301. package/lib/modules/Cart/utils/cartProduct.js +331 -244
  302. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  303. package/lib/modules/Cart/utils/cartResource.js +72 -78
  304. package/lib/modules/Cart/utils/changePrice.js +37 -67
  305. package/lib/modules/Cart/utils/index.js +106 -48
  306. package/lib/modules/Customer/constants.js +13 -34
  307. package/lib/modules/Customer/index.d.ts +20 -0
  308. package/lib/modules/Customer/index.js +270 -154
  309. package/lib/modules/Customer/types.d.ts +2 -0
  310. package/lib/modules/Customer/types.js +38 -35
  311. package/lib/modules/Date/index.js +116 -115
  312. package/lib/modules/Date/types.js +16 -28
  313. package/lib/modules/Date/utils.js +174 -123
  314. package/lib/modules/Discount/index.d.ts +2 -1
  315. package/lib/modules/Discount/index.js +133 -113
  316. package/lib/modules/Discount/types.d.ts +1 -0
  317. package/lib/modules/Discount/types.js +9 -31
  318. package/lib/modules/Guests/index.js +30 -56
  319. package/lib/modules/Guests/types.js +23 -33
  320. package/lib/modules/Holder/index.js +209 -189
  321. package/lib/modules/Holder/types.js +4 -16
  322. package/lib/modules/Holder/utils.js +20 -49
  323. package/lib/modules/OpenData/index.d.ts +8 -0
  324. package/lib/modules/OpenData/index.js +81 -74
  325. package/lib/modules/OpenData/types.js +4 -16
  326. package/lib/modules/OpenData/utils.js +44 -78
  327. package/lib/modules/Order/index.d.ts +449 -24
  328. package/lib/modules/Order/index.js +3834 -489
  329. package/lib/modules/Order/types.d.ts +693 -88
  330. package/lib/modules/Order/types.js +78 -33
  331. package/lib/modules/Order/utils/bundleDiscountHydration.d.ts +5 -0
  332. package/lib/modules/Order/utils/bundleDiscountHydration.js +106 -0
  333. package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
  334. package/lib/modules/Order/utils/manualProductDiscount.js +207 -0
  335. package/lib/modules/Order/utils/orderCollectionIdentity.d.ts +53 -0
  336. package/lib/modules/Order/utils/orderCollectionIdentity.js +353 -0
  337. package/lib/modules/Order/utils.d.ts +167 -18
  338. package/lib/modules/Order/utils.js +1247 -345
  339. package/lib/modules/Payment/cash.js +20 -33
  340. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  341. package/lib/modules/Payment/eftpos.js +16 -30
  342. package/lib/modules/Payment/index.d.ts +10 -9
  343. package/lib/modules/Payment/index.js +542 -502
  344. package/lib/modules/Payment/mx51.js +1 -0
  345. package/lib/modules/Payment/types.d.ts +40 -16
  346. package/lib/modules/Payment/types.js +216 -107
  347. package/lib/modules/Payment/utils.d.ts +1 -1
  348. package/lib/modules/Payment/utils.js +53 -49
  349. package/lib/modules/Payment/walletpass.js +231 -203
  350. package/lib/modules/Product/index.js +51 -46
  351. package/lib/modules/Product/types.d.ts +29 -7
  352. package/lib/modules/Product/types.js +4 -16
  353. package/lib/modules/Product/utils.js +32 -33
  354. package/lib/modules/ProductList/index.d.ts +17 -13
  355. package/lib/modules/ProductList/index.js +160 -118
  356. package/lib/modules/ProductList/types.d.ts +17 -0
  357. package/lib/modules/ProductList/types.js +9 -31
  358. package/lib/modules/Quotation/index.d.ts +22 -2
  359. package/lib/modules/Quotation/index.js +123 -89
  360. package/lib/modules/Quotation/types.d.ts +19 -0
  361. package/lib/modules/Quotation/types.js +4 -16
  362. package/lib/modules/Resource/index.js +27 -59
  363. package/lib/modules/Resource/types.js +22 -32
  364. package/lib/modules/Resource/utils.js +30 -38
  365. package/lib/modules/ResourcePlanner/index.d.ts +24 -0
  366. package/lib/modules/ResourcePlanner/index.js +147 -0
  367. package/lib/modules/ResourcePlanner/planner.d.ts +14 -0
  368. package/lib/modules/ResourcePlanner/planner.js +895 -0
  369. package/lib/modules/ResourcePlanner/types.d.ts +227 -0
  370. package/lib/modules/ResourcePlanner/types.js +5 -0
  371. package/lib/modules/Rules/index.d.ts +8 -10
  372. package/lib/modules/Rules/index.js +1286 -894
  373. package/lib/modules/Rules/types.d.ts +14 -3
  374. package/lib/modules/Rules/types.js +17 -40
  375. package/lib/modules/SalesSummary/index.d.ts +23 -26
  376. package/lib/modules/SalesSummary/index.js +130 -71
  377. package/lib/modules/SalesSummary/types.d.ts +9 -1
  378. package/lib/modules/SalesSummary/types.js +4 -16
  379. package/lib/modules/SalesSummary/utils.d.ts +3 -22
  380. package/lib/modules/SalesSummary/utils.js +738 -250
  381. package/lib/modules/ScanOrderLogger/index.js +59 -79
  382. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  383. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  384. package/lib/modules/ScanOrderLogger/types.js +4 -16
  385. package/lib/modules/Schedule/getDateIsInSchedule.js +345 -171
  386. package/lib/modules/Schedule/index.d.ts +18 -5
  387. package/lib/modules/Schedule/index.js +139 -114
  388. package/lib/modules/Schedule/type.js +4 -16
  389. package/lib/modules/Schedule/types.d.ts +2 -0
  390. package/lib/modules/Schedule/types.js +4 -16
  391. package/lib/modules/Schedule/utils.js +433 -291
  392. package/lib/modules/Step/index.js +40 -52
  393. package/lib/modules/Step/tyeps.js +4 -16
  394. package/lib/modules/Summary/index.js +66 -70
  395. package/lib/modules/Summary/types.js +4 -16
  396. package/lib/modules/Summary/utils.js +782 -429
  397. package/lib/modules/SurchargeList/index.d.ts +18 -0
  398. package/lib/modules/SurchargeList/index.js +95 -0
  399. package/lib/modules/SurchargeList/types.d.ts +15 -0
  400. package/lib/modules/SurchargeList/types.js +5 -0
  401. package/lib/modules/index.d.ts +3 -0
  402. package/lib/modules/index.js +245 -57
  403. package/lib/plugins/app.d.ts +2 -0
  404. package/lib/plugins/app.js +4 -16
  405. package/lib/plugins/index.js +36 -25
  406. package/lib/plugins/request.d.ts +1 -0
  407. package/lib/plugins/request.js +137 -126
  408. package/lib/plugins/shopStore.js +4 -16
  409. package/lib/plugins/user.js +4 -16
  410. package/lib/plugins/window.js +171 -179
  411. package/lib/server/index.d.ts +462 -8
  412. package/lib/server/index.js +4668 -713
  413. package/lib/server/modules/floor-plan/index.d.ts +39 -0
  414. package/lib/server/modules/floor-plan/index.js +306 -0
  415. package/lib/server/modules/floor-plan/types.d.ts +43 -0
  416. package/lib/server/modules/floor-plan/types.js +19 -0
  417. package/lib/server/modules/index.d.ts +7 -2
  418. package/lib/server/modules/index.js +106 -59
  419. package/lib/server/modules/menu/index.js +146 -122
  420. package/lib/server/modules/menu/types.js +18 -31
  421. package/lib/server/modules/order/index.d.ts +207 -14
  422. package/lib/server/modules/order/index.js +1463 -316
  423. package/lib/server/modules/order/types.d.ts +76 -5
  424. package/lib/server/modules/order/types.js +117 -32
  425. package/lib/server/modules/order/utils/filterBookings.d.ts +7 -1
  426. package/lib/server/modules/order/utils/filterBookings.js +288 -146
  427. package/lib/server/modules/order/utils/filterOrders.js +318 -64
  428. package/lib/server/modules/payment/index.d.ts +28 -0
  429. package/lib/server/modules/payment/index.js +168 -0
  430. package/lib/server/modules/payment/types.d.ts +9 -0
  431. package/lib/server/modules/payment/types.js +5 -0
  432. package/lib/server/modules/products/index.d.ts +105 -14
  433. package/lib/server/modules/products/index.js +969 -383
  434. package/lib/server/modules/products/types.d.ts +34 -1
  435. package/lib/server/modules/products/types.js +44 -34
  436. package/lib/server/modules/quotation/index.d.ts +39 -0
  437. package/lib/server/modules/quotation/index.js +220 -77
  438. package/lib/server/modules/quotation/types.js +21 -31
  439. package/lib/server/modules/resource/index.d.ts +2 -3
  440. package/lib/server/modules/resource/index.js +269 -214
  441. package/lib/server/modules/resource/types.js +42 -33
  442. package/lib/server/modules/schedule/index.d.ts +6 -4
  443. package/lib/server/modules/schedule/index.js +158 -132
  444. package/lib/server/modules/schedule/types.js +14 -21
  445. package/lib/server/modules/schedule/utils.js +334 -163
  446. package/lib/server/test.json +713 -0
  447. package/lib/server/types.d.ts +2 -0
  448. package/lib/server/types.js +4 -16
  449. package/lib/server/utils/index.js +25 -23
  450. package/lib/server/utils/product.js +197 -140
  451. package/lib/server/utils/schedule.js +34 -41
  452. package/lib/server/utils/small-ticket.d.ts +71 -0
  453. package/lib/server/utils/small-ticket.js +926 -0
  454. package/lib/server/utils/time.js +40 -49
  455. package/lib/solution/BaseSales/index.d.ts +378 -0
  456. package/lib/solution/BaseSales/index.js +2367 -0
  457. package/lib/solution/BaseSales/types.d.ts +394 -0
  458. package/lib/solution/BaseSales/types.js +47 -0
  459. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +287 -0
  460. package/lib/solution/BaseSales/utils/cartPromotion.js +1155 -0
  461. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +144 -0
  462. package/lib/solution/BaseSales/utils/parseSalesResponse.js +140 -0
  463. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +18 -0
  464. package/lib/solution/BaseSales/utils/quotationPrice.js +231 -0
  465. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +63 -0
  466. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +215 -0
  467. package/lib/solution/BaseSales/utils.d.ts +40 -0
  468. package/lib/solution/BaseSales/utils.js +259 -0
  469. package/lib/solution/BookingByStep/index.js +1530 -1343
  470. package/lib/solution/BookingByStep/types.js +40 -99
  471. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  472. package/lib/solution/BookingByStep/utils/products.js +42 -52
  473. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  474. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  475. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  476. package/lib/solution/BookingTicket/index.d.ts +393 -24
  477. package/lib/solution/BookingTicket/index.js +1459 -160
  478. package/lib/solution/BookingTicket/types.d.ts +191 -6
  479. package/lib/solution/BookingTicket/types.js +101 -66
  480. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +117 -0
  481. package/lib/solution/BookingTicket/utils/addProductDecision.js +353 -0
  482. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +35 -0
  483. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +94 -0
  484. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +77 -0
  485. package/lib/solution/BookingTicket/utils/bookingStatus.js +136 -0
  486. package/lib/solution/BookingTicket/utils/cartView.d.ts +29 -0
  487. package/lib/solution/BookingTicket/utils/cartView.js +200 -0
  488. package/lib/solution/BookingTicket/utils/exampleData.d.ts +123 -0
  489. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  490. package/lib/solution/BookingTicket/utils/orderCustomer.d.ts +4 -0
  491. package/lib/solution/BookingTicket/utils/orderCustomer.js +35 -0
  492. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +185 -0
  493. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +387 -0
  494. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +36 -0
  495. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +220 -0
  496. package/lib/solution/BookingTicket/utils/scan/cloudSearch.d.ts +4 -0
  497. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +85 -80
  498. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +32 -0
  499. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +64 -0
  500. package/lib/solution/BookingTicket/utils/scan/handleScan.d.ts +3 -1
  501. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -80
  502. package/lib/solution/BookingTicket/utils/scan/index.d.ts +5 -0
  503. package/lib/solution/BookingTicket/utils/scan/index.js +103 -95
  504. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  505. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +21 -0
  506. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +115 -0
  507. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +23 -0
  508. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +83 -0
  509. package/lib/solution/BuyTickets/index.js +67 -70
  510. package/lib/solution/BuyTickets/types.js +22 -38
  511. package/lib/solution/Checkout/index.d.ts +1 -0
  512. package/lib/solution/Checkout/index.js +1461 -1169
  513. package/lib/solution/Checkout/types.js +91 -61
  514. package/lib/solution/Checkout/utils/index.js +228 -159
  515. package/lib/solution/PlaceOrder/index.js +55 -0
  516. package/lib/solution/RegisterAndLogin/config.js +495 -470
  517. package/lib/solution/RegisterAndLogin/index.js +633 -630
  518. package/lib/solution/RegisterAndLogin/types.js +189 -76
  519. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  520. package/lib/solution/Sales/index.d.ts +50 -5
  521. package/lib/solution/Sales/index.js +495 -220
  522. package/lib/solution/Sales/types.d.ts +26 -2
  523. package/lib/solution/Sales/types.js +27 -33
  524. package/lib/solution/ScanOrder/index.d.ts +27 -21
  525. package/lib/solution/ScanOrder/index.js +908 -904
  526. package/lib/solution/ScanOrder/types.d.ts +33 -11
  527. package/lib/solution/ScanOrder/types.js +33 -34
  528. package/lib/solution/ScanOrder/utils.d.ts +4 -1
  529. package/lib/solution/ScanOrder/utils.js +457 -344
  530. package/lib/solution/ShopDiscount/index.js +230 -236
  531. package/lib/solution/ShopDiscount/types.js +15 -37
  532. package/lib/solution/ShopDiscount/utils.js +309 -172
  533. package/lib/solution/UnifiedBookingSales/index.d.ts +183 -0
  534. package/lib/solution/UnifiedBookingSales/index.js +1050 -0
  535. package/lib/solution/UnifiedBookingSales/types.d.ts +143 -0
  536. package/lib/solution/UnifiedBookingSales/types.js +14 -0
  537. package/lib/solution/VenueBooking/index.d.ts +34 -20
  538. package/lib/solution/VenueBooking/index.js +982 -950
  539. package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
  540. package/lib/solution/VenueBooking/types.js +20 -40
  541. package/lib/solution/VenueBooking/utils/dateSummary.js +22 -54
  542. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  543. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +6 -0
  544. package/lib/solution/VenueBooking/utils/slotMerge.js +96 -108
  545. package/lib/solution/VenueBooking/utils/smartPricing.js +112 -100
  546. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -132
  547. package/lib/solution/VenueBooking/utils.js +130 -67
  548. package/lib/solution/index.d.ts +2 -0
  549. package/lib/solution/index.js +124 -37
  550. package/lib/store/createStore.js +32 -29
  551. package/lib/types/index.d.ts +11 -1
  552. package/lib/types/index.js +4 -16
  553. package/lib/utils/task.js +36 -36
  554. package/lib/utils/watch.js +81 -47
  555. package/package.json +2 -1
  556. package/dist/solution/Checkout/appointmentDemo.json +0 -1
  557. package/lib/solution/Checkout/appointmentDemo.json +0 -1
@@ -0,0 +1,405 @@
1
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
4
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
5
+ 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; } } }; }
6
+ 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); }
7
+ 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; }
8
+ 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); }
9
+ 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; }
10
+ 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; }
11
+ 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; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
13
+ 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); }
14
+ import { cloneDeep } from 'lodash-es';
15
+ var IDENTITY_CONFIG = {
16
+ product: {
17
+ persistentIdField: 'order_detail_id',
18
+ uidField: 'unique_identification_number',
19
+ fallbackPrefix: 'os-fallback:product:order-detail'
20
+ },
21
+ booking: {
22
+ persistentIdField: 'schedule_event_id',
23
+ uidField: 'unique_identification_number',
24
+ fallbackPrefix: 'os-fallback:booking:schedule-event'
25
+ },
26
+ payment: {
27
+ persistentIdField: 'order_payment_id',
28
+ uidField: 'unique_payment_number',
29
+ fallbackPrefix: 'os-fallback:payment:order-payment'
30
+ }
31
+ };
32
+ export function createUuidV4() {
33
+ var template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
34
+ return template.replace(/[xy]/g, function (char) {
35
+ var randomValue = Math.floor(Math.random() * 16);
36
+ var value = char === 'x' ? randomValue : randomValue & 0x3 | 0x8;
37
+ return value.toString(16);
38
+ });
39
+ }
40
+ export function isBlankOrderCollectionIdentity(value) {
41
+ return value === undefined || value === null || value === '';
42
+ }
43
+ export function getOrderCollectionPersistentId(kind, item) {
44
+ var record = item;
45
+ if (!record) return null;
46
+ var value = record[IDENTITY_CONFIG[kind].persistentIdField];
47
+ if (isBlankOrderCollectionIdentity(value)) return null;
48
+ return String(value);
49
+ }
50
+ export function getOrderCollectionUid(kind, item) {
51
+ var _record$metadata;
52
+ var record = item;
53
+ if (!record) return null;
54
+ var uidField = IDENTITY_CONFIG[kind].uidField;
55
+ var metadataValue = (_record$metadata = record.metadata) === null || _record$metadata === void 0 ? void 0 : _record$metadata[uidField];
56
+ if (!isBlankOrderCollectionIdentity(metadataValue)) return String(metadataValue);
57
+ var topLevelValue = record[uidField];
58
+ if (isBlankOrderCollectionIdentity(topLevelValue)) return null;
59
+ return String(topLevelValue);
60
+ }
61
+ export function buildOrderCollectionFallbackUid(kind, persistentId) {
62
+ return "".concat(IDENTITY_CONFIG[kind].fallbackPrefix, ":").concat(String(persistentId));
63
+ }
64
+ export function getOrderCollectionReferenceUid(kind, item) {
65
+ var uid = getOrderCollectionUid(kind, item);
66
+ if (uid) return uid;
67
+ var persistentId = getOrderCollectionPersistentId(kind, item);
68
+ return persistentId ? buildOrderCollectionFallbackUid(kind, persistentId) : null;
69
+ }
70
+ export function setOrderCollectionUid(kind, item, uid) {
71
+ var record = cloneDeep(item || {});
72
+ var uidField = IDENTITY_CONFIG[kind].uidField;
73
+ record.metadata = _objectSpread(_objectSpread({}, record.metadata && _typeof(record.metadata) === 'object' ? record.metadata : {}), {}, _defineProperty({}, uidField, uid));
74
+ delete record[uidField];
75
+ return record;
76
+ }
77
+
78
+ /**
79
+ * 持久化行 ID 是服务端事实主键;只有至少一侧尚未持久化时,才允许用 runtime UID 对齐。
80
+ */
81
+ export function isSameOrderCollectionItem(kind, left, right) {
82
+ var leftPersistentId = getOrderCollectionPersistentId(kind, left);
83
+ var rightPersistentId = getOrderCollectionPersistentId(kind, right);
84
+ if (leftPersistentId && rightPersistentId) {
85
+ return leftPersistentId === rightPersistentId;
86
+ }
87
+ var leftUid = getOrderCollectionUid(kind, left);
88
+ var rightUid = getOrderCollectionUid(kind, right);
89
+ return Boolean(leftUid && rightUid && leftUid === rightUid);
90
+ }
91
+ export function mergeOrderCollectionItems(kind, currentItem, incomingItem, options) {
92
+ var _options$createAnonym;
93
+ var current = cloneDeep(currentItem || {});
94
+ var incoming = cloneDeep(incomingItem || {});
95
+ var persistentIdField = IDENTITY_CONFIG[kind].persistentIdField;
96
+ var currentPersistentIdValue = current[persistentIdField];
97
+ var incomingPersistentIdValue = incoming[persistentIdField];
98
+ var incomingUid = getOrderCollectionUid(kind, incoming);
99
+ var currentUid = getOrderCollectionUid(kind, current);
100
+ var persistentId = getOrderCollectionPersistentId(kind, incoming) || getOrderCollectionPersistentId(kind, current);
101
+ var merged = _objectSpread(_objectSpread(_objectSpread({}, current), incoming), {}, {
102
+ metadata: _objectSpread(_objectSpread({}, current.metadata && _typeof(current.metadata) === 'object' ? current.metadata : {}), incoming.metadata && _typeof(incoming.metadata) === 'object' ? incoming.metadata : {})
103
+ });
104
+
105
+ // UID 对齐允许一侧尚未持久化,但稀疏 incoming 的 null/空值不能擦掉已存在行 ID。
106
+ if (!isBlankOrderCollectionIdentity(incomingPersistentIdValue)) {
107
+ merged[persistentIdField] = incomingPersistentIdValue;
108
+ } else if (!isBlankOrderCollectionIdentity(currentPersistentIdValue)) {
109
+ merged[persistentIdField] = currentPersistentIdValue;
110
+ }
111
+ var incomingUidIsDerived = Boolean(incomingUid && persistentId && (incomingUid === buildOrderCollectionFallbackUid(kind, persistentId) || incomingUid.startsWith("".concat(buildOrderCollectionFallbackUid(kind, persistentId), ":conflict:"))));
112
+ var uid = (incomingUid && !incomingUidIsDerived ? incomingUid : null) || currentUid || incomingUid || ((options === null || options === void 0 ? void 0 : options.ensureUid) === false ? null : persistentId ? buildOrderCollectionFallbackUid(kind, persistentId) : (options === null || options === void 0 || (_options$createAnonym = options.createAnonymousUid) === null || _options$createAnonym === void 0 ? void 0 : _options$createAnonym.call(options)) || createUuidV4());
113
+ return uid ? setOrderCollectionUid(kind, merged, uid) : merged;
114
+ }
115
+ function createEmptyIdentityStats() {
116
+ return {
117
+ backfilledUidCount: 0,
118
+ collapsedDuplicateCount: 0,
119
+ uidConflictCount: 0,
120
+ anonymousRowCount: 0
121
+ };
122
+ }
123
+ function allocateAnonymousUid(occupiedUids, createAnonymousUid) {
124
+ var uid = createAnonymousUid();
125
+ while (occupiedUids.has(uid)) uid = createAnonymousUid();
126
+ return uid;
127
+ }
128
+ function allocatePersistentConflictUid(kind, persistentId, occupiedUids) {
129
+ var fallbackUid = buildOrderCollectionFallbackUid(kind, persistentId);
130
+ if (!occupiedUids.has(fallbackUid)) return fallbackUid;
131
+
132
+ // 极端情况下其它行可能把本行 fallback 当作显式 UID 使用;继续派生稳定后缀,
133
+ // 避免修复冲突后仍留下重复 UID。规范化结果一旦持久化,后续读取保持幂等。
134
+ var suffix = 1;
135
+ var candidate = "".concat(fallbackUid, ":conflict:").concat(suffix);
136
+ while (occupiedUids.has(candidate)) {
137
+ suffix += 1;
138
+ candidate = "".concat(fallbackUid, ":conflict:").concat(suffix);
139
+ }
140
+ return candidate;
141
+ }
142
+
143
+ /**
144
+ * 规范化单一数组:强身份重复时保留首次位置、用最后一条业务字段覆盖,并统一补 UID。
145
+ */
146
+ export function normalizeOrderCollection(kind, items, options) {
147
+ var stats = createEmptyIdentityStats();
148
+ var uidRemaps = [];
149
+ var result = [];
150
+ var ensureUid = (options === null || options === void 0 ? void 0 : options.ensureUid) !== false;
151
+ var createAnonymousUid = (options === null || options === void 0 ? void 0 : options.createAnonymousUid) || createUuidV4;
152
+ var _iterator = _createForOfIteratorHelper(items || []),
153
+ _step;
154
+ try {
155
+ var _loop = function _loop() {
156
+ var rawItem = _step.value;
157
+ var item = cloneDeep(rawItem);
158
+ var existingIndex = result.findIndex(function (existing) {
159
+ return isSameOrderCollectionItem(kind, existing, item);
160
+ });
161
+ if (existingIndex === -1) {
162
+ result.push(item);
163
+ return 1; // continue
164
+ }
165
+ var previousReferenceUid = getOrderCollectionReferenceUid(kind, result[existingIndex]);
166
+ var incomingReferenceUid = getOrderCollectionReferenceUid(kind, item);
167
+ result[existingIndex] = mergeOrderCollectionItems(kind, result[existingIndex], item, {
168
+ ensureUid: false
169
+ });
170
+ var nextUid = getOrderCollectionUid(kind, result[existingIndex]);
171
+ if (nextUid) {
172
+ var _iterator2 = _createForOfIteratorHelper(new Set([previousReferenceUid, incomingReferenceUid])),
173
+ _step2;
174
+ try {
175
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
176
+ var from = _step2.value;
177
+ if (!from || from === nextUid) continue;
178
+ uidRemaps.push({
179
+ kind: kind,
180
+ from: from,
181
+ to: nextUid,
182
+ persistentId: getOrderCollectionPersistentId(kind, result[existingIndex])
183
+ });
184
+ }
185
+ } catch (err) {
186
+ _iterator2.e(err);
187
+ } finally {
188
+ _iterator2.f();
189
+ }
190
+ }
191
+ stats.collapsedDuplicateCount += 1;
192
+ };
193
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
194
+ if (_loop()) continue;
195
+ }
196
+ } catch (err) {
197
+ _iterator.e(err);
198
+ } finally {
199
+ _iterator.f();
200
+ }
201
+ if (!ensureUid) return {
202
+ items: result,
203
+ stats: stats,
204
+ uidRemaps: uidRemaps
205
+ };
206
+ var occupiedUids = new Set();
207
+ for (var index = 0; index < result.length; index += 1) {
208
+ var item = result[index];
209
+ var persistentId = getOrderCollectionPersistentId(kind, item);
210
+ var uid = getOrderCollectionUid(kind, item);
211
+ if (!uid) {
212
+ uid = persistentId ? buildOrderCollectionFallbackUid(kind, persistentId) : allocateAnonymousUid(occupiedUids, createAnonymousUid);
213
+ item = setOrderCollectionUid(kind, item, uid);
214
+ result[index] = item;
215
+ stats.backfilledUidCount += 1;
216
+ if (!persistentId) stats.anonymousRowCount += 1;
217
+ }
218
+ if (occupiedUids.has(uid)) {
219
+ var _item, _item2, _item3, _item4;
220
+ var replacementUid = persistentId ? allocatePersistentConflictUid(kind, persistentId, occupiedUids) : allocateAnonymousUid(occupiedUids, createAnonymousUid);
221
+ result[index] = setOrderCollectionUid(kind, item, replacementUid);
222
+ uidRemaps.push({
223
+ kind: kind,
224
+ from: uid,
225
+ to: replacementUid,
226
+ persistentId: persistentId,
227
+ scope: 'linked-owner',
228
+ referenceOwnerUid: kind === 'product' ? String(((_item = item) === null || _item === void 0 ? void 0 : _item.booking_uid) || ((_item2 = item) === null || _item2 === void 0 || (_item2 = _item2.metadata) === null || _item2 === void 0 ? void 0 : _item2.booking_uid) || '') || null : kind === 'booking' ? String(((_item3 = item) === null || _item3 === void 0 ? void 0 : _item3.product_uid) || ((_item4 = item) === null || _item4 === void 0 || (_item4 = _item4.metadata) === null || _item4 === void 0 ? void 0 : _item4.product_uid) || '') || null : null
229
+ });
230
+ uid = replacementUid;
231
+ stats.uidConflictCount += 1;
232
+ }
233
+ occupiedUids.add(uid);
234
+ }
235
+ return {
236
+ items: result,
237
+ stats: stats,
238
+ uidRemaps: uidRemaps
239
+ };
240
+ }
241
+ export function applyOrderCollectionUidRemaps(sourceOrder, uidRemaps) {
242
+ if (!uidRemaps.length) return sourceOrder;
243
+ var order = cloneDeep(sourceOrder);
244
+ var hasAmbiguousLinkedOwner = function hasAmbiguousLinkedOwner(remap) {
245
+ if (remap.scope !== 'linked-owner' || !remap.referenceOwnerUid) return false;
246
+ var ownerKind = remap.kind === 'product' ? 'booking' : remap.kind === 'booking' ? 'product' : null;
247
+ if (!ownerKind) return false;
248
+ return uidRemaps.some(function (candidate) {
249
+ return candidate.scope === 'linked-owner' && candidate.kind === ownerKind && candidate.from === remap.referenceOwnerUid;
250
+ });
251
+ };
252
+ var _iterator3 = _createForOfIteratorHelper(uidRemaps),
253
+ _step3;
254
+ try {
255
+ var _loop2 = function _loop2() {
256
+ var remap = _step3.value;
257
+ if (remap.from === remap.to) return 0; // continue
258
+ var linkedOwnerIsAmbiguous = hasAmbiguousLinkedOwner(remap);
259
+ if (remap.kind === 'product') {
260
+ var _order$_extend;
261
+ var _iterator4 = _createForOfIteratorHelper(order.bookings || []),
262
+ _step4;
263
+ try {
264
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
265
+ var _booking$metadata;
266
+ var booking = _step4.value;
267
+ if (remap.scope === 'linked-owner' && (linkedOwnerIsAmbiguous || getOrderCollectionUid('booking', booking) !== remap.referenceOwnerUid)) {
268
+ continue;
269
+ }
270
+ if (String((booking === null || booking === void 0 ? void 0 : booking.product_uid) || '') === remap.from) {
271
+ booking.product_uid = remap.to;
272
+ }
273
+ if (String((booking === null || booking === void 0 || (_booking$metadata = booking.metadata) === null || _booking$metadata === void 0 ? void 0 : _booking$metadata.product_uid) || '') === remap.from) {
274
+ booking.metadata = _objectSpread(_objectSpread({}, booking.metadata || {}), {}, {
275
+ product_uid: remap.to
276
+ });
277
+ }
278
+ }
279
+ // 冲突 UID 仍由第一条持有;赠品父引用缺少可用的持久化行定位时不能全局改写。
280
+ } catch (err) {
281
+ _iterator4.e(err);
282
+ } finally {
283
+ _iterator4.f();
284
+ }
285
+ if (remap.scope !== 'linked-owner') {
286
+ var _iterator5 = _createForOfIteratorHelper(order.products || []),
287
+ _step5;
288
+ try {
289
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
290
+ var _product$metadata, _product$metadata2;
291
+ var product = _step5.value;
292
+ if (String((product === null || product === void 0 || (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.parent_unique_identification_number) || '') === remap.from) {
293
+ product.metadata = _objectSpread(_objectSpread({}, product.metadata || {}), {}, {
294
+ parent_unique_identification_number: remap.to
295
+ });
296
+ }
297
+ var giftInfo = product === null || product === void 0 || (_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2._giftInfo;
298
+ if (giftInfo && _typeof(giftInfo) === 'object') {
299
+ var sourceProductIds = Array.isArray(giftInfo.sourceProductIds) ? giftInfo.sourceProductIds.map(function (uid) {
300
+ return String(uid) === remap.from ? remap.to : uid;
301
+ }) : giftInfo.sourceProductIds;
302
+ var sourceProductId = String(giftInfo.sourceProductId || '') === remap.from ? remap.to : giftInfo.sourceProductId;
303
+ product.metadata = _objectSpread(_objectSpread({}, product.metadata || {}), {}, {
304
+ _giftInfo: _objectSpread(_objectSpread(_objectSpread({}, giftInfo), sourceProductIds !== undefined ? {
305
+ sourceProductIds: sourceProductIds
306
+ } : {}), sourceProductId !== undefined ? {
307
+ sourceProductId: sourceProductId
308
+ } : {})
309
+ });
310
+ }
311
+ }
312
+ } catch (err) {
313
+ _iterator5.e(err);
314
+ } finally {
315
+ _iterator5.f();
316
+ }
317
+ }
318
+ var productsByUid = (_order$_extend = order._extend) === null || _order$_extend === void 0 ? void 0 : _order$_extend.productsByUid;
319
+ var cachedProduct = productsByUid === null || productsByUid === void 0 ? void 0 : productsByUid[remap.from];
320
+ var cachedPersistentId = getOrderCollectionPersistentId('product', (cachedProduct === null || cachedProduct === void 0 ? void 0 : cachedProduct.origin) || cachedProduct);
321
+ if (productsByUid && remap.scope === 'linked-owner') {
322
+ var retainedProduct = (order.products || []).find(function (product) {
323
+ return getOrderCollectionUid('product', product) === remap.from;
324
+ });
325
+ var remappedProduct = (order.products || []).find(function (product) {
326
+ return getOrderCollectionUid('product', product) === remap.to;
327
+ });
328
+ if (cachedProduct && remap.persistentId && cachedPersistentId === remap.persistentId) {
329
+ productsByUid[remap.to] = _objectSpread(_objectSpread({}, cachedProduct || {}), productsByUid[remap.to] || {});
330
+ if (retainedProduct) {
331
+ productsByUid[remap.from] = _objectSpread(_objectSpread({}, cachedProduct || {}), {}, {
332
+ origin: cloneDeep(retainedProduct)
333
+ });
334
+ }
335
+ } else if (remappedProduct && !productsByUid[remap.to]) {
336
+ productsByUid[remap.to] = {
337
+ origin: cloneDeep(remappedProduct)
338
+ };
339
+ }
340
+ return 0; // continue
341
+ }
342
+ if (cachedProduct && remap.scope !== 'linked-owner') {
343
+ productsByUid[remap.to] = _objectSpread(_objectSpread({}, cachedProduct || {}), productsByUid[remap.to] || {});
344
+ delete productsByUid[remap.from];
345
+ }
346
+ }
347
+ if (remap.kind === 'booking') {
348
+ var _iterator6 = _createForOfIteratorHelper(order.products || []),
349
+ _step6;
350
+ try {
351
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
352
+ var _product$metadata3;
353
+ var _product = _step6.value;
354
+ if (remap.scope === 'linked-owner' && (linkedOwnerIsAmbiguous || getOrderCollectionUid('product', _product) !== remap.referenceOwnerUid)) {
355
+ continue;
356
+ }
357
+ if (String((_product === null || _product === void 0 ? void 0 : _product.booking_uid) || '') === remap.from) {
358
+ _product.booking_uid = remap.to;
359
+ }
360
+ if (String((_product === null || _product === void 0 || (_product$metadata3 = _product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.booking_uid) || '') === remap.from) {
361
+ _product.metadata = _objectSpread(_objectSpread({}, _product.metadata || {}), {}, {
362
+ booking_uid: remap.to
363
+ });
364
+ }
365
+ }
366
+ } catch (err) {
367
+ _iterator6.e(err);
368
+ } finally {
369
+ _iterator6.f();
370
+ }
371
+ }
372
+ },
373
+ _ret;
374
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
375
+ _ret = _loop2();
376
+ if (_ret === 0) continue;
377
+ }
378
+ } catch (err) {
379
+ _iterator3.e(err);
380
+ } finally {
381
+ _iterator3.f();
382
+ }
383
+ return order;
384
+ }
385
+ export function normalizeOrderCollections(sourceOrder, options) {
386
+ var order = cloneDeep(sourceOrder || {});
387
+ var orderRecord = order;
388
+ var productResult = normalizeOrderCollection('product', Array.isArray(orderRecord.products) ? orderRecord.products : [], options);
389
+ var bookingResult = normalizeOrderCollection('booking', Array.isArray(orderRecord.bookings) ? orderRecord.bookings : [], options);
390
+ var paymentResult = normalizeOrderCollection('payment', Array.isArray(orderRecord.payments) ? orderRecord.payments : [], options);
391
+ if (Array.isArray(orderRecord.products)) orderRecord.products = productResult.items;
392
+ if (Array.isArray(orderRecord.bookings)) orderRecord.bookings = bookingResult.items;
393
+ if (Array.isArray(orderRecord.payments)) orderRecord.payments = paymentResult.items;
394
+ var uidRemaps = [].concat(_toConsumableArray(productResult.uidRemaps), _toConsumableArray(bookingResult.uidRemaps), _toConsumableArray(paymentResult.uidRemaps));
395
+ order = applyOrderCollectionUidRemaps(order, uidRemaps);
396
+ return {
397
+ order: order,
398
+ stats: {
399
+ product: productResult.stats,
400
+ booking: bookingResult.stats,
401
+ payment: paymentResult.stats
402
+ },
403
+ uidRemaps: uidRemaps
404
+ };
405
+ }
@@ -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 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';