@pisell/pisellos 2.3.73 → 2.3.75

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 (296) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +111 -71
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +2 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +36 -64
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Quotation/index.d.ts +6 -0
  15. package/dist/modules/Quotation/index.js +75 -19
  16. package/dist/modules/Rules/index.js +1 -4
  17. package/dist/modules/Schedule/index.js +0 -1
  18. package/dist/modules/Schedule/utils.js +0 -1
  19. package/dist/modules/Step/index.js +0 -1
  20. package/dist/plugins/request.d.ts +1 -0
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.d.ts +8 -2
  24. package/dist/server/index.js +303 -269
  25. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  26. package/dist/server/modules/floor-plan/index.js +240 -98
  27. package/dist/server/modules/menu/index.js +75 -59
  28. package/dist/server/modules/order/index.d.ts +17 -7
  29. package/dist/server/modules/order/index.js +421 -211
  30. package/dist/server/modules/products/index.d.ts +8 -2
  31. package/dist/server/modules/products/index.js +191 -117
  32. package/dist/server/modules/quotation/index.js +29 -38
  33. package/dist/server/modules/resource/index.js +24 -17
  34. package/dist/server/modules/schedule/index.js +27 -35
  35. package/dist/server/utils/product.js +0 -1
  36. package/dist/solution/BaseSales/index.js +38 -41
  37. package/dist/solution/BookingByStep/index.d.ts +1 -1
  38. package/dist/solution/BookingByStep/index.js +7 -59
  39. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  40. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  41. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  42. package/dist/solution/BookingTicket/index.js +0 -2
  43. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  44. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  45. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  46. package/dist/solution/BuyTickets/index.js +9 -12
  47. package/dist/solution/Checkout/index.js +177 -252
  48. package/dist/solution/Checkout/utils/index.js +4 -16
  49. package/dist/solution/RegisterAndLogin/index.js +30 -76
  50. package/dist/solution/ScanOrder/index.js +50 -60
  51. package/dist/solution/ShopDiscount/index.js +2 -7
  52. package/dist/solution/VenueBooking/index.js +45 -55
  53. package/dist/utils/task.js +15 -18
  54. package/dist/utils/watch.js +0 -1
  55. package/lib/apis/picoding.js +2 -0
  56. package/lib/core/index.d.ts +7 -0
  57. package/lib/core/index.js +149 -131
  58. package/lib/effects/index.js +46 -57
  59. package/lib/index.js +82 -49
  60. package/lib/model/index.js +14 -21
  61. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  62. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  63. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  64. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  65. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  66. package/lib/model/strategy/adapter/index.js +100 -64
  67. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  68. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  69. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  70. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  71. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  72. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  73. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  74. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  75. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  76. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  77. package/lib/model/strategy/adapter/type.js +4 -16
  78. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  79. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  80. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  81. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  82. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  83. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  84. package/lib/model/strategy/engine.js +270 -168
  85. package/lib/model/strategy/index.js +49 -34
  86. package/lib/model/strategy/strategy-example.js +243 -239
  87. package/lib/model/strategy/type.js +100 -40
  88. package/lib/modules/Account/index.js +39 -53
  89. package/lib/modules/Account/types.js +20 -33
  90. package/lib/modules/AccountList/index.js +116 -154
  91. package/lib/modules/AccountList/types.js +30 -31
  92. package/lib/modules/AccountList/utils.js +18 -30
  93. package/lib/modules/BaseModule.js +23 -42
  94. package/lib/modules/BookingContext/index.js +158 -136
  95. package/lib/modules/BookingContext/types.js +46 -32
  96. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  97. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  98. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  99. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  100. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  101. package/lib/modules/BookingContext/utils/index.js +124 -41
  102. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  103. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  104. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  105. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  106. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  107. package/lib/modules/BookingContext/utils/resources.js +209 -167
  108. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  109. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  110. package/lib/modules/Cart/index.js +170 -124
  111. package/lib/modules/Cart/types.js +46 -51
  112. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  113. package/lib/modules/Cart/utils/cartDate.js +56 -61
  114. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  115. package/lib/modules/Cart/utils/cartNote.js +27 -32
  116. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  117. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  118. package/lib/modules/Cart/utils/cartResource.js +70 -78
  119. package/lib/modules/Cart/utils/changePrice.js +22 -50
  120. package/lib/modules/Cart/utils/index.js +106 -48
  121. package/lib/modules/Customer/constants.js +13 -34
  122. package/lib/modules/Customer/index.js +235 -172
  123. package/lib/modules/Customer/types.js +38 -35
  124. package/lib/modules/Date/index.js +116 -115
  125. package/lib/modules/Date/types.js +16 -28
  126. package/lib/modules/Date/utils.js +174 -123
  127. package/lib/modules/Discount/index.js +122 -127
  128. package/lib/modules/Discount/types.js +9 -31
  129. package/lib/modules/Guests/index.js +30 -56
  130. package/lib/modules/Guests/types.js +23 -33
  131. package/lib/modules/Holder/index.js +209 -189
  132. package/lib/modules/Holder/types.js +4 -16
  133. package/lib/modules/Holder/utils.js +20 -49
  134. package/lib/modules/OpenData/index.js +70 -76
  135. package/lib/modules/OpenData/types.js +4 -16
  136. package/lib/modules/OpenData/utils.js +44 -78
  137. package/lib/modules/Order/index.d.ts +1 -1
  138. package/lib/modules/Order/index.js +1713 -2118
  139. package/lib/modules/Order/payment-utils.js +77 -120
  140. package/lib/modules/Order/types.js +88 -35
  141. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  142. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  143. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  144. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  145. package/lib/modules/Order/utils.js +814 -647
  146. package/lib/modules/Payment/cash.js +20 -33
  147. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  148. package/lib/modules/Payment/eftpos.js +16 -30
  149. package/lib/modules/Payment/index.js +532 -399
  150. package/lib/modules/Payment/mx51.js +1 -0
  151. package/lib/modules/Payment/types.js +230 -108
  152. package/lib/modules/Payment/utils.js +52 -51
  153. package/lib/modules/Payment/walletpass.js +485 -660
  154. package/lib/modules/Product/index.js +51 -46
  155. package/lib/modules/Product/types.js +4 -16
  156. package/lib/modules/Product/utils.js +32 -33
  157. package/lib/modules/ProductList/index.js +113 -123
  158. package/lib/modules/ProductList/types.js +9 -31
  159. package/lib/modules/Quotation/index.d.ts +6 -0
  160. package/lib/modules/Quotation/index.js +110 -103
  161. package/lib/modules/Quotation/types.js +4 -16
  162. package/lib/modules/Resource/index.js +27 -59
  163. package/lib/modules/Resource/types.js +22 -32
  164. package/lib/modules/Resource/utils.js +30 -38
  165. package/lib/modules/ResourcePlanner/index.js +25 -23
  166. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  167. package/lib/modules/ResourcePlanner/planner.js +589 -770
  168. package/lib/modules/ResourcePlanner/types.js +10 -29
  169. package/lib/modules/Rules/index.js +1218 -959
  170. package/lib/modules/Rules/types.js +17 -40
  171. package/lib/modules/SalesSummary/index.js +85 -90
  172. package/lib/modules/SalesSummary/types.js +4 -16
  173. package/lib/modules/SalesSummary/utils.js +355 -430
  174. package/lib/modules/ScanOrderLogger/index.js +59 -79
  175. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  176. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  177. package/lib/modules/ScanOrderLogger/types.js +4 -16
  178. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  179. package/lib/modules/Schedule/index.js +100 -114
  180. package/lib/modules/Schedule/type.js +4 -16
  181. package/lib/modules/Schedule/types.js +4 -16
  182. package/lib/modules/Schedule/utils.js +433 -291
  183. package/lib/modules/Step/index.js +40 -52
  184. package/lib/modules/Step/tyeps.js +4 -16
  185. package/lib/modules/Summary/index.js +66 -71
  186. package/lib/modules/Summary/types.js +4 -16
  187. package/lib/modules/Summary/utils.js +773 -418
  188. package/lib/modules/SurchargeList/index.js +46 -60
  189. package/lib/modules/SurchargeList/types.js +4 -16
  190. package/lib/modules/index.js +245 -63
  191. package/lib/plugins/app.js +4 -16
  192. package/lib/plugins/index.js +36 -25
  193. package/lib/plugins/request.d.ts +1 -0
  194. package/lib/plugins/request.js +137 -126
  195. package/lib/plugins/shopStore.js +4 -16
  196. package/lib/plugins/user.js +4 -16
  197. package/lib/plugins/window.js +171 -179
  198. package/lib/server/index.d.ts +8 -2
  199. package/lib/server/index.js +3083 -2663
  200. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  201. package/lib/server/modules/floor-plan/index.js +159 -127
  202. package/lib/server/modules/floor-plan/types.js +15 -30
  203. package/lib/server/modules/index.js +106 -68
  204. package/lib/server/modules/menu/index.js +170 -124
  205. package/lib/server/modules/menu/types.js +18 -31
  206. package/lib/server/modules/order/index.d.ts +17 -7
  207. package/lib/server/modules/order/index.js +916 -977
  208. package/lib/server/modules/order/types.js +122 -33
  209. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  210. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  211. package/lib/server/modules/payment/index.js +59 -83
  212. package/lib/server/modules/payment/types.js +4 -16
  213. package/lib/server/modules/products/index.d.ts +8 -2
  214. package/lib/server/modules/products/index.js +656 -471
  215. package/lib/server/modules/products/types.js +44 -34
  216. package/lib/server/modules/quotation/index.js +137 -172
  217. package/lib/server/modules/quotation/types.js +21 -31
  218. package/lib/server/modules/resource/index.js +225 -186
  219. package/lib/server/modules/resource/types.js +42 -33
  220. package/lib/server/modules/schedule/index.js +135 -123
  221. package/lib/server/modules/schedule/types.js +14 -21
  222. package/lib/server/modules/schedule/utils.js +334 -163
  223. package/lib/server/types.js +4 -16
  224. package/lib/server/utils/index.js +25 -23
  225. package/lib/server/utils/product.js +196 -139
  226. package/lib/server/utils/schedule.js +34 -41
  227. package/lib/server/utils/small-ticket.js +479 -456
  228. package/lib/server/utils/time.js +40 -49
  229. package/lib/solution/BaseSales/index.js +1186 -1410
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  233. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  235. package/lib/solution/BaseSales/utils.js +158 -143
  236. package/lib/solution/BookingByStep/index.d.ts +1 -1
  237. package/lib/solution/BookingByStep/index.js +1527 -1340
  238. package/lib/solution/BookingByStep/types.js +40 -99
  239. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  240. package/lib/solution/BookingByStep/utils/products.js +42 -52
  241. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  242. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  243. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  244. package/lib/solution/BookingTicket/index.js +607 -522
  245. package/lib/solution/BookingTicket/types.js +99 -77
  246. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  247. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  248. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  249. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  250. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  251. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  252. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  253. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  254. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  255. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  256. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  257. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  258. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  259. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  260. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  261. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  262. package/lib/solution/BuyTickets/index.js +67 -70
  263. package/lib/solution/BuyTickets/types.js +22 -38
  264. package/lib/solution/Checkout/index.js +1451 -1158
  265. package/lib/solution/Checkout/types.js +91 -61
  266. package/lib/solution/Checkout/utils/index.js +228 -156
  267. package/lib/solution/PlaceOrder/index.js +55 -0
  268. package/lib/solution/RegisterAndLogin/config.js +493 -460
  269. package/lib/solution/RegisterAndLogin/index.js +633 -630
  270. package/lib/solution/RegisterAndLogin/types.js +189 -76
  271. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  272. package/lib/solution/Sales/index.js +328 -324
  273. package/lib/solution/Sales/types.js +27 -33
  274. package/lib/solution/ScanOrder/index.js +832 -864
  275. package/lib/solution/ScanOrder/types.js +33 -34
  276. package/lib/solution/ScanOrder/utils.js +409 -374
  277. package/lib/solution/ShopDiscount/index.js +226 -232
  278. package/lib/solution/ShopDiscount/types.js +15 -37
  279. package/lib/solution/ShopDiscount/utils.js +300 -172
  280. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  281. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  282. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  283. package/lib/solution/VenueBooking/index.js +811 -879
  284. package/lib/solution/VenueBooking/types.js +19 -39
  285. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  286. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  287. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  288. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  289. package/lib/solution/VenueBooking/utils.js +130 -67
  290. package/lib/solution/index.js +124 -41
  291. package/lib/store/createStore.js +32 -29
  292. package/lib/types/index.js +4 -16
  293. package/lib/utils/payment-number.js +26 -46
  294. package/lib/utils/task.js +36 -36
  295. package/lib/utils/watch.js +81 -47
  296. package/package.json +2 -1
@@ -1,44 +1,24 @@
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);
1
+ "use strict";
18
2
 
19
- // src/solution/VenueBooking/types.ts
20
- var types_exports = {};
21
- __export(types_exports, {
22
- DEFAULT_SLOT_CONFIG: () => DEFAULT_SLOT_CONFIG,
23
- VenueBookingHooks: () => VenueBookingHooks
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(types_exports);
26
- var VenueBookingHooks = /* @__PURE__ */ ((VenueBookingHooks2) => {
27
- VenueBookingHooks2["onInited"] = "venueBooking:onInited";
28
- VenueBookingHooks2["onDestroy"] = "venueBooking:onDestroy";
29
- VenueBookingHooks2["onRetryInit"] = "venueBooking:onRetryInit";
30
- VenueBookingHooks2["onRefresh"] = "venueBooking:onRefresh";
31
- VenueBookingHooks2["onCartValidationChanged"] = "venueBooking:onCartValidationChanged";
32
- return VenueBookingHooks2;
33
- })(VenueBookingHooks || {});
34
- var DEFAULT_SLOT_CONFIG = {
6
+ exports.VenueBookingHooks = exports.DEFAULT_SLOT_CONFIG = void 0;
7
+ let VenueBookingHooks = exports.VenueBookingHooks = /*#__PURE__*/function (VenueBookingHooks) {
8
+ VenueBookingHooks["onInited"] = "venueBooking:onInited";
9
+ VenueBookingHooks["onDestroy"] = "venueBooking:onDestroy";
10
+ VenueBookingHooks["onRetryInit"] = "venueBooking:onRetryInit";
11
+ VenueBookingHooks["onRefresh"] = "venueBooking:onRefresh";
12
+ VenueBookingHooks["onCartValidationChanged"] = "venueBooking:onCartValidationChanged";
13
+ return VenueBookingHooks;
14
+ }({}); // ─── 场地预定核心类型 ───
15
+ const DEFAULT_SLOT_CONFIG = exports.DEFAULT_SLOT_CONFIG = {
35
16
  slotDurationMinutes: 30,
36
- businessStartTime: "09:00",
37
- businessEndTime: "23:00",
17
+ businessStartTime: '09:00',
18
+ businessEndTime: '23:00',
38
19
  fewLeftThreshold: 0.8
39
20
  };
40
- // Annotate the CommonJS export names for ESM import in node:
41
- 0 && (module.exports = {
42
- DEFAULT_SLOT_CONFIG,
43
- VenueBookingHooks
44
- });
21
+
22
+ // ─── 时段选择 & 合并 ───
23
+
24
+ // ─── Store 状态 ───
@@ -1,39 +1,12 @@
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);
1
+ "use strict";
28
2
 
29
- // src/solution/VenueBooking/utils/dateSummary.ts
30
- var dateSummary_exports = {};
31
- __export(dateSummary_exports, {
32
- buildDateRangeSummary: () => buildDateRangeSummary
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
33
5
  });
34
- module.exports = __toCommonJS(dateSummary_exports);
35
- var import_dayjs = __toESM(require("dayjs"));
36
- var import_timeSlot = require("./timeSlot");
6
+ exports.buildDateRangeSummary = buildDateRangeSummary;
7
+ var _dayjs = _interopRequireDefault(require("dayjs"));
8
+ var _timeSlot = require("./timeSlot");
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
10
  function buildDateRangeSummary(params) {
38
11
  const {
39
12
  startDate,
@@ -45,19 +18,22 @@ function buildDateRangeSummary(params) {
45
18
  resolveConfig
46
19
  } = params;
47
20
  const result = [];
48
- const productIds = quotationModule ? [...new Set([...resourceProductMap.values()].flat().map((m) => m.productId))] : [];
49
- let cursor = (0, import_dayjs.default)(startDate);
50
- const end = (0, import_dayjs.default)(endDate);
21
+ const productIds = quotationModule ? [...new Set([...resourceProductMap.values()].flat().map(m => m.productId))] : [];
22
+ let cursor = (0, _dayjs.default)(startDate);
23
+ const end = (0, _dayjs.default)(endDate);
51
24
  while (!cursor.isAfter(end)) {
52
- const date = cursor.format("YYYY-MM-DD");
53
- const effectiveConfig = (resolveConfig == null ? void 0 : resolveConfig(date)) || config;
25
+ const date = cursor.format('YYYY-MM-DD');
26
+ const effectiveConfig = resolveConfig?.(date) || config;
54
27
  let quotationPriceMap;
55
28
  if (quotationModule && productIds.length) {
56
- const timeLabels = (0, import_timeSlot.generateTimeLabels)(effectiveConfig);
57
- const timePoints = timeLabels.map((label) => `${date} ${label}`);
58
- quotationPriceMap = quotationModule.buildProductPriceMap({ productIds, timePoints });
29
+ const timeLabels = (0, _timeSlot.generateTimeLabels)(effectiveConfig);
30
+ const timePoints = timeLabels.map(label => `${date} ${label}`);
31
+ quotationPriceMap = quotationModule.buildProductPriceMap({
32
+ productIds,
33
+ timePoints
34
+ });
59
35
  }
60
- const grid = (0, import_timeSlot.buildTimeSlotGrid)({
36
+ const grid = (0, _timeSlot.buildTimeSlotGrid)({
61
37
  date,
62
38
  config: effectiveConfig,
63
39
  rawResources,
@@ -69,10 +45,9 @@ function buildDateRangeSummary(params) {
69
45
  let lowestPrice = null;
70
46
  for (const resource of grid.resources) {
71
47
  for (const slot of resource.slots) {
72
- if (slot.status === "past" || slot.status === "unavailable")
73
- continue;
48
+ if (slot.status === 'past' || slot.status === 'unavailable') continue;
74
49
  totalSlots++;
75
- if (slot.status === "available" || slot.status === "partially_occupied") {
50
+ if (slot.status === 'available' || slot.status === 'partially_occupied') {
76
51
  availableSlots++;
77
52
  if (slot.price !== null) {
78
53
  const priceNum = Number(slot.price);
@@ -85,13 +60,13 @@ function buildDateRangeSummary(params) {
85
60
  }
86
61
  let status;
87
62
  if (totalSlots === 0) {
88
- status = "unavailable";
63
+ status = 'unavailable';
89
64
  } else if (availableSlots === 0) {
90
- status = "sold_out";
65
+ status = 'sold_out';
91
66
  } else if ((totalSlots - availableSlots) / totalSlots >= effectiveConfig.fewLeftThreshold) {
92
- status = "few_left";
67
+ status = 'few_left';
93
68
  } else {
94
- status = "available";
69
+ status = 'available';
95
70
  }
96
71
  result.push({
97
72
  date,
@@ -100,11 +75,7 @@ function buildDateRangeSummary(params) {
100
75
  totalSlots,
101
76
  availableSlots
102
77
  });
103
- cursor = cursor.add(1, "day");
78
+ cursor = cursor.add(1, 'day');
104
79
  }
105
80
  return result;
106
- }
107
- // Annotate the CommonJS export names for ESM import in node:
108
- 0 && (module.exports = {
109
- buildDateRangeSummary
110
- });
81
+ }
@@ -1,69 +1,51 @@
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);
1
+ "use strict";
18
2
 
19
- // src/solution/VenueBooking/utils/resource.ts
20
- var resource_exports = {};
21
- __export(resource_exports, {
22
- buildResourceProductMap: () => buildResourceProductMap,
23
- extractResourceIds: () => extractResourceIds
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
24
5
  });
25
- module.exports = __toCommonJS(resource_exports);
6
+ exports.buildResourceProductMap = buildResourceProductMap;
7
+ exports.extractResourceIds = extractResourceIds;
8
+ /**
9
+ * 从商品列表里抽取所有 resource_id:
10
+ * - 商品绑定的 default_resource / optional_resource
11
+ * - 以及这些资源上声明的 combined_resource.resource_ids(若可从 product_resource 读取)
12
+ * 用于一次性拉到子资源数据,判定组合资源的可用性。
13
+ */
26
14
  function extractResourceIds(products) {
27
- var _a;
28
- const ids = /* @__PURE__ */ new Set();
15
+ const ids = new Set();
29
16
  for (const product of products) {
30
- const resources = (_a = product.product_resource) == null ? void 0 : _a.resources;
31
- if (!Array.isArray(resources))
32
- continue;
17
+ const resources = product.product_resource?.resources;
18
+ if (!Array.isArray(resources)) continue;
33
19
  for (const resource of resources) {
34
- if (resource.status !== 1)
35
- continue;
20
+ if (resource.status !== 1) continue;
36
21
  const defaultRes = resource.default_resource || [];
37
22
  const optionalRes = resource.optional_resource || [];
38
23
  for (const id of [...defaultRes, ...optionalRes]) {
39
- if (typeof id === "number" && id > 0)
40
- ids.add(id);
24
+ if (typeof id === 'number' && id > 0) ids.add(id);
41
25
  }
42
26
  const combined = resource.combined_resource;
43
27
  if (combined && combined.status === 1 && Array.isArray(combined.resource_ids)) {
44
28
  for (const id of combined.resource_ids) {
45
- if (typeof id === "number" && id > 0)
46
- ids.add(id);
29
+ if (typeof id === 'number' && id > 0) ids.add(id);
47
30
  }
48
31
  }
49
32
  }
50
33
  }
51
34
  return Array.from(ids);
52
35
  }
36
+
37
+ /**
38
+ * 每个 resourceId 可以被多个商品共享(同一场地关联多种运动商品)。
39
+ * Map 的 value 改为 ResourceProductMapping[],按商品出现顺序保留。
40
+ */
53
41
  function buildResourceProductMap(products) {
54
- var _a;
55
- const map = /* @__PURE__ */ new Map();
42
+ const map = new Map();
56
43
  for (const product of products) {
57
- const resources = (_a = product.product_resource) == null ? void 0 : _a.resources;
58
- if (!Array.isArray(resources))
59
- continue;
44
+ const resources = product.product_resource?.resources;
45
+ if (!Array.isArray(resources)) continue;
60
46
  for (const resource of resources) {
61
- if (resource.status !== 1)
62
- continue;
63
- const allResourceIds = [
64
- ...resource.default_resource || [],
65
- ...resource.optional_resource || []
66
- ];
47
+ if (resource.status !== 1) continue;
48
+ const allResourceIds = [...(resource.default_resource || []), ...(resource.optional_resource || [])];
67
49
  for (const resId of allResourceIds) {
68
50
  const existing = map.get(resId);
69
51
  const mapping = {
@@ -72,21 +54,16 @@ function buildResourceProductMap(products) {
72
54
  formName: resource.title,
73
55
  resourceName: resource.title,
74
56
  formId: resource.id,
75
- price: product.price || "0.00",
76
- resourceType: resource.type || "single"
57
+ price: product.price || '0.00',
58
+ resourceType: resource.type || 'single'
77
59
  };
78
60
  if (!existing) {
79
61
  map.set(resId, [mapping]);
80
- } else if (!existing.some((m) => m.productId === mapping.productId)) {
62
+ } else if (!existing.some(m => m.productId === mapping.productId)) {
81
63
  existing.push(mapping);
82
64
  }
83
65
  }
84
66
  }
85
67
  }
86
68
  return map;
87
- }
88
- // Annotate the CommonJS export names for ESM import in node:
89
- 0 && (module.exports = {
90
- buildResourceProductMap,
91
- extractResourceIds
92
- });
69
+ }
@@ -1,62 +1,34 @@
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);
1
+ "use strict";
28
2
 
29
- // src/solution/VenueBooking/utils/slotMerge.ts
30
- var slotMerge_exports = {};
31
- __export(slotMerge_exports, {
32
- buildPriceBreakdown: () => buildPriceBreakdown,
33
- buildVenueBookingEntry: () => buildVenueBookingEntry,
34
- buildVenueIdentityKey: () => buildVenueIdentityKey,
35
- buildVenueResourceMetadata: () => buildVenueResourceMetadata,
36
- expandMergedSlotToIndividual: () => expandMergedSlotToIndividual,
37
- mergeConsecutiveSlots: () => mergeConsecutiveSlots
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
38
5
  });
39
- module.exports = __toCommonJS(slotMerge_exports);
40
- var import_decimal = __toESM(require("decimal.js"));
41
- var import_dayjs = __toESM(require("dayjs"));
42
- var import_utils = require("../../../modules/Order/utils");
6
+ exports.buildPriceBreakdown = buildPriceBreakdown;
7
+ exports.buildVenueBookingEntry = buildVenueBookingEntry;
8
+ exports.buildVenueIdentityKey = buildVenueIdentityKey;
9
+ exports.buildVenueResourceMetadata = buildVenueResourceMetadata;
10
+ exports.expandMergedSlotToIndividual = expandMergedSlotToIndividual;
11
+ exports.mergeConsecutiveSlots = mergeConsecutiveSlots;
12
+ var _decimal = _interopRequireDefault(require("decimal.js"));
13
+ var _dayjs = _interopRequireDefault(require("dayjs"));
14
+ var _utils = require("../../../modules/Order/utils");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
16
  function buildVenueIdentityKey(resourceId, groupIndex) {
44
- return `venue:${resourceId}:${groupIndex}:${(0, import_utils.createUuidV4)()}`;
17
+ return `venue:${resourceId}:${groupIndex}:${(0, _utils.createUuidV4)()}`;
45
18
  }
46
19
  function mergeConsecutiveSlots(slots) {
47
- if (!slots.length)
48
- return [];
20
+ if (!slots.length) return [];
49
21
  const sorted = [...slots].sort((a, b) => a.startTime.localeCompare(b.startTime));
50
22
  const groups = [];
51
23
  let currentSlots = [sorted[0]];
52
24
  let currentStart = sorted[0].startTime;
53
25
  let currentEnd = sorted[0].endTime;
54
- let totalPrice = new import_decimal.default(sorted[0].price || "0");
26
+ let totalPrice = new _decimal.default(sorted[0].price || '0');
55
27
  for (let i = 1; i < sorted.length; i++) {
56
28
  const slot = sorted[i];
57
29
  if (slot.startTime === currentEnd) {
58
30
  currentEnd = slot.endTime;
59
- totalPrice = totalPrice.add(new import_decimal.default(slot.price || "0"));
31
+ totalPrice = totalPrice.add(new _decimal.default(slot.price || '0'));
60
32
  currentSlots.push(slot);
61
33
  } else {
62
34
  groups.push({
@@ -69,7 +41,7 @@ function mergeConsecutiveSlots(slots) {
69
41
  currentSlots = [slot];
70
42
  currentStart = slot.startTime;
71
43
  currentEnd = slot.endTime;
72
- totalPrice = new import_decimal.default(slot.price || "0");
44
+ totalPrice = new _decimal.default(slot.price || '0');
73
45
  }
74
46
  }
75
47
  groups.push({
@@ -82,15 +54,21 @@ function mergeConsecutiveSlots(slots) {
82
54
  return groups;
83
55
  }
84
56
  function buildPriceBreakdown(params) {
85
- const { group, productId, quotation } = params;
86
- if (!group.slots.length)
87
- return [];
57
+ const {
58
+ group,
59
+ productId,
60
+ quotation
61
+ } = params;
62
+ if (!group.slots.length) return [];
88
63
  const entries = [];
89
64
  for (const slot of group.slots) {
90
- const unitPrice = Number(slot.price || "0");
91
- const shelfId = quotation ? quotation.getQuotationShelfId({ productId, datetime: slot.startTime }) : 0;
92
- const startHm = (0, import_dayjs.default)(slot.startTime, "YYYY-MM-DD HH:mm").format("YYYY-MM-DD HH:mm");
93
- const endHm = (0, import_dayjs.default)(slot.endTime, "YYYY-MM-DD HH:mm").format("YYYY-MM-DD HH:mm");
65
+ const unitPrice = Number(slot.price || '0');
66
+ const shelfId = quotation ? quotation.getQuotationShelfId({
67
+ productId,
68
+ datetime: slot.startTime
69
+ }) : 0;
70
+ const startHm = (0, _dayjs.default)(slot.startTime, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
71
+ const endHm = (0, _dayjs.default)(slot.endTime, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm');
94
72
  const last = entries[entries.length - 1];
95
73
  if (last && last.unit_price === unitPrice && last.quotation_shelf_id === shelfId && last.end_time === startHm) {
96
74
  last.end_time = endHm;
@@ -108,36 +86,50 @@ function buildPriceBreakdown(params) {
108
86
  return entries;
109
87
  }
110
88
  function buildVenueResourceMetadata(params) {
111
- const { mapping, rawResource } = params;
112
- const combined = rawResource == null ? void 0 : rawResource.combined_resource;
89
+ const {
90
+ mapping,
91
+ rawResource
92
+ } = params;
93
+ const combined = rawResource?.combined_resource;
113
94
  const isCombined = !!(combined && combined.status === 1 && Array.isArray(combined.resource_ids));
114
95
  return {
115
96
  form_name: mapping.formName ?? mapping.resourceName,
116
- resource_name: (rawResource == null ? void 0 : rawResource.main_field) ?? mapping.resourceName,
97
+ resource_name: rawResource?.main_field ?? mapping.resourceName,
117
98
  combined_resource: isCombined ? combined : null
118
99
  };
119
100
  }
120
101
  function buildVenueBookingEntry(params) {
121
- const { group, resourceId, mapping, rawResource, bookingUuid, productUid, childResources } = params;
122
- const startMoment = (0, import_dayjs.default)(group.startTime, "YYYY-MM-DD HH:mm");
123
- const endMoment = (0, import_dayjs.default)(group.endTime, "YYYY-MM-DD HH:mm");
124
- const duration = endMoment.diff(startMoment, "minute");
102
+ const {
103
+ group,
104
+ resourceId,
105
+ mapping,
106
+ rawResource,
107
+ bookingUuid,
108
+ productUid,
109
+ childResources
110
+ } = params;
111
+ const startMoment = (0, _dayjs.default)(group.startTime, 'YYYY-MM-DD HH:mm');
112
+ const endMoment = (0, _dayjs.default)(group.endTime, 'YYYY-MM-DD HH:mm');
113
+ const duration = endMoment.diff(startMoment, 'minute');
125
114
  const resourceEntry = {
126
- relation_type: "form",
127
- like_status: "common",
115
+ relation_type: 'form',
116
+ like_status: 'common',
128
117
  id: resourceId,
129
118
  main_field: mapping.resourceName,
130
- form_id: (rawResource == null ? void 0 : rawResource.form_id) ?? mapping.formId,
119
+ form_id: rawResource?.form_id ?? mapping.formId,
131
120
  relation_id: resourceId,
132
121
  capacity: 1,
133
- metadata: buildVenueResourceMetadata({ mapping, rawResource })
122
+ metadata: buildVenueResourceMetadata({
123
+ mapping,
124
+ rawResource
125
+ })
134
126
  };
135
127
  if (childResources && childResources.length) {
136
- resourceEntry.children = childResources.map((child) => ({
137
- relation_type: "form",
138
- like_status: "common",
128
+ resourceEntry.children = childResources.map(child => ({
129
+ relation_type: 'form',
130
+ like_status: 'common',
139
131
  id: child.resourceId,
140
- main_field: child.main_field || "",
132
+ main_field: child.main_field || '',
141
133
  form_id: child.form_id ?? child.formId,
142
134
  relation_id: child.resourceId,
143
135
  capacity: child.capacity ?? 1,
@@ -146,15 +138,15 @@ function buildVenueBookingEntry(params) {
146
138
  }
147
139
  return {
148
140
  schedule_event_id: null,
149
- appointment_status: "new",
150
- start_date: startMoment.format("YYYY-MM-DD"),
151
- start_time: startMoment.format("HH:mm"),
152
- end_date: endMoment.format("YYYY-MM-DD"),
153
- end_time: endMoment.format("HH:mm"),
154
- select_date: startMoment.format("YYYY-MM-DD"),
141
+ appointment_status: 'new',
142
+ start_date: startMoment.format('YYYY-MM-DD'),
143
+ start_time: startMoment.format('HH:mm'),
144
+ end_date: endMoment.format('YYYY-MM-DD'),
145
+ end_time: endMoment.format('HH:mm'),
146
+ select_date: startMoment.format('YYYY-MM-DD'),
155
147
  duration,
156
- sub_type: "minutes",
157
- like_status: "common",
148
+ sub_type: 'minutes',
149
+ like_status: 'common',
158
150
  number: 1,
159
151
  is_all: false,
160
152
  schedule_id: 0,
@@ -171,67 +163,62 @@ function buildVenueBookingEntry(params) {
171
163
  }
172
164
  };
173
165
  }
166
+
167
+ /**
168
+ * 从一条已合并的订单商品还原出独立的时段列表。
169
+ * 优先使用 metadata.price_breakdown 还原每个时段的精确价格,
170
+ * 回退到按 selling_price / slot_count 均分。
171
+ */
174
172
  function expandMergedSlotToIndividual(product, slotDurationMinutes) {
175
173
  const meta = product.metadata || {};
176
174
  const resourceId = meta.resource_id;
177
- if (resourceId == null)
178
- return [];
175
+ if (resourceId == null) return [];
179
176
  const startTime = meta.start_time;
180
177
  const endTime = meta.end_time;
181
- if (!startTime || !endTime)
182
- return [];
178
+ if (!startTime || !endTime) return [];
183
179
  const productId = Number(product.product_id);
184
180
  const breakdown = meta.price_breakdown;
185
181
  const result = [];
186
- let cursor = (0, import_dayjs.default)(startTime, "YYYY-MM-DD HH:mm");
187
- const end = (0, import_dayjs.default)(endTime, "YYYY-MM-DD HH:mm");
188
- if (breakdown == null ? void 0 : breakdown.length) {
189
- const priceMap = /* @__PURE__ */ new Map();
182
+ let cursor = (0, _dayjs.default)(startTime, 'YYYY-MM-DD HH:mm');
183
+ const end = (0, _dayjs.default)(endTime, 'YYYY-MM-DD HH:mm');
184
+ if (breakdown?.length) {
185
+ const priceMap = new Map();
190
186
  for (const entry of breakdown) {
191
- let entryCursor = (0, import_dayjs.default)(entry.start_time, "YYYY-MM-DD HH:mm");
192
- const entryEnd = (0, import_dayjs.default)(entry.end_time, "YYYY-MM-DD HH:mm");
187
+ let entryCursor = (0, _dayjs.default)(entry.start_time, 'YYYY-MM-DD HH:mm');
188
+ const entryEnd = (0, _dayjs.default)(entry.end_time, 'YYYY-MM-DD HH:mm');
193
189
  while (entryCursor.isBefore(entryEnd)) {
194
- priceMap.set(entryCursor.format("HH:mm"), entry.unit_price);
195
- entryCursor = entryCursor.add(slotDurationMinutes, "minute");
190
+ priceMap.set(entryCursor.format('HH:mm'), entry.unit_price);
191
+ entryCursor = entryCursor.add(slotDurationMinutes, 'minute');
196
192
  }
197
193
  }
198
194
  while (cursor.isBefore(end)) {
199
- const slotEnd = cursor.add(slotDurationMinutes, "minute");
200
- const hm = cursor.format("HH:mm");
195
+ const slotEnd = cursor.add(slotDurationMinutes, 'minute');
196
+ const hm = cursor.format('HH:mm');
201
197
  const price = priceMap.get(hm) ?? 0;
202
198
  result.push({
203
199
  resourceId,
204
200
  productId,
205
- startTime: cursor.format("YYYY-MM-DD HH:mm"),
206
- endTime: slotEnd.format("YYYY-MM-DD HH:mm"),
207
- price: new import_decimal.default(price).toFixed(2)
201
+ startTime: cursor.format('YYYY-MM-DD HH:mm'),
202
+ endTime: slotEnd.format('YYYY-MM-DD HH:mm'),
203
+ price: new _decimal.default(price).toFixed(2)
208
204
  });
209
205
  cursor = slotEnd;
210
206
  }
211
207
  } else {
212
208
  const slotCount = meta.slot_count || 1;
213
- const totalPrice = new import_decimal.default(product.selling_price || "0");
209
+ const totalPrice = new _decimal.default(product.selling_price || '0');
214
210
  const perSlotPrice = slotCount > 0 ? totalPrice.div(slotCount).toFixed(2) : totalPrice.toFixed(2);
215
211
  while (cursor.isBefore(end)) {
216
- const slotEnd = cursor.add(slotDurationMinutes, "minute");
212
+ const slotEnd = cursor.add(slotDurationMinutes, 'minute');
217
213
  result.push({
218
214
  resourceId,
219
215
  productId,
220
- startTime: cursor.format("YYYY-MM-DD HH:mm"),
221
- endTime: slotEnd.format("YYYY-MM-DD HH:mm"),
216
+ startTime: cursor.format('YYYY-MM-DD HH:mm'),
217
+ endTime: slotEnd.format('YYYY-MM-DD HH:mm'),
222
218
  price: perSlotPrice
223
219
  });
224
220
  cursor = slotEnd;
225
221
  }
226
222
  }
227
223
  return result;
228
- }
229
- // Annotate the CommonJS export names for ESM import in node:
230
- 0 && (module.exports = {
231
- buildPriceBreakdown,
232
- buildVenueBookingEntry,
233
- buildVenueIdentityKey,
234
- buildVenueResourceMetadata,
235
- expandMergedSlotToIndividual,
236
- mergeConsecutiveSlots
237
- });
224
+ }