@pisell/pisellos 2.2.180 → 2.2.182
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/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/modules/BookingContext/index.d.ts +37 -0
- package/dist/modules/BookingContext/index.js +436 -0
- package/dist/modules/BookingContext/types.d.ts +102 -0
- package/dist/modules/BookingContext/types.js +51 -0
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +276 -0
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +137 -0
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +75 -0
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +215 -0
- package/dist/modules/BookingContext/utils/flexible.d.ts +28 -0
- package/dist/modules/BookingContext/utils/flexible.js +56 -0
- package/dist/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
- package/dist/modules/BookingContext/utils/formatResourceList.js +38 -0
- package/dist/modules/BookingContext/utils/index.d.ts +11 -0
- package/dist/modules/BookingContext/utils/index.js +11 -0
- package/dist/modules/BookingContext/utils/noResource.d.ts +13 -0
- package/dist/modules/BookingContext/utils/noResource.js +77 -0
- package/dist/modules/BookingContext/utils/productExtend.d.ts +72 -0
- package/dist/modules/BookingContext/utils/productExtend.js +339 -0
- package/dist/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
- package/dist/modules/BookingContext/utils/resourceErrors.js +74 -0
- package/dist/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
- package/dist/modules/BookingContext/utils/resourceSelection.js +24 -0
- package/dist/modules/BookingContext/utils/resources.d.ts +80 -0
- package/dist/modules/BookingContext/utils/resources.js +486 -0
- package/dist/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
- package/dist/modules/BookingContext/utils/serviceTimes.js +151 -0
- package/dist/modules/BookingContext/utils/timeSlices.d.ts +42 -0
- package/dist/modules/BookingContext/utils/timeSlices.js +100 -0
- package/dist/modules/Customer/index.d.ts +6 -0
- package/dist/modules/Customer/index.js +129 -83
- package/dist/modules/Customer/types.d.ts +2 -0
- package/dist/modules/Discount/index.js +4 -3
- package/dist/modules/Discount/types.d.ts +1 -0
- package/dist/modules/Order/index.d.ts +101 -10
- package/dist/modules/Order/index.js +1444 -490
- package/dist/modules/Order/types.d.ts +201 -18
- package/dist/modules/Order/types.js +31 -0
- package/dist/modules/Order/utils/manualProductDiscount.d.ts +106 -0
- package/dist/modules/Order/utils/manualProductDiscount.js +210 -0
- package/dist/modules/Order/utils.d.ts +83 -1
- package/dist/modules/Order/utils.js +405 -61
- package/dist/modules/Product/index.d.ts +1 -1
- package/dist/modules/Quotation/index.d.ts +0 -1
- package/dist/modules/Quotation/index.js +23 -21
- package/dist/modules/Rules/index.d.ts +4 -0
- package/dist/modules/Rules/index.js +43 -39
- package/dist/modules/Rules/types.d.ts +1 -0
- package/dist/modules/SalesSummary/index.js +4 -2
- package/dist/modules/SalesSummary/utils.js +21 -7
- package/dist/modules/Schedule/index.js +6 -2
- package/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.js +2 -1
- package/dist/server/index.js +87 -29
- package/dist/server/modules/order/index.d.ts +23 -0
- package/dist/server/modules/order/index.js +123 -46
- package/dist/server/modules/order/utils/filterOrders.js +20 -6
- package/dist/server/modules/products/index.d.ts +1 -1
- package/dist/server/modules/products/index.js +130 -113
- package/dist/server/modules/schedule/index.js +13 -6
- package/dist/solution/BaseSales/index.d.ts +89 -7
- package/dist/solution/BaseSales/index.js +1489 -366
- package/dist/solution/BaseSales/types.d.ts +67 -1
- package/dist/solution/BaseSales/types.js +3 -1
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +275 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +1258 -0
- package/dist/solution/BaseSales/utils/quotationPrice.d.ts +7 -0
- package/dist/solution/BaseSales/utils/quotationPrice.js +237 -0
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +68 -16
- package/dist/solution/BaseSales/utils.js +46 -8
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +152 -2
- package/dist/solution/BookingTicket/index.js +848 -184
- package/dist/solution/BookingTicket/types.d.ts +2 -0
- package/dist/solution/BookingTicket/types.js +3 -0
- package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +113 -0
- package/dist/solution/BookingTicket/utils/addProductDecision.js +346 -0
- package/dist/solution/BookingTicket/utils/cartView.js +4 -2
- package/dist/solution/ScanOrder/index.d.ts +9 -3
- package/dist/solution/ScanOrder/index.js +231 -128
- package/dist/solution/ScanOrder/utils.js +46 -8
- package/dist/solution/VenueBooking/index.d.ts +5 -2
- package/dist/solution/VenueBooking/index.js +103 -55
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +4 -0
- package/dist/solution/VenueBooking/utils/slotMerge.js +10 -0
- package/lib/model/strategy/adapter/promotion/index.js +49 -0
- package/lib/modules/BookingContext/index.d.ts +37 -0
- package/lib/modules/BookingContext/index.js +297 -0
- package/lib/modules/BookingContext/types.d.ts +102 -0
- package/lib/modules/BookingContext/types.js +34 -0
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +16 -0
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +271 -0
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +8 -0
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +141 -0
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +75 -0
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +198 -0
- package/lib/modules/BookingContext/utils/flexible.d.ts +28 -0
- package/lib/modules/BookingContext/utils/flexible.js +80 -0
- package/lib/modules/BookingContext/utils/formatResourceList.d.ts +8 -0
- package/lib/modules/BookingContext/utils/formatResourceList.js +50 -0
- package/lib/modules/BookingContext/utils/index.d.ts +11 -0
- package/lib/modules/BookingContext/utils/index.js +43 -0
- package/lib/modules/BookingContext/utils/noResource.d.ts +13 -0
- package/lib/modules/BookingContext/utils/noResource.js +90 -0
- package/lib/modules/BookingContext/utils/productExtend.d.ts +72 -0
- package/lib/modules/BookingContext/utils/productExtend.js +283 -0
- package/lib/modules/BookingContext/utils/resourceErrors.d.ts +41 -0
- package/lib/modules/BookingContext/utils/resourceErrors.js +80 -0
- package/lib/modules/BookingContext/utils/resourceSelection.d.ts +7 -0
- package/lib/modules/BookingContext/utils/resourceSelection.js +46 -0
- package/lib/modules/BookingContext/utils/resources.d.ts +80 -0
- package/lib/modules/BookingContext/utils/resources.js +377 -0
- package/lib/modules/BookingContext/utils/serviceTimes.d.ts +55 -0
- package/lib/modules/BookingContext/utils/serviceTimes.js +162 -0
- package/lib/modules/BookingContext/utils/timeSlices.d.ts +42 -0
- package/lib/modules/BookingContext/utils/timeSlices.js +124 -0
- package/lib/modules/Customer/index.d.ts +6 -0
- package/lib/modules/Customer/index.js +26 -11
- package/lib/modules/Customer/types.d.ts +2 -0
- package/lib/modules/Discount/index.js +5 -1
- package/lib/modules/Discount/types.d.ts +1 -0
- package/lib/modules/Order/index.d.ts +101 -10
- package/lib/modules/Order/index.js +751 -114
- package/lib/modules/Order/types.d.ts +201 -18
- package/lib/modules/Order/types.js +1 -0
- package/lib/modules/Order/utils/manualProductDiscount.d.ts +106 -0
- package/lib/modules/Order/utils/manualProductDiscount.js +206 -0
- package/lib/modules/Order/utils.d.ts +83 -1
- package/lib/modules/Order/utils.js +340 -22
- package/lib/modules/Product/index.d.ts +1 -1
- package/lib/modules/Quotation/index.d.ts +0 -1
- package/lib/modules/Quotation/index.js +18 -15
- package/lib/modules/Rules/index.d.ts +4 -0
- package/lib/modules/Rules/index.js +26 -27
- package/lib/modules/Rules/types.d.ts +1 -0
- package/lib/modules/SalesSummary/index.js +4 -2
- package/lib/modules/SalesSummary/utils.js +21 -7
- package/lib/modules/Schedule/index.js +3 -1
- package/lib/modules/index.d.ts +1 -0
- package/lib/modules/index.js +3 -1
- package/lib/server/index.js +41 -4
- package/lib/server/modules/order/index.d.ts +23 -0
- package/lib/server/modules/order/index.js +46 -14
- package/lib/server/modules/order/utils/filterOrders.js +12 -4
- package/lib/server/modules/products/index.d.ts +1 -1
- package/lib/server/modules/products/index.js +30 -20
- package/lib/server/modules/schedule/index.js +2 -1
- package/lib/solution/BaseSales/index.d.ts +89 -7
- package/lib/solution/BaseSales/index.js +742 -23
- package/lib/solution/BaseSales/types.d.ts +67 -1
- package/lib/solution/BaseSales/types.js +3 -1
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +275 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +836 -0
- package/lib/solution/BaseSales/utils/quotationPrice.d.ts +7 -0
- package/lib/solution/BaseSales/utils/quotationPrice.js +277 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +71 -12
- package/lib/solution/BaseSales/utils.js +46 -6
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +152 -2
- package/lib/solution/BookingTicket/index.js +389 -9
- package/lib/solution/BookingTicket/types.d.ts +2 -0
- package/lib/solution/BookingTicket/types.js +6 -0
- package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +113 -0
- package/lib/solution/BookingTicket/utils/addProductDecision.js +318 -0
- package/lib/solution/BookingTicket/utils/cartView.js +4 -2
- package/lib/solution/ScanOrder/index.d.ts +9 -3
- package/lib/solution/ScanOrder/index.js +147 -66
- package/lib/solution/ScanOrder/utils.js +46 -6
- package/lib/solution/VenueBooking/index.d.ts +5 -2
- package/lib/solution/VenueBooking/index.js +50 -14
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +4 -0
- package/lib/solution/VenueBooking/utils/slotMerge.js +10 -0
- package/package.json +1 -1
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
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);
|
|
28
|
+
|
|
29
|
+
// src/solution/BookingTicket/utils/addProductDecision.ts
|
|
30
|
+
var addProductDecision_exports = {};
|
|
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
|
|
42
|
+
});
|
|
43
|
+
module.exports = __toCommonJS(addProductDecision_exports);
|
|
44
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
45
|
+
var import_BookingContext = require("../../../modules/BookingContext");
|
|
46
|
+
var import_transformBaseProductToOrderProduct = require("../../BaseSales/utils/transformBaseProductToOrderProduct");
|
|
47
|
+
function needsSpecDetailModal(item) {
|
|
48
|
+
if (item == null ? void 0 : item.open_sold_weight)
|
|
49
|
+
return true;
|
|
50
|
+
if (item == null ? void 0 : item.isOpenDetailModal)
|
|
51
|
+
return true;
|
|
52
|
+
if (!(item == null ? void 0 : item.cartDetailValue))
|
|
53
|
+
return true;
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
function needsBookingEdit(cacheItem, ctx) {
|
|
57
|
+
if (isNormalBookingProduct(cacheItem))
|
|
58
|
+
return false;
|
|
59
|
+
const isAutoAllocationOn = (ctx == null ? void 0 : ctx.isAutoAllocationOn) || (() => true);
|
|
60
|
+
return !(0, import_BookingContext.getIsAutoClose)(cacheItem, isAutoAllocationOn);
|
|
61
|
+
}
|
|
62
|
+
function buildRequiresBookingEditPayload(cacheItem, ctx) {
|
|
63
|
+
return {
|
|
64
|
+
cacheItem,
|
|
65
|
+
customerId: ctx == null ? void 0 : ctx.customerId,
|
|
66
|
+
date: typeof (ctx == null ? void 0 : ctx.date) === "string" ? ctx.date : null
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function decideAddProduct(item, ctx) {
|
|
70
|
+
const derivedCtx = withDerivedBookingCtx(ctx);
|
|
71
|
+
if (needsSpecDetailModal(item)) {
|
|
72
|
+
return {
|
|
73
|
+
action: "requiresDetail",
|
|
74
|
+
payload: buildRequiresDetailPayload(item, derivedCtx)
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const cacheItem = prepareBookingCacheItem(
|
|
78
|
+
buildCacheItemFromCartDetail(item, derivedCtx),
|
|
79
|
+
derivedCtx
|
|
80
|
+
);
|
|
81
|
+
if (needsBookingEdit(cacheItem, derivedCtx)) {
|
|
82
|
+
return {
|
|
83
|
+
action: "requiresBookingEdit",
|
|
84
|
+
cacheItem,
|
|
85
|
+
payload: buildRequiresBookingEditPayload(cacheItem, derivedCtx)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return { action: "add", cacheItem };
|
|
89
|
+
}
|
|
90
|
+
function decideAfterDetail(cacheItem, ctx) {
|
|
91
|
+
const derivedCtx = withDerivedBookingCtx(ctx);
|
|
92
|
+
const extended = prepareBookingCacheItem(cacheItem, derivedCtx);
|
|
93
|
+
if (needsBookingEdit(extended, derivedCtx)) {
|
|
94
|
+
return {
|
|
95
|
+
action: "requiresBookingEdit",
|
|
96
|
+
cacheItem: extended,
|
|
97
|
+
payload: buildRequiresBookingEditPayload(extended, derivedCtx)
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return { action: "add", cacheItem: extended };
|
|
101
|
+
}
|
|
102
|
+
function isNormalBookingProduct(item) {
|
|
103
|
+
return !(0, import_BookingContext.isBookingProduct)(item);
|
|
104
|
+
}
|
|
105
|
+
function hasPreparedBookingExtend(cacheItem) {
|
|
106
|
+
var _a;
|
|
107
|
+
if ((0, import_BookingContext.productNeedsResourceExtend)(cacheItem) && !(0, import_BookingContext.hasActualResourceSelection)(cacheItem)) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const ext = (cacheItem == null ? void 0 : cacheItem._extend) || {};
|
|
111
|
+
const hasResourceState = Boolean(
|
|
112
|
+
(0, import_BookingContext.hasActualResourceSelection)(cacheItem) && ext.capacity && (ext.endDate || ext.end_date)
|
|
113
|
+
);
|
|
114
|
+
const hasSessionState = Boolean(
|
|
115
|
+
(0, import_BookingContext.isSessionProduct)(cacheItem) && ((_a = ext.other) == null ? void 0 : _a.session) && ext.start_time && (ext.end_time || ext.endDate)
|
|
116
|
+
);
|
|
117
|
+
const hasMultiDayState = Boolean(isNormalBookingProduct(cacheItem) === false && isMultiDayLike(cacheItem));
|
|
118
|
+
const hasExplicitTimeState = Boolean(
|
|
119
|
+
ext.duration && (ext.start_date || ext.startDate) && ext.start_time && (ext.end_date && ext.end_time || ext.endDate)
|
|
120
|
+
);
|
|
121
|
+
return hasResourceState || hasSessionState || hasMultiDayState || hasExplicitTimeState;
|
|
122
|
+
}
|
|
123
|
+
function formatBookingDateForUI(date) {
|
|
124
|
+
if (date == null || date === "")
|
|
125
|
+
return null;
|
|
126
|
+
const parsed = (0, import_dayjs.default)(date);
|
|
127
|
+
return parsed.isValid() ? parsed.format("YYYY-MM-DD") : null;
|
|
128
|
+
}
|
|
129
|
+
function withDerivedBookingCtx(ctx) {
|
|
130
|
+
if (!ctx)
|
|
131
|
+
return {};
|
|
132
|
+
return {
|
|
133
|
+
...ctx,
|
|
134
|
+
presetStartTime: ctx.presetStartTime ?? (0, import_BookingContext.derivePresetStartTimeFromDate)(ctx.date)
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function isMultiDayLike(cacheItem) {
|
|
138
|
+
var _a;
|
|
139
|
+
const ext = (cacheItem == null ? void 0 : cacheItem._extend) || {};
|
|
140
|
+
return Boolean(
|
|
141
|
+
((_a = cacheItem == null ? void 0 : cacheItem.duration) == null ? void 0 : _a.type) === "days" && ext.duration && ext.start_date && ext.end_date
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
function prepareBookingCacheItem(cacheItem, ctx) {
|
|
145
|
+
if (isNormalBookingProduct(cacheItem) || hasPreparedBookingExtend(cacheItem)) {
|
|
146
|
+
return cacheItem;
|
|
147
|
+
}
|
|
148
|
+
return (0, import_BookingContext.getProductExtend)({
|
|
149
|
+
cacheItem,
|
|
150
|
+
ctx: withDerivedBookingCtx(ctx),
|
|
151
|
+
isDisabledTime: true
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function decideAutoClose(item, ctx) {
|
|
155
|
+
const decision = decideAddProduct(item, ctx);
|
|
156
|
+
if (decision.action === "add") {
|
|
157
|
+
return { autoClose: true, cacheItem: decision.cacheItem };
|
|
158
|
+
}
|
|
159
|
+
if (decision.action === "requiresBookingEdit") {
|
|
160
|
+
return { autoClose: false, cacheItem: decision.cacheItem };
|
|
161
|
+
}
|
|
162
|
+
return { autoClose: false };
|
|
163
|
+
}
|
|
164
|
+
function getIsEject(item, type = "select") {
|
|
165
|
+
const isSession = (0, import_BookingContext.isSessionProduct)(item);
|
|
166
|
+
const isSoldByWeight = Boolean(item == null ? void 0 : item.open_sold_weight);
|
|
167
|
+
const need = type === "detail" || ((item == null ? void 0 : item.bundle_group_count) || 0) > 0 || ((item == null ? void 0 : item.option_group_count) || 0) > 0 || ((item == null ? void 0 : item.is_variant) || 0) > 0 || isSession || isSoldByWeight;
|
|
168
|
+
return need ? 1 : 0;
|
|
169
|
+
}
|
|
170
|
+
function getIsOnlySession(item) {
|
|
171
|
+
const isSession = (0, import_BookingContext.isSessionProduct)(item);
|
|
172
|
+
return !(((item == null ? void 0 : item.bundle_group_count) || 0) > 0 || ((item == null ? void 0 : item.option_group_count) || 0) > 0 || ((item == null ? void 0 : item.is_variant) || 0) > 0) && isSession;
|
|
173
|
+
}
|
|
174
|
+
function buildRequiresDetailPayload(item, ctx) {
|
|
175
|
+
const isOnlySession = getIsOnlySession(item);
|
|
176
|
+
const isEject = getIsEject(item, (ctx == null ? void 0 : ctx.type) || "select");
|
|
177
|
+
return {
|
|
178
|
+
item,
|
|
179
|
+
showConfig: {
|
|
180
|
+
option: ((item == null ? void 0 : item.option_group_count) || 0) > 0,
|
|
181
|
+
session: (0, import_BookingContext.isSessionProduct)(item),
|
|
182
|
+
variant: ((item == null ? void 0 : item.is_variant) || 0) > 0,
|
|
183
|
+
package: ((item == null ? void 0 : item.bundle_group_count) || 0) > 0,
|
|
184
|
+
number: Boolean(item == null ? void 0 : item.open_sold_weight)
|
|
185
|
+
},
|
|
186
|
+
isOnlySession,
|
|
187
|
+
isEject: isEject ? 1 : 0,
|
|
188
|
+
customerId: ctx == null ? void 0 : ctx.customerId,
|
|
189
|
+
date: formatBookingDateForUI(ctx == null ? void 0 : ctx.date),
|
|
190
|
+
productData: item
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function buildCacheItemFromCartDetail(item, ctx) {
|
|
194
|
+
var _a;
|
|
195
|
+
const cartDetailValue = item.cartDetailValue || {};
|
|
196
|
+
const other = JSON.parse(JSON.stringify(cartDetailValue || {}));
|
|
197
|
+
other.session = cartDetailValue.session;
|
|
198
|
+
const resolvedId = item.id ?? item.product_id;
|
|
199
|
+
let extend = (0, import_BookingContext.applySessionTimesToExtend)(
|
|
200
|
+
item,
|
|
201
|
+
{
|
|
202
|
+
start_date: (ctx == null ? void 0 : ctx.date) || void 0,
|
|
203
|
+
/** 列表连点 / 防抖合并时以 ctx.quantity 为准,避免 cartDetailValue 默认 1 盖掉合并数量 */
|
|
204
|
+
quantity: (ctx == null ? void 0 : ctx.quantity) ?? (cartDetailValue == null ? void 0 : cartDetailValue.quantity) ?? 1,
|
|
205
|
+
product_name: item.title,
|
|
206
|
+
other,
|
|
207
|
+
isNormalProduct: !(0, import_BookingContext.isBookingProduct)(item),
|
|
208
|
+
price: ((_a = item == null ? void 0 : item._extend) == null ? void 0 : _a.price) ?? (item == null ? void 0 : item.price)
|
|
209
|
+
},
|
|
210
|
+
{ date: ctx == null ? void 0 : ctx.date }
|
|
211
|
+
);
|
|
212
|
+
return {
|
|
213
|
+
...item,
|
|
214
|
+
id: resolvedId,
|
|
215
|
+
product_id: resolvedId,
|
|
216
|
+
_key: cartDetailValue.key,
|
|
217
|
+
_extend: extend,
|
|
218
|
+
new: 1
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
function buildCacheItemFromDetail(item, detailResult, ctx) {
|
|
222
|
+
var _a, _b, _c;
|
|
223
|
+
const _currentItem = detailResult.detail || item;
|
|
224
|
+
const _detail = _currentItem;
|
|
225
|
+
const detailExtend = (_detail == null ? void 0 : _detail._extend) || {};
|
|
226
|
+
const other = JSON.parse(JSON.stringify(detailResult.e || {}));
|
|
227
|
+
other.session = (_a = detailResult.e) == null ? void 0 : _a.session;
|
|
228
|
+
const resolvedId = _currentItem.id ?? _currentItem.product_id;
|
|
229
|
+
const mergedItem = { ...item, ..._detail, extension_type: _detail.extension_type ?? item.extension_type };
|
|
230
|
+
const runtimeExtend = (0, import_BookingContext.applySessionTimesToExtend)(
|
|
231
|
+
mergedItem,
|
|
232
|
+
{
|
|
233
|
+
start_date: (ctx == null ? void 0 : ctx.date) || detailExtend.start_date || void 0,
|
|
234
|
+
quantity: (ctx == null ? void 0 : ctx.quantity) ?? ((_b = detailResult.e) == null ? void 0 : _b.quantity) ?? detailExtend.quantity ?? 1,
|
|
235
|
+
price: detailExtend.price ?? (_detail == null ? void 0 : _detail.price) ?? (item == null ? void 0 : item.price),
|
|
236
|
+
product_name: _currentItem.title ?? detailExtend.product_name,
|
|
237
|
+
other,
|
|
238
|
+
isNormalProduct: !(0, import_BookingContext.isBookingProduct)(mergedItem)
|
|
239
|
+
},
|
|
240
|
+
{ date: ctx == null ? void 0 : ctx.date }
|
|
241
|
+
);
|
|
242
|
+
const extend = {
|
|
243
|
+
...detailExtend,
|
|
244
|
+
...runtimeExtend,
|
|
245
|
+
other
|
|
246
|
+
};
|
|
247
|
+
const note = detailExtend.note ?? (_detail == null ? void 0 : _detail.note);
|
|
248
|
+
return {
|
|
249
|
+
..._detail,
|
|
250
|
+
id: resolvedId,
|
|
251
|
+
product_id: resolvedId,
|
|
252
|
+
extension_type: mergedItem.extension_type,
|
|
253
|
+
_key: (_c = detailResult.e) == null ? void 0 : _c.key,
|
|
254
|
+
...note != null && note !== "" ? { note: String(note) } : {},
|
|
255
|
+
_extend: extend,
|
|
256
|
+
new: 1
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
function transformDetailToProductAndBooking(cacheItem, ctx) {
|
|
260
|
+
const preparedCacheItem = prepareBookingCacheItem(cacheItem, withDerivedBookingCtx(ctx));
|
|
261
|
+
const payload = buildBasePayloadFromCacheItem(preparedCacheItem, ctx);
|
|
262
|
+
const productInput = (0, import_transformBaseProductToOrderProduct.transformBaseProductToOrderProduct)({
|
|
263
|
+
payload,
|
|
264
|
+
sourceProduct: preparedCacheItem
|
|
265
|
+
});
|
|
266
|
+
if (!productInput) {
|
|
267
|
+
throw new Error(
|
|
268
|
+
"[BookingTicket] transformDetailToProductAndBooking: product transform failed (missing numeric item.id / item.product_id)"
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
const isNormalProduct = isNormalBookingProduct(preparedCacheItem);
|
|
272
|
+
let booking;
|
|
273
|
+
if (!isNormalProduct) {
|
|
274
|
+
booking = (0, import_BookingContext.cacheItemToBookingInput)(preparedCacheItem, { bookingConfig: ctx == null ? void 0 : ctx.bookingConfig });
|
|
275
|
+
}
|
|
276
|
+
return { product: productInput, booking, cacheItem: preparedCacheItem };
|
|
277
|
+
}
|
|
278
|
+
function buildBasePayloadFromCacheItem(cacheItem, ctx) {
|
|
279
|
+
var _a, _b, _c, _d;
|
|
280
|
+
const other = ((_a = cacheItem == null ? void 0 : cacheItem._extend) == null ? void 0 : _a.other) || {};
|
|
281
|
+
const quantity = (ctx == null ? void 0 : ctx.quantity) != null && ctx.quantity > 0 ? ctx.quantity : ((_b = cacheItem == null ? void 0 : cacheItem._extend) == null ? void 0 : _b.quantity) ?? 1;
|
|
282
|
+
const resolvedPid = (cacheItem == null ? void 0 : cacheItem.product_id) ?? (cacheItem == null ? void 0 : cacheItem.id);
|
|
283
|
+
const extend = (cacheItem == null ? void 0 : cacheItem._extend) || {};
|
|
284
|
+
return {
|
|
285
|
+
id: (cacheItem == null ? void 0 : cacheItem.id) ?? (cacheItem == null ? void 0 : cacheItem.product_id),
|
|
286
|
+
product_id: resolvedPid,
|
|
287
|
+
variant_id: (other == null ? void 0 : other.product_variant_id) ?? (other == null ? void 0 : other.variant_id) ?? 0,
|
|
288
|
+
quantity,
|
|
289
|
+
option: (other == null ? void 0 : other.option) || [],
|
|
290
|
+
bundle: (other == null ? void 0 : other.bundle) || ((_c = extend == null ? void 0 : extend.skuValue) == null ? void 0 : _c.bundle) || ((_d = extend == null ? void 0 : extend._skuValue) == null ? void 0 : _d.bundle) || [],
|
|
291
|
+
unique: other == null ? void 0 : other.unique,
|
|
292
|
+
session: other == null ? void 0 : other.session,
|
|
293
|
+
note: extend == null ? void 0 : extend.note,
|
|
294
|
+
price: (extend == null ? void 0 : extend.price) ?? (cacheItem == null ? void 0 : cacheItem.price),
|
|
295
|
+
selling_price: (extend == null ? void 0 : extend.price) ?? (cacheItem == null ? void 0 : cacheItem.price),
|
|
296
|
+
line_total: extend == null ? void 0 : extend.total,
|
|
297
|
+
total: extend == null ? void 0 : extend.total,
|
|
298
|
+
origin_total: extend == null ? void 0 : extend.origin_total,
|
|
299
|
+
price_override: extend == null ? void 0 : extend.priceOverride,
|
|
300
|
+
bundle_edit: extend == null ? void 0 : extend.bundle_edit,
|
|
301
|
+
discount_reason: extend == null ? void 0 : extend.discount_reason,
|
|
302
|
+
discount_list: cacheItem == null ? void 0 : cacheItem.discount_list,
|
|
303
|
+
_extend: extend
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
307
|
+
0 && (module.exports = {
|
|
308
|
+
buildCacheItemFromCartDetail,
|
|
309
|
+
buildCacheItemFromDetail,
|
|
310
|
+
buildRequiresDetailPayload,
|
|
311
|
+
decideAddProduct,
|
|
312
|
+
decideAfterDetail,
|
|
313
|
+
decideAutoClose,
|
|
314
|
+
getIsEject,
|
|
315
|
+
getIsOnlySession,
|
|
316
|
+
prepareBookingCacheItem,
|
|
317
|
+
transformDetailToProductAndBooking
|
|
318
|
+
});
|
|
@@ -75,8 +75,10 @@ function buildCartView(lines, bookings) {
|
|
|
75
75
|
};
|
|
76
76
|
});
|
|
77
77
|
const items = productLines.filter((line) => {
|
|
78
|
-
var _a;
|
|
79
|
-
|
|
78
|
+
var _a, _b;
|
|
79
|
+
if ((_a = line.metadata) == null ? void 0 : _a._giftInfo)
|
|
80
|
+
return false;
|
|
81
|
+
const uid = (_b = line.metadata) == null ? void 0 : _b.unique_identification_number;
|
|
80
82
|
if (uid === void 0 || uid === null || uid === "")
|
|
81
83
|
return true;
|
|
82
84
|
return !claimedUids.has(String(uid));
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Module, ModuleOptions, PisellCore } from '../../types';
|
|
2
2
|
import { BaseModule } from '../../modules/BaseModule';
|
|
3
3
|
import { ScanOrderAddLogParams, ScanOrderAvailabilityInfo, ScanOrderOrderProduct, ScanOrderOrderProductIdentity, ScanOrderScanCodeResult } from './types';
|
|
4
|
-
import type {
|
|
4
|
+
import type { UpdateOrderProductParams } from '../../modules/Order/types';
|
|
5
5
|
import type { Discount } from '../../modules/Discount/types';
|
|
6
6
|
import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
|
|
7
7
|
import type { StrategyConfig } from '../../model/strategy/type';
|
|
8
|
+
import type { ProductData } from '../../modules/Product/types';
|
|
8
9
|
export * from './types';
|
|
9
10
|
interface ScanOrderItemRuleRuntimeConfig {
|
|
10
11
|
strategyConfigs?: StrategyConfig[];
|
|
@@ -36,11 +37,14 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
36
37
|
private customerLoginRefreshIdInFlight;
|
|
37
38
|
private static readonly PISELL1_LOGIN_SUCCESS;
|
|
38
39
|
private getScanOrderLoggerContext;
|
|
40
|
+
private safeStringify;
|
|
41
|
+
private pickErrorMessage;
|
|
39
42
|
private serializeError;
|
|
40
43
|
private addScanOrderLog;
|
|
41
44
|
private logMethodStart;
|
|
42
45
|
private logMethodSuccess;
|
|
43
46
|
private logMethodError;
|
|
47
|
+
private assertProductListLoaded;
|
|
44
48
|
addLog(params: ScanOrderAddLogParams): Promise<void>;
|
|
45
49
|
private normalizeCustomerId;
|
|
46
50
|
private resolveCustomerIdFromLoginPayload;
|
|
@@ -86,10 +90,12 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
86
90
|
onCustomerLogin(params: {
|
|
87
91
|
customerId: number;
|
|
88
92
|
}): Promise<void>;
|
|
93
|
+
private findReservationRuleResource;
|
|
94
|
+
private buildScanOrderResourceMetadata;
|
|
89
95
|
private buildSubmitPayloadEnhancer;
|
|
90
96
|
submitScanOrder<T = any>(): Promise<T>;
|
|
91
97
|
addProductToOrder(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
92
|
-
|
|
98
|
+
updateOrderProduct(params: UpdateOrderProductParams): Promise<import("../../modules/Order/types").OrderProduct[]>;
|
|
93
99
|
/**
|
|
94
100
|
* 设置单行商品备注(与整单 `updateTempOrderNote` 区分)。
|
|
95
101
|
* 多行同 SKU 时必须传入与删除/更新一致的 identity(如 `identity_key`)。
|
|
@@ -120,7 +126,7 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
120
126
|
orderAmount: number;
|
|
121
127
|
orderItems: any[];
|
|
122
128
|
}>;
|
|
123
|
-
getProductList(): Promise<
|
|
129
|
+
getProductList(): Promise<ProductData[]>;
|
|
124
130
|
getOtherParams(): Record<string, any>;
|
|
125
131
|
setOtherParams(params: Record<string, any>, { cover }?: {
|
|
126
132
|
cover?: boolean;
|