@pisell/pisellos 0.0.569 → 0.10.2

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 (328) hide show
  1. package/dist/core/index.js +10 -6
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -3
  4. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  5. package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
  6. package/dist/model/strategy/adapter/walletPass/example.js +26 -3
  7. package/dist/model/strategy/adapter/walletPass/index.js +5 -5
  8. package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
  9. package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
  10. package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
  11. package/dist/model/strategy/strategy-example.js +19 -5
  12. package/dist/modules/BaseModule.d.ts +1 -1
  13. package/dist/modules/BaseModule.js +8 -10
  14. package/dist/modules/Cart/index.js +3 -0
  15. package/dist/modules/Cart/utils/cartProduct.js +1 -0
  16. package/dist/modules/Cart/utils/cartResource.js +0 -2
  17. package/dist/modules/Cart/utils/changePrice.js +9 -16
  18. package/dist/modules/Date/index.js +5 -1
  19. package/dist/modules/Discount/index.d.ts +0 -1
  20. package/dist/modules/Discount/index.js +7 -22
  21. package/dist/modules/Discount/types.d.ts +0 -1
  22. package/dist/modules/OpenData/index.js +2 -0
  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 +49 -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.js +1909 -1572
  167. package/lib/modules/Order/types.js +35 -78
  168. package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
  169. package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
  170. package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
  171. package/lib/modules/Order/utils.js +634 -799
  172. package/lib/modules/Payment/cash.js +33 -20
  173. package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
  174. package/lib/modules/Payment/eftpos.js +30 -16
  175. package/lib/modules/Payment/index.js +378 -518
  176. package/lib/modules/Payment/mx51.js +0 -1
  177. package/lib/modules/Payment/types.d.ts +4 -8
  178. package/lib/modules/Payment/types.js +107 -216
  179. package/lib/modules/Payment/utils.js +48 -51
  180. package/lib/modules/Payment/walletpass.d.ts +0 -2
  181. package/lib/modules/Payment/walletpass.js +211 -226
  182. package/lib/modules/Product/index.js +46 -51
  183. package/lib/modules/Product/types.js +16 -4
  184. package/lib/modules/Product/utils.js +33 -32
  185. package/lib/modules/ProductList/index.d.ts +1 -1
  186. package/lib/modules/ProductList/index.js +117 -117
  187. package/lib/modules/ProductList/types.d.ts +0 -1
  188. package/lib/modules/ProductList/types.js +31 -9
  189. package/lib/modules/Quotation/index.js +100 -66
  190. package/lib/modules/Quotation/types.js +16 -4
  191. package/lib/modules/Resource/index.js +59 -27
  192. package/lib/modules/Resource/types.js +32 -22
  193. package/lib/modules/Resource/utils.js +38 -30
  194. package/lib/modules/ResourcePlanner/index.js +61 -60
  195. package/lib/modules/ResourcePlanner/planner.js +384 -346
  196. package/lib/modules/ResourcePlanner/types.js +16 -4
  197. package/lib/modules/Rules/index.js +903 -1475
  198. package/lib/modules/Rules/types.js +40 -17
  199. package/lib/modules/SalesSummary/index.js +90 -85
  200. package/lib/modules/SalesSummary/types.js +16 -4
  201. package/lib/modules/SalesSummary/utils.js +427 -351
  202. package/lib/modules/ScanOrderLogger/index.js +79 -59
  203. package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
  204. package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
  205. package/lib/modules/ScanOrderLogger/types.js +16 -4
  206. package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
  207. package/lib/modules/Schedule/index.js +114 -100
  208. package/lib/modules/Schedule/type.js +16 -4
  209. package/lib/modules/Schedule/types.js +16 -4
  210. package/lib/modules/Schedule/utils.js +291 -433
  211. package/lib/modules/Step/index.js +52 -40
  212. package/lib/modules/Step/tyeps.js +16 -4
  213. package/lib/modules/Summary/index.js +71 -66
  214. package/lib/modules/Summary/types.js +16 -4
  215. package/lib/modules/Summary/utils.js +418 -791
  216. package/lib/modules/SurchargeList/index.js +60 -46
  217. package/lib/modules/SurchargeList/types.js +16 -4
  218. package/lib/modules/index.js +63 -245
  219. package/lib/plugins/app.js +16 -4
  220. package/lib/plugins/index.js +25 -36
  221. package/lib/plugins/request.js +126 -137
  222. package/lib/plugins/shopStore.js +16 -4
  223. package/lib/plugins/user.js +16 -4
  224. package/lib/plugins/window.js +179 -171
  225. package/lib/server/index.js +2337 -2675
  226. package/lib/server/modules/floor-plan/index.js +123 -102
  227. package/lib/server/modules/floor-plan/types.js +30 -15
  228. package/lib/server/modules/index.js +68 -106
  229. package/lib/server/modules/menu/index.js +122 -146
  230. package/lib/server/modules/menu/types.js +31 -18
  231. package/lib/server/modules/order/index.js +642 -567
  232. package/lib/server/modules/order/types.js +32 -117
  233. package/lib/server/modules/order/utils/filterBookings.js +194 -219
  234. package/lib/server/modules/order/utils/filterOrders.js +92 -118
  235. package/lib/server/modules/payment/index.js +83 -59
  236. package/lib/server/modules/payment/types.js +16 -4
  237. package/lib/server/modules/products/index.js +459 -575
  238. package/lib/server/modules/products/types.js +34 -44
  239. package/lib/server/modules/quotation/index.js +172 -137
  240. package/lib/server/modules/quotation/types.js +31 -21
  241. package/lib/server/modules/resource/index.js +184 -213
  242. package/lib/server/modules/resource/types.js +33 -42
  243. package/lib/server/modules/schedule/index.js +123 -135
  244. package/lib/server/modules/schedule/types.js +21 -14
  245. package/lib/server/modules/schedule/utils.js +163 -334
  246. package/lib/server/types.js +16 -4
  247. package/lib/server/utils/index.js +23 -25
  248. package/lib/server/utils/product.js +139 -196
  249. package/lib/server/utils/schedule.js +41 -34
  250. package/lib/server/utils/small-ticket.js +456 -478
  251. package/lib/server/utils/time.js +49 -40
  252. package/lib/solution/BaseSales/index.js +1016 -850
  253. package/lib/solution/BaseSales/types.js +37 -41
  254. package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
  255. package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
  256. package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
  257. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
  258. package/lib/solution/BaseSales/utils.js +140 -155
  259. package/lib/solution/BookingByStep/index.d.ts +1 -1
  260. package/lib/solution/BookingByStep/index.js +1340 -1530
  261. package/lib/solution/BookingByStep/types.js +99 -40
  262. package/lib/solution/BookingByStep/utils/capacity.js +160 -192
  263. package/lib/solution/BookingByStep/utils/products.js +52 -42
  264. package/lib/solution/BookingByStep/utils/resources.js +330 -527
  265. package/lib/solution/BookingByStep/utils/stock.js +44 -65
  266. package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
  267. package/lib/solution/BookingTicket/index.d.ts +1 -1
  268. package/lib/solution/BookingTicket/index.js +459 -543
  269. package/lib/solution/BookingTicket/types.js +77 -99
  270. package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
  271. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
  272. package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
  273. package/lib/solution/BookingTicket/utils/cartView.js +94 -110
  274. package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
  275. package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
  276. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
  277. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
  278. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
  279. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
  280. package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
  281. package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
  282. package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
  283. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
  284. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
  285. package/lib/solution/BuyTickets/index.js +70 -67
  286. package/lib/solution/BuyTickets/types.js +38 -22
  287. package/lib/solution/Checkout/index.js +1158 -1451
  288. package/lib/solution/Checkout/types.js +61 -91
  289. package/lib/solution/Checkout/utils/index.js +156 -228
  290. package/lib/solution/PlaceOrder/index.js +0 -55
  291. package/lib/solution/RegisterAndLogin/config.js +460 -493
  292. package/lib/solution/RegisterAndLogin/index.js +630 -633
  293. package/lib/solution/RegisterAndLogin/types.js +76 -189
  294. package/lib/solution/RegisterAndLogin/utils.js +125 -183
  295. package/lib/solution/Sales/index.js +320 -317
  296. package/lib/solution/Sales/types.js +33 -27
  297. package/lib/solution/ScanOrder/index.js +862 -831
  298. package/lib/solution/ScanOrder/types.js +34 -33
  299. package/lib/solution/ScanOrder/utils.js +371 -406
  300. package/lib/solution/ShopDiscount/index.js +233 -235
  301. package/lib/solution/ShopDiscount/types.d.ts +4 -5
  302. package/lib/solution/ShopDiscount/types.js +37 -15
  303. package/lib/solution/ShopDiscount/utils.d.ts +0 -9
  304. package/lib/solution/ShopDiscount/utils.js +172 -309
  305. package/lib/solution/UnifiedBookingSales/index.js +405 -379
  306. package/lib/solution/UnifiedBookingSales/types.js +31 -12
  307. package/lib/solution/VenueBooking/index.d.ts +3 -31
  308. package/lib/solution/VenueBooking/index.js +916 -967
  309. package/lib/solution/VenueBooking/types.d.ts +1 -3
  310. package/lib/solution/VenueBooking/types.js +39 -20
  311. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  312. package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
  313. package/lib/solution/VenueBooking/utils/resource.js +54 -31
  314. package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
  315. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
  316. package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
  317. package/lib/solution/VenueBooking/utils.js +67 -130
  318. package/lib/solution/index.js +41 -124
  319. package/lib/store/createStore.js +29 -32
  320. package/lib/types/index.d.ts +1 -1
  321. package/lib/types/index.js +16 -4
  322. package/lib/utils/task.js +36 -36
  323. package/lib/utils/watch.js +47 -81
  324. package/package.json +2 -4
  325. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  326. package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
  327. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
  328. 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
+ });