@pisell/pisellos 2.1.118 → 2.1.120

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 (232) hide show
  1. package/dist/apis/picoding.d.ts +0 -0
  2. package/dist/apis/picoding.js +1 -0
  3. package/dist/index.d.ts +0 -1
  4. package/dist/index.js +0 -1
  5. package/dist/model/strategy/adapter/index.d.ts +4 -0
  6. package/dist/model/strategy/adapter/index.js +4 -1
  7. package/dist/model/strategy/adapter/itemRule/adapter.d.ts +59 -0
  8. package/dist/model/strategy/adapter/itemRule/adapter.js +439 -0
  9. package/dist/model/strategy/adapter/itemRule/evaluator.d.ts +43 -0
  10. package/dist/model/strategy/adapter/itemRule/evaluator.js +169 -0
  11. package/dist/model/strategy/adapter/itemRule/examples.d.ts +64 -0
  12. package/dist/model/strategy/adapter/itemRule/examples.js +315 -0
  13. package/dist/model/strategy/adapter/itemRule/index.d.ts +5 -0
  14. package/dist/model/strategy/adapter/itemRule/index.js +5 -0
  15. package/dist/model/strategy/adapter/itemRule/type.d.ts +206 -0
  16. package/dist/model/strategy/adapter/itemRule/type.js +101 -0
  17. package/dist/model/strategy/adapter/promotion/adapter.d.ts +66 -0
  18. package/dist/model/strategy/adapter/promotion/adapter.js +271 -0
  19. package/dist/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  20. package/dist/model/strategy/adapter/promotion/evaluator.js +1206 -0
  21. package/dist/model/strategy/adapter/promotion/examples.d.ts +138 -0
  22. package/dist/model/strategy/adapter/promotion/examples.js +166 -0
  23. package/dist/model/strategy/adapter/promotion/index.d.ts +4 -0
  24. package/dist/model/strategy/adapter/promotion/index.js +0 -0
  25. package/dist/model/strategy/adapter/promotion/type.d.ts +447 -0
  26. package/dist/model/strategy/adapter/promotion/type.js +209 -0
  27. package/dist/model/strategy/adapter/walletPass/evaluator.js +4 -1
  28. package/dist/model/strategy/engine.d.ts +106 -0
  29. package/dist/model/strategy/engine.js +611 -0
  30. package/dist/model/strategy/index.d.ts +2 -93
  31. package/dist/model/strategy/index.js +6 -549
  32. package/dist/modules/Cart/types.d.ts +0 -2
  33. package/dist/modules/Cart/utils/cartProduct.js +25 -56
  34. package/dist/modules/Discount/types.d.ts +0 -18
  35. package/dist/modules/OpenData/index.d.ts +23 -0
  36. package/dist/modules/OpenData/index.js +167 -0
  37. package/dist/modules/OpenData/types.d.ts +73 -0
  38. package/dist/modules/OpenData/types.js +1 -0
  39. package/dist/modules/OpenData/utils.d.ts +2 -0
  40. package/dist/modules/OpenData/utils.js +75 -0
  41. package/dist/modules/Order/index.d.ts +58 -1
  42. package/dist/modules/Order/index.js +780 -29
  43. package/dist/modules/Order/types.d.ts +144 -12
  44. package/dist/modules/Order/utils.d.ts +25 -0
  45. package/dist/modules/Order/utils.js +225 -1
  46. package/dist/modules/Payment/index.d.ts +1 -2
  47. package/dist/modules/Payment/index.js +7 -10
  48. package/dist/modules/Payment/utils.js +0 -3
  49. package/dist/modules/Payment/walletpass.d.ts +0 -23
  50. package/dist/modules/Payment/walletpass.js +95 -191
  51. package/dist/modules/Product/utils.js +2 -2
  52. package/dist/modules/ProductList/index.d.ts +1 -1
  53. package/dist/modules/ProductList/index.js +2 -1
  54. package/dist/modules/Quotation/index.d.ts +48 -0
  55. package/dist/modules/Quotation/index.js +245 -0
  56. package/dist/modules/Quotation/types.d.ts +42 -0
  57. package/dist/modules/Quotation/types.js +1 -0
  58. package/dist/modules/Rules/index.d.ts +5 -9
  59. package/dist/modules/Rules/index.js +164 -673
  60. package/dist/modules/Rules/types.d.ts +0 -2
  61. package/dist/modules/SalesSummary/index.d.ts +63 -0
  62. package/dist/modules/SalesSummary/index.js +174 -0
  63. package/dist/modules/SalesSummary/types.d.ts +59 -0
  64. package/dist/modules/SalesSummary/types.js +1 -0
  65. package/dist/modules/SalesSummary/utils.d.ts +30 -0
  66. package/dist/modules/SalesSummary/utils.js +513 -0
  67. package/dist/modules/ScanOrderLogger/index.d.ts +21 -0
  68. package/dist/modules/ScanOrderLogger/index.js +161 -0
  69. package/dist/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  70. package/dist/modules/ScanOrderLogger/providers/feishu.js +95 -0
  71. package/dist/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  72. package/dist/modules/ScanOrderLogger/providers/grafana.js +50 -0
  73. package/dist/modules/ScanOrderLogger/types.d.ts +46 -0
  74. package/dist/modules/ScanOrderLogger/types.js +1 -0
  75. package/dist/modules/Schedule/getDateIsInSchedule.js +11 -18
  76. package/dist/modules/Summary/types.d.ts +0 -2
  77. package/dist/modules/Summary/utils.d.ts +3 -9
  78. package/dist/modules/Summary/utils.js +4 -25
  79. package/dist/modules/index.d.ts +4 -0
  80. package/dist/modules/index.js +5 -1
  81. package/dist/plugins/window.d.ts +0 -2
  82. package/dist/solution/BookingByStep/index.d.ts +1 -2
  83. package/dist/solution/BookingByStep/index.js +44 -42
  84. package/dist/solution/BookingByStep/types.d.ts +3 -1
  85. package/dist/solution/BookingByStep/types.js +5 -1
  86. package/dist/solution/BookingByStep/utils/timeslots.d.ts +3 -1
  87. package/dist/solution/BookingByStep/utils/timeslots.js +19 -12
  88. package/dist/solution/Checkout/index.js +0 -2
  89. package/dist/solution/ScanOrder/index.d.ts +90 -0
  90. package/dist/solution/ScanOrder/index.js +1853 -0
  91. package/dist/solution/ScanOrder/types.d.ts +210 -0
  92. package/dist/solution/ScanOrder/types.js +16 -0
  93. package/dist/solution/ScanOrder/utils.d.ts +93 -0
  94. package/dist/solution/ScanOrder/utils.js +397 -0
  95. package/dist/solution/ShopDiscount/index.d.ts +0 -1
  96. package/dist/solution/ShopDiscount/index.js +7 -23
  97. package/dist/solution/ShopDiscount/types.d.ts +0 -1
  98. package/dist/solution/ShopDiscount/types.js +1 -2
  99. package/dist/solution/ShopDiscount/utils.js +12 -26
  100. package/dist/solution/VenueBooking/index.d.ts +158 -0
  101. package/dist/solution/VenueBooking/index.js +2873 -0
  102. package/dist/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  103. package/dist/solution/VenueBooking/types.d.ts +130 -0
  104. package/dist/solution/VenueBooking/types.js +21 -0
  105. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +10 -0
  106. package/dist/solution/VenueBooking/utils/dateSummary.js +102 -0
  107. package/dist/solution/VenueBooking/utils/resource.d.ts +4 -0
  108. package/dist/solution/VenueBooking/utils/resource.js +94 -0
  109. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +29 -0
  110. package/dist/solution/VenueBooking/utils/slotMerge.js +204 -0
  111. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  112. package/dist/solution/VenueBooking/utils/timeSlot.js +256 -0
  113. package/dist/solution/VenueBooking/utils.d.ts +1 -0
  114. package/dist/solution/VenueBooking/utils.js +1 -0
  115. package/dist/solution/index.d.ts +2 -0
  116. package/dist/solution/index.js +3 -1
  117. package/lib/apis/picoding.d.ts +0 -0
  118. package/lib/apis/picoding.js +0 -0
  119. package/lib/index.d.ts +0 -1
  120. package/lib/index.js +1 -3
  121. package/lib/model/strategy/adapter/index.d.ts +4 -0
  122. package/lib/model/strategy/adapter/index.js +12 -0
  123. package/lib/model/strategy/adapter/itemRule/adapter.d.ts +59 -0
  124. package/lib/model/strategy/adapter/itemRule/adapter.js +338 -0
  125. package/lib/model/strategy/adapter/itemRule/evaluator.d.ts +43 -0
  126. package/lib/model/strategy/adapter/itemRule/evaluator.js +124 -0
  127. package/lib/model/strategy/adapter/itemRule/examples.d.ts +64 -0
  128. package/lib/model/strategy/adapter/itemRule/examples.js +269 -0
  129. package/lib/model/strategy/adapter/itemRule/index.d.ts +5 -0
  130. package/lib/model/strategy/adapter/itemRule/index.js +58 -0
  131. package/lib/model/strategy/adapter/itemRule/type.d.ts +206 -0
  132. package/lib/model/strategy/adapter/itemRule/type.js +46 -0
  133. package/lib/model/strategy/adapter/promotion/adapter.d.ts +66 -0
  134. package/lib/model/strategy/adapter/promotion/adapter.js +217 -0
  135. package/lib/model/strategy/adapter/promotion/evaluator.d.ts +213 -0
  136. package/lib/model/strategy/adapter/promotion/evaluator.js +844 -0
  137. package/lib/model/strategy/adapter/promotion/examples.d.ts +138 -0
  138. package/lib/model/strategy/adapter/promotion/examples.js +192 -0
  139. package/lib/model/strategy/adapter/promotion/index.d.ts +4 -0
  140. package/lib/model/strategy/adapter/promotion/index.js +0 -0
  141. package/lib/model/strategy/adapter/promotion/type.d.ts +447 -0
  142. package/lib/model/strategy/adapter/promotion/type.js +51 -0
  143. package/lib/model/strategy/adapter/walletPass/evaluator.js +2 -1
  144. package/lib/model/strategy/engine.d.ts +106 -0
  145. package/lib/model/strategy/engine.js +450 -0
  146. package/lib/model/strategy/index.d.ts +2 -93
  147. package/lib/model/strategy/index.js +6 -381
  148. package/lib/modules/Cart/types.d.ts +0 -2
  149. package/lib/modules/Cart/utils/cartProduct.js +12 -39
  150. package/lib/modules/Discount/types.d.ts +0 -18
  151. package/lib/modules/OpenData/index.d.ts +23 -0
  152. package/lib/modules/OpenData/index.js +116 -0
  153. package/lib/modules/OpenData/types.d.ts +73 -0
  154. package/lib/modules/OpenData/types.js +17 -0
  155. package/lib/modules/OpenData/utils.d.ts +2 -0
  156. package/lib/modules/OpenData/utils.js +111 -0
  157. package/lib/modules/Order/index.d.ts +58 -1
  158. package/lib/modules/Order/index.js +423 -1
  159. package/lib/modules/Order/types.d.ts +144 -12
  160. package/lib/modules/Order/utils.d.ts +25 -0
  161. package/lib/modules/Order/utils.js +229 -0
  162. package/lib/modules/Payment/index.d.ts +1 -2
  163. package/lib/modules/Payment/index.js +0 -1
  164. package/lib/modules/Payment/utils.js +0 -3
  165. package/lib/modules/Payment/walletpass.d.ts +0 -23
  166. package/lib/modules/Payment/walletpass.js +17 -94
  167. package/lib/modules/Product/utils.js +2 -2
  168. package/lib/modules/ProductList/index.d.ts +1 -1
  169. package/lib/modules/ProductList/index.js +2 -1
  170. package/lib/modules/Quotation/index.d.ts +48 -0
  171. package/lib/modules/Quotation/index.js +149 -0
  172. package/lib/modules/Quotation/types.d.ts +42 -0
  173. package/lib/modules/Quotation/types.js +17 -0
  174. package/lib/modules/Rules/index.d.ts +5 -9
  175. package/lib/modules/Rules/index.js +286 -778
  176. package/lib/modules/Rules/types.d.ts +0 -2
  177. package/lib/modules/SalesSummary/index.d.ts +63 -0
  178. package/lib/modules/SalesSummary/index.js +105 -0
  179. package/lib/modules/SalesSummary/types.d.ts +59 -0
  180. package/lib/modules/SalesSummary/types.js +17 -0
  181. package/lib/modules/SalesSummary/utils.d.ts +30 -0
  182. package/lib/modules/SalesSummary/utils.js +452 -0
  183. package/lib/modules/ScanOrderLogger/index.d.ts +21 -0
  184. package/lib/modules/ScanOrderLogger/index.js +135 -0
  185. package/lib/modules/ScanOrderLogger/providers/feishu.d.ts +2 -0
  186. package/lib/modules/ScanOrderLogger/providers/feishu.js +82 -0
  187. package/lib/modules/ScanOrderLogger/providers/grafana.d.ts +2 -0
  188. package/lib/modules/ScanOrderLogger/providers/grafana.js +52 -0
  189. package/lib/modules/ScanOrderLogger/types.d.ts +46 -0
  190. package/lib/modules/ScanOrderLogger/types.js +17 -0
  191. package/lib/modules/Schedule/getDateIsInSchedule.js +9 -11
  192. package/lib/modules/Summary/types.d.ts +0 -2
  193. package/lib/modules/Summary/utils.d.ts +3 -9
  194. package/lib/modules/Summary/utils.js +4 -19
  195. package/lib/modules/index.d.ts +4 -0
  196. package/lib/modules/index.js +9 -1
  197. package/lib/plugins/window.d.ts +0 -2
  198. package/lib/solution/BookingByStep/index.d.ts +1 -2
  199. package/lib/solution/BookingByStep/index.js +4 -2
  200. package/lib/solution/BookingByStep/types.d.ts +3 -1
  201. package/lib/solution/BookingByStep/types.js +10 -0
  202. package/lib/solution/BookingByStep/utils/timeslots.d.ts +3 -1
  203. package/lib/solution/BookingByStep/utils/timeslots.js +19 -11
  204. package/lib/solution/Checkout/index.js +0 -2
  205. package/lib/solution/ScanOrder/index.d.ts +90 -0
  206. package/lib/solution/ScanOrder/index.js +1071 -0
  207. package/lib/solution/ScanOrder/types.d.ts +210 -0
  208. package/lib/solution/ScanOrder/types.js +36 -0
  209. package/lib/solution/ScanOrder/utils.d.ts +93 -0
  210. package/lib/solution/ScanOrder/utils.js +359 -0
  211. package/lib/solution/ShopDiscount/index.d.ts +0 -1
  212. package/lib/solution/ShopDiscount/index.js +8 -22
  213. package/lib/solution/ShopDiscount/types.d.ts +0 -1
  214. package/lib/solution/ShopDiscount/utils.js +6 -10
  215. package/lib/solution/VenueBooking/index.d.ts +158 -0
  216. package/lib/solution/VenueBooking/index.js +1545 -0
  217. package/lib/solution/VenueBooking/sales-section-4-annotated.json +343 -0
  218. package/lib/solution/VenueBooking/types.d.ts +130 -0
  219. package/lib/solution/VenueBooking/types.js +44 -0
  220. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +10 -0
  221. package/lib/solution/VenueBooking/utils/dateSummary.js +101 -0
  222. package/lib/solution/VenueBooking/utils/resource.d.ts +4 -0
  223. package/lib/solution/VenueBooking/utils/resource.js +80 -0
  224. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +29 -0
  225. package/lib/solution/VenueBooking/utils/slotMerge.js +209 -0
  226. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +32 -0
  227. package/lib/solution/VenueBooking/utils/timeSlot.js +200 -0
  228. package/lib/solution/VenueBooking/utils.d.ts +1 -0
  229. package/lib/solution/VenueBooking/utils.js +69 -0
  230. package/lib/solution/index.d.ts +2 -0
  231. package/lib/solution/index.js +5 -1
  232. package/package.json +1 -1
@@ -22,7 +22,6 @@ export declare class ShopDiscountImpl extends BaseModule implements Module {
22
22
  getCurrentBookingTime(): string | null;
23
23
  private filterDiscountListByBookingTime;
24
24
  setCustomer(customer: Customer): Promise<void>;
25
- setOriginTotalAmount(amount: number): void;
26
25
  setHolders(holders: {
27
26
  form_record_id: number;
28
27
  }[]): void;
@@ -56,8 +56,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
56
56
  originalDiscountList: [],
57
57
  currentBookingTime: "",
58
58
  filteredDiscountList: [],
59
- bookingSubject: void 0,
60
- orderTotalAmount: 0
59
+ bookingSubject: void 0
61
60
  };
62
61
  }
63
62
  // =========== 生命周期方法 ===========
@@ -195,9 +194,6 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
195
194
  );
196
195
  }
197
196
  }
198
- setOriginTotalAmount(amount) {
199
- this.store.orderTotalAmount = amount;
200
- }
201
197
  // 设置holders
202
198
  setHolders(holders) {
203
199
  this.store.holders = holders;
@@ -217,7 +213,6 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
217
213
  {
218
214
  productList,
219
215
  discountList: this.getDiscountList(),
220
- orderTotalAmount: this.store.orderTotalAmount || 0,
221
216
  holders: this.store.holders || [],
222
217
  isFormSubject: ((_a = this.store.bookingSubject) == null ? void 0 : _a.type) === "form"
223
218
  },
@@ -325,7 +320,6 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
325
320
  productList: this.store.productList || [],
326
321
  oldDiscountList: this.getDiscountList(),
327
322
  newDiscountList: withScanList,
328
- orderTotalAmount: this.store.orderTotalAmount || 0,
329
323
  holders: this.store.holders || [],
330
324
  isFormSubject: ((_b = this.store.bookingSubject) == null ? void 0 : _b.type) === "form"
331
325
  }) || {
@@ -394,7 +388,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
394
388
  if (item.booking_id) {
395
389
  const product = (_a2 = this.hooks) == null ? void 0 : _a2.getProduct(item);
396
390
  (item.discount_list || []).forEach((discount) => {
397
- var _a3, _b, _c, _d, _e, _f, _g, _h, _i;
391
+ var _a3, _b, _c, _d, _e;
398
392
  if (discount.id && ["good_pass", "discount_card"].includes(discount.type)) {
399
393
  const index = editModeDiscountList.findIndex((n) => {
400
394
  var _a4;
@@ -403,12 +397,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
403
397
  if (index !== -1) {
404
398
  editModeDiscountList[index] = {
405
399
  ...editModeDiscountList[index],
406
- metadata: {
407
- ...discount.metadata || {},
408
- num: (((_b = (_a3 = editModeDiscountList == null ? void 0 : editModeDiscountList[index]) == null ? void 0 : _a3.metadata) == null ? void 0 : _b.num) || 1) + (((_c = discount.metadata) == null ? void 0 : _c.num) || 1)
409
- },
410
400
  amount: new import_decimal.default(discount.amount || 0).plus(new import_decimal.default(editModeDiscountList[index].amount || 0)).toNumber(),
411
- savedAmount: new import_decimal.default(discount.amount || 0).times((product == null ? void 0 : product.quantity) || (product == null ? void 0 : product.num) || 1).plus(((_d = discount == null ? void 0 : discount.metadata) == null ? void 0 : _d.product_discount_difference) || 0).plus(new import_decimal.default(editModeDiscountList[index].savedAmount || 0)).toNumber()
401
+ savedAmount: new import_decimal.default(discount.amount || 0).times((product == null ? void 0 : product.quantity) || (product == null ? void 0 : product.num) || 1).plus(((_a3 = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a3.product_discount_difference) || 0).plus(new import_decimal.default(editModeDiscountList[index].savedAmount || 0)).toNumber()
412
402
  };
413
403
  } else {
414
404
  if (discount.type && !discount.tag) {
@@ -416,20 +406,16 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
416
406
  }
417
407
  editModeDiscountList.push({
418
408
  ...discount,
419
- metadata: {
420
- ...discount.metadata || {},
421
- num: ((_e = discount.metadata) == null ? void 0 : _e.num) || 1
422
- },
423
409
  name: discount.name || discount.discount.title.auto,
424
410
  isEditMode: true,
425
411
  limited_relation_product_data: {},
426
- savedAmount: new import_decimal.default(discount.amount || 0).times((product == null ? void 0 : product.quantity) || (product == null ? void 0 : product.num) || 1).plus(((_f = discount == null ? void 0 : discount.metadata) == null ? void 0 : _f.product_discount_difference) || 0).toNumber(),
412
+ savedAmount: new import_decimal.default(discount.amount || 0).times((product == null ? void 0 : product.quantity) || (product == null ? void 0 : product.num) || 1).plus(((_b = discount == null ? void 0 : discount.metadata) == null ? void 0 : _b.product_discount_difference) || 0).toNumber(),
427
413
  isAvailable: true,
428
- id: ((_g = discount.discount) == null ? void 0 : _g.resource_id) || discount.id,
429
- format_title: ((_h = discount.discount) == null ? void 0 : _h.title) || discount.format_title,
414
+ id: ((_c = discount.discount) == null ? void 0 : _c.resource_id) || discount.id,
415
+ format_title: ((_d = discount.discount) == null ? void 0 : _d.title) || discount.format_title,
430
416
  isDisabled: true,
431
417
  isSelected: true,
432
- product_id: ((_i = discount.discount) == null ? void 0 : _i.product_id) || discount.product_id
418
+ product_id: ((_e = discount.discount) == null ? void 0 : _e.product_id) || discount.product_id
433
419
  });
434
420
  }
435
421
  }
@@ -546,7 +532,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
546
532
  }
547
533
  await this.core.effects.emit(
548
534
  `${this.name}:onLoadDiscountList`,
549
- newDiscountList
535
+ filteredDiscountList
550
536
  );
551
537
  } catch (error) {
552
538
  console.error("[ShopDiscount] 加载准备配置出错:", error);
@@ -23,7 +23,6 @@ export interface ShopDiscountState {
23
23
  discount: DiscountModule | null;
24
24
  rules: RulesModule | null;
25
25
  productList: Record<string, any>[];
26
- orderTotalAmount?: number;
27
26
  holders?: {
28
27
  form_record_id: number;
29
28
  form_id?: number;
@@ -56,18 +56,14 @@ var isAllNormalProduct = (items) => {
56
56
  };
57
57
  var getDiscountAmount = (discount, total, price) => {
58
58
  var _a;
59
- let discountedPrice = 0;
60
59
  if (discount.tag === "good_pass") {
61
- discountedPrice = new import_decimal.default(price).minus(new import_decimal.default(price || 0)).toNumber();
62
- } else {
63
- const isFixedAmount = ((_a = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a.discount_card_type) === "fixed_amount";
64
- if (isFixedAmount) {
65
- discountedPrice = Math.max(new import_decimal.default(price).minus(new import_decimal.default(discount.par_value || 0)).toNumber(), 0);
66
- } else {
67
- discountedPrice = new import_decimal.default(100).minus(discount.par_value || 0).div(100).mul(new import_decimal.default(price)).toNumber();
68
- }
60
+ return new import_decimal.default(price).minus(new import_decimal.default(price || 0)).toNumber();
61
+ }
62
+ const isFixedAmount = ((_a = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a.discount_card_type) === "fixed_amount";
63
+ if (isFixedAmount) {
64
+ return Math.max(new import_decimal.default(price).minus(new import_decimal.default((discount.amount ?? discount.par_value) || 0)).toNumber(), 0);
69
65
  }
70
- return discountedPrice;
66
+ return new import_decimal.default(100).minus(discount.par_value || 0).div(100).mul(new import_decimal.default(price)).toNumber();
71
67
  };
72
68
  var getDiscountListAmountTotal = (discount) => {
73
69
  return discount.reduce((acc, cur) => {
@@ -0,0 +1,158 @@
1
+ import { Module, ModuleOptions, PisellCore } from '../../types';
2
+ import { BaseModule } from '../../modules/BaseModule';
3
+ import { VenueBookingAddLogParams, VenueBookingSlotConfig, VenueDateSummaryItem, VenueSlotSelection, VenueTimeSlotGrid } from './types';
4
+ import type { ScanOrderOrderProduct, ScanOrderOrderProductIdentity } from '../ScanOrder/types';
5
+ import type { OpenDataAvailabilityResult } from '../../modules/OpenData';
6
+ import type { ProductData } from '../../modules/Product/types';
7
+ import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
8
+ import type { StrategyConfig } from '../../model/strategy/type';
9
+ export * from './types';
10
+ interface VenueBookingItemRuleRuntimeConfig {
11
+ strategyConfigs?: StrategyConfig[];
12
+ pax?: Partial<PaxInfo>;
13
+ historicalItems?: CartItemSummary[];
14
+ serviceType?: string;
15
+ submissionIndex?: number;
16
+ custom?: Record<string, any>;
17
+ }
18
+ export declare class VenueBookingImpl extends BaseModule implements Module {
19
+ protected defaultName: string;
20
+ protected defaultVersion: string;
21
+ isSolution: boolean;
22
+ private initializeOptions;
23
+ private store;
24
+ private otherParams;
25
+ private cacheId;
26
+ private window;
27
+ private request;
28
+ private itemRuleEvaluator;
29
+ private itemRuleConfigs;
30
+ private itemRuleConfigsPromise;
31
+ private itemRulePrefillApplied;
32
+ private itemRuleRuntimeConfig;
33
+ private resourceProductMap;
34
+ private loginEffectDisposers;
35
+ private customerLoginRefreshInFlight;
36
+ private customerLoginRefreshIdInFlight;
37
+ private getLoggerContext;
38
+ private serializeError;
39
+ private addVenueBookingLog;
40
+ private logMethodStart;
41
+ private logMethodSuccess;
42
+ private logMethodError;
43
+ addLog(params: VenueBookingAddLogParams): Promise<void>;
44
+ constructor(name?: string, version?: string);
45
+ private normalizeCustomerId;
46
+ private resolveCustomerIdFromLoginPayload;
47
+ private clearLoginEffectListeners;
48
+ private registerLoginEffect;
49
+ private registerCustomerLoginListeners;
50
+ private refreshOrderMarketingAfterLogin;
51
+ initialize(core: PisellCore, options?: ModuleOptions): Promise<void>;
52
+ destroy(): Promise<void>;
53
+ retryInit(): Promise<void>;
54
+ refresh(): Promise<void>;
55
+ getStatus(): import("./types").VenueBookingStatus;
56
+ getEntryContext(): import("./types").VenueBookingEntryContext | null;
57
+ getItemRuleQuantityLimits(): QuantityLimitResult[];
58
+ getCartValidationPassed(): boolean | null;
59
+ getCartValidation(): {
60
+ passed: boolean | null;
61
+ failures: QuantityCheckResult[];
62
+ };
63
+ loadAllProducts(): Promise<{
64
+ venueProducts: ProductData[];
65
+ addonProducts: ProductData[];
66
+ }>;
67
+ loadVenueProducts(): Promise<ProductData[]>;
68
+ loadAddonProducts(): Promise<ProductData[]>;
69
+ getVenueProducts(): ProductData[];
70
+ getAddonProductsList(): ProductData[];
71
+ loadQuotations(params?: {
72
+ channel?: string;
73
+ }): Promise<void>;
74
+ fetchResourceAvailability(params: {
75
+ startDate: string;
76
+ endDate: string;
77
+ }): Promise<void>;
78
+ getDateRangeSummary(params: {
79
+ startDate: string;
80
+ endDate: string;
81
+ }): VenueDateSummaryItem[];
82
+ getTimeSlotGrid(date: string): VenueTimeSlotGrid;
83
+ /**
84
+ * 切换单个时段的选中状态(选中/取消)。
85
+ * 内部自动处理连续时段的合并与拆分,订单是唯一真相源。
86
+ */
87
+ toggleSlot(slot: VenueSlotSelection): Promise<ScanOrderOrderProduct[]>;
88
+ /**
89
+ * 获取某资源当前选中的所有独立时段(从订单中解析)。
90
+ */
91
+ getSelectedSlotsForResource(resourceId: number | string): VenueSlotSelection[];
92
+ /**
93
+ * 判断某个时段是否已选中。
94
+ */
95
+ isSlotSelected(resourceId: number | string, startTime: string): boolean;
96
+ /**
97
+ * 获取所有已选时段(按资源分组)。
98
+ */
99
+ getAllSelectedSlots(): Map<number | string, VenueSlotSelection[]>;
100
+ /**
101
+ * 对指定资源的订单商品进行 reconcile:
102
+ * 清除旧商品 → 合并连续时段 → 重新写入。
103
+ */
104
+ private reconcileOrderForResource;
105
+ setSlotConfig(config: Partial<VenueBookingSlotConfig>): void;
106
+ getSlotConfig(): VenueBookingSlotConfig;
107
+ loadSchedules(): Promise<void>;
108
+ private injectScheduleResolverToQuotation;
109
+ getScheduleListByIds(ids: number[]): import("../../modules/Schedule/types").ScheduleItem[];
110
+ getTempOrder(): import("./types").ScanOrderTempOrder | null;
111
+ updateTempOrderNote(note: string): string;
112
+ updateTempOrderContactsInfo(contactsInfo: any[]): any[];
113
+ private ensureTempOrder;
114
+ onCustomerLogin(params: {
115
+ customerId: number;
116
+ }): Promise<void>;
117
+ private recalculateOrderPricesFromQuotation;
118
+ scanCode(code: string, customerId?: number): Promise<{
119
+ isAvailable: boolean;
120
+ discountList: import("../../modules/Discount").Discount[];
121
+ type: "server" | "clientCalc";
122
+ unavailableReason?: import("../../modules/Rules/types").UnavailableReason | undefined;
123
+ }>;
124
+ /** 获取当前折扣列表(包装 order.getDiscountList) */
125
+ getDiscountList(): import("../../modules/Discount").Discount[];
126
+ /** 勾选/取消勾选某张折扣券,重新计算折扣并持久化 */
127
+ setDiscountSelected(params: {
128
+ discountId: number;
129
+ isSelected: boolean;
130
+ }): Promise<import("../../modules/Discount").Discount[]>;
131
+ addNewOrder(): Promise<import("./types").ScanOrderTempOrder>;
132
+ getOrderProducts(): ScanOrderOrderProduct[];
133
+ getSummary(): Promise<import("./types").ScanOrderSummary>;
134
+ submitOrder<T = any>(): Promise<T>;
135
+ addProductToOrder(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): Promise<ScanOrderOrderProduct[]>;
136
+ updateProductInOrder(params: {
137
+ product_id: number | null;
138
+ product_variant_id: number;
139
+ updates: Partial<ScanOrderOrderProduct>;
140
+ }): Promise<ScanOrderOrderProduct[]>;
141
+ removeProductFromOrder(identity: ScanOrderOrderProductIdentity): Promise<ScanOrderOrderProduct[]>;
142
+ getProductList(): Promise<ProductData[]>;
143
+ private loadOpenDataConfig;
144
+ private loadRuntimeConfigs;
145
+ private fetchItemRuleConfigsByModelIds;
146
+ private buildPrefillProductSourceMap;
147
+ private getItemRuleRuntimeConfig;
148
+ private ensureItemRuleConfigsLoaded;
149
+ private refreshItemRuleQuantityLimits;
150
+ private applyPrefillByItemRule;
151
+ applyItemRulePrefill(): Promise<void>;
152
+ private evaluateCartValidationByItemRule;
153
+ private validateBeforeSubmitByItemRule;
154
+ private refreshCartValidationPassed;
155
+ setItemRuleRuntimeConfig(config?: VenueBookingItemRuleRuntimeConfig): Promise<void>;
156
+ getOtherParams(): Record<string, any>;
157
+ checkOpenDataAvailability(): Promise<OpenDataAvailabilityResult>;
158
+ }