@pisell/pisellos 0.0.569 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/dist/core/index.js +10 -6
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -3
  4. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  5. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  6. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  7. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  8. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  9. package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
  10. package/dist/model/strategy/strategy-example.js +19 -5
  11. package/dist/modules/BaseModule.d.ts +1 -1
  12. package/dist/modules/BaseModule.js +8 -10
  13. package/dist/modules/Cart/index.js +3 -0
  14. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  15. package/dist/modules/Cart/utils/cartResource.js +0 -2
  16. package/dist/modules/Cart/utils/changePrice.js +9 -16
  17. package/dist/modules/Date/index.js +5 -1
  18. package/dist/modules/Discount/index.d.ts +0 -1
  19. package/dist/modules/Discount/index.js +7 -22
  20. package/dist/modules/Discount/types.d.ts +0 -1
  21. package/dist/modules/OpenData/index.js +2 -0
  22. package/dist/modules/Order/index.d.ts +1 -1
  23. package/dist/modules/Order/index.js +70 -40
  24. package/dist/modules/Payment/index.js +162 -97
  25. package/dist/modules/Payment/types.d.ts +4 -8
  26. package/dist/modules/Payment/walletpass.d.ts +0 -2
  27. package/dist/modules/Payment/walletpass.js +5 -4
  28. package/dist/modules/ProductList/index.d.ts +1 -1
  29. package/dist/modules/ProductList/index.js +3 -12
  30. package/dist/modules/ProductList/types.d.ts +0 -1
  31. package/dist/modules/Rules/index.js +126 -427
  32. package/dist/modules/SalesSummary/utils.js +1 -2
  33. package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
  34. package/dist/modules/Schedule/index.js +1 -0
  35. package/dist/modules/Schedule/utils.js +1 -0
  36. package/dist/modules/Step/index.js +1 -0
  37. package/dist/modules/Summary/utils.js +22 -43
  38. package/dist/plugins/request.js +4 -1
  39. package/dist/plugins/window.js +6 -2
  40. package/dist/server/index.js +129 -97
  41. package/dist/server/modules/menu/index.js +41 -32
  42. package/dist/server/modules/order/index.js +4 -2
  43. package/dist/server/modules/products/index.js +42 -24
  44. package/dist/server/modules/quotation/index.js +38 -29
  45. package/dist/server/modules/resource/index.js +4 -3
  46. package/dist/server/modules/schedule/index.js +35 -27
  47. package/dist/server/utils/product.js +1 -0
  48. package/dist/solution/BaseSales/index.js +41 -38
  49. package/dist/solution/BookingByStep/index.d.ts +1 -1
  50. package/dist/solution/BookingByStep/index.js +60 -11
  51. package/dist/solution/BookingByStep/utils/capacity.js +11 -1
  52. package/dist/solution/BookingByStep/utils/resources.js +3 -1
  53. package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
  54. package/dist/solution/BookingTicket/index.d.ts +1 -1
  55. package/dist/solution/BookingTicket/index.js +2 -0
  56. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
  57. package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
  58. package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
  59. package/dist/solution/BuyTickets/index.js +12 -9
  60. package/dist/solution/Checkout/index.js +252 -177
  61. package/dist/solution/Checkout/utils/index.js +16 -4
  62. package/dist/solution/RegisterAndLogin/index.js +76 -30
  63. package/dist/solution/ScanOrder/index.js +60 -50
  64. package/dist/solution/ShopDiscount/index.js +14 -15
  65. package/dist/solution/ShopDiscount/types.d.ts +4 -5
  66. package/dist/solution/ShopDiscount/utils.d.ts +0 -9
  67. package/dist/solution/ShopDiscount/utils.js +0 -9
  68. package/dist/solution/VenueBooking/index.d.ts +3 -31
  69. package/dist/solution/VenueBooking/index.js +496 -651
  70. package/dist/solution/VenueBooking/types.d.ts +1 -3
  71. package/dist/solution/VenueBooking/types.js +0 -1
  72. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  73. package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
  74. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  75. package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/utils/task.js +18 -15
  78. package/dist/utils/watch.js +1 -0
  79. package/lib/apis/picoding.js +0 -2
  80. package/lib/core/index.js +132 -130
  81. package/lib/effects/index.js +57 -46
  82. package/lib/index.d.ts +0 -1
  83. package/lib/index.js +50 -92
  84. package/lib/model/index.js +21 -14
  85. package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
  86. package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
  87. package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
  88. package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
  89. package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
  90. package/lib/model/strategy/adapter/index.js +64 -100
  91. package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
  92. package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
  93. package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
  94. package/lib/model/strategy/adapter/itemRule/index.js +57 -83
  95. package/lib/model/strategy/adapter/itemRule/type.js +36 -97
  96. package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
  97. package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
  98. package/lib/model/strategy/adapter/promotion/examples.js +159 -139
  99. package/lib/model/strategy/adapter/promotion/index.js +0 -1
  100. package/lib/model/strategy/adapter/promotion/type.js +35 -199
  101. package/lib/model/strategy/adapter/type.js +16 -4
  102. package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
  103. package/lib/model/strategy/adapter/walletPass/example.js +190 -217
  104. package/lib/model/strategy/adapter/walletPass/index.js +51 -75
  105. package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
  106. package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
  107. package/lib/model/strategy/adapter/walletPass/type.js +16 -4
  108. package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  109. package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
  110. package/lib/model/strategy/engine.js +168 -270
  111. package/lib/model/strategy/index.js +34 -49
  112. package/lib/model/strategy/strategy-example.js +239 -243
  113. package/lib/model/strategy/type.js +40 -100
  114. package/lib/modules/Account/index.js +53 -39
  115. package/lib/modules/Account/types.js +33 -20
  116. package/lib/modules/AccountList/index.js +154 -116
  117. package/lib/modules/AccountList/types.js +31 -30
  118. package/lib/modules/AccountList/utils.js +30 -18
  119. package/lib/modules/BaseModule.d.ts +1 -1
  120. package/lib/modules/BaseModule.js +46 -25
  121. package/lib/modules/BookingContext/index.js +136 -158
  122. package/lib/modules/BookingContext/types.js +32 -46
  123. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
  124. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
  125. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
  126. package/lib/modules/BookingContext/utils/flexible.js +55 -38
  127. package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
  128. package/lib/modules/BookingContext/utils/index.js +41 -124
  129. package/lib/modules/BookingContext/utils/noResource.js +70 -58
  130. package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
  131. package/lib/modules/BookingContext/utils/productExtend.js +155 -202
  132. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  133. package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
  134. package/lib/modules/BookingContext/utils/resources.js +167 -209
  135. package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
  136. package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
  137. package/lib/modules/Cart/index.js +124 -170
  138. package/lib/modules/Cart/types.js +51 -46
  139. package/lib/modules/Cart/utils/cartAccount.js +39 -40
  140. package/lib/modules/Cart/utils/cartDate.js +61 -56
  141. package/lib/modules/Cart/utils/cartDiscount.js +33 -28
  142. package/lib/modules/Cart/utils/cartNote.js +32 -27
  143. package/lib/modules/Cart/utils/cartProduct.js +251 -321
  144. package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
  145. package/lib/modules/Cart/utils/cartResource.js +78 -72
  146. package/lib/modules/Cart/utils/changePrice.js +50 -28
  147. package/lib/modules/Cart/utils/index.js +48 -106
  148. package/lib/modules/Customer/constants.js +34 -13
  149. package/lib/modules/Customer/index.js +169 -232
  150. package/lib/modules/Customer/types.js +35 -38
  151. package/lib/modules/Date/index.js +115 -116
  152. package/lib/modules/Date/types.js +28 -16
  153. package/lib/modules/Date/utils.js +123 -174
  154. package/lib/modules/Discount/index.d.ts +0 -1
  155. package/lib/modules/Discount/index.js +128 -130
  156. package/lib/modules/Discount/types.d.ts +0 -1
  157. package/lib/modules/Discount/types.js +31 -9
  158. package/lib/modules/Guests/index.js +56 -30
  159. package/lib/modules/Guests/types.js +33 -23
  160. package/lib/modules/Holder/index.js +189 -209
  161. package/lib/modules/Holder/types.js +16 -4
  162. package/lib/modules/Holder/utils.js +49 -20
  163. package/lib/modules/OpenData/index.js +76 -69
  164. package/lib/modules/OpenData/types.js +16 -4
  165. package/lib/modules/OpenData/utils.js +78 -44
  166. package/lib/modules/Order/index.d.ts +1 -1
  167. package/lib/modules/Order/index.js +1909 -1572
  168. package/lib/modules/Order/types.js +35 -78
  169. package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
  170. package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
  171. package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
  172. package/lib/modules/Order/utils.js +634 -799
  173. package/lib/modules/Payment/cash.js +33 -20
  174. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  175. package/lib/modules/Payment/eftpos.js +30 -16
  176. package/lib/modules/Payment/index.js +378 -518
  177. package/lib/modules/Payment/mx51.js +0 -1
  178. package/lib/modules/Payment/types.d.ts +4 -8
  179. package/lib/modules/Payment/types.js +107 -216
  180. package/lib/modules/Payment/utils.js +48 -51
  181. package/lib/modules/Payment/walletpass.d.ts +0 -2
  182. package/lib/modules/Payment/walletpass.js +211 -226
  183. package/lib/modules/Product/index.js +46 -51
  184. package/lib/modules/Product/types.js +16 -4
  185. package/lib/modules/Product/utils.js +33 -32
  186. package/lib/modules/ProductList/index.d.ts +1 -1
  187. package/lib/modules/ProductList/index.js +117 -117
  188. package/lib/modules/ProductList/types.d.ts +0 -1
  189. package/lib/modules/ProductList/types.js +31 -9
  190. package/lib/modules/Quotation/index.js +100 -66
  191. package/lib/modules/Quotation/types.js +16 -4
  192. package/lib/modules/Resource/index.js +59 -27
  193. package/lib/modules/Resource/types.js +32 -22
  194. package/lib/modules/Resource/utils.js +38 -30
  195. package/lib/modules/ResourcePlanner/index.js +61 -60
  196. package/lib/modules/ResourcePlanner/planner.js +384 -346
  197. package/lib/modules/ResourcePlanner/types.js +16 -4
  198. package/lib/modules/Rules/index.js +903 -1475
  199. package/lib/modules/Rules/types.js +40 -17
  200. package/lib/modules/SalesSummary/index.js +90 -85
  201. package/lib/modules/SalesSummary/types.js +16 -4
  202. package/lib/modules/SalesSummary/utils.js +427 -351
  203. package/lib/modules/ScanOrderLogger/index.js +79 -59
  204. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  205. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  206. package/lib/modules/ScanOrderLogger/types.js +16 -4
  207. package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
  208. package/lib/modules/Schedule/index.js +114 -100
  209. package/lib/modules/Schedule/type.js +16 -4
  210. package/lib/modules/Schedule/types.js +16 -4
  211. package/lib/modules/Schedule/utils.js +291 -433
  212. package/lib/modules/Step/index.js +52 -40
  213. package/lib/modules/Step/tyeps.js +16 -4
  214. package/lib/modules/Summary/index.js +71 -66
  215. package/lib/modules/Summary/types.js +16 -4
  216. package/lib/modules/Summary/utils.js +418 -791
  217. package/lib/modules/SurchargeList/index.js +60 -46
  218. package/lib/modules/SurchargeList/types.js +16 -4
  219. package/lib/modules/index.js +63 -245
  220. package/lib/plugins/app.js +16 -4
  221. package/lib/plugins/index.js +25 -36
  222. package/lib/plugins/request.js +126 -137
  223. package/lib/plugins/shopStore.js +16 -4
  224. package/lib/plugins/user.js +16 -4
  225. package/lib/plugins/window.js +179 -171
  226. package/lib/server/index.js +2337 -2675
  227. package/lib/server/modules/floor-plan/index.js +123 -102
  228. package/lib/server/modules/floor-plan/types.js +30 -15
  229. package/lib/server/modules/index.js +68 -106
  230. package/lib/server/modules/menu/index.js +122 -146
  231. package/lib/server/modules/menu/types.js +31 -18
  232. package/lib/server/modules/order/index.js +642 -567
  233. package/lib/server/modules/order/types.js +32 -117
  234. package/lib/server/modules/order/utils/filterBookings.js +194 -219
  235. package/lib/server/modules/order/utils/filterOrders.js +92 -118
  236. package/lib/server/modules/payment/index.js +83 -59
  237. package/lib/server/modules/payment/types.js +16 -4
  238. package/lib/server/modules/products/index.js +459 -575
  239. package/lib/server/modules/products/types.js +34 -44
  240. package/lib/server/modules/quotation/index.js +172 -137
  241. package/lib/server/modules/quotation/types.js +31 -21
  242. package/lib/server/modules/resource/index.js +184 -213
  243. package/lib/server/modules/resource/types.js +33 -42
  244. package/lib/server/modules/schedule/index.js +123 -135
  245. package/lib/server/modules/schedule/types.js +21 -14
  246. package/lib/server/modules/schedule/utils.js +163 -334
  247. package/lib/server/types.js +16 -4
  248. package/lib/server/utils/index.js +23 -25
  249. package/lib/server/utils/product.js +139 -196
  250. package/lib/server/utils/schedule.js +41 -34
  251. package/lib/server/utils/small-ticket.js +456 -478
  252. package/lib/server/utils/time.js +49 -40
  253. package/lib/solution/BaseSales/index.js +1016 -850
  254. package/lib/solution/BaseSales/types.js +37 -41
  255. package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
  256. package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
  257. package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
  258. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
  259. package/lib/solution/BaseSales/utils.js +140 -155
  260. package/lib/solution/BookingByStep/index.d.ts +1 -1
  261. package/lib/solution/BookingByStep/index.js +1340 -1530
  262. package/lib/solution/BookingByStep/types.js +99 -40
  263. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  264. package/lib/solution/BookingByStep/utils/products.js +52 -42
  265. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  266. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  267. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  268. package/lib/solution/BookingTicket/index.d.ts +1 -1
  269. package/lib/solution/BookingTicket/index.js +459 -543
  270. package/lib/solution/BookingTicket/types.js +77 -99
  271. package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
  272. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
  273. package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
  274. package/lib/solution/BookingTicket/utils/cartView.js +94 -110
  275. package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
  276. package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
  277. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
  278. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
  279. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
  280. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
  281. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
  282. package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
  283. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  284. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
  285. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
  286. package/lib/solution/BuyTickets/index.js +70 -67
  287. package/lib/solution/BuyTickets/types.js +38 -22
  288. package/lib/solution/Checkout/index.js +1158 -1451
  289. package/lib/solution/Checkout/types.js +61 -91
  290. package/lib/solution/Checkout/utils/index.js +156 -228
  291. package/lib/solution/PlaceOrder/index.js +0 -55
  292. package/lib/solution/RegisterAndLogin/config.js +460 -493
  293. package/lib/solution/RegisterAndLogin/index.js +630 -633
  294. package/lib/solution/RegisterAndLogin/types.js +76 -189
  295. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  296. package/lib/solution/Sales/index.js +320 -317
  297. package/lib/solution/Sales/types.js +33 -27
  298. package/lib/solution/ScanOrder/index.js +862 -831
  299. package/lib/solution/ScanOrder/types.js +34 -33
  300. package/lib/solution/ScanOrder/utils.js +371 -406
  301. package/lib/solution/ShopDiscount/index.js +233 -235
  302. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  303. package/lib/solution/ShopDiscount/types.js +37 -15
  304. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  305. package/lib/solution/ShopDiscount/utils.js +172 -309
  306. package/lib/solution/UnifiedBookingSales/index.js +405 -379
  307. package/lib/solution/UnifiedBookingSales/types.js +31 -12
  308. package/lib/solution/VenueBooking/index.d.ts +3 -31
  309. package/lib/solution/VenueBooking/index.js +916 -967
  310. package/lib/solution/VenueBooking/types.d.ts +1 -3
  311. package/lib/solution/VenueBooking/types.js +39 -20
  312. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  313. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  314. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  315. package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
  316. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  317. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  318. package/lib/solution/VenueBooking/utils.js +67 -130
  319. package/lib/solution/index.js +41 -124
  320. package/lib/store/createStore.js +29 -32
  321. package/lib/types/index.d.ts +1 -1
  322. package/lib/types/index.js +16 -4
  323. package/lib/utils/task.js +36 -36
  324. package/lib/utils/watch.js +47 -81
  325. package/package.json +2 -4
  326. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  327. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  328. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  329. package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
@@ -1,129 +1,145 @@
1
- "use strict";
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
18
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
19
+ // src/solution/BaseSales/utils/parseSalesResponse.ts
20
+ var parseSalesResponse_exports = {};
21
+ __export(parseSalesResponse_exports, {
22
+ parseSalesResponse: () => parseSalesResponse
5
23
  });
6
- exports.parseSalesResponse = parseSalesResponse;
7
- var _orderCollectionIdentity = require("../../../modules/Order/utils/orderCollectionIdentity");
8
- /**
9
- * 把 `/order/sales/{id}` 响应(OrderData)解析为 ISalesDetail。
10
- *
11
- * - 纯函数:不依赖任何运行时模块/插件,便于单测与 view-model 适配
12
- * - products 保留 tempOrder / 后端详情原字段,仅规范化集合身份并浅拷贝,避免丢失 product_sku 等协议字段
13
- * - bookings 平铺保留服务端原顺序,同时输出 byProductUid 反查表与 rootBooking
14
- * - header 收敛"非数组顶层字段",便于 ticketBooking view-model 直接消费
15
- *
16
- * 设计原则参考 `.cursor/rules/data-field-semantics.mdc`:
17
- * - 字段命名以《统一 Sales 数据协议》为准(OrderData 类型)
18
- * - root booking 以 `parent_id === 0` 判定,沿用 ticketBooking 现有约定
19
- * (`packages/private-materials/src/components/ticketBooking/index.tsx`:
20
- * `booking.parent_id === 0 ? 'list' : 'detail'`)
21
- * - 不在此处发明等价关系;UI 侧(ticketBooking)若需要别的字段,由 view-model 适配层做转换
22
- */
23
-
24
- /** OrderData 中除大数组外的"顶层 header 字段"白名单,按需扩展。 */
25
- const HEADER_KEYS = ['order_id', 'order_number', 'shop_order_number', 'shop_full_order_number', 'type', 'business_code', 'platform', 'sales_channel', 'order_sales_channel', 'vouchers', 'status', 'payment_status', 'shipping_status', 'customer_id', 'customer_name', 'country_calling_code', 'phone', 'email', 'is_price_include_tax', 'tax_title', 'tax_country_code', 'currency_code', 'currency_symbol', 'currency_format', 'is_deposit', 'deposit_amount', 'shop_discount', 'surcharge_fee', 'note', 'schedule_date', 'created_at', 'updated_at', 'metadata', 'total_amount', 'shop_id', 'create_date', 'holder', 'relation_forms', 'contacts', 'contacts_info'];
24
+ module.exports = __toCommonJS(parseSalesResponse_exports);
25
+ var import_orderCollectionIdentity = require("../../../modules/Order/utils/orderCollectionIdentity");
26
+ var HEADER_KEYS = [
27
+ "order_id",
28
+ "order_number",
29
+ "shop_order_number",
30
+ "shop_full_order_number",
31
+ "type",
32
+ "business_code",
33
+ "platform",
34
+ "sales_channel",
35
+ "order_sales_channel",
36
+ "vouchers",
37
+ "status",
38
+ "payment_status",
39
+ "shipping_status",
40
+ "customer_id",
41
+ "customer_name",
42
+ "country_calling_code",
43
+ "phone",
44
+ "email",
45
+ "is_price_include_tax",
46
+ "tax_title",
47
+ "tax_country_code",
48
+ "currency_code",
49
+ "currency_symbol",
50
+ "currency_format",
51
+ "is_deposit",
52
+ "deposit_amount",
53
+ "shop_discount",
54
+ "surcharge_fee",
55
+ "note",
56
+ "schedule_date",
57
+ "created_at",
58
+ "updated_at",
59
+ "metadata",
60
+ "total_amount",
61
+ "shop_id",
62
+ "create_date",
63
+ "holder",
64
+ "relation_forms",
65
+ "contacts",
66
+ "contacts_info"
67
+ ];
26
68
  function pickHeader(raw) {
27
- const header = {
28
- order_id: raw?.order_id ?? null
29
- };
30
- if (!raw || typeof raw !== 'object') return header;
69
+ const header = { order_id: (raw == null ? void 0 : raw.order_id) ?? null };
70
+ if (!raw || typeof raw !== "object")
71
+ return header;
31
72
  for (const key of HEADER_KEYS) {
32
- if (raw[key] !== undefined) header[key] = raw[key];
73
+ if (raw[key] !== void 0)
74
+ header[key] = raw[key];
33
75
  }
34
76
  return header;
35
77
  }
36
78
  function pickCustomer(raw) {
37
- if (!raw || typeof raw !== 'object') return null;
79
+ if (!raw || typeof raw !== "object")
80
+ return null;
38
81
  const explicit = raw.customer;
39
- if (explicit && typeof explicit === 'object') {
82
+ if (explicit && typeof explicit === "object") {
40
83
  return {
41
84
  id: explicit.id ?? raw.customer_id ?? null,
42
- name: explicit.name ?? raw.customer_name ?? '',
85
+ name: explicit.name ?? raw.customer_name ?? "",
43
86
  phone: explicit.phone ?? raw.phone,
44
87
  email: explicit.email ?? raw.email,
45
88
  country_calling_code: explicit.country_calling_code ?? raw.country_calling_code,
46
89
  ...explicit
47
90
  };
48
91
  }
49
- if (raw.customer_id == null && !raw.customer_name) return null;
92
+ if (raw.customer_id == null && !raw.customer_name)
93
+ return null;
50
94
  return {
51
95
  id: raw.customer_id ?? null,
52
- name: raw.customer_name ?? '',
96
+ name: raw.customer_name ?? "",
53
97
  phone: raw.phone,
54
98
  email: raw.email,
55
99
  country_calling_code: raw.country_calling_code
56
100
  };
57
101
  }
58
-
59
- /**
60
- * 判定根 booking。沿用 ticketBooking 现有约定:
61
- * `parent_id === 0` 视为根;其余为子(item_type === 'recurring_booking' 也按 parent_id 判定)。
62
- * 见 `packages/private-materials/src/components/ticketBooking/index.tsx`:
63
- * `type: booking.parent_id === 0 ? 'list' : 'detail'`。
64
- */
65
102
  function isRootBooking(booking) {
66
- if (!booking || typeof booking !== 'object') return false;
103
+ if (!booking || typeof booking !== "object")
104
+ return false;
67
105
  const parentId = booking.parent_id;
68
- if (parentId === 0 || parentId === null || parentId === undefined) return true;
106
+ if (parentId === 0 || parentId === null || parentId === void 0)
107
+ return true;
69
108
  return false;
70
109
  }
71
110
  function indexBookingsByProductUid(bookings) {
111
+ var _a;
72
112
  const result = {};
73
113
  for (const b of bookings) {
74
- const uid = b && (b.product_uid || b.metadata?.product_uid) || '';
75
- if (!uid) continue;
114
+ const uid = b && (b.product_uid || ((_a = b.metadata) == null ? void 0 : _a.product_uid)) || "";
115
+ if (!uid)
116
+ continue;
76
117
  const key = String(uid);
77
- if (!result[key]) result[key] = [];
118
+ if (!result[key])
119
+ result[key] = [];
78
120
  result[key].push(b);
79
121
  }
80
122
  return result;
81
123
  }
82
-
83
- /**
84
- * 将 `/order/sales/{id}` 响应解析为 ISalesDetail。
85
- *
86
- * 注意:
87
- * - 入参允许是 `{ data: OrderData }` 或直接 `OrderData`,自动识别。
88
- * - products/bookings/payments 在此补齐集合身份;其余 runtime 字段由 OrderModule hydrate 负责。
89
- * - 不做远程请求;不修改入参;返回新对象。
90
- */
91
124
  function parseSalesResponse(input) {
92
- const sourceRaw = input && typeof input === 'object' && input.data && input.order_id == null ? input.data : input || {};
93
- const raw = (0, _orderCollectionIdentity.normalizeOrderCollections)(sourceRaw).order;
94
- const productsRaw = Array.isArray(raw?.products) ? raw.products : [];
95
- const products = productsRaw.map(p => {
96
- const row = {
97
- ...(p || {})
98
- };
99
- const metadata = row.metadata && typeof row.metadata === 'object' ? {
100
- ...row.metadata
101
- } : {};
125
+ const sourceRaw = input && typeof input === "object" && input.data && input.order_id == null ? input.data : input || {};
126
+ const raw = (0, import_orderCollectionIdentity.normalizeOrderCollections)(sourceRaw).order;
127
+ const productsRaw = Array.isArray(raw == null ? void 0 : raw.products) ? raw.products : [];
128
+ const products = productsRaw.map((p) => {
129
+ const row = { ...p || {} };
130
+ const metadata = row.metadata && typeof row.metadata === "object" ? { ...row.metadata } : {};
102
131
  delete metadata.price_schema_version;
103
132
  delete row.identity_key;
104
- return {
105
- ...row,
106
- metadata
107
- };
133
+ return { ...row, metadata };
108
134
  });
109
- const bookingsRaw = Array.isArray(raw?.bookings) ? raw.bookings : [];
110
- const bookings = bookingsRaw.map(b => ({
111
- ...(b || {})
112
- }));
135
+ const bookingsRaw = Array.isArray(raw == null ? void 0 : raw.bookings) ? raw.bookings : [];
136
+ const bookings = bookingsRaw.map((b) => ({ ...b || {} }));
113
137
  const rootBooking = bookings.find(isRootBooking) || null;
114
138
  const bookingsByProductUid = indexBookingsByProductUid(bookings);
115
- const payments = Array.isArray(raw?.payments) ? raw.payments.map(p => ({
116
- ...(p || {})
117
- })) : [];
118
- const surcharges = Array.isArray(raw?.surcharges) ? raw.surcharges.map(s => ({
119
- ...(s || {})
120
- })) : [];
121
- const discount_list = Array.isArray(raw?.discount_list) ? raw.discount_list.map(d => ({
122
- ...(d || {})
123
- })) : [];
124
- const summary = raw?.summary && typeof raw.summary === 'object' ? {
125
- ...raw.summary
126
- } : {};
139
+ const payments = Array.isArray(raw == null ? void 0 : raw.payments) ? raw.payments.map((p) => ({ ...p || {} })) : [];
140
+ const surcharges = Array.isArray(raw == null ? void 0 : raw.surcharges) ? raw.surcharges.map((s) => ({ ...s || {} })) : [];
141
+ const discount_list = Array.isArray(raw == null ? void 0 : raw.discount_list) ? raw.discount_list.map((d) => ({ ...d || {} })) : [];
142
+ const summary = (raw == null ? void 0 : raw.summary) && typeof raw.summary === "object" ? { ...raw.summary } : {};
127
143
  return {
128
144
  header: pickHeader(raw),
129
145
  products,
@@ -137,4 +153,8 @@ function parseSalesResponse(input) {
137
153
  summary,
138
154
  raw
139
155
  };
140
- }
156
+ }
157
+ // Annotate the CommonJS export names for ESM import in node:
158
+ 0 && (module.exports = {
159
+ parseSalesResponse
160
+ });
@@ -1,78 +1,132 @@
1
- "use strict";
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
2
28
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
29
+ // src/solution/BaseSales/utils/quotationPrice.ts
30
+ var quotationPrice_exports = {};
31
+ __export(quotationPrice_exports, {
32
+ calculateBaseSalesProductBookingPrice: () => calculateBaseSalesProductBookingPrice
5
33
  });
6
- exports.calculateBaseSalesProductBookingPrice = calculateBaseSalesProductBookingPrice;
7
- var _dayjs = _interopRequireDefault(require("dayjs"));
8
- var _decimal = _interopRequireDefault(require("decimal.js"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
+ module.exports = __toCommonJS(quotationPrice_exports);
35
+ var import_dayjs = __toESM(require("dayjs"));
36
+ var import_decimal = __toESM(require("decimal.js"));
10
37
  function toFiniteNumber(value, fallback = 0) {
11
38
  const parsedValue = Number(value);
12
- if (!Number.isFinite(parsedValue)) return fallback;
39
+ if (!Number.isFinite(parsedValue))
40
+ return fallback;
13
41
  return parsedValue;
14
42
  }
15
43
  function toPositiveInt(value, fallback = 1) {
16
44
  const parsedValue = Math.floor(Number(value));
17
- if (!Number.isFinite(parsedValue) || parsedValue < 1) return fallback;
45
+ if (!Number.isFinite(parsedValue) || parsedValue < 1)
46
+ return fallback;
18
47
  return parsedValue;
19
48
  }
20
49
  function toPriceString(value) {
21
- return new _decimal.default(Number(value) || 0).toDecimalPlaces(2).toFixed(2);
50
+ return new import_decimal.default(Number(value) || 0).toDecimalPlaces(2).toFixed(2);
22
51
  }
23
52
  function normalizeDateTime(value) {
24
- if (typeof value !== 'string' || !value.trim()) return null;
25
- const normalized = value.includes(':') ? value : `${value} 00:00:00`;
26
- const datetime = (0, _dayjs.default)(normalized);
27
- if (!datetime.isValid()) return null;
53
+ if (typeof value !== "string" || !value.trim())
54
+ return null;
55
+ const normalized = value.includes(":") ? value : `${value} 00:00:00`;
56
+ const datetime = (0, import_dayjs.default)(normalized);
57
+ if (!datetime.isValid())
58
+ return null;
28
59
  return datetime;
29
60
  }
30
61
  function buildBookingDateTime(date, time) {
31
- if (typeof date !== 'string' || !date.trim()) return null;
32
- const timeText = typeof time === 'string' && time.trim() ? time.trim() : '00:00';
33
- const datetime = (0, _dayjs.default)(`${date.trim()} ${timeText}`);
34
- if (!datetime.isValid()) return null;
62
+ if (typeof date !== "string" || !date.trim())
63
+ return null;
64
+ const timeText = typeof time === "string" && time.trim() ? time.trim() : "00:00";
65
+ const datetime = (0, import_dayjs.default)(`${date.trim()} ${timeText}`);
66
+ if (!datetime.isValid())
67
+ return null;
35
68
  return datetime;
36
69
  }
37
70
  function getDurationUnit(type) {
38
- const normalizedType = String(type || '').toLowerCase();
39
- if (normalizedType === 'day' || normalizedType === 'days') return 'day';
40
- if (normalizedType === 'minute' || normalizedType === 'minutes') return 'minute';
71
+ const normalizedType = String(type || "").toLowerCase();
72
+ if (normalizedType === "day" || normalizedType === "days")
73
+ return "day";
74
+ if (normalizedType === "minute" || normalizedType === "minutes")
75
+ return "minute";
41
76
  return null;
42
77
  }
43
78
  function getProductId(product) {
44
79
  const productId = toFiniteNumber(product.product_id ?? product.id, NaN);
45
- if (!Number.isFinite(productId)) return null;
80
+ if (!Number.isFinite(productId))
81
+ return null;
46
82
  return productId;
47
83
  }
48
84
  function getProductVariantId(product) {
49
- const variantId = toFiniteNumber(product.product_variant_id ?? product.variant_id, 0);
50
- if (!Number.isFinite(variantId) || variantId <= 0) return undefined;
85
+ const variantId = toFiniteNumber(
86
+ product.product_variant_id ?? product.variant_id,
87
+ 0
88
+ );
89
+ if (!Number.isFinite(variantId) || variantId <= 0)
90
+ return void 0;
51
91
  return variantId;
52
92
  }
53
93
  function getFallbackPrice(params) {
54
94
  const product = params.product || {};
55
- return toPriceString(params.fallback_price ?? product.price ?? product.selling_price ?? product.original_price ?? 0);
95
+ return toPriceString(
96
+ params.fallback_price ?? product.price ?? product.selling_price ?? product.original_price ?? 0
97
+ );
56
98
  }
57
99
  function getProductQuantity(product) {
58
100
  return toPositiveInt(product.num ?? product.quantity, 1);
59
101
  }
60
102
  function getBundleProductId(bundle) {
61
- const productId = toFiniteNumber(bundle.bundle_product_id ?? bundle._bundle_product_id, NaN);
62
- if (!Number.isFinite(productId)) return null;
103
+ const productId = toFiniteNumber(
104
+ bundle.bundle_product_id ?? bundle._bundle_product_id,
105
+ NaN
106
+ );
107
+ if (!Number.isFinite(productId))
108
+ return null;
63
109
  return productId;
64
110
  }
65
111
  function getBundleVariantId(bundle) {
66
- const variantId = toFiniteNumber(bundle.bundle_variant_id ?? bundle.variant_id, 0);
67
- if (!Number.isFinite(variantId) || variantId <= 0) return undefined;
112
+ const variantId = toFiniteNumber(
113
+ bundle.bundle_variant_id ?? bundle.variant_id,
114
+ 0
115
+ );
116
+ if (!Number.isFinite(variantId) || variantId <= 0)
117
+ return void 0;
68
118
  return variantId;
69
119
  }
70
120
  function getBundleFallbackPrice(bundle) {
71
- return toPriceString(bundle.bundle_selling_price ?? bundle.price ?? bundle.original_price ?? bundle.base_price ?? 0);
121
+ return toPriceString(
122
+ bundle.bundle_selling_price ?? bundle.price ?? bundle.original_price ?? bundle.base_price ?? 0
123
+ );
72
124
  }
73
125
  function shouldSplitByDuration(duration, start, end) {
74
- if (!duration) return false;
75
- if (!start || !end || !end.isAfter(start)) return false;
126
+ if (!duration)
127
+ return false;
128
+ if (!start || !end || !end.isAfter(start))
129
+ return false;
76
130
  const unit = getDurationUnit(duration.type);
77
131
  const value = toFiniteNumber(duration.value);
78
132
  return !!unit && value > 0;
@@ -81,33 +135,29 @@ function buildTimeSegments(params) {
81
135
  const booking = params.booking || {};
82
136
  const explicitDatetime = normalizeDateTime(params.datetime);
83
137
  const bookingStart = buildBookingDateTime(booking.start_date, booking.start_time);
84
- const start = bookingStart || explicitDatetime || (0, _dayjs.default)();
138
+ const start = bookingStart || explicitDatetime || (0, import_dayjs.default)();
85
139
  const bookingEnd = buildBookingDateTime(booking.end_date, booking.end_time);
86
140
  if (!shouldSplitByDuration(params.duration, start, bookingEnd)) {
87
- return [{
88
- start
89
- }];
141
+ return [{ start }];
90
142
  }
91
143
  const unit = getDurationUnit(params.duration.type);
92
144
  const value = toFiniteNumber(params.duration.value);
93
145
  const segments = [];
94
146
  let cursor = start;
95
147
  let guard = 0;
96
- while (cursor.isBefore(bookingEnd) && guard < 10000) {
148
+ while (cursor.isBefore(bookingEnd) && guard < 1e4) {
97
149
  const next = cursor.add(value, unit);
98
150
  segments.push({
99
151
  start: cursor,
100
- end: next.isBefore(bookingEnd) ? next : bookingEnd ?? undefined
152
+ end: next.isBefore(bookingEnd) ? next : bookingEnd ?? void 0
101
153
  });
102
154
  cursor = next;
103
155
  guard += 1;
104
156
  }
105
- return segments.length ? segments : [{
106
- start
107
- }];
157
+ return segments.length ? segments : [{ start }];
108
158
  }
109
159
  function formatTimePoint(datetime) {
110
- return datetime.format('YYYY-MM-DD HH:mm:ss');
160
+ return datetime.format("YYYY-MM-DD HH:mm:ss");
111
161
  }
112
162
  function buildPriceSegment(params) {
113
163
  const timePoint = formatTimePoint(params.segment.start);
@@ -126,7 +176,7 @@ function buildPriceSegment(params) {
126
176
  customer_id: params.customerId
127
177
  }) : null;
128
178
  const unitPrice = toPriceString(quotedPrice ?? params.fallbackPrice);
129
- const quotationShelfId = quotedPrice !== null ? match?.quotationShelfId ?? (params.quotation && params.productId !== null ? params.quotation.getQuotationShelfId({
179
+ const quotationShelfId = quotedPrice !== null ? (match == null ? void 0 : match.quotationShelfId) ?? (params.quotation && params.productId !== null ? params.quotation.getQuotationShelfId({
130
180
  productId: params.productId,
131
181
  variantId: params.variantId,
132
182
  datetime: timePoint,
@@ -135,17 +185,18 @@ function buildPriceSegment(params) {
135
185
  }) : 0) : 0;
136
186
  return {
137
187
  start_datetime: timePoint,
138
- end_datetime: params.segment.end ? formatTimePoint(params.segment.end) : undefined,
188
+ end_datetime: params.segment.end ? formatTimePoint(params.segment.end) : void 0,
139
189
  time_point: timePoint,
140
190
  unit_price: unitPrice,
141
191
  quantity: 1,
142
192
  total_price: unitPrice,
143
193
  quotation_shelf_id: quotationShelfId,
144
- source: quotedPrice !== null ? 'quotation' : 'fallback'
194
+ source: quotedPrice !== null ? "quotation" : "fallback"
145
195
  };
146
196
  }
147
197
  function calculatePriceForProduct(params) {
148
- const segments = params.segments.map(segment => buildPriceSegment({
198
+ var _a;
199
+ const segments = params.segments.map((segment) => buildPriceSegment({
149
200
  quotation: params.quotation,
150
201
  productId: params.productId,
151
202
  variantId: params.variantId,
@@ -154,9 +205,12 @@ function calculatePriceForProduct(params) {
154
205
  fallbackPrice: params.fallbackPrice,
155
206
  segment
156
207
  }));
157
- const unitPrice = segments.reduce((total, segment) => total.plus(segment.total_price), new _decimal.default(0));
208
+ const unitPrice = segments.reduce(
209
+ (total, segment) => total.plus(segment.total_price),
210
+ new import_decimal.default(0)
211
+ );
158
212
  const totalPrice = unitPrice.times(params.quantity);
159
- const quotationShelfId = segments.find(segment => segment.quotation_shelf_id)?.quotation_shelf_id || 0;
213
+ const quotationShelfId = ((_a = segments.find((segment) => segment.quotation_shelf_id)) == null ? void 0 : _a.quotation_shelf_id) || 0;
160
214
  return {
161
215
  unitPrice,
162
216
  totalPrice,
@@ -165,9 +219,11 @@ function calculatePriceForProduct(params) {
165
219
  };
166
220
  }
167
221
  function calculateBundlePrices(params, segments) {
168
- const bundleList = params.product?.product_bundle || [];
169
- if (!bundleList.length) return undefined;
170
- return bundleList.map(bundle => {
222
+ var _a;
223
+ const bundleList = ((_a = params.product) == null ? void 0 : _a.product_bundle) || [];
224
+ if (!bundleList.length)
225
+ return void 0;
226
+ return bundleList.map((bundle) => {
171
227
  const productId = getBundleProductId(bundle);
172
228
  const variantId = getBundleVariantId(bundle);
173
229
  const quantity = getProductQuantity(bundle);
@@ -191,7 +247,7 @@ function calculateBundlePrices(params, segments) {
191
247
  total_price: price.totalPrice.toDecimalPlaces(2).toFixed(2),
192
248
  quantity,
193
249
  quotation_shelf_id: price.quotationShelfId,
194
- source: price.segments.some(segment => segment.source === 'quotation') ? 'quotation' : 'fallback',
250
+ source: price.segments.some((segment) => segment.source === "quotation") ? "quotation" : "fallback",
195
251
  segments: price.segments
196
252
  };
197
253
  });
@@ -224,8 +280,10 @@ function calculateBaseSalesProductBookingPrice(params) {
224
280
  duration: params.duration,
225
281
  quotation_shelf_id: price.quotationShelfId,
226
282
  segments: price.segments,
227
- ...(bundlePrices ? {
228
- product_bundle: bundlePrices
229
- } : {})
283
+ ...bundlePrices ? { product_bundle: bundlePrices } : {}
230
284
  };
231
- }
285
+ }
286
+ // Annotate the CommonJS export names for ESM import in node:
287
+ 0 && (module.exports = {
288
+ calculateBaseSalesProductBookingPrice
289
+ });