@pisell/pisellos 2.1.165 → 2.1.166

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 (78) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +3 -0
  3. package/dist/model/strategy/adapter/dataVariant/adapter.d.ts +50 -0
  4. package/dist/model/strategy/adapter/dataVariant/adapter.js +167 -0
  5. package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +89 -0
  6. package/dist/model/strategy/adapter/dataVariant/evaluator.js +780 -0
  7. package/dist/model/strategy/adapter/dataVariant/examples.d.ts +39 -0
  8. package/dist/model/strategy/adapter/dataVariant/examples.js +277 -0
  9. package/dist/model/strategy/adapter/dataVariant/index.d.ts +4 -0
  10. package/dist/model/strategy/adapter/dataVariant/index.js +4 -0
  11. package/dist/model/strategy/adapter/dataVariant/type.d.ts +148 -0
  12. package/dist/model/strategy/adapter/dataVariant/type.js +54 -0
  13. package/dist/model/strategy/adapter/index.d.ts +4 -0
  14. package/dist/model/strategy/adapter/index.js +5 -1
  15. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  16. package/dist/modules/Discount/index.d.ts +5 -2
  17. package/dist/modules/Discount/index.js +21 -1
  18. package/dist/modules/Discount/types.d.ts +4 -0
  19. package/dist/modules/Order/index.d.ts +1 -0
  20. package/dist/modules/Order/index.js +18 -6
  21. package/dist/modules/Order/types.d.ts +2 -0
  22. package/dist/modules/ProductList/index.d.ts +3 -1
  23. package/dist/modules/ProductList/index.js +22 -11
  24. package/dist/modules/Schedule/getDateIsInSchedule.js +5 -0
  25. package/dist/solution/BookingByStep/index.d.ts +2 -2
  26. package/dist/solution/ScanOrder/index.js +1 -1
  27. package/dist/solution/ShopDiscount/index.js +16 -15
  28. package/dist/solution/VenueBooking/index.d.ts +40 -3
  29. package/dist/solution/VenueBooking/index.js +394 -261
  30. package/dist/solution/VenueBooking/types.d.ts +3 -1
  31. package/dist/solution/VenueBooking/types.js +1 -0
  32. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  33. package/dist/solution/VenueBooking/utils/dateSummary.js +12 -25
  34. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -6
  35. package/dist/solution/VenueBooking/utils/slotMerge.js +3 -9
  36. package/dist/solution/VenueBooking/utils/smartPricing.d.ts +70 -0
  37. package/dist/solution/VenueBooking/utils/smartPricing.js +233 -0
  38. package/dist/solution/VenueBooking/utils/timeSlot.d.ts +2 -0
  39. package/dist/solution/VenueBooking/utils/timeSlot.js +9 -4
  40. package/lib/index.d.ts +1 -0
  41. package/lib/index.js +3 -0
  42. package/lib/model/strategy/adapter/dataVariant/adapter.d.ts +50 -0
  43. package/lib/model/strategy/adapter/dataVariant/adapter.js +149 -0
  44. package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +89 -0
  45. package/lib/model/strategy/adapter/dataVariant/evaluator.js +583 -0
  46. package/lib/model/strategy/adapter/dataVariant/examples.d.ts +39 -0
  47. package/lib/model/strategy/adapter/dataVariant/examples.js +293 -0
  48. package/lib/model/strategy/adapter/dataVariant/index.d.ts +4 -0
  49. package/lib/model/strategy/adapter/dataVariant/index.js +38 -0
  50. package/lib/model/strategy/adapter/dataVariant/type.d.ts +148 -0
  51. package/lib/model/strategy/adapter/dataVariant/type.js +31 -0
  52. package/lib/model/strategy/adapter/index.d.ts +4 -0
  53. package/lib/model/strategy/adapter/index.js +13 -2
  54. package/lib/modules/Discount/index.d.ts +5 -2
  55. package/lib/modules/Discount/index.js +11 -1
  56. package/lib/modules/Discount/types.d.ts +4 -0
  57. package/lib/modules/Order/index.d.ts +1 -0
  58. package/lib/modules/Order/index.js +11 -1
  59. package/lib/modules/Order/types.d.ts +2 -0
  60. package/lib/modules/ProductList/index.d.ts +3 -1
  61. package/lib/modules/ProductList/index.js +45 -39
  62. package/lib/modules/Schedule/getDateIsInSchedule.js +4 -0
  63. package/lib/solution/BookingByStep/index.d.ts +2 -2
  64. package/lib/solution/ScanOrder/index.js +1 -1
  65. package/lib/solution/ShopDiscount/index.js +3 -2
  66. package/lib/solution/VenueBooking/index.d.ts +40 -3
  67. package/lib/solution/VenueBooking/index.js +257 -111
  68. package/lib/solution/VenueBooking/types.d.ts +3 -1
  69. package/lib/solution/VenueBooking/types.js +1 -0
  70. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
  71. package/lib/solution/VenueBooking/utils/dateSummary.js +5 -10
  72. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -6
  73. package/lib/solution/VenueBooking/utils/slotMerge.js +3 -4
  74. package/lib/solution/VenueBooking/utils/smartPricing.d.ts +70 -0
  75. package/lib/solution/VenueBooking/utils/smartPricing.js +180 -0
  76. package/lib/solution/VenueBooking/utils/timeSlot.d.ts +2 -0
  77. package/lib/solution/VenueBooking/utils/timeSlot.js +7 -3
  78. package/package.json +1 -1
@@ -45,6 +45,7 @@ import { extractResourceIds, buildResourceProductMap } from "./utils/resource";
45
45
  import { buildTimeSlotGrid, isBusinessHoursCrossDay, generateTimeLabels } from "./utils/timeSlot";
46
46
  import { buildDateRangeSummary } from "./utils/dateSummary";
47
47
  import { mergeConsecutiveSlots, expandMergedSlotToIndividual, buildVenueIdentityKey, buildVenueBookingEntry, buildVenueResourceMetadata, buildPriceBreakdown } from "./utils/slotMerge";
48
+ import { buildSlotPriceMapByScheduleSegments, formatProductsWithDataVariant, getPriceForProductAtDatetime, getSlotPriceFromMap } from "./utils/smartPricing";
48
49
  import { composeLinePrice, createUuidV4, sumOptionUnitPrice } from "../../modules/Order/utils";
49
50
  import { OrderModule } from "../../modules/Order";
50
51
  import { RegisterAndLoginHooks } from "../RegisterAndLogin/types";
@@ -98,9 +99,15 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
98
99
  _defineProperty(_assertThisInitialized(_this), "loginEffectDisposers", []);
99
100
  _defineProperty(_assertThisInitialized(_this), "customerLoginRefreshInFlight", null);
100
101
  _defineProperty(_assertThisInitialized(_this), "customerLoginRefreshIdInFlight", null);
102
+ /** 最近一次确认登录的客户;登录事件与 user 插件更新之间可能存在时序差。 */
103
+ _defineProperty(_assertThisInitialized(_this), "smartPricingCustomerId", void 0);
101
104
  _defineProperty(_assertThisInitialized(_this), "loadAllProductsInFlight", null);
102
105
  _defineProperty(_assertThisInitialized(_this), "productsLoaded", false);
103
106
  _defineProperty(_assertThisInitialized(_this), "loadOpenDataConfigInFlight", null);
107
+ /** 按日期缓存 slot 智能定价 Map,避免同周重复 resolveProducts */
108
+ _defineProperty(_assertThisInitialized(_this), "slotPriceMapCache", new Map());
109
+ /** loadProducts 后缓存的全量商品(venue + addon),供分段算价复用 */
110
+ _defineProperty(_assertThisInitialized(_this), "smartPricingProductCatalog", []);
104
111
  return _this;
105
112
  }
106
113
  _createClass(VenueBookingImpl, [{
@@ -321,16 +328,9 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
321
328
  }, {
322
329
  key: "registerCustomerLoginListeners",
323
330
  value: function registerCustomerLoginListeners() {
324
- var _this$core2,
325
- _this$core3,
326
- _accountModule$getCur,
327
- _accountModule$getAcc,
328
- _this2 = this;
331
+ var _this2 = this;
329
332
  this.clearLoginEffectListeners();
330
- var accountModule = (_this$core2 = this.core) === null || _this$core2 === void 0 ? void 0 : _this$core2.getModule('account');
331
- var registerAndLoginModule = (_this$core3 = this.core) === null || _this$core3 === void 0 ? void 0 : _this$core3.getModule('registerAndLogin');
332
- var currentAccount = (accountModule === null || accountModule === void 0 || (_accountModule$getCur = accountModule.getCurrentAccount) === null || _accountModule$getCur === void 0 ? void 0 : _accountModule$getCur.call(accountModule)) || (accountModule === null || accountModule === void 0 || (_accountModule$getAcc = accountModule.getAccount) === null || _accountModule$getAcc === void 0 ? void 0 : _accountModule$getAcc.call(accountModule)) || null;
333
- var createHandleLogin = function createHandleLogin(eventName) {
333
+ var createHandleLogin = function createHandleLogin() {
334
334
  return /*#__PURE__*/function () {
335
335
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(payload) {
336
336
  var customerId;
@@ -359,8 +359,9 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
359
359
  };
360
360
  }();
361
361
  };
362
- this.registerLoginEffect(AccountHooks.OnLogin, createHandleLogin(AccountHooks.OnLogin));
363
- this.registerLoginEffect(RegisterAndLoginHooks.onLoginSuccess, createHandleLogin(RegisterAndLoginHooks.onLoginSuccess));
362
+ this.registerLoginEffect(VenueBookingImpl.PISELL1_LOGIN_SUCCESS, createHandleLogin());
363
+ this.registerLoginEffect(AccountHooks.OnLogin, createHandleLogin());
364
+ this.registerLoginEffect(RegisterAndLoginHooks.onLoginSuccess, createHandleLogin());
364
365
  }
365
366
  }, {
366
367
  key: "refreshOrderMarketingAfterLogin",
@@ -395,37 +396,40 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
395
396
  case 9:
396
397
  this.customerLoginRefreshIdInFlight = params.customerId;
397
398
  refreshTask = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
398
- var _this3$otherParams;
399
+ var _this3$core, _this3$core$emit;
399
400
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
400
401
  while (1) switch (_context4.prev = _context4.next) {
401
402
  case 0:
402
- if (!_this3.store.quotation) {
403
- _context4.next = 3;
404
- break;
405
- }
403
+ // 用户插件可能晚于登录 effect 更新;以已确认的登录 payload 作为本次及后续网格算价的身份来源。
404
+ _this3.smartPricingCustomerId = params.customerId;
406
405
  _context4.next = 3;
407
- return _this3.store.quotation.loadQuotations({
408
- channel: (_this3$otherParams = _this3.otherParams) === null || _this3$otherParams === void 0 ? void 0 : _this3$otherParams.channel
409
- });
410
- case 3:
411
- _this3.recalculateOrderPricesFromQuotation();
412
- _context4.next = 6;
413
406
  return _this3.store.order.loadDiscountConfig({
414
407
  customerId: params.customerId
415
408
  });
416
- case 6:
417
- _context4.next = 8;
409
+ case 3:
410
+ _this3.clearSlotPriceMapCache();
411
+ _this3.recalculateOrderPricesFromSmartPricing();
412
+ // loadDiscountConfig 会按登录前的订单价格预计算一次券;智能价更新后必须用新的
413
+ // source/main 价格字段重新套券,否则购物车行价与 Summary 会使用两套基数。
414
+ _this3.store.order.applyDiscount();
415
+ _this3.normalizeDiscountedOrderPrices(_this3.store.order.getDiscountList());
416
+ _context4.next = 9;
418
417
  return _this3.store.order.recalculateSummary({
419
418
  createIfMissing: true
420
419
  });
421
- case 8:
420
+ case 9:
422
421
  _this3.store.order.persistTempOrder();
423
- _context4.next = 11;
422
+ _context4.next = 12;
424
423
  return _this3.refreshItemRuleQuantityLimits();
425
- case 11:
426
- _context4.next = 13;
424
+ case 12:
425
+ _context4.next = 14;
427
426
  return _this3.refreshCartValidationPassed();
428
- case 13:
427
+ case 14:
428
+ _context4.next = 16;
429
+ return (_this3$core = _this3.core) === null || _this3$core === void 0 || (_this3$core = _this3$core.effects) === null || _this3$core === void 0 || (_this3$core$emit = _this3$core.emit) === null || _this3$core$emit === void 0 ? void 0 : _this3$core$emit.call(_this3$core, VenueBookingHooks.onSmartPricingUpdated, {
430
+ customerId: params.customerId
431
+ });
432
+ case 16:
429
433
  case "end":
430
434
  return _context4.stop();
431
435
  }
@@ -482,8 +486,6 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
482
486
  openDataModule,
483
487
  _this$store$order,
484
488
  _this$store$order2,
485
- _this$store$quotation,
486
- _this$otherParams6,
487
489
  _args6 = arguments;
488
490
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
489
491
  while (1) switch (_context6.prev = _context6.next) {
@@ -493,6 +495,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
493
495
  this.core = core;
494
496
  this.initializeOptions = options || {};
495
497
  this.store = _objectSpread(_objectSpread({}, this.store), options.store);
498
+ this.smartPricingCustomerId = undefined;
496
499
  this.store.entryContext = ((_options$otherParams = options.otherParams) === null || _options$otherParams === void 0 ? void 0 : _options$otherParams.entryContext) || this.store.entryContext;
497
500
  this.store.status = 'initializing';
498
501
  this.store.error = null;
@@ -513,19 +516,19 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
513
516
  this.window = core.getPlugin('window');
514
517
  this.request = core.getPlugin('request');
515
518
  if (this.window) {
516
- _context6.next = 24;
519
+ _context6.next = 25;
517
520
  break;
518
521
  }
519
522
  this.logMethodError('initialize', 'window plugin missing');
520
523
  throw new Error('venueBooking解决方案需要 window 插件支持');
521
- case 24:
524
+ case 25:
522
525
  if (this.request) {
523
- _context6.next = 27;
526
+ _context6.next = 28;
524
527
  break;
525
528
  }
526
529
  this.logMethodError('initialize', 'request plugin missing');
527
530
  throw new Error('venueBooking解决方案需要 request 插件支持');
528
- case 27:
531
+ case 28:
529
532
  // 注册基础模块(order, salesSummary, products, logger)
530
533
  baseModules = ['scanOrderLogger', 'products', 'order', 'salesSummary'];
531
534
  baseModules.forEach(function (step) {
@@ -622,46 +625,41 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
622
625
  }
623
626
  this.registerCustomerLoginListeners();
624
627
  console.log('[VenueBooking] 初始化开始');
625
- _context6.prev = 50;
626
- _context6.next = 53;
628
+ _context6.prev = 51;
629
+ _context6.next = 54;
627
630
  return (_this$store$order = this.store.order) === null || _this$store$order === void 0 ? void 0 : _this$store$order.recalculateSummary({
628
631
  createIfMissing: false
629
632
  });
630
- case 53:
633
+ case 54:
631
634
  (_this$store$order2 = this.store.order) === null || _this$store$order2 === void 0 || _this$store$order2.persistTempOrder();
632
- _context6.next = 56;
635
+ _context6.next = 57;
633
636
  return this.loadRuntimeConfigs();
634
- case 56:
637
+ case 57:
635
638
  if (!this.store.schedule) {
636
- _context6.next = 61;
639
+ _context6.next = 60;
637
640
  break;
638
641
  }
639
- _context6.next = 59;
642
+ _context6.next = 60;
640
643
  return this.store.schedule.loadAllSchedule();
641
- case 59:
642
- this.injectScheduleResolverToQuotation();
643
- (_this$store$quotation = this.store.quotation) === null || _this$store$quotation === void 0 || _this$store$quotation.loadQuotations({
644
- channel: (_this$otherParams6 = this.otherParams) === null || _this$otherParams6 === void 0 ? void 0 : _this$otherParams6.channel
645
- });
646
- case 61:
647
- _context6.next = 63;
644
+ case 60:
645
+ _context6.next = 62;
648
646
  return this.refreshItemRuleQuantityLimits();
649
- case 63:
647
+ case 62:
650
648
  this.store.status = 'ready';
651
649
  console.log('[VenueBooking] 初始化完成');
652
- _context6.next = 67;
650
+ _context6.next = 66;
653
651
  return this.core.effects.emit(VenueBookingHooks.onInited, {
654
652
  status: this.store.status
655
653
  });
656
- case 67:
654
+ case 66:
657
655
  this.logMethodSuccess('initialize', {
658
656
  status: this.store.status
659
657
  });
660
- _context6.next = 77;
658
+ _context6.next = 76;
661
659
  break;
662
- case 70:
663
- _context6.prev = 70;
664
- _context6.t0 = _context6["catch"](50);
660
+ case 69:
661
+ _context6.prev = 69;
662
+ _context6.t0 = _context6["catch"](51);
665
663
  this.store.status = 'error';
666
664
  this.store.error = _context6.t0 instanceof Error ? _context6.t0.message : '初始化失败';
667
665
  console.error('[VenueBooking] 初始化失败', _context6.t0);
@@ -669,11 +667,11 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
669
667
  status: this.store.status
670
668
  });
671
669
  throw _context6.t0;
672
- case 77:
670
+ case 76:
673
671
  case "end":
674
672
  return _context6.stop();
675
673
  }
676
- }, _callee6, this, [[50, 70]]);
674
+ }, _callee6, this, [[51, 69]]);
677
675
  }));
678
676
  function initialize(_x5) {
679
677
  return _initialize.apply(this, arguments);
@@ -814,6 +812,113 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
814
812
  };
815
813
  }
816
814
 
815
+ /** 清除 slot 价格分段缓存(商品重载 / 登录后 customerId 变化时调用) */
816
+ }, {
817
+ key: "clearSlotPriceMapCache",
818
+ value: function clearSlotPriceMapCache() {
819
+ this.slotPriceMapCache.clear();
820
+ }
821
+
822
+ /** 读取当前登录 customerId */
823
+ }, {
824
+ key: "resolveCustomerIdForSmartPricing",
825
+ value: function resolveCustomerIdForSmartPricing() {
826
+ if (this.smartPricingCustomerId) return this.smartPricingCustomerId;
827
+ try {
828
+ var _this$core2, _userPlugin$get;
829
+ var userPlugin = (_this$core2 = this.core) === null || _this$core2 === void 0 ? void 0 : _this$core2.getPlugin('user');
830
+ var customerId = Number(userPlugin === null || userPlugin === void 0 || (_userPlugin$get = userPlugin.get) === null || _userPlugin$get === void 0 || (_userPlugin$get = _userPlugin$get.call(userPlugin)) === null || _userPlugin$get === void 0 ? void 0 : _userPlugin$get.id);
831
+ return Number.isFinite(customerId) && customerId > 0 ? customerId : undefined;
832
+ } catch (_unused2) {
833
+ return undefined;
834
+ }
835
+ }
836
+ }, {
837
+ key: "resolveAvailableWalletIdsForSmartPricing",
838
+ value: function resolveAvailableWalletIdsForSmartPricing() {
839
+ var _this$store$order3, _this$store$order3$ge, _this$otherParams6, _this$otherParams7, _this$otherParams8, _this$otherParams9;
840
+ var orderWalletIds = (_this$store$order3 = this.store.order) === null || _this$store$order3 === void 0 || (_this$store$order3$ge = _this$store$order3.getAvailableWalletIds) === null || _this$store$order3$ge === void 0 ? void 0 : _this$store$order3$ge.call(_this$store$order3);
841
+ var fallbackWalletIds = ((_this$otherParams6 = this.otherParams) === null || _this$otherParams6 === void 0 ? void 0 : _this$otherParams6.available_wallet_ids) || ((_this$otherParams7 = this.otherParams) === null || _this$otherParams7 === void 0 ? void 0 : _this$otherParams7.availableWalletIds) || ((_this$otherParams8 = this.otherParams) === null || _this$otherParams8 === void 0 || (_this$otherParams8 = _this$otherParams8.strategy_context) === null || _this$otherParams8 === void 0 ? void 0 : _this$otherParams8.available_wallet_ids) || ((_this$otherParams9 = this.otherParams) === null || _this$otherParams9 === void 0 || (_this$otherParams9 = _this$otherParams9.strategy_context) === null || _this$otherParams9 === void 0 ? void 0 : _this$otherParams9.availableWalletIds);
842
+ var source = Array.isArray(orderWalletIds) && orderWalletIds.length ? orderWalletIds : fallbackWalletIds;
843
+ if (!Array.isArray(source)) return [];
844
+ var ids = source.map(function (item) {
845
+ return Number(item);
846
+ }).filter(function (item) {
847
+ return Number.isFinite(item) && item > 0;
848
+ });
849
+ return Array.from(new Set(ids));
850
+ }
851
+
852
+ /** 读取 schedule 全量列表,供智能定价 schedule_match 使用 */
853
+ }, {
854
+ key: "getScheduleListForSmartPricing",
855
+ value: function getScheduleListForSmartPricing() {
856
+ var _store;
857
+ var scheduleModule = this.store.schedule;
858
+ var list = scheduleModule === null || scheduleModule === void 0 || (_store = scheduleModule.store) === null || _store === void 0 ? void 0 : _store.scheduleList;
859
+ return Array.isArray(list) ? list : [];
860
+ }
861
+
862
+ /** 构建智能定价上下文,对齐 OS Server buildProductFormatterContext */
863
+ }, {
864
+ key: "buildSmartPricingContext",
865
+ value: function buildSmartPricingContext(customerId) {
866
+ var _this$core3, _this$otherParams10, _this$otherParams11, _this$otherParams12, _this$otherParams13, _this$otherParams14, _this$otherParams15, _this$otherParams16;
867
+ var evaluator = (_this$core3 = this.core) === null || _this$core3 === void 0 || (_this$core3 = _this$core3.context) === null || _this$core3 === void 0 ? void 0 : _this$core3.dataVariantEvaluator;
868
+ return {
869
+ evaluator: evaluator,
870
+ scheduleList: this.getScheduleListForSmartPricing(),
871
+ menuList: ((_this$otherParams10 = this.otherParams) === null || _this$otherParams10 === void 0 ? void 0 : _this$otherParams10.menuList) || ((_this$otherParams11 = this.otherParams) === null || _this$otherParams11 === void 0 || (_this$otherParams11 = _this$otherParams11.openData) === null || _this$otherParams11 === void 0 ? void 0 : _this$otherParams11.menuList) || [],
872
+ customerId: customerId !== null && customerId !== void 0 ? customerId : this.resolveCustomerIdForSmartPricing(),
873
+ availableWalletIds: this.resolveAvailableWalletIdsForSmartPricing(),
874
+ channel: (_this$otherParams12 = this.otherParams) === null || _this$otherParams12 === void 0 ? void 0 : _this$otherParams12.channel,
875
+ businessCode: (_this$otherParams13 = this.otherParams) === null || _this$otherParams13 === void 0 ? void 0 : _this$otherParams13.businessCode,
876
+ orderType: ((_this$otherParams14 = this.otherParams) === null || _this$otherParams14 === void 0 ? void 0 : _this$otherParams14.orderType) || ((_this$otherParams15 = this.otherParams) === null || _this$otherParams15 === void 0 ? void 0 : _this$otherParams15.type),
877
+ strategy_context: (_this$otherParams16 = this.otherParams) === null || _this$otherParams16 === void 0 ? void 0 : _this$otherParams16.strategy_context
878
+ };
879
+ }
880
+
881
+ /** venue + addon 全量商品,供智能定价评估 */
882
+ }, {
883
+ key: "getAllProductsForSmartPricing",
884
+ value: function getAllProductsForSmartPricing() {
885
+ if (this.smartPricingProductCatalog.length) {
886
+ return this.smartPricingProductCatalog;
887
+ }
888
+ var venueList = this.getVenueProducts();
889
+ var addonList = this.getAddonProductsList();
890
+ return [].concat(_toConsumableArray(venueList), _toConsumableArray(addonList));
891
+ }
892
+ }, {
893
+ key: "getSlotPriceMapCacheKey",
894
+ value: function getSlotPriceMapCacheKey(date, context) {
895
+ var _context$customerId, _context$channel, _context$businessCode;
896
+ return [date, (_context$customerId = context.customerId) !== null && _context$customerId !== void 0 ? _context$customerId : '', (context.availableWalletIds || []).join(','), (_context$channel = context.channel) !== null && _context$channel !== void 0 ? _context$channel : '', (_context$businessCode = context.businessCode) !== null && _context$businessCode !== void 0 ? _context$businessCode : ''].join('|');
897
+ }
898
+
899
+ /**
900
+ * 按 schedule 分段构建 slot 价格 Map,带实例级缓存。
901
+ */
902
+ }, {
903
+ key: "buildSlotPriceMapForDate",
904
+ value: function buildSlotPriceMapForDate(date, config, productIds) {
905
+ var context = this.buildSmartPricingContext();
906
+ var cacheKey = this.getSlotPriceMapCacheKey(date, context);
907
+ var cached = this.slotPriceMapCache.get(cacheKey);
908
+ if (cached) return cached;
909
+ var timeLabels = generateTimeLabels(config);
910
+ var slotPriceMap = buildSlotPriceMapByScheduleSegments({
911
+ products: this.getAllProductsForSmartPricing(),
912
+ productIds: productIds,
913
+ date: date,
914
+ timeLabels: timeLabels,
915
+ config: config,
916
+ context: context
917
+ });
918
+ this.slotPriceMapCache.set(cacheKey, slotPriceMap);
919
+ return slotPriceMap;
920
+ }
921
+
817
922
  // ─── 场地商品 & 附加商品 ───
818
923
  }, {
819
924
  key: "loadAllProducts",
@@ -848,7 +953,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
848
953
  key: "_doLoadAllProducts",
849
954
  value: function () {
850
955
  var _doLoadAllProducts2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
851
- var _this$otherParams7, _this$store$venueProd, associatedMenus, menuListIds, allProducts, list, venueList, addonList, venueStore;
956
+ var _this$otherParams17, _this$store$venueProd, associatedMenus, menuListIds, allProducts, rawList, list, venueList, addonList, venueStore;
852
957
  return _regeneratorRuntime().wrap(function _callee11$(_context11) {
853
958
  while (1) switch (_context11.prev = _context11.next) {
854
959
  case 0:
@@ -869,7 +974,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
869
974
  _context11.next = 8;
870
975
  return this.loadOpenDataConfig();
871
976
  case 8:
872
- associatedMenus = ((_this$otherParams7 = this.otherParams) === null || _this$otherParams7 === void 0 || (_this$otherParams7 = _this$otherParams7.openData) === null || _this$otherParams7 === void 0 ? void 0 : _this$otherParams7['menu.associated_menus']) || [];
977
+ associatedMenus = ((_this$otherParams17 = this.otherParams) === null || _this$otherParams17 === void 0 || (_this$otherParams17 = _this$otherParams17.openData) === null || _this$otherParams17 === void 0 ? void 0 : _this$otherParams17['menu.associated_menus']) || [];
873
978
  if (associatedMenus.length) {
874
979
  _context11.next = 12;
875
980
  break;
@@ -885,11 +990,16 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
885
990
  menu_list_ids: menuListIds,
886
991
  cacheId: this.cacheId,
887
992
  schedule_date: dayjs().format('YYYY-MM-DD'),
888
- schedule_datetime: dayjs().format('YYYY-MM-DD HH:mm:ss')
993
+ schedule_datetime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
994
+ with_extra: ['dataVariants']
889
995
  });
890
996
  case 15:
891
997
  allProducts = _context11.sent;
892
- list = Array.isArray(allProducts) ? allProducts : [];
998
+ rawList = Array.isArray(allProducts) ? allProducts : [];
999
+ list = rawList;
1000
+ this.smartPricingProductCatalog = rawList.slice();
1001
+ list = formatProductsWithDataVariant(list, this.buildSmartPricingContext(), dayjs().format('YYYY-MM-DD HH:mm:ss'));
1002
+ this.clearSlotPriceMapCache();
893
1003
  venueList = list.filter(function (p) {
894
1004
  return p.duration != null;
895
1005
  });
@@ -915,16 +1025,16 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
915
1025
  venueProducts: venueList,
916
1026
  addonProducts: addonList
917
1027
  });
918
- case 28:
919
- _context11.prev = 28;
1028
+ case 32:
1029
+ _context11.prev = 32;
920
1030
  _context11.t0 = _context11["catch"](1);
921
1031
  this.logMethodError('loadAllProducts', _context11.t0);
922
1032
  throw _context11.t0;
923
- case 32:
1033
+ case 36:
924
1034
  case "end":
925
1035
  return _context11.stop();
926
1036
  }
927
- }, _callee11, this, [[1, 28]]);
1037
+ }, _callee11, this, [[1, 32]]);
928
1038
  }));
929
1039
  function _doLoadAllProducts() {
930
1040
  return _doLoadAllProducts2.apply(this, arguments);
@@ -1243,9 +1353,11 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1243
1353
  config: this.baseSlotConfig,
1244
1354
  rawResources: this.store.rawResourceData,
1245
1355
  resourceProductMap: this.resourceProductMap,
1246
- quotationModule: this.store.quotation,
1247
1356
  resolveConfig: function resolveConfig(date) {
1248
1357
  return _this6.resolveSlotConfigForDate(date);
1358
+ },
1359
+ buildSlotPriceMap: function buildSlotPriceMap(date, config, productIds) {
1360
+ return _this6.buildSlotPriceMapForDate(date, config, productIds);
1249
1361
  }
1250
1362
  });
1251
1363
  }
@@ -1253,26 +1365,16 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1253
1365
  key: "getTimeSlotGrid",
1254
1366
  value: function getTimeSlotGrid(date) {
1255
1367
  var resolvedSlotConfig = this.syncOperatingHoursToSlotConfig(date);
1256
- var quotationPriceMap;
1257
- if (this.store.quotation) {
1258
- var productIds = _toConsumableArray(new Set(_toConsumableArray(this.resourceProductMap.values()).flat().map(function (m) {
1259
- return m.productId;
1260
- })));
1261
- var timeLabels = generateTimeLabels(resolvedSlotConfig);
1262
- var timePoints = timeLabels.map(function (label) {
1263
- return "".concat(date, " ").concat(label);
1264
- });
1265
- quotationPriceMap = this.store.quotation.buildProductPriceMap({
1266
- productIds: productIds,
1267
- timePoints: timePoints
1268
- });
1269
- }
1368
+ var productIds = _toConsumableArray(new Set(_toConsumableArray(this.resourceProductMap.values()).flat().map(function (m) {
1369
+ return m.productId;
1370
+ })));
1371
+ var slotPriceMap = productIds.length ? this.buildSlotPriceMapForDate(date, resolvedSlotConfig, productIds) : undefined;
1270
1372
  return buildTimeSlotGrid({
1271
1373
  date: date,
1272
1374
  config: resolvedSlotConfig,
1273
1375
  rawResources: this.store.rawResourceData,
1274
1376
  resourceProductMap: this.resourceProductMap,
1275
- quotationPriceMap: quotationPriceMap
1377
+ slotPriceMap: slotPriceMap
1276
1378
  });
1277
1379
  }
1278
1380
 
@@ -1372,8 +1474,8 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1372
1474
  }, {
1373
1475
  key: "getSelectedSlotsForResource",
1374
1476
  value: function getSelectedSlotsForResource(resourceId, productId) {
1375
- var _this$store$order3;
1376
- var tempOrder = (_this$store$order3 = this.store.order) === null || _this$store$order3 === void 0 ? void 0 : _this$store$order3.getTempOrder();
1477
+ var _this$store$order4;
1478
+ var tempOrder = (_this$store$order4 = this.store.order) === null || _this$store$order4 === void 0 ? void 0 : _this$store$order4.getTempOrder();
1377
1479
  if (!tempOrder) return [];
1378
1480
  var venueProducts = tempOrder.products.filter(function (p) {
1379
1481
  var _p$metadata, _p$metadata2;
@@ -1534,9 +1636,9 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1534
1636
  }, {
1535
1637
  key: "getAllSelectedSlots",
1536
1638
  value: function getAllSelectedSlots() {
1537
- var _this$store$order4;
1639
+ var _this$store$order5;
1538
1640
  var result = new Map();
1539
- var tempOrder = (_this$store$order4 = this.store.order) === null || _this$store$order4 === void 0 ? void 0 : _this$store$order4.getTempOrder();
1641
+ var tempOrder = (_this$store$order5 = this.store.order) === null || _this$store$order5 === void 0 ? void 0 : _this$store$order5.getTempOrder();
1540
1642
  if (!tempOrder) return result;
1541
1643
  var venueProducts = tempOrder.products.filter(function (p) {
1542
1644
  var _p$metadata3;
@@ -1708,8 +1810,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1708
1810
  booking_uid: bookingUuid,
1709
1811
  price_breakdown: buildPriceBreakdown({
1710
1812
  group: group,
1711
- productId: mapping.productId,
1712
- quotation: this.store.quotation
1813
+ productId: mapping.productId
1713
1814
  })
1714
1815
  },
1715
1816
  _origin: {
@@ -1840,36 +1941,25 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1840
1941
  _context18.next = 6;
1841
1942
  return this.store.schedule.loadAllSchedule();
1842
1943
  case 6:
1843
- this.injectScheduleResolverToQuotation();
1844
1944
  this.logMethodSuccess('loadSchedules');
1845
- _context18.next = 14;
1945
+ _context18.next = 13;
1846
1946
  break;
1847
- case 10:
1848
- _context18.prev = 10;
1947
+ case 9:
1948
+ _context18.prev = 9;
1849
1949
  _context18.t0 = _context18["catch"](1);
1850
1950
  this.logMethodError('loadSchedules', _context18.t0);
1851
1951
  throw _context18.t0;
1852
- case 14:
1952
+ case 13:
1853
1953
  case "end":
1854
1954
  return _context18.stop();
1855
1955
  }
1856
- }, _callee18, this, [[1, 10]]);
1956
+ }, _callee18, this, [[1, 9]]);
1857
1957
  }));
1858
1958
  function loadSchedules() {
1859
1959
  return _loadSchedules.apply(this, arguments);
1860
1960
  }
1861
1961
  return loadSchedules;
1862
1962
  }()
1863
- }, {
1864
- key: "injectScheduleResolverToQuotation",
1865
- value: function injectScheduleResolverToQuotation() {
1866
- var _this9 = this;
1867
- if (this.store.quotation && this.store.schedule) {
1868
- this.store.quotation.setScheduleResolver(function (id) {
1869
- return _this9.store.schedule.getScheduleListByIds([id])[0];
1870
- });
1871
- }
1872
- }
1873
1963
  }, {
1874
1964
  key: "getScheduleListByIds",
1875
1965
  value: function getScheduleListByIds(ids) {
@@ -1881,8 +1971,8 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1881
1971
  }, {
1882
1972
  key: "getTempOrder",
1883
1973
  value: function getTempOrder() {
1884
- var _this$store$order5;
1885
- var result = ((_this$store$order5 = this.store.order) === null || _this$store$order5 === void 0 ? void 0 : _this$store$order5.getTempOrder()) || null;
1974
+ var _this$store$order6;
1975
+ var result = ((_this$store$order6 = this.store.order) === null || _this$store$order6 === void 0 ? void 0 : _this$store$order6.getTempOrder()) || null;
1886
1976
  return result;
1887
1977
  }
1888
1978
  }, {
@@ -1941,14 +2031,16 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1941
2031
  return onCustomerLogin;
1942
2032
  }()
1943
2033
  }, {
1944
- key: "recalculateOrderPricesFromQuotation",
1945
- value: function recalculateOrderPricesFromQuotation() {
2034
+ key: "recalculateOrderPricesFromSmartPricing",
2035
+ value: function recalculateOrderPricesFromSmartPricing() {
1946
2036
  var _tempOrder$products,
1947
- _this10 = this;
1948
- if (!this.store.order || !this.store.quotation) return;
2037
+ _this9 = this;
2038
+ if (!this.store.order) return;
1949
2039
  var tempOrder = this.store.order.getTempOrder();
1950
2040
  if (!(tempOrder !== null && tempOrder !== void 0 && (_tempOrder$products = tempOrder.products) !== null && _tempOrder$products !== void 0 && _tempOrder$products.length)) return;
1951
2041
  var now = dayjs().format('YYYY-MM-DD HH:mm:ss');
2042
+ var catalog = this.getAllProductsForSmartPricing();
2043
+ var context = this.buildSmartPricingContext();
1952
2044
  var _iterator12 = _createForOfIteratorHelper(tempOrder.products),
1953
2045
  _step12;
1954
2046
  try {
@@ -1956,44 +2048,65 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
1956
2048
  var _product$metadata2;
1957
2049
  var product = _step12.value;
1958
2050
  if ((_product$metadata2 = product.metadata) !== null && _product$metadata2 !== void 0 && _product$metadata2.venue_booking) {
1959
- var mappings = _this10.resourceProductMap.get(product.metadata.resource_id);
2051
+ var mappings = _this9.resourceProductMap.get(product.metadata.resource_id);
1960
2052
  if (!mappings || !mappings.length) return 0; // continue
1961
2053
  var mapping = mappings.find(function (m) {
1962
2054
  return Number(m.productId) === Number(product.product_id);
1963
2055
  }) || mappings[0];
1964
2056
  if (!mapping) return 0; // continue
1965
- var slots = expandMergedSlotToIndividual(product, _this10.store.slotConfig.slotDurationMinutes);
2057
+ var slots = expandMergedSlotToIndividual(product, _this9.store.slotConfig.slotDurationMinutes);
2058
+ var uniqueDates = _toConsumableArray(new Set(slots.map(function (slot) {
2059
+ return dayjs(slot.startTime).format('YYYY-MM-DD');
2060
+ })));
2061
+ var slotPriceMaps = new Map();
2062
+ var _iterator13 = _createForOfIteratorHelper(uniqueDates),
2063
+ _step13;
2064
+ try {
2065
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
2066
+ var slotDate = _step13.value;
2067
+ slotPriceMaps.set(slotDate, _this9.buildSlotPriceMapForDate(slotDate, _this9.store.slotConfig, [mapping.productId]));
2068
+ }
2069
+ } catch (err) {
2070
+ _iterator13.e(err);
2071
+ } finally {
2072
+ _iterator13.f();
2073
+ }
1966
2074
  var updatedSlots = slots.map(function (slot) {
1967
- var _getPriceForProduct;
2075
+ var slotDate = dayjs(slot.startTime).format('YYYY-MM-DD');
2076
+ var slotPriceMap = slotPriceMaps.get(slotDate);
1968
2077
  return _objectSpread(_objectSpread({}, slot), {}, {
1969
2078
  productId: mapping.productId,
1970
- price: (_getPriceForProduct = _this10.store.quotation.getPriceForProduct({
2079
+ price: slotPriceMap ? getSlotPriceFromMap({
2080
+ slotPriceMap: slotPriceMap,
1971
2081
  productId: mapping.productId,
1972
- datetime: slot.startTime
1973
- })) !== null && _getPriceForProduct !== void 0 ? _getPriceForProduct : mapping.price
2082
+ slotStartTime: slot.startTime,
2083
+ fallbackPrice: mapping.price
2084
+ }) : mapping.price
1974
2085
  });
1975
2086
  });
1976
2087
  var merged = mergeConsecutiveSlots(updatedSlots);
1977
2088
  if (merged.length === 1) {
1978
- product.selling_price = merged[0].totalPrice;
1979
- product.original_price = merged[0].totalPrice;
1980
- product.metadata.price_breakdown = buildPriceBreakdown({
1981
- group: merged[0],
1982
- productId: mapping.productId,
1983
- quotation: _this10.store.quotation
2089
+ _this9.resetProductPriceForSmartPricing({
2090
+ product: product,
2091
+ price: merged[0].totalPrice,
2092
+ priceBreakdown: buildPriceBreakdown({
2093
+ group: merged[0],
2094
+ productId: mapping.productId
2095
+ })
1984
2096
  });
1985
2097
  }
1986
2098
  } else if (product.product_id != null) {
1987
- var _product$product_vari;
1988
- var quotationPrice = _this10.store.quotation.getPriceForProduct({
1989
- productId: product.product_id,
1990
- variantId: (_product$product_vari = product.product_variant_id) !== null && _product$product_vari !== void 0 ? _product$product_vari : undefined,
1991
- datetime: now
2099
+ var smartPrice = getPriceForProductAtDatetime({
2100
+ products: catalog,
2101
+ context: context,
2102
+ productId: Number(product.product_id),
2103
+ datetime: now,
2104
+ fallbackPrice: product.selling_price
2105
+ });
2106
+ _this9.resetProductPriceForSmartPricing({
2107
+ product: product,
2108
+ price: smartPrice
1992
2109
  });
1993
- if (quotationPrice !== null) {
1994
- product.selling_price = quotationPrice;
1995
- product.original_price = quotationPrice;
1996
- }
1997
2110
  }
1998
2111
  },
1999
2112
  _ret;
@@ -2007,6 +2120,30 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2007
2120
  _iterator12.f();
2008
2121
  }
2009
2122
  }
2123
+
2124
+ /**
2125
+ * DataVariant 重算价格后,同步刷新订单展示、Rules 与 Summary 共用的价格口径。
2126
+ * Rules 会在本轮结束后根据当前客户的 discountList 重新写入实际折扣。
2127
+ */
2128
+ }, {
2129
+ key: "resetProductPriceForSmartPricing",
2130
+ value: function resetProductPriceForSmartPricing(params) {
2131
+ var product = params.product,
2132
+ price = params.price,
2133
+ priceBreakdown = params.priceBreakdown;
2134
+ var metadata = product.metadata || {};
2135
+ product.selling_price = price;
2136
+ product.original_price = price;
2137
+ product.discount_list = [];
2138
+ product.metadata = _objectSpread(_objectSpread(_objectSpread({}, metadata), priceBreakdown ? {
2139
+ price_breakdown: priceBreakdown
2140
+ } : {}), {}, {
2141
+ source_product_price: price,
2142
+ main_product_original_price: price,
2143
+ main_product_selling_price: price,
2144
+ price_schema_version: 2
2145
+ });
2146
+ }
2010
2147
  }, {
2011
2148
  key: "scanCode",
2012
2149
  value: function () {
@@ -2072,7 +2209,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2072
2209
  key: "setDiscountSelected",
2073
2210
  value: (function () {
2074
2211
  var _setDiscountSelected = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee21(params) {
2075
- var _tempOrder$holder, _this$store$order$get, _this$store$order$get2, list, beforeTarget, updated, updatedTarget, tempOrder, orderStore, discountModule, rulesModule, holders, nextDiscountList, _tempOrder$holder2, result, beforeSelectedIds, _iterator13, _step13, d, selectedResourceIds, _iterator14, _step14, _product$_origin, _product$metadata$sou, _product$metadata3, _product$metadata4, _product$original_pri, product, totalPerUnitDiscount, optionSum, sourcePrice, newSourceSellingPrice, newMainSellingPrice, afterApplyTarget, finalSummary, finalProduct, finalTarget;
2212
+ var _tempOrder$holder, _this$store$order$get, _this$store$order$get2, list, beforeTarget, updated, updatedTarget, tempOrder, orderStore, discountModule, rulesModule, holders, nextDiscountList, _tempOrder$holder2, result, beforeSelectedIds, _iterator14, _step14, d, afterApplyTarget, finalSummary, finalProduct, finalTarget;
2076
2213
  return _regeneratorRuntime().wrap(function _callee21$(_context21) {
2077
2214
  while (1) switch (_context21.prev = _context21.next) {
2078
2215
  case 0:
@@ -2132,99 +2269,38 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2132
2269
  }).map(function (d) {
2133
2270
  return d.id;
2134
2271
  }));
2135
- _iterator13 = _createForOfIteratorHelper(nextDiscountList);
2272
+ _iterator14 = _createForOfIteratorHelper(nextDiscountList);
2136
2273
  try {
2137
- for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
2138
- d = _step13.value;
2274
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
2275
+ d = _step14.value;
2139
2276
  if (d.isSelected && !beforeSelectedIds.has(d.id)) {
2140
2277
  d.isSelected = false;
2141
2278
  }
2142
2279
  }
2143
2280
  } catch (err) {
2144
- _iterator13.e(err);
2281
+ _iterator14.e(err);
2145
2282
  } finally {
2146
- _iterator13.f();
2283
+ _iterator14.f();
2147
2284
  }
2148
2285
  }
2149
2286
  }
2150
2287
  }
2151
- selectedResourceIds = new Set(nextDiscountList.filter(function (d) {
2152
- return d.isSelected;
2153
- }).map(function (d) {
2154
- return d.id;
2155
- })); // 无条件归一化:不论 Rules 是否清空 discount_list、长度是否变化,
2156
- // 都以 original_price - Σ (当前选中 discount_list.amount) 重算 selling_price。
2157
- // 目的:避免 unselect 后 selling_price 残留、reselect 时把残留价带进下一轮 Rules 造成双折扣。
2158
- // 手动改价商品(_origin.isManualDiscount=true)不参与券流程归一化,保留手工价。
2159
- _iterator14 = _createForOfIteratorHelper(tempOrder.products);
2160
- _context21.prev = 19;
2161
- _iterator14.s();
2162
- case 21:
2163
- if ((_step14 = _iterator14.n()).done) {
2164
- _context21.next = 35;
2165
- break;
2166
- }
2167
- product = _step14.value;
2168
- if (!((_product$_origin = product._origin) !== null && _product$_origin !== void 0 && _product$_origin.isManualDiscount)) {
2169
- _context21.next = 25;
2170
- break;
2171
- }
2172
- return _context21.abrupt("continue", 33);
2173
- case 25:
2174
- // 1. 把 product.discount_list 和当前选中的 discount 对齐(剔除已取消的券)
2175
- product.discount_list = (product.discount_list || []).filter(function (pd) {
2176
- var _pd$discount$resource, _pd$discount;
2177
- var rid = (_pd$discount$resource = (_pd$discount = pd.discount) === null || _pd$discount === void 0 ? void 0 : _pd$discount.resource_id) !== null && _pd$discount$resource !== void 0 ? _pd$discount$resource : pd.id;
2178
- return rid != null && selectedResourceIds.has(rid);
2179
- });
2180
-
2181
- // 2. 以 source_product_price 为券作用基准:券作用于 source(不含 option),
2182
- // 再把 option 加回得到含 option 的 main_product_selling_price,最后合成 composite。
2183
- totalPerUnitDiscount = (product.discount_list || []).reduce(function (sum, pd) {
2184
- return sum + (pd.amount || 0);
2185
- }, 0);
2186
- optionSum = sumOptionUnitPrice(product.product_option_item);
2187
- sourcePrice = (_product$metadata$sou = (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.source_product_price) !== null && _product$metadata$sou !== void 0 ? _product$metadata$sou : ((_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
2188
- newSourceSellingPrice = new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount).toDecimalPlaces(2).toString();
2189
- newMainSellingPrice = new Decimal(Number(newSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
2190
- if (product.metadata) {
2191
- product.metadata.main_product_selling_price = newMainSellingPrice;
2192
- product.metadata.price_schema_version = 2;
2193
- }
2194
- product.selling_price = composeLinePrice({
2195
- mainPrice: newMainSellingPrice,
2196
- bundle: product.product_bundle
2197
- });
2198
- case 33:
2199
- _context21.next = 21;
2200
- break;
2201
- case 35:
2202
- _context21.next = 40;
2203
- break;
2204
- case 37:
2205
- _context21.prev = 37;
2206
- _context21.t0 = _context21["catch"](19);
2207
- _iterator14.e(_context21.t0);
2208
- case 40:
2209
- _context21.prev = 40;
2210
- _iterator14.f();
2211
- return _context21.finish(40);
2212
- case 43:
2288
+ this.normalizeDiscountedOrderPrices(nextDiscountList);
2213
2289
  OrderModule.populateSavedAmounts(tempOrder.products, nextDiscountList);
2214
- _context21.next = 46;
2290
+ _context21.next = 21;
2215
2291
  return discountModule === null || discountModule === void 0 ? void 0 : discountModule.setDiscountList(nextDiscountList);
2216
- case 46:
2292
+ case 21:
2217
2293
  tempOrder.discount_list = (nextDiscountList || []).filter(function (d) {
2218
2294
  return d.isSelected;
2219
2295
  });
2220
2296
  afterApplyTarget = this.store.order.getDiscountList().find(function (d) {
2221
2297
  return d.id === params.discountId;
2222
2298
  }) || null;
2223
- _context21.next = 50;
2299
+ _context21.next = 25;
2224
2300
  return this.store.order.recalculateSummary({
2225
2301
  createIfMissing: true
2226
2302
  });
2227
- case 50:
2303
+ case 25:
2228
2304
  this.store.order.persistTempOrder();
2229
2305
  finalSummary = ((_this$store$order$get = this.store.order.getTempOrder()) === null || _this$store$order$get === void 0 ? void 0 : _this$store$order$get.summary) || null;
2230
2306
  finalProduct = ((_this$store$order$get2 = this.store.order.getTempOrder()) === null || _this$store$order$get2 === void 0 || (_this$store$order$get2 = _this$store$order$get2.products) === null || _this$store$order$get2 === void 0 ? void 0 : _this$store$order$get2[0]) || null;
@@ -2233,22 +2309,78 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2233
2309
  return d.id === params.discountId;
2234
2310
  }) || null;
2235
2311
  return _context21.abrupt("return", this.store.order.getDiscountList());
2236
- case 58:
2237
- _context21.prev = 58;
2238
- _context21.t1 = _context21["catch"](1);
2239
- this.logMethodError('setDiscountSelected', _context21.t1);
2240
- throw _context21.t1;
2241
- case 62:
2312
+ case 33:
2313
+ _context21.prev = 33;
2314
+ _context21.t0 = _context21["catch"](1);
2315
+ this.logMethodError('setDiscountSelected', _context21.t0);
2316
+ throw _context21.t0;
2317
+ case 37:
2242
2318
  case "end":
2243
2319
  return _context21.stop();
2244
2320
  }
2245
- }, _callee21, this, [[1, 58], [19, 37, 40, 43]]);
2321
+ }, _callee21, this, [[1, 33]]);
2246
2322
  }));
2247
2323
  function setDiscountSelected(_x15) {
2248
2324
  return _setDiscountSelected.apply(this, arguments);
2249
2325
  }
2250
2326
  return setDiscountSelected;
2251
- }())
2327
+ }()
2328
+ /**
2329
+ * 统一 VenueBooking 折扣后的订单行价。
2330
+ *
2331
+ * Rules 的 `discount_list.amount` 是已经按适用规则计算出的每件优惠额;它是这里唯一
2332
+ * 的折扣金额来源。使用智能定价写入的 source_product_price 减去该金额,再同步
2333
+ * selling_price 与 Summary 使用的 main_product_selling_price,避免 UI 的购物车行价、
2334
+ * 小计和提交订单各自读取到不同的价格字段。
2335
+ */
2336
+ )
2337
+ }, {
2338
+ key: "normalizeDiscountedOrderPrices",
2339
+ value: function normalizeDiscountedOrderPrices(discountList) {
2340
+ var order = this.store.order;
2341
+ if (!order) return;
2342
+ var tempOrder = order.ensureTempOrder();
2343
+ var selectedResourceIds = new Set((discountList || []).filter(function (discount) {
2344
+ return discount.isSelected;
2345
+ }).map(function (discount) {
2346
+ return discount.id;
2347
+ }));
2348
+ var _iterator15 = _createForOfIteratorHelper(tempOrder.products),
2349
+ _step15;
2350
+ try {
2351
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
2352
+ var _product$_origin, _metadata$source_prod, _product$original_pri;
2353
+ var product = _step15.value;
2354
+ // 手动改价商品不参与券流程归一化,保留手工价格。
2355
+ if ((_product$_origin = product._origin) !== null && _product$_origin !== void 0 && _product$_origin.isManualDiscount) continue;
2356
+
2357
+ // Rules 可能保留已取消折扣的明细;先使行级明细和当前选择状态一致。
2358
+ product.discount_list = (product.discount_list || []).filter(function (detail) {
2359
+ var _detail$discount$reso, _detail$discount;
2360
+ var resourceId = (_detail$discount$reso = (_detail$discount = detail.discount) === null || _detail$discount === void 0 ? void 0 : _detail$discount.resource_id) !== null && _detail$discount$reso !== void 0 ? _detail$discount$reso : detail.id;
2361
+ return resourceId != null && selectedResourceIds.has(resourceId);
2362
+ });
2363
+ var totalPerUnitDiscount = (product.discount_list || []).reduce(function (total, detail) {
2364
+ return total.plus(detail.amount || 0);
2365
+ }, new Decimal(0));
2366
+ var metadata = product.metadata || (product.metadata = {});
2367
+ var optionSum = sumOptionUnitPrice(product.product_option_item);
2368
+ var sourcePrice = (_metadata$source_prod = metadata.source_product_price) !== null && _metadata$source_prod !== void 0 ? _metadata$source_prod : metadata.main_product_original_price != null ? new Decimal(Number(metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
2369
+ var nextSourceSellingPrice = Decimal.max(0, new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount)).toDecimalPlaces(2).toString();
2370
+ var nextMainSellingPrice = new Decimal(Number(nextSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
2371
+ metadata.main_product_selling_price = nextMainSellingPrice;
2372
+ metadata.price_schema_version = 2;
2373
+ product.selling_price = composeLinePrice({
2374
+ mainPrice: nextMainSellingPrice,
2375
+ bundle: product.product_bundle
2376
+ });
2377
+ }
2378
+ } catch (err) {
2379
+ _iterator15.e(err);
2380
+ } finally {
2381
+ _iterator15.f();
2382
+ }
2383
+ }
2252
2384
  }, {
2253
2385
  key: "addNewOrder",
2254
2386
  value: function () {
@@ -2339,7 +2471,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2339
2471
  key: "submitOrder",
2340
2472
  value: function () {
2341
2473
  var _submitOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {
2342
- var _this$otherParams8, _this$otherParams9, _this$otherParams10, _this$otherParams11, _tempOrder$products2, result, tempOrder;
2474
+ var _this$otherParams18, _this$otherParams19, _this$otherParams20, _this$otherParams21, _tempOrder$products2, result, tempOrder;
2343
2475
  return _regeneratorRuntime().wrap(function _callee24$(_context24) {
2344
2476
  while (1) switch (_context24.prev = _context24.next) {
2345
2477
  case 0:
@@ -2357,10 +2489,10 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2357
2489
  _context24.next = 8;
2358
2490
  return this.store.order.submitTempOrder({
2359
2491
  cacheId: this.cacheId,
2360
- platform: (_this$otherParams8 = this.otherParams) === null || _this$otherParams8 === void 0 ? void 0 : _this$otherParams8.platform,
2361
- businessCode: (_this$otherParams9 = this.otherParams) === null || _this$otherParams9 === void 0 ? void 0 : _this$otherParams9.businessCode,
2362
- channel: (_this$otherParams10 = this.otherParams) === null || _this$otherParams10 === void 0 ? void 0 : _this$otherParams10.channel,
2363
- type: (_this$otherParams11 = this.otherParams) === null || _this$otherParams11 === void 0 ? void 0 : _this$otherParams11.type
2492
+ platform: (_this$otherParams18 = this.otherParams) === null || _this$otherParams18 === void 0 ? void 0 : _this$otherParams18.platform,
2493
+ businessCode: (_this$otherParams19 = this.otherParams) === null || _this$otherParams19 === void 0 ? void 0 : _this$otherParams19.businessCode,
2494
+ channel: (_this$otherParams20 = this.otherParams) === null || _this$otherParams20 === void 0 ? void 0 : _this$otherParams20.channel,
2495
+ type: (_this$otherParams21 = this.otherParams) === null || _this$otherParams21 === void 0 ? void 0 : _this$otherParams21.type
2364
2496
  });
2365
2497
  case 8:
2366
2498
  result = _context24.sent;
@@ -2436,7 +2568,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2436
2568
  key: "addProductToOrder",
2437
2569
  value: function () {
2438
2570
  var _addProductToOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee26(product) {
2439
- var _product$metadata5, _product$product_vari2, quotationPrice, products;
2571
+ var _product$metadata3, _product$metadata4, smartPrice, products;
2440
2572
  return _regeneratorRuntime().wrap(function _callee26$(_context26) {
2441
2573
  while (1) switch (_context26.prev = _context26.next) {
2442
2574
  case 0:
@@ -2451,18 +2583,18 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2451
2583
  }
2452
2584
  throw new Error('order 模块未初始化');
2453
2585
  case 4:
2454
- if (!((_product$metadata5 = product.metadata) !== null && _product$metadata5 !== void 0 && _product$metadata5.venue_booking) && this.store.quotation && product.product_id != null) {
2455
- quotationPrice = this.store.quotation.getPriceForProduct({
2456
- productId: product.product_id,
2457
- variantId: (_product$product_vari2 = product.product_variant_id) !== null && _product$product_vari2 !== void 0 ? _product$product_vari2 : undefined,
2458
- datetime: dayjs().format('YYYY-MM-DD HH:mm:ss')
2586
+ if (!((_product$metadata3 = product.metadata) !== null && _product$metadata3 !== void 0 && _product$metadata3.venue_booking) && product.product_id != null) {
2587
+ smartPrice = getPriceForProductAtDatetime({
2588
+ products: this.getAllProductsForSmartPricing(),
2589
+ context: this.buildSmartPricingContext(),
2590
+ productId: Number(product.product_id),
2591
+ datetime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
2592
+ fallbackPrice: product.selling_price
2459
2593
  });
2460
- if (quotationPrice !== null) {
2461
- product.selling_price = quotationPrice;
2462
- product.original_price = quotationPrice;
2463
- } else if (product.selling_price != null) {
2464
- product.original_price = product.selling_price;
2465
- }
2594
+ product.selling_price = smartPrice;
2595
+ product.original_price = smartPrice;
2596
+ } else if (product.selling_price != null && !((_product$metadata4 = product.metadata) !== null && _product$metadata4 !== void 0 && _product$metadata4.venue_booking)) {
2597
+ product.original_price = product.selling_price;
2466
2598
  }
2467
2599
  _context26.next = 7;
2468
2600
  return this.store.order.addProductToOrder(product);
@@ -2547,7 +2679,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2547
2679
  key: "removeProductFromOrder",
2548
2680
  value: function () {
2549
2681
  var _removeProductFromOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee28(identity) {
2550
- var _this$store$order$get3, _this$store$order6, _this$store$order$ens, _this$store$order7, _tempOrder$bookings, tempOrder, products, _tempOrder$bookings2, _tempOrder$bookings3, venueProductUids, venueBookingUids, _iterator15, _step15, _product$metadata6, _product$metadata7, product, beforeBookingCount, _this$store$order$per, _this$store$order8;
2682
+ var _this$store$order$get3, _this$store$order7, _this$store$order$ens, _this$store$order8, _tempOrder$bookings, tempOrder, products, _tempOrder$bookings2, _tempOrder$bookings3, venueProductUids, venueBookingUids, _iterator16, _step16, _product$metadata5, _product$metadata6, product, beforeBookingCount, _this$store$order$per, _this$store$order9;
2551
2683
  return _regeneratorRuntime().wrap(function _callee28$(_context28) {
2552
2684
  while (1) switch (_context28.prev = _context28.next) {
2553
2685
  case 0:
@@ -2562,7 +2694,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2562
2694
  }
2563
2695
  throw new Error('order 模块未初始化');
2564
2696
  case 4:
2565
- tempOrder = ((_this$store$order$get3 = (_this$store$order6 = this.store.order).getTempOrder) === null || _this$store$order$get3 === void 0 ? void 0 : _this$store$order$get3.call(_this$store$order6)) || ((_this$store$order$ens = (_this$store$order7 = this.store.order).ensureTempOrder) === null || _this$store$order$ens === void 0 ? void 0 : _this$store$order$ens.call(_this$store$order7));
2697
+ tempOrder = ((_this$store$order$get3 = (_this$store$order7 = this.store.order).getTempOrder) === null || _this$store$order$get3 === void 0 ? void 0 : _this$store$order$get3.call(_this$store$order7)) || ((_this$store$order$ens = (_this$store$order8 = this.store.order).ensureTempOrder) === null || _this$store$order$ens === void 0 ? void 0 : _this$store$order$ens.call(_this$store$order8));
2566
2698
  _context28.next = 7;
2567
2699
  return this.store.order.removeProductFromOrder(identity);
2568
2700
  case 7:
@@ -2573,23 +2705,23 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2573
2705
  }
2574
2706
  venueProductUids = new Set();
2575
2707
  venueBookingUids = new Set();
2576
- _iterator15 = _createForOfIteratorHelper(tempOrder.products || []);
2708
+ _iterator16 = _createForOfIteratorHelper(tempOrder.products || []);
2577
2709
  _context28.prev = 12;
2578
- _iterator15.s();
2710
+ _iterator16.s();
2579
2711
  case 14:
2580
- if ((_step15 = _iterator15.n()).done) {
2712
+ if ((_step16 = _iterator16.n()).done) {
2581
2713
  _context28.next = 22;
2582
2714
  break;
2583
2715
  }
2584
- product = _step15.value;
2585
- if (product !== null && product !== void 0 && (_product$metadata6 = product.metadata) !== null && _product$metadata6 !== void 0 && _product$metadata6.venue_booking) {
2716
+ product = _step16.value;
2717
+ if (product !== null && product !== void 0 && (_product$metadata5 = product.metadata) !== null && _product$metadata5 !== void 0 && _product$metadata5.venue_booking) {
2586
2718
  _context28.next = 18;
2587
2719
  break;
2588
2720
  }
2589
2721
  return _context28.abrupt("continue", 20);
2590
2722
  case 18:
2591
2723
  if (product.identity_key) venueProductUids.add(String(product.identity_key));
2592
- if ((_product$metadata7 = product.metadata) !== null && _product$metadata7 !== void 0 && _product$metadata7.booking_uid) {
2724
+ if ((_product$metadata6 = product.metadata) !== null && _product$metadata6 !== void 0 && _product$metadata6.booking_uid) {
2593
2725
  venueBookingUids.add(String(product.metadata.booking_uid));
2594
2726
  }
2595
2727
  case 20:
@@ -2601,10 +2733,10 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2601
2733
  case 24:
2602
2734
  _context28.prev = 24;
2603
2735
  _context28.t0 = _context28["catch"](12);
2604
- _iterator15.e(_context28.t0);
2736
+ _iterator16.e(_context28.t0);
2605
2737
  case 27:
2606
2738
  _context28.prev = 27;
2607
- _iterator15.f();
2739
+ _iterator16.f();
2608
2740
  return _context28.finish(27);
2609
2741
  case 30:
2610
2742
  beforeBookingCount = ((_tempOrder$bookings2 = tempOrder.bookings) === null || _tempOrder$bookings2 === void 0 ? void 0 : _tempOrder$bookings2.length) || 0;
@@ -2619,7 +2751,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2619
2751
  return true;
2620
2752
  });
2621
2753
  if ((((_tempOrder$bookings3 = tempOrder.bookings) === null || _tempOrder$bookings3 === void 0 ? void 0 : _tempOrder$bookings3.length) || 0) !== beforeBookingCount) {
2622
- (_this$store$order$per = (_this$store$order8 = this.store.order).persistTempOrder) === null || _this$store$order$per === void 0 || _this$store$order$per.call(_this$store$order8);
2754
+ (_this$store$order$per = (_this$store$order9 = this.store.order).persistTempOrder) === null || _this$store$order$per === void 0 || _this$store$order$per.call(_this$store$order9);
2623
2755
  }
2624
2756
  case 33:
2625
2757
  _context28.next = 35;
@@ -2852,17 +2984,17 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2852
2984
  if (visited.has(value)) return;
2853
2985
  visited.add(value);
2854
2986
  if (Array.isArray(value)) {
2855
- var _iterator16 = _createForOfIteratorHelper(value),
2856
- _step16;
2987
+ var _iterator17 = _createForOfIteratorHelper(value),
2988
+ _step17;
2857
2989
  try {
2858
- for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
2859
- var item = _step16.value;
2990
+ for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
2991
+ var item = _step17.value;
2860
2992
  collectFromValue(item);
2861
2993
  }
2862
2994
  } catch (err) {
2863
- _iterator16.e(err);
2995
+ _iterator17.e(err);
2864
2996
  } finally {
2865
- _iterator16.f();
2997
+ _iterator17.f();
2866
2998
  }
2867
2999
  return;
2868
3000
  }
@@ -2910,7 +3042,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2910
3042
  key: "ensureItemRuleConfigsLoaded",
2911
3043
  value: function () {
2912
3044
  var _ensureItemRuleConfigsLoaded = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {
2913
- var _this11 = this;
3045
+ var _this10 = this;
2914
3046
  return _regeneratorRuntime().wrap(function _callee35$(_context35) {
2915
3047
  while (1) switch (_context35.prev = _context35.next) {
2916
3048
  case 0:
@@ -2931,19 +3063,19 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2931
3063
  return _regeneratorRuntime().wrap(function _callee34$(_context34) {
2932
3064
  while (1) switch (_context34.prev = _context34.next) {
2933
3065
  case 0:
2934
- runtimeConfig = _this11.getItemRuleRuntimeConfig();
3066
+ runtimeConfig = _this10.getItemRuleRuntimeConfig();
2935
3067
  staticConfigs = normalizeItemRuleStrategies(runtimeConfig.strategyConfigs);
2936
3068
  if (!(staticConfigs.length > 0)) {
2937
3069
  _context34.next = 6;
2938
3070
  break;
2939
3071
  }
2940
- _this11.itemRuleConfigs = staticConfigs;
2941
- _this11.itemRuleEvaluator.setStrategyConfigs(staticConfigs);
2942
- return _context34.abrupt("return", _this11.itemRuleConfigs);
3072
+ _this10.itemRuleConfigs = staticConfigs;
3073
+ _this10.itemRuleEvaluator.setStrategyConfigs(staticConfigs);
3074
+ return _context34.abrupt("return", _this10.itemRuleConfigs);
2943
3075
  case 6:
2944
- _this11.itemRuleConfigs = [];
2945
- _this11.itemRuleEvaluator.setStrategyConfigs([]);
2946
- return _context34.abrupt("return", _this11.itemRuleConfigs);
3076
+ _this10.itemRuleConfigs = [];
3077
+ _this10.itemRuleEvaluator.setStrategyConfigs([]);
3078
+ return _context34.abrupt("return", _this10.itemRuleConfigs);
2947
3079
  case 9:
2948
3080
  case "end":
2949
3081
  return _context34.stop();
@@ -3017,7 +3149,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
3017
3149
  key: "applyPrefillByItemRule",
3018
3150
  value: function () {
3019
3151
  var _applyPrefillByItemRule = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {
3020
- var strategyConfigs, businessData, prefillItems, productSourceMap, tempOrder, hasChanges, _iterator17, _step17, _prefillItem$product_, _targetProduct$_origi, prefillItem, productId, productVariantId, targetQuantity, sourceItem, productIndex, _sourceItem$price, sellingPrice, targetProduct, existedQuantity, delta, nextProduct;
3152
+ var strategyConfigs, businessData, prefillItems, productSourceMap, tempOrder, hasChanges, _iterator18, _step18, _prefillItem$product_, _targetProduct$_origi, prefillItem, productId, productVariantId, targetQuantity, sourceItem, productIndex, _sourceItem$price, sellingPrice, targetProduct, existedQuantity, delta, nextProduct;
3021
3153
  return _regeneratorRuntime().wrap(function _callee37$(_context37) {
3022
3154
  while (1) switch (_context37.prev = _context37.next) {
3023
3155
  case 0:
@@ -3062,15 +3194,15 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
3062
3194
  productSourceMap = _context37.sent;
3063
3195
  tempOrder = this.ensureTempOrder();
3064
3196
  hasChanges = false;
3065
- _iterator17 = _createForOfIteratorHelper(prefillItems);
3197
+ _iterator18 = _createForOfIteratorHelper(prefillItems);
3066
3198
  _context37.prev = 20;
3067
- _iterator17.s();
3199
+ _iterator18.s();
3068
3200
  case 22:
3069
- if ((_step17 = _iterator17.n()).done) {
3201
+ if ((_step18 = _iterator18.n()).done) {
3070
3202
  _context37.next = 45;
3071
3203
  break;
3072
3204
  }
3073
- prefillItem = _step17.value;
3205
+ prefillItem = _step18.value;
3074
3206
  productId = Number(prefillItem.product_id);
3075
3207
  productVariantId = Number((_prefillItem$product_ = prefillItem.product_variant_id) !== null && _prefillItem$product_ !== void 0 ? _prefillItem$product_ : 0);
3076
3208
  targetQuantity = toNonNegativeInt(prefillItem.quantity);
@@ -3139,10 +3271,10 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
3139
3271
  case 47:
3140
3272
  _context37.prev = 47;
3141
3273
  _context37.t0 = _context37["catch"](20);
3142
- _iterator17.e(_context37.t0);
3274
+ _iterator18.e(_context37.t0);
3143
3275
  case 50:
3144
3276
  _context37.prev = 50;
3145
- _iterator17.f();
3277
+ _iterator18.f();
3146
3278
  return _context37.finish(50);
3147
3279
  case 53:
3148
3280
  if (!hasChanges) {
@@ -3404,7 +3536,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
3404
3536
  var raw = this.window.sessionStorage.getItem(key) || '{}';
3405
3537
  var parsed = JSON.parse(raw);
3406
3538
  return parsed && _typeof(parsed) === 'object' ? parsed : {};
3407
- } catch (_unused3) {
3539
+ } catch (_unused4) {
3408
3540
  return {};
3409
3541
  }
3410
3542
  }
@@ -3516,4 +3648,5 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
3516
3648
  return VenueBookingImpl;
3517
3649
  }(BaseModule);
3518
3650
  _defineProperty(VenueBookingImpl, "OPEN_DATA_CACHE_TTL", 5 * 60 * 1000);
3651
+ _defineProperty(VenueBookingImpl, "PISELL1_LOGIN_SUCCESS", 'pisell1.login.success');
3519
3652
  _defineProperty(VenueBookingImpl, "UI_STATE_KEY_PREFIX", 'pisell.venueBooking.uiState:');