@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 _item$discount_list;
113
- return item.booking_id && (((_item$discount_list = item.discount_list) === null || _item$discount_list === void 0 ? void 0 : _item$discount_list.length) || item.price == 0);
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$discount_lis, _product$discount_lis2;
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$discount_lis = product.discount_list) !== null && _product$discount_lis !== void 0 && _product$discount_lis.length && product !== null && product !== void 0 && (_product$discount_lis2 = product.discount_list) !== null && _product$discount_lis2 !== void 0 && _product$discount_lis2.every(function (discount) {
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$discount_lis3, _product$discount_lis4, _product$discount_lis5, _product$discount_lis6, _product$discount_lis7, _product$discount_lis8;
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$discount_lis3 = product.discount_list) !== null && _product$discount_lis3 !== void 0 && _product$discount_lis3.length && product !== null && product !== void 0 && (_product$discount_lis4 = product.discount_list) !== null && _product$discount_lis4 !== void 0 && _product$discount_lis4.every(function (discount) {
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
- if (Number(product.price) === 0 && discount.tag === 'good_pass' || Number(product.total) === 0 && discount.tag !== 'good_pass' || !product.price) return false;
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
- var selectedDiscount = applicableDiscounts[0];
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$discount_lis5 = product.discount_list) !== null && _product$discount_lis5 !== void 0 && _product$discount_lis5.length) || (product === null || product === void 0 || (_product$discount_lis6 = product.discount_list) === null || _product$discount_lis6 === void 0 || (_product$discount_lis7 = _product$discount_lis6.every) === null || _product$discount_lis7 === void 0 ? void 0 : _product$discount_lis7.call(_product$discount_lis6, function (item) {
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$discount_lis8 = product.discount_list) !== null && _product$discount_lis8 !== void 0 && _product$discount_lis8.some(function (item) {
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
- var _selectedDiscount = applicableDiscounts[_i];
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
- return item.booking_id && (((_a = item.discount_list) == null ? void 0 : _a.length) || item.price == 0);
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 === "good_pass" || Number(product.total) === 0 && discount.tag !== "good_pass" || !product.price)
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 selectedDiscount = applicableDiscounts[0];
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;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "2.0.47",
4
+ "version": "2.0.48",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",