@pisell/pisellos 2.2.243 → 2.2.244

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 (315) hide show
  1. package/dist/model/strategy/adapter/promotion/evaluator.js +2 -3
  2. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  3. package/dist/model/strategy/adapter/walletPass/utils.js +4 -7
  4. package/dist/modules/Cart/utils/cartProduct.js +3 -24
  5. package/dist/modules/Cart/utils/changePrice.js +11 -11
  6. package/dist/modules/Customer/index.d.ts +0 -20
  7. package/dist/modules/Customer/index.js +83 -172
  8. package/dist/modules/Customer/types.d.ts +0 -2
  9. package/dist/modules/Discount/index.js +3 -4
  10. package/dist/modules/Discount/types.d.ts +0 -1
  11. package/dist/modules/OpenData/index.d.ts +0 -8
  12. package/dist/modules/OpenData/index.js +17 -37
  13. package/dist/modules/Order/index.d.ts +18 -268
  14. package/dist/modules/Order/index.js +757 -3306
  15. package/dist/modules/Order/types.d.ts +31 -279
  16. package/dist/modules/Order/types.js +0 -38
  17. package/dist/modules/Order/utils.d.ts +5 -147
  18. package/dist/modules/Order/utils.js +103 -746
  19. package/dist/modules/Payment/index.d.ts +13 -10
  20. package/dist/modules/Payment/index.js +837 -467
  21. package/dist/modules/Payment/types.d.ts +0 -2
  22. package/dist/modules/Payment/utils.js +1 -2
  23. package/dist/modules/Payment/walletpass.js +7 -14
  24. package/dist/modules/ProductList/index.d.ts +12 -16
  25. package/dist/modules/ProductList/index.js +59 -133
  26. package/dist/modules/ProductList/types.d.ts +0 -14
  27. package/dist/modules/Quotation/index.d.ts +1 -0
  28. package/dist/modules/Quotation/index.js +22 -25
  29. package/dist/modules/Rules/index.d.ts +0 -4
  30. package/dist/modules/Rules/index.js +69 -93
  31. package/dist/modules/Rules/types.d.ts +0 -1
  32. package/dist/modules/SalesSummary/index.d.ts +25 -8
  33. package/dist/modules/SalesSummary/index.js +35 -86
  34. package/dist/modules/SalesSummary/types.d.ts +1 -4
  35. package/dist/modules/SalesSummary/utils.d.ts +25 -2
  36. package/dist/modules/SalesSummary/utils.js +162 -794
  37. package/dist/modules/Schedule/index.d.ts +0 -7
  38. package/dist/modules/Schedule/index.js +2 -24
  39. package/dist/modules/Summary/index.js +3 -4
  40. package/dist/modules/index.d.ts +0 -2
  41. package/dist/modules/index.js +1 -3
  42. package/dist/plugins/request.d.ts +0 -1
  43. package/dist/server/index.d.ts +1 -204
  44. package/dist/server/index.js +928 -3658
  45. package/dist/server/modules/index.d.ts +0 -2
  46. package/dist/server/modules/index.js +0 -2
  47. package/dist/server/modules/order/index.d.ts +4 -120
  48. package/dist/server/modules/order/index.js +483 -1779
  49. package/dist/server/modules/order/types.d.ts +3 -32
  50. package/dist/server/modules/order/types.js +0 -8
  51. package/dist/server/modules/order/utils/filterBookings.js +3 -26
  52. package/dist/server/modules/order/utils/filterOrders.js +8 -23
  53. package/dist/server/modules/products/index.d.ts +7 -34
  54. package/dist/server/modules/products/index.js +317 -631
  55. package/dist/server/modules/resource/index.d.ts +0 -2
  56. package/dist/server/modules/resource/index.js +3 -29
  57. package/dist/server/modules/schedule/index.d.ts +4 -4
  58. package/dist/server/modules/schedule/index.js +88 -111
  59. package/dist/solution/BaseSales/index.d.ts +9 -131
  60. package/dist/solution/BaseSales/index.js +447 -1944
  61. package/dist/solution/BaseSales/types.d.ts +6 -76
  62. package/dist/solution/BaseSales/types.js +4 -5
  63. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +0 -1
  64. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +24 -105
  65. package/dist/solution/BaseSales/utils.d.ts +1 -1
  66. package/dist/solution/BaseSales/utils.js +21 -62
  67. package/dist/solution/BookingByStep/index.d.ts +1 -1
  68. package/dist/solution/BookingTicket/index.d.ts +10 -270
  69. package/dist/solution/BookingTicket/index.js +237 -1772
  70. package/dist/solution/BookingTicket/types.d.ts +1 -118
  71. package/dist/solution/BookingTicket/types.js +2 -41
  72. package/dist/solution/BookingTicket/utils/bookingStatus.d.ts +0 -40
  73. package/dist/solution/BookingTicket/utils/bookingStatus.js +0 -70
  74. package/dist/solution/BookingTicket/utils/cartView.d.ts +1 -9
  75. package/dist/solution/BookingTicket/utils/cartView.js +7 -94
  76. package/dist/solution/BookingTicket/utils/scan/index.d.ts +0 -5
  77. package/dist/solution/BookingTicket/utils/scan/index.js +8 -20
  78. package/dist/solution/Checkout/appointmentDemo.json +1 -0
  79. package/dist/solution/Checkout/index.d.ts +0 -1
  80. package/dist/solution/Checkout/index.js +9 -10
  81. package/dist/solution/RegisterAndLogin/config.js +10 -2
  82. package/dist/solution/ScanOrder/index.d.ts +3 -9
  83. package/dist/solution/ScanOrder/index.js +134 -241
  84. package/dist/solution/ScanOrder/types.d.ts +5 -9
  85. package/dist/solution/ScanOrder/types.js +3 -2
  86. package/dist/solution/ScanOrder/utils.d.ts +1 -1
  87. package/dist/solution/ScanOrder/utils.js +22 -84
  88. package/dist/solution/VenueBooking/index.d.ts +2 -5
  89. package/dist/solution/VenueBooking/index.js +59 -110
  90. package/dist/solution/VenueBooking/sales-section-4-annotated.json +2 -0
  91. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
  92. package/dist/solution/VenueBooking/utils/slotMerge.js +0 -10
  93. package/dist/types/index.d.ts +0 -10
  94. package/lib/model/strategy/adapter/promotion/evaluator.js +1 -2
  95. package/lib/model/strategy/adapter/promotion/index.js +0 -49
  96. package/lib/model/strategy/adapter/walletPass/utils.js +2 -3
  97. package/lib/modules/Cart/utils/cartProduct.js +3 -20
  98. package/lib/modules/Cart/utils/changePrice.js +20 -12
  99. package/lib/modules/Customer/index.d.ts +0 -20
  100. package/lib/modules/Customer/index.js +11 -64
  101. package/lib/modules/Customer/types.d.ts +0 -2
  102. package/lib/modules/Discount/index.js +1 -5
  103. package/lib/modules/Discount/types.d.ts +0 -1
  104. package/lib/modules/OpenData/index.d.ts +0 -8
  105. package/lib/modules/OpenData/index.js +5 -19
  106. package/lib/modules/Order/index.d.ts +18 -268
  107. package/lib/modules/Order/index.js +344 -2149
  108. package/lib/modules/Order/types.d.ts +31 -279
  109. package/lib/modules/Order/types.js +0 -1
  110. package/lib/modules/Order/utils.d.ts +5 -147
  111. package/lib/modules/Order/utils.js +46 -614
  112. package/lib/modules/Payment/index.d.ts +13 -10
  113. package/lib/modules/Payment/index.js +150 -18
  114. package/lib/modules/Payment/types.d.ts +0 -2
  115. package/lib/modules/Payment/utils.js +1 -2
  116. package/lib/modules/Payment/walletpass.js +3 -7
  117. package/lib/modules/ProductList/index.d.ts +12 -16
  118. package/lib/modules/ProductList/index.js +4 -41
  119. package/lib/modules/ProductList/types.d.ts +0 -14
  120. package/lib/modules/Quotation/index.d.ts +1 -0
  121. package/lib/modules/Quotation/index.js +16 -19
  122. package/lib/modules/Rules/index.d.ts +0 -4
  123. package/lib/modules/Rules/index.js +120 -136
  124. package/lib/modules/Rules/types.d.ts +0 -1
  125. package/lib/modules/SalesSummary/index.d.ts +25 -8
  126. package/lib/modules/SalesSummary/index.js +4 -30
  127. package/lib/modules/SalesSummary/types.d.ts +1 -4
  128. package/lib/modules/SalesSummary/utils.d.ts +25 -2
  129. package/lib/modules/SalesSummary/utils.js +91 -645
  130. package/lib/modules/Schedule/index.d.ts +0 -7
  131. package/lib/modules/Schedule/index.js +1 -17
  132. package/lib/modules/Summary/index.js +4 -5
  133. package/lib/modules/index.d.ts +0 -2
  134. package/lib/modules/index.js +1 -5
  135. package/lib/plugins/request.d.ts +0 -1
  136. package/lib/server/index.d.ts +1 -204
  137. package/lib/server/index.js +57 -1888
  138. package/lib/server/modules/index.d.ts +0 -2
  139. package/lib/server/modules/index.js +0 -3
  140. package/lib/server/modules/order/index.d.ts +4 -120
  141. package/lib/server/modules/order/index.js +142 -919
  142. package/lib/server/modules/order/types.d.ts +3 -32
  143. package/lib/server/modules/order/utils/filterBookings.js +5 -24
  144. package/lib/server/modules/order/utils/filterOrders.js +6 -15
  145. package/lib/server/modules/products/index.d.ts +7 -34
  146. package/lib/server/modules/products/index.js +54 -189
  147. package/lib/server/modules/resource/index.d.ts +0 -2
  148. package/lib/server/modules/resource/index.js +3 -27
  149. package/lib/server/modules/schedule/index.d.ts +4 -4
  150. package/lib/server/modules/schedule/index.js +40 -47
  151. package/lib/solution/BaseSales/index.d.ts +9 -131
  152. package/lib/solution/BaseSales/index.js +63 -1106
  153. package/lib/solution/BaseSales/types.d.ts +6 -76
  154. package/lib/solution/BaseSales/types.js +1 -3
  155. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +0 -1
  156. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +18 -106
  157. package/lib/solution/BaseSales/utils.d.ts +1 -1
  158. package/lib/solution/BaseSales/utils.js +10 -54
  159. package/lib/solution/BookingByStep/index.d.ts +1 -1
  160. package/lib/solution/BookingTicket/index.d.ts +10 -270
  161. package/lib/solution/BookingTicket/index.js +29 -922
  162. package/lib/solution/BookingTicket/types.d.ts +1 -118
  163. package/lib/solution/BookingTicket/types.js +0 -11
  164. package/lib/solution/BookingTicket/utils/bookingStatus.d.ts +0 -40
  165. package/lib/solution/BookingTicket/utils/bookingStatus.js +2 -44
  166. package/lib/solution/BookingTicket/utils/cartView.d.ts +1 -9
  167. package/lib/solution/BookingTicket/utils/cartView.js +6 -61
  168. package/lib/solution/BookingTicket/utils/scan/index.d.ts +0 -5
  169. package/lib/solution/BookingTicket/utils/scan/index.js +3 -17
  170. package/lib/solution/Checkout/appointmentDemo.json +1 -0
  171. package/lib/solution/Checkout/index.d.ts +0 -1
  172. package/lib/solution/Checkout/index.js +2 -1
  173. package/lib/solution/RegisterAndLogin/config.js +10 -2
  174. package/lib/solution/ScanOrder/index.d.ts +3 -9
  175. package/lib/solution/ScanOrder/index.js +70 -153
  176. package/lib/solution/ScanOrder/types.d.ts +5 -9
  177. package/lib/solution/ScanOrder/utils.d.ts +1 -1
  178. package/lib/solution/ScanOrder/utils.js +17 -83
  179. package/lib/solution/VenueBooking/index.d.ts +2 -5
  180. package/lib/solution/VenueBooking/index.js +17 -54
  181. package/lib/solution/VenueBooking/sales-section-4-annotated.json +2 -0
  182. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
  183. package/lib/solution/VenueBooking/utils/slotMerge.js +0 -10
  184. package/lib/types/index.d.ts +0 -10
  185. package/package.json +1 -1
  186. package/dist/modules/BookingContext/index.d.ts +0 -48
  187. package/dist/modules/BookingContext/index.js +0 -566
  188. package/dist/modules/BookingContext/types.d.ts +0 -102
  189. package/dist/modules/BookingContext/types.js +0 -51
  190. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
  191. package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -284
  192. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
  193. package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -145
  194. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -76
  195. package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -218
  196. package/dist/modules/BookingContext/utils/flexible.d.ts +0 -28
  197. package/dist/modules/BookingContext/utils/flexible.js +0 -56
  198. package/dist/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
  199. package/dist/modules/BookingContext/utils/formatResourceList.js +0 -38
  200. package/dist/modules/BookingContext/utils/index.d.ts +0 -11
  201. package/dist/modules/BookingContext/utils/index.js +0 -11
  202. package/dist/modules/BookingContext/utils/noResource.d.ts +0 -13
  203. package/dist/modules/BookingContext/utils/noResource.js +0 -77
  204. package/dist/modules/BookingContext/utils/orderLineDisplay.d.ts +0 -1
  205. package/dist/modules/BookingContext/utils/orderLineDisplay.js +0 -36
  206. package/dist/modules/BookingContext/utils/productExtend.d.ts +0 -72
  207. package/dist/modules/BookingContext/utils/productExtend.js +0 -339
  208. package/dist/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
  209. package/dist/modules/BookingContext/utils/resourceErrors.js +0 -74
  210. package/dist/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
  211. package/dist/modules/BookingContext/utils/resourceSelection.js +0 -24
  212. package/dist/modules/BookingContext/utils/resources.d.ts +0 -80
  213. package/dist/modules/BookingContext/utils/resources.js +0 -486
  214. package/dist/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
  215. package/dist/modules/BookingContext/utils/serviceTimes.js +0 -151
  216. package/dist/modules/BookingContext/utils/timeSlices.d.ts +0 -42
  217. package/dist/modules/BookingContext/utils/timeSlices.js +0 -100
  218. package/dist/modules/Order/utils/manualProductDiscount.d.ts +0 -106
  219. package/dist/modules/Order/utils/manualProductDiscount.js +0 -210
  220. package/dist/modules/SurchargeList/index.d.ts +0 -16
  221. package/dist/modules/SurchargeList/index.js +0 -162
  222. package/dist/modules/SurchargeList/types.d.ts +0 -11
  223. package/dist/modules/SurchargeList/types.js +0 -1
  224. package/dist/server/modules/payment/index.d.ts +0 -28
  225. package/dist/server/modules/payment/index.js +0 -305
  226. package/dist/server/modules/payment/types.d.ts +0 -9
  227. package/dist/server/modules/payment/types.js +0 -1
  228. package/dist/server/test.json +0 -713
  229. package/dist/server/utils/small-ticket.d.ts +0 -71
  230. package/dist/server/utils/small-ticket.js +0 -830
  231. package/dist/solution/BaseSales/utils/cartPromotion.d.ts +0 -287
  232. package/dist/solution/BaseSales/utils/cartPromotion.js +0 -1438
  233. package/dist/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
  234. package/dist/solution/BaseSales/utils/quotationPrice.js +0 -237
  235. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -117
  236. package/dist/solution/BookingTicket/utils/addProductDecision.js +0 -346
  237. package/dist/solution/BookingTicket/utils/addTimeAvailability.d.ts +0 -35
  238. package/dist/solution/BookingTicket/utils/addTimeAvailability.js +0 -95
  239. package/dist/solution/BookingTicket/utils/exampleData.d.ts +0 -123
  240. package/dist/solution/BookingTicket/utils/exampleData.js +0 -183
  241. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +0 -185
  242. package/dist/solution/BookingTicket/utils/resolveBestAddTimePlan.js +0 -438
  243. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +0 -36
  244. package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +0 -399
  245. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +0 -32
  246. package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +0 -56
  247. package/dist/solution/BookingTicket/utils/scan/scanProductValues.d.ts +0 -21
  248. package/dist/solution/BookingTicket/utils/scan/scanProductValues.js +0 -150
  249. package/dist/solution/BookingTicket/utils/sessionCatalogStale.d.ts +0 -23
  250. package/dist/solution/BookingTicket/utils/sessionCatalogStale.js +0 -78
  251. package/lib/modules/BookingContext/index.d.ts +0 -48
  252. package/lib/modules/BookingContext/index.js +0 -368
  253. package/lib/modules/BookingContext/types.d.ts +0 -102
  254. package/lib/modules/BookingContext/types.js +0 -34
  255. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
  256. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -276
  257. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
  258. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -151
  259. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -76
  260. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -201
  261. package/lib/modules/BookingContext/utils/flexible.d.ts +0 -28
  262. package/lib/modules/BookingContext/utils/flexible.js +0 -80
  263. package/lib/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
  264. package/lib/modules/BookingContext/utils/formatResourceList.js +0 -50
  265. package/lib/modules/BookingContext/utils/index.d.ts +0 -11
  266. package/lib/modules/BookingContext/utils/index.js +0 -43
  267. package/lib/modules/BookingContext/utils/noResource.d.ts +0 -13
  268. package/lib/modules/BookingContext/utils/noResource.js +0 -90
  269. package/lib/modules/BookingContext/utils/orderLineDisplay.d.ts +0 -1
  270. package/lib/modules/BookingContext/utils/orderLineDisplay.js +0 -56
  271. package/lib/modules/BookingContext/utils/productExtend.d.ts +0 -72
  272. package/lib/modules/BookingContext/utils/productExtend.js +0 -283
  273. package/lib/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
  274. package/lib/modules/BookingContext/utils/resourceErrors.js +0 -80
  275. package/lib/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
  276. package/lib/modules/BookingContext/utils/resourceSelection.js +0 -46
  277. package/lib/modules/BookingContext/utils/resources.d.ts +0 -80
  278. package/lib/modules/BookingContext/utils/resources.js +0 -377
  279. package/lib/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
  280. package/lib/modules/BookingContext/utils/serviceTimes.js +0 -162
  281. package/lib/modules/BookingContext/utils/timeSlices.d.ts +0 -42
  282. package/lib/modules/BookingContext/utils/timeSlices.js +0 -124
  283. package/lib/modules/Order/utils/manualProductDiscount.d.ts +0 -106
  284. package/lib/modules/Order/utils/manualProductDiscount.js +0 -206
  285. package/lib/modules/SurchargeList/index.d.ts +0 -16
  286. package/lib/modules/SurchargeList/index.js +0 -89
  287. package/lib/modules/SurchargeList/types.d.ts +0 -11
  288. package/lib/modules/SurchargeList/types.js +0 -17
  289. package/lib/server/modules/payment/index.d.ts +0 -28
  290. package/lib/server/modules/payment/index.js +0 -192
  291. package/lib/server/modules/payment/types.d.ts +0 -9
  292. package/lib/server/modules/payment/types.js +0 -17
  293. package/lib/server/test.json +0 -713
  294. package/lib/server/utils/small-ticket.d.ts +0 -71
  295. package/lib/server/utils/small-ticket.js +0 -781
  296. package/lib/solution/BaseSales/utils/cartPromotion.d.ts +0 -287
  297. package/lib/solution/BaseSales/utils/cartPromotion.js +0 -992
  298. package/lib/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
  299. package/lib/solution/BaseSales/utils/quotationPrice.js +0 -277
  300. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -117
  301. package/lib/solution/BookingTicket/utils/addProductDecision.js +0 -318
  302. package/lib/solution/BookingTicket/utils/addTimeAvailability.d.ts +0 -35
  303. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +0 -125
  304. package/lib/solution/BookingTicket/utils/exampleData.d.ts +0 -123
  305. package/lib/solution/BookingTicket/utils/exampleData.js +0 -0
  306. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.d.ts +0 -185
  307. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +0 -254
  308. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +0 -36
  309. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +0 -168
  310. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +0 -32
  311. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +0 -51
  312. package/lib/solution/BookingTicket/utils/scan/scanProductValues.d.ts +0 -21
  313. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +0 -127
  314. package/lib/solution/BookingTicket/utils/sessionCatalogStale.d.ts +0 -23
  315. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +0 -85
@@ -1,183 +0,0 @@
1
- var data = [{
2
- "id": 58299,
3
- "title": "玄-加时商品-与数量无关-不指定商品",
4
- "price": 1,
5
- "minMinutes": 30,
6
- "maxMinutes": 30,
7
- "unitMinutes": 30,
8
- "unlimited": false,
9
- "_originalProduct": {
10
- "id": 58299,
11
- "extension_id": 384,
12
- "extension_type": "product_add_time",
13
- "shop_id": 9,
14
- "title": "玄-加时商品-与数量无关-不指定商品",
15
- "slug": "玄-加时商品-与数量无关-指定商品",
16
- "status": "published",
17
- "stock_quantity": -119,
18
- "sales_quantity": 113,
19
- "sum_stock": -119,
20
- "price": "1.00",
21
- "original_price": "4.00",
22
- "cost_price": "0.00",
23
- "cover": "",
24
- "channel_application": ["online-store", "pos", "bbc-module:mebook"],
25
- "is_track": 0,
26
- "over_sold": 0,
27
- "is_gst": 1,
28
- "code": "",
29
- "barcode": "",
30
- "is_delivery": 0,
31
- "weight_unit": "KILOGRAMS",
32
- "weight_value": "0.00",
33
- "type": "physical",
34
- "unit": "",
35
- "sort": 9999999,
36
- "subtitle": "",
37
- "minimum_markup_price": "0.00",
38
- "is_bundle": 0,
39
- "description": "",
40
- "open_sold_weight": 0,
41
- "unit_value": 0,
42
- "is_variant": 0,
43
- "variant_count": 0,
44
- "add_time": {
45
- "unit_duration": 30,
46
- "min_add_time": 30,
47
- "max_add_time": 30,
48
- "calculate_type": "not_related_to_quantity",
49
- "relation_product": {
50
- "type": "product_all",
51
- "products": []
52
- }
53
- },
54
- "shelf_product_datas": [],
55
- "step_value": 1,
56
- "min_num_unit": 1,
57
- "is_charge_tax": 1,
58
- "base_price": "1.00",
59
- "variant": []
60
- }
61
- }, {
62
- "id": 58279,
63
- "title": "加时商品2",
64
- "price": 10,
65
- "minMinutes": 30,
66
- "maxMinutes": 120,
67
- "unitMinutes": 10,
68
- "unlimited": false,
69
- "_originalProduct": {
70
- "id": 58279,
71
- "extension_id": 384,
72
- "extension_type": "product_add_time",
73
- "shop_id": 9,
74
- "title": "加时商品2",
75
- "slug": "加时商品2",
76
- "status": "published",
77
- "stock_quantity": -275,
78
- "sales_quantity": 261,
79
- "sum_stock": -275,
80
- "price": "10.00",
81
- "original_price": "10.00",
82
- "cost_price": "0.00",
83
- "cover": "",
84
- "channel_application": ["online-store", "pos", "bbc-module:mebook"],
85
- "is_track": 0,
86
- "over_sold": 0,
87
- "is_gst": 1,
88
- "code": "",
89
- "barcode": "",
90
- "is_delivery": 0,
91
- "weight_unit": "KILOGRAMS",
92
- "weight_value": "0.00",
93
- "type": "physical",
94
- "unit": "",
95
- "sort": 9999999,
96
- "subtitle": "",
97
- "minimum_markup_price": "0.00",
98
- "is_bundle": 0,
99
- "description": "",
100
- "open_sold_weight": 0,
101
- "unit_value": 0,
102
- "is_variant": 0,
103
- "variant_count": 0,
104
- "add_time": {
105
- "additional_time_options": "explicit_durations",
106
- "unit_duration": 10,
107
- "min_add_time": 30,
108
- "max_add_time": 120,
109
- "calculate_type": "not_related_to_quantity",
110
- "relation_product": {
111
- "type": "product_all",
112
- "products": []
113
- }
114
- },
115
- "shelf_product_datas": [],
116
- "step_value": 1,
117
- "min_num_unit": 1,
118
- "is_charge_tax": 1,
119
- "base_price": "10.00",
120
- "variant": []
121
- }
122
- }, {
123
- "id": 58277,
124
- "title": "测试加时商品",
125
- "price": 2,
126
- "minMinutes": 30,
127
- "maxMinutes": 780,
128
- "unitMinutes": 30,
129
- "unlimited": true,
130
- "_originalProduct": {
131
- "id": 58277,
132
- "extension_id": 384,
133
- "extension_type": "product_add_time",
134
- "shop_id": 9,
135
- "title": "测试加时商品",
136
- "slug": "测试加时商品",
137
- "status": "published",
138
- "stock_quantity": -7,
139
- "sales_quantity": 8,
140
- "sum_stock": -7,
141
- "price": "2.00",
142
- "original_price": "0.00",
143
- "cost_price": "0.00",
144
- "cover": "",
145
- "channel_application": ["online-store", "pos", "bbc-module:mebook"],
146
- "is_track": 0,
147
- "over_sold": 0,
148
- "is_gst": 1,
149
- "code": "",
150
- "barcode": "",
151
- "is_delivery": 0,
152
- "weight_unit": "KILOGRAMS",
153
- "weight_value": "0.00",
154
- "type": "physical",
155
- "unit": "",
156
- "sort": 9999999,
157
- "subtitle": "",
158
- "minimum_markup_price": "0.00",
159
- "is_bundle": 0,
160
- "description": "",
161
- "open_sold_weight": 0,
162
- "unit_value": 0,
163
- "is_variant": 0,
164
- "variant_count": 0,
165
- "add_time": {
166
- "additional_time_options": "unlimited",
167
- "unit_duration": 30,
168
- "min_add_time": 30,
169
- "max_add_time": 780,
170
- "calculate_type": "select_quantity",
171
- "relation_product": {
172
- "type": "product_all",
173
- "products": []
174
- }
175
- },
176
- "shelf_product_datas": [],
177
- "step_value": 1,
178
- "min_num_unit": 1,
179
- "is_charge_tax": 1,
180
- "base_price": "2.00",
181
- "variant": []
182
- }
183
- }];
@@ -1,185 +0,0 @@
1
- /**
2
- * 计算指定加时时长下的最优购买方案。
3
- *
4
- * 输入的商品结构来自旧版 booking addTimeModal 的加时商品配置映射:
5
- * - `minMinutes`:该商品第一次可选择的最小时长。
6
- * - `maxMinutes`:单次购买该商品可覆盖的最大时长。
7
- * - `unitMinutes`:超过最小时长后,每次递增的时长切片。
8
- * - `price`:每个 `unitMinutes` 切片的价格。
9
- * - `unlimited`:固定价格商品,可覆盖任意目标时长。
10
- *
11
- * 算法流程:
12
- *
13
- * ```
14
- * products
15
- * |
16
- * v
17
- * 将每个普通商品展开成有限候选档位
18
- * 商品 A: min=30, max=60, unit=10, price=10
19
- * => 30m/$30, 40m/$40, 50m/$50, 60m/$60
20
- * |
21
- * v
22
- * 单独加入 unlimited 候选
23
- * unlimited 商品 => targetMinutes / 固定商品价格
24
- * |
25
- * v
26
- * 按 covered minutes 做动态规划
27
- * dp[minutes] = 正好覆盖 `minutes` 时的最低价候选组合
28
- * |
29
- * v
30
- * 从所有 dp[minutes >= targetMinutes] 中挑选最优方案
31
- * ```
32
- *
33
- * 候选档位生成刻意对齐旧版 addTimeModal:
34
- * `totalPrice = minutes / unitMinutes * price`.
35
- * 例如 `minMinutes=30`、`unitMinutes=10`、`price=10` 时:
36
- * - 30 分钟 => 30 / 10 * 10 = 30
37
- * - 60 分钟 => 60 / 10 * 10 = 60
38
- *
39
- * 目标时长不要求精确命中某个档位,只需要覆盖即可。例如目标是 51 分钟时,
40
- * 60 分钟档位可以作为候选。动态规划也允许跨商品组合,例如商品 A 的 30m
41
- * 加上商品 B 的 30m。最终方案按以下优先级比较:
42
- * 1. 总价更低;
43
- * 2. 超出时长更少,即 `coveredMinutes - targetMinutes` 更小;
44
- * 3. 结果行数更少,让购买方案尽量简单。
45
- *
46
- * 典型匹配示例:
47
- *
48
- * 示例 1:精确命中,直接选择更便宜的商品。
49
- * ```
50
- * target = 30
51
- * 商品 A: min=30, max=30, unit=30, price=10 => 30m/$10
52
- * 商品 B: min=30, max=30, unit=30, price=8 => 30m/$8
53
- * 结果:选择商品 B,coveredMinutes=30,totalPrice=8
54
- * ```
55
- *
56
- * 示例 2:目标时长落在两个档位之间,向上选择可覆盖的档位。
57
- * ```
58
- * target = 51
59
- * 商品 A: min=30, max=120, unit=10, price=10
60
- * 候选:30m/$30, 40m/$40, 50m/$50, 60m/$60 ...
61
- * 结果:50m 不足以覆盖 51m,因此选择 60m/$60
62
- * ```
63
- *
64
- * 示例 3:不同商品都能覆盖同一目标时长,比较最终价格。
65
- * ```
66
- * target = 51
67
- * 商品 A: min=30, max=120, unit=10, price=10 => 60m/$60
68
- * 商品 B: min=30, max=120, unit=30, price=25 => 60m/$50
69
- * 结果:两个方案都覆盖 60m,但商品 B 更便宜,所以选择商品 B
70
- * ```
71
- *
72
- * 示例 4:允许跨商品组合,组合价更低时会选择组合。
73
- * ```
74
- * target = 90
75
- * 商品 A: min=30, max=30, unit=30, price=5 => 30m/$5
76
- * 商品 B: min=60, max=60, unit=60, price=8 => 60m/$8
77
- * 商品 C: min=90, max=90, unit=90, price=20 => 90m/$20
78
- * 结果:商品 A + 商品 B = 90m/$13,比商品 C 更便宜
79
- * ```
80
- *
81
- * 示例 5:允许重复购买同一个候选档位。
82
- * ```
83
- * target = 90
84
- * 商品 A: min=30, max=30, unit=30, price=5 => 30m/$5
85
- * 结果:购买 3 份商品 A,coveredMinutes=90,totalPrice=15,
86
- * lines 中会合并为一行:product_add_schedule_time=30,num=3
87
- * ```
88
- *
89
- * 示例 6:unlimited 可以覆盖任意目标时长,并参与价格比较。
90
- * ```
91
- * target = 180
92
- * 商品 A: min=30, max=120, unit=30, price=10
93
- * 商品 B: unlimited=true, price=35
94
- * 普通商品可以组合成 180m,例如 120m + 60m,总价 $60
95
- * unlimited 商品固定 $35
96
- * 结果:选择 unlimited 商品,coveredMinutes=180,totalPrice=35
97
- * ```
98
- *
99
- * 示例 7:unlimited 不一定优先,普通商品更便宜时选择普通商品。
100
- * ```
101
- * target = 60
102
- * 商品 A: min=30, max=60, unit=30, price=10 => 60m/$20
103
- * 商品 B: unlimited=true, price=50
104
- * 结果:选择商品 A 的 60m 档位
105
- * ```
106
- *
107
- * 示例 8:价格相同,优先选择超出时长更少的方案。
108
- * ```
109
- * target = 51
110
- * 商品 A: 60m/$20
111
- * 商品 B: 90m/$20
112
- * 结果:选择 60m,因为 overage=9,小于 90m 的 overage=39
113
- * ```
114
- *
115
- * 示例 9:价格和覆盖时长都相同,优先选择结果行数更少的方案。
116
- * ```
117
- * target = 60
118
- * 商品 A: 60m/$20
119
- * 商品 B: 30m/$10
120
- * 商品 C: 30m/$10
121
- * 结果:商品 A 单行方案和 B+C 两行方案价格、时长相同,选择商品 A
122
- * ```
123
- *
124
- * 示例 10:没有任何有效商品时返回 `NO_PRODUCTS`。
125
- * ```
126
- * target = 30
127
- * products = []
128
- * 结果:available=false,unavailableReason='NO_PRODUCTS'
129
- * ```
130
- *
131
- * 示例 11:有商品但没有可用候选时返回 `NO_COVERAGE`。
132
- * ```
133
- * target = 30
134
- * 商品 A: price=0,或 minMinutes 缺失/无效
135
- * 结果:available=false,unavailableReason='NO_COVERAGE'
136
- * ```
137
- *
138
- * 示例 12:目标时长小于等于 0 时无需购买。
139
- * ```
140
- * target = 0
141
- * 结果:available=true,coveredMinutes=0,totalPrice=0,lines=[]
142
- * ```
143
- *
144
- * 搜索边界:
145
- * 有限档位只需要搜索到 `targetMinutes + maxFiniteCandidateMinutes`。
146
- * 这里的 `maxFiniteCandidateMinutes` 是所有普通候选档位里的最大时长。
147
- * 例如目标是 51 分钟,最大普通档位是 120 分钟,则只搜索到 171 分钟。
148
- * 如果某个组合覆盖了 180 分钟,那么移除其中任意一个普通档位后,剩余时长
149
- * 仍然有机会覆盖 51 分钟,而且价格一定不会更高,所以 180 分钟这个组合不
150
- * 可能是最优解。
151
- */
152
- export interface AddTimeProduct {
153
- id: string | number;
154
- title?: string;
155
- price: number;
156
- minMinutes?: number;
157
- maxMinutes?: number;
158
- unitMinutes?: number;
159
- unlimited?: boolean;
160
- _originalProduct?: unknown;
161
- }
162
- export interface AddTimePlanLine {
163
- product_id: string | number;
164
- product_title?: string;
165
- product_add_schedule_time: number;
166
- num: number;
167
- price: number;
168
- _originalProduct?: unknown;
169
- }
170
- export interface AddTimePlan {
171
- available: boolean;
172
- unavailableReason?: 'NO_PRODUCTS' | 'NO_COVERAGE';
173
- targetMinutes: number;
174
- coveredMinutes: number;
175
- totalPrice: number;
176
- lines: AddTimePlanLine[];
177
- }
178
- interface AddTimeCandidate extends AddTimePlanLine {
179
- totalPrice: number;
180
- unlimited?: boolean;
181
- }
182
- export declare const ADD_TIME_UNIT_MINUTES: readonly [10, 15, 20, 30, 45, 60];
183
- export declare function buildAddTimeCandidates(products: AddTimeProduct[]): AddTimeCandidate[];
184
- export declare function resolveBestAddTimePlan(products: AddTimeProduct[], targetMinutes: number): AddTimePlan;
185
- export {};