@pisell/private-materials 6.12.364 → 6.12.366
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.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/render/default/view.js +2 -2
- package/build/lowcode/view.js +2 -2
- package/es/components/bigSale/templates/Kiosk/index.js +52 -30
- package/es/components/scanOrder/utils/toShoppingCartProducts.identity.test.cjs +79 -0
- package/es/components/scanOrder/utils/toShoppingCartProducts.js +7 -3
- package/es/plus/saasDevice/devicePasscodes/model.js +4 -4
- package/es/plus/salesSdk/types.d.ts +2 -0
- package/es/plus/walletPassGallery/components/timelineSection/index.js +4 -4
- package/lib/components/bigSale/templates/Kiosk/index.js +52 -30
- package/lib/components/scanOrder/utils/toShoppingCartProducts.identity.test.cjs +79 -0
- package/lib/components/scanOrder/utils/toShoppingCartProducts.js +7 -3
- package/lib/plus/salesSdk/types.d.ts +2 -0
- package/package.json +3 -3
|
@@ -36,6 +36,7 @@ let react = require("react");
|
|
|
36
36
|
react = require_runtime.__toESM(react);
|
|
37
37
|
let antd = require("antd");
|
|
38
38
|
let _pisell_utils = require("@pisell/utils");
|
|
39
|
+
let _pisell_materials = require("@pisell/materials");
|
|
39
40
|
let _ant_design_icons = require("@ant-design/icons");
|
|
40
41
|
require("./index.less");
|
|
41
42
|
//#region src/components/bigSale/templates/Kiosk/index.tsx
|
|
@@ -233,6 +234,7 @@ function createKioskLoginContinuationHandler(options) {
|
|
|
233
234
|
function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesChannel, context, mode, variant, kioskShellLayout = "single-screen", productLoadParams, businessCode, productDisplayConfig, productCatalogSessionKey, orderId, saleDetailModuleConfig, locale, onOrderComplete }) {
|
|
234
235
|
var _context$sales$bookin, _engineContext$appHel, _utils$getApp, _engineContext$appHel2;
|
|
235
236
|
_pisell_utils.locales.init(require_index$2.default, locale || "en");
|
|
237
|
+
const Toast = (0, _pisell_materials.useToast)();
|
|
236
238
|
const engineContext = require_useEngineContext.default();
|
|
237
239
|
const enginePlatform = require_useEngineContext.usePlatform();
|
|
238
240
|
const businessAvailability = require_SalesSdkBusinessAvailabilityContext.useSalesSdkBusinessAvailability();
|
|
@@ -644,8 +646,24 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
644
646
|
}));
|
|
645
647
|
setView("failure");
|
|
646
648
|
};
|
|
649
|
+
const ensureRequiredProducts = function() {
|
|
650
|
+
var _ref5 = require_asyncToGenerator._asyncToGenerator(function* () {
|
|
651
|
+
const bookingTicket = context.sales.bookingTicket;
|
|
652
|
+
try {
|
|
653
|
+
if (bookingTicket === null || bookingTicket === void 0 ? void 0 : bookingTicket.validateRequiredProducts) yield bookingTicket.validateRequiredProducts();
|
|
654
|
+
return true;
|
|
655
|
+
} catch (error) {
|
|
656
|
+
Toast.info(error instanceof Error ? error.message : String(error));
|
|
657
|
+
setNavigableView("cart");
|
|
658
|
+
return false;
|
|
659
|
+
}
|
|
660
|
+
});
|
|
661
|
+
return function ensureRequiredProducts() {
|
|
662
|
+
return _ref5.apply(this, arguments);
|
|
663
|
+
};
|
|
664
|
+
}();
|
|
647
665
|
const performCheckout = function() {
|
|
648
|
-
var
|
|
666
|
+
var _ref23 = require_asyncToGenerator._asyncToGenerator(function* () {
|
|
649
667
|
if (checkoutOpeningRef.current || !shouldUseFulfillmentCheckout && isPickupTimingPending || cartItemCount === 0) return;
|
|
650
668
|
checkoutOpeningRef.current = true;
|
|
651
669
|
const openingScope = fulfillmentCheckout.captureScope();
|
|
@@ -654,18 +672,22 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
654
672
|
return isActiveRef.current && currentScope.handle === openingScope.handle && currentScope.scopeKey === openingScope.scopeKey && currentScope.identity === openingScope.identity;
|
|
655
673
|
};
|
|
656
674
|
const checkoutSubmitOptions = require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, KIOSK_CHECKOUT_SUBMIT_OPTIONS), {}, { beforeSubmit: function() {
|
|
657
|
-
var
|
|
675
|
+
var _ref6 = require_asyncToGenerator._asyncToGenerator(function* () {
|
|
676
|
+
if (!isCurrentCheckoutRequest() || !(yield ensureRequiredProducts())) return false;
|
|
658
677
|
return isCurrentCheckoutRequest() && (yield businessAvailability.beginCheckout());
|
|
659
678
|
});
|
|
660
679
|
return function beforeSubmit() {
|
|
661
|
-
return
|
|
680
|
+
return _ref6.apply(this, arguments);
|
|
662
681
|
};
|
|
663
682
|
}() });
|
|
664
683
|
let deferredAttempt = false;
|
|
665
684
|
setIsCheckoutLoading(true);
|
|
666
685
|
try {
|
|
667
|
-
var
|
|
686
|
+
var _ref7, _context$sales$bookin6, _context$sales$bookin7, _context$sales$bookin8, _ref15, _context$sales$bookin13, _context$sales$bookin14, _context$sales$bookin15, _ref16, _ref17, _result$payload$payme, _result$payload, _result$data6;
|
|
668
687
|
if (!(yield businessAvailability.ensureCanShop())) return;
|
|
688
|
+
yield context.cart.waitForCartConsistency();
|
|
689
|
+
if (!isCurrentCheckoutRequest() || !(yield ensureRequiredProducts())) return;
|
|
690
|
+
if (!isCurrentCheckoutRequest()) return;
|
|
669
691
|
yield new Promise((resolve) => setTimeout(resolve, 0));
|
|
670
692
|
setPickupTimingError(void 0);
|
|
671
693
|
try {
|
|
@@ -689,7 +711,7 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
689
711
|
}
|
|
690
712
|
if (context.sales.contactInfo && !(yield context.sales.contactInfo.ensureComplete())) return;
|
|
691
713
|
if (!isCurrentCheckoutRequest()) return;
|
|
692
|
-
const liveTempOrder = (
|
|
714
|
+
const liveTempOrder = (_ref7 = (_context$sales$bookin6 = (_context$sales$bookin7 = context.sales.bookingTicket) === null || _context$sales$bookin7 === void 0 || (_context$sales$bookin8 = _context$sales$bookin7.getTempOrder) === null || _context$sales$bookin8 === void 0 ? void 0 : _context$sales$bookin8.call(_context$sales$bookin7)) !== null && _context$sales$bookin6 !== void 0 ? _context$sales$bookin6 : context.sales.tempOrder) !== null && _ref7 !== void 0 ? _ref7 : null;
|
|
693
715
|
if (businessAvailability.enabled && !businessAvailability.requirePaymentOnSubmit) {
|
|
694
716
|
deferredAttempt = true;
|
|
695
717
|
setSubmissionError(null);
|
|
@@ -698,8 +720,8 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
698
720
|
if (!isCurrentCheckoutRequest()) return;
|
|
699
721
|
const submitted = require_deferredCheckout.resolveKioskDeferredSubmission(result, liveTempOrder);
|
|
700
722
|
if (!submitted) {
|
|
701
|
-
var
|
|
702
|
-
throw new Error(String((
|
|
723
|
+
var _ref8, _ref9, _result$message, _result$data;
|
|
724
|
+
throw new Error(String((_ref8 = (_ref9 = (_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 && _ref9 !== void 0 ? _ref9 : result === null || result === void 0 || (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.message) !== null && _ref8 !== void 0 ? _ref8 : _pisell_utils.locales.getText("pisell2.big-sale.kiosk.submit-failure")));
|
|
703
725
|
}
|
|
704
726
|
if (platform === "pc" || platform === "h5" || shouldUseConsumerPayment) {
|
|
705
727
|
var _utils$history, _app$history3;
|
|
@@ -728,12 +750,12 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
728
750
|
return;
|
|
729
751
|
}
|
|
730
752
|
if (shouldUseConsumerPayment && context.sales.enableMultiCurrencySettlement && require_index.isVirtualSettlementTempOrder(liveTempOrder)) {
|
|
731
|
-
var
|
|
753
|
+
var _ref12, _ref13, _ref14, _result$data$total_am, _result$data3, _result$data4, _liveTempOrder$summar, _context$summary$summ, _context$sales$bookin11, _context$sales$bookin12, _utils$history2, _app$history4;
|
|
732
754
|
yield context.cart.waitForCartConsistency();
|
|
733
755
|
const result = yield context.cart.submit(void 0, checkoutSubmitOptions);
|
|
734
756
|
if (!require_utils$1.isSalesOrderSubmitSuccess(result)) {
|
|
735
|
-
var
|
|
736
|
-
showCheckoutFailure(String((
|
|
757
|
+
var _ref10, _ref11, _result$message2, _result$data2;
|
|
758
|
+
showCheckoutFailure(String((_ref10 = (_ref11 = (_result$message2 = result === null || result === void 0 ? void 0 : result.message) !== null && _result$message2 !== void 0 ? _result$message2 : result === null || result === void 0 ? void 0 : result.msg) !== null && _ref11 !== void 0 ? _ref11 : result === null || result === void 0 || (_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.message) !== null && _ref10 !== void 0 ? _ref10 : _pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
|
|
737
759
|
return;
|
|
738
760
|
}
|
|
739
761
|
const orderId = require_utils$1.resolveSaleDetailOrderIdFromSalesResult(context.sales, result);
|
|
@@ -741,7 +763,7 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
741
763
|
showCheckoutFailure(String(_pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
|
|
742
764
|
return;
|
|
743
765
|
}
|
|
744
|
-
const totalAmount = (
|
|
766
|
+
const totalAmount = (_ref12 = (_ref13 = (_ref14 = (_result$data$total_am = result === null || result === void 0 || (_result$data3 = result.data) === null || _result$data3 === void 0 ? void 0 : _result$data3.total_amount) !== null && _result$data$total_am !== void 0 ? _result$data$total_am : result === null || result === void 0 || (_result$data4 = result.data) === null || _result$data4 === void 0 ? void 0 : _result$data4.expect_amount) !== null && _ref14 !== void 0 ? _ref14 : liveTempOrder === null || liveTempOrder === void 0 || (_liveTempOrder$summar = liveTempOrder.summary) === null || _liveTempOrder$summar === void 0 ? void 0 : _liveTempOrder$summar.total_amount) !== null && _ref13 !== void 0 ? _ref13 : (_context$summary$summ = context.summary.summary) === null || _context$summary$summ === void 0 ? void 0 : _context$summary$summ.total_amount) !== null && _ref12 !== void 0 ? _ref12 : 0;
|
|
745
767
|
yield context.sales.clearCartAndReset();
|
|
746
768
|
(_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);
|
|
747
769
|
persistKioskSessionView(context.sales.bookingTicket, "catalog");
|
|
@@ -752,8 +774,8 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
752
774
|
return;
|
|
753
775
|
}
|
|
754
776
|
yield context.cart.waitForCartConsistency();
|
|
755
|
-
const currentTempOrder = (
|
|
756
|
-
const currentSummary = (
|
|
777
|
+
const currentTempOrder = (_ref15 = (_context$sales$bookin13 = (_context$sales$bookin14 = context.sales.bookingTicket) === null || _context$sales$bookin14 === void 0 || (_context$sales$bookin15 = _context$sales$bookin14.getTempOrder) === null || _context$sales$bookin15 === void 0 ? void 0 : _context$sales$bookin15.call(_context$sales$bookin14)) !== null && _context$sales$bookin13 !== void 0 ? _context$sales$bookin13 : context.sales.tempOrder) !== null && _ref15 !== void 0 ? _ref15 : null;
|
|
778
|
+
const currentSummary = (_ref16 = (_ref17 = context.summary.summary) !== null && _ref17 !== void 0 ? _ref17 : currentTempOrder === null || currentTempOrder === void 0 ? void 0 : currentTempOrder.summary) !== null && _ref16 !== void 0 ? _ref16 : null;
|
|
757
779
|
const shouldCompleteNoPaymentInPage = require_zeroAmountCheckout.isKioskPlatformZeroAmountCheckout(platform, currentSummary);
|
|
758
780
|
if (shouldUseConsumerPayment && !shouldCompleteNoPaymentInPage && typeof utils.action !== "function") throw new Error("[KioskBigSale] appHelper.utils.action is not available.");
|
|
759
781
|
if (require_zeroAmountCheckout.shouldSubmitKioskOrderBeforeCheckout({
|
|
@@ -761,7 +783,7 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
761
783
|
summary: currentSummary,
|
|
762
784
|
shouldUseConsumerPayment
|
|
763
785
|
})) {
|
|
764
|
-
var _context$sales$bookin16, _context$sales$bookin17,
|
|
786
|
+
var _context$sales$bookin16, _context$sales$bookin17, _ref20, _context$sales$bookin18, _context$sales$bookin19, _context$sales$bookin20;
|
|
765
787
|
const walletAssetsState = (_context$sales$bookin16 = context.sales.bookingTicket) === null || _context$sales$bookin16 === void 0 || (_context$sales$bookin17 = _context$sales$bookin16.getWalletAssetsState) === null || _context$sales$bookin17 === void 0 ? void 0 : _context$sales$bookin17.call(_context$sales$bookin16);
|
|
766
788
|
const deferredWalletPaymentPlan = resolveKioskDeferredWalletPaymentPlan({
|
|
767
789
|
platform,
|
|
@@ -774,8 +796,8 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
774
796
|
if (shouldCompleteNoPaymentInPage) publishKioskCollaborationPreviewStatus(app, "checkout");
|
|
775
797
|
const result = yield context.cart.submit(submitParams, checkoutSubmitOptions);
|
|
776
798
|
if (!require_utils$1.isSalesOrderSubmitSuccess(result)) {
|
|
777
|
-
var
|
|
778
|
-
showCheckoutFailure(String((
|
|
799
|
+
var _ref18, _ref19, _result$message3, _result$data5;
|
|
800
|
+
showCheckoutFailure(String((_ref18 = (_ref19 = (_result$message3 = result === null || result === void 0 ? void 0 : result.message) !== null && _result$message3 !== void 0 ? _result$message3 : result === null || result === void 0 ? void 0 : result.msg) !== null && _ref19 !== void 0 ? _ref19 : result === null || result === void 0 || (_result$data5 = result.data) === null || _result$data5 === void 0 ? void 0 : _result$data5.message) !== null && _ref18 !== void 0 ? _ref18 : _pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
|
|
779
801
|
return;
|
|
780
802
|
}
|
|
781
803
|
const orderId = require_utils$1.resolveSaleDetailOrderIdFromSalesResult(context.sales, result);
|
|
@@ -783,10 +805,10 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
783
805
|
showCheckoutFailure(String(_pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description")));
|
|
784
806
|
return;
|
|
785
807
|
}
|
|
786
|
-
const tempOrder = (
|
|
808
|
+
const tempOrder = (_ref20 = (_context$sales$bookin18 = (_context$sales$bookin19 = context.sales.bookingTicket) === null || _context$sales$bookin19 === void 0 || (_context$sales$bookin20 = _context$sales$bookin19.getTempOrder) === null || _context$sales$bookin20 === void 0 ? void 0 : _context$sales$bookin20.call(_context$sales$bookin19)) !== null && _context$sales$bookin18 !== void 0 ? _context$sales$bookin18 : context.sales.tempOrder) !== null && _ref20 !== void 0 ? _ref20 : null;
|
|
787
809
|
const totalAmount = require_zeroAmountCheckout.resolveKioskSubmittedPayableAmount(result, tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.summary, context.summary.summary);
|
|
788
810
|
if (shouldCompleteNoPaymentInPage) {
|
|
789
|
-
var
|
|
811
|
+
var _ref21;
|
|
790
812
|
const validation = require_zeroAmountCheckout.validateKioskNoPaymentSubmitResult({
|
|
791
813
|
result,
|
|
792
814
|
orderId,
|
|
@@ -798,7 +820,7 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
798
820
|
return;
|
|
799
821
|
}
|
|
800
822
|
setPaymentResult(require_zeroAmountCheckout.resolveKioskNoPaymentResultViewModel({
|
|
801
|
-
summary: (
|
|
823
|
+
summary: (_ref21 = tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.summary) !== null && _ref21 !== void 0 ? _ref21 : currentSummary,
|
|
802
824
|
currencySymbol: (tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.currency_symbol) || "$"
|
|
803
825
|
}));
|
|
804
826
|
persistKioskSessionView(context.sales.bookingTicket, "catalog");
|
|
@@ -870,8 +892,8 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
870
892
|
if (nextPaymentResult.status !== "failed") persistKioskSessionView(context.sales.bookingTicket, "catalog");
|
|
871
893
|
setView(nextPaymentResult.status === "failed" ? "failure" : "success");
|
|
872
894
|
} else if ((result === null || result === void 0 ? void 0 : result.type) === "error" || (result === null || result === void 0 ? void 0 : result.status) === "failed") {
|
|
873
|
-
var
|
|
874
|
-
showCheckoutFailure((
|
|
895
|
+
var _ref22, _result$error, _result$payload2;
|
|
896
|
+
showCheckoutFailure((_ref22 = (_result$error = result === null || result === void 0 ? void 0 : result.error) !== null && _result$error !== void 0 ? _result$error : result === null || result === void 0 || (_result$payload2 = result.payload) === null || _result$payload2 === void 0 ? void 0 : _result$payload2.message) !== null && _ref22 !== void 0 ? _ref22 : _pisell_utils.locales.getText("pisell2.big-sale.kiosk.payment-failure-description"));
|
|
875
897
|
}
|
|
876
898
|
if (require_utils$1.shouldCloseDialogAfterCheckout(result)) {
|
|
877
899
|
var _result$data7;
|
|
@@ -903,7 +925,7 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
903
925
|
}
|
|
904
926
|
});
|
|
905
927
|
return function performCheckout() {
|
|
906
|
-
return
|
|
928
|
+
return _ref23.apply(this, arguments);
|
|
907
929
|
};
|
|
908
930
|
}();
|
|
909
931
|
const hasSelectedCustomerVoucher = () => {
|
|
@@ -912,22 +934,22 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
912
934
|
return (runtimeDiscountList.length > 0 ? runtimeDiscountList : context.cart.discountList || []).some((discount) => require_adapters.isCustomerVoucher(discount) && Boolean(discount === null || discount === void 0 ? void 0 : discount.isSelected));
|
|
913
935
|
};
|
|
914
936
|
const hasAppliedWalletAsset = () => {
|
|
915
|
-
var _context$sales$bookin23, _context$sales$bookin24, _walletAssetsState$se, _walletAssetsState$se2, _walletAssetsState$se3, _walletAssetsState$se4, _walletAssetsState$co, _walletAssetsState$co2,
|
|
937
|
+
var _context$sales$bookin23, _context$sales$bookin24, _walletAssetsState$se, _walletAssetsState$se2, _walletAssetsState$se3, _walletAssetsState$se4, _walletAssetsState$co, _walletAssetsState$co2, _ref24, _context$sales$bookin25, _context$sales$bookin26, _context$sales$bookin27;
|
|
916
938
|
const walletAssetsState = (_context$sales$bookin23 = context.sales.bookingTicket) === null || _context$sales$bookin23 === void 0 || (_context$sales$bookin24 = _context$sales$bookin23.getWalletAssetsState) === null || _context$sales$bookin24 === void 0 ? void 0 : _context$sales$bookin24.call(_context$sales$bookin23);
|
|
917
939
|
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;
|
|
918
|
-
const tempOrder = (
|
|
940
|
+
const tempOrder = (_ref24 = (_context$sales$bookin25 = (_context$sales$bookin26 = context.sales.bookingTicket) === null || _context$sales$bookin26 === void 0 || (_context$sales$bookin27 = _context$sales$bookin26.getTempOrder) === null || _context$sales$bookin27 === void 0 ? void 0 : _context$sales$bookin27.call(_context$sales$bookin26)) !== null && _context$sales$bookin25 !== void 0 ? _context$sales$bookin25 : context.sales.tempOrder) !== null && _ref24 !== void 0 ? _ref24 : null;
|
|
919
941
|
return ((tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.payments) || []).some((payment) => {
|
|
920
942
|
const voucherId = payment === null || payment === void 0 ? void 0 : payment.voucher_id;
|
|
921
943
|
return voucherId !== void 0 && voucherId !== null && String(voucherId).trim() !== "" && Number(voucherId) !== 0;
|
|
922
944
|
});
|
|
923
945
|
};
|
|
924
946
|
const continueCheckout = () => {
|
|
925
|
-
var
|
|
947
|
+
var _ref25, _context$sales$bookin28, _context$sales$bookin29, _context$sales$bookin30;
|
|
926
948
|
if (businessAvailability.enabled && !businessAvailability.requirePaymentOnSubmit) {
|
|
927
949
|
performCheckout();
|
|
928
950
|
return;
|
|
929
951
|
}
|
|
930
|
-
const liveTempOrder = (
|
|
952
|
+
const liveTempOrder = (_ref25 = (_context$sales$bookin28 = (_context$sales$bookin29 = context.sales.bookingTicket) === null || _context$sales$bookin29 === void 0 || (_context$sales$bookin30 = _context$sales$bookin29.getTempOrder) === null || _context$sales$bookin30 === void 0 ? void 0 : _context$sales$bookin30.call(_context$sales$bookin29)) !== null && _context$sales$bookin28 !== void 0 ? _context$sales$bookin28 : context.sales.tempOrder) !== null && _ref25 !== void 0 ? _ref25 : null;
|
|
931
953
|
if (context.sales.enableMultiCurrencySettlement && require_index.isVirtualSettlementTempOrder(liveTempOrder)) {
|
|
932
954
|
performCheckout();
|
|
933
955
|
return;
|
|
@@ -941,7 +963,7 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
941
963
|
setIsVoucherReminderOpen(true);
|
|
942
964
|
};
|
|
943
965
|
const beginCheckoutWithFulfillment = function() {
|
|
944
|
-
var
|
|
966
|
+
var _ref26 = require_asyncToGenerator._asyncToGenerator(function* () {
|
|
945
967
|
if (!(yield businessAvailability.ensureCanShop())) return;
|
|
946
968
|
if (!shouldUseFulfillmentCheckout) {
|
|
947
969
|
continueCheckout();
|
|
@@ -960,11 +982,11 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
960
982
|
}
|
|
961
983
|
});
|
|
962
984
|
return function beginCheckoutWithFulfillment() {
|
|
963
|
-
return
|
|
985
|
+
return _ref26.apply(this, arguments);
|
|
964
986
|
};
|
|
965
987
|
}();
|
|
966
988
|
const handleCheckout = function() {
|
|
967
|
-
var
|
|
989
|
+
var _ref27 = require_asyncToGenerator._asyncToGenerator(function* () {
|
|
968
990
|
if (checkoutEntryOpeningRef.current || checkoutOpeningRef.current || checkoutLoginOpeningRef.current || fulfillmentOpeningRef.current) return;
|
|
969
991
|
checkoutEntryOpeningRef.current = true;
|
|
970
992
|
try {
|
|
@@ -1042,7 +1064,7 @@ function KioskBigSaleTemplate({ isActive = true, osKey, productListPreferencesCh
|
|
|
1042
1064
|
}
|
|
1043
1065
|
});
|
|
1044
1066
|
return function handleCheckout() {
|
|
1045
|
-
return
|
|
1067
|
+
return _ref27.apply(this, arguments);
|
|
1046
1068
|
};
|
|
1047
1069
|
}();
|
|
1048
1070
|
const handleUseVoucherBeforeCheckout = () => {
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const assert = require('node:assert/strict');
|
|
2
|
+
const { readFileSync } = require('node:fs');
|
|
3
|
+
const { join } = require('node:path');
|
|
4
|
+
const test = require('node:test');
|
|
5
|
+
const ts = require('typescript');
|
|
6
|
+
|
|
7
|
+
// Run with node --test; load the pure adapter in memory without a materials build.
|
|
8
|
+
const source = readFileSync(join(__dirname, 'toShoppingCartProducts.ts'), 'utf8');
|
|
9
|
+
const output = ts.transpileModule(source, {
|
|
10
|
+
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2020 },
|
|
11
|
+
});
|
|
12
|
+
const adapter = { exports: {} };
|
|
13
|
+
new Function('exports', output.outputText)(adapter.exports);
|
|
14
|
+
const { toShoppingCartProducts } = adapter.exports;
|
|
15
|
+
|
|
16
|
+
const product = {
|
|
17
|
+
product_id: 477300,
|
|
18
|
+
product_variant_id: 493720,
|
|
19
|
+
product_title: 'Latte',
|
|
20
|
+
selling_price: '5.70',
|
|
21
|
+
num: 1,
|
|
22
|
+
product_sku: {
|
|
23
|
+
option: [{ product_option_item_id: 101, name: 'Almond Milk', add_price: 0.7, num: 1 }],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const toCart = (...products) => toShoppingCartProducts({ orderProducts: products });
|
|
27
|
+
|
|
28
|
+
test('current OS rows retain their metadata identity for cart delete and edit callbacks', () => {
|
|
29
|
+
const uid = '0dd325cf-545e-4665-bda0-d1a26046f78e';
|
|
30
|
+
const input = { ...product, metadata: { unique_identification_number: uid } };
|
|
31
|
+
const [row] = toCart(input);
|
|
32
|
+
assert.equal(row.identity_key, uid);
|
|
33
|
+
assert.equal(row.rowKey, uid);
|
|
34
|
+
assert.equal(row._id, uid);
|
|
35
|
+
assert.equal(row.price, 5.7);
|
|
36
|
+
assert.equal(row.options[0].name, 'Almond Milk');
|
|
37
|
+
assert.equal(input.identity_key, undefined);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('same-SKU option rows remain independently addressable when cart order changes', () => {
|
|
41
|
+
const almond = { ...product, metadata: { unique_identification_number: 'almond-row' } };
|
|
42
|
+
const regular = {
|
|
43
|
+
...product,
|
|
44
|
+
product_sku: { option: [] },
|
|
45
|
+
metadata: { unique_identification_number: 'regular-row' },
|
|
46
|
+
};
|
|
47
|
+
const original = toCart(almond, regular);
|
|
48
|
+
const reordered = toCart(regular, almond);
|
|
49
|
+
assert.notEqual(original[0].identity_key, original[1].identity_key);
|
|
50
|
+
assert.equal(original[0].identity_key, reordered[1].identity_key);
|
|
51
|
+
assert.equal(original[1].identity_key, reordered[0].identity_key);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('metadata identity takes precedence over stale top-level compatibility fields', () => {
|
|
55
|
+
const [row] = toCart({
|
|
56
|
+
...product,
|
|
57
|
+
metadata: { unique_identification_number: 'canonical-row' },
|
|
58
|
+
unique_identification_number: 'old-top-level-row',
|
|
59
|
+
identity_key: 'old-alias-row',
|
|
60
|
+
});
|
|
61
|
+
assert.equal(row.identity_key, 'canonical-row');
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('accepts top-level and legacy OS identities when metadata has no valid identity', () => {
|
|
65
|
+
for (const metadata of [undefined, {}, { unique_identification_number: '' }, { unique_identification_number: 123 }]) {
|
|
66
|
+
const [current, legacy] = toCart(
|
|
67
|
+
{ ...product, metadata, unique_identification_number: 'top-level-row' },
|
|
68
|
+
{ ...product, metadata, identity_key: 'legacy-row' },
|
|
69
|
+
);
|
|
70
|
+
assert.equal(current.identity_key, 'top-level-row');
|
|
71
|
+
assert.equal(legacy.identity_key, 'legacy-row');
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
test('a display-only row key never becomes a deletion identity', () => {
|
|
76
|
+
const [row] = toCart(product);
|
|
77
|
+
assert.equal(row.rowKey, '477300_493720_0');
|
|
78
|
+
assert.equal(row.identity_key, undefined);
|
|
79
|
+
});
|
|
@@ -174,11 +174,15 @@ function toShoppingCartProducts(params) {
|
|
|
174
174
|
const { orderProducts, amountSymbol = "$" } = params;
|
|
175
175
|
if (!Array.isArray(orderProducts)) return [];
|
|
176
176
|
return orderProducts.map((productItem, index) => {
|
|
177
|
-
var _productItem$_origin, _productItem$product_, _productItem$
|
|
177
|
+
var _productItem$_origin, _productItem$metadata, _productItem$product_, _productItem$metadata2;
|
|
178
178
|
const productNum = toSafeNum(productItem === null || productItem === void 0 ? void 0 : productItem.num);
|
|
179
179
|
const unitPrice = getUnitPrice(productItem);
|
|
180
180
|
const callbackData = (productItem === null || productItem === void 0 || (_productItem$_origin = productItem._origin) === null || _productItem$_origin === void 0 ? void 0 : _productItem$_origin.callbackData) || {};
|
|
181
|
-
const identityKey =
|
|
181
|
+
const identityKey = [
|
|
182
|
+
productItem === null || productItem === void 0 || (_productItem$metadata = productItem.metadata) === null || _productItem$metadata === void 0 ? void 0 : _productItem$metadata.unique_identification_number,
|
|
183
|
+
productItem === null || productItem === void 0 ? void 0 : productItem.unique_identification_number,
|
|
184
|
+
productItem === null || productItem === void 0 ? void 0 : productItem.identity_key
|
|
185
|
+
].find((value) => typeof value === "string" && value.length > 0);
|
|
182
186
|
const rowKey = identityKey !== null && identityKey !== void 0 ? identityKey : `${(_productItem$product_ = productItem.product_id) !== null && _productItem$product_ !== void 0 ? _productItem$product_ : "p"}_${productItem.product_variant_id}_${index}`;
|
|
183
187
|
const productOptionString = (typeof (callbackData === null || callbackData === void 0 ? void 0 : callbackData.product_option_string) === "string" ? callbackData.product_option_string.trim() : "") || getVariantProductOptionString(productItem) || void 0;
|
|
184
188
|
const base = require_objectSpread2._objectSpread2({
|
|
@@ -204,7 +208,7 @@ function toShoppingCartProducts(params) {
|
|
|
204
208
|
if (productItem.product_sku) base.product_sku = productItem.product_sku;
|
|
205
209
|
else if (Array.isArray(productItem.product_option_item) && productItem.product_option_item.length) base.product_option_item = productItem.product_option_item;
|
|
206
210
|
if (Array.isArray(productItem.product_bundle) && productItem.product_bundle.length) base.product_bundle = productItem.product_bundle;
|
|
207
|
-
if (productItem === null || productItem === void 0 || (_productItem$
|
|
211
|
+
if (productItem === null || productItem === void 0 || (_productItem$metadata2 = productItem.metadata) === null || _productItem$metadata2 === void 0 ? void 0 : _productItem$metadata2.venue_booking) {
|
|
208
212
|
var _origin$resources2;
|
|
209
213
|
const origin = productItem._origin || {};
|
|
210
214
|
const meta = productItem.metadata || {};
|
|
@@ -1080,6 +1080,8 @@ interface BookingTicketHandle extends PickupTimingHandle {
|
|
|
1080
1080
|
getOpenData?: () => Promise<Record<string, any> | null>;
|
|
1081
1081
|
getContactInfoConfig?: () => Promise<SalesContactInfoConfig>;
|
|
1082
1082
|
validateContactInfo?: () => Promise<void>;
|
|
1083
|
+
/** Online venue-ticket checkout: reject missing configured required products. */
|
|
1084
|
+
validateRequiredProducts?: () => Promise<void>;
|
|
1083
1085
|
/** 写入当前临时订单根字段 tempOrder.buzzer。 */
|
|
1084
1086
|
setPickupRef?: (buzzer: string) => string;
|
|
1085
1087
|
/** 将自助点餐固定为柜台取餐。 */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pisell/private-materials",
|
|
3
|
-
"version": "6.12.
|
|
3
|
+
"version": "6.12.366",
|
|
4
4
|
"main": "./lib/index.js",
|
|
5
5
|
"module": "./es/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
"styled-components": "^6.0.0-rc.3",
|
|
75
75
|
"use-sync-external-store": "^1.6.0",
|
|
76
76
|
"@pisell/pi-payment-sdk": "0.0.4",
|
|
77
|
-
"@pisell/utils": "3.0.7",
|
|
78
|
-
"@pisell/materials": "6.12.87",
|
|
79
77
|
"@pisell/date-picker": "3.0.12",
|
|
78
|
+
"@pisell/materials": "6.12.87",
|
|
79
|
+
"@pisell/utils": "3.0.7",
|
|
80
80
|
"@pisell/icon": "0.0.11"
|
|
81
81
|
},
|
|
82
82
|
"peerDependencies": {
|