@pisell/pisellos 2.1.127 → 2.1.128

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.
@@ -325,9 +325,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
325
325
  }, {
326
326
  key: "applyDiscount",
327
327
  value: function applyDiscount() {
328
- var _tempOrder$products, _this$store$discount6, _tempOrder$holder3, _tempOrder$holder4;
328
+ var _this$store$discount6, _tempOrder$holder3, _tempOrder$holder4;
329
329
  var tempOrder = this.store.tempOrder;
330
- if (!(tempOrder !== null && tempOrder !== void 0 && (_tempOrder$products = tempOrder.products) !== null && _tempOrder$products !== void 0 && _tempOrder$products.length)) return;
330
+ // 任意 products CRUD 后都应当重算 discount 状态;即使 products 为空,
331
+ // 也需要让 Rules.calcDiscount 把 DiscountModule 的 isSelected / isAvailable /
332
+ // appliedProductDetails / savedAmount 以及 tempOrder.discount_list 复位。
333
+ if (!tempOrder) return;
331
334
  var rulesModule = this.store.rules;
332
335
  if (!rulesModule) return;
333
336
  var discountList = ((_this$store$discount6 = this.store.discount) === null || _this$store$discount6 === void 0 ? void 0 : _this$store$discount6.getDiscountList()) || [];
@@ -71,7 +71,7 @@ export declare function formatV1Product(products: ScanOrderSubmitProduct[]): {
71
71
  option: any[];
72
72
  product_id: number | null;
73
73
  product_variant_id: number;
74
- quantity: number;
74
+ num: number;
75
75
  rowKey: number | null;
76
76
  session: null;
77
77
  unique: string;
@@ -382,7 +382,7 @@ export function formatV1Product(products) {
382
382
  option: product.product_option_item,
383
383
  product_id: product.product_id,
384
384
  product_variant_id: product.product_variant_id,
385
- quantity: product.num,
385
+ num: product.num,
386
386
  rowKey: product.product_id,
387
387
  session: null,
388
388
  unique: createUuidV4()
@@ -1248,7 +1248,7 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
1248
1248
  break;
1249
1249
  }
1250
1250
  sellingPrice = toPriceString((_sourceItem$price = sourceItem === null || sourceItem === void 0 ? void 0 : sourceItem.price) !== null && _sourceItem$price !== void 0 ? _sourceItem$price : sourceItem === null || sourceItem === void 0 ? void 0 : sourceItem.selling_price, '0.00');
1251
- tempOrder.products.push(normalizeOrderProduct({
1251
+ tempOrder.products.push(normalizeOrderProduct(_objectSpread(_objectSpread({}, sourceItem), {}, {
1252
1252
  product_id: productId,
1253
1253
  product_variant_id: productVariantId,
1254
1254
  num: targetQuantity,
@@ -1262,7 +1262,7 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
1262
1262
  item_rule_prefill: true,
1263
1263
  item_rule_id: prefillItem.ruleId
1264
1264
  })
1265
- }));
1265
+ })));
1266
1266
  hasChanges = true;
1267
1267
  return _context20.abrupt("continue", 45);
1268
1268
  case 38:
@@ -1300,25 +1300,27 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
1300
1300
  return _context20.finish(52);
1301
1301
  case 55:
1302
1302
  if (!hasChanges) {
1303
- _context20.next = 59;
1303
+ _context20.next = 60;
1304
1304
  break;
1305
1305
  }
1306
- _context20.next = 58;
1306
+ // Prefill 属于 products CRUD 的一种形式:新增后让 Rules 重算,以支持自动应用可用优惠券。
1307
+ this.store.order.applyDiscount();
1308
+ _context20.next = 59;
1307
1309
  return this.store.order.recalculateSummary({
1308
1310
  createIfMissing: true
1309
1311
  });
1310
- case 58:
1311
- this.store.order.persistTempOrder();
1312
1312
  case 59:
1313
- _context20.next = 61;
1313
+ this.store.order.persistTempOrder();
1314
+ case 60:
1315
+ _context20.next = 62;
1314
1316
  return this.refreshItemRuleQuantityLimits();
1315
- case 61:
1317
+ case 62:
1316
1318
  this.itemRulePrefillApplied = true;
1317
1319
  this.logMethodSuccess('applyPrefillByItemRule', {
1318
1320
  prefillCount: prefillItems.length,
1319
1321
  hasChanges: hasChanges
1320
1322
  });
1321
- case 63:
1323
+ case 64:
1322
1324
  case "end":
1323
1325
  return _context20.stop();
1324
1326
  }
@@ -2747,25 +2747,27 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
2747
2747
  return _context36.finish(50);
2748
2748
  case 53:
2749
2749
  if (!hasChanges) {
2750
- _context36.next = 57;
2750
+ _context36.next = 58;
2751
2751
  break;
2752
2752
  }
2753
- _context36.next = 56;
2753
+ // Prefill 属于 products CRUD 的一种形式:新增后让 Rules 重算,以支持自动应用可用优惠券。
2754
+ this.store.order.applyDiscount();
2755
+ _context36.next = 57;
2754
2756
  return this.store.order.recalculateSummary({
2755
2757
  createIfMissing: true
2756
2758
  });
2757
- case 56:
2758
- this.store.order.persistTempOrder();
2759
2759
  case 57:
2760
- _context36.next = 59;
2760
+ this.store.order.persistTempOrder();
2761
+ case 58:
2762
+ _context36.next = 60;
2761
2763
  return this.refreshItemRuleQuantityLimits();
2762
- case 59:
2764
+ case 60:
2763
2765
  this.itemRulePrefillApplied = true;
2764
2766
  this.logMethodSuccess('applyPrefillByItemRule', {
2765
2767
  prefillCount: prefillItems.length,
2766
2768
  hasChanges: hasChanges
2767
2769
  });
2768
- case 61:
2770
+ case 62:
2769
2771
  case "end":
2770
2772
  return _context36.stop();
2771
2773
  }
@@ -1,49 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
-
29
- // src/model/strategy/adapter/promotion/index.ts
30
- var promotion_exports = {};
31
- __export(promotion_exports, {
32
- BUY_X_GET_Y_FREE_STRATEGY: () => import_examples.BUY_X_GET_Y_FREE_STRATEGY,
33
- PromotionAdapter: () => import_adapter.PromotionAdapter,
34
- PromotionEvaluator: () => import_evaluator.PromotionEvaluator,
35
- X_ITEMS_FOR_Y_PRICE_STRATEGY: () => import_examples.X_ITEMS_FOR_Y_PRICE_STRATEGY,
36
- default: () => import_adapter2.default
37
- });
38
- module.exports = __toCommonJS(promotion_exports);
39
- var import_evaluator = require("./evaluator");
40
- var import_adapter = require("./adapter");
41
- var import_adapter2 = __toESM(require("./adapter"));
42
- var import_examples = require("./examples");
43
- // Annotate the CommonJS export names for ESM import in node:
44
- 0 && (module.exports = {
45
- BUY_X_GET_Y_FREE_STRATEGY,
46
- PromotionAdapter,
47
- PromotionEvaluator,
48
- X_ITEMS_FOR_Y_PRICE_STRATEGY
49
- });
@@ -231,27 +231,27 @@ var OrderModule = class extends import_BaseModule.BaseModule {
231
231
  };
232
232
  }
233
233
  applyDiscount() {
234
- var _a, _b, _c, _d, _e;
234
+ var _a, _b, _c, _d;
235
235
  const tempOrder = this.store.tempOrder;
236
- if (!((_a = tempOrder == null ? void 0 : tempOrder.products) == null ? void 0 : _a.length))
236
+ if (!tempOrder)
237
237
  return;
238
238
  const rulesModule = this.store.rules;
239
239
  if (!rulesModule)
240
240
  return;
241
- const discountList = ((_b = this.store.discount) == null ? void 0 : _b.getDiscountList()) || [];
242
- const holders = ((_c = tempOrder.holder) == null ? void 0 : _c.form_record_id) ? [{ form_record_id: tempOrder.holder.form_record_id }] : [];
241
+ const discountList = ((_a = this.store.discount) == null ? void 0 : _a.getDiscountList()) || [];
242
+ const holders = ((_b = tempOrder.holder) == null ? void 0 : _b.form_record_id) ? [{ form_record_id: tempOrder.holder.form_record_id }] : [];
243
243
  const result = rulesModule.calcDiscount({
244
244
  productList: tempOrder.products,
245
245
  discountList,
246
246
  holders,
247
- isFormSubject: !!((_d = tempOrder.holder) == null ? void 0 : _d.type) && tempOrder.holder.type === "form"
247
+ isFormSubject: !!((_c = tempOrder.holder) == null ? void 0 : _c.type) && tempOrder.holder.type === "form"
248
248
  });
249
249
  if (result == null ? void 0 : result.productList) {
250
250
  tempOrder.products = result.productList;
251
251
  }
252
252
  if (result == null ? void 0 : result.discountList) {
253
253
  OrderModule.populateSavedAmounts(result.productList || tempOrder.products, result.discountList);
254
- (_e = this.store.discount) == null ? void 0 : _e.setDiscountList(result.discountList);
254
+ (_d = this.store.discount) == null ? void 0 : _d.setDiscountList(result.discountList);
255
255
  tempOrder.discount_list = result.discountList.filter((d) => d.isSelected);
256
256
  }
257
257
  }
@@ -71,7 +71,7 @@ export declare function formatV1Product(products: ScanOrderSubmitProduct[]): {
71
71
  option: any[];
72
72
  product_id: number | null;
73
73
  product_variant_id: number;
74
- quantity: number;
74
+ num: number;
75
75
  rowKey: number | null;
76
76
  session: null;
77
77
  unique: string;
@@ -364,7 +364,7 @@ function formatV1Product(products) {
364
364
  option: product.product_option_item,
365
365
  product_id: product.product_id,
366
366
  product_variant_id: product.product_variant_id,
367
- quantity: product.num,
367
+ num: product.num,
368
368
  rowKey: product.product_id,
369
369
  session: null,
370
370
  unique: createUuidV4()
@@ -707,6 +707,7 @@ var ScanOrderImpl = class extends import_BaseModule.BaseModule {
707
707
  );
708
708
  tempOrder.products.push(
709
709
  (0, import_utils.normalizeOrderProduct)({
710
+ ...sourceItem,
710
711
  product_id: productId,
711
712
  product_variant_id: productVariantId,
712
713
  num: targetQuantity,
@@ -752,6 +753,7 @@ var ScanOrderImpl = class extends import_BaseModule.BaseModule {
752
753
  }
753
754
  }
754
755
  if (hasChanges) {
756
+ this.store.order.applyDiscount();
755
757
  await this.store.order.recalculateSummary({ createIfMissing: true });
756
758
  this.store.order.persistTempOrder();
757
759
  }
@@ -1541,6 +1541,7 @@ var _VenueBookingImpl = class extends import_BaseModule.BaseModule {
1541
1541
  }
1542
1542
  }
1543
1543
  if (hasChanges) {
1544
+ this.store.order.applyDiscount();
1544
1545
  await this.store.order.recalculateSummary({ createIfMissing: true });
1545
1546
  this.store.order.persistTempOrder();
1546
1547
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": false,
3
3
  "name": "@pisell/pisellos",
4
- "version": "2.1.127",
4
+ "version": "2.1.128",
5
5
  "description": "一个可扩展的前端模块化SDK框架,支持插件系统",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",