@pisell/pisellos 2.1.62 → 2.1.64

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 (101) 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 +497 -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/index.js +1 -1
  30. package/dist/modules/Discount/types.d.ts +15 -0
  31. package/dist/modules/Payment/index.d.ts +2 -1
  32. package/dist/modules/Payment/index.js +10 -7
  33. package/dist/modules/Payment/utils.js +3 -0
  34. package/dist/modules/Payment/walletpass.d.ts +23 -0
  35. package/dist/modules/Payment/walletpass.js +191 -95
  36. package/dist/modules/Rules/index.d.ts +8 -3
  37. package/dist/modules/Rules/index.js +164 -34
  38. package/dist/modules/Rules/types.d.ts +1 -0
  39. package/dist/modules/Summary/types.d.ts +2 -0
  40. package/dist/modules/Summary/utils.d.ts +6 -0
  41. package/dist/modules/Summary/utils.js +21 -0
  42. package/dist/plugins/window.d.ts +2 -0
  43. package/dist/solution/BookingByStep/index.d.ts +2 -0
  44. package/dist/solution/BookingByStep/index.js +12 -1
  45. package/dist/solution/BookingTicket/index.d.ts +1 -1
  46. package/dist/solution/Checkout/index.js +2 -0
  47. package/dist/solution/ShopDiscount/index.d.ts +1 -0
  48. package/dist/solution/ShopDiscount/index.js +11 -1
  49. package/dist/solution/ShopDiscount/types.d.ts +1 -0
  50. package/dist/solution/ShopDiscount/utils.js +26 -11
  51. package/lib/index.d.ts +1 -0
  52. package/lib/index.js +3 -1
  53. package/lib/model/index.d.ts +1 -0
  54. package/lib/model/index.js +23 -0
  55. package/lib/model/strategy/adapter/index.d.ts +3 -0
  56. package/lib/model/strategy/adapter/index.js +45 -0
  57. package/lib/model/strategy/adapter/type.d.ts +28 -0
  58. package/lib/model/strategy/adapter/type.js +17 -0
  59. package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +84 -0
  60. package/lib/model/strategy/adapter/walletPass/evaluator.js +421 -0
  61. package/lib/model/strategy/adapter/walletPass/example.d.ts +4 -0
  62. package/lib/model/strategy/adapter/walletPass/example.js +207 -0
  63. package/lib/model/strategy/adapter/walletPass/index.d.ts +32 -0
  64. package/lib/model/strategy/adapter/walletPass/index.js +142 -0
  65. package/lib/model/strategy/adapter/walletPass/locales.d.ts +1 -0
  66. package/lib/model/strategy/adapter/walletPass/locales.js +51 -0
  67. package/lib/model/strategy/adapter/walletPass/type.d.ts +163 -0
  68. package/lib/model/strategy/adapter/walletPass/type.js +17 -0
  69. package/lib/model/strategy/adapter/walletPass/utils.d.ts +50 -0
  70. package/lib/model/strategy/adapter/walletPass/utils.js +660 -0
  71. package/lib/model/strategy/index.d.ts +94 -0
  72. package/lib/model/strategy/index.js +413 -0
  73. package/lib/model/strategy/strategy-example.d.ts +5 -0
  74. package/lib/model/strategy/strategy-example.js +318 -0
  75. package/lib/model/strategy/type.d.ts +228 -0
  76. package/lib/model/strategy/type.js +44 -0
  77. package/lib/modules/Cart/types.d.ts +2 -0
  78. package/lib/modules/Cart/utils/cartProduct.js +9 -0
  79. package/lib/modules/Discount/index.js +1 -1
  80. package/lib/modules/Discount/types.d.ts +15 -0
  81. package/lib/modules/Payment/index.d.ts +2 -1
  82. package/lib/modules/Payment/index.js +1 -0
  83. package/lib/modules/Payment/utils.js +3 -0
  84. package/lib/modules/Payment/walletpass.d.ts +23 -0
  85. package/lib/modules/Payment/walletpass.js +94 -17
  86. package/lib/modules/Rules/index.d.ts +8 -3
  87. package/lib/modules/Rules/index.js +381 -199
  88. package/lib/modules/Rules/types.d.ts +1 -0
  89. package/lib/modules/Summary/types.d.ts +2 -0
  90. package/lib/modules/Summary/utils.d.ts +6 -0
  91. package/lib/modules/Summary/utils.js +15 -0
  92. package/lib/plugins/window.d.ts +2 -0
  93. package/lib/solution/BookingByStep/index.d.ts +2 -0
  94. package/lib/solution/BookingByStep/index.js +12 -1
  95. package/lib/solution/BookingTicket/index.d.ts +1 -1
  96. package/lib/solution/Checkout/index.js +2 -0
  97. package/lib/solution/ShopDiscount/index.d.ts +1 -0
  98. package/lib/solution/ShopDiscount/index.js +6 -0
  99. package/lib/solution/ShopDiscount/types.d.ts +1 -0
  100. package/lib/solution/ShopDiscount/utils.js +10 -6
  101. 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
  isFormSubject: boolean;
29
30
  }) => DiscountResult;
30
31
  }
@@ -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;
@@ -315,6 +316,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
315
316
  end_at: dayjs.Dayjs;
316
317
  count: number;
317
318
  left: number;
319
+ summaryCount: number;
318
320
  }[];
319
321
  /**
320
322
  * 找到多个资源的公共可用时间段
@@ -1735,8 +1735,10 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1735
1735
  const resourcesUseableMap = {};
1736
1736
  let count = 0;
1737
1737
  let bookingLeft = 0;
1738
+ let summaryCount = 0;
1738
1739
  allProductResources == null ? void 0 : allProductResources.forEach((m) => {
1739
1740
  let currentResourcesCount = 0;
1741
+ let currentResourcesSummaryCount = 0;
1740
1742
  const currentResourcesTimeSlotCanUsedArr = [];
1741
1743
  const mTimes = m.times.filter((n) => {
1742
1744
  return !(0, import_dayjs.default)(n.start_at).isAfter((0, import_dayjs.default)(item.start), "minute") && !(0, import_dayjs.default)(n.end_at).isBefore((0, import_dayjs.default)(item.end), "minute") || (0, import_dayjs.default)(n.start_at).isBefore((0, import_dayjs.default)(item.end), "minute") && (0, import_dayjs.default)(n.end_at).isAfter((0, import_dayjs.default)(item.start), "minute");
@@ -1764,6 +1766,9 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1764
1766
  if (res.usable && res.remainingCapacity >= count && !m.onlyComputed) {
1765
1767
  currentResourcesCount = res.remainingCapacity;
1766
1768
  }
1769
+ if (res.usable && !m.onlyComputed && res.remainingCapacity >= currentResourcesSummaryCount) {
1770
+ currentResourcesSummaryCount = res.remainingCapacity;
1771
+ }
1767
1772
  currentResourcesTimeSlotCanUsedArr.push(res.usable);
1768
1773
  });
1769
1774
  if (!currentResourcesTimeSlotCanUsedArr.some(
@@ -1775,6 +1780,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1775
1780
  }
1776
1781
  if (!m.onlyComputed) {
1777
1782
  bookingLeft += 1;
1783
+ summaryCount += currentResourcesSummaryCount;
1778
1784
  }
1779
1785
  }
1780
1786
  });
@@ -1789,6 +1795,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1789
1795
  if (sameCartItems.length > 0 && sameCartItems.length >= currentResourcesSet.size || sameCartItems.length > bookingLeft) {
1790
1796
  bookingLeft = 0;
1791
1797
  count = 0;
1798
+ summaryCount = 0;
1792
1799
  }
1793
1800
  const otherCartItems = cartItems2.filter((m) => {
1794
1801
  var _a2, _b2, _c2;
@@ -1814,6 +1821,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1814
1821
  if (currentResourcesSet.size > 0 && otherCartItems.length + sameCartItems.length >= currentResourcesSet.size) {
1815
1822
  bookingLeft = 0;
1816
1823
  count = 0;
1824
+ summaryCount = 0;
1817
1825
  }
1818
1826
  } else {
1819
1827
  const sameCartItems = cartItems2.filter((m) => {
@@ -1825,6 +1833,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1825
1833
  if (sameCartNeedCapacity >= currentProductResourcesCapacity) {
1826
1834
  bookingLeft = 0;
1827
1835
  count = 0;
1836
+ summaryCount = 0;
1828
1837
  }
1829
1838
  const otherSameTimesCartItems = cartItems2.filter((m) => `${m.start_date} ${m.start_time}` === item.start && `${m.start_date} ${m.end_time}` === item.end);
1830
1839
  const otherCartNeedCapacity = otherSameTimesCartItems.reduce((acc, curr) => acc + (0, import_capacity.getCapacityInfoByCartItem)(curr).currentCapacity, 0);
@@ -1869,6 +1878,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1869
1878
  if (otherCartNeedCapacity + usedCapacity >= currentTypeResourcesCapacity) {
1870
1879
  bookingLeft = 0;
1871
1880
  count = 0;
1881
+ summaryCount = 0;
1872
1882
  }
1873
1883
  }
1874
1884
  });
@@ -1880,7 +1890,8 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
1880
1890
  start_at: startDayJs,
1881
1891
  end_at: endDayJs,
1882
1892
  count,
1883
- left: bookingLeft
1893
+ left: bookingLeft,
1894
+ summaryCount
1884
1895
  };
1885
1896
  });
1886
1897
  return formatScheduleTimeSlots;
@@ -115,7 +115,7 @@ export declare class BookingTicketImpl extends BaseModule implements Module {
115
115
  * 获取当前的客户搜索条件
116
116
  * @returns 当前搜索条件
117
117
  */
118
- getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "skip" | "num">;
118
+ getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "num" | "skip">;
119
119
  /**
120
120
  * 获取客户列表状态(包含滚动加载相关状态)
121
121
  * @returns 客户状态
@@ -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;
@@ -55,6 +55,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
55
55
  originalDiscountList: [],
56
56
  currentBookingTime: "",
57
57
  filteredDiscountList: [],
58
+ orderTotalAmount: 0,
58
59
  bookingSubject: void 0
59
60
  };
60
61
  }
@@ -193,6 +194,9 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
193
194
  );
194
195
  }
195
196
  }
197
+ setOriginTotalAmount(amount) {
198
+ this.store.orderTotalAmount = amount;
199
+ }
196
200
  // 设置holders
197
201
  setHolders(holders) {
198
202
  this.store.holders = holders;
@@ -213,6 +217,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
213
217
  productList,
214
218
  discountList: this.getDiscountList(),
215
219
  holders: this.store.holders || [],
220
+ orderTotalAmount: this.store.orderTotalAmount || 0,
216
221
  isFormSubject: ((_a = this.store.bookingSubject) == null ? void 0 : _a.type) === "form"
217
222
  },
218
223
  options
@@ -304,6 +309,7 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
304
309
  oldDiscountList: this.getDiscountList(),
305
310
  newDiscountList: withScanList,
306
311
  holders: this.store.holders || [],
312
+ orderTotalAmount: this.store.orderTotalAmount || 0,
307
313
  isFormSubject: ((_b = this.store.bookingSubject) == null ? void 0 : _b.type) === "form"
308
314
  }) || {
309
315
  isAvailable: false,
@@ -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
  bookingSubject?: {
35
36
  type?: 'form' | 'customer';
36
37
  [key: string]: any;
@@ -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.62",
4
+ "version": "2.1.64",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",