@pisell/private-materials 6.11.645 → 6.11.646

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 (44) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/meta.js +1 -1
  5. package/build/lowcode/preview.js +1 -1
  6. package/build/lowcode/render/default/view.js +18 -18
  7. package/build/lowcode/view.js +18 -18
  8. package/es/components/bigSale/index.js +1 -0
  9. package/es/components/bigSale/templates/Kiosk/index.js +104 -47
  10. package/es/components/kioskSale/index.js +1 -1
  11. package/es/plus/salesSdk/bookingEditService/BookingEditHolderField.js +6 -6
  12. package/es/plus/salesSdk/components/SalesSdkConfirmHolderModal.js +2 -4
  13. package/es/plus/salesSdk/context/SalesSdkCartContext.js +28 -21
  14. package/es/plus/salesSdk/context/SalesSdkHolderContext.js +104 -22
  15. package/es/plus/salesSdk/context/SalesSdkProvider.js +3 -12
  16. package/es/plus/salesSdk/hosts/ConfirmHolderHostRenderer.js +14 -5
  17. package/es/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +5 -2
  18. package/es/plus/salesSdk/types.d.ts +16 -1
  19. package/es/plus/salesSdk/utils/customerAuthGate.js +1 -4
  20. package/es/plus/salesSdk/utils/enrichCacheItemBeforeAdd.js +1 -1
  21. package/es/plus/salesSdk/utils/ensureCustomerAuthBeforeAdd.js +6 -6
  22. package/es/plus/salesSdk/utils/holderSubmitValidation.js +3 -4
  23. package/es/plus/salesSdk/utils/productHolderConfig.js +3 -17
  24. package/es/plus/salesSdk/utils/runAddProductFlow.js +14 -5
  25. package/es/pro/skuDetailModal/flow/modules/holder/index.js +4 -1
  26. package/lib/components/bigSale/index.js +1 -0
  27. package/lib/components/bigSale/templates/Kiosk/index.js +104 -47
  28. package/lib/components/kioskSale/index.js +1 -1
  29. package/lib/plus/salesSdk/bookingEditService/BookingEditHolderField.js +5 -5
  30. package/lib/plus/salesSdk/components/SalesSdkConfirmHolderModal.js +2 -4
  31. package/lib/plus/salesSdk/context/SalesSdkCartContext.js +28 -21
  32. package/lib/plus/salesSdk/context/SalesSdkHolderContext.js +104 -22
  33. package/lib/plus/salesSdk/context/SalesSdkProvider.js +3 -12
  34. package/lib/plus/salesSdk/hosts/ConfirmHolderHostRenderer.js +14 -5
  35. package/lib/plus/salesSdk/normalProductDetail/NormalProductDetailHostRenderer.js +5 -2
  36. package/lib/plus/salesSdk/types.d.ts +16 -1
  37. package/lib/plus/salesSdk/utils/customerAuthGate.js +1 -4
  38. package/lib/plus/salesSdk/utils/enrichCacheItemBeforeAdd.js +1 -1
  39. package/lib/plus/salesSdk/utils/ensureCustomerAuthBeforeAdd.js +6 -6
  40. package/lib/plus/salesSdk/utils/holderSubmitValidation.js +3 -4
  41. package/lib/plus/salesSdk/utils/productHolderConfig.js +3 -17
  42. package/lib/plus/salesSdk/utils/runAddProductFlow.js +14 -5
  43. package/lib/pro/skuDetailModal/flow/modules/holder/index.js +4 -1
  44. package/package.json +4 -4
@@ -6,6 +6,7 @@ const require_SalesSdkHostBridgesContext = require("../../../../plus/salesSdk/co
6
6
  const require_useSalesUserLogin = require("../../../../hooks/useSalesUserLogin.js");
7
7
  const require_resolve = require("../../../checkout/components/PaymentResultToastV2/resolve.js");
8
8
  const require_index = require("../../../checkout/components/PaymentResultToastV2/index.js");
9
+ const require_serve = require("../../../Sales/Checkout/serve.js");
9
10
  const require_useSalesSdk = require("../../../../plus/salesSdk/hooks/useSalesSdk.js");
10
11
  const require_usePickSaleDetailContext = require("../../hooks/usePickSaleDetailContext.js");
11
12
  const require_productListPreferences = require("../../utils/productListPreferences.js");
@@ -38,11 +39,52 @@ function publishKioskCollaborationPreviewStatus(app, status) {
38
39
  }
39
40
  }
40
41
  const KIOSK_VIEW_SESSION_KEY = "bigSale.kiosk.view";
42
+ function toFiniteAmount(value) {
43
+ if (value === void 0 || value === null || value === "") return null;
44
+ const amount = Number(value);
45
+ return Number.isFinite(amount) ? amount : null;
46
+ }
47
+ function resolveKioskAmountDue(summary) {
48
+ var _toFiniteAmount;
49
+ if (!summary) return null;
50
+ const orderPaidAmount = toFiniteAmount(summary.order_paid_amount);
51
+ if (orderPaidAmount !== null && orderPaidAmount > 0) return toFiniteAmount(summary.amount_gap);
52
+ return (_toFiniteAmount = toFiniteAmount(summary.expect_amount)) !== null && _toFiniteAmount !== void 0 ? _toFiniteAmount : toFiniteAmount(summary.total_amount);
53
+ }
54
+ function isH5ZeroAmountCheckout(platform, summary) {
55
+ return isH5ZeroAmountValue(platform, resolveKioskAmountDue(summary));
56
+ }
57
+ function isH5ZeroAmountValue(platform, amount) {
58
+ return String(platform || "").trim().toLowerCase() === "h5" && toFiniteAmount(amount) === 0;
59
+ }
60
+ function shouldSubmitKioskOrderBeforeCheckout(options) {
61
+ return options.shouldUseConsumerPayment || isH5ZeroAmountCheckout(options.platform, options.summary);
62
+ }
63
+ function resolveKioskSubmittedPayableAmount(result, tempOrderSummary, contextSummary) {
64
+ var _result$data, _result$data2, _result$data3;
65
+ return [
66
+ result === null || result === void 0 || (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.order_wait_pay_amount,
67
+ result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.expect_amount,
68
+ result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.total_amount,
69
+ tempOrderSummary === null || tempOrderSummary === void 0 ? void 0 : tempOrderSummary.expect_amount,
70
+ tempOrderSummary === null || tempOrderSummary === void 0 ? void 0 : tempOrderSummary.total_amount,
71
+ contextSummary === null || contextSummary === void 0 ? void 0 : contextSummary.expect_amount,
72
+ contextSummary === null || contextSummary === void 0 ? void 0 : contextSummary.total_amount
73
+ ].find((value) => toFiniteAmount(value) !== null);
74
+ }
41
75
  function launchKioskConsumerPaymentAfterReset(_x) {
42
76
  return _launchKioskConsumerPaymentAfterReset.apply(this, arguments);
43
77
  }
44
78
  function _launchKioskConsumerPaymentAfterReset() {
45
- _launchKioskConsumerPaymentAfterReset = require_asyncToGenerator._asyncToGenerator(function* ({ action, clearCartAndReset, clearSessionStorageOrderSnapshot, onResetError, orderId, persistCatalogView, recalcSummary, replace, totalAmount }) {
79
+ _launchKioskConsumerPaymentAfterReset = require_asyncToGenerator._asyncToGenerator(function* ({ action, clearCartAndReset, clearSessionStorageOrderSnapshot, freePay, onFreePayFailure, onResetError, orderId, persistCatalogView, recalcSummary, redirectZeroAmount, replace, totalAmount }) {
80
+ const shouldRedirectZeroAmount = redirectZeroAmount && Number(totalAmount) === 0;
81
+ if (shouldRedirectZeroAmount) {
82
+ const freePayResult = yield freePay(String(orderId));
83
+ if (!(freePayResult === null || freePayResult === void 0 ? void 0 : freePayResult.status)) {
84
+ onFreePayFailure(freePayResult);
85
+ return;
86
+ }
87
+ }
46
88
  try {
47
89
  yield clearCartAndReset();
48
90
  yield recalcSummary();
@@ -51,7 +93,7 @@ function _launchKioskConsumerPaymentAfterReset() {
51
93
  onResetError(error);
52
94
  }
53
95
  persistCatalogView();
54
- if (Number(totalAmount) === 0) {
96
+ if (shouldRedirectZeroAmount) {
55
97
  replace(`/payment-finish/success?amount=${totalAmount}&order_id=${orderId}`);
56
98
  return;
57
99
  }
@@ -155,7 +197,8 @@ function KioskBigSaleTemplate({ isActive = true, osKey, context, mode, variant,
155
197
  var _engineContext$appHel, _utils$getApp, _engineContext$appHel2;
156
198
  _pisell_utils.locales.init(require_index$1.default, locale || "en");
157
199
  const engineContext = require_useEngineContext.default();
158
- const isH5Platform = String(require_useEngineContext.usePlatform() || "").trim().toLowerCase() === "h5";
200
+ const platform = String(require_useEngineContext.usePlatform() || "").trim().toLowerCase();
201
+ const isH5Platform = platform === "h5";
159
202
  const utils = (engineContext === null || engineContext === void 0 || (_engineContext$appHel = engineContext.appHelper) === null || _engineContext$appHel === void 0 ? void 0 : _engineContext$appHel.utils) || {};
160
203
  const app = (_utils$getApp = utils.getApp) === null || _utils$getApp === void 0 ? void 0 : _utils$getApp.call(utils);
161
204
  const hostChannel = String((engineContext === null || engineContext === void 0 || (_engineContext$appHel2 = engineContext.appHelper) === null || _engineContext$appHel2 === void 0 || (_engineContext$appHel2 = _engineContext$appHel2.constants) === null || _engineContext$appHel2 === void 0 || (_engineContext$appHel2 = _engineContext$appHel2.config) === null || _engineContext$appHel2 === void 0 ? void 0 : _engineContext$appHel2.channel) || "").trim().toLowerCase();
@@ -462,14 +505,20 @@ function KioskBigSaleTemplate({ isActive = true, osKey, context, mode, variant,
462
505
  checkoutOpeningRef.current = true;
463
506
  setIsCheckoutLoading(true);
464
507
  try {
465
- var _result$payload$payme, _result$payload, _result$data5;
466
- if (shouldUseConsumerPayment) {
467
- var _ref9, _context$sales$bookin5, _context$sales$bookin6, _context$sales$bookin7, _ref10, _ref11, _ref12, _result$data$order_wa, _result$data2, _result$data3, _result$data4, _tempOrder$summary, _context$summary$summ;
468
- if (typeof utils.action !== "function") throw new Error("[KioskBigSale] appHelper.utils.action is not available.");
508
+ var _ref7, _context$sales$bookin5, _context$sales$bookin6, _context$sales$bookin7, _ref8, _ref9, _result$payload$payme, _result$payload, _result$data5;
509
+ if (shouldUseConsumerPayment && typeof utils.action !== "function") throw new Error("[KioskBigSale] appHelper.utils.action is not available.");
510
+ yield context.cart.waitForCartConsistency();
511
+ const currentTempOrder = (_ref7 = (_context$sales$bookin5 = (_context$sales$bookin6 = context.sales.bookingTicket) === null || _context$sales$bookin6 === void 0 || (_context$sales$bookin7 = _context$sales$bookin6.getTempOrder) === null || _context$sales$bookin7 === void 0 ? void 0 : _context$sales$bookin7.call(_context$sales$bookin6)) !== null && _context$sales$bookin5 !== void 0 ? _context$sales$bookin5 : context.sales.tempOrder) !== null && _ref7 !== void 0 ? _ref7 : null;
512
+ if (shouldSubmitKioskOrderBeforeCheckout({
513
+ platform,
514
+ summary: (_ref8 = (_ref9 = context.summary.summary) !== null && _ref9 !== void 0 ? _ref9 : currentTempOrder === null || currentTempOrder === void 0 ? void 0 : currentTempOrder.summary) !== null && _ref8 !== void 0 ? _ref8 : null,
515
+ shouldUseConsumerPayment
516
+ })) {
517
+ var _ref12, _context$sales$bookin8, _context$sales$bookin9, _context$sales$bookin10;
469
518
  const result = yield context.cart.submit();
470
519
  if (!require_utils.isSalesOrderSubmitSuccess(result)) {
471
- var _ref7, _ref8, _result$message, _result$data;
472
- showCheckoutFailure(String((_ref7 = (_ref8 = (_result$message = result === null || result === void 0 ? void 0 : result.message) !== null && _result$message !== void 0 ? _result$message : result === null || result === void 0 ? void 0 : result.msg) !== null && _ref8 !== void 0 ? _ref8 : result === null || result === void 0 || (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.message) !== null && _ref7 !== void 0 ? _ref7 : _pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
520
+ var _ref10, _ref11, _result$message, _result$data4;
521
+ showCheckoutFailure(String((_ref10 = (_ref11 = (_result$message = result === null || result === void 0 ? void 0 : result.message) !== null && _result$message !== void 0 ? _result$message : result === null || result === void 0 ? void 0 : result.msg) !== null && _ref11 !== void 0 ? _ref11 : result === null || result === void 0 || (_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : _result$data4.message) !== null && _ref10 !== void 0 ? _ref10 : _pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
473
522
  return;
474
523
  }
475
524
  const orderId = require_utils.resolveSaleDetailOrderIdFromSalesResult(context.sales, result);
@@ -477,45 +526,53 @@ function KioskBigSaleTemplate({ isActive = true, osKey, context, mode, variant,
477
526
  showCheckoutFailure(String(_pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
478
527
  return;
479
528
  }
480
- const tempOrder = (_ref9 = (_context$sales$bookin5 = (_context$sales$bookin6 = context.sales.bookingTicket) === null || _context$sales$bookin6 === void 0 || (_context$sales$bookin7 = _context$sales$bookin6.getTempOrder) === null || _context$sales$bookin7 === void 0 ? void 0 : _context$sales$bookin7.call(_context$sales$bookin6)) !== null && _context$sales$bookin5 !== void 0 ? _context$sales$bookin5 : context.sales.tempOrder) !== null && _ref9 !== void 0 ? _ref9 : null;
481
- const totalAmount = (_ref10 = (_ref11 = (_ref12 = (_result$data$order_wa = result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.order_wait_pay_amount) !== null && _result$data$order_wa !== void 0 ? _result$data$order_wa : result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.total_amount) !== null && _ref12 !== void 0 ? _ref12 : result === null || result === void 0 || (_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : _result$data4.expect_amount) !== null && _ref11 !== void 0 ? _ref11 : tempOrder === null || tempOrder === void 0 || (_tempOrder$summary = tempOrder.summary) === null || _tempOrder$summary === void 0 ? void 0 : _tempOrder$summary.total_amount) !== null && _ref10 !== void 0 ? _ref10 : (_context$summary$summ = context.summary.summary) === null || _context$summary$summ === void 0 ? void 0 : _context$summary$summ.total_amount;
482
- if (totalAmount === void 0 || totalAmount === null) {
529
+ const tempOrder = (_ref12 = (_context$sales$bookin8 = (_context$sales$bookin9 = context.sales.bookingTicket) === null || _context$sales$bookin9 === void 0 || (_context$sales$bookin10 = _context$sales$bookin9.getTempOrder) === null || _context$sales$bookin10 === void 0 ? void 0 : _context$sales$bookin10.call(_context$sales$bookin9)) !== null && _context$sales$bookin8 !== void 0 ? _context$sales$bookin8 : context.sales.tempOrder) !== null && _ref12 !== void 0 ? _ref12 : null;
530
+ const totalAmount = resolveKioskSubmittedPayableAmount(result, tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.summary, context.summary.summary);
531
+ if (toFiniteAmount(totalAmount) === null) {
483
532
  showCheckoutFailure(String(_pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
484
533
  return;
485
534
  }
486
- publishKioskCollaborationPreviewStatus(app, "checkout");
487
- yield launchKioskConsumerPaymentAfterReset({
488
- action: utils.action,
489
- clearCartAndReset: context.sales.clearCartAndReset,
490
- clearSessionStorageOrderSnapshot: () => {
491
- var _context$sales$bookin8, _context$sales$bookin9;
492
- (_context$sales$bookin8 = context.sales.bookingTicket) === null || _context$sales$bookin8 === void 0 || (_context$sales$bookin9 = _context$sales$bookin8.clearSessionStorageOrderSnapshot) === null || _context$sales$bookin9 === void 0 || _context$sales$bookin9.call(_context$sales$bookin8);
493
- },
494
- onResetError: (error) => {
495
- console.error("[KioskBigSale] 支付跳转前重置本地订单失败,继续拉起支付", error);
496
- },
497
- orderId,
498
- persistCatalogView: () => {
499
- persistKioskSessionView(context.sales.bookingTicket, "catalog");
500
- },
501
- recalcSummary: context.cart.recalcSummary,
502
- replace: (path) => {
503
- var _utils$history, _app$history2;
504
- if (typeof (utils === null || utils === void 0 || (_utils$history = utils.history) === null || _utils$history === void 0 ? void 0 : _utils$history.replace) === "function") {
505
- utils.history.replace(path);
506
- return;
507
- }
508
- if (typeof (app === null || app === void 0 || (_app$history2 = app.history) === null || _app$history2 === void 0 ? void 0 : _app$history2.replace) === "function") {
509
- app.history.replace(path);
510
- return;
511
- }
512
- window.location.replace(path);
513
- },
514
- totalAmount
515
- });
516
- return;
535
+ const shouldRedirectH5ZeroAmount = isH5ZeroAmountValue(platform, totalAmount);
536
+ if (shouldUseConsumerPayment || shouldRedirectH5ZeroAmount) {
537
+ publishKioskCollaborationPreviewStatus(app, "checkout");
538
+ yield launchKioskConsumerPaymentAfterReset({
539
+ action: utils.action,
540
+ clearCartAndReset: context.sales.clearCartAndReset,
541
+ clearSessionStorageOrderSnapshot: () => {
542
+ var _context$sales$bookin11, _context$sales$bookin12;
543
+ (_context$sales$bookin11 = context.sales.bookingTicket) === null || _context$sales$bookin11 === void 0 || (_context$sales$bookin12 = _context$sales$bookin11.clearSessionStorageOrderSnapshot) === null || _context$sales$bookin12 === void 0 || _context$sales$bookin12.call(_context$sales$bookin11);
544
+ },
545
+ freePay: (freePayOrderId) => require_serve.freePayApi(freePayOrderId),
546
+ onFreePayFailure: (freePayResult) => {
547
+ var _freePayResult$messag;
548
+ showCheckoutFailure(String((_freePayResult$messag = freePayResult === null || freePayResult === void 0 ? void 0 : freePayResult.message) !== null && _freePayResult$messag !== void 0 ? _freePayResult$messag : _pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
549
+ },
550
+ onResetError: (error) => {
551
+ console.error("[KioskBigSale] 结账跳转前重置本地订单失败,继续当前流程", error);
552
+ },
553
+ orderId,
554
+ persistCatalogView: () => {
555
+ persistKioskSessionView(context.sales.bookingTicket, "catalog");
556
+ },
557
+ recalcSummary: context.cart.recalcSummary,
558
+ redirectZeroAmount: shouldRedirectH5ZeroAmount,
559
+ replace: (path) => {
560
+ var _utils$history, _app$history2;
561
+ if (typeof (utils === null || utils === void 0 || (_utils$history = utils.history) === null || _utils$history === void 0 ? void 0 : _utils$history.replace) === "function") {
562
+ utils.history.replace(path);
563
+ return;
564
+ }
565
+ if (typeof (app === null || app === void 0 || (_app$history2 = app.history) === null || _app$history2 === void 0 ? void 0 : _app$history2.replace) === "function") {
566
+ app.history.replace(path);
567
+ return;
568
+ }
569
+ window.location.replace(path);
570
+ },
571
+ totalAmount
572
+ });
573
+ return;
574
+ }
517
575
  }
518
- yield context.cart.waitForCartConsistency();
519
576
  publishKioskCollaborationPreviewStatus(app, "checkout");
520
577
  const result = yield context.sales.openCheckout({
521
578
  paymentResultDisplayMode: "page",
@@ -563,10 +620,10 @@ function KioskBigSaleTemplate({ isActive = true, osKey, context, mode, variant,
563
620
  return (runtimeDiscountList.length > 0 ? runtimeDiscountList : context.cart.discountList || []).some((discount) => require_adapters.isCustomerVoucher(discount) && Boolean(discount === null || discount === void 0 ? void 0 : discount.isSelected));
564
621
  };
565
622
  const hasAppliedWalletAsset = () => {
566
- var _context$sales$bookin10, _context$sales$bookin11, _walletAssetsState$se, _walletAssetsState$se2, _walletAssetsState$se3, _walletAssetsState$se4, _walletAssetsState$co, _walletAssetsState$co2, _ref15, _context$sales$bookin12, _context$sales$bookin13, _context$sales$bookin14;
567
- const walletAssetsState = (_context$sales$bookin10 = context.sales.bookingTicket) === null || _context$sales$bookin10 === void 0 || (_context$sales$bookin11 = _context$sales$bookin10.getWalletAssetsState) === null || _context$sales$bookin11 === void 0 ? void 0 : _context$sales$bookin11.call(_context$sales$bookin10);
623
+ var _context$sales$bookin13, _context$sales$bookin14, _walletAssetsState$se, _walletAssetsState$se2, _walletAssetsState$se3, _walletAssetsState$se4, _walletAssetsState$co, _walletAssetsState$co2, _ref15, _context$sales$bookin15, _context$sales$bookin16, _context$sales$bookin17;
624
+ const walletAssetsState = (_context$sales$bookin13 = context.sales.bookingTicket) === null || _context$sales$bookin13 === void 0 || (_context$sales$bookin14 = _context$sales$bookin13.getWalletAssetsState) === null || _context$sales$bookin14 === void 0 ? void 0 : _context$sales$bookin14.call(_context$sales$bookin13);
568
625
  if (((_walletAssetsState$se = walletAssetsState === null || walletAssetsState === void 0 || (_walletAssetsState$se2 = walletAssetsState.selectedIds) === null || _walletAssetsState$se2 === void 0 ? void 0 : _walletAssetsState$se2.length) !== null && _walletAssetsState$se !== void 0 ? _walletAssetsState$se : 0) > 0 || ((_walletAssetsState$se3 = walletAssetsState === null || walletAssetsState === void 0 || (_walletAssetsState$se4 = walletAssetsState.selectedItems) === null || _walletAssetsState$se4 === void 0 ? void 0 : _walletAssetsState$se4.length) !== null && _walletAssetsState$se3 !== void 0 ? _walletAssetsState$se3 : 0) > 0 || ((_walletAssetsState$co = walletAssetsState === null || walletAssetsState === void 0 || (_walletAssetsState$co2 = walletAssetsState.committedIds) === null || _walletAssetsState$co2 === void 0 ? void 0 : _walletAssetsState$co2.length) !== null && _walletAssetsState$co !== void 0 ? _walletAssetsState$co : 0) > 0) return true;
569
- const tempOrder = (_ref15 = (_context$sales$bookin12 = (_context$sales$bookin13 = context.sales.bookingTicket) === null || _context$sales$bookin13 === void 0 || (_context$sales$bookin14 = _context$sales$bookin13.getTempOrder) === null || _context$sales$bookin14 === void 0 ? void 0 : _context$sales$bookin14.call(_context$sales$bookin13)) !== null && _context$sales$bookin12 !== void 0 ? _context$sales$bookin12 : context.sales.tempOrder) !== null && _ref15 !== void 0 ? _ref15 : null;
626
+ const tempOrder = (_ref15 = (_context$sales$bookin15 = (_context$sales$bookin16 = context.sales.bookingTicket) === null || _context$sales$bookin16 === void 0 || (_context$sales$bookin17 = _context$sales$bookin16.getTempOrder) === null || _context$sales$bookin17 === void 0 ? void 0 : _context$sales$bookin17.call(_context$sales$bookin16)) !== null && _context$sales$bookin15 !== void 0 ? _context$sales$bookin15 : context.sales.tempOrder) !== null && _ref15 !== void 0 ? _ref15 : null;
570
627
  return ((tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.payments) || []).some((payment) => {
571
628
  const voucherId = payment === null || payment === void 0 ? void 0 : payment.voucher_id;
572
629
  return voucherId !== void 0 && voucherId !== null && String(voucherId).trim() !== "" && Number(voucherId) !== 0;
@@ -108,7 +108,7 @@ function KioskSale(props) {
108
108
  selectionFlowScene: "product-selection",
109
109
  enableGlobalScanListener: true,
110
110
  normalProductDetailConfig: resolvedNormalProductDetailConfig,
111
- mergeBookingLinesForDisplay: false,
111
+ mergeBookingLinesForDisplay: isH5,
112
112
  productLoadParams: resolvedProductLoadParams,
113
113
  autoCreate: false,
114
114
  bootstrapSlot,
@@ -32,7 +32,7 @@ function hasHolderFormFields(formDataConfig) {
32
32
  return Array.isArray(formDataConfig === null || formDataConfig === void 0 ? void 0 : formDataConfig.field) || Array.isArray(formDataConfig === null || formDataConfig === void 0 ? void 0 : formDataConfig.form_field);
33
33
  }
34
34
  const BookingEditHolderField = ({ state, cacheItem, required, value, onChange, getCurrentCacheItem, presentation = "modal" }) => {
35
- var _context$appHelper, _state$bookingConfig, _holderConfig$form, _state$bookingConfig2, _currentCacheItem$_ex, _cacheItem$_extend, _state$pet5, _state$pet6, _state$pet7, _state$bookingConfig4, _inlineState$bookingC2, _inlineState$pet2, _state$client2, _inlineState$client5;
35
+ var _context$appHelper, _state$bookingConfig, _holderConfig$form, _currentCacheItem$_ex, _cacheItem$_extend, _state$pet5, _state$pet6, _state$pet7, _state$bookingConfig3, _inlineState$bookingC2, _inlineState$pet2, _state$client2, _inlineState$client5;
36
36
  const bridges = require_SalesSdkHostBridgesContext.useSalesSdkHostBridges();
37
37
  const platform = require_useEngineContext.usePlatform();
38
38
  const context = require_useEngineContext.default();
@@ -41,8 +41,8 @@ const BookingEditHolderField = ({ state, cacheItem, required, value, onChange, g
41
41
  const isInline = presentation === "inline";
42
42
  const holderConfig = (state === null || state === void 0 || (_state$bookingConfig = state.bookingConfig) === null || _state$bookingConfig === void 0 ? void 0 : _state$bookingConfig.holder) || {};
43
43
  const title = (holderConfig === null || holderConfig === void 0 || (_holderConfig$form = holderConfig.form) === null || _holderConfig$form === void 0 ? void 0 : _holderConfig$form.title) || (holderConfig === null || holderConfig === void 0 ? void 0 : holderConfig.title) || _pisell_utils.locales.getText("pisell2.text.holder");
44
- const isRequired = required !== null && required !== void 0 ? required : (state === null || state === void 0 || (_state$bookingConfig2 = state.bookingConfig) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.config) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.basic) === null || _state$bookingConfig2 === void 0 ? void 0 : _state$bookingConfig2.subject_require) === "require";
45
44
  const currentCacheItem = (getCurrentCacheItem === null || getCurrentCacheItem === void 0 ? void 0 : getCurrentCacheItem()) || cacheItem;
45
+ const isRequired = required !== null && required !== void 0 ? required : require_productHolderConfig.isProductHolderRequired(currentCacheItem);
46
46
  const maxSelectedCount = (holderConfig === null || holderConfig === void 0 ? void 0 : holderConfig.maxSelectedCount) || (currentCacheItem === null || currentCacheItem === void 0 || (_currentCacheItem$_ex = currentCacheItem._extend) === null || _currentCacheItem$_ex === void 0 ? void 0 : _currentCacheItem$_ex.quantity) || (cacheItem === null || cacheItem === void 0 || (_cacheItem$_extend = cacheItem._extend) === null || _cacheItem$_extend === void 0 ? void 0 : _cacheItem$_extend.quantity) || 1;
47
47
  const selectType = maxSelectedCount > 1 ? "multiple" : "single";
48
48
  const liveHolderOptions = getHolderOptionsForSource(currentCacheItem);
@@ -53,16 +53,16 @@ const BookingEditHolderField = ({ state, cacheItem, required, value, onChange, g
53
53
  setSelectedValues(normalizeHolderFieldValue(value));
54
54
  }, [value]);
55
55
  const stateHolderRawList = (0, react.useMemo)(() => {
56
- var _state$pet, _ref, _ref2, _state$pet$formData$, _state$pet2, _state$pet3, _state$bookingConfig3, _state$pet4;
56
+ var _state$pet, _ref, _ref2, _state$pet$formData$, _state$pet2, _state$pet3, _state$bookingConfig2, _state$pet4;
57
57
  const holdersFromState = Array.isArray(state === null || state === void 0 || (_state$pet = state.pet) === null || _state$pet === void 0 ? void 0 : _state$pet.holders) ? state.pet.holders : [];
58
- const formId = (_ref = (_ref2 = (_state$pet$formData$ = state === null || state === void 0 || (_state$pet2 = state.pet) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2.formData) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2[0]) === null || _state$pet2 === void 0 ? void 0 : _state$pet2.form_id) !== null && _state$pet$formData$ !== void 0 ? _state$pet$formData$ : state === null || state === void 0 || (_state$pet3 = state.pet) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3.formData) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3[0]) === null || _state$pet3 === void 0 ? void 0 : _state$pet3.id) !== null && _ref2 !== void 0 ? _ref2 : state === null || state === void 0 || (_state$bookingConfig3 = state.bookingConfig) === null || _state$bookingConfig3 === void 0 || (_state$bookingConfig3 = _state$bookingConfig3.config) === null || _state$bookingConfig3 === void 0 || (_state$bookingConfig3 = _state$bookingConfig3.basic) === null || _state$bookingConfig3 === void 0 || (_state$bookingConfig3 = _state$bookingConfig3.appointment_subject) === null || _state$bookingConfig3 === void 0 ? void 0 : _state$bookingConfig3.form_id) !== null && _ref !== void 0 ? _ref : 0;
58
+ const formId = (_ref = (_ref2 = (_state$pet$formData$ = state === null || state === void 0 || (_state$pet2 = state.pet) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2.formData) === null || _state$pet2 === void 0 || (_state$pet2 = _state$pet2[0]) === null || _state$pet2 === void 0 ? void 0 : _state$pet2.form_id) !== null && _state$pet$formData$ !== void 0 ? _state$pet$formData$ : state === null || state === void 0 || (_state$pet3 = state.pet) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3.formData) === null || _state$pet3 === void 0 || (_state$pet3 = _state$pet3[0]) === null || _state$pet3 === void 0 ? void 0 : _state$pet3.id) !== null && _ref2 !== void 0 ? _ref2 : state === null || state === void 0 || (_state$bookingConfig2 = state.bookingConfig) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.config) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.basic) === null || _state$bookingConfig2 === void 0 || (_state$bookingConfig2 = _state$bookingConfig2.appointment_subject) === null || _state$bookingConfig2 === void 0 ? void 0 : _state$bookingConfig2.form_id) !== null && _ref !== void 0 ? _ref : 0;
59
59
  const holdersFromValue = Array.isArray(state === null || state === void 0 || (_state$pet4 = state.pet) === null || _state$pet4 === void 0 || (_state$pet4 = _state$pet4.value) === null || _state$pet4 === void 0 ? void 0 : _state$pet4[formId]) ? state.pet.value[formId] : [];
60
60
  return holdersFromState.length > 0 ? holdersFromState : holdersFromValue;
61
61
  }, [
62
62
  state === null || state === void 0 || (_state$pet5 = state.pet) === null || _state$pet5 === void 0 ? void 0 : _state$pet5.formData,
63
63
  state === null || state === void 0 || (_state$pet6 = state.pet) === null || _state$pet6 === void 0 ? void 0 : _state$pet6.holders,
64
64
  state === null || state === void 0 || (_state$pet7 = state.pet) === null || _state$pet7 === void 0 ? void 0 : _state$pet7.value,
65
- state === null || state === void 0 || (_state$bookingConfig4 = state.bookingConfig) === null || _state$bookingConfig4 === void 0 ? void 0 : _state$bookingConfig4.config
65
+ state === null || state === void 0 || (_state$bookingConfig3 = state.bookingConfig) === null || _state$bookingConfig3 === void 0 ? void 0 : _state$bookingConfig3.config
66
66
  ]);
67
67
  const inlineHolders = (0, react.useMemo)(() => {
68
68
  if (Array.isArray(inlinePet.holders)) return inlinePet.holders;
@@ -52,11 +52,9 @@ const STATUS_OPTIONS = [
52
52
  /**
53
53
  * SalesSdk 版「预约主体未分配」弹窗,UI 与交互对齐 booking ConfirmHolderModal。
54
54
  */
55
- function SalesSdkConfirmHolderModalContent({ open, lines, liveUnassignedCount, bookingConfig, onAssign, onConfirm, onSkip, onDismissConfirmed, variant }) {
56
- var _bookingConfig$config;
55
+ function SalesSdkConfirmHolderModalContent({ open, lines, liveUnassignedCount, canSkip, onAssign, onConfirm, onSkip, onDismissConfirmed, variant }) {
57
56
  const isPhoneVariant = variant === "phone";
58
57
  const [modal, contextHolder] = antd.Modal.useModal();
59
- const isSubjectOptional = (bookingConfig === null || bookingConfig === void 0 || (_bookingConfig$config = bookingConfig.config) === null || _bookingConfig$config === void 0 || (_bookingConfig$config = _bookingConfig$config.basic) === null || _bookingConfig$config === void 0 ? void 0 : _bookingConfig$config.subject_require) !== "require";
60
58
  const statusOptions = (0, react.useMemo)(() => STATUS_OPTIONS.map((option) => ({
61
59
  key: option.key,
62
60
  label: _pisell_utils.locales.getText(option.labelKey),
@@ -131,7 +129,7 @@ function SalesSdkConfirmHolderModalContent({ open, lines, liveUnassignedCount, b
131
129
  onPromotion: () => {},
132
130
  onGift: () => {}
133
131
  });
134
- })), /* @__PURE__ */ react.default.createElement("div", { className: "confirm-holder-modal-footer" }, isSubjectOptional && onSkip ? /* @__PURE__ */ react.default.createElement(antd.Button, {
132
+ })), /* @__PURE__ */ react.default.createElement("div", { className: "confirm-holder-modal-footer" }, canSkip && onSkip ? /* @__PURE__ */ react.default.createElement(antd.Button, {
135
133
  onClick: onSkip,
136
134
  className: "skip-button",
137
135
  size: "large"
@@ -307,7 +307,7 @@ function readSnapshot(bookingTicket, getHolderOptionsForSource = () => [], shoul
307
307
  return EMPTY_SNAPSHOT;
308
308
  }
309
309
  }
310
- const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingLinesForDisplay = true }) => {
310
+ const SalesSdkCartProvider = ({ children, deferHolderAuthOnClose = false, shouldMergeProductLines, mergeBookingLinesForDisplay = true }) => {
311
311
  var _sales$bookingTicket;
312
312
  const sales = (0, react.useContext)(require_SalesSdkContext.SalesSdkContext);
313
313
  const productsCtx = (0, react.useContext)(require_SalesSdkProductContext.SalesSdkProductContext);
@@ -318,7 +318,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
318
318
  const refreshSummary = (0, react.useContext)(require_SalesSdkSummaryContext.SalesSdkSummaryRefreshContext);
319
319
  const prepareSummary = (0, react.useContext)(require_SalesSdkSummaryContext.SalesSdkSummaryPrepareContext);
320
320
  const refreshRoot = (0, react.useContext)(require_SalesSdkProvider.SalesSdkRootRefreshContext);
321
- const { holderOptions, getHolderOptionsForSource, ensureHolderOptionsForSource, reload: reloadHolderOptions } = require_SalesSdkHolderContext.useSalesSdkHolderOptional();
321
+ const { holderOptions, getHolderOptionsForSource, ensureHolderOptionsForSource, prepareHolderOptionsForSource, reload: reloadHolderOptions } = require_SalesSdkHolderContext.useSalesSdkHolderOptional();
322
322
  const Toast = (0, _pisell_materials.useToast)();
323
323
  const toastRef = (0, react.useRef)(Toast);
324
324
  toastRef.current = Toast;
@@ -938,7 +938,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
938
938
  const runDirectAddFromCacheItem = function() {
939
939
  var _ref11 = require_asyncToGenerator._asyncToGenerator(function* (rawCacheItem) {
940
940
  const cacheItemForEnrich = require_mergeCatalogDurationIntoCacheItem.mergeCatalogDurationIntoCacheItem(require_applyExplicitAddQuantityToCacheItem.applyExplicitAddQuantityToCacheItem(rawCacheItem, addQty), product);
941
- const shouldPrepareHolderOptions = require_shouldPromptHolderOnAddCart.shouldPromptHolderOnAddCart({
941
+ const shouldPrepareHolderOptions = !(options === null || options === void 0 ? void 0 : options.deferHolderUntilSubmit) && require_shouldPromptHolderOnAddCart.shouldPromptHolderOnAddCart({
942
942
  cacheItem: cacheItemForEnrich,
943
943
  bookingConfig: flowCtx.bookingConfig,
944
944
  productSource: product,
@@ -952,6 +952,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
952
952
  }, flowCtx), {}, {
953
953
  initialHolderIds: options === null || options === void 0 ? void 0 : options.initialHolderIds,
954
954
  holderOptions: holderOptionsForProduct,
955
+ deferHolderUntilSubmit: options === null || options === void 0 ? void 0 : options.deferHolderUntilSubmit,
955
956
  mode: "direct"
956
957
  })) : {
957
958
  status: "ok",
@@ -1030,7 +1031,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
1030
1031
  */
1031
1032
  const confirmDetail = (0, ahooks.useMemoizedFn)(function() {
1032
1033
  var _ref15 = require_asyncToGenerator._asyncToGenerator(function* (input) {
1033
- var _flowCtx$date7, _flowCtx$bookingConfi4, _input$options, _input$options3;
1034
+ var _flowCtx$date7, _flowCtx$bookingConfi4, _input$options, _input$options5, _input$options6, _input$options7;
1034
1035
  if (!bookingTicket) throw new Error("[SalesSdk] Cart: bookingTicket 未初始化");
1035
1036
  if (typeof bookingTicket.transformDetailToProductAndBooking !== "function") throw new Error("[SalesSdk] Cart: bookingTicket.transformDetailToProductAndBooking 不可用");
1036
1037
  const confirmQuantity = require_resolveConfirmDetailQuantity.resolveConfirmDetailQuantity(input);
@@ -1051,7 +1052,7 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
1051
1052
  if ((_input$options = input.options) === null || _input$options === void 0 ? void 0 : _input$options.multiDayRange) cacheItem = require_patchCacheItemDateRange.patchCacheItemDateRange(cacheItem, input.options.multiDayRange);
1052
1053
  else cacheItem = require_patchCacheItemDateRange.applyDefaultMultiDayRangeIfNeeded(cacheItem, catalogItem, flowCtx.date);
1053
1054
  if (typeof bookingTicket.decideAfterDetail === "function") {
1054
- var _flowCtx$date8, _flowCtx$bookingConfi5, _input$options2;
1055
+ var _flowCtx$date8, _flowCtx$bookingConfi5, _input$options2, _input$options3, _input$options4;
1055
1056
  const decision = bookingTicket.decideAfterDetail(cacheItem, {
1056
1057
  quantity: confirmQuantity,
1057
1058
  customerId: flowCtx.customerId,
@@ -1073,14 +1074,15 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
1073
1074
  })
1074
1075
  };
1075
1076
  }
1076
- const holderOptionsForProduct = yield ensureHolderOptionsForSource(input.item);
1077
+ const holderOptionsForProduct = ((_input$options2 = input.options) === null || _input$options2 === void 0 ? void 0 : _input$options2.deferHolderUntilSubmit) ? getHolderOptionsForSource(input.item) : yield ensureHolderOptionsForSource(input.item);
1077
1078
  const enriched = yield require_enrichCacheItemBeforeAdd.enrichCacheItemBeforeAdd(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({
1078
1079
  cacheItem: decision.cacheItem,
1079
1080
  catalogItem: input.item,
1080
1081
  uiHosts
1081
1082
  }, flowCtx), {}, {
1082
- initialHolderIds: (_input$options2 = input.options) === null || _input$options2 === void 0 ? void 0 : _input$options2.initialHolderIds,
1083
+ initialHolderIds: (_input$options3 = input.options) === null || _input$options3 === void 0 ? void 0 : _input$options3.initialHolderIds,
1083
1084
  holderOptions: holderOptionsForProduct,
1085
+ deferHolderUntilSubmit: (_input$options4 = input.options) === null || _input$options4 === void 0 ? void 0 : _input$options4.deferHolderUntilSubmit,
1084
1086
  mode: "direct"
1085
1087
  }));
1086
1088
  if (enriched.status !== "ok") throw new Error("[SalesSdk] confirmDetail: 加车前校验未通过(Holder / 跨日 Host 未配置或用户取消)");
@@ -1089,14 +1091,15 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
1089
1091
  products: yield addProductToOrderFromCache(input.item, enriched.cacheItem, { quantity: require_resolveConfirmDetailQuantity.resolveAddQuantityFromCacheItem(enriched.cacheItem, confirmQuantity) })
1090
1092
  };
1091
1093
  }
1092
- const holderOptionsForProduct = yield ensureHolderOptionsForSource(input.item);
1094
+ const holderOptionsForProduct = ((_input$options5 = input.options) === null || _input$options5 === void 0 ? void 0 : _input$options5.deferHolderUntilSubmit) ? getHolderOptionsForSource(input.item) : yield ensureHolderOptionsForSource(input.item);
1093
1095
  const enriched = yield require_enrichCacheItemBeforeAdd.enrichCacheItemBeforeAdd(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({
1094
1096
  cacheItem,
1095
1097
  catalogItem: input.item,
1096
1098
  uiHosts
1097
1099
  }, flowCtx), {}, {
1098
- initialHolderIds: (_input$options3 = input.options) === null || _input$options3 === void 0 ? void 0 : _input$options3.initialHolderIds,
1100
+ initialHolderIds: (_input$options6 = input.options) === null || _input$options6 === void 0 ? void 0 : _input$options6.initialHolderIds,
1099
1101
  holderOptions: holderOptionsForProduct,
1102
+ deferHolderUntilSubmit: (_input$options7 = input.options) === null || _input$options7 === void 0 ? void 0 : _input$options7.deferHolderUntilSubmit,
1100
1103
  mode: "direct"
1101
1104
  }));
1102
1105
  if (enriched.status !== "ok") throw new Error("[SalesSdk] confirmDetail: 加车前校验未通过(Holder / 跨日 Host 未配置或用户取消)");
@@ -1112,9 +1115,9 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
1112
1115
  /** 资源 / 时间抽屉确认后加车。 */
1113
1116
  const confirmBookingEdit = (0, ahooks.useMemoizedFn)(function() {
1114
1117
  var _ref16 = require_asyncToGenerator._asyncToGenerator(function* (input) {
1115
- var _input$options4;
1118
+ var _input$options8;
1116
1119
  if (!bookingTicket) throw new Error("[SalesSdk] Cart: bookingTicket 未初始化");
1117
- const products = yield addProductToOrderFromCache(input.cacheItem, input.cacheItem, { quantity: require_resolveConfirmDetailQuantity.resolveAddQuantityFromCacheItem(input.cacheItem, (_input$options4 = input.options) === null || _input$options4 === void 0 ? void 0 : _input$options4.quantity) });
1120
+ const products = yield addProductToOrderFromCache(input.cacheItem, input.cacheItem, { quantity: require_resolveConfirmDetailQuantity.resolveAddQuantityFromCacheItem(input.cacheItem, (_input$options8 = input.options) === null || _input$options8 === void 0 ? void 0 : _input$options8.quantity) });
1118
1121
  reloadHolderOptions();
1119
1122
  return { products };
1120
1123
  });
@@ -1128,13 +1131,20 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
1128
1131
  /** 无防抖的加车编排(规格 / 资源弹窗链)。 */
1129
1132
  const runAddProductFlowBase = (0, ahooks.useMemoizedFn)(function() {
1130
1133
  var _ref17 = require_asyncToGenerator._asyncToGenerator(function* (product, options) {
1131
- const holderOptionsForProduct = yield ensureHolderOptionsForSource(product);
1134
+ let deferHolderUntilSubmit = (options === null || options === void 0 ? void 0 : options.deferHolderUntilSubmit) === true;
1135
+ let holderOptionsForProduct = deferHolderUntilSubmit ? getHolderOptionsForSource(product) : [];
1136
+ if (!deferHolderUntilSubmit) {
1137
+ const preparedHolderOptions = yield prepareHolderOptionsForSource(product, { allowBoundCustomerAccess: deferHolderAuthOnClose });
1138
+ holderOptionsForProduct = preparedHolderOptions.options;
1139
+ if (deferHolderAuthOnClose && preparedHolderOptions.loginClosed) deferHolderUntilSubmit = true;
1140
+ }
1132
1141
  return require_runAddProductFlow.runAddProductFlow({
1133
1142
  addProduct,
1134
1143
  confirmDetail,
1135
1144
  confirmBookingEdit
1136
1145
  }, uiHosts, product, require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, options), getAddFlowContext()), {}, {
1137
1146
  holderOptions: holderOptionsForProduct,
1147
+ deferHolderUntilSubmit,
1138
1148
  onBookingSelectionCommitted: syncCommittedBookingSelection
1139
1149
  }));
1140
1150
  });
@@ -1245,24 +1255,21 @@ const SalesSdkCartProvider = ({ children, shouldMergeProductLines, mergeBookingL
1245
1255
  */
1246
1256
  const addProductWithFlow = (0, ahooks.useMemoizedFn)(function() {
1247
1257
  var _ref20 = require_asyncToGenerator._asyncToGenerator(function* (product, options) {
1248
- var _ticket$getOtherParam, _ticket$getTempOrder, _ticket$getTempOrder2, _ticket$getOrderCusto, _ticket$getOrderCusto2, _liveTempOrder$custom, _liveTempOrder$_exten, _liveTempOrder$_exten2, _flowCtx$tempOrder, _flowCtx$tempOrder2, _flowCtx$tempOrder3, _flowCtx$tempOrder4, _uiHostsRef$current2, _ticket$setOrderCusto;
1258
+ var _ticket$getTempOrder, _ticket$getTempOrder2, _ticket$getOrderCusto, _ticket$getOrderCusto2, _liveTempOrder$custom, _liveTempOrder$_exten, _liveTempOrder$_exten2, _flowCtx$tempOrder, _flowCtx$tempOrder2, _flowCtx$tempOrder3, _flowCtx$tempOrder4, _uiHostsRef$current2, _ticket$setOrderCusto;
1249
1259
  if (!bookingTicketRef.current) throw new Error("[SalesSdk] Cart: bookingTicket 未初始化");
1250
1260
  const ticket = bookingTicketRef.current;
1251
1261
  const flowCtx = getAddFlowContextRef.current();
1252
- const otherParams = yield Promise.resolve(((_ticket$getOtherParam = ticket.getOtherParams) === null || _ticket$getOtherParam === void 0 ? void 0 : _ticket$getOtherParam.call(ticket)) || {});
1253
1262
  const liveTempOrder = (_ticket$getTempOrder = (_ticket$getTempOrder2 = ticket.getTempOrder) === null || _ticket$getTempOrder2 === void 0 ? void 0 : _ticket$getTempOrder2.call(ticket)) !== null && _ticket$getTempOrder !== void 0 ? _ticket$getTempOrder : null;
1254
1263
  const orderCustomerSnapshot = (_ticket$getOrderCusto = (_ticket$getOrderCusto2 = ticket.getOrderCustomerSnapshot) === null || _ticket$getOrderCusto2 === void 0 ? void 0 : _ticket$getOrderCusto2.call(ticket)) !== null && _ticket$getOrderCusto !== void 0 ? _ticket$getOrderCusto : null;
1255
- const currentCustomerId = require_customerAuthGate.resolveCustomerAuthCurrentCustomerId(liveTempOrder === null || liveTempOrder === void 0 ? void 0 : liveTempOrder.customer_id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$custom = liveTempOrder.customer) === null || _liveTempOrder$custom === void 0 ? void 0 : _liveTempOrder$custom.id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$_exten = liveTempOrder._extend) === null || _liveTempOrder$_exten === void 0 || (_liveTempOrder$_exten = _liveTempOrder$_exten.customerSnapshot) === null || _liveTempOrder$_exten === void 0 ? void 0 : _liveTempOrder$_exten.customer_id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$_exten2 = liveTempOrder._extend) === null || _liveTempOrder$_exten2 === void 0 || (_liveTempOrder$_exten2 = _liveTempOrder$_exten2.customerSnapshot) === null || _liveTempOrder$_exten2 === void 0 ? void 0 : _liveTempOrder$_exten2.id, orderCustomerSnapshot === null || orderCustomerSnapshot === void 0 ? void 0 : orderCustomerSnapshot.customer_id, orderCustomerSnapshot === null || orderCustomerSnapshot === void 0 ? void 0 : orderCustomerSnapshot.id, flowCtx.customerId, (_flowCtx$tempOrder = flowCtx.tempOrder) === null || _flowCtx$tempOrder === void 0 ? void 0 : _flowCtx$tempOrder.customer_id, (_flowCtx$tempOrder2 = flowCtx.tempOrder) === null || _flowCtx$tempOrder2 === void 0 || (_flowCtx$tempOrder2 = _flowCtx$tempOrder2.customer) === null || _flowCtx$tempOrder2 === void 0 ? void 0 : _flowCtx$tempOrder2.id, (_flowCtx$tempOrder3 = flowCtx.tempOrder) === null || _flowCtx$tempOrder3 === void 0 || (_flowCtx$tempOrder3 = _flowCtx$tempOrder3._extend) === null || _flowCtx$tempOrder3 === void 0 || (_flowCtx$tempOrder3 = _flowCtx$tempOrder3.customerSnapshot) === null || _flowCtx$tempOrder3 === void 0 ? void 0 : _flowCtx$tempOrder3.customer_id, (_flowCtx$tempOrder4 = flowCtx.tempOrder) === null || _flowCtx$tempOrder4 === void 0 || (_flowCtx$tempOrder4 = _flowCtx$tempOrder4._extend) === null || _flowCtx$tempOrder4 === void 0 || (_flowCtx$tempOrder4 = _flowCtx$tempOrder4.customerSnapshot) === null || _flowCtx$tempOrder4 === void 0 ? void 0 : _flowCtx$tempOrder4.id);
1256
- if (!(yield require_ensureCustomerAuthBeforeAdd.ensureCustomerAuthBeforeAdd({
1264
+ const flowOptions = (yield require_ensureCustomerAuthBeforeAdd.ensureCustomerAuthBeforeAdd({
1257
1265
  product,
1258
- platform: otherParams.platform,
1259
- channel: productLoadChannelRef.current || otherParams.channel,
1260
- currentCustomerId,
1266
+ enabled: deferHolderAuthOnClose,
1267
+ currentCustomerId: require_customerAuthGate.resolveCustomerAuthCurrentCustomerId(liveTempOrder === null || liveTempOrder === void 0 ? void 0 : liveTempOrder.customer_id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$custom = liveTempOrder.customer) === null || _liveTempOrder$custom === void 0 ? void 0 : _liveTempOrder$custom.id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$_exten = liveTempOrder._extend) === null || _liveTempOrder$_exten === void 0 || (_liveTempOrder$_exten = _liveTempOrder$_exten.customerSnapshot) === null || _liveTempOrder$_exten === void 0 ? void 0 : _liveTempOrder$_exten.customer_id, liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$_exten2 = liveTempOrder._extend) === null || _liveTempOrder$_exten2 === void 0 || (_liveTempOrder$_exten2 = _liveTempOrder$_exten2.customerSnapshot) === null || _liveTempOrder$_exten2 === void 0 ? void 0 : _liveTempOrder$_exten2.id, orderCustomerSnapshot === null || orderCustomerSnapshot === void 0 ? void 0 : orderCustomerSnapshot.customer_id, orderCustomerSnapshot === null || orderCustomerSnapshot === void 0 ? void 0 : orderCustomerSnapshot.id, flowCtx.customerId, (_flowCtx$tempOrder = flowCtx.tempOrder) === null || _flowCtx$tempOrder === void 0 ? void 0 : _flowCtx$tempOrder.customer_id, (_flowCtx$tempOrder2 = flowCtx.tempOrder) === null || _flowCtx$tempOrder2 === void 0 || (_flowCtx$tempOrder2 = _flowCtx$tempOrder2.customer) === null || _flowCtx$tempOrder2 === void 0 ? void 0 : _flowCtx$tempOrder2.id, (_flowCtx$tempOrder3 = flowCtx.tempOrder) === null || _flowCtx$tempOrder3 === void 0 || (_flowCtx$tempOrder3 = _flowCtx$tempOrder3._extend) === null || _flowCtx$tempOrder3 === void 0 || (_flowCtx$tempOrder3 = _flowCtx$tempOrder3.customerSnapshot) === null || _flowCtx$tempOrder3 === void 0 ? void 0 : _flowCtx$tempOrder3.customer_id, (_flowCtx$tempOrder4 = flowCtx.tempOrder) === null || _flowCtx$tempOrder4 === void 0 || (_flowCtx$tempOrder4 = _flowCtx$tempOrder4._extend) === null || _flowCtx$tempOrder4 === void 0 || (_flowCtx$tempOrder4 = _flowCtx$tempOrder4.customerSnapshot) === null || _flowCtx$tempOrder4 === void 0 ? void 0 : _flowCtx$tempOrder4.id),
1261
1268
  openCustomerAuth: (_uiHostsRef$current2 = uiHostsRef.current) === null || _uiHostsRef$current2 === void 0 ? void 0 : _uiHostsRef$current2.openCustomerAuth,
1262
1269
  setOrderCustomer: (_ticket$setOrderCusto = ticket.setOrderCustomer) === null || _ticket$setOrderCusto === void 0 ? void 0 : _ticket$setOrderCusto.bind(ticket)
1263
- }))) return { status: "cancelled" };
1270
+ })).status === "deferred" ? require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, options), {}, { deferHolderUntilSubmit: true }) : options;
1264
1271
  const productLineMergeEnabled = resolveProductLineMergeEnabled(shouldMergeProductLines);
1265
- return debouncedAddRef.current.addProductWithFlow(product, productLineMergeEnabled ? options : require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, options), {}, { debounceMs: 0 }));
1272
+ return debouncedAddRef.current.addProductWithFlow(product, productLineMergeEnabled ? flowOptions : require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, flowOptions), {}, { debounceMs: 0 }));
1266
1273
  });
1267
1274
  return function(_x20, _x21) {
1268
1275
  return _ref20.apply(this, arguments);