@pisell/pisellos 2.1.53 → 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.
Files changed (95) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/model/index.d.ts +1 -0
  4. package/dist/model/index.js +1 -0
  5. package/dist/model/strategy/adapter/index.d.ts +3 -0
  6. package/dist/model/strategy/adapter/index.js +4 -0
  7. package/dist/model/strategy/adapter/type.d.ts +28 -0
  8. package/dist/model/strategy/adapter/type.js +1 -0
  9. package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
  10. package/dist/model/strategy/adapter/walletPass/evaluator.js +496 -0
  11. package/dist/model/strategy/adapter/walletPass/example.d.ts +4 -0
  12. package/dist/model/strategy/adapter/walletPass/example.js +258 -0
  13. package/dist/model/strategy/adapter/walletPass/index.d.ts +32 -0
  14. package/dist/model/strategy/adapter/walletPass/index.js +182 -0
  15. package/dist/model/strategy/adapter/walletPass/locales.d.ts +1 -0
  16. package/dist/model/strategy/adapter/walletPass/locales.js +23 -0
  17. package/dist/model/strategy/adapter/walletPass/type.d.ts +163 -0
  18. package/dist/model/strategy/adapter/walletPass/type.js +1 -0
  19. package/dist/model/strategy/adapter/walletPass/utils.d.ts +50 -0
  20. package/dist/model/strategy/adapter/walletPass/utils.js +965 -0
  21. package/dist/model/strategy/index.d.ts +94 -0
  22. package/dist/model/strategy/index.js +551 -0
  23. package/dist/model/strategy/strategy-example.d.ts +5 -0
  24. package/dist/model/strategy/strategy-example.js +331 -0
  25. package/dist/model/strategy/type.d.ts +228 -0
  26. package/dist/model/strategy/type.js +94 -0
  27. package/dist/modules/Cart/types.d.ts +2 -0
  28. package/dist/modules/Cart/utils/cartProduct.js +11 -0
  29. package/dist/modules/Discount/types.d.ts +15 -0
  30. package/dist/modules/Payment/index.d.ts +2 -1
  31. package/dist/modules/Payment/index.js +10 -7
  32. package/dist/modules/Payment/utils.js +3 -0
  33. package/dist/modules/Payment/walletpass.d.ts +23 -0
  34. package/dist/modules/Payment/walletpass.js +191 -95
  35. package/dist/modules/Rules/index.d.ts +8 -3
  36. package/dist/modules/Rules/index.js +155 -29
  37. package/dist/modules/Rules/types.d.ts +1 -0
  38. package/dist/modules/Summary/types.d.ts +2 -0
  39. package/dist/modules/Summary/utils.d.ts +6 -0
  40. package/dist/modules/Summary/utils.js +21 -0
  41. package/dist/plugins/window.d.ts +2 -0
  42. package/dist/solution/BookingByStep/index.d.ts +2 -1
  43. package/dist/solution/Checkout/index.js +2 -0
  44. package/dist/solution/ShopDiscount/index.d.ts +1 -0
  45. package/dist/solution/ShopDiscount/index.js +14 -4
  46. package/dist/solution/ShopDiscount/types.d.ts +1 -0
  47. package/dist/solution/ShopDiscount/utils.js +26 -11
  48. package/lib/index.d.ts +1 -0
  49. package/lib/index.js +3 -1
  50. package/lib/model/index.d.ts +1 -0
  51. package/lib/model/index.js +23 -0
  52. package/lib/model/strategy/adapter/index.d.ts +3 -0
  53. package/lib/model/strategy/adapter/index.js +45 -0
  54. package/lib/model/strategy/adapter/type.d.ts +28 -0
  55. package/lib/model/strategy/adapter/type.js +17 -0
  56. package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
  57. package/lib/model/strategy/adapter/walletPass/evaluator.js +420 -0
  58. package/lib/model/strategy/adapter/walletPass/example.d.ts +4 -0
  59. package/lib/model/strategy/adapter/walletPass/example.js +207 -0
  60. package/lib/model/strategy/adapter/walletPass/index.d.ts +32 -0
  61. package/lib/model/strategy/adapter/walletPass/index.js +142 -0
  62. package/lib/model/strategy/adapter/walletPass/locales.d.ts +1 -0
  63. package/lib/model/strategy/adapter/walletPass/locales.js +51 -0
  64. package/lib/model/strategy/adapter/walletPass/type.d.ts +163 -0
  65. package/lib/model/strategy/adapter/walletPass/type.js +17 -0
  66. package/lib/model/strategy/adapter/walletPass/utils.d.ts +50 -0
  67. package/lib/model/strategy/adapter/walletPass/utils.js +660 -0
  68. package/lib/model/strategy/index.d.ts +94 -0
  69. package/lib/model/strategy/index.js +413 -0
  70. package/lib/model/strategy/strategy-example.d.ts +5 -0
  71. package/lib/model/strategy/strategy-example.js +318 -0
  72. package/lib/model/strategy/type.d.ts +228 -0
  73. package/lib/model/strategy/type.js +44 -0
  74. package/lib/modules/Cart/types.d.ts +2 -0
  75. package/lib/modules/Cart/utils/cartProduct.js +9 -0
  76. package/lib/modules/Discount/types.d.ts +15 -0
  77. package/lib/modules/Payment/index.d.ts +2 -1
  78. package/lib/modules/Payment/index.js +1 -0
  79. package/lib/modules/Payment/utils.js +3 -0
  80. package/lib/modules/Payment/walletpass.d.ts +23 -0
  81. package/lib/modules/Payment/walletpass.js +94 -17
  82. package/lib/modules/Rules/index.d.ts +8 -3
  83. package/lib/modules/Rules/index.js +373 -195
  84. package/lib/modules/Rules/types.d.ts +1 -0
  85. package/lib/modules/Summary/types.d.ts +2 -0
  86. package/lib/modules/Summary/utils.d.ts +6 -0
  87. package/lib/modules/Summary/utils.js +15 -0
  88. package/lib/plugins/window.d.ts +2 -0
  89. package/lib/solution/BookingByStep/index.d.ts +2 -1
  90. package/lib/solution/Checkout/index.js +2 -0
  91. package/lib/solution/ShopDiscount/index.d.ts +1 -0
  92. package/lib/solution/ShopDiscount/index.js +9 -3
  93. package/lib/solution/ShopDiscount/types.d.ts +1 -0
  94. package/lib/solution/ShopDiscount/utils.js +10 -6
  95. package/package.json +1 -1
@@ -25,6 +25,7 @@ export interface RulesModuleAPI {
25
25
  holders: {
26
26
  form_record_id: number;
27
27
  }[];
28
+ orderTotalAmount: number;
28
29
  }) => DiscountResult;
29
30
  }
30
31
  type ProductDetail = {
@@ -5,6 +5,8 @@ export interface ISummaryState {
5
5
  subtotal: string | number;
6
6
  /** 最终总价 */
7
7
  total: string | number;
8
+ /** 最终原始价格 不包含折扣卡商品券折扣 */
9
+ originTotal: string | number;
8
10
  /** 税率标题 */
9
11
  taxTitle?: string;
10
12
  /** 商品总费率 */
@@ -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
@@ -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;
@@ -342,7 +343,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
342
343
  };
343
344
  setOtherData(key: string, value: any): void;
344
345
  getOtherData(key: string): any;
345
- getProductTypeById(id: number): Promise<"duration" | "session" | "normal">;
346
+ getProductTypeById(id: number): Promise<"normal" | "duration" | "session">;
346
347
  /**
347
348
  * 提供给 UI 的方法,减轻 UI 层的计算压力,UI 层只需要传递 cartItemId 和 resourceCode 即返回对应的 renderList
348
349
  *
@@ -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,7 @@ 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;
24
25
  setHolders(holders: {
25
26
  form_record_id: number;
26
27
  }[]): void;
@@ -54,7 +54,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
54
54
  holders: [],
55
55
  originalDiscountList: [],
56
56
  currentBookingTime: "",
57
- filteredDiscountList: []
57
+ filteredDiscountList: [],
58
+ orderTotalAmount: 0
58
59
  };
59
60
  }
60
61
  // =========== 生命周期方法 ===========
@@ -192,6 +193,9 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
192
193
  );
193
194
  }
194
195
  }
196
+ setOriginTotalAmount(amount) {
197
+ this.store.orderTotalAmount = amount;
198
+ }
195
199
  // 设置holders
196
200
  setHolders(holders) {
197
201
  this.store.holders = holders;
@@ -207,7 +211,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
207
211
  {
208
212
  productList,
209
213
  discountList: this.getDiscountList(),
210
- holders: this.store.holders || []
214
+ holders: this.store.holders || [],
215
+ orderTotalAmount: this.store.orderTotalAmount || 0
211
216
  },
212
217
  options
213
218
  ) || { productList, discountList: this.getDiscountList() };
@@ -297,7 +302,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
297
302
  productList: this.store.productList || [],
298
303
  oldDiscountList: this.getDiscountList(),
299
304
  newDiscountList: withScanList,
300
- holders: this.store.holders || []
305
+ holders: this.store.holders || [],
306
+ orderTotalAmount: this.store.orderTotalAmount || 0
301
307
  }) || {
302
308
  isAvailable: false,
303
309
  productList: this.store.productList || [],
@@ -31,6 +31,7 @@ export interface ShopDiscountState {
31
31
  originalDiscountList: Discount[];
32
32
  currentBookingTime: string | null;
33
33
  filteredDiscountList: Discount[];
34
+ orderTotalAmount?: number;
34
35
  }
35
36
  export interface SetDiscountSelectedParams {
36
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
- return new import_decimal.default(price).minus(new import_decimal.default(price || 0)).toNumber();
59
- }
60
- const isFixedAmount = ((_a = discount == null ? void 0 : discount.metadata) == null ? void 0 : _a.discount_card_type) === "fixed_amount";
61
- if (isFixedAmount) {
62
- return Math.max(new import_decimal.default(price).minus(new import_decimal.default(discount.par_value || 0)).toNumber(), 0);
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 new import_decimal.default(100).minus(discount.par_value || 0).div(100).mul(new import_decimal.default(price)).toNumber();
68
+ return discountedPrice;
65
69
  };
66
70
  var getDiscountListAmountTotal = (discount) => {
67
71
  return discount.reduce((acc, cur) => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "2.1.53",
4
+ "version": "2.1.54",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",