@pisell/pisellos 2.2.178 → 2.2.180
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/modules/Customer/index.d.ts +0 -6
- package/dist/modules/Customer/index.js +83 -129
- package/dist/modules/Customer/types.d.ts +0 -2
- package/dist/modules/Discount/index.d.ts +4 -2
- package/dist/modules/Discount/index.js +93 -8
- package/dist/modules/Discount/types.d.ts +7 -1
- package/dist/modules/Order/index.d.ts +17 -87
- package/dist/modules/Order/index.js +501 -1357
- package/dist/modules/Order/types.d.ts +19 -198
- package/dist/modules/Order/types.js +0 -31
- package/dist/modules/Order/utils.d.ts +1 -50
- package/dist/modules/Order/utils.js +32 -261
- package/dist/modules/Quotation/index.d.ts +1 -0
- package/dist/modules/Quotation/index.js +21 -23
- package/dist/modules/Rules/index.d.ts +0 -4
- package/dist/modules/Rules/index.js +10 -26
- package/dist/modules/SalesSummary/index.js +2 -4
- package/dist/modules/SalesSummary/utils.js +7 -21
- package/dist/modules/Schedule/index.js +2 -6
- package/dist/modules/index.d.ts +0 -1
- package/dist/modules/index.js +1 -2
- package/dist/server/index.js +29 -87
- package/dist/server/modules/order/index.d.ts +0 -23
- package/dist/server/modules/order/index.js +46 -123
- package/dist/server/modules/order/types.d.ts +2 -0
- package/dist/server/modules/order/utils/filterOrders.js +6 -20
- package/dist/server/modules/products/index.d.ts +1 -1
- package/dist/server/modules/products/index.js +113 -130
- package/dist/server/modules/schedule/index.js +6 -13
- package/dist/solution/BaseSales/index.d.ts +7 -89
- package/dist/solution/BaseSales/index.js +375 -1494
- package/dist/solution/BaseSales/types.d.ts +1 -67
- package/dist/solution/BaseSales/types.js +1 -3
- package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +1 -0
- package/dist/solution/BaseSales/utils/parseSalesResponse.js +1 -1
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +16 -68
- package/dist/solution/BaseSales/utils.js +8 -46
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -133
- package/dist/solution/BookingTicket/index.js +175 -780
- package/dist/solution/BookingTicket/types.d.ts +0 -2
- package/dist/solution/BookingTicket/types.js +0 -3
- package/dist/solution/BookingTicket/utils/cartView.js +2 -4
- package/dist/solution/ScanOrder/index.d.ts +3 -9
- package/dist/solution/ScanOrder/index.js +128 -231
- package/dist/solution/ScanOrder/utils.js +8 -46
- package/dist/solution/ShopDiscount/index.d.ts +1 -0
- package/dist/solution/ShopDiscount/index.js +23 -18
- package/dist/solution/VenueBooking/index.d.ts +9 -5
- package/dist/solution/VenueBooking/index.js +55 -103
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
- package/dist/solution/VenueBooking/utils/slotMerge.js +0 -10
- package/lib/model/strategy/adapter/promotion/index.js +0 -49
- package/lib/modules/Customer/index.d.ts +0 -6
- package/lib/modules/Customer/index.js +11 -26
- package/lib/modules/Customer/types.d.ts +0 -2
- package/lib/modules/Discount/index.d.ts +4 -2
- package/lib/modules/Discount/index.js +63 -8
- package/lib/modules/Discount/types.d.ts +7 -1
- package/lib/modules/Order/index.d.ts +17 -87
- package/lib/modules/Order/index.js +150 -677
- package/lib/modules/Order/types.d.ts +19 -198
- package/lib/modules/Order/types.js +0 -1
- package/lib/modules/Order/utils.d.ts +1 -50
- package/lib/modules/Order/utils.js +22 -229
- package/lib/modules/Quotation/index.d.ts +1 -0
- package/lib/modules/Quotation/index.js +15 -18
- package/lib/modules/Rules/index.d.ts +0 -4
- package/lib/modules/Rules/index.js +14 -22
- package/lib/modules/SalesSummary/index.js +2 -4
- package/lib/modules/SalesSummary/utils.js +7 -21
- package/lib/modules/Schedule/index.js +1 -3
- package/lib/modules/index.d.ts +0 -1
- package/lib/modules/index.js +1 -3
- package/lib/server/index.js +4 -41
- package/lib/server/modules/order/index.d.ts +0 -23
- package/lib/server/modules/order/index.js +14 -46
- package/lib/server/modules/order/types.d.ts +2 -0
- package/lib/server/modules/order/utils/filterOrders.js +4 -12
- package/lib/server/modules/products/index.d.ts +1 -1
- package/lib/server/modules/products/index.js +20 -30
- package/lib/server/modules/schedule/index.js +1 -2
- package/lib/solution/BaseSales/index.d.ts +7 -89
- package/lib/solution/BaseSales/index.js +22 -736
- package/lib/solution/BaseSales/types.d.ts +1 -67
- package/lib/solution/BaseSales/types.js +1 -3
- package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +1 -0
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +1 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +12 -71
- package/lib/solution/BaseSales/utils.js +6 -46
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +1 -133
- package/lib/solution/BookingTicket/index.js +8 -352
- package/lib/solution/BookingTicket/types.d.ts +0 -2
- package/lib/solution/BookingTicket/types.js +0 -6
- package/lib/solution/BookingTicket/utils/cartView.js +2 -4
- package/lib/solution/ScanOrder/index.d.ts +3 -9
- package/lib/solution/ScanOrder/index.js +66 -147
- package/lib/solution/ScanOrder/utils.js +6 -46
- package/lib/solution/ShopDiscount/index.d.ts +1 -0
- package/lib/solution/ShopDiscount/index.js +4 -2
- package/lib/solution/VenueBooking/index.d.ts +9 -5
- package/lib/solution/VenueBooking/index.js +14 -50
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +0 -4
- package/lib/solution/VenueBooking/utils/slotMerge.js +0 -10
- package/package.json +2 -2
- package/dist/modules/BookingContext/index.d.ts +0 -37
- package/dist/modules/BookingContext/index.js +0 -436
- package/dist/modules/BookingContext/types.d.ts +0 -102
- package/dist/modules/BookingContext/types.js +0 -51
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -193
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -137
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
- package/dist/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -215
- package/dist/modules/BookingContext/utils/flexible.d.ts +0 -28
- package/dist/modules/BookingContext/utils/flexible.js +0 -56
- package/dist/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
- package/dist/modules/BookingContext/utils/formatResourceList.js +0 -38
- package/dist/modules/BookingContext/utils/index.d.ts +0 -11
- package/dist/modules/BookingContext/utils/index.js +0 -11
- package/dist/modules/BookingContext/utils/noResource.d.ts +0 -13
- package/dist/modules/BookingContext/utils/noResource.js +0 -77
- package/dist/modules/BookingContext/utils/productExtend.d.ts +0 -72
- package/dist/modules/BookingContext/utils/productExtend.js +0 -339
- package/dist/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
- package/dist/modules/BookingContext/utils/resourceErrors.js +0 -74
- package/dist/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
- package/dist/modules/BookingContext/utils/resourceSelection.js +0 -24
- package/dist/modules/BookingContext/utils/resources.d.ts +0 -80
- package/dist/modules/BookingContext/utils/resources.js +0 -486
- package/dist/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
- package/dist/modules/BookingContext/utils/serviceTimes.js +0 -151
- package/dist/modules/BookingContext/utils/timeSlices.d.ts +0 -42
- package/dist/modules/BookingContext/utils/timeSlices.js +0 -100
- package/dist/modules/Order/utils/manualProductDiscount.d.ts +0 -106
- package/dist/modules/Order/utils/manualProductDiscount.js +0 -212
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +0 -275
- package/dist/solution/BaseSales/utils/cartPromotion.js +0 -1258
- package/dist/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
- package/dist/solution/BaseSales/utils/quotationPrice.js +0 -237
- package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
- package/dist/solution/BookingTicket/utils/addProductDecision.js +0 -346
- package/lib/modules/BookingContext/index.d.ts +0 -37
- package/lib/modules/BookingContext/index.js +0 -297
- package/lib/modules/BookingContext/types.d.ts +0 -102
- package/lib/modules/BookingContext/types.js +0 -34
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.d.ts +0 -16
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +0 -207
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +0 -8
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +0 -141
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.d.ts +0 -75
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +0 -198
- package/lib/modules/BookingContext/utils/flexible.d.ts +0 -28
- package/lib/modules/BookingContext/utils/flexible.js +0 -80
- package/lib/modules/BookingContext/utils/formatResourceList.d.ts +0 -8
- package/lib/modules/BookingContext/utils/formatResourceList.js +0 -50
- package/lib/modules/BookingContext/utils/index.d.ts +0 -11
- package/lib/modules/BookingContext/utils/index.js +0 -43
- package/lib/modules/BookingContext/utils/noResource.d.ts +0 -13
- package/lib/modules/BookingContext/utils/noResource.js +0 -90
- package/lib/modules/BookingContext/utils/productExtend.d.ts +0 -72
- package/lib/modules/BookingContext/utils/productExtend.js +0 -283
- package/lib/modules/BookingContext/utils/resourceErrors.d.ts +0 -41
- package/lib/modules/BookingContext/utils/resourceErrors.js +0 -80
- package/lib/modules/BookingContext/utils/resourceSelection.d.ts +0 -7
- package/lib/modules/BookingContext/utils/resourceSelection.js +0 -46
- package/lib/modules/BookingContext/utils/resources.d.ts +0 -80
- package/lib/modules/BookingContext/utils/resources.js +0 -377
- package/lib/modules/BookingContext/utils/serviceTimes.d.ts +0 -55
- package/lib/modules/BookingContext/utils/serviceTimes.js +0 -162
- package/lib/modules/BookingContext/utils/timeSlices.d.ts +0 -42
- package/lib/modules/BookingContext/utils/timeSlices.js +0 -124
- package/lib/modules/Order/utils/manualProductDiscount.d.ts +0 -106
- package/lib/modules/Order/utils/manualProductDiscount.js +0 -207
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +0 -275
- package/lib/solution/BaseSales/utils/cartPromotion.js +0 -836
- package/lib/solution/BaseSales/utils/quotationPrice.d.ts +0 -7
- package/lib/solution/BaseSales/utils/quotationPrice.js +0 -277
- package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +0 -113
- package/lib/solution/BookingTicket/utils/addProductDecision.js +0 -318
|
@@ -29,50 +29,32 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
// src/modules/Order/utils.ts
|
|
30
30
|
var utils_exports = {};
|
|
31
31
|
__export(utils_exports, {
|
|
32
|
-
buildManualProductDiscountItem: () => import_manualProductDiscount.buildManualProductDiscountItem,
|
|
33
32
|
buildSubmitPayload: () => buildSubmitPayload,
|
|
34
|
-
clearTempOrderHolderAssignments: () => clearTempOrderHolderAssignments,
|
|
35
33
|
composeLinePrice: () => composeLinePrice,
|
|
36
34
|
createDefaultOrderRulesHooks: () => createDefaultOrderRulesHooks,
|
|
37
35
|
createDefaultTempOrder: () => createDefaultTempOrder,
|
|
38
36
|
createEmptySummary: () => import_utils2.createEmptySummary,
|
|
39
37
|
createUuidV4: () => createUuidV4,
|
|
40
|
-
ensureManualProductDiscountList: () => import_manualProductDiscount.ensureManualProductDiscountList,
|
|
41
|
-
findManualProductDiscountItem: () => import_manualProductDiscount.findManualProductDiscountItem,
|
|
42
38
|
formatDateTime: () => formatDateTime,
|
|
43
39
|
formatV1Product: () => formatV1Product,
|
|
44
40
|
generateDuration: () => generateDuration,
|
|
45
41
|
getAllDiscountList: () => getAllDiscountList,
|
|
46
|
-
hasAssignedHolderId: () => hasAssignedHolderId,
|
|
47
42
|
isTempOrder: () => isTempOrder,
|
|
48
43
|
mapPaymentItemToOrderPayment: () => mapPaymentItemToOrderPayment,
|
|
49
44
|
mapPaymentItemsToOrderPayments: () => mapPaymentItemsToOrderPayments,
|
|
50
|
-
mergeManualProductDiscountIntoList: () => import_manualProductDiscount.mergeManualProductDiscountIntoList,
|
|
51
45
|
mergeRelationForms: () => mergeRelationForms,
|
|
52
46
|
normalizeBookingIsAll: () => normalizeBookingIsAll,
|
|
53
47
|
normalizeBookingSubType: () => normalizeBookingSubType,
|
|
54
|
-
normalizeOrderProductDiscountList: () => normalizeOrderProductDiscountList,
|
|
55
48
|
normalizeSubmitBooking: () => normalizeSubmitBooking,
|
|
56
49
|
normalizeSubmitCollectPaxValue: () => normalizeSubmitCollectPaxValue,
|
|
57
|
-
resolveEffectivePerUnitDiscount: () => resolveEffectivePerUnitDiscount,
|
|
58
|
-
resolveManualDiscountMessage: () => import_manualProductDiscount.resolveManualDiscountMessage,
|
|
59
|
-
resolveManualDiscountOriginTotal: () => import_manualProductDiscount.resolveManualDiscountOriginTotal,
|
|
60
|
-
resolveManualDiscountReasonFromSources: () => import_manualProductDiscount.resolveManualDiscountReasonFromSources,
|
|
61
|
-
resolveManualOverrideLineOriginalPrice: () => resolveManualOverrideLineOriginalPrice,
|
|
62
|
-
resolveRulesManualDiscountFlag: () => resolveRulesManualDiscountFlag,
|
|
63
|
-
resolveSafeProductNum: () => import_manualProductDiscount.resolveSafeProductNum,
|
|
64
50
|
resolveSubmitCollectPax: () => resolveSubmitCollectPax,
|
|
65
|
-
|
|
66
|
-
stripManualProductDiscountItems: () => import_manualProductDiscount.stripManualProductDiscountItems,
|
|
67
|
-
sumOptionUnitPrice: () => sumOptionUnitPrice,
|
|
68
|
-
syncManualProductDiscountProductNum: () => import_manualProductDiscount.syncManualProductDiscountProductNum
|
|
51
|
+
sumOptionUnitPrice: () => sumOptionUnitPrice
|
|
69
52
|
});
|
|
70
53
|
module.exports = __toCommonJS(utils_exports);
|
|
71
54
|
var import_dayjs = __toESM(require("dayjs"));
|
|
72
55
|
var import_decimal = __toESM(require("decimal.js"));
|
|
73
56
|
var import_utils = require("../../solution/ScanOrder/utils");
|
|
74
57
|
var import_utils2 = require("../../solution/ScanOrder/utils");
|
|
75
|
-
var import_manualProductDiscount = require("./utils/manualProductDiscount");
|
|
76
58
|
function composeLinePrice(params) {
|
|
77
59
|
const { mainPrice, bundle, useOriginalBundle } = params;
|
|
78
60
|
let total = new import_decimal.default(Number(mainPrice) || 0);
|
|
@@ -98,105 +80,6 @@ function sumOptionUnitPrice(options) {
|
|
|
98
80
|
}
|
|
99
81
|
return total;
|
|
100
82
|
}
|
|
101
|
-
function resolveRulesManualDiscountFlag(metadata) {
|
|
102
|
-
if (!metadata)
|
|
103
|
-
return void 0;
|
|
104
|
-
if (metadata.is_manual_discount === true || metadata.is_manual_discount === 1) {
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
const priceOverride = metadata.price_override;
|
|
108
|
-
if (priceOverride !== void 0 && priceOverride !== null && priceOverride !== "") {
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
return void 0;
|
|
112
|
-
}
|
|
113
|
-
function normalizeOrderProductDiscountAmount(amount) {
|
|
114
|
-
if (amount === void 0 || amount === null)
|
|
115
|
-
return void 0;
|
|
116
|
-
return String(amount);
|
|
117
|
-
}
|
|
118
|
-
function normalizeOrderProductDiscountList(discountList) {
|
|
119
|
-
if (!Array.isArray(discountList))
|
|
120
|
-
return [];
|
|
121
|
-
return discountList.filter((item) => !!item && typeof item === "object").map((item) => {
|
|
122
|
-
const normalized = {
|
|
123
|
-
discount_id: Number.isFinite(Number(item.discount_id)) ? Number(item.discount_id) : 0
|
|
124
|
-
};
|
|
125
|
-
if (item.order_discount_id === null) {
|
|
126
|
-
normalized.order_discount_id = null;
|
|
127
|
-
} else if (item.order_discount_id !== void 0) {
|
|
128
|
-
const orderDiscountId = Number(item.order_discount_id);
|
|
129
|
-
if (Number.isFinite(orderDiscountId)) {
|
|
130
|
-
normalized.order_discount_id = orderDiscountId;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (item.type !== void 0)
|
|
134
|
-
normalized.type = item.type;
|
|
135
|
-
const amount = normalizeOrderProductDiscountAmount(item.amount);
|
|
136
|
-
if (amount !== void 0)
|
|
137
|
-
normalized.amount = amount;
|
|
138
|
-
if (item.discount && typeof item.discount === "object") {
|
|
139
|
-
normalized.discount = { ...item.discount };
|
|
140
|
-
}
|
|
141
|
-
if (item.metadata === null) {
|
|
142
|
-
normalized.metadata = null;
|
|
143
|
-
} else if (item.metadata && typeof item.metadata === "object") {
|
|
144
|
-
normalized.metadata = { ...item.metadata };
|
|
145
|
-
}
|
|
146
|
-
return normalized;
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
function resolveManualOverrideLineOriginalPrice(params, fallbackCompositeOriginal) {
|
|
150
|
-
var _a, _b;
|
|
151
|
-
const metadata = params.metadata || {};
|
|
152
|
-
const priceOverride = metadata.price_override;
|
|
153
|
-
if (priceOverride === void 0 || priceOverride === null || priceOverride === "") {
|
|
154
|
-
return fallbackCompositeOriginal;
|
|
155
|
-
}
|
|
156
|
-
const refTotal = (_b = (_a = metadata.origin) == null ? void 0 : _a._extend) == null ? void 0 : _b.origin_total;
|
|
157
|
-
if (refTotal !== void 0 && refTotal !== null && refTotal !== "") {
|
|
158
|
-
const parsed = Number(refTotal);
|
|
159
|
-
if (Number.isFinite(parsed)) {
|
|
160
|
-
return new import_decimal.default(parsed).toDecimalPlaces(2).toFixed(2);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
const lineOriginal = params.lineOriginalPrice;
|
|
164
|
-
if (lineOriginal !== void 0 && lineOriginal !== null && lineOriginal !== "") {
|
|
165
|
-
const parsedLine = Number(lineOriginal);
|
|
166
|
-
const parsedFallback = Number(fallbackCompositeOriginal);
|
|
167
|
-
if (Number.isFinite(parsedLine) && Number.isFinite(parsedFallback) && parsedLine > parsedFallback) {
|
|
168
|
-
return new import_decimal.default(parsedLine).toDecimalPlaces(2).toFixed(2);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return fallbackCompositeOriginal;
|
|
172
|
-
}
|
|
173
|
-
function resolveEffectivePerUnitDiscount(product) {
|
|
174
|
-
const discountList = Array.isArray(product == null ? void 0 : product.discount_list) ? product.discount_list : [];
|
|
175
|
-
const fromList = discountList.reduce(
|
|
176
|
-
(sum, discount) => sum + Number((discount == null ? void 0 : discount.amount) || 0),
|
|
177
|
-
0
|
|
178
|
-
);
|
|
179
|
-
const hasPromoDiscountItem = discountList.some((item) => (item == null ? void 0 : item.type) === "promotion");
|
|
180
|
-
if (hasPromoDiscountItem)
|
|
181
|
-
return fromList;
|
|
182
|
-
const metadata = (product == null ? void 0 : product.metadata) || {};
|
|
183
|
-
const optionSum = sumOptionUnitPrice(product == null ? void 0 : product.product_option_item).toNumber();
|
|
184
|
-
if (metadata.source_product_price != null && metadata.main_product_selling_price != null) {
|
|
185
|
-
const source = Number(metadata.source_product_price);
|
|
186
|
-
const selling = Number(metadata.main_product_selling_price) - optionSum;
|
|
187
|
-
if (Number.isFinite(source) && Number.isFinite(selling) && source !== selling) {
|
|
188
|
-
return fromList + (source - selling);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
const promo = metadata._promotion;
|
|
192
|
-
if ((promo == null ? void 0 : promo.inPromotion) !== true)
|
|
193
|
-
return fromList;
|
|
194
|
-
const originalPrice = Number(promo.originalPrice);
|
|
195
|
-
const finalPrice = Number(promo.finalPrice);
|
|
196
|
-
if (!Number.isFinite(originalPrice) || !Number.isFinite(finalPrice))
|
|
197
|
-
return fromList;
|
|
198
|
-
return fromList + (originalPrice - finalPrice);
|
|
199
|
-
}
|
|
200
83
|
function createDefaultOrderRulesHooks() {
|
|
201
84
|
const toUnitPriceString = (totalLike, num) => {
|
|
202
85
|
const effectiveNum = Number(num) > 0 ? Number(num) : 1;
|
|
@@ -231,7 +114,7 @@ function createDefaultOrderRulesHooks() {
|
|
|
231
114
|
id: product.product_id,
|
|
232
115
|
// Rules 引擎用 _id 作为 processedProductsMap 键;必须与购物车行级 identity 一致,
|
|
233
116
|
// 否则同 SKU 不同小料会在 calcDiscount 重组时互相覆盖。
|
|
234
|
-
// 不透明 identity 契约下,normalizeOrderProduct /
|
|
117
|
+
// 不透明 identity 契约下,normalizeOrderProduct / restoreTempOrderFromStorage 已保证唯一值存在;
|
|
235
118
|
// 留 fingerprint 分支仅作 Rules 单测里直接传裸 product 时的兜底。
|
|
236
119
|
_id: ((_a = product.metadata) == null ? void 0 : _a.unique_identification_number) ? `${product.product_id}_${product.product_variant_id}_${product.metadata.unique_identification_number}` : `${product.product_id}_${product.product_variant_id}_${(0, import_utils.buildProductLineFingerprint)(
|
|
237
120
|
product.product_option_item,
|
|
@@ -252,14 +135,9 @@ function createDefaultOrderRulesHooks() {
|
|
|
252
135
|
bundle: product.product_bundle || [],
|
|
253
136
|
booking_id: ((_b = product.metadata) == null ? void 0 : _b.booking_id) || null,
|
|
254
137
|
isClient: false,
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
holder_id: (_c = product.metadata) == null ? void 0 : _c.holder_id,
|
|
259
|
-
startDate: ((_d = product.metadata) == null ? void 0 : _d.start_date) || ((_e = product.metadata) == null ? void 0 : _e.startDate),
|
|
260
|
-
main_product_selling_price: metadataAny.main_product_selling_price !== void 0 ? new import_decimal.default(Number(metadataAny.main_product_selling_price) || 0).minus(optionSum).toDecimalPlaces(2).toString() : void 0,
|
|
261
|
-
inPromotion: ((_f = metadataAny._promotion) == null ? void 0 : _f.inPromotion) === true,
|
|
262
|
-
_promotion: metadataAny._promotion
|
|
138
|
+
isManualDiscount: ((_c = product.metadata) == null ? void 0 : _c.is_manual_discount) || false,
|
|
139
|
+
holder_id: (_d = product.metadata) == null ? void 0 : _d.holder_id,
|
|
140
|
+
startDate: ((_e = product.metadata) == null ? void 0 : _e.start_date) || ((_f = product.metadata) == null ? void 0 : _f.startDate)
|
|
263
141
|
};
|
|
264
142
|
},
|
|
265
143
|
setProduct: (product, values) => {
|
|
@@ -282,14 +160,10 @@ function createDefaultOrderRulesHooks() {
|
|
|
282
160
|
bundle: nextBundle,
|
|
283
161
|
useOriginalBundle: true
|
|
284
162
|
});
|
|
285
|
-
const finalOriginalPrice = resolveManualOverrideLineOriginalPrice(
|
|
286
|
-
{ num: nextNum, metadata: metadataAny, lineOriginalPrice: product.original_price },
|
|
287
|
-
composedOriginalPrice
|
|
288
|
-
);
|
|
289
163
|
return {
|
|
290
164
|
...product,
|
|
291
165
|
selling_price: composedSellingPrice,
|
|
292
|
-
original_price:
|
|
166
|
+
original_price: composedOriginalPrice,
|
|
293
167
|
discount_list: values.discount_list ?? product.discount_list,
|
|
294
168
|
num: values.quantity ?? product.num,
|
|
295
169
|
product_bundle: nextBundle,
|
|
@@ -447,11 +321,6 @@ function normalizeSubmitProduct(product) {
|
|
|
447
321
|
num,
|
|
448
322
|
product_option_item: productOptionItem,
|
|
449
323
|
surcharge_fee: _productSurchargeFee,
|
|
450
|
-
discount_amount: _deprecatedDiscountAmount,
|
|
451
|
-
discount_type: _deprecatedDiscountType,
|
|
452
|
-
discountway: _deprecatedDiscountway,
|
|
453
|
-
product_discount_reason: _deprecatedProductDiscountReason,
|
|
454
|
-
discount_per: _deprecatedDiscountPer,
|
|
455
324
|
...productRest
|
|
456
325
|
} = submitProduct;
|
|
457
326
|
const rawMetadata = submitProduct.metadata || {};
|
|
@@ -496,7 +365,7 @@ function normalizeSubmitProduct(product) {
|
|
|
496
365
|
...bookingUid ? { booking_uid: bookingUid } : {},
|
|
497
366
|
product_quantity: toBundleNumber(num ?? submitProduct.product_quantity, 1),
|
|
498
367
|
product_sku: productSku,
|
|
499
|
-
discount_list:
|
|
368
|
+
discount_list: submitProduct.discount_list || [],
|
|
500
369
|
product_bundle: formatSubmitBundleItems(submitProduct.product_bundle),
|
|
501
370
|
metadata: cleanMetadata,
|
|
502
371
|
// 出站兼容:后端消费 payment_price 字段,这里从 selling_price 直接派生。
|
|
@@ -556,23 +425,22 @@ function createDefaultTempOrder(params) {
|
|
|
556
425
|
return {
|
|
557
426
|
order_id: null,
|
|
558
427
|
external_sale_number: "",
|
|
559
|
-
order_number:
|
|
560
|
-
shop_order_number:
|
|
561
|
-
shop_full_order_number:
|
|
562
|
-
type: "",
|
|
563
|
-
business_code:
|
|
428
|
+
order_number: "",
|
|
429
|
+
shop_order_number: "",
|
|
430
|
+
shop_full_order_number: "",
|
|
431
|
+
type: "appointment_booking",
|
|
432
|
+
business_code: "appointment_booking",
|
|
564
433
|
platform: "h5",
|
|
565
434
|
sales_channel: "my_pisel",
|
|
566
435
|
order_sales_channel: "online_store",
|
|
567
436
|
status: "normal",
|
|
568
437
|
payment_status: "payment_processing",
|
|
569
438
|
shipping_status: "unfulfilled",
|
|
570
|
-
customer_id:
|
|
439
|
+
customer_id: null,
|
|
571
440
|
customer_name: "",
|
|
572
441
|
country_calling_code: "",
|
|
573
442
|
phone: "",
|
|
574
443
|
email: "",
|
|
575
|
-
customer: null,
|
|
576
444
|
is_price_include_tax: 1,
|
|
577
445
|
tax_title: "",
|
|
578
446
|
tax_country_code: "",
|
|
@@ -587,10 +455,12 @@ function createDefaultTempOrder(params) {
|
|
|
587
455
|
schedule_date: params.now,
|
|
588
456
|
created_at: params.now,
|
|
589
457
|
request_unique_idempotency_token: "",
|
|
458
|
+
vouchers: [],
|
|
590
459
|
products: [],
|
|
591
460
|
bookings: [],
|
|
592
461
|
payments: [],
|
|
593
462
|
surcharges: [],
|
|
463
|
+
discount_list: [],
|
|
594
464
|
relation_forms: [],
|
|
595
465
|
contacts: [],
|
|
596
466
|
contacts_info: null,
|
|
@@ -602,7 +472,6 @@ function createDefaultTempOrder(params) {
|
|
|
602
472
|
};
|
|
603
473
|
}
|
|
604
474
|
function buildSubmitPayload(params) {
|
|
605
|
-
var _a;
|
|
606
475
|
const {
|
|
607
476
|
tempOrder,
|
|
608
477
|
cacheId,
|
|
@@ -628,7 +497,7 @@ function buildSubmitPayload(params) {
|
|
|
628
497
|
shop_service_type: _shopServiceType,
|
|
629
498
|
start_time: _startTime,
|
|
630
499
|
customer: _customer,
|
|
631
|
-
|
|
500
|
+
shop_full_order_number: _shopFullOrderNumber,
|
|
632
501
|
tax_fee: _rootTaxFee,
|
|
633
502
|
total_amount: _totalAmount,
|
|
634
503
|
total_refund_amount: _totalRefundAmount,
|
|
@@ -636,25 +505,12 @@ function buildSubmitPayload(params) {
|
|
|
636
505
|
holder_id: _holderId,
|
|
637
506
|
...tempOrderRest
|
|
638
507
|
} = tempOrder;
|
|
639
|
-
let submitType = type ?? tempOrder.type;
|
|
640
|
-
if (!submitType) {
|
|
641
|
-
if ((_a = tempOrder == null ? void 0 : tempOrder.bookings) == null ? void 0 : _a.length) {
|
|
642
|
-
submitType = "appointment_booking";
|
|
643
|
-
} else {
|
|
644
|
-
submitType = "virtual";
|
|
645
|
-
}
|
|
646
|
-
}
|
|
647
508
|
const payload = {
|
|
648
509
|
...tempOrderRest,
|
|
649
|
-
customer_id: tempOrder.customer_id ?? 1,
|
|
650
|
-
customer_name: tempOrder.customer_name || "Select a customer",
|
|
651
|
-
order_number: null,
|
|
652
|
-
shop_order_number: null,
|
|
653
|
-
shop_full_order_number: null,
|
|
654
510
|
platform: normalizeSubmitPlatform(platform),
|
|
655
511
|
request_unique_idempotency_token: tempOrder.request_unique_idempotency_token || `${tempOrder.external_sale_number}_${now.getTime()}`,
|
|
656
|
-
type:
|
|
657
|
-
business_code: businessCode ?? tempOrder.business_code,
|
|
512
|
+
type: type ?? tempOrder.type ?? "table-order",
|
|
513
|
+
business_code: businessCode ?? tempOrder.business_code ?? "table-order",
|
|
658
514
|
sales_channel: tempOrder.sales_channel || "my_pisel",
|
|
659
515
|
order_sales_channel: channel ?? tempOrder.order_sales_channel ?? "online_store",
|
|
660
516
|
status: tempOrder.status || "normal",
|
|
@@ -669,11 +525,12 @@ function buildSubmitPayload(params) {
|
|
|
669
525
|
note: tempOrder.note || "",
|
|
670
526
|
delivery_type: tempOrder.delivery_type || "nil",
|
|
671
527
|
schedule_date: scheduleDate,
|
|
672
|
-
|
|
528
|
+
created_at: tempOrder.created_at || formatDateTime(now),
|
|
673
529
|
bookings: (tempOrder.bookings || []).filter(
|
|
674
|
-
(booking) => Number(booking.parent_id) !== 0
|
|
530
|
+
(booking) => Number(booking.parent_id ?? 0) !== 0
|
|
675
531
|
).map((booking) => normalizeSubmitBooking(booking)),
|
|
676
532
|
payments: tempOrder.payments || [],
|
|
533
|
+
// discount_list: tempOrder.discount_list || [],
|
|
677
534
|
relation_forms: tempOrder.relation_forms || [],
|
|
678
535
|
// contacts: tempOrder.contacts || [],
|
|
679
536
|
contacts_info: tempOrder.contacts_info && !Array.isArray(tempOrder.contacts_info) ? tempOrder.contacts_info : null,
|
|
@@ -754,90 +611,26 @@ function formatV1Product(products) {
|
|
|
754
611
|
};
|
|
755
612
|
});
|
|
756
613
|
}
|
|
757
|
-
function hasAssignedHolderId(value) {
|
|
758
|
-
if (value === void 0 || value === null || value === "")
|
|
759
|
-
return false;
|
|
760
|
-
if (Array.isArray(value))
|
|
761
|
-
return value.length > 0;
|
|
762
|
-
return true;
|
|
763
|
-
}
|
|
764
|
-
function clearTempOrderHolderAssignments(tempOrder) {
|
|
765
|
-
var _a;
|
|
766
|
-
let changed = false;
|
|
767
|
-
const resetHolderField = (target, key = "holder_id") => {
|
|
768
|
-
if (!hasAssignedHolderId(target[key]))
|
|
769
|
-
return;
|
|
770
|
-
target[key] = null;
|
|
771
|
-
changed = true;
|
|
772
|
-
};
|
|
773
|
-
for (const product of tempOrder.products || []) {
|
|
774
|
-
if (product.metadata && typeof product.metadata === "object") {
|
|
775
|
-
resetHolderField(product.metadata);
|
|
776
|
-
}
|
|
777
|
-
}
|
|
778
|
-
for (const booking of tempOrder.bookings || []) {
|
|
779
|
-
const bookingRecord = booking;
|
|
780
|
-
if (booking.metadata && typeof booking.metadata === "object") {
|
|
781
|
-
resetHolderField(booking.metadata);
|
|
782
|
-
}
|
|
783
|
-
if (bookingRecord.holder !== void 0 && bookingRecord.holder !== null) {
|
|
784
|
-
delete bookingRecord.holder;
|
|
785
|
-
changed = true;
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
const productsByUid = (_a = tempOrder._extend) == null ? void 0 : _a.productsByUid;
|
|
789
|
-
if (productsByUid && typeof productsByUid === "object") {
|
|
790
|
-
for (const entry of Object.values(productsByUid)) {
|
|
791
|
-
const origin = entry == null ? void 0 : entry.origin;
|
|
792
|
-
if (!origin || typeof origin !== "object")
|
|
793
|
-
continue;
|
|
794
|
-
if (origin.metadata && typeof origin.metadata === "object") {
|
|
795
|
-
resetHolderField(origin.metadata);
|
|
796
|
-
}
|
|
797
|
-
if (origin._extend && typeof origin._extend === "object") {
|
|
798
|
-
resetHolderField(origin._extend);
|
|
799
|
-
}
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
return changed;
|
|
803
|
-
}
|
|
804
614
|
// Annotate the CommonJS export names for ESM import in node:
|
|
805
615
|
0 && (module.exports = {
|
|
806
|
-
buildManualProductDiscountItem,
|
|
807
616
|
buildSubmitPayload,
|
|
808
|
-
clearTempOrderHolderAssignments,
|
|
809
617
|
composeLinePrice,
|
|
810
618
|
createDefaultOrderRulesHooks,
|
|
811
619
|
createDefaultTempOrder,
|
|
812
620
|
createEmptySummary,
|
|
813
621
|
createUuidV4,
|
|
814
|
-
ensureManualProductDiscountList,
|
|
815
|
-
findManualProductDiscountItem,
|
|
816
622
|
formatDateTime,
|
|
817
623
|
formatV1Product,
|
|
818
624
|
generateDuration,
|
|
819
625
|
getAllDiscountList,
|
|
820
|
-
hasAssignedHolderId,
|
|
821
626
|
isTempOrder,
|
|
822
627
|
mapPaymentItemToOrderPayment,
|
|
823
628
|
mapPaymentItemsToOrderPayments,
|
|
824
|
-
mergeManualProductDiscountIntoList,
|
|
825
629
|
mergeRelationForms,
|
|
826
630
|
normalizeBookingIsAll,
|
|
827
631
|
normalizeBookingSubType,
|
|
828
|
-
normalizeOrderProductDiscountList,
|
|
829
632
|
normalizeSubmitBooking,
|
|
830
633
|
normalizeSubmitCollectPaxValue,
|
|
831
|
-
resolveEffectivePerUnitDiscount,
|
|
832
|
-
resolveManualDiscountMessage,
|
|
833
|
-
resolveManualDiscountOriginTotal,
|
|
834
|
-
resolveManualDiscountReasonFromSources,
|
|
835
|
-
resolveManualOverrideLineOriginalPrice,
|
|
836
|
-
resolveRulesManualDiscountFlag,
|
|
837
|
-
resolveSafeProductNum,
|
|
838
634
|
resolveSubmitCollectPax,
|
|
839
|
-
|
|
840
|
-
stripManualProductDiscountItems,
|
|
841
|
-
sumOptionUnitPrice,
|
|
842
|
-
syncManualProductDiscountProductNum
|
|
635
|
+
sumOptionUnitPrice
|
|
843
636
|
});
|
|
@@ -47,6 +47,7 @@ export declare class QuotationModule extends BaseModule implements Module {
|
|
|
47
47
|
customer_id?: number | string;
|
|
48
48
|
}): Map<string, string | null>;
|
|
49
49
|
setScheduleResolver(resolver: (id: number) => ScheduleItem | undefined): void;
|
|
50
|
+
private filterQuotationsByCustomer;
|
|
50
51
|
private isQuotationVisibleForCustomer;
|
|
51
52
|
private hasValidCustomerId;
|
|
52
53
|
private isQuotationActiveAt;
|
|
@@ -43,6 +43,8 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
43
43
|
const query = {};
|
|
44
44
|
if (params == null ? void 0 : params.channel)
|
|
45
45
|
query.channel = params.channel;
|
|
46
|
+
if (params == null ? void 0 : params.customer_id)
|
|
47
|
+
query.customer_id = String(params.customer_id);
|
|
46
48
|
if ((params == null ? void 0 : params.channel) === "online_store") {
|
|
47
49
|
query.channel = "online-store";
|
|
48
50
|
}
|
|
@@ -51,7 +53,10 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
51
53
|
query,
|
|
52
54
|
{ useCache: false }
|
|
53
55
|
);
|
|
54
|
-
const list =
|
|
56
|
+
const list = this.filterQuotationsByCustomer(
|
|
57
|
+
((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [],
|
|
58
|
+
params == null ? void 0 : params.customer_id
|
|
59
|
+
);
|
|
55
60
|
list.sort((a, b) => a.sort - b.sort);
|
|
56
61
|
this.store.list = list;
|
|
57
62
|
}
|
|
@@ -69,11 +74,9 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
69
74
|
getPriceForProduct(params) {
|
|
70
75
|
const { productId, variantId, datetime, customer_id } = params;
|
|
71
76
|
for (const quotation of this.store.list) {
|
|
72
|
-
|
|
73
|
-
if (!visible)
|
|
77
|
+
if (!this.isQuotationVisibleForCustomer(quotation, customer_id))
|
|
74
78
|
continue;
|
|
75
|
-
|
|
76
|
-
if (!active)
|
|
79
|
+
if (!this.isQuotationActiveAt(quotation, datetime))
|
|
77
80
|
continue;
|
|
78
81
|
const match = this.findProductData(quotation.product_data, productId, variantId);
|
|
79
82
|
if (!match)
|
|
@@ -125,6 +128,9 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
125
128
|
setScheduleResolver(resolver) {
|
|
126
129
|
this.scheduleResolver = resolver;
|
|
127
130
|
}
|
|
131
|
+
filterQuotationsByCustomer(list, customerId) {
|
|
132
|
+
return list.filter((quotation) => this.isQuotationVisibleForCustomer(quotation, customerId));
|
|
133
|
+
}
|
|
128
134
|
isQuotationVisibleForCustomer(quotation, customerId) {
|
|
129
135
|
const customers = quotation.customer || [];
|
|
130
136
|
if (customers.length === 0)
|
|
@@ -142,27 +148,18 @@ var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
|
142
148
|
var _a;
|
|
143
149
|
if (!((_a = quotation.schedule) == null ? void 0 : _a.length))
|
|
144
150
|
return false;
|
|
145
|
-
const scheduleItems =
|
|
146
|
-
quotation.schedule.forEach((s) => {
|
|
151
|
+
const scheduleItems = quotation.schedule.map((s) => {
|
|
147
152
|
var _a2;
|
|
148
153
|
const full = (_a2 = this.scheduleResolver) == null ? void 0 : _a2.call(this, s.id);
|
|
149
|
-
if (full)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
153
|
-
if (this.scheduleResolver) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
const fallbackSchedule = {
|
|
154
|
+
if (full)
|
|
155
|
+
return full;
|
|
156
|
+
return {
|
|
157
157
|
...s,
|
|
158
158
|
repeat_type: s.repeat_type || "none",
|
|
159
159
|
repeat_rule: s.repeat_rule || null,
|
|
160
160
|
time_slot: s.time_slot || []
|
|
161
161
|
};
|
|
162
|
-
scheduleItems.push(fallbackSchedule);
|
|
163
162
|
});
|
|
164
|
-
if (!scheduleItems.length)
|
|
165
|
-
return false;
|
|
166
163
|
return (0, import_getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
|
|
167
164
|
}
|
|
168
165
|
findProductData(productData, productId, variantId) {
|
|
@@ -32,10 +32,6 @@ export declare class RulesModule extends BaseModule implements Module, RulesModu
|
|
|
32
32
|
unavailableReason?: UnavailableReason;
|
|
33
33
|
};
|
|
34
34
|
filterDiscountListByType(discountList: Discount[], type: string): Discount[];
|
|
35
|
-
/** 剔除指定 type/tag 的折扣项,保留手动改价(type=product) / 券等 */
|
|
36
|
-
excludeDiscountListByType(discountList: Discount[], type: string): Discount[];
|
|
37
|
-
/** 手动改价场景:去掉 promotion,保留 type=product 等行内折扣 */
|
|
38
|
-
resolveDiscountListForManualOverride(discountList: Discount[]): Discount[];
|
|
39
35
|
private getUnavailableReason;
|
|
40
36
|
calcDiscount({ discountList, productList, holders, isFormSubject, orderTotalAmount }: {
|
|
41
37
|
discountList: Discount[];
|
|
@@ -159,14 +159,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
159
159
|
filterDiscountListByType(discountList, type) {
|
|
160
160
|
return (discountList || []).filter((item) => item.type === type || item.tag === type);
|
|
161
161
|
}
|
|
162
|
-
/** 剔除指定 type/tag 的折扣项,保留手动改价(type=product) / 券等 */
|
|
163
|
-
excludeDiscountListByType(discountList, type) {
|
|
164
|
-
return (discountList || []).filter((item) => item.type !== type && item.tag !== type);
|
|
165
|
-
}
|
|
166
|
-
/** 手动改价场景:去掉 promotion,保留 type=product 等行内折扣 */
|
|
167
|
-
resolveDiscountListForManualOverride(discountList) {
|
|
168
|
-
return this.excludeDiscountListByType(discountList, "promotion");
|
|
169
|
-
}
|
|
170
162
|
// 获取券不可用的原因
|
|
171
163
|
getUnavailableReason(discountList, productList) {
|
|
172
164
|
var _a;
|
|
@@ -681,7 +673,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
681
673
|
}, 0);
|
|
682
674
|
};
|
|
683
675
|
sortedFlattenedList.forEach((flatItem, index) => {
|
|
684
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F
|
|
676
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F;
|
|
685
677
|
let product, originProduct;
|
|
686
678
|
if (flatItem.type === "main") {
|
|
687
679
|
product = flatItem.product;
|
|
@@ -904,7 +896,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
904
896
|
price: product.price,
|
|
905
897
|
options: restoredOptions
|
|
906
898
|
},
|
|
907
|
-
discount_list:
|
|
899
|
+
discount_list: this.filterDiscountListByType(product.discount_list, "promotion")
|
|
908
900
|
})
|
|
909
901
|
]);
|
|
910
902
|
} else {
|
|
@@ -926,14 +918,14 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
926
918
|
main_product_selling_price,
|
|
927
919
|
options: restoredOptions
|
|
928
920
|
},
|
|
929
|
-
discount_list:
|
|
921
|
+
discount_list: this.filterDiscountListByType(product.discount_list, "promotion")
|
|
930
922
|
})
|
|
931
923
|
]);
|
|
932
924
|
}
|
|
933
925
|
} else {
|
|
934
926
|
processedFlatItemsMap.set(flatItem._id, [{
|
|
935
927
|
...flatItem,
|
|
936
|
-
discount_list:
|
|
928
|
+
discount_list: this.filterDiscountListByType(((_v = flatItem.bundleItem) == null ? void 0 : _v.discount_list) || [], "promotion"),
|
|
937
929
|
price: isManualDiscount ? flatItem.bundleItem.price : flatItem.bundleItem.original_price,
|
|
938
930
|
processed: true
|
|
939
931
|
}]);
|
|
@@ -984,13 +976,13 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
984
976
|
if (this.filterDiscountListByType(product.discount_list, "promotion").length && product.origin_total) {
|
|
985
977
|
productOriginTotal = product.origin_total;
|
|
986
978
|
}
|
|
987
|
-
if (Number(((
|
|
979
|
+
if (Number(((_w = originProduct == null ? void 0 : originProduct._productInit) == null ? void 0 : _w.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
|
|
988
980
|
productOriginTotal = product.total;
|
|
989
981
|
}
|
|
990
982
|
const isOrderLevel = (0, import_utils3.isOrderLevelFixedAmountDiscount)(selectedDiscount2);
|
|
991
983
|
const orderLevelAllocation = isOrderLevel ? orderLevelDiscountAllocations.get(selectedDiscount2.id) : null;
|
|
992
984
|
const productAllocation = orderLevelAllocation == null ? void 0 : orderLevelAllocation.get(flatItem._id);
|
|
993
|
-
const isDeductOptionPrice = !!((
|
|
985
|
+
const isDeductOptionPrice = !!((_x = selectedDiscount2.config) == null ? void 0 : _x.deductOptionPrice);
|
|
994
986
|
let mainProductSellingPrice;
|
|
995
987
|
let amount;
|
|
996
988
|
let productDiscountDifference;
|
|
@@ -1008,7 +1000,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
1008
1000
|
);
|
|
1009
1001
|
amount = new import_decimal.default(product.price).minus(new import_decimal.default(mainProductSellingPrice)).toNumber();
|
|
1010
1002
|
}
|
|
1011
|
-
if (isDeductOptionPrice && ((
|
|
1003
|
+
if (isDeductOptionPrice && ((_y = product.options) == null ? void 0 : _y.length)) {
|
|
1012
1004
|
const optionResult = applyDiscountToOptions(
|
|
1013
1005
|
product.options,
|
|
1014
1006
|
selectedDiscount2
|
|
@@ -1016,7 +1008,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
1016
1008
|
discountedOptions = optionResult.discountedOptions;
|
|
1017
1009
|
optionDiscountAmount = optionResult.optionDiscountAmount;
|
|
1018
1010
|
}
|
|
1019
|
-
const optionsForLineTotal = isDeductOptionPrice && ((
|
|
1011
|
+
const optionsForLineTotal = isDeductOptionPrice && ((_z = product.options) == null ? void 0 : _z.length) ? discountedOptions : product.options;
|
|
1020
1012
|
const optionsLineTotal = getOptionTotal(optionsForLineTotal || []);
|
|
1021
1013
|
const total = new import_decimal.default(mainProductSellingPrice).plus(optionsLineTotal).toNumber();
|
|
1022
1014
|
const mainProductDiscountAmount = amount;
|
|
@@ -1027,9 +1019,9 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
1027
1019
|
amount: lineDiscountAmount,
|
|
1028
1020
|
type: selectedDiscount2.tag === "product_discount_card" ? "discount_card" : discountType,
|
|
1029
1021
|
discount: {
|
|
1030
|
-
discount_card_type: (
|
|
1022
|
+
discount_card_type: (_A = selectedDiscount2 == null ? void 0 : selectedDiscount2.metadata) == null ? void 0 : _A.discount_card_type,
|
|
1031
1023
|
fixed_amount: lineDiscountAmount,
|
|
1032
|
-
discount_calculation_mode: (
|
|
1024
|
+
discount_calculation_mode: (_B = selectedDiscount2 == null ? void 0 : selectedDiscount2.metadata) == null ? void 0 : _B.discount_calculation_mode,
|
|
1033
1025
|
resource_id: selectedDiscount2.id,
|
|
1034
1026
|
title: selectedDiscount2.format_title,
|
|
1035
1027
|
original_amount: product.price,
|
|
@@ -1111,7 +1103,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
1111
1103
|
type: "good_pass",
|
|
1112
1104
|
discount: {
|
|
1113
1105
|
fixed_amount: product.origin_total,
|
|
1114
|
-
discount_calculation_mode: (
|
|
1106
|
+
discount_calculation_mode: (_C = selectedDiscount2 == null ? void 0 : selectedDiscount2.metadata) == null ? void 0 : _C.discount_calculation_mode,
|
|
1115
1107
|
resource_id: selectedDiscount2.id,
|
|
1116
1108
|
title: selectedDiscount2.format_title,
|
|
1117
1109
|
original_amount: product.origin_total,
|
|
@@ -1185,9 +1177,9 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
1185
1177
|
amount: fixedAmountPerItem * (product.num || 1),
|
|
1186
1178
|
type: selectedDiscount2.tag === "product_discount_card" ? "discount_card" : selectedDiscount2.tag,
|
|
1187
1179
|
discount: {
|
|
1188
|
-
discount_card_type: (
|
|
1180
|
+
discount_card_type: (_D = selectedDiscount2 == null ? void 0 : selectedDiscount2.metadata) == null ? void 0 : _D.discount_card_type,
|
|
1189
1181
|
fixed_amount: fixedAmountPerItem,
|
|
1190
|
-
discount_calculation_mode: (
|
|
1182
|
+
discount_calculation_mode: (_E = selectedDiscount2 == null ? void 0 : selectedDiscount2.metadata) == null ? void 0 : _E.discount_calculation_mode,
|
|
1191
1183
|
resource_id: selectedDiscount2.id,
|
|
1192
1184
|
title: selectedDiscount2.format_title,
|
|
1193
1185
|
original_amount: product.original_price,
|
|
@@ -1203,7 +1195,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
1203
1195
|
...productDiscountDifference !== void 0 && { product_discount_difference: productDiscountDifference }
|
|
1204
1196
|
},
|
|
1205
1197
|
config: selectedDiscount2 == null ? void 0 : selectedDiscount2.config,
|
|
1206
|
-
_num: (product.num || 1) * (((
|
|
1198
|
+
_num: (product.num || 1) * (((_F = flatItem == null ? void 0 : flatItem.parentProduct) == null ? void 0 : _F.num) || 1)
|
|
1207
1199
|
};
|
|
1208
1200
|
const appliedProducts = appliedDiscountProducts.get(selectedDiscount2.id) || [];
|
|
1209
1201
|
appliedProducts.push(discountDetail);
|
|
@@ -30,8 +30,7 @@ __reExport(SalesSummary_exports, require("./types"), module.exports);
|
|
|
30
30
|
var salesSummaryDataKeys = {
|
|
31
31
|
isPriceIncludeTax: "is_price_include_tax",
|
|
32
32
|
taxRate: "tax_rate",
|
|
33
|
-
taxTitle: "tax_title"
|
|
34
|
-
taxCountryCode: "tax_country_code"
|
|
33
|
+
taxTitle: "tax_title"
|
|
35
34
|
};
|
|
36
35
|
var SalesSummaryModule = class extends import_BaseModule.BaseModule {
|
|
37
36
|
constructor(name, version) {
|
|
@@ -85,8 +84,7 @@ var SalesSummaryModule = class extends import_BaseModule.BaseModule {
|
|
|
85
84
|
return {
|
|
86
85
|
isPriceIncludeTax: this.getAppData(salesSummaryDataKeys.isPriceIncludeTax),
|
|
87
86
|
taxRate: this.getAppData(salesSummaryDataKeys.taxRate),
|
|
88
|
-
taxTitle: this.getAppData(salesSummaryDataKeys.taxTitle)
|
|
89
|
-
taxCountryCode: this.getAppData(salesSummaryDataKeys.taxCountryCode)
|
|
87
|
+
taxTitle: this.getAppData(salesSummaryDataKeys.taxTitle)
|
|
90
88
|
};
|
|
91
89
|
}
|
|
92
90
|
async getSummary(params) {
|