@pisell/pisellos 2.2.282 → 2.2.284
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/dist/core/index.js +6 -9
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +2 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +2 -2
- package/dist/modules/Order/index.js +75 -91
- package/dist/modules/Order/types.d.ts +3 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Rules/index.js +1 -4
- package/dist/modules/Schedule/index.js +0 -1
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/modules/Summary/utils.d.ts +1 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +97 -129
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/order/index.js +2 -4
- package/dist/server/modules/products/index.js +24 -42
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +27 -35
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BaseSales/index.js +100 -72
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.js +8 -4
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -252
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.js +45 -55
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +131 -131
- package/lib/effects/index.js +46 -57
- package/lib/index.js +82 -49
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
- package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
- package/lib/model/strategy/adapter/promotion/examples.js +222 -234
- package/lib/model/strategy/adapter/promotion/index.js +1 -51
- package/lib/model/strategy/adapter/promotion/type.js +243 -36
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +23 -42
- package/lib/modules/BookingContext/index.js +158 -136
- package/lib/modules/BookingContext/types.js +46 -32
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
- package/lib/modules/BookingContext/utils/flexible.js +38 -55
- package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
- package/lib/modules/BookingContext/utils/index.js +124 -41
- package/lib/modules/BookingContext/utils/noResource.js +58 -70
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
- package/lib/modules/BookingContext/utils/productExtend.js +202 -155
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
- package/lib/modules/BookingContext/utils/resources.js +209 -167
- package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
- package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +321 -251
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +70 -78
- package/lib/modules/Cart/utils/changePrice.js +22 -50
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +235 -172
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +122 -127
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +70 -76
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +2 -2
- package/lib/modules/Order/index.js +1733 -2121
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +3 -1
- package/lib/modules/Order/types.js +87 -35
- package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
- package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
- package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
- package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
- package/lib/modules/Order/utils.js +814 -647
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +532 -399
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +230 -108
- package/lib/modules/Payment/utils.js +52 -51
- package/lib/modules/Payment/walletpass.js +485 -660
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +113 -123
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +66 -100
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/ResourcePlanner/index.js +60 -61
- package/lib/modules/ResourcePlanner/planner.js +346 -384
- package/lib/modules/ResourcePlanner/types.js +4 -16
- package/lib/modules/Rules/index.js +1218 -959
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +85 -90
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +355 -430
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
- package/lib/modules/Schedule/index.js +100 -114
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -71
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.d.ts +1 -1
- package/lib/modules/Summary/utils.js +773 -418
- package/lib/modules/SurchargeList/index.js +46 -60
- package/lib/modules/SurchargeList/types.js +4 -16
- package/lib/modules/index.js +245 -63
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +3027 -2655
- package/lib/server/modules/floor-plan/index.js +102 -123
- package/lib/server/modules/floor-plan/types.js +15 -30
- package/lib/server/modules/index.js +106 -68
- package/lib/server/modules/menu/index.js +146 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +758 -956
- package/lib/server/modules/order/types.js +122 -33
- package/lib/server/modules/order/utils/filterBookings.js +219 -194
- package/lib/server/modules/order/utils/filterOrders.js +118 -92
- package/lib/server/modules/payment/index.js +59 -83
- package/lib/server/modules/payment/types.js +4 -16
- package/lib/server/modules/products/index.js +575 -459
- package/lib/server/modules/products/types.js +44 -34
- package/lib/server/modules/quotation/index.js +137 -172
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +213 -184
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +135 -123
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/small-ticket.js +479 -456
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BaseSales/index.js +1209 -1412
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
- package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
- package/lib/solution/BaseSales/utils.js +158 -143
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +1527 -1340
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.js +598 -514
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +225 -187
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
- package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
- package/lib/solution/BookingTicket/utils/cartView.js +114 -99
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
- package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +228 -156
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +328 -324
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +832 -864
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +409 -374
- package/lib/solution/ShopDiscount/index.js +226 -232
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +300 -172
- package/lib/solution/UnifiedBookingSales/index.js +437 -487
- package/lib/solution/UnifiedBookingSales/types.js +12 -31
- package/lib/solution/VenueBooking/index.js +811 -879
- package/lib/solution/VenueBooking/types.js +19 -39
- package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
- package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +124 -41
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/payment-number.js +26 -46
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
|
@@ -1,152 +1,154 @@
|
|
|
1
|
-
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
28
2
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
__export(addProductDecision_exports, {
|
|
32
|
-
buildCacheItemFromCartDetail: () => buildCacheItemFromCartDetail,
|
|
33
|
-
buildCacheItemFromDetail: () => buildCacheItemFromDetail,
|
|
34
|
-
buildRequiresDetailPayload: () => buildRequiresDetailPayload,
|
|
35
|
-
decideAddProduct: () => decideAddProduct,
|
|
36
|
-
decideAfterDetail: () => decideAfterDetail,
|
|
37
|
-
decideAutoClose: () => decideAutoClose,
|
|
38
|
-
getIsEject: () => getIsEject,
|
|
39
|
-
getIsOnlySession: () => getIsOnlySession,
|
|
40
|
-
prepareBookingCacheItem: () => prepareBookingCacheItem,
|
|
41
|
-
transformDetailToProductAndBooking: () => transformDetailToProductAndBooking
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
42
5
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
6
|
+
exports.buildCacheItemFromCartDetail = buildCacheItemFromCartDetail;
|
|
7
|
+
exports.buildCacheItemFromDetail = buildCacheItemFromDetail;
|
|
8
|
+
exports.buildRequiresDetailPayload = buildRequiresDetailPayload;
|
|
9
|
+
exports.decideAddProduct = decideAddProduct;
|
|
10
|
+
exports.decideAfterDetail = decideAfterDetail;
|
|
11
|
+
exports.decideAutoClose = decideAutoClose;
|
|
12
|
+
exports.getIsEject = getIsEject;
|
|
13
|
+
exports.getIsOnlySession = getIsOnlySession;
|
|
14
|
+
exports.prepareBookingCacheItem = prepareBookingCacheItem;
|
|
15
|
+
exports.transformDetailToProductAndBooking = transformDetailToProductAndBooking;
|
|
16
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
17
|
+
var _BookingContext = require("../../../modules/BookingContext");
|
|
18
|
+
var _transformBaseProductToOrderProduct = require("../../BaseSales/utils/transformBaseProductToOrderProduct");
|
|
19
|
+
var _weighingProductSku = require("./weighingProductSku");
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
/**
|
|
22
|
+
* cart.addProduct 两阶段决策(与 ticketBooking `handleSelectProduct` 对齐):
|
|
23
|
+
*
|
|
24
|
+
* 1. `requiresDetail`:规格 / SKU / 套餐 / Session / 称重弹窗(门禁:`isOpenDetailModal` / `cartDetailValue` / `open_sold_weight`)
|
|
25
|
+
* 2. `requiresBookingEdit`:资源 / 时间编辑抽屉(门禁:`getIsAutoClose` on prepared cacheItem)
|
|
26
|
+
* 3. `add`:两关均通过,直接 transform + 加车
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/** 资源 / 时间编辑抽屉所需的最小 payload。 */
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 第一段:是否需要打开规格 / SKU 详情弹窗(与 addService `handleSelectProduct` 一致,不用 `getIsEject` 做门禁)。
|
|
33
|
+
*/
|
|
48
34
|
function needsSpecDetailModal(item) {
|
|
49
|
-
if (item
|
|
50
|
-
|
|
51
|
-
if (item
|
|
52
|
-
return true;
|
|
53
|
-
if (!(item == null ? void 0 : item.cartDetailValue))
|
|
54
|
-
return true;
|
|
35
|
+
if (item?.open_sold_weight) return true;
|
|
36
|
+
if (item?.isOpenDetailModal) return true;
|
|
37
|
+
if (!item?.cartDetailValue) return true;
|
|
55
38
|
return false;
|
|
56
39
|
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 第二段:预约商品是否仍需打开资源 / 时间编辑(与 info2 `cacheItem.autoClose` 等价)。
|
|
43
|
+
*/
|
|
57
44
|
function needsBookingEdit(cacheItem, ctx) {
|
|
58
|
-
if (isNormalBookingProduct(cacheItem))
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return !(0, import_BookingContext.getIsAutoClose)(cacheItem, isAutoAllocationOn);
|
|
45
|
+
if (isNormalBookingProduct(cacheItem)) return false;
|
|
46
|
+
const isAutoAllocationOn = ctx?.isAutoAllocationOn || (() => true);
|
|
47
|
+
return !(0, _BookingContext.getIsAutoClose)(cacheItem, isAutoAllocationOn);
|
|
62
48
|
}
|
|
63
49
|
function buildRequiresBookingEditPayload(cacheItem, ctx) {
|
|
64
50
|
return {
|
|
65
51
|
cacheItem,
|
|
66
|
-
customerId: ctx
|
|
67
|
-
date: typeof
|
|
52
|
+
customerId: ctx?.customerId,
|
|
53
|
+
date: typeof ctx?.date === 'string' ? ctx.date : null
|
|
68
54
|
};
|
|
69
55
|
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 加车主决策:对齐 `handleSelectProduct` 两段分支。
|
|
59
|
+
*/
|
|
70
60
|
function decideAddProduct(item, ctx) {
|
|
71
61
|
const derivedCtx = withDerivedBookingCtx(ctx);
|
|
72
62
|
if (needsSpecDetailModal(item)) {
|
|
73
63
|
return {
|
|
74
|
-
action:
|
|
64
|
+
action: 'requiresDetail',
|
|
75
65
|
payload: buildRequiresDetailPayload(item, derivedCtx)
|
|
76
66
|
};
|
|
77
67
|
}
|
|
78
|
-
const cacheItem = prepareBookingCacheItem(
|
|
79
|
-
buildCacheItemFromCartDetail(item, derivedCtx),
|
|
80
|
-
derivedCtx
|
|
81
|
-
);
|
|
68
|
+
const cacheItem = prepareBookingCacheItem(buildCacheItemFromCartDetail(item, derivedCtx), derivedCtx);
|
|
82
69
|
if (needsBookingEdit(cacheItem, derivedCtx)) {
|
|
83
70
|
return {
|
|
84
|
-
action:
|
|
71
|
+
action: 'requiresBookingEdit',
|
|
85
72
|
cacheItem,
|
|
86
73
|
payload: buildRequiresBookingEditPayload(cacheItem, derivedCtx)
|
|
87
74
|
};
|
|
88
75
|
}
|
|
89
|
-
return {
|
|
76
|
+
return {
|
|
77
|
+
action: 'add',
|
|
78
|
+
cacheItem
|
|
79
|
+
};
|
|
90
80
|
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* 规格弹窗 callback 后的第二段决策(对齐 `handleBooking4Service` 内 `cacheItem.autoClose` 分支)。
|
|
84
|
+
*/
|
|
91
85
|
function decideAfterDetail(cacheItem, ctx) {
|
|
92
86
|
const derivedCtx = withDerivedBookingCtx(ctx);
|
|
93
87
|
const extended = prepareBookingCacheItem(cacheItem, derivedCtx);
|
|
94
88
|
if (needsBookingEdit(extended, derivedCtx)) {
|
|
95
89
|
return {
|
|
96
|
-
action:
|
|
90
|
+
action: 'requiresBookingEdit',
|
|
97
91
|
cacheItem: extended,
|
|
98
92
|
payload: buildRequiresBookingEditPayload(extended, derivedCtx)
|
|
99
93
|
};
|
|
100
94
|
}
|
|
101
|
-
return {
|
|
95
|
+
return {
|
|
96
|
+
action: 'add',
|
|
97
|
+
cacheItem: extended
|
|
98
|
+
};
|
|
102
99
|
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated 请用 `decideAddProduct`;保留兼容:autoClose=true 仅表示可直接加车(action=add)。
|
|
103
|
+
*/
|
|
104
|
+
|
|
103
105
|
function isNormalBookingProduct(item) {
|
|
104
|
-
return !(0,
|
|
106
|
+
return !(0, _BookingContext.isBookingProduct)(item);
|
|
105
107
|
}
|
|
106
108
|
function hasPreparedBookingExtend(cacheItem) {
|
|
107
|
-
|
|
108
|
-
if ((0,
|
|
109
|
+
// 场次/时间已写入但资源仍未选中时,须继续走 getProductExtend(对齐 info2 必定调用 getProductExtend)。
|
|
110
|
+
if ((0, _BookingContext.productNeedsResourceExtend)(cacheItem) && !(0, _BookingContext.hasActualResourceSelection)(cacheItem)) {
|
|
109
111
|
return false;
|
|
110
112
|
}
|
|
111
|
-
const ext =
|
|
112
|
-
const hasResourceState = Boolean(
|
|
113
|
-
|
|
114
|
-
);
|
|
115
|
-
const hasSessionState = Boolean(
|
|
116
|
-
(0, import_BookingContext.isSessionProduct)(cacheItem) && ((_a = ext.other) == null ? void 0 : _a.session) && ext.start_time && (ext.end_time || ext.endDate)
|
|
117
|
-
);
|
|
113
|
+
const ext = cacheItem?._extend || {};
|
|
114
|
+
const hasResourceState = Boolean((0, _BookingContext.hasActualResourceSelection)(cacheItem) && ext.capacity && (ext.endDate || ext.end_date));
|
|
115
|
+
const hasSessionState = Boolean((0, _BookingContext.isSessionProduct)(cacheItem) && ext.other?.session && ext.start_time && (ext.end_time || ext.endDate));
|
|
118
116
|
const hasMultiDayState = Boolean(isNormalBookingProduct(cacheItem) === false && isMultiDayLike(cacheItem));
|
|
119
|
-
const hasExplicitTimeState = Boolean(
|
|
120
|
-
ext.duration && (ext.start_date || ext.startDate) && ext.start_time && (ext.end_date && ext.end_time || ext.endDate)
|
|
121
|
-
);
|
|
117
|
+
const hasExplicitTimeState = Boolean(ext.duration && (ext.start_date || ext.startDate) && ext.start_time && (ext.end_date && ext.end_time || ext.endDate));
|
|
122
118
|
return hasResourceState || hasSessionState || hasMultiDayState || hasExplicitTimeState;
|
|
123
119
|
}
|
|
120
|
+
|
|
121
|
+
/** 弹窗 / Host 使用的日历日,与 ticketBooking `state.date.format('YYYY-MM-DD')` 对齐。 */
|
|
124
122
|
function formatBookingDateForUI(date) {
|
|
125
|
-
if (date == null || date ===
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return parsed.isValid() ? parsed.format("YYYY-MM-DD") : null;
|
|
123
|
+
if (date == null || date === '') return null;
|
|
124
|
+
const parsed = (0, _dayjs.default)(date);
|
|
125
|
+
return parsed.isValid() ? parsed.format('YYYY-MM-DD') : null;
|
|
129
126
|
}
|
|
127
|
+
|
|
128
|
+
/** 补齐 presetStartTime(decideAutoClose / transform 与 BookingTicket.buildAddProductCtx 共用)。 */
|
|
130
129
|
function withDerivedBookingCtx(ctx) {
|
|
131
|
-
if (!ctx)
|
|
132
|
-
return {};
|
|
130
|
+
if (!ctx) return {};
|
|
133
131
|
return {
|
|
134
132
|
...ctx,
|
|
135
|
-
presetStartTime: ctx.presetStartTime ?? (0,
|
|
133
|
+
presetStartTime: ctx.presetStartTime ?? (0, _BookingContext.derivePresetStartTimeFromDate)(ctx.date)
|
|
136
134
|
};
|
|
137
135
|
}
|
|
138
136
|
function isMultiDayLike(cacheItem) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return Boolean(
|
|
142
|
-
((_a = cacheItem == null ? void 0 : cacheItem.duration) == null ? void 0 : _a.type) === "days" && ext.duration && ext.start_date && ext.end_date
|
|
143
|
-
);
|
|
137
|
+
const ext = cacheItem?._extend || {};
|
|
138
|
+
return Boolean(cacheItem?.duration?.type === 'days' && ext.duration && ext.start_date && ext.end_date);
|
|
144
139
|
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* 统一补齐预约商品的运行态字段。
|
|
143
|
+
*
|
|
144
|
+
* 新链路不再让决策和提交各自重建 cacheItem;这里作为唯一入口补齐
|
|
145
|
+
* `_extend.resource / capacity / startDate / endDate` 等后续 booking mapper 需要的字段。
|
|
146
|
+
*/
|
|
145
147
|
function prepareBookingCacheItem(cacheItem, ctx) {
|
|
146
148
|
if (isNormalBookingProduct(cacheItem) || hasPreparedBookingExtend(cacheItem)) {
|
|
147
149
|
return cacheItem;
|
|
148
150
|
}
|
|
149
|
-
return (0,
|
|
151
|
+
return (0, _BookingContext.getProductExtend)({
|
|
150
152
|
cacheItem,
|
|
151
153
|
ctx: withDerivedBookingCtx(ctx),
|
|
152
154
|
isDisabledTime: true
|
|
@@ -154,62 +156,83 @@ function prepareBookingCacheItem(cacheItem, ctx) {
|
|
|
154
156
|
}
|
|
155
157
|
function decideAutoClose(item, ctx) {
|
|
156
158
|
const decision = decideAddProduct(item, ctx);
|
|
157
|
-
if (decision.action ===
|
|
158
|
-
return {
|
|
159
|
+
if (decision.action === 'add') {
|
|
160
|
+
return {
|
|
161
|
+
autoClose: true,
|
|
162
|
+
cacheItem: decision.cacheItem
|
|
163
|
+
};
|
|
159
164
|
}
|
|
160
|
-
if (decision.action ===
|
|
161
|
-
return {
|
|
165
|
+
if (decision.action === 'requiresBookingEdit') {
|
|
166
|
+
return {
|
|
167
|
+
autoClose: false,
|
|
168
|
+
cacheItem: decision.cacheItem
|
|
169
|
+
};
|
|
162
170
|
}
|
|
163
|
-
return {
|
|
171
|
+
return {
|
|
172
|
+
autoClose: false
|
|
173
|
+
};
|
|
164
174
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* 替代 info2 `getIsEject`:商品是否需要弹窗(含 type='detail' / option_group / bundle_group / variant / session / sold_by_weight)。
|
|
178
|
+
*/
|
|
179
|
+
function getIsEject(item, type = 'select') {
|
|
180
|
+
const isSession = (0, _BookingContext.isSessionProduct)(item);
|
|
181
|
+
const isSoldByWeight = Boolean(item?.open_sold_weight);
|
|
182
|
+
const need = type === 'detail' || (item?.bundle_group_count || 0) > 0 || (item?.option_group_count || 0) > 0 || (item?.is_variant || 0) > 0 || isSession || isSoldByWeight;
|
|
169
183
|
return need ? 1 : 0;
|
|
170
184
|
}
|
|
185
|
+
|
|
186
|
+
/** 仅 session 商品(且没有 variant/option/package)。 */
|
|
171
187
|
function getIsOnlySession(item) {
|
|
172
|
-
const isSession = (0,
|
|
173
|
-
return !((
|
|
188
|
+
const isSession = (0, _BookingContext.isSessionProduct)(item);
|
|
189
|
+
return !((item?.bundle_group_count || 0) > 0 || (item?.option_group_count || 0) > 0 || (item?.is_variant || 0) > 0) && isSession;
|
|
174
190
|
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* 拼装 requiresDetail payload;showConfig 与 info2 弹窗内部判断一致。
|
|
194
|
+
*/
|
|
175
195
|
function buildRequiresDetailPayload(item, ctx) {
|
|
176
196
|
const isOnlySession = getIsOnlySession(item);
|
|
177
|
-
const isEject = getIsEject(item,
|
|
197
|
+
const isEject = getIsEject(item, ctx?.type || 'select');
|
|
178
198
|
return {
|
|
179
199
|
item,
|
|
180
200
|
showConfig: {
|
|
181
|
-
option: (
|
|
182
|
-
session: (0,
|
|
183
|
-
variant: (
|
|
184
|
-
package: (
|
|
185
|
-
number: Boolean(item
|
|
201
|
+
option: (item?.option_group_count || 0) > 0,
|
|
202
|
+
session: (0, _BookingContext.isSessionProduct)(item),
|
|
203
|
+
variant: (item?.is_variant || 0) > 0,
|
|
204
|
+
package: (item?.bundle_group_count || 0) > 0,
|
|
205
|
+
number: Boolean(item?.open_sold_weight)
|
|
186
206
|
},
|
|
187
207
|
isOnlySession,
|
|
188
208
|
isEject: isEject ? 1 : 0,
|
|
189
|
-
customerId: ctx
|
|
190
|
-
date: formatBookingDateForUI(ctx
|
|
209
|
+
customerId: ctx?.customerId,
|
|
210
|
+
date: formatBookingDateForUI(ctx?.date),
|
|
191
211
|
productData: item
|
|
192
212
|
};
|
|
193
213
|
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* 用 item.cartDetailValue 拼装一个 cacheItem 雏形(与 info2 `handleDirectAddService` 等价路径)。
|
|
217
|
+
* 这里只补 `_extend.start_date / quantity / other` 等运行态字段;后续走 getProductExtend 才会补齐资源 / 时间。
|
|
218
|
+
*/
|
|
194
219
|
function buildCacheItemFromCartDetail(item, ctx) {
|
|
195
|
-
var _a;
|
|
196
220
|
const cartDetailValue = item.cartDetailValue || {};
|
|
197
221
|
const other = JSON.parse(JSON.stringify(cartDetailValue || {}));
|
|
198
222
|
other.session = cartDetailValue.session;
|
|
223
|
+
/** 列表/接口可能只带 product_id 不带 id,勿用 item.id 覆盖掉已有 product_id */
|
|
199
224
|
const resolvedId = item.id ?? item.product_id;
|
|
200
|
-
let extend = (0,
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
{ date: ctx == null ? void 0 : ctx.date }
|
|
212
|
-
);
|
|
225
|
+
let extend = (0, _BookingContext.applySessionTimesToExtend)(item, {
|
|
226
|
+
start_date: ctx?.date || undefined,
|
|
227
|
+
/** 列表连点 / 防抖合并时以 ctx.quantity 为准,避免 cartDetailValue 默认 1 盖掉合并数量 */
|
|
228
|
+
quantity: ctx?.quantity ?? cartDetailValue?.quantity ?? 1,
|
|
229
|
+
product_name: item.title,
|
|
230
|
+
other,
|
|
231
|
+
isNormalProduct: !(0, _BookingContext.isBookingProduct)(item),
|
|
232
|
+
price: item?._extend?.price ?? item?.price
|
|
233
|
+
}, {
|
|
234
|
+
date: ctx?.date
|
|
235
|
+
});
|
|
213
236
|
return {
|
|
214
237
|
...item,
|
|
215
238
|
id: resolvedId,
|
|
@@ -219,104 +242,119 @@ function buildCacheItemFromCartDetail(item, ctx) {
|
|
|
219
242
|
new: 1
|
|
220
243
|
};
|
|
221
244
|
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* 用 Info2 callback 的 (e, extension_type, detail) 拼装 cacheItem。
|
|
248
|
+
*
|
|
249
|
+
* 保留 detail._extend 中的 pricing / note(规格弹窗改价、备注等),
|
|
250
|
+
* 再叠加 session 时间、ctx.quantity 等运行态字段;other 以 callback `e` 为准。
|
|
251
|
+
*/
|
|
222
252
|
function buildCacheItemFromDetail(item, detailResult, ctx) {
|
|
223
|
-
var _a, _b, _c;
|
|
224
253
|
const _currentItem = detailResult.detail || item;
|
|
225
254
|
const _detail = _currentItem;
|
|
226
|
-
const detailExtend =
|
|
255
|
+
const detailExtend = _detail?._extend || {};
|
|
227
256
|
const other = JSON.parse(JSON.stringify(detailResult.e || {}));
|
|
228
|
-
other.session =
|
|
257
|
+
other.session = detailResult.e?.session;
|
|
229
258
|
const resolvedId = _currentItem.id ?? _currentItem.product_id;
|
|
230
|
-
const mergedItem = {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
259
|
+
const mergedItem = {
|
|
260
|
+
...item,
|
|
261
|
+
..._detail,
|
|
262
|
+
extension_type: _detail.extension_type ?? item.extension_type
|
|
263
|
+
};
|
|
264
|
+
const runtimeExtend = (0, _BookingContext.applySessionTimesToExtend)(mergedItem, {
|
|
265
|
+
start_date: ctx?.date || detailExtend.start_date || undefined,
|
|
266
|
+
quantity: ctx?.quantity ?? detailResult.e?.quantity ?? detailExtend.quantity ?? 1,
|
|
267
|
+
price: detailExtend.price ?? _detail?.price ?? item?.price,
|
|
268
|
+
product_name: _currentItem.title ?? detailExtend.product_name,
|
|
269
|
+
other,
|
|
270
|
+
isNormalProduct: !(0, _BookingContext.isBookingProduct)(mergedItem)
|
|
271
|
+
}, {
|
|
272
|
+
date: ctx?.date
|
|
273
|
+
});
|
|
243
274
|
const extend = {
|
|
244
275
|
...detailExtend,
|
|
245
276
|
...runtimeExtend,
|
|
246
277
|
other
|
|
247
278
|
};
|
|
248
|
-
const note = detailExtend.note ??
|
|
279
|
+
const note = detailExtend.note ?? _detail?.note;
|
|
249
280
|
return {
|
|
250
281
|
..._detail,
|
|
251
282
|
id: resolvedId,
|
|
252
283
|
product_id: resolvedId,
|
|
253
284
|
extension_type: mergedItem.extension_type,
|
|
254
|
-
_key:
|
|
255
|
-
...note != null && note !==
|
|
285
|
+
_key: detailResult.e?.key,
|
|
286
|
+
...(note != null && note !== '' ? {
|
|
287
|
+
note: String(note)
|
|
288
|
+
} : {}),
|
|
256
289
|
_extend: extend,
|
|
257
290
|
new: 1
|
|
258
291
|
};
|
|
259
292
|
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* `transformDetailToProductAndBooking`:把 cacheItem 拆成 OS `addProductToOrder` 所需的 `(product, booking)`。
|
|
296
|
+
*
|
|
297
|
+
* - `product` 走 `transformBaseProductToOrderProduct`(沿用 BaseSales 现有 mapper)。
|
|
298
|
+
* - `booking` 走 `cacheItemToBookingInput`(严格按 TEMP_ORDER_FIELDS_SUMMARY.md 协议)。
|
|
299
|
+
* - 普通商品(无 duration / 无 schedules)不产 booking,与 info2 一致。
|
|
300
|
+
*/
|
|
260
301
|
function transformDetailToProductAndBooking(cacheItem, ctx) {
|
|
261
302
|
const preparedCacheItem = prepareBookingCacheItem(cacheItem, withDerivedBookingCtx(ctx));
|
|
262
303
|
const payload = buildBasePayloadFromCacheItem(preparedCacheItem, ctx);
|
|
263
|
-
const productInput = (0,
|
|
304
|
+
const productInput = (0, _transformBaseProductToOrderProduct.transformBaseProductToOrderProduct)({
|
|
264
305
|
payload,
|
|
265
306
|
sourceProduct: preparedCacheItem
|
|
266
307
|
});
|
|
267
308
|
if (!productInput) {
|
|
268
|
-
throw new Error(
|
|
269
|
-
"[BookingTicket] transformDetailToProductAndBooking: product transform failed (missing numeric item.id / item.product_id)"
|
|
270
|
-
);
|
|
309
|
+
throw new Error('[BookingTicket] transformDetailToProductAndBooking: product transform failed (missing numeric item.id / item.product_id)');
|
|
271
310
|
}
|
|
272
311
|
const isNormalProduct = isNormalBookingProduct(preparedCacheItem);
|
|
273
312
|
let booking;
|
|
274
313
|
if (!isNormalProduct) {
|
|
275
|
-
booking = (0,
|
|
314
|
+
booking = (0, _BookingContext.cacheItemToBookingInput)(preparedCacheItem, {
|
|
315
|
+
bookingConfig: ctx?.bookingConfig
|
|
316
|
+
});
|
|
276
317
|
}
|
|
277
|
-
return {
|
|
318
|
+
return {
|
|
319
|
+
product: productInput,
|
|
320
|
+
booking,
|
|
321
|
+
cacheItem: preparedCacheItem
|
|
322
|
+
};
|
|
278
323
|
}
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* 把 cacheItem._extend.other 中的字段 + 顶层运行态拼成 `BaseProductDetailPayload`。
|
|
327
|
+
*/
|
|
279
328
|
function buildBasePayloadFromCacheItem(cacheItem, ctx) {
|
|
280
|
-
|
|
281
|
-
const
|
|
282
|
-
const
|
|
283
|
-
const
|
|
284
|
-
const
|
|
285
|
-
const productSku = (0, import_weighingProductSku.buildProductSkuFromCacheItem)(cacheItem);
|
|
329
|
+
const other = cacheItem?._extend?.other || {};
|
|
330
|
+
const quantity = ctx?.quantity != null && ctx.quantity > 0 ? ctx.quantity : cacheItem?._extend?.quantity ?? 1;
|
|
331
|
+
const resolvedPid = cacheItem?.product_id ?? cacheItem?.id;
|
|
332
|
+
const extend = cacheItem?._extend || {};
|
|
333
|
+
const productSku = (0, _weighingProductSku.buildProductSkuFromCacheItem)(cacheItem);
|
|
286
334
|
return {
|
|
287
|
-
id:
|
|
335
|
+
id: cacheItem?.id ?? cacheItem?.product_id,
|
|
288
336
|
product_id: resolvedPid,
|
|
289
|
-
variant_id:
|
|
337
|
+
variant_id: other?.product_variant_id ?? other?.variant_id ?? 0,
|
|
290
338
|
quantity,
|
|
291
339
|
// 规格弹窗本次选择是 option 权威源,避免目录/旧订单里的空 option 覆盖它。
|
|
292
|
-
product_sku: productSku ? {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
340
|
+
product_sku: productSku ? {
|
|
341
|
+
...productSku,
|
|
342
|
+
option: other?.option || []
|
|
343
|
+
} : undefined,
|
|
344
|
+
option: other?.option || [],
|
|
345
|
+
bundle: other?.bundle || extend?.skuValue?.bundle || extend?._skuValue?.bundle || [],
|
|
346
|
+
unique: other?.unique,
|
|
347
|
+
session: other?.session,
|
|
348
|
+
note: extend?.note,
|
|
349
|
+
price: extend?.price ?? cacheItem?.price,
|
|
350
|
+
selling_price: extend?.price ?? cacheItem?.price,
|
|
351
|
+
line_total: extend?.total,
|
|
352
|
+
total: extend?.total,
|
|
353
|
+
origin_total: extend?.origin_total,
|
|
354
|
+
price_override: extend?.priceOverride,
|
|
355
|
+
bundle_edit: extend?.bundle_edit,
|
|
356
|
+
discount_reason: extend?.discount_reason,
|
|
357
|
+
discount_list: cacheItem?.discount_list,
|
|
307
358
|
_extend: extend
|
|
308
359
|
};
|
|
309
|
-
}
|
|
310
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
311
|
-
0 && (module.exports = {
|
|
312
|
-
buildCacheItemFromCartDetail,
|
|
313
|
-
buildCacheItemFromDetail,
|
|
314
|
-
buildRequiresDetailPayload,
|
|
315
|
-
decideAddProduct,
|
|
316
|
-
decideAfterDetail,
|
|
317
|
-
decideAutoClose,
|
|
318
|
-
getIsEject,
|
|
319
|
-
getIsOnlySession,
|
|
320
|
-
prepareBookingCacheItem,
|
|
321
|
-
transformDetailToProductAndBooking
|
|
322
|
-
});
|
|
360
|
+
}
|