@pisell/pisellos 2.0.47 → 2.0.49
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,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
416
425
|
}));
|
|
417
426
|
}
|
|
418
427
|
for (var _i = 0; _i < splitCount; _i++) {
|
|
419
|
-
var
|
|
428
|
+
var _originProduct$_produ, _product$discount_lis10;
|
|
429
|
+
// 如果用过折扣卡,也就不存在拆分的情况了,这里直接使用上面计算出来的折扣卡
|
|
430
|
+
var _selectedDiscount = selectedDiscountCard || applicableDiscounts[_i];
|
|
420
431
|
// 标记优惠券为已使用
|
|
421
432
|
usedDiscounts.set(_selectedDiscount.id, true);
|
|
422
433
|
|
|
@@ -425,6 +436,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
425
436
|
|
|
426
437
|
// 优先从 origin_total拿,可能会拿不到(比如用户端预约在没有配置 original_price 的情况下)
|
|
427
438
|
var productOriginTotal = product.origin_total || product.total || 0;
|
|
439
|
+
// 如果originProduct?._productInit?.original_price为 0,product.origin_total可能为空,此时取 product.total
|
|
440
|
+
if (Number((originProduct === null || originProduct === void 0 || (_originProduct$_produ = originProduct._productInit) === null || _originProduct$_produ === void 0 ? void 0 : _originProduct$_produ.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
|
|
441
|
+
productOriginTotal = product.total;
|
|
442
|
+
}
|
|
443
|
+
// 如果当前 product 有 discount_list,则必须从 origin_total 拿
|
|
444
|
+
if ((_product$discount_lis10 = product.discount_list) !== null && _product$discount_lis10 !== void 0 && _product$discount_lis10.length) {
|
|
445
|
+
productOriginTotal = product.origin_total;
|
|
446
|
+
}
|
|
428
447
|
|
|
429
448
|
// 计算使用折扣卡/商品券以后,单个商品的总 total
|
|
430
449
|
var targetProductTotal = _selectedDiscount.tag === 'good_pass' ? new Decimal(productOriginTotal).minus(new Decimal(product.price || 0)).toNumber() : new Decimal(100).minus(_selectedDiscount.par_value || 0).div(100).mul(new Decimal(productOriginTotal)).toNumber();
|
|
@@ -1436,7 +1436,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1436
1436
|
var resources = [];
|
|
1437
1437
|
if (dateRange !== null && dateRange !== void 0 && dateRange.length) {
|
|
1438
1438
|
dateRange.forEach(function (n) {
|
|
1439
|
-
resources.push.apply(resources, _toConsumableArray(
|
|
1439
|
+
if (n.resource) resources.push.apply(resources, _toConsumableArray(n.resource));
|
|
1440
1440
|
});
|
|
1441
1441
|
}
|
|
1442
1442
|
var cartItems = this.store.cart.getItems().filter(function (n) {
|
|
@@ -1673,10 +1673,18 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1673
1673
|
}
|
|
1674
1674
|
// 如果此时 resources 为空,视作购物车里已经有了 dateRange 数据,此时 dateList 里明确就是那一天的数据
|
|
1675
1675
|
if (!AllResources.length) {
|
|
1676
|
-
var
|
|
1677
|
-
|
|
1678
|
-
if (n.resource) AllResources.push.apply(AllResources, _toConsumableArray(n.resource));
|
|
1676
|
+
var firstDateCartItem = cartItems === null || cartItems === void 0 ? void 0 : cartItems.find(function (n) {
|
|
1677
|
+
return n.start_date;
|
|
1679
1678
|
});
|
|
1679
|
+
if (firstDateCartItem !== null && firstDateCartItem !== void 0 && firstDateCartItem.start_date) {
|
|
1680
|
+
var dateResources = this.store.date.getResourcesListByDate(firstDateCartItem.start_date);
|
|
1681
|
+
AllResources.push.apply(AllResources, _toConsumableArray(dateResources || []));
|
|
1682
|
+
} else {
|
|
1683
|
+
var dateList = this.store.date.getDateList();
|
|
1684
|
+
dateList.forEach(function (n) {
|
|
1685
|
+
if (n.resource) AllResources.push.apply(AllResources, _toConsumableArray(n.resource));
|
|
1686
|
+
});
|
|
1687
|
+
}
|
|
1680
1688
|
}
|
|
1681
1689
|
var resourcesMap = getResourcesMap(cloneDeep(AllResources));
|
|
1682
1690
|
var allCartItems = cloneDeep(this.store.cart.getItems());
|
|
@@ -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,
|
|
@@ -206,14 +207,16 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
206
207
|
});
|
|
207
208
|
console.log(sortedProductList, "sortedProductListsortedProductList");
|
|
208
209
|
sortedProductList.forEach((originProduct, i) => {
|
|
209
|
-
var _a, _b, _c, _d, _e, _f;
|
|
210
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
210
211
|
const product = this.hooks.getProduct(originProduct);
|
|
211
212
|
if ((product == null ? void 0 : product.booking_id) && ((_a = product.discount_list) == null ? void 0 : _a.length) && ((_b = product == null ? void 0 : product.discount_list) == null ? void 0 : _b.every((discount) => discount.id && ["good_pass", "discount_card", "product_discount_card"].includes(discount.tag || discount.type)))) {
|
|
212
213
|
processedProductsMap.set(product._id, [originProduct]);
|
|
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,10 +294,16 @@ 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
|
+
let productOriginTotal = product.origin_total || product.total || 0;
|
|
301
|
+
if (Number(((_g = originProduct == null ? void 0 : originProduct._productInit) == null ? void 0 : _g.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
|
|
302
|
+
productOriginTotal = product.total;
|
|
303
|
+
}
|
|
304
|
+
if ((_h = product.discount_list) == null ? void 0 : _h.length) {
|
|
305
|
+
productOriginTotal = product.origin_total;
|
|
306
|
+
}
|
|
297
307
|
const targetProductTotal = selectedDiscount2.tag === "good_pass" ? new import_decimal.default(productOriginTotal).minus(new import_decimal.default(product.price || 0)).toNumber() : new import_decimal.default(100).minus(selectedDiscount2.par_value || 0).div(100).mul(new import_decimal.default(productOriginTotal)).toNumber();
|
|
298
308
|
const discountDetail = {
|
|
299
309
|
amount: new import_decimal.default(productOriginTotal).minus(new import_decimal.default(targetProductTotal)).toNumber(),
|
|
@@ -826,7 +826,8 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
826
826
|
const resources = [];
|
|
827
827
|
if (dateRange == null ? void 0 : dateRange.length) {
|
|
828
828
|
dateRange.forEach((n) => {
|
|
829
|
-
|
|
829
|
+
if (n.resource)
|
|
830
|
+
resources.push(...n.resource);
|
|
830
831
|
});
|
|
831
832
|
}
|
|
832
833
|
const cartItems = this.store.cart.getItems().filter((n) => !(0, import_utils4.isNormalProduct)(n._productOrigin));
|
|
@@ -1055,11 +1056,17 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
1055
1056
|
});
|
|
1056
1057
|
}
|
|
1057
1058
|
if (!AllResources.length) {
|
|
1058
|
-
const
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
}
|
|
1059
|
+
const firstDateCartItem = cartItems == null ? void 0 : cartItems.find((n) => n.start_date);
|
|
1060
|
+
if (firstDateCartItem == null ? void 0 : firstDateCartItem.start_date) {
|
|
1061
|
+
const dateResources = this.store.date.getResourcesListByDate(firstDateCartItem.start_date);
|
|
1062
|
+
AllResources.push(...dateResources || []);
|
|
1063
|
+
} else {
|
|
1064
|
+
const dateList = this.store.date.getDateList();
|
|
1065
|
+
dateList.forEach((n) => {
|
|
1066
|
+
if (n.resource)
|
|
1067
|
+
AllResources.push(...n.resource);
|
|
1068
|
+
});
|
|
1069
|
+
}
|
|
1063
1070
|
}
|
|
1064
1071
|
const resourcesMap = (0, import_utils.getResourcesMap)((0, import_lodash_es.cloneDeep)(AllResources));
|
|
1065
1072
|
const allCartItems = (0, import_lodash_es.cloneDeep)(this.store.cart.getItems());
|