@pisell/pisellos 2.0.47 → 2.0.48
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.
|
@@ -109,8 +109,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
109
109
|
|
|
110
110
|
// 编辑商品已有商品券
|
|
111
111
|
if (productList.every(function (item) {
|
|
112
|
-
var
|
|
113
|
-
|
|
112
|
+
var _product$discount_lis;
|
|
113
|
+
var product = _this2.hooks.getProduct(item);
|
|
114
|
+
return product.booking_id && (((_product$discount_lis = product.discount_list) === null || _product$discount_lis === void 0 ? void 0 : _product$discount_lis.length) || (newDiscountList[0].tag === 'good_pass' ? product.price == 0 : product.total == 0));
|
|
114
115
|
})) {
|
|
115
116
|
return {
|
|
116
117
|
isAvailable: false,
|
|
@@ -278,14 +279,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
278
279
|
sortedProductList.forEach(function (originProduct) {
|
|
279
280
|
var product = _this3.hooks.getProduct(originProduct);
|
|
280
281
|
addModeDiscount.forEach(function (discount) {
|
|
281
|
-
var _product$
|
|
282
|
+
var _product$discount_lis2, _product$discount_lis3;
|
|
282
283
|
var limitedData = discount === null || discount === void 0 ? void 0 : discount.limited_relation_product_data;
|
|
283
284
|
|
|
284
285
|
// 是符合折扣的商品
|
|
285
286
|
var isLimitedProduct = limitedData.type === 'product_all' || limitedData.product_ids && limitedData.product_ids.includes(product.id);
|
|
286
287
|
|
|
287
288
|
// 编辑的商品 使用了优惠券不可用
|
|
288
|
-
var isAvailableProduct = !(product !== null && product !== void 0 && product.booking_id && product !== null && product !== void 0 && (_product$
|
|
289
|
+
var isAvailableProduct = !(product !== null && product !== void 0 && product.booking_id && product !== null && product !== void 0 && (_product$discount_lis2 = product.discount_list) !== null && _product$discount_lis2 !== void 0 && _product$discount_lis2.length && product !== null && product !== void 0 && (_product$discount_lis3 = product.discount_list) !== null && _product$discount_lis3 !== void 0 && _product$discount_lis3.every(function (discount) {
|
|
289
290
|
return discount.id && ['good_pass', 'discount_card', 'product_discount_card'].includes(discount.tag || discount.type);
|
|
290
291
|
}));
|
|
291
292
|
|
|
@@ -318,9 +319,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
318
319
|
|
|
319
320
|
// 然后再处理应用哪些优惠券,此时只考虑filteredDiscountList中的优惠券
|
|
320
321
|
sortedProductList.forEach(function (originProduct, i) {
|
|
321
|
-
var _product$
|
|
322
|
+
var _product$discount_lis4, _product$discount_lis5, _product$discount_lis6, _product$discount_lis7, _product$discount_lis8, _product$discount_lis9;
|
|
322
323
|
var product = _this3.hooks.getProduct(originProduct);
|
|
323
|
-
if (product !== null && product !== void 0 && product.booking_id && (_product$
|
|
324
|
+
if (product !== null && product !== void 0 && product.booking_id && (_product$discount_lis4 = product.discount_list) !== null && _product$discount_lis4 !== void 0 && _product$discount_lis4.length && product !== null && product !== void 0 && (_product$discount_lis5 = product.discount_list) !== null && _product$discount_lis5 !== void 0 && _product$discount_lis5.every(function (discount) {
|
|
324
325
|
return discount.id && ['good_pass', 'discount_card', 'product_discount_card'].includes(discount.tag || discount.type);
|
|
325
326
|
})) {
|
|
326
327
|
processedProductsMap.set(product._id, [originProduct]);
|
|
@@ -330,7 +331,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
330
331
|
// 找到适用于此商品的所有优惠券,仅考虑isSelected不为false的优惠券
|
|
331
332
|
var applicableDiscounts = sortedDiscountList.filter(function (discount) {
|
|
332
333
|
// 如果商品价格为 0,其实不需要使用任何优惠券,直接 return true
|
|
333
|
-
|
|
334
|
+
// 商品券时主商品价格为0不可用
|
|
335
|
+
if ((Number(product.price) === 0 || !product.price) && (discount.tag || discount.type) === 'good_pass') return false;
|
|
336
|
+
// 折扣卡时总价为0时不可用
|
|
337
|
+
if ((Number(product.total) === 0 || !product.total) && (discount.tag || discount.type) !== 'good_pass') return false;
|
|
334
338
|
// 如果优惠券已被使用,则跳过
|
|
335
339
|
var targetUsedDiscounts = usedDiscounts.get(discount.id);
|
|
336
340
|
if (targetUsedDiscounts && (discount.tag || discount.type) === 'good_pass') return false;
|
|
@@ -346,15 +350,20 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
346
350
|
});
|
|
347
351
|
|
|
348
352
|
// 选择第一个适用的优惠券(已经按过期时间排序)
|
|
349
|
-
|
|
353
|
+
// 如果有 isScan 且 isSelected 的折扣卡,则优先选中,否则再选择第一个
|
|
354
|
+
// 用于处理:先手动扫描了一张折扣卡,扫描完以后带入客户信息,但是之前那张折扣卡不是最优惠的情况
|
|
355
|
+
var selectedDiscountCard = applicableDiscounts.find(function (n) {
|
|
356
|
+
return n.isScan && n.isSelected && (n.tag || n.type) !== 'good_pass';
|
|
357
|
+
});
|
|
358
|
+
var selectedDiscount = selectedDiscountCard || applicableDiscounts[0];
|
|
350
359
|
|
|
351
360
|
// 如果是手动折扣,则不适用优惠券
|
|
352
|
-
var isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount : product.total != product.origin_total && (!((_product$
|
|
361
|
+
var isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount : product.total != product.origin_total && (!((_product$discount_lis6 = product.discount_list) !== null && _product$discount_lis6 !== void 0 && _product$discount_lis6.length) || (product === null || product === void 0 || (_product$discount_lis7 = product.discount_list) === null || _product$discount_lis7 === void 0 || (_product$discount_lis8 = _product$discount_lis7.every) === null || _product$discount_lis8 === void 0 ? void 0 : _product$discount_lis8.call(_product$discount_lis7, function (item) {
|
|
353
362
|
return item.type === 'product';
|
|
354
363
|
})));
|
|
355
364
|
|
|
356
365
|
// 勾选时覆盖手动折扣
|
|
357
|
-
if (options !== null && options !== void 0 && options.discountId && (_product$
|
|
366
|
+
if (options !== null && options !== void 0 && options.discountId && (_product$discount_lis9 = product.discount_list) !== null && _product$discount_lis9 !== void 0 && _product$discount_lis9.some(function (item) {
|
|
358
367
|
var _item$discount;
|
|
359
368
|
return ((_item$discount = item.discount) === null || _item$discount === void 0 ? void 0 : _item$discount.resource_id) === options.discountId;
|
|
360
369
|
})) {
|
|
@@ -416,7 +425,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
416
425
|
}));
|
|
417
426
|
}
|
|
418
427
|
for (var _i = 0; _i < splitCount; _i++) {
|
|
419
|
-
|
|
428
|
+
// 如果用过折扣卡,也就不存在拆分的情况了,这里直接使用上面计算出来的折扣卡
|
|
429
|
+
var _selectedDiscount = selectedDiscountCard || applicableDiscounts[_i];
|
|
420
430
|
// 标记优惠券为已使用
|
|
421
431
|
usedDiscounts.set(_selectedDiscount.id, true);
|
|
422
432
|
|
|
@@ -424,6 +434,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
424
434
|
var appliedProducts = appliedDiscountProducts.get(_selectedDiscount.id) || [];
|
|
425
435
|
|
|
426
436
|
// 优先从 origin_total拿,可能会拿不到(比如用户端预约在没有配置 original_price 的情况下)
|
|
437
|
+
|
|
427
438
|
var productOriginTotal = product.origin_total || product.total || 0;
|
|
428
439
|
|
|
429
440
|
// 计算使用折扣卡/商品券以后,单个商品的总 total
|
|
@@ -71,7 +71,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
71
71
|
}
|
|
72
72
|
if (productList.every((item) => {
|
|
73
73
|
var _a;
|
|
74
|
-
|
|
74
|
+
const product = this.hooks.getProduct(item);
|
|
75
|
+
return product.booking_id && (((_a = product.discount_list) == null ? void 0 : _a.length) || (newDiscountList[0].tag === "good_pass" ? product.price == 0 : product.total == 0));
|
|
75
76
|
})) {
|
|
76
77
|
return {
|
|
77
78
|
isAvailable: false,
|
|
@@ -213,7 +214,9 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
213
214
|
return;
|
|
214
215
|
}
|
|
215
216
|
const applicableDiscounts = sortedDiscountList.filter((discount) => {
|
|
216
|
-
if (Number(product.price) === 0 && discount.tag
|
|
217
|
+
if ((Number(product.price) === 0 || !product.price) && (discount.tag || discount.type) === "good_pass")
|
|
218
|
+
return false;
|
|
219
|
+
if ((Number(product.total) === 0 || !product.total) && (discount.tag || discount.type) !== "good_pass")
|
|
217
220
|
return false;
|
|
218
221
|
const targetUsedDiscounts = usedDiscounts.get(discount.id);
|
|
219
222
|
if (targetUsedDiscounts && (discount.tag || discount.type) === "good_pass")
|
|
@@ -226,7 +229,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
226
229
|
}
|
|
227
230
|
return false;
|
|
228
231
|
});
|
|
229
|
-
const
|
|
232
|
+
const selectedDiscountCard = applicableDiscounts.find((n) => n.isScan && n.isSelected && (n.tag || n.type) !== "good_pass");
|
|
233
|
+
const selectedDiscount = selectedDiscountCard || applicableDiscounts[0];
|
|
230
234
|
let isManualDiscount = typeof product.isManualDiscount === "boolean" ? product.isManualDiscount : product.total != product.origin_total && (!((_c = product.discount_list) == null ? void 0 : _c.length) || ((_e = (_d = product == null ? void 0 : product.discount_list) == null ? void 0 : _d.every) == null ? void 0 : _e.call(_d, (item) => item.type === "product")));
|
|
231
235
|
if ((options == null ? void 0 : options.discountId) && ((_f = product.discount_list) == null ? void 0 : _f.some((item) => {
|
|
232
236
|
var _a2;
|
|
@@ -290,7 +294,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
290
294
|
}));
|
|
291
295
|
}
|
|
292
296
|
for (let i2 = 0; i2 < splitCount; i2++) {
|
|
293
|
-
const selectedDiscount2 = applicableDiscounts[i2];
|
|
297
|
+
const selectedDiscount2 = selectedDiscountCard || applicableDiscounts[i2];
|
|
294
298
|
usedDiscounts.set(selectedDiscount2.id, true);
|
|
295
299
|
const appliedProducts = appliedDiscountProducts.get(selectedDiscount2.id) || [];
|
|
296
300
|
const productOriginTotal = product.origin_total || product.total || 0;
|