@pisell/pisellos 0.0.238 → 0.0.240

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.
@@ -1059,7 +1059,7 @@ export var PaymentModule = /*#__PURE__*/function (_BaseModule) {
1059
1059
  type: paymentItem.type,
1060
1060
  amount: formatAmount(paymentItem.amount),
1061
1061
  voucher_id: paymentItem.voucher_id || '',
1062
- rounding_amount: '0.00',
1062
+ rounding_amount: paymentItem.rounding_amount || '0.00',
1063
1063
  service_charge: paymentItem.service_charge,
1064
1064
  status: 'active',
1065
1065
  // 新支付项默认为活跃状态
@@ -216,6 +216,8 @@ export interface PaymentItemInput {
216
216
  percentage?: string;
217
217
  amount?: string;
218
218
  };
219
+ /** 舍入金额 */
220
+ rounding_amount?: string;
219
221
  }
220
222
  /**
221
223
  * 推送支付项参数
@@ -2,6 +2,7 @@ import { Module, PisellCore, ModuleOptions } from '../../types';
2
2
  import { BaseModule } from '../BaseModule';
3
3
  import { Rules, RulesModuleAPI, DiscountResult } from './types';
4
4
  import { Discount } from "../Discount/types";
5
+ import { SetDiscountSelectedParams } from '../../solution/ShopDiscount/types';
5
6
  export declare class RulesModule extends BaseModule implements Module, RulesModuleAPI {
6
7
  protected defaultName: string;
7
8
  protected defaultVersion: string;
@@ -26,6 +27,7 @@ export declare class RulesModule extends BaseModule implements Module, RulesModu
26
27
  }, options?: {
27
28
  isSelected?: boolean;
28
29
  discountId?: number;
30
+ selectedList?: SetDiscountSelectedParams[];
29
31
  scan?: boolean;
30
32
  }): DiscountResult;
31
33
  destroy(): Promise<void>;
@@ -324,7 +324,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
324
324
 
325
325
  // 然后再处理应用哪些优惠券,此时只考虑filteredDiscountList中的优惠券
326
326
  sortedProductList.forEach(function (originProduct, i) {
327
- var _product$discount_lis4, _product$discount_lis5, _product$discount_lis7, _product$discount_lis8, _product$discount_lis9, _product$discount_lis10;
327
+ var _product$discount_lis4, _product$discount_lis5, _product$discount_lis7, _product$discount_lis8, _product$discount_lis9, _product$discount_lis10, _product$discount_lis11;
328
328
  var product = _this3.hooks.getProduct(originProduct);
329
329
  if (product !== null && product !== void 0 && product.booking_id && (_product$discount_lis4 = product.discount_list) !== null && _product$discount_lis4 !== void 0 && _product$discount_lis4.length && product !== null && product !== void 0 && (_product$discount_lis5 = product.discount_list) !== null && _product$discount_lis5 !== void 0 && _product$discount_lis5.every(function (discount) {
330
330
  return discount.id && ['good_pass', 'discount_card', 'product_discount_card'].includes(discount.tag || discount.type);
@@ -378,6 +378,15 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
378
378
  })) {
379
379
  isManualDiscount = false;
380
380
  }
381
+ if (options !== null && options !== void 0 && options.selectedList && (_product$discount_lis11 = product.discount_list) !== null && _product$discount_lis11 !== void 0 && _product$discount_lis11.some(function (item) {
382
+ var _options$selectedList;
383
+ return options === null || options === void 0 || (_options$selectedList = options.selectedList) === null || _options$selectedList === void 0 ? void 0 : _options$selectedList.some(function (n) {
384
+ var _item$discount2;
385
+ return n.discountId === ((_item$discount2 = item.discount) === null || _item$discount2 === void 0 ? void 0 : _item$discount2.resource_id);
386
+ });
387
+ })) {
388
+ isManualDiscount = false;
389
+ }
381
390
 
382
391
  // 如果没有适用的优惠券,或者手动折扣,则不适用优惠券
383
392
  // 自定义商品:如果未开启适用折扣卡(product.vouchersApplicable),则不适用优惠券
@@ -435,7 +444,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
435
444
  }));
436
445
  }
437
446
  for (var _i = 0; _i < splitCount; _i++) {
438
- var _product$discount_lis11, _originProduct$_produ;
447
+ var _product$discount_lis12, _originProduct$_produ;
439
448
  // 如果用过折扣卡,也就不存在拆分的情况了,这里直接使用上面计算出来的折扣卡
440
449
  var _selectedDiscount = selectedDiscountCard || applicableDiscounts[_i];
441
450
  // 标记优惠券为已使用
@@ -447,7 +456,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
447
456
  // 优先从 origin_total拿,可能会拿不到(比如用户端预约在没有配置 original_price 的情况下)
448
457
  var productOriginTotal = product.origin_total || product.total || 0;
449
458
  // 如果当前 product 有 discount_list,则先从 origin_total 拿
450
- if ((_product$discount_lis11 = product.discount_list) !== null && _product$discount_lis11 !== void 0 && _product$discount_lis11.length && product.origin_total) {
459
+ if ((_product$discount_lis12 = product.discount_list) !== null && _product$discount_lis12 !== void 0 && _product$discount_lis12.length && product.origin_total) {
451
460
  productOriginTotal = product.origin_total;
452
461
  }
453
462
  // 如果originProduct?._productInit?.original_price为 0,product.origin_total可能为空,此时取 product.total
@@ -1659,7 +1659,9 @@ export var CheckoutImpl = /*#__PURE__*/function (_BaseModule) {
1659
1659
  name: paymentItem.name,
1660
1660
  type: paymentItem.type,
1661
1661
  amount: paymentItem.amount,
1662
- service_charge: paymentItem.service_charge
1662
+ service_charge: paymentItem.service_charge,
1663
+ rounding_amount: paymentItem.rounding_amount,
1664
+ voucher_id: paymentItem.voucher_id
1663
1665
  }
1664
1666
  });
1665
1667
 
@@ -1,6 +1,6 @@
1
1
  import { Module, PisellCore } from '../../types';
2
2
  import { BaseModule } from '../../modules/BaseModule';
3
- import { Customer } from './types';
3
+ import { Customer, SetDiscountSelectedParams } from './types';
4
4
  import { Discount } from '../../modules/Discount/types';
5
5
  export declare class ShopDiscountImpl extends BaseModule implements Module {
6
6
  protected defaultName: string;
@@ -19,17 +19,11 @@ export declare class ShopDiscountImpl extends BaseModule implements Module {
19
19
  private registerDependentModules;
20
20
  private registerEventListeners;
21
21
  setCustomer(customer: Customer): Promise<void>;
22
- calcDiscount(productList: Record<string, any>[], options?: {
23
- discountId: number;
24
- isSelected: boolean;
25
- }): {
22
+ calcDiscount(productList: Record<string, any>[], options?: SetDiscountSelectedParams): {
26
23
  productList: Record<string, any>[];
27
24
  discountList: Discount[];
28
25
  };
29
- setDiscountSelected({ discountId, isSelected, }: {
30
- discountId: number;
31
- isSelected: boolean;
32
- }): {
26
+ setDiscountSelected(params: SetDiscountSelectedParams): {
33
27
  productList: Record<string, any>[];
34
28
  discountList: Discount[];
35
29
  };
@@ -267,19 +267,38 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
267
267
  // 设置优惠券使用状态
268
268
  }, {
269
269
  key: "setDiscountSelected",
270
- value: function setDiscountSelected(_ref2) {
271
- var discountId = _ref2.discountId,
272
- isSelected = _ref2.isSelected;
270
+ value: function setDiscountSelected(params) {
273
271
  // 获取当前优惠券列表
274
272
  var discountList = this.getDiscountList();
275
273
 
274
+ // 构建选择操作列表
275
+ var selectionOperations = [];
276
+
277
+ // 主要操作
278
+ selectionOperations.push({
279
+ discountId: params.discountId,
280
+ isSelected: params.isSelected
281
+ });
282
+
283
+ // 如果有批量操作列表,添加到操作列表中
284
+ if (params.selectedList && params.selectedList.length > 0) {
285
+ selectionOperations.push.apply(selectionOperations, _toConsumableArray(params.selectedList));
286
+ }
287
+
288
+ // 创建选择状态映射(去重处理,后面的操作会覆盖前面的)
289
+ var selectionMap = new Map();
290
+ selectionOperations.forEach(function (operation) {
291
+ selectionMap.set(operation.discountId, operation.isSelected);
292
+ });
293
+
276
294
  // 找到需要修改状态的优惠券
277
295
  var newDiscountList = discountList.map(function (discount) {
278
- if (discount.id === discountId) {
296
+ if (selectionMap.has(discount.id)) {
297
+ var targetIsSelected = selectionMap.get(discount.id);
279
298
  return _objectSpread(_objectSpread({}, discount), {}, {
280
- isSelected: isSelected,
299
+ isSelected: targetIsSelected,
281
300
  // 手动设置不使用
282
- isManualSelect: !isSelected
301
+ isManualSelect: !targetIsSelected
283
302
  });
284
303
  }
285
304
  return _objectSpread(_objectSpread({}, discount), {}, {
@@ -289,12 +308,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
289
308
 
290
309
  // 更新优惠券列表
291
310
  this.setDiscountList(newDiscountList);
292
-
293
- // 如果取消选择优惠券,需要重新计算其他可用优惠券
294
- return this.calcDiscount(this.store.productList || [], {
295
- discountId: discountId,
296
- isSelected: isSelected
297
- });
311
+ return this.calcDiscount(this.store.productList || [], params);
298
312
  }
299
313
  }, {
300
314
  key: "setProductList",
@@ -307,7 +321,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
307
321
  key: "scanCode",
308
322
  value: function () {
309
323
  var _scanCode = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(code, customerId) {
310
- var _this$store$discount3, resultDiscountList, rulesModule, withScanList, _ref3, newProductList, newDiscountList, isAvailable, _this$options$otherPa6;
324
+ var _this$store$discount3, resultDiscountList, rulesModule, withScanList, _ref2, newProductList, newDiscountList, isAvailable, _this$options$otherPa6;
311
325
  return _regeneratorRuntime().wrap(function _callee5$(_context5) {
312
326
  while (1) switch (_context5.prev = _context5.next) {
313
327
  case 0:
@@ -351,7 +365,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
351
365
  isScan: true
352
366
  });
353
367
  });
354
- _ref3 = rulesModule.isDiscountListAvailable({
368
+ _ref2 = rulesModule.isDiscountListAvailable({
355
369
  productList: this.store.productList || [],
356
370
  oldDiscountList: this.getDiscountList(),
357
371
  newDiscountList: withScanList
@@ -359,7 +373,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
359
373
  isAvailable: false,
360
374
  productList: this.store.productList || [],
361
375
  discountList: this.getDiscountList()
362
- }, newProductList = _ref3.productList, newDiscountList = _ref3.discountList, isAvailable = _ref3.isAvailable;
376
+ }, newProductList = _ref2.productList, newDiscountList = _ref2.discountList, isAvailable = _ref2.isAvailable;
363
377
  if (!isAvailable) {
364
378
  _context5.next = 21;
365
379
  break;
@@ -24,3 +24,11 @@ export interface ShopDiscountState {
24
24
  productList: Record<string, any>[];
25
25
  originalDiscountList: Discount[];
26
26
  }
27
+ export interface SetDiscountSelectedParams {
28
+ discountId: number;
29
+ isSelected: boolean;
30
+ selectedList?: {
31
+ discountId: number;
32
+ isSelected: boolean;
33
+ }[];
34
+ }
@@ -524,7 +524,7 @@ var PaymentModule = class extends import_BaseModule.BaseModule {
524
524
  type: paymentItem.type,
525
525
  amount: formatAmount(paymentItem.amount),
526
526
  voucher_id: paymentItem.voucher_id || "",
527
- rounding_amount: "0.00",
527
+ rounding_amount: paymentItem.rounding_amount || "0.00",
528
528
  service_charge: paymentItem.service_charge,
529
529
  status: "active",
530
530
  // 新支付项默认为活跃状态
@@ -216,6 +216,8 @@ export interface PaymentItemInput {
216
216
  percentage?: string;
217
217
  amount?: string;
218
218
  };
219
+ /** 舍入金额 */
220
+ rounding_amount?: string;
219
221
  }
220
222
  /**
221
223
  * 推送支付项参数
@@ -2,6 +2,7 @@ import { Module, PisellCore, ModuleOptions } from '../../types';
2
2
  import { BaseModule } from '../BaseModule';
3
3
  import { Rules, RulesModuleAPI, DiscountResult } from './types';
4
4
  import { Discount } from "../Discount/types";
5
+ import { SetDiscountSelectedParams } from '../../solution/ShopDiscount/types';
5
6
  export declare class RulesModule extends BaseModule implements Module, RulesModuleAPI {
6
7
  protected defaultName: string;
7
8
  protected defaultVersion: string;
@@ -26,6 +27,7 @@ export declare class RulesModule extends BaseModule implements Module, RulesModu
26
27
  }, options?: {
27
28
  isSelected?: boolean;
28
29
  discountId?: number;
30
+ selectedList?: SetDiscountSelectedParams[];
29
31
  scan?: boolean;
30
32
  }): DiscountResult;
31
33
  destroy(): Promise<void>;
@@ -212,7 +212,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
212
212
  });
213
213
  console.log(sortedProductList, "sortedProductListsortedProductList");
214
214
  sortedProductList.forEach((originProduct, i) => {
215
- var _a, _b, _c, _d, _e, _f, _g, _h;
215
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
216
216
  const product = this.hooks.getProduct(originProduct);
217
217
  if ((product == null ? void 0 : product.booking_id) && ((_a = product.discount_list) == null ? void 0 : _a.length) && ((_b = product == null ? void 0 : product.discount_list) == null ? void 0 : _b.every((discount) => discount.id && ["good_pass", "discount_card", "product_discount_card"].includes(discount.tag || discount.type)))) {
218
218
  processedProductsMap.set(product._id, [originProduct]);
@@ -247,6 +247,15 @@ var RulesModule = class extends import_BaseModule.BaseModule {
247
247
  }))) {
248
248
  isManualDiscount = false;
249
249
  }
250
+ if ((options == null ? void 0 : options.selectedList) && ((_g = product.discount_list) == null ? void 0 : _g.some((item) => {
251
+ var _a2;
252
+ return (_a2 = options == null ? void 0 : options.selectedList) == null ? void 0 : _a2.some((n) => {
253
+ var _a3;
254
+ return n.discountId === ((_a3 = item.discount) == null ? void 0 : _a3.resource_id);
255
+ });
256
+ }))) {
257
+ isManualDiscount = false;
258
+ }
250
259
  if (applicableDiscounts.length === 0 || isManualDiscount || (0, import_lodash_es.isBoolean)(product.vouchersApplicable) && !product.vouchersApplicable) {
251
260
  if (product.isClient) {
252
261
  processedProductsMap.set(
@@ -307,10 +316,10 @@ var RulesModule = class extends import_BaseModule.BaseModule {
307
316
  usedDiscounts.set(selectedDiscount2.id, true);
308
317
  const appliedProducts = appliedDiscountProducts.get(selectedDiscount2.id) || [];
309
318
  let productOriginTotal = product.origin_total || product.total || 0;
310
- if (((_g = product.discount_list) == null ? void 0 : _g.length) && product.origin_total) {
319
+ if (((_h = product.discount_list) == null ? void 0 : _h.length) && product.origin_total) {
311
320
  productOriginTotal = product.origin_total;
312
321
  }
313
- if (Number(((_h = originProduct == null ? void 0 : originProduct._productInit) == null ? void 0 : _h.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
322
+ if (Number(((_i = originProduct == null ? void 0 : originProduct._productInit) == null ? void 0 : _i.original_price) || 0) > 0 && product.origin_total && product.total && product.origin_total !== product.total) {
314
323
  productOriginTotal = product.total;
315
324
  }
316
325
  const targetProductTotal = selectedDiscount2.tag === "good_pass" ? new import_decimal.default(productOriginTotal).minus(new import_decimal.default(product.price || 0)).toNumber() : new import_decimal.default(100).minus(selectedDiscount2.par_value || 0).div(100).mul(new import_decimal.default(productOriginTotal)).toNumber();
@@ -923,7 +923,9 @@ var CheckoutImpl = class extends import_BaseModule.BaseModule {
923
923
  name: paymentItem.name,
924
924
  type: paymentItem.type,
925
925
  amount: paymentItem.amount,
926
- service_charge: paymentItem.service_charge
926
+ service_charge: paymentItem.service_charge,
927
+ rounding_amount: paymentItem.rounding_amount,
928
+ voucher_id: paymentItem.voucher_id
927
929
  }
928
930
  });
929
931
  await this.payment.addPaymentItemAsync(
@@ -1,6 +1,6 @@
1
1
  import { Module, PisellCore } from '../../types';
2
2
  import { BaseModule } from '../../modules/BaseModule';
3
- import { Customer } from './types';
3
+ import { Customer, SetDiscountSelectedParams } from './types';
4
4
  import { Discount } from '../../modules/Discount/types';
5
5
  export declare class ShopDiscountImpl extends BaseModule implements Module {
6
6
  protected defaultName: string;
@@ -19,17 +19,11 @@ export declare class ShopDiscountImpl extends BaseModule implements Module {
19
19
  private registerDependentModules;
20
20
  private registerEventListeners;
21
21
  setCustomer(customer: Customer): Promise<void>;
22
- calcDiscount(productList: Record<string, any>[], options?: {
23
- discountId: number;
24
- isSelected: boolean;
25
- }): {
22
+ calcDiscount(productList: Record<string, any>[], options?: SetDiscountSelectedParams): {
26
23
  productList: Record<string, any>[];
27
24
  discountList: Discount[];
28
25
  };
29
- setDiscountSelected({ discountId, isSelected, }: {
30
- discountId: number;
31
- isSelected: boolean;
32
- }): {
26
+ setDiscountSelected(params: SetDiscountSelectedParams): {
33
27
  productList: Record<string, any>[];
34
28
  discountList: Discount[];
35
29
  };
@@ -174,27 +174,34 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
174
174
  };
175
175
  }
176
176
  // 设置优惠券使用状态
177
- setDiscountSelected({
178
- discountId,
179
- isSelected
180
- }) {
177
+ setDiscountSelected(params) {
181
178
  const discountList = this.getDiscountList();
179
+ const selectionOperations = [];
180
+ selectionOperations.push({
181
+ discountId: params.discountId,
182
+ isSelected: params.isSelected
183
+ });
184
+ if (params.selectedList && params.selectedList.length > 0) {
185
+ selectionOperations.push(...params.selectedList);
186
+ }
187
+ const selectionMap = /* @__PURE__ */ new Map();
188
+ selectionOperations.forEach((operation) => {
189
+ selectionMap.set(operation.discountId, operation.isSelected);
190
+ });
182
191
  const newDiscountList = discountList.map((discount) => {
183
- if (discount.id === discountId) {
192
+ if (selectionMap.has(discount.id)) {
193
+ const targetIsSelected = selectionMap.get(discount.id);
184
194
  return {
185
195
  ...discount,
186
- isSelected,
196
+ isSelected: targetIsSelected,
187
197
  // 手动设置不使用
188
- isManualSelect: !isSelected
198
+ isManualSelect: !targetIsSelected
189
199
  };
190
200
  }
191
201
  return { ...discount, isManualSelect: !(discount == null ? void 0 : discount.isSelected) };
192
202
  });
193
203
  this.setDiscountList(newDiscountList);
194
- return this.calcDiscount(this.store.productList || [], {
195
- discountId,
196
- isSelected
197
- });
204
+ return this.calcDiscount(this.store.productList || [], params);
198
205
  }
199
206
  setProductList(productList) {
200
207
  this.store.productList = productList;
@@ -24,3 +24,11 @@ export interface ShopDiscountState {
24
24
  productList: Record<string, any>[];
25
25
  originalDiscountList: Discount[];
26
26
  }
27
+ export interface SetDiscountSelectedParams {
28
+ discountId: number;
29
+ isSelected: boolean;
30
+ selectedList?: {
31
+ discountId: number;
32
+ isSelected: boolean;
33
+ }[];
34
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "0.0.238",
4
+ "version": "0.0.240",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",