@pisell/pisellos 1.0.80 → 1.0.81
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/Discount/index.js +2 -1
- package/dist/modules/Discount/types.d.ts +2 -0
- package/dist/modules/Product/index.d.ts +1 -1
- package/dist/modules/Rules/index.js +203 -102
- package/dist/modules/Rules/types.d.ts +1 -0
- package/dist/solution/Checkout/index.js +40 -16
- package/lib/modules/Discount/index.js +2 -1
- package/lib/modules/Discount/types.d.ts +2 -0
- package/lib/modules/Product/index.d.ts +1 -1
- package/lib/modules/Rules/index.js +156 -95
- package/lib/modules/Rules/types.d.ts +1 -0
- package/lib/solution/BookingTicket/index.js +0 -6
- package/lib/solution/Checkout/index.js +37 -16
- package/package.json +2 -2
|
@@ -268,7 +268,8 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
268
268
|
}
|
|
269
269
|
if (discount.appliedProductDetails) {
|
|
270
270
|
return discount.appliedProductDetails.reduce(function (total, product) {
|
|
271
|
-
var
|
|
271
|
+
var _product$discount;
|
|
272
|
+
var price = new Decimal((product === null || product === void 0 || (_product$discount = product.discount) === null || _product$discount === void 0 ? void 0 : _product$discount.fixed_amount) * product._num);
|
|
272
273
|
return new Decimal(total).plus(price).toNumber();
|
|
273
274
|
}, 0);
|
|
274
275
|
}
|
|
@@ -34,12 +34,14 @@ interface ApplicableProductDetails {
|
|
|
34
34
|
original_amount: string;
|
|
35
35
|
num: number;
|
|
36
36
|
discount?: {
|
|
37
|
+
fixed_amount?: number;
|
|
37
38
|
product_id?: number;
|
|
38
39
|
original_amount?: string;
|
|
39
40
|
percent?: string;
|
|
40
41
|
resource_id?: number;
|
|
41
42
|
title?: string;
|
|
42
43
|
};
|
|
44
|
+
_num: number;
|
|
43
45
|
}
|
|
44
46
|
interface UsageCreditsValue {
|
|
45
47
|
total_credits: number;
|
|
@@ -49,5 +49,5 @@ export declare class Product extends BaseModule implements Module {
|
|
|
49
49
|
getCategories(): ProductCategory[];
|
|
50
50
|
setOtherParams(key: string, value: any): void;
|
|
51
51
|
getOtherParams(): any;
|
|
52
|
-
getProductType(): "
|
|
52
|
+
getProductType(): "normal" | "duration" | "session";
|
|
53
53
|
}
|
|
@@ -24,6 +24,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
24
24
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
25
25
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
26
|
import { BaseModule } from "../BaseModule";
|
|
27
|
+
import { RulesHooks } from "./types";
|
|
27
28
|
import { uniqueById, getDiscountAmount, getDiscountListAmountTotal, getDiscountListAmount } from "../../solution/ShopDiscount/utils";
|
|
28
29
|
import { getProductOriginTotalPrice, getProductTotalPrice } from "../Cart/utils";
|
|
29
30
|
import Decimal from 'decimal.js';
|
|
@@ -72,7 +73,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
72
73
|
case 0:
|
|
73
74
|
this.store.rulesList = rulesList;
|
|
74
75
|
_context2.next = 3;
|
|
75
|
-
return this.core.effects.emit(
|
|
76
|
+
return this.core.effects.emit(RulesHooks.OnRulesListChange, rulesList);
|
|
76
77
|
case 3:
|
|
77
78
|
case "end":
|
|
78
79
|
return _context2.stop();
|
|
@@ -423,8 +424,12 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
423
424
|
// 记录可抵扣的商品详情
|
|
424
425
|
var applicableProducts = discountApplicableProducts.get(discount.id) || [];
|
|
425
426
|
var discountType = discount.tag || discount.type;
|
|
427
|
+
var isGoodPass = discountType === 'good_pass';
|
|
428
|
+
|
|
429
|
+
// 使用数量
|
|
430
|
+
var num = isGoodPass || (flatItem === null || flatItem === void 0 ? void 0 : flatItem.type) === 'main' ? 1 : product.num;
|
|
426
431
|
var productData = {
|
|
427
|
-
amount: product.price *
|
|
432
|
+
amount: product.price * num,
|
|
428
433
|
type: discountType,
|
|
429
434
|
tag: discountType,
|
|
430
435
|
discount: {
|
|
@@ -435,13 +440,11 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
435
440
|
original_amount: product.price || product.origin_total,
|
|
436
441
|
pre_value: discount.par_value,
|
|
437
442
|
product_id: originProduct.id
|
|
443
|
+
},
|
|
444
|
+
metadata: {
|
|
445
|
+
num: num
|
|
438
446
|
}
|
|
439
447
|
};
|
|
440
|
-
|
|
441
|
-
// 如果 discount.tag 或者 discount.type 是 good_pass,则不需要添加 num 属性
|
|
442
|
-
if (discountType !== 'good_pass') {
|
|
443
|
-
productData.num = product.num || 1;
|
|
444
|
-
}
|
|
445
448
|
applicableProducts.push(productData);
|
|
446
449
|
discountApplicableProducts.set(discount.id, applicableProducts);
|
|
447
450
|
}
|
|
@@ -454,7 +457,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
454
457
|
// 然后再处理应用哪些优惠券,此时只考虑filteredDiscountList中的优惠券
|
|
455
458
|
// 🔥 使用扁平化后的列表进行处理
|
|
456
459
|
sortedFlattenedList.forEach(function (flatItem, index) {
|
|
457
|
-
var _product4, _product$discount_lis2, _product5
|
|
460
|
+
var _product4, _product$discount_lis2, _product5;
|
|
458
461
|
// 获取商品数据
|
|
459
462
|
var product, originProduct;
|
|
460
463
|
if (flatItem.type === 'main') {
|
|
@@ -534,28 +537,85 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
534
537
|
var selectedDiscount = selectedDiscountCard || applicableDiscounts[0];
|
|
535
538
|
|
|
536
539
|
// 如果是手动折扣,则不适用优惠券
|
|
537
|
-
var isManualDiscount =
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
540
|
+
var isManualDiscount = false;
|
|
541
|
+
if (flatItem.type === 'main') {
|
|
542
|
+
var _product$discount_lis4, _product6, _product6$every;
|
|
543
|
+
// 主商品:判断自身是否手动折扣
|
|
544
|
+
isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount : product.total != product.origin_total && (product.bundle || []).every(function (item) {
|
|
545
|
+
var _ref3;
|
|
546
|
+
return !((_ref3 = item.discount_list || []) !== null && _ref3 !== void 0 && _ref3.length);
|
|
547
|
+
}) && (!((_product$discount_lis4 = product.discount_list) !== null && _product$discount_lis4 !== void 0 && _product$discount_lis4.length) || ((_product6 = product) === null || _product6 === void 0 || (_product6 = _product6.discount_list) === null || _product6 === void 0 || (_product6$every = _product6.every) === null || _product6$every === void 0 ? void 0 : _product6$every.call(_product6, function (item) {
|
|
548
|
+
return item.type === 'product';
|
|
549
|
+
})));
|
|
550
|
+
} else {
|
|
551
|
+
// bundle子商品:判断父主商品是否手动折扣
|
|
552
|
+
var parentProduct = flatItem.parentProduct;
|
|
553
|
+
if (parentProduct) {
|
|
554
|
+
var _parentProduct$discou, _parentProduct$discou2, _parentProduct$discou3;
|
|
555
|
+
isManualDiscount = typeof parentProduct.isManualDiscount === 'boolean' ? parentProduct.isManualDiscount : parentProduct.total != parentProduct.origin_total && (parentProduct.bundle || []).every(function (item) {
|
|
556
|
+
var _ref4;
|
|
557
|
+
return !((_ref4 = item.discount_list || []) !== null && _ref4 !== void 0 && _ref4.length);
|
|
558
|
+
}) && (!((_parentProduct$discou = parentProduct.discount_list) !== null && _parentProduct$discou !== void 0 && _parentProduct$discou.length) || (parentProduct === null || parentProduct === void 0 || (_parentProduct$discou2 = parentProduct.discount_list) === null || _parentProduct$discou2 === void 0 || (_parentProduct$discou3 = _parentProduct$discou2.every) === null || _parentProduct$discou3 === void 0 ? void 0 : _parentProduct$discou3.call(_parentProduct$discou2, function (item) {
|
|
559
|
+
return item.type === 'product';
|
|
560
|
+
})));
|
|
561
|
+
}
|
|
562
|
+
}
|
|
543
563
|
|
|
544
564
|
// 勾选时覆盖手动折扣
|
|
545
|
-
if (options !== null && options !== void 0 && options.discountId
|
|
546
|
-
var
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
565
|
+
if (options !== null && options !== void 0 && options.discountId) {
|
|
566
|
+
var _product$discount_lis5;
|
|
567
|
+
// 主商品:检查自己的 discount_list
|
|
568
|
+
if (flatItem.type === 'main' && (_product$discount_lis5 = product.discount_list) !== null && _product$discount_lis5 !== void 0 && _product$discount_lis5.some(function (item) {
|
|
569
|
+
var _item$discount;
|
|
570
|
+
return ((_item$discount = item.discount) === null || _item$discount === void 0 ? void 0 : _item$discount.resource_id) === options.discountId;
|
|
571
|
+
})) {
|
|
572
|
+
isManualDiscount = false;
|
|
573
|
+
}
|
|
574
|
+
// bundle子商品:检查自己的 discount_list 或父主商品的 discount_list
|
|
575
|
+
if (flatItem.type === 'bundle') {
|
|
576
|
+
var _product$discount_lis6, _flatItem$parentProdu;
|
|
577
|
+
if ((_product$discount_lis6 = product.discount_list) !== null && _product$discount_lis6 !== void 0 && _product$discount_lis6.some(function (item) {
|
|
578
|
+
var _item$discount2;
|
|
579
|
+
return ((_item$discount2 = item.discount) === null || _item$discount2 === void 0 ? void 0 : _item$discount2.resource_id) === options.discountId;
|
|
580
|
+
}) || (_flatItem$parentProdu = flatItem.parentProduct) !== null && _flatItem$parentProdu !== void 0 && (_flatItem$parentProdu = _flatItem$parentProdu.discount_list) !== null && _flatItem$parentProdu !== void 0 && _flatItem$parentProdu.some(function (item) {
|
|
581
|
+
var _item$discount3;
|
|
582
|
+
return ((_item$discount3 = item.discount) === null || _item$discount3 === void 0 ? void 0 : _item$discount3.resource_id) === options.discountId;
|
|
583
|
+
})) {
|
|
584
|
+
isManualDiscount = false;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
550
587
|
}
|
|
551
|
-
if (options !== null && options !== void 0 && options.selectedList
|
|
552
|
-
var
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
588
|
+
if (options !== null && options !== void 0 && options.selectedList) {
|
|
589
|
+
var _product$discount_lis7;
|
|
590
|
+
// 主商品:检查自己的 discount_list
|
|
591
|
+
if (flatItem.type === 'main' && (_product$discount_lis7 = product.discount_list) !== null && _product$discount_lis7 !== void 0 && _product$discount_lis7.some(function (item) {
|
|
592
|
+
var _options$selectedList;
|
|
593
|
+
return options === null || options === void 0 || (_options$selectedList = options.selectedList) === null || _options$selectedList === void 0 ? void 0 : _options$selectedList.some(function (n) {
|
|
594
|
+
var _item$discount4;
|
|
595
|
+
return n.discountId === ((_item$discount4 = item.discount) === null || _item$discount4 === void 0 ? void 0 : _item$discount4.resource_id);
|
|
596
|
+
});
|
|
597
|
+
})) {
|
|
598
|
+
isManualDiscount = false;
|
|
599
|
+
}
|
|
600
|
+
// bundle子商品:检查自己的 discount_list 或父主商品的 discount_list
|
|
601
|
+
if (flatItem.type === 'bundle') {
|
|
602
|
+
var _product$discount_lis8, _flatItem$parentProdu2;
|
|
603
|
+
if ((_product$discount_lis8 = product.discount_list) !== null && _product$discount_lis8 !== void 0 && _product$discount_lis8.some(function (item) {
|
|
604
|
+
var _options$selectedList2;
|
|
605
|
+
return options === null || options === void 0 || (_options$selectedList2 = options.selectedList) === null || _options$selectedList2 === void 0 ? void 0 : _options$selectedList2.some(function (n) {
|
|
606
|
+
var _item$discount5;
|
|
607
|
+
return n.discountId === ((_item$discount5 = item.discount) === null || _item$discount5 === void 0 ? void 0 : _item$discount5.resource_id);
|
|
608
|
+
});
|
|
609
|
+
}) || (_flatItem$parentProdu2 = flatItem.parentProduct) !== null && _flatItem$parentProdu2 !== void 0 && (_flatItem$parentProdu2 = _flatItem$parentProdu2.discount_list) !== null && _flatItem$parentProdu2 !== void 0 && _flatItem$parentProdu2.some(function (item) {
|
|
610
|
+
var _options$selectedList3;
|
|
611
|
+
return options === null || options === void 0 || (_options$selectedList3 = options.selectedList) === null || _options$selectedList3 === void 0 ? void 0 : _options$selectedList3.some(function (n) {
|
|
612
|
+
var _item$discount6;
|
|
613
|
+
return n.discountId === ((_item$discount6 = item.discount) === null || _item$discount6 === void 0 ? void 0 : _item$discount6.resource_id);
|
|
614
|
+
});
|
|
615
|
+
})) {
|
|
616
|
+
isManualDiscount = false;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
559
619
|
}
|
|
560
620
|
|
|
561
621
|
// 如果没有适用的优惠券,或者手动折扣,则不适用优惠券
|
|
@@ -588,7 +648,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
588
648
|
processedProductsMap.set(product._id, [_this3.hooks.setProduct(originProduct, _objectSpread(_objectSpread({}, isManualDiscount ? {} : {
|
|
589
649
|
_id: product._id.split('___')[0] + '___' + index,
|
|
590
650
|
total: product.origin_total || product.total,
|
|
591
|
-
price: product.price
|
|
651
|
+
price: product.price,
|
|
652
|
+
main_product_selling_price: product.price
|
|
592
653
|
}), {}, {
|
|
593
654
|
discount_list: []
|
|
594
655
|
}))]);
|
|
@@ -629,7 +690,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
629
690
|
}));
|
|
630
691
|
}
|
|
631
692
|
for (var i = 0; i < splitCount; i++) {
|
|
632
|
-
var _product$
|
|
693
|
+
var _product$discount_lis9, _originProduct, _selectedDiscount$met;
|
|
633
694
|
// 如果用过折扣卡,也就不存在拆分的情况了,这里直接使用上面计算出来的折扣卡
|
|
634
695
|
var _selectedDiscount = selectedDiscountCard || applicableDiscounts[i];
|
|
635
696
|
// 标记优惠券为已使用
|
|
@@ -641,7 +702,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
641
702
|
// 优先从 origin_total拿,可能会拿不到(比如用户端预约在没有配置 original_price 的情况下)
|
|
642
703
|
var productOriginTotal = product.origin_total || product.total || 0;
|
|
643
704
|
// 如果当前 product 有 discount_list,则先从 origin_total 拿
|
|
644
|
-
if ((_product$
|
|
705
|
+
if ((_product$discount_lis9 = product.discount_list) !== null && _product$discount_lis9 !== void 0 && _product$discount_lis9.length && product.origin_total) {
|
|
645
706
|
productOriginTotal = product.origin_total;
|
|
646
707
|
}
|
|
647
708
|
// 如果originProduct?._productInit?.original_price为 0,product.origin_total可能为空,此时取 product.total
|
|
@@ -651,24 +712,27 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
651
712
|
|
|
652
713
|
// 计算使用折扣卡/商品券以后,单个商品的总 total
|
|
653
714
|
var targetProductTotal = getDiscountAmount(_selectedDiscount, product.price, product.price);
|
|
715
|
+
var discountType = _selectedDiscount.tag || _selectedDiscount.type;
|
|
716
|
+
var isGoodPass = discountType === 'good_pass';
|
|
717
|
+
var amount = new Decimal(product.price).minus(new Decimal(targetProductTotal)).toNumber();
|
|
654
718
|
var discountDetail = {
|
|
655
|
-
amount:
|
|
656
|
-
type: _selectedDiscount.tag === 'product_discount_card' ? 'discount_card' :
|
|
719
|
+
amount: amount,
|
|
720
|
+
type: _selectedDiscount.tag === 'product_discount_card' ? 'discount_card' : discountType,
|
|
657
721
|
discount: {
|
|
658
722
|
discount_card_type: _selectedDiscount === null || _selectedDiscount === void 0 || (_selectedDiscount$met = _selectedDiscount.metadata) === null || _selectedDiscount$met === void 0 ? void 0 : _selectedDiscount$met.discount_card_type,
|
|
659
|
-
fixed_amount:
|
|
723
|
+
fixed_amount: amount,
|
|
660
724
|
resource_id: _selectedDiscount.id,
|
|
661
725
|
title: _selectedDiscount.format_title,
|
|
662
726
|
original_amount: product.price,
|
|
663
727
|
product_id: originProduct.id,
|
|
664
728
|
percent: _selectedDiscount.par_value
|
|
729
|
+
},
|
|
730
|
+
// 前端使用的num数量,为了计算优惠金额
|
|
731
|
+
_num: isGoodPass ? 1 : product.num,
|
|
732
|
+
metadata: {
|
|
733
|
+
num: 1
|
|
665
734
|
}
|
|
666
735
|
};
|
|
667
|
-
|
|
668
|
-
// 如果 discount.tag 或者 discount.type 是 good_pass,则不需要添加 num 属性
|
|
669
|
-
if ((_selectedDiscount.tag || _selectedDiscount.type) !== 'good_pass') {
|
|
670
|
-
discountDetail.num = product.num || 1;
|
|
671
|
-
}
|
|
672
736
|
appliedProducts.push(discountDetail);
|
|
673
737
|
appliedDiscountProducts.set(_selectedDiscount.id, appliedProducts);
|
|
674
738
|
|
|
@@ -698,7 +762,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
698
762
|
price: _selectedDiscount.tag === 'good_pass' ? 0 : product.price,
|
|
699
763
|
quantity: isNeedSplit ? 1 : product.quantity,
|
|
700
764
|
total: targetProductTotal,
|
|
701
|
-
origin_total: productOriginTotal
|
|
765
|
+
origin_total: productOriginTotal,
|
|
766
|
+
main_product_selling_price: targetProductTotal
|
|
702
767
|
}));
|
|
703
768
|
}
|
|
704
769
|
}
|
|
@@ -732,7 +797,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
732
797
|
custom_product_bundle_map_id: uniqueId,
|
|
733
798
|
num: 1
|
|
734
799
|
},
|
|
735
|
-
|
|
800
|
+
_num: 1
|
|
736
801
|
};
|
|
737
802
|
|
|
738
803
|
// 记录实际应用的折扣
|
|
@@ -765,7 +830,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
765
830
|
}));
|
|
766
831
|
}
|
|
767
832
|
} else {
|
|
768
|
-
var _selectedDiscount3$me;
|
|
833
|
+
var _selectedDiscount3$me, _flatItem$parentProdu3;
|
|
769
834
|
// 折扣卡:不拆分数量,直接应用
|
|
770
835
|
var _selectedDiscount3 = selectedDiscountCard || applicableDiscounts[0];
|
|
771
836
|
usedDiscounts.set(_selectedDiscount3.id, true);
|
|
@@ -791,7 +856,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
791
856
|
custom_product_bundle_map_id: _uniqueId,
|
|
792
857
|
num: product.num || 1
|
|
793
858
|
},
|
|
794
|
-
|
|
859
|
+
_num: (product.num || 1) * ((flatItem === null || flatItem === void 0 || (_flatItem$parentProdu3 = flatItem.parentProduct) === null || _flatItem$parentProdu3 === void 0 ? void 0 : _flatItem$parentProdu3.num) || 1)
|
|
795
860
|
};
|
|
796
861
|
|
|
797
862
|
// 记录实际应用的折扣
|
|
@@ -909,7 +974,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
909
974
|
// 🔥 更新 discount_list 中的 num,使其与拆分后的 item.num 一致
|
|
910
975
|
var updatedDiscountList = (item.discount_list || []).map(function (discount) {
|
|
911
976
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
912
|
-
|
|
977
|
+
metadata: {
|
|
978
|
+
num: item.num
|
|
979
|
+
}
|
|
980
|
+
// num: item.num, // 使用拆分后的 num
|
|
913
981
|
});
|
|
914
982
|
});
|
|
915
983
|
newBundleWithDiscount.push(_objectSpread(_objectSpread({}, bundleItem), {}, {
|
|
@@ -927,7 +995,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
927
995
|
// 🔥 同样需要更新 discount_list 中的 num
|
|
928
996
|
var _updatedDiscountList = (item.discount_list || []).map(function (discount) {
|
|
929
997
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
930
|
-
|
|
998
|
+
metadata: {
|
|
999
|
+
num: item.num
|
|
1000
|
+
}
|
|
1001
|
+
// num: item.num, // 使用当前的 num
|
|
931
1002
|
});
|
|
932
1003
|
});
|
|
933
1004
|
newBundleWithDiscount.push(_objectSpread(_objectSpread({}, bundleItem), {}, {
|
|
@@ -946,16 +1017,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
946
1017
|
// 计算第一个主商品的总价(包含拆分后的bundle)
|
|
947
1018
|
var newTotalWithDiscount = Number(mainProductData.price || 0);
|
|
948
1019
|
var newOriginTotalWithDiscount = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
949
|
-
if (newBundleWithDiscount.length > 0) {
|
|
950
|
-
newBundleWithDiscount.forEach(function (item) {
|
|
951
|
-
newTotalWithDiscount += Number(item.price) * Number(item.num);
|
|
952
|
-
});
|
|
953
|
-
newBundleWithDiscount.forEach(function (item) {
|
|
954
|
-
var _item$discount_list2;
|
|
955
|
-
var originalPrice = ((_item$discount_list2 = item.discount_list) === null || _item$discount_list2 === void 0 || (_item$discount_list2 = _item$discount_list2[0]) === null || _item$discount_list2 === void 0 || (_item$discount_list2 = _item$discount_list2.discount) === null || _item$discount_list2 === void 0 ? void 0 : _item$discount_list2.original_amount) || item.price;
|
|
956
|
-
newOriginTotalWithDiscount += Number(originalPrice) * Number(item.num);
|
|
957
|
-
});
|
|
958
|
-
}
|
|
959
1020
|
|
|
960
1021
|
// 🔥 更新主商品自己的 discount_list 中的 num(quantity=1)
|
|
961
1022
|
var updatedMainDiscountList = mainProductData.discount_list.map(function (discount) {
|
|
@@ -966,7 +1027,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
966
1027
|
}
|
|
967
1028
|
// 主商品自己的discount,更新num为1
|
|
968
1029
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
969
|
-
num: 1
|
|
1030
|
+
// num: 1,
|
|
1031
|
+
metadata: {
|
|
1032
|
+
num: 1
|
|
1033
|
+
}
|
|
970
1034
|
});
|
|
971
1035
|
});
|
|
972
1036
|
|
|
@@ -980,14 +1044,18 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
980
1044
|
var allDiscountAmount = getDiscountListAmountTotal(mainDiscountList);
|
|
981
1045
|
newTotalWithDiscount = (_Decimal$minus$toNumb = new Decimal(mainProductData.price || 0).minus(allDiscountAmount).toNumber()) !== null && _Decimal$minus$toNumb !== void 0 ? _Decimal$minus$toNumb : newTotalWithDiscount;
|
|
982
1046
|
newOriginTotalWithDiscount = (_mainProductData$orig = mainProductData.origin_total) !== null && _mainProductData$orig !== void 0 ? _mainProductData$orig : newOriginTotalWithDiscount;
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
// 累加bundle的价格(只累加一次)
|
|
1050
|
+
if (newBundleWithDiscount.length > 0) {
|
|
1051
|
+
newBundleWithDiscount.forEach(function (item) {
|
|
1052
|
+
newTotalWithDiscount += Number(item.price) * Number(item.num);
|
|
1053
|
+
});
|
|
1054
|
+
newBundleWithDiscount.forEach(function (item) {
|
|
1055
|
+
var _item$discount_list2;
|
|
1056
|
+
var originalPrice = ((_item$discount_list2 = item.discount_list) === null || _item$discount_list2 === void 0 || (_item$discount_list2 = _item$discount_list2[0]) === null || _item$discount_list2 === void 0 || (_item$discount_list2 = _item$discount_list2.discount) === null || _item$discount_list2 === void 0 ? void 0 : _item$discount_list2.original_amount) || item.price;
|
|
1057
|
+
newOriginTotalWithDiscount += Number(originalPrice) * Number(item.num);
|
|
1058
|
+
});
|
|
991
1059
|
}
|
|
992
1060
|
|
|
993
1061
|
// 添加第一个主商品:qty=1,包含拆分后的bundle
|
|
@@ -1013,12 +1081,6 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1013
1081
|
// 计算第二个主商品的总价
|
|
1014
1082
|
var newTotalOriginal = Number(mainProductData.price || 0);
|
|
1015
1083
|
var newOriginTotalOriginal = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
1016
|
-
if (newBundleOriginal.length > 0) {
|
|
1017
|
-
newBundleOriginal.forEach(function (item) {
|
|
1018
|
-
newTotalOriginal += Number(item.price) * Number(item.num);
|
|
1019
|
-
newOriginTotalOriginal += Number(item.price) * Number(item.num);
|
|
1020
|
-
});
|
|
1021
|
-
}
|
|
1022
1084
|
|
|
1023
1085
|
// 🔥 更新主商品自己的 discount_list 中的 num(quantity=原quantity-1)
|
|
1024
1086
|
var updatedMainDiscountListOriginal = mainProductData.discount_list.map(function (discount) {
|
|
@@ -1029,7 +1091,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1029
1091
|
}
|
|
1030
1092
|
// 主商品自己的discount,更新num为 mainProductQuantity - 1
|
|
1031
1093
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
1032
|
-
|
|
1094
|
+
metadata: {
|
|
1095
|
+
num: mainProductQuantity - 1
|
|
1096
|
+
}
|
|
1097
|
+
// num: mainProductQuantity - 1,
|
|
1033
1098
|
});
|
|
1034
1099
|
});
|
|
1035
1100
|
|
|
@@ -1043,12 +1108,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1043
1108
|
var _allDiscountAmount = getDiscountListAmount(mainDiscountListOriginal);
|
|
1044
1109
|
newTotalOriginal = (_Decimal$minus$toNumb2 = new Decimal(mainProductData.price || 0).minus(_allDiscountAmount).toNumber()) !== null && _Decimal$minus$toNumb2 !== void 0 ? _Decimal$minus$toNumb2 : newTotalOriginal;
|
|
1045
1110
|
newOriginTotalOriginal = (_mainProductData$orig2 = mainProductData.origin_total) !== null && _mainProductData$orig2 !== void 0 ? _mainProductData$orig2 : newOriginTotalOriginal;
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
// 累加bundle的价格(只累加一次)
|
|
1114
|
+
if (newBundleOriginal.length > 0) {
|
|
1115
|
+
newBundleOriginal.forEach(function (item) {
|
|
1116
|
+
newTotalOriginal += Number(item.price) * Number(item.num);
|
|
1117
|
+
newOriginTotalOriginal += Number(item.price) * Number(item.num);
|
|
1118
|
+
});
|
|
1052
1119
|
}
|
|
1053
1120
|
|
|
1054
1121
|
// 添加第二个主商品:qty=原quantity-1,包含原始bundle
|
|
@@ -1064,6 +1131,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1064
1131
|
} else {
|
|
1065
1132
|
// 🔥 没有子商品被拆分,使用原有逻辑
|
|
1066
1133
|
mainProductArr.forEach(function (mainProduct) {
|
|
1134
|
+
var _mainProductData$disc, _mainProductData$disc2, _mainProductData$disc3;
|
|
1067
1135
|
var mainProductData = _this3.hooks.getProduct(mainProduct);
|
|
1068
1136
|
|
|
1069
1137
|
// 重组bundle
|
|
@@ -1081,7 +1149,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1081
1149
|
// 🔥 更新 discount_list 中的 num,使其与拆分后的 item.num 一致
|
|
1082
1150
|
var updatedDiscountList = (item.discount_list || []).map(function (discount) {
|
|
1083
1151
|
return _objectSpread(_objectSpread({}, discount), {}, {
|
|
1084
|
-
|
|
1152
|
+
metadata: {
|
|
1153
|
+
num: item.num
|
|
1154
|
+
}
|
|
1155
|
+
// num: item.num, // 使用拆分后的 num
|
|
1085
1156
|
});
|
|
1086
1157
|
});
|
|
1087
1158
|
newBundle.push(_objectSpread(_objectSpread({}, bundleItem), {}, {
|
|
@@ -1100,37 +1171,41 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1100
1171
|
var newTotal = Number(mainProductData.price || 0);
|
|
1101
1172
|
var newOriginTotal = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
1102
1173
|
|
|
1103
|
-
//
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
});
|
|
1174
|
+
// 判断是否是手动折扣
|
|
1175
|
+
var isManualDiscount = typeof mainProductData.isManualDiscount === 'boolean' ? mainProductData.isManualDiscount : mainProductData.total != mainProductData.origin_total && (!((_mainProductData$disc = mainProductData.discount_list) !== null && _mainProductData$disc !== void 0 && _mainProductData$disc.length) || (mainProductData === null || mainProductData === void 0 || (_mainProductData$disc2 = mainProductData.discount_list) === null || _mainProductData$disc2 === void 0 || (_mainProductData$disc3 = _mainProductData$disc2.every) === null || _mainProductData$disc3 === void 0 ? void 0 : _mainProductData$disc3.call(_mainProductData$disc2, function (item) {
|
|
1176
|
+
return item.type === 'product';
|
|
1177
|
+
})));
|
|
1108
1178
|
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1179
|
+
// 如果是手动折扣,使用原有的total和origin_total,不重新计算
|
|
1180
|
+
if (isManualDiscount) {
|
|
1181
|
+
var _mainProductData$tota, _mainProductData$orig3;
|
|
1182
|
+
newTotal = (_mainProductData$tota = mainProductData.total) !== null && _mainProductData$tota !== void 0 ? _mainProductData$tota : newTotal;
|
|
1183
|
+
newOriginTotal = (_mainProductData$orig3 = mainProductData.origin_total) !== null && _mainProductData$orig3 !== void 0 ? _mainProductData$orig3 : newOriginTotal;
|
|
1184
|
+
} else {
|
|
1185
|
+
// 不是手动折扣时,才重新计算
|
|
1186
|
+
var _mainDiscountList = mainProductData.discount_list.filter(function (item) {
|
|
1187
|
+
var _item$metadata3;
|
|
1188
|
+
return !(item !== null && item !== void 0 && (_item$metadata3 = item.metadata) !== null && _item$metadata3 !== void 0 && _item$metadata3.custom_product_bundle_map_id);
|
|
1114
1189
|
});
|
|
1115
|
-
}
|
|
1116
|
-
var mainDiscountList = mainProductData.discount_list.filter(function (item) {
|
|
1117
|
-
var _item$metadata3;
|
|
1118
|
-
return !(item !== null && item !== void 0 && (_item$metadata3 = item.metadata) !== null && _item$metadata3 !== void 0 && _item$metadata3.custom_product_bundle_map_id);
|
|
1119
|
-
});
|
|
1120
1190
|
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1191
|
+
// 如果主商品本身有折扣,需要重新计算主商品价格
|
|
1192
|
+
if (_mainDiscountList && _mainDiscountList.length > 0) {
|
|
1193
|
+
var _Decimal$minus$toNumb3, _mainProductData$orig4;
|
|
1194
|
+
var _allDiscountAmount2 = getDiscountListAmount(_mainDiscountList);
|
|
1195
|
+
newTotal = (_Decimal$minus$toNumb3 = new Decimal(mainProductData.price || 0).minus(_allDiscountAmount2).toNumber()) !== null && _Decimal$minus$toNumb3 !== void 0 ? _Decimal$minus$toNumb3 : newTotal;
|
|
1196
|
+
newOriginTotal = (_mainProductData$orig4 = mainProductData.origin_total) !== null && _mainProductData$orig4 !== void 0 ? _mainProductData$orig4 : newOriginTotal;
|
|
1197
|
+
}
|
|
1127
1198
|
|
|
1128
|
-
// 累加bundle
|
|
1199
|
+
// 累加bundle的价格(只累加一次)
|
|
1129
1200
|
if (newBundle.length > 0) {
|
|
1130
1201
|
newBundle.forEach(function (item) {
|
|
1131
|
-
var _item$discount_list5;
|
|
1132
1202
|
newTotal += Number(item.price) * Number(item.num);
|
|
1133
|
-
|
|
1203
|
+
});
|
|
1204
|
+
|
|
1205
|
+
// 计算原始总价(不考虑折扣)
|
|
1206
|
+
newBundle.forEach(function (item) {
|
|
1207
|
+
var _item$discount_list3;
|
|
1208
|
+
var originalPrice = ((_item$discount_list3 = item.discount_list) === null || _item$discount_list3 === void 0 || (_item$discount_list3 = _item$discount_list3[0]) === null || _item$discount_list3 === void 0 || (_item$discount_list3 = _item$discount_list3.discount) === null || _item$discount_list3 === void 0 ? void 0 : _item$discount_list3.original_amount) || item.price;
|
|
1134
1209
|
newOriginTotal += Number(originalPrice) * Number(item.num);
|
|
1135
1210
|
});
|
|
1136
1211
|
}
|
|
@@ -1299,8 +1374,34 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1299
1374
|
// 套餐中购买时,判断是否为原价
|
|
1300
1375
|
var _priceType = (_flatItem$bundleItem7 = flatItem.bundleItem) === null || _flatItem$bundleItem7 === void 0 ? void 0 : _flatItem$bundleItem7.price_type;
|
|
1301
1376
|
var _priceTypeExt = (_flatItem$bundleItem8 = flatItem.bundleItem) === null || _flatItem$bundleItem8 === void 0 ? void 0 : _flatItem$bundleItem8.price_type_ext;
|
|
1377
|
+
|
|
1378
|
+
// original_price 对应:
|
|
1379
|
+
// 1. price_type: "markup" && price_type_ext: "product_price"
|
|
1380
|
+
// markup_price 对应:
|
|
1381
|
+
// price_type: "markup" && price_type_ext: ""
|
|
1382
|
+
/** 原价 */
|
|
1383
|
+
var _isOriginalPrice = _priceType === 'markup' && _priceTypeExt === 'product_price';
|
|
1384
|
+
/** 加价 */
|
|
1385
|
+
var _isMarkupPrice = _priceType === 'markup' && (_priceTypeExt === '' || !_priceTypeExt);
|
|
1386
|
+
|
|
1387
|
+
// 检查 rules
|
|
1388
|
+
if (rules.length > 0) {
|
|
1389
|
+
// 检查原价
|
|
1390
|
+
if (_isOriginalPrice && rules.includes('original_price')) {
|
|
1391
|
+
return true;
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
// 检查加价
|
|
1395
|
+
if (_isMarkupPrice && rules.includes('markup_price')) {
|
|
1396
|
+
return true;
|
|
1397
|
+
}
|
|
1398
|
+
|
|
1399
|
+
// 如果都不匹配,则不可用
|
|
1400
|
+
return false;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1302
1403
|
// 原价包括:price_type: "markup" && price_type_ext: "product_price"
|
|
1303
|
-
return
|
|
1404
|
+
return _isOriginalPrice;
|
|
1304
1405
|
}
|
|
1305
1406
|
return false;
|
|
1306
1407
|
}
|
|
@@ -383,22 +383,46 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
383
383
|
return pre + (item.amount || 0);
|
|
384
384
|
}, 0);
|
|
385
385
|
};
|
|
386
|
-
var
|
|
387
|
-
return {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
386
|
+
var formatProduct = function formatProduct(items) {
|
|
387
|
+
return items.map(function (item) {
|
|
388
|
+
var _item$is_charge_tax;
|
|
389
|
+
return {
|
|
390
|
+
product_id: item.product_id,
|
|
391
|
+
product_variant_id: item.product_variant_id,
|
|
392
|
+
quantity: item.num,
|
|
393
|
+
// 商品是否含税:1;0
|
|
394
|
+
is_charge_tax: (_item$is_charge_tax = item.is_charge_tax) !== null && _item$is_charge_tax !== void 0 ? _item$is_charge_tax : 0,
|
|
395
|
+
// 若商品不含税,计算得到的税费,单位(元)
|
|
396
|
+
tax_fee: item.tax_fee,
|
|
397
|
+
// 整个商品折扣后的总金额
|
|
398
|
+
selling_price: item.calculated_selling_price,
|
|
399
|
+
// 整个商品折扣前的总金额
|
|
400
|
+
original_price: item.calculated_original_price,
|
|
401
|
+
// 主商品折扣前金额,不包含套餐子商品
|
|
402
|
+
main_product_original_price: item.price,
|
|
403
|
+
// 主商品折扣后金额,不包含套餐子商品
|
|
404
|
+
main_product_selling_price: item.main_product_selling_price,
|
|
405
|
+
product_bundle: item.product_bundle.map(function (bundle) {
|
|
406
|
+
return {
|
|
407
|
+
bundle_id: bundle.bundle_id,
|
|
408
|
+
bundle_product_id: bundle.bundle_product_id,
|
|
409
|
+
bundle_variant_id: bundle.bundle_variant_id,
|
|
410
|
+
price_type: bundle.price_type,
|
|
411
|
+
price_type_ext: bundle.price_type_ext,
|
|
412
|
+
// 套餐子商品总价,不包含折扣金额
|
|
413
|
+
bundle_sum_price: bundle.bundle_sum_price,
|
|
414
|
+
// 套餐子商品折扣后金额
|
|
415
|
+
bundle_selling_price: bundle.bundle_selling_price,
|
|
416
|
+
num: bundle.num
|
|
417
|
+
};
|
|
418
|
+
})
|
|
419
|
+
};
|
|
420
|
+
}) || [];
|
|
421
|
+
};
|
|
422
|
+
var productList = formatProduct(((_this$store$currentOr = this.store.currentOrder.order_info) === null || _this$store$currentOr === void 0 || (_this$store$currentOr = _this$store$currentOr.original_order_data) === null || _this$store$currentOr === void 0 || (_this$store$currentOr = _this$store$currentOr.bookings) === null || _this$store$currentOr === void 0 ? void 0 : _this$store$currentOr.map(function (item) {
|
|
423
|
+
return item.product;
|
|
424
|
+
})) || []);
|
|
425
|
+
var relationProducts = formatProduct(((_this$store$currentOr2 = this.store.currentOrder.order_info) === null || _this$store$currentOr2 === void 0 || (_this$store$currentOr2 = _this$store$currentOr2.original_order_data) === null || _this$store$currentOr2 === void 0 ? void 0 : _this$store$currentOr2.relation_products) || []);
|
|
402
426
|
return [].concat(_toConsumableArray(productList), _toConsumableArray(relationProducts));
|
|
403
427
|
}
|
|
404
428
|
}, {
|
|
@@ -163,7 +163,8 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
|
|
|
163
163
|
}
|
|
164
164
|
if (discount.appliedProductDetails) {
|
|
165
165
|
return discount.appliedProductDetails.reduce((total, product) => {
|
|
166
|
-
|
|
166
|
+
var _a;
|
|
167
|
+
const price = new import_decimal.default(((_a = product == null ? void 0 : product.discount) == null ? void 0 : _a.fixed_amount) * product._num);
|
|
167
168
|
return new import_decimal.default(total).plus(price).toNumber();
|
|
168
169
|
}, 0);
|
|
169
170
|
}
|
|
@@ -34,12 +34,14 @@ interface ApplicableProductDetails {
|
|
|
34
34
|
original_amount: string;
|
|
35
35
|
num: number;
|
|
36
36
|
discount?: {
|
|
37
|
+
fixed_amount?: number;
|
|
37
38
|
product_id?: number;
|
|
38
39
|
original_amount?: string;
|
|
39
40
|
percent?: string;
|
|
40
41
|
resource_id?: number;
|
|
41
42
|
title?: string;
|
|
42
43
|
};
|
|
44
|
+
_num: number;
|
|
43
45
|
}
|
|
44
46
|
interface UsageCreditsValue {
|
|
45
47
|
total_credits: number;
|
|
@@ -49,5 +49,5 @@ export declare class Product extends BaseModule implements Module {
|
|
|
49
49
|
getCategories(): ProductCategory[];
|
|
50
50
|
setOtherParams(key: string, value: any): void;
|
|
51
51
|
getOtherParams(): any;
|
|
52
|
-
getProductType(): "
|
|
52
|
+
getProductType(): "normal" | "duration" | "session";
|
|
53
53
|
}
|
|
@@ -33,6 +33,7 @@ __export(Rules_exports, {
|
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(Rules_exports);
|
|
35
35
|
var import_BaseModule = require("../BaseModule");
|
|
36
|
+
var import_types = require("./types");
|
|
36
37
|
var import_utils = require("../../solution/ShopDiscount/utils");
|
|
37
38
|
var import_utils2 = require("../Cart/utils");
|
|
38
39
|
var import_decimal = __toESM(require("decimal.js"));
|
|
@@ -51,7 +52,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
51
52
|
}
|
|
52
53
|
async setRulesList(rulesList) {
|
|
53
54
|
this.store.rulesList = rulesList;
|
|
54
|
-
await this.core.effects.emit(
|
|
55
|
+
await this.core.effects.emit(import_types.RulesHooks.OnRulesListChange, rulesList);
|
|
55
56
|
}
|
|
56
57
|
getRulesList() {
|
|
57
58
|
return this.store.rulesList;
|
|
@@ -273,8 +274,10 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
273
274
|
(_e = discountApplicability.get(discount.id)) == null ? void 0 : _e.push(product.id);
|
|
274
275
|
const applicableProducts = discountApplicableProducts.get(discount.id) || [];
|
|
275
276
|
const discountType = discount.tag || discount.type;
|
|
277
|
+
const isGoodPass = discountType === "good_pass";
|
|
278
|
+
const num = isGoodPass || (flatItem == null ? void 0 : flatItem.type) === "main" ? 1 : product.num;
|
|
276
279
|
const productData = {
|
|
277
|
-
amount: product.price *
|
|
280
|
+
amount: product.price * num,
|
|
278
281
|
type: discountType,
|
|
279
282
|
tag: discountType,
|
|
280
283
|
discount: {
|
|
@@ -285,11 +288,11 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
285
288
|
original_amount: product.price || product.origin_total,
|
|
286
289
|
pre_value: discount.par_value,
|
|
287
290
|
product_id: originProduct.id
|
|
291
|
+
},
|
|
292
|
+
metadata: {
|
|
293
|
+
num
|
|
288
294
|
}
|
|
289
295
|
};
|
|
290
|
-
if (discountType !== "good_pass") {
|
|
291
|
-
productData.num = product.num || 1;
|
|
292
|
-
}
|
|
293
296
|
applicableProducts.push(productData);
|
|
294
297
|
discountApplicableProducts.set(discount.id, applicableProducts);
|
|
295
298
|
}
|
|
@@ -297,7 +300,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
297
300
|
});
|
|
298
301
|
const processedFlatItemsMap = /* @__PURE__ */ new Map();
|
|
299
302
|
sortedFlattenedList.forEach((flatItem, index) => {
|
|
300
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
303
|
+
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;
|
|
301
304
|
let product, originProduct;
|
|
302
305
|
if (flatItem.type === "main") {
|
|
303
306
|
product = flatItem.product;
|
|
@@ -356,24 +359,67 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
356
359
|
});
|
|
357
360
|
const selectedDiscountCard = applicableDiscounts.find((n) => n.isScan && n.isSelected && (n.tag || n.type) !== "good_pass");
|
|
358
361
|
const selectedDiscount = selectedDiscountCard || applicableDiscounts[0];
|
|
359
|
-
let isManualDiscount =
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
362
|
+
let isManualDiscount = false;
|
|
363
|
+
if (flatItem.type === "main") {
|
|
364
|
+
isManualDiscount = typeof product.isManualDiscount === "boolean" ? product.isManualDiscount : product.total != product.origin_total && (product.bundle || []).every((item) => {
|
|
365
|
+
var _a2;
|
|
366
|
+
return !((_a2 = item.discount_list || []) == null ? void 0 : _a2.length);
|
|
367
|
+
}) && (!((_f = product.discount_list) == null ? void 0 : _f.length) || ((_h = (_g = product == null ? void 0 : product.discount_list) == null ? void 0 : _g.every) == null ? void 0 : _h.call(_g, (item) => item.type === "product")));
|
|
368
|
+
} else {
|
|
369
|
+
const parentProduct = flatItem.parentProduct;
|
|
370
|
+
if (parentProduct) {
|
|
371
|
+
isManualDiscount = typeof parentProduct.isManualDiscount === "boolean" ? parentProduct.isManualDiscount : parentProduct.total != parentProduct.origin_total && (parentProduct.bundle || []).every((item) => {
|
|
372
|
+
var _a2;
|
|
373
|
+
return !((_a2 = item.discount_list || []) == null ? void 0 : _a2.length);
|
|
374
|
+
}) && (!((_i = parentProduct.discount_list) == null ? void 0 : _i.length) || ((_k = (_j = parentProduct == null ? void 0 : parentProduct.discount_list) == null ? void 0 : _j.every) == null ? void 0 : _k.call(_j, (item) => item.type === "product")));
|
|
375
|
+
}
|
|
368
376
|
}
|
|
369
|
-
if (
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
+
if (options == null ? void 0 : options.discountId) {
|
|
378
|
+
if (flatItem.type === "main" && ((_l = product.discount_list) == null ? void 0 : _l.some((item) => {
|
|
379
|
+
var _a2;
|
|
380
|
+
return ((_a2 = item.discount) == null ? void 0 : _a2.resource_id) === options.discountId;
|
|
381
|
+
}))) {
|
|
382
|
+
isManualDiscount = false;
|
|
383
|
+
}
|
|
384
|
+
if (flatItem.type === "bundle") {
|
|
385
|
+
if (((_m = product.discount_list) == null ? void 0 : _m.some((item) => {
|
|
386
|
+
var _a2;
|
|
387
|
+
return ((_a2 = item.discount) == null ? void 0 : _a2.resource_id) === options.discountId;
|
|
388
|
+
})) || ((_o = (_n = flatItem.parentProduct) == null ? void 0 : _n.discount_list) == null ? void 0 : _o.some((item) => {
|
|
389
|
+
var _a2;
|
|
390
|
+
return ((_a2 = item.discount) == null ? void 0 : _a2.resource_id) === options.discountId;
|
|
391
|
+
}))) {
|
|
392
|
+
isManualDiscount = false;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
if (options == null ? void 0 : options.selectedList) {
|
|
397
|
+
if (flatItem.type === "main" && ((_p = product.discount_list) == null ? void 0 : _p.some((item) => {
|
|
398
|
+
var _a2;
|
|
399
|
+
return (_a2 = options == null ? void 0 : options.selectedList) == null ? void 0 : _a2.some((n) => {
|
|
400
|
+
var _a3;
|
|
401
|
+
return n.discountId === ((_a3 = item.discount) == null ? void 0 : _a3.resource_id);
|
|
402
|
+
});
|
|
403
|
+
}))) {
|
|
404
|
+
isManualDiscount = false;
|
|
405
|
+
}
|
|
406
|
+
if (flatItem.type === "bundle") {
|
|
407
|
+
if (((_q = product.discount_list) == null ? void 0 : _q.some((item) => {
|
|
408
|
+
var _a2;
|
|
409
|
+
return (_a2 = options == null ? void 0 : options.selectedList) == null ? void 0 : _a2.some((n) => {
|
|
410
|
+
var _a3;
|
|
411
|
+
return n.discountId === ((_a3 = item.discount) == null ? void 0 : _a3.resource_id);
|
|
412
|
+
});
|
|
413
|
+
})) || ((_s = (_r = flatItem.parentProduct) == null ? void 0 : _r.discount_list) == null ? void 0 : _s.some((item) => {
|
|
414
|
+
var _a2;
|
|
415
|
+
return (_a2 = options == null ? void 0 : options.selectedList) == null ? void 0 : _a2.some((n) => {
|
|
416
|
+
var _a3;
|
|
417
|
+
return n.discountId === ((_a3 = item.discount) == null ? void 0 : _a3.resource_id);
|
|
418
|
+
});
|
|
419
|
+
}))) {
|
|
420
|
+
isManualDiscount = false;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
377
423
|
}
|
|
378
424
|
if (applicableDiscounts.length === 0 || isManualDiscount || (0, import_lodash_es.isBoolean)(product.vouchersApplicable) && !product.vouchersApplicable) {
|
|
379
425
|
if (flatItem.type === "main") {
|
|
@@ -410,7 +456,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
410
456
|
...isManualDiscount ? {} : {
|
|
411
457
|
_id: product._id.split("___")[0] + "___" + index,
|
|
412
458
|
total: product.origin_total || product.total,
|
|
413
|
-
price: product.price
|
|
459
|
+
price: product.price,
|
|
460
|
+
main_product_selling_price: product.price
|
|
414
461
|
},
|
|
415
462
|
discount_list: []
|
|
416
463
|
})]
|
|
@@ -447,29 +494,34 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
447
494
|
usedDiscounts.set(selectedDiscount2.id, true);
|
|
448
495
|
const appliedProducts = appliedDiscountProducts.get(selectedDiscount2.id) || [];
|
|
449
496
|
let productOriginTotal = product.origin_total || product.total || 0;
|
|
450
|
-
if (((
|
|
497
|
+
if (((_t = product.discount_list) == null ? void 0 : _t.length) && product.origin_total) {
|
|
451
498
|
productOriginTotal = product.origin_total;
|
|
452
499
|
}
|
|
453
|
-
if (Number(((
|
|
500
|
+
if (Number(((_u = originProduct == null ? void 0 : originProduct._productInit) == null ? void 0 : _u.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
|
|
454
501
|
productOriginTotal = product.total;
|
|
455
502
|
}
|
|
456
503
|
const targetProductTotal = (0, import_utils.getDiscountAmount)(selectedDiscount2, product.price, product.price);
|
|
504
|
+
const discountType = selectedDiscount2.tag || selectedDiscount2.type;
|
|
505
|
+
const isGoodPass = discountType === "good_pass";
|
|
506
|
+
const amount = new import_decimal.default(product.price).minus(new import_decimal.default(targetProductTotal)).toNumber();
|
|
457
507
|
const discountDetail = {
|
|
458
|
-
amount
|
|
459
|
-
type: selectedDiscount2.tag === "product_discount_card" ? "discount_card" :
|
|
508
|
+
amount,
|
|
509
|
+
type: selectedDiscount2.tag === "product_discount_card" ? "discount_card" : discountType,
|
|
460
510
|
discount: {
|
|
461
|
-
discount_card_type: (
|
|
462
|
-
fixed_amount:
|
|
511
|
+
discount_card_type: (_v = selectedDiscount2 == null ? void 0 : selectedDiscount2.metadata) == null ? void 0 : _v.discount_card_type,
|
|
512
|
+
fixed_amount: amount,
|
|
463
513
|
resource_id: selectedDiscount2.id,
|
|
464
514
|
title: selectedDiscount2.format_title,
|
|
465
515
|
original_amount: product.price,
|
|
466
516
|
product_id: originProduct.id,
|
|
467
517
|
percent: selectedDiscount2.par_value
|
|
518
|
+
},
|
|
519
|
+
// 前端使用的num数量,为了计算优惠金额
|
|
520
|
+
_num: isGoodPass ? 1 : product.num,
|
|
521
|
+
metadata: {
|
|
522
|
+
num: 1
|
|
468
523
|
}
|
|
469
524
|
};
|
|
470
|
-
if ((selectedDiscount2.tag || selectedDiscount2.type) !== "good_pass") {
|
|
471
|
-
discountDetail.num = product.num || 1;
|
|
472
|
-
}
|
|
473
525
|
appliedProducts.push(discountDetail);
|
|
474
526
|
appliedDiscountProducts.set(selectedDiscount2.id, appliedProducts);
|
|
475
527
|
if (product.isClient) {
|
|
@@ -496,7 +548,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
496
548
|
price: selectedDiscount2.tag === "good_pass" ? 0 : product.price,
|
|
497
549
|
quantity: isNeedSplit ? 1 : product.quantity,
|
|
498
550
|
total: targetProductTotal,
|
|
499
|
-
origin_total: productOriginTotal
|
|
551
|
+
origin_total: productOriginTotal,
|
|
552
|
+
main_product_selling_price: targetProductTotal
|
|
500
553
|
}));
|
|
501
554
|
}
|
|
502
555
|
}
|
|
@@ -524,7 +577,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
524
577
|
custom_product_bundle_map_id: uniqueId,
|
|
525
578
|
num: 1
|
|
526
579
|
},
|
|
527
|
-
|
|
580
|
+
_num: 1
|
|
528
581
|
};
|
|
529
582
|
const appliedProducts = appliedDiscountProducts.get(selectedDiscount2.id) || [];
|
|
530
583
|
appliedProducts.push(discountDetail);
|
|
@@ -568,7 +621,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
568
621
|
amount: new import_decimal.default(productOriginTotal).minus(targetProductTotal).toNumber() * (product.num || 1),
|
|
569
622
|
type: selectedDiscount2.tag === "product_discount_card" ? "discount_card" : selectedDiscount2.tag,
|
|
570
623
|
discount: {
|
|
571
|
-
discount_card_type: (
|
|
624
|
+
discount_card_type: (_w = selectedDiscount2 == null ? void 0 : selectedDiscount2.metadata) == null ? void 0 : _w.discount_card_type,
|
|
572
625
|
fixed_amount: new import_decimal.default(productOriginTotal).minus(targetProductTotal).toNumber(),
|
|
573
626
|
resource_id: selectedDiscount2.id,
|
|
574
627
|
title: selectedDiscount2.format_title,
|
|
@@ -581,7 +634,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
581
634
|
custom_product_bundle_map_id: uniqueId,
|
|
582
635
|
num: product.num || 1
|
|
583
636
|
},
|
|
584
|
-
|
|
637
|
+
_num: (product.num || 1) * (((_x = flatItem == null ? void 0 : flatItem.parentProduct) == null ? void 0 : _x.num) || 1)
|
|
585
638
|
};
|
|
586
639
|
const appliedProducts = appliedDiscountProducts.get(selectedDiscount2.id) || [];
|
|
587
640
|
appliedProducts.push(discountDetail);
|
|
@@ -676,8 +729,10 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
676
729
|
processedItems.forEach((item) => {
|
|
677
730
|
const updatedDiscountList2 = (item.discount_list || []).map((discount) => ({
|
|
678
731
|
...discount,
|
|
679
|
-
|
|
680
|
-
|
|
732
|
+
metadata: {
|
|
733
|
+
num: item.num
|
|
734
|
+
}
|
|
735
|
+
// num: item.num, // 使用拆分后的 num
|
|
681
736
|
}));
|
|
682
737
|
newBundleWithDiscount.push({
|
|
683
738
|
...bundleItem,
|
|
@@ -693,8 +748,10 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
693
748
|
if (item.processed) {
|
|
694
749
|
const updatedDiscountList2 = (item.discount_list || []).map((discount) => ({
|
|
695
750
|
...discount,
|
|
696
|
-
|
|
697
|
-
|
|
751
|
+
metadata: {
|
|
752
|
+
num: item.num
|
|
753
|
+
}
|
|
754
|
+
// num: item.num, // 使用当前的 num
|
|
698
755
|
}));
|
|
699
756
|
newBundleWithDiscount.push({
|
|
700
757
|
...bundleItem,
|
|
@@ -711,16 +768,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
711
768
|
});
|
|
712
769
|
let newTotalWithDiscount = Number(mainProductData.price || 0);
|
|
713
770
|
let newOriginTotalWithDiscount = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
714
|
-
if (newBundleWithDiscount.length > 0) {
|
|
715
|
-
newBundleWithDiscount.forEach((item) => {
|
|
716
|
-
newTotalWithDiscount += Number(item.price) * Number(item.num);
|
|
717
|
-
});
|
|
718
|
-
newBundleWithDiscount.forEach((item) => {
|
|
719
|
-
var _a, _b, _c;
|
|
720
|
-
const originalPrice = ((_c = (_b = (_a = item.discount_list) == null ? void 0 : _a[0]) == null ? void 0 : _b.discount) == null ? void 0 : _c.original_amount) || item.price;
|
|
721
|
-
newOriginTotalWithDiscount += Number(originalPrice) * Number(item.num);
|
|
722
|
-
});
|
|
723
|
-
}
|
|
724
771
|
const updatedMainDiscountList = mainProductData.discount_list.map((discount) => {
|
|
725
772
|
var _a;
|
|
726
773
|
if ((_a = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a.custom_product_bundle_map_id) {
|
|
@@ -728,7 +775,10 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
728
775
|
}
|
|
729
776
|
return {
|
|
730
777
|
...discount,
|
|
731
|
-
num: 1
|
|
778
|
+
// num: 1,
|
|
779
|
+
metadata: {
|
|
780
|
+
num: 1
|
|
781
|
+
}
|
|
732
782
|
};
|
|
733
783
|
});
|
|
734
784
|
const mainDiscountList = updatedMainDiscountList.filter((item) => {
|
|
@@ -739,14 +789,16 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
739
789
|
const allDiscountAmount = (0, import_utils.getDiscountListAmountTotal)(mainDiscountList);
|
|
740
790
|
newTotalWithDiscount = new import_decimal.default(mainProductData.price || 0).minus(allDiscountAmount).toNumber() ?? newTotalWithDiscount;
|
|
741
791
|
newOriginTotalWithDiscount = mainProductData.origin_total ?? newOriginTotalWithDiscount;
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
792
|
+
}
|
|
793
|
+
if (newBundleWithDiscount.length > 0) {
|
|
794
|
+
newBundleWithDiscount.forEach((item) => {
|
|
795
|
+
newTotalWithDiscount += Number(item.price) * Number(item.num);
|
|
796
|
+
});
|
|
797
|
+
newBundleWithDiscount.forEach((item) => {
|
|
798
|
+
var _a, _b, _c;
|
|
799
|
+
const originalPrice = ((_c = (_b = (_a = item.discount_list) == null ? void 0 : _a[0]) == null ? void 0 : _b.discount) == null ? void 0 : _c.original_amount) || item.price;
|
|
800
|
+
newOriginTotalWithDiscount += Number(originalPrice) * Number(item.num);
|
|
801
|
+
});
|
|
750
802
|
}
|
|
751
803
|
result.push(
|
|
752
804
|
this.hooks.setProduct(mainProduct, {
|
|
@@ -769,12 +821,6 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
769
821
|
});
|
|
770
822
|
let newTotalOriginal = Number(mainProductData.price || 0);
|
|
771
823
|
let newOriginTotalOriginal = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
772
|
-
if (newBundleOriginal.length > 0) {
|
|
773
|
-
newBundleOriginal.forEach((item) => {
|
|
774
|
-
newTotalOriginal += Number(item.price) * Number(item.num);
|
|
775
|
-
newOriginTotalOriginal += Number(item.price) * Number(item.num);
|
|
776
|
-
});
|
|
777
|
-
}
|
|
778
824
|
const updatedMainDiscountListOriginal = mainProductData.discount_list.map((discount) => {
|
|
779
825
|
var _a;
|
|
780
826
|
if ((_a = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a.custom_product_bundle_map_id) {
|
|
@@ -782,7 +828,10 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
782
828
|
}
|
|
783
829
|
return {
|
|
784
830
|
...discount,
|
|
785
|
-
|
|
831
|
+
metadata: {
|
|
832
|
+
num: mainProductQuantity - 1
|
|
833
|
+
}
|
|
834
|
+
// num: mainProductQuantity - 1,
|
|
786
835
|
};
|
|
787
836
|
});
|
|
788
837
|
const mainDiscountListOriginal = updatedMainDiscountListOriginal.filter((item) => {
|
|
@@ -793,12 +842,12 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
793
842
|
const allDiscountAmount = (0, import_utils.getDiscountListAmount)(mainDiscountListOriginal);
|
|
794
843
|
newTotalOriginal = new import_decimal.default(mainProductData.price || 0).minus(allDiscountAmount).toNumber() ?? newTotalOriginal;
|
|
795
844
|
newOriginTotalOriginal = mainProductData.origin_total ?? newOriginTotalOriginal;
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
}
|
|
845
|
+
}
|
|
846
|
+
if (newBundleOriginal.length > 0) {
|
|
847
|
+
newBundleOriginal.forEach((item) => {
|
|
848
|
+
newTotalOriginal += Number(item.price) * Number(item.num);
|
|
849
|
+
newOriginTotalOriginal += Number(item.price) * Number(item.num);
|
|
850
|
+
});
|
|
802
851
|
}
|
|
803
852
|
result.push(
|
|
804
853
|
this.hooks.setProduct(mainProduct, {
|
|
@@ -814,6 +863,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
814
863
|
}
|
|
815
864
|
} else {
|
|
816
865
|
mainProductArr.forEach((mainProduct) => {
|
|
866
|
+
var _a, _b, _c;
|
|
817
867
|
const mainProductData = this.hooks.getProduct(mainProduct);
|
|
818
868
|
const newBundle = [];
|
|
819
869
|
if (product.bundle && Array.isArray(product.bundle)) {
|
|
@@ -826,8 +876,10 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
826
876
|
processedBundleItems.forEach((item) => {
|
|
827
877
|
const updatedDiscountList2 = (item.discount_list || []).map((discount) => ({
|
|
828
878
|
...discount,
|
|
829
|
-
|
|
830
|
-
|
|
879
|
+
metadata: {
|
|
880
|
+
num: item.num
|
|
881
|
+
}
|
|
882
|
+
// num: item.num, // 使用拆分后的 num
|
|
831
883
|
}));
|
|
832
884
|
newBundle.push({
|
|
833
885
|
...bundleItem,
|
|
@@ -843,29 +895,27 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
843
895
|
}
|
|
844
896
|
let newTotal = Number(mainProductData.price || 0);
|
|
845
897
|
let newOriginTotal = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
});
|
|
850
|
-
newBundle.forEach((item) => {
|
|
851
|
-
var _a, _b, _c;
|
|
852
|
-
const originalPrice = ((_c = (_b = (_a = item.discount_list) == null ? void 0 : _a[0]) == null ? void 0 : _b.discount) == null ? void 0 : _c.original_amount) || item.price;
|
|
853
|
-
newOriginTotal += Number(originalPrice) * Number(item.num);
|
|
854
|
-
});
|
|
855
|
-
}
|
|
856
|
-
const mainDiscountList = mainProductData.discount_list.filter((item) => {
|
|
857
|
-
var _a;
|
|
858
|
-
return !((_a = item == null ? void 0 : item.metadata) == null ? void 0 : _a.custom_product_bundle_map_id);
|
|
859
|
-
});
|
|
860
|
-
if (mainDiscountList && mainDiscountList.length > 0) {
|
|
861
|
-
const allDiscountAmount = (0, import_utils.getDiscountListAmount)(mainDiscountList);
|
|
862
|
-
newTotal = new import_decimal.default(mainProductData.price || 0).minus(allDiscountAmount).toNumber() ?? newTotal;
|
|
898
|
+
const isManualDiscount = typeof mainProductData.isManualDiscount === "boolean" ? mainProductData.isManualDiscount : mainProductData.total != mainProductData.origin_total && (!((_a = mainProductData.discount_list) == null ? void 0 : _a.length) || ((_c = (_b = mainProductData == null ? void 0 : mainProductData.discount_list) == null ? void 0 : _b.every) == null ? void 0 : _c.call(_b, (item) => item.type === "product")));
|
|
899
|
+
if (isManualDiscount) {
|
|
900
|
+
newTotal = mainProductData.total ?? newTotal;
|
|
863
901
|
newOriginTotal = mainProductData.origin_total ?? newOriginTotal;
|
|
902
|
+
} else {
|
|
903
|
+
const mainDiscountList = mainProductData.discount_list.filter((item) => {
|
|
904
|
+
var _a2;
|
|
905
|
+
return !((_a2 = item == null ? void 0 : item.metadata) == null ? void 0 : _a2.custom_product_bundle_map_id);
|
|
906
|
+
});
|
|
907
|
+
if (mainDiscountList && mainDiscountList.length > 0) {
|
|
908
|
+
const allDiscountAmount = (0, import_utils.getDiscountListAmount)(mainDiscountList);
|
|
909
|
+
newTotal = new import_decimal.default(mainProductData.price || 0).minus(allDiscountAmount).toNumber() ?? newTotal;
|
|
910
|
+
newOriginTotal = mainProductData.origin_total ?? newOriginTotal;
|
|
911
|
+
}
|
|
864
912
|
if (newBundle.length > 0) {
|
|
865
913
|
newBundle.forEach((item) => {
|
|
866
|
-
var _a, _b, _c;
|
|
867
914
|
newTotal += Number(item.price) * Number(item.num);
|
|
868
|
-
|
|
915
|
+
});
|
|
916
|
+
newBundle.forEach((item) => {
|
|
917
|
+
var _a2, _b2, _c2;
|
|
918
|
+
const originalPrice = ((_c2 = (_b2 = (_a2 = item.discount_list) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.discount) == null ? void 0 : _c2.original_amount) || item.price;
|
|
869
919
|
newOriginTotal += Number(originalPrice) * Number(item.num);
|
|
870
920
|
});
|
|
871
921
|
}
|
|
@@ -998,7 +1048,18 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
998
1048
|
if (isBundleItem) {
|
|
999
1049
|
const priceType = (_c = flatItem.bundleItem) == null ? void 0 : _c.price_type;
|
|
1000
1050
|
const priceTypeExt = (_d = flatItem.bundleItem) == null ? void 0 : _d.price_type_ext;
|
|
1001
|
-
|
|
1051
|
+
const isOriginalPrice = priceType === "markup" && priceTypeExt === "product_price";
|
|
1052
|
+
const isMarkupPrice = priceType === "markup" && (priceTypeExt === "" || !priceTypeExt);
|
|
1053
|
+
if (rules.length > 0) {
|
|
1054
|
+
if (isOriginalPrice && rules.includes("original_price")) {
|
|
1055
|
+
return true;
|
|
1056
|
+
}
|
|
1057
|
+
if (isMarkupPrice && rules.includes("markup_price")) {
|
|
1058
|
+
return true;
|
|
1059
|
+
}
|
|
1060
|
+
return false;
|
|
1061
|
+
}
|
|
1062
|
+
return isOriginalPrice;
|
|
1002
1063
|
}
|
|
1003
1064
|
return false;
|
|
1004
1065
|
}
|
|
@@ -122,12 +122,6 @@ var BookingTicketImpl = class extends import_BaseModule.BaseModule {
|
|
|
122
122
|
throw error;
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
/**
|
|
126
|
-
* 初始化外设扫码结果监听
|
|
127
|
-
*/
|
|
128
|
-
initPeripheralsListener() {
|
|
129
|
-
this.scan.initPeripheralsListener();
|
|
130
|
-
}
|
|
131
125
|
/**
|
|
132
126
|
* 获取商品列表(不加载到模块中)
|
|
133
127
|
* @returns 商品列表
|
|
@@ -206,22 +206,43 @@ var CheckoutImpl = class extends import_BaseModule.BaseModule {
|
|
|
206
206
|
return pre + (item.amount || 0);
|
|
207
207
|
}, 0);
|
|
208
208
|
};
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
209
|
+
const formatProduct = (items) => {
|
|
210
|
+
return items.map(
|
|
211
|
+
(item) => ({
|
|
212
|
+
product_id: item.product_id,
|
|
213
|
+
product_variant_id: item.product_variant_id,
|
|
214
|
+
quantity: item.num,
|
|
215
|
+
// 商品是否含税:1;0
|
|
216
|
+
is_charge_tax: item.is_charge_tax ?? 0,
|
|
217
|
+
// 若商品不含税,计算得到的税费,单位(元)
|
|
218
|
+
tax_fee: item.tax_fee,
|
|
219
|
+
// 整个商品折扣后的总金额
|
|
220
|
+
selling_price: item.calculated_selling_price,
|
|
221
|
+
// 整个商品折扣前的总金额
|
|
222
|
+
original_price: item.calculated_original_price,
|
|
223
|
+
// 主商品折扣前金额,不包含套餐子商品
|
|
224
|
+
main_product_original_price: item.price,
|
|
225
|
+
// 主商品折扣后金额,不包含套餐子商品
|
|
226
|
+
main_product_selling_price: item.main_product_selling_price,
|
|
227
|
+
product_bundle: item.product_bundle.map((bundle) => {
|
|
228
|
+
return {
|
|
229
|
+
bundle_id: bundle.bundle_id,
|
|
230
|
+
bundle_product_id: bundle.bundle_product_id,
|
|
231
|
+
bundle_variant_id: bundle.bundle_variant_id,
|
|
232
|
+
price_type: bundle.price_type,
|
|
233
|
+
price_type_ext: bundle.price_type_ext,
|
|
234
|
+
// 套餐子商品总价,不包含折扣金额
|
|
235
|
+
bundle_sum_price: bundle.bundle_sum_price,
|
|
236
|
+
// 套餐子商品折扣后金额
|
|
237
|
+
bundle_selling_price: bundle.bundle_selling_price,
|
|
238
|
+
num: bundle.num
|
|
239
|
+
};
|
|
240
|
+
})
|
|
241
|
+
})
|
|
242
|
+
) || [];
|
|
243
|
+
};
|
|
244
|
+
const productList = formatProduct(((_c = (_b = (_a = this.store.currentOrder.order_info) == null ? void 0 : _a.original_order_data) == null ? void 0 : _b.bookings) == null ? void 0 : _c.map((item) => item.product)) || []);
|
|
245
|
+
const relationProducts = formatProduct(((_e = (_d = this.store.currentOrder.order_info) == null ? void 0 : _d.original_order_data) == null ? void 0 : _e.relation_products) || []);
|
|
225
246
|
return [...productList, ...relationProducts];
|
|
226
247
|
}
|
|
227
248
|
async initWalletData(params) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"private": false,
|
|
3
3
|
"name": "@pisell/pisellos",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.81",
|
|
5
5
|
"description": "一个可扩展的前端模块化SDK框架,支持插件系统",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -72,4 +72,4 @@
|
|
|
72
72
|
"volta": {
|
|
73
73
|
"node": "18.20.8"
|
|
74
74
|
}
|
|
75
|
-
}
|
|
75
|
+
}
|