@pisell/pisellos 2.1.52 → 2.1.54
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/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/model/index.d.ts +1 -0
- package/dist/model/index.js +1 -0
- package/dist/model/strategy/adapter/index.d.ts +3 -0
- package/dist/model/strategy/adapter/index.js +4 -0
- package/dist/model/strategy/adapter/type.d.ts +28 -0
- package/dist/model/strategy/adapter/type.js +1 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.js +496 -0
- package/dist/model/strategy/adapter/walletPass/example.d.ts +4 -0
- package/dist/model/strategy/adapter/walletPass/example.js +258 -0
- package/dist/model/strategy/adapter/walletPass/index.d.ts +32 -0
- package/dist/model/strategy/adapter/walletPass/index.js +182 -0
- package/dist/model/strategy/adapter/walletPass/locales.d.ts +1 -0
- package/dist/model/strategy/adapter/walletPass/locales.js +23 -0
- package/dist/model/strategy/adapter/walletPass/type.d.ts +163 -0
- package/dist/model/strategy/adapter/walletPass/type.js +1 -0
- package/dist/model/strategy/adapter/walletPass/utils.d.ts +50 -0
- package/dist/model/strategy/adapter/walletPass/utils.js +965 -0
- package/dist/model/strategy/index.d.ts +94 -0
- package/dist/model/strategy/index.js +551 -0
- package/dist/model/strategy/strategy-example.d.ts +5 -0
- package/dist/model/strategy/strategy-example.js +331 -0
- package/dist/model/strategy/type.d.ts +228 -0
- package/dist/model/strategy/type.js +94 -0
- package/dist/modules/Cart/types.d.ts +2 -0
- package/dist/modules/Cart/utils/cartProduct.js +11 -0
- package/dist/modules/Discount/index.d.ts +1 -0
- package/dist/modules/Discount/index.js +1 -1
- package/dist/modules/Discount/types.d.ts +15 -0
- package/dist/modules/Payment/index.d.ts +2 -1
- package/dist/modules/Payment/index.js +10 -7
- package/dist/modules/Payment/utils.js +3 -0
- package/dist/modules/Payment/walletpass.d.ts +23 -0
- package/dist/modules/Payment/walletpass.js +191 -95
- package/dist/modules/Rules/index.d.ts +15 -3
- package/dist/modules/Rules/index.js +194 -28
- package/dist/modules/Rules/types.d.ts +5 -0
- package/dist/modules/Summary/types.d.ts +2 -0
- package/dist/modules/Summary/utils.d.ts +6 -0
- package/dist/modules/Summary/utils.js +21 -0
- package/dist/plugins/window.d.ts +2 -0
- package/dist/solution/BookingByStep/index.d.ts +1 -0
- package/dist/solution/BookingByStep/utils/capacity.js +1 -2
- package/dist/solution/Checkout/index.js +2 -0
- package/dist/solution/ShopDiscount/index.d.ts +4 -0
- package/dist/solution/ShopDiscount/index.js +26 -5
- package/dist/solution/ShopDiscount/types.d.ts +6 -0
- package/dist/solution/ShopDiscount/utils.js +26 -11
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/model/index.d.ts +1 -0
- package/lib/model/index.js +23 -0
- package/lib/model/strategy/adapter/index.d.ts +3 -0
- package/lib/model/strategy/adapter/index.js +45 -0
- package/lib/model/strategy/adapter/type.d.ts +28 -0
- package/lib/model/strategy/adapter/type.js +17 -0
- package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
- package/lib/model/strategy/adapter/walletPass/evaluator.js +420 -0
- package/lib/model/strategy/adapter/walletPass/example.d.ts +4 -0
- package/lib/model/strategy/adapter/walletPass/example.js +207 -0
- package/lib/model/strategy/adapter/walletPass/index.d.ts +32 -0
- package/lib/model/strategy/adapter/walletPass/index.js +142 -0
- package/lib/model/strategy/adapter/walletPass/locales.d.ts +1 -0
- package/lib/model/strategy/adapter/walletPass/locales.js +51 -0
- package/lib/model/strategy/adapter/walletPass/type.d.ts +163 -0
- package/lib/model/strategy/adapter/walletPass/type.js +17 -0
- package/lib/model/strategy/adapter/walletPass/utils.d.ts +50 -0
- package/lib/model/strategy/adapter/walletPass/utils.js +660 -0
- package/lib/model/strategy/index.d.ts +94 -0
- package/lib/model/strategy/index.js +413 -0
- package/lib/model/strategy/strategy-example.d.ts +5 -0
- package/lib/model/strategy/strategy-example.js +318 -0
- package/lib/model/strategy/type.d.ts +228 -0
- package/lib/model/strategy/type.js +44 -0
- package/lib/modules/Cart/types.d.ts +2 -0
- package/lib/modules/Cart/utils/cartProduct.js +9 -0
- package/lib/modules/Discount/index.d.ts +1 -0
- package/lib/modules/Discount/index.js +1 -1
- package/lib/modules/Discount/types.d.ts +15 -0
- package/lib/modules/Payment/index.d.ts +2 -1
- package/lib/modules/Payment/index.js +1 -0
- package/lib/modules/Payment/utils.js +3 -0
- package/lib/modules/Payment/walletpass.d.ts +23 -0
- package/lib/modules/Payment/walletpass.js +94 -17
- package/lib/modules/Rules/index.d.ts +15 -3
- package/lib/modules/Rules/index.js +409 -195
- package/lib/modules/Rules/types.d.ts +5 -0
- package/lib/modules/Summary/types.d.ts +2 -0
- package/lib/modules/Summary/utils.d.ts +6 -0
- package/lib/modules/Summary/utils.js +15 -0
- package/lib/plugins/window.d.ts +2 -0
- package/lib/solution/BookingByStep/index.d.ts +1 -0
- package/lib/solution/BookingByStep/utils/capacity.js +1 -2
- package/lib/solution/Checkout/index.js +2 -0
- package/lib/solution/ShopDiscount/index.d.ts +4 -0
- package/lib/solution/ShopDiscount/index.js +18 -4
- package/lib/solution/ShopDiscount/types.d.ts +6 -0
- package/lib/solution/ShopDiscount/utils.js +10 -6
- package/package.json +1 -1
|
@@ -22,6 +22,10 @@ export interface RulesModuleAPI {
|
|
|
22
22
|
calcDiscount: (params: {
|
|
23
23
|
discountList: any[];
|
|
24
24
|
productList: any[];
|
|
25
|
+
holders: {
|
|
26
|
+
form_record_id: number;
|
|
27
|
+
}[];
|
|
28
|
+
orderTotalAmount: number;
|
|
25
29
|
}) => DiscountResult;
|
|
26
30
|
}
|
|
27
31
|
type ProductDetail = {
|
|
@@ -39,6 +43,7 @@ type ProductDetail = {
|
|
|
39
43
|
original_price?: number | string;
|
|
40
44
|
num?: number;
|
|
41
45
|
quantity: number;
|
|
46
|
+
holder_id?: number | string;
|
|
42
47
|
vouchersApplicable?: boolean;
|
|
43
48
|
startDate?: any;
|
|
44
49
|
};
|
|
@@ -8,6 +8,12 @@ export declare const calculatePriceDetails: (shopInfo: any, items: CartItem[]) =
|
|
|
8
8
|
* @returns 商品总价字符串,保留2位小数
|
|
9
9
|
*/
|
|
10
10
|
export declare const calculateSubtotal: (items: CartItem[]) => string;
|
|
11
|
+
/**
|
|
12
|
+
* 计算商品小计(不含其他费用 不包含折扣卡商品券抵扣金额)
|
|
13
|
+
* @param items - 购物车商品数组
|
|
14
|
+
* @returns 商品总价字符串,保留2位小数
|
|
15
|
+
*/
|
|
16
|
+
export declare const calculateOriginSubtotal: (items: CartItem[]) => string;
|
|
11
17
|
/**
|
|
12
18
|
* @title: 单个商品的税费
|
|
13
19
|
* @description:
|
|
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
var utils_exports = {};
|
|
31
31
|
__export(utils_exports, {
|
|
32
32
|
calculateDeposit: () => calculateDeposit,
|
|
33
|
+
calculateOriginSubtotal: () => calculateOriginSubtotal,
|
|
33
34
|
calculatePriceDetails: () => calculatePriceDetails,
|
|
34
35
|
calculateSubtotal: () => calculateSubtotal,
|
|
35
36
|
calculateTaxFee: () => calculateTaxFee
|
|
@@ -38,12 +39,15 @@ module.exports = __toCommonJS(utils_exports);
|
|
|
38
39
|
var import_decimal = __toESM(require("decimal.js"));
|
|
39
40
|
var calculatePriceDetails = (shopInfo, items) => {
|
|
40
41
|
const subtotal = new import_decimal.default(calculateSubtotal(items));
|
|
42
|
+
const subOriginTotal = new import_decimal.default(calculateOriginSubtotal(items));
|
|
41
43
|
const totalTaxFee = new import_decimal.default(calculateTaxFee(shopInfo, items));
|
|
42
44
|
const total = (shopInfo == null ? void 0 : shopInfo.is_price_include_tax) ? subtotal : subtotal.plus(totalTaxFee);
|
|
45
|
+
const originTotal = (shopInfo == null ? void 0 : shopInfo.is_price_include_tax) ? subOriginTotal : subOriginTotal.plus(totalTaxFee);
|
|
43
46
|
const deposit = calculateDeposit(items);
|
|
44
47
|
return {
|
|
45
48
|
subtotal: subtotal.toFixed(2),
|
|
46
49
|
total: total.toFixed(2),
|
|
50
|
+
originTotal: originTotal.toFixed(2),
|
|
47
51
|
taxTitle: shopInfo == null ? void 0 : shopInfo.tax_title,
|
|
48
52
|
totalTaxFee: totalTaxFee.toFixed(2),
|
|
49
53
|
isPriceIncludeTax: shopInfo == null ? void 0 : shopInfo.is_price_include_tax,
|
|
@@ -60,6 +64,16 @@ var calculateSubtotal = (items) => {
|
|
|
60
64
|
}, new import_decimal.default(0));
|
|
61
65
|
return subtotal.toFixed(2);
|
|
62
66
|
};
|
|
67
|
+
var calculateOriginSubtotal = (items) => {
|
|
68
|
+
if (!(items == null ? void 0 : items.length)) {
|
|
69
|
+
return "0.00";
|
|
70
|
+
}
|
|
71
|
+
const subtotal = items.reduce((sum, item) => {
|
|
72
|
+
const cartItemTotalPrice = new import_decimal.default(item.summaryOriginTotal || 0);
|
|
73
|
+
return sum.plus(cartItemTotalPrice);
|
|
74
|
+
}, new import_decimal.default(0));
|
|
75
|
+
return subtotal.toFixed(2);
|
|
76
|
+
};
|
|
63
77
|
var calculateTaxFee = (shopInfo, items) => {
|
|
64
78
|
if (!(items == null ? void 0 : items.length)) {
|
|
65
79
|
return "0.00";
|
|
@@ -101,6 +115,7 @@ var calculateDeposit = (items) => {
|
|
|
101
115
|
// Annotate the CommonJS export names for ESM import in node:
|
|
102
116
|
0 && (module.exports = {
|
|
103
117
|
calculateDeposit,
|
|
118
|
+
calculateOriginSubtotal,
|
|
104
119
|
calculatePriceDetails,
|
|
105
120
|
calculateSubtotal,
|
|
106
121
|
calculateTaxFee
|
package/lib/plugins/window.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletPassEvaluator } from '../model';
|
|
1
2
|
import { Plugin } from '../types';
|
|
2
3
|
/**
|
|
3
4
|
* WindowPlugin 接口定义
|
|
@@ -14,6 +15,7 @@ export interface WindowPlugin extends Plugin {
|
|
|
14
15
|
document: Partial<Document>;
|
|
15
16
|
history: History;
|
|
16
17
|
interaction?: any;
|
|
18
|
+
getWalletPassEvaluator?: () => WalletPassEvaluator;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* 简单的 Storage 接口实现
|
|
@@ -144,6 +144,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
144
144
|
getSummary(): Promise<{
|
|
145
145
|
subtotal: string | number;
|
|
146
146
|
total: string | number;
|
|
147
|
+
originTotal: string | number;
|
|
147
148
|
taxTitle?: string | undefined;
|
|
148
149
|
totalTaxFee?: string | number | undefined;
|
|
149
150
|
isPriceIncludeTax?: 0 | 1 | undefined;
|
|
@@ -249,8 +249,7 @@ function checkTimeSlotCapacity(timeSlotStart, timeSlotEnd, cartItems, allResourc
|
|
|
249
249
|
let availableResourceCount = 0;
|
|
250
250
|
resourcesInType.forEach((resource) => {
|
|
251
251
|
const availableTimes = resource.times.filter((time) => {
|
|
252
|
-
|
|
253
|
-
return !(0, import_dayjs.default)(time.start_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute") && !(0, import_dayjs.default)(time.end_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") || (0, import_dayjs.default)(time.start_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") && (0, import_dayjs.default)(time.end_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute") && ((_a2 = time.event_list) == null ? void 0 : _a2.length) === 0;
|
|
252
|
+
return !(0, import_dayjs.default)(time.start_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute") && !(0, import_dayjs.default)(time.end_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") || (0, import_dayjs.default)(time.start_at).isBefore((0, import_dayjs.default)(timeSlotEnd), "minute") && (0, import_dayjs.default)(time.end_at).isAfter((0, import_dayjs.default)(timeSlotStart), "minute");
|
|
254
253
|
});
|
|
255
254
|
if (availableTimes.length > 0) {
|
|
256
255
|
availableResourceCount++;
|
|
@@ -222,6 +222,7 @@ var CheckoutImpl = class extends import_BaseModule.BaseModule {
|
|
|
222
222
|
product_id: item.product_id,
|
|
223
223
|
product_variant_id: item.product_variant_id,
|
|
224
224
|
quantity: item.num,
|
|
225
|
+
is_price_include_tax: item.is_price_include_tax,
|
|
225
226
|
// 商品是否含税:1;0
|
|
226
227
|
is_charge_tax: item.is_charge_tax ?? 0,
|
|
227
228
|
// 若商品不含税,计算得到的税费,单位(元)
|
|
@@ -246,6 +247,7 @@ var CheckoutImpl = class extends import_BaseModule.BaseModule {
|
|
|
246
247
|
},
|
|
247
248
|
product_bundle: item.product_bundle.map((bundle) => {
|
|
248
249
|
return {
|
|
250
|
+
is_price_include_tax: item.is_price_include_tax,
|
|
249
251
|
bundle_id: bundle.bundle_id,
|
|
250
252
|
bundle_product_id: bundle.bundle_product_id,
|
|
251
253
|
bundle_variant_id: bundle.bundle_variant_id,
|
|
@@ -21,6 +21,10 @@ export declare class ShopDiscountImpl extends BaseModule implements Module {
|
|
|
21
21
|
getCurrentBookingTime(): string | null;
|
|
22
22
|
private filterDiscountListByBookingTime;
|
|
23
23
|
setCustomer(customer: Customer): Promise<void>;
|
|
24
|
+
setOriginTotalAmount(amount: number): void;
|
|
25
|
+
setHolders(holders: {
|
|
26
|
+
form_record_id: number;
|
|
27
|
+
}[]): void;
|
|
24
28
|
calcDiscount(productList: Record<string, any>[], options?: SetDiscountSelectedParams): {
|
|
25
29
|
productList: Record<string, any>[];
|
|
26
30
|
discountList: Discount[];
|
|
@@ -51,9 +51,11 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
51
51
|
productList: [],
|
|
52
52
|
discount: null,
|
|
53
53
|
rules: null,
|
|
54
|
+
holders: [],
|
|
54
55
|
originalDiscountList: [],
|
|
55
56
|
currentBookingTime: "",
|
|
56
|
-
filteredDiscountList: []
|
|
57
|
+
filteredDiscountList: [],
|
|
58
|
+
orderTotalAmount: 0
|
|
57
59
|
};
|
|
58
60
|
}
|
|
59
61
|
// =========== 生命周期方法 ===========
|
|
@@ -191,6 +193,13 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
191
193
|
);
|
|
192
194
|
}
|
|
193
195
|
}
|
|
196
|
+
setOriginTotalAmount(amount) {
|
|
197
|
+
this.store.orderTotalAmount = amount;
|
|
198
|
+
}
|
|
199
|
+
// 设置holders
|
|
200
|
+
setHolders(holders) {
|
|
201
|
+
this.store.holders = holders;
|
|
202
|
+
}
|
|
194
203
|
// 计算优惠券
|
|
195
204
|
calcDiscount(productList, options) {
|
|
196
205
|
this.store.productList = productList;
|
|
@@ -201,7 +210,9 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
201
210
|
let { productList: newProductList, discountList: newDiscountList } = rulesModule.calcDiscount(
|
|
202
211
|
{
|
|
203
212
|
productList,
|
|
204
|
-
discountList: this.getDiscountList()
|
|
213
|
+
discountList: this.getDiscountList(),
|
|
214
|
+
holders: this.store.holders || [],
|
|
215
|
+
orderTotalAmount: this.store.orderTotalAmount || 0
|
|
205
216
|
},
|
|
206
217
|
options
|
|
207
218
|
) || { productList, discountList: this.getDiscountList() };
|
|
@@ -290,7 +301,9 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
290
301
|
} = rulesModule.isDiscountListAvailable({
|
|
291
302
|
productList: this.store.productList || [],
|
|
292
303
|
oldDiscountList: this.getDiscountList(),
|
|
293
|
-
newDiscountList: withScanList
|
|
304
|
+
newDiscountList: withScanList,
|
|
305
|
+
holders: this.store.holders || [],
|
|
306
|
+
orderTotalAmount: this.store.orderTotalAmount || 0
|
|
294
307
|
}) || {
|
|
295
308
|
isAvailable: false,
|
|
296
309
|
productList: this.store.productList || [],
|
|
@@ -475,7 +488,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
475
488
|
customer_id: customerId,
|
|
476
489
|
action: "create",
|
|
477
490
|
with_good_pass: 1,
|
|
478
|
-
with_discount_card: 1
|
|
491
|
+
with_discount_card: 1,
|
|
492
|
+
with_wallet_pass_holder: 1
|
|
479
493
|
}));
|
|
480
494
|
const scanDiscount = (_c = this.getDiscountList()) == null ? void 0 : _c.filter(
|
|
481
495
|
(item) => item.isScan
|
|
@@ -23,9 +23,15 @@ export interface ShopDiscountState {
|
|
|
23
23
|
discount: DiscountModule | null;
|
|
24
24
|
rules: RulesModule | null;
|
|
25
25
|
productList: Record<string, any>[];
|
|
26
|
+
holders?: {
|
|
27
|
+
form_record_id: number;
|
|
28
|
+
form_id?: number;
|
|
29
|
+
main_field?: string;
|
|
30
|
+
}[];
|
|
26
31
|
originalDiscountList: Discount[];
|
|
27
32
|
currentBookingTime: string | null;
|
|
28
33
|
filteredDiscountList: Discount[];
|
|
34
|
+
orderTotalAmount?: number;
|
|
29
35
|
}
|
|
30
36
|
export interface SetDiscountSelectedParams {
|
|
31
37
|
discountId: number;
|
|
@@ -54,14 +54,18 @@ var isAllNormalProduct = (items) => {
|
|
|
54
54
|
};
|
|
55
55
|
var getDiscountAmount = (discount, total, price) => {
|
|
56
56
|
var _a;
|
|
57
|
+
let discountedPrice = 0;
|
|
57
58
|
if (discount.tag === "good_pass") {
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
discountedPrice = new import_decimal.default(price).minus(new import_decimal.default(price || 0)).toNumber();
|
|
60
|
+
} else {
|
|
61
|
+
const isFixedAmount = ((_a = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a.discount_card_type) === "fixed_amount";
|
|
62
|
+
if (isFixedAmount) {
|
|
63
|
+
discountedPrice = Math.max(new import_decimal.default(price).minus(new import_decimal.default(discount.par_value || 0)).toNumber(), 0);
|
|
64
|
+
} else {
|
|
65
|
+
discountedPrice = new import_decimal.default(100).minus(discount.par_value || 0).div(100).mul(new import_decimal.default(price)).toNumber();
|
|
66
|
+
}
|
|
63
67
|
}
|
|
64
|
-
return
|
|
68
|
+
return discountedPrice;
|
|
65
69
|
};
|
|
66
70
|
var getDiscountListAmountTotal = (discount) => {
|
|
67
71
|
return discount.reduce((acc, cur) => {
|