@pisell/pisellos 2.2.172 → 2.2.174

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 (34) hide show
  1. package/dist/modules/Order/index.d.ts +6 -21
  2. package/dist/modules/Order/index.js +56 -103
  3. package/dist/modules/Order/types.d.ts +3 -2
  4. package/dist/modules/Order/utils.d.ts +16 -0
  5. package/dist/modules/Order/utils.js +82 -2
  6. package/dist/modules/Quotation/index.d.ts +0 -1
  7. package/dist/modules/Quotation/index.js +8 -17
  8. package/dist/server/modules/products/index.d.ts +1 -1
  9. package/dist/server/modules/products/index.js +128 -112
  10. package/dist/solution/BaseSales/index.d.ts +4 -16
  11. package/dist/solution/BaseSales/index.js +178 -104
  12. package/dist/solution/BaseSales/types.d.ts +14 -0
  13. package/dist/solution/BaseSales/utils/quotationPrice.js +95 -17
  14. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +4 -2
  15. package/dist/solution/BookingByStep/index.d.ts +1 -1
  16. package/dist/solution/BookingTicket/index.js +10 -2
  17. package/lib/model/strategy/adapter/promotion/index.js +49 -0
  18. package/lib/modules/Order/index.d.ts +6 -21
  19. package/lib/modules/Order/index.js +55 -100
  20. package/lib/modules/Order/types.d.ts +3 -2
  21. package/lib/modules/Order/utils.d.ts +16 -0
  22. package/lib/modules/Order/utils.js +54 -2
  23. package/lib/modules/Quotation/index.d.ts +0 -1
  24. package/lib/modules/Quotation/index.js +1 -9
  25. package/lib/server/modules/products/index.d.ts +1 -1
  26. package/lib/server/modules/products/index.js +26 -15
  27. package/lib/solution/BaseSales/index.d.ts +4 -16
  28. package/lib/solution/BaseSales/index.js +71 -35
  29. package/lib/solution/BaseSales/types.d.ts +14 -0
  30. package/lib/solution/BaseSales/utils/quotationPrice.js +90 -14
  31. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +1 -1
  32. package/lib/solution/BookingByStep/index.d.ts +1 -1
  33. package/lib/solution/BookingTicket/index.js +8 -0
  34. package/package.json +1 -1
@@ -64,6 +64,8 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
64
64
  _defineProperty(_assertThisInitialized(_this), "request", void 0);
65
65
  // 当前缓存中已加载的最新 SalesDetail;只读 getter 走它对外暴露详情数据。
66
66
  _defineProperty(_assertThisInitialized(_this), "currentSalesDetail", null);
67
+ _defineProperty(_assertThisInitialized(_this), "discountConfigCacheKey", null);
68
+ _defineProperty(_assertThisInitialized(_this), "hasManualDiscountSelection", false);
67
69
  return _this;
68
70
  }
69
71
 
@@ -678,14 +680,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
678
680
  return this.store.order.updateTempOrderContactsInfo(contactsInfo);
679
681
  }
680
682
 
681
- /**
682
- * 运行时切换 tempOrder 是否写入 localStorage(委托 OrderModule)。
683
- * SalesSdk 等内存态场景可在挂载后设为 false,避免污染本地缓存。
684
- *
685
- * @example
686
- * bookingTicket.setEnableTempOrderPersist(false);
687
- * await bookingTicket.addProductToOrder(product);
688
- */
683
+ /** @deprecated OrderModule 不再负责 tempOrder localStorage 持久化。 */
689
684
  }, {
690
685
  key: "setEnableTempOrderPersist",
691
686
  value: function setEnableTempOrderPersist(enabled) {
@@ -693,18 +688,11 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
693
688
  this.store.order.setEnableTempOrderPersist(enabled);
694
689
  }
695
690
 
696
- /**
697
- * 读取当前 tempOrder localStorage 持久化开关(委托 OrderModule)。
698
- *
699
- * @example
700
- * if (bookingTicket.isTempOrderPersistEnabled()) {
701
- * bookingTicket.restoreOrder();
702
- * }
703
- */
691
+ /** @deprecated OrderModule 不再负责 tempOrder localStorage 持久化。 */
704
692
  }, {
705
693
  key: "isTempOrderPersistEnabled",
706
694
  value: function isTempOrderPersistEnabled() {
707
- if (!this.store.order) return true;
695
+ if (!this.store.order) return false;
708
696
  return this.store.order.isTempOrderPersistEnabled();
709
697
  }
710
698
  }, {
@@ -802,29 +790,31 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
802
790
  // this.store.resource = null;
803
791
  tempOrder = this.store.order.restoreOrder();
804
792
  this.currentSalesDetail = null;
805
- _context8.next = 7;
793
+ this.discountConfigCacheKey = null;
794
+ this.hasManualDiscountSelection = false;
795
+ _context8.next = 9;
806
796
  return this.effectsEmit('onTempOrderReplaced', {
807
797
  tempOrder: tempOrder
808
798
  });
809
- case 7:
799
+ case 9:
810
800
  if (!this.syncAppDataToTempOrder(tempOrder)) {
811
- _context8.next = 11;
801
+ _context8.next = 13;
812
802
  break;
813
803
  }
814
804
  this.store.order.persistTempOrder();
815
- _context8.next = 11;
805
+ _context8.next = 13;
816
806
  return this.store.order.saveDraft();
817
- case 11:
807
+ case 13:
818
808
  return _context8.abrupt("return", tempOrder);
819
- case 14:
820
- _context8.prev = 14;
809
+ case 16:
810
+ _context8.prev = 16;
821
811
  _context8.t0 = _context8["catch"](0);
822
812
  throw _context8.t0;
823
- case 17:
813
+ case 19:
824
814
  case "end":
825
815
  return _context8.stop();
826
816
  }
827
- }, _callee8, this, [[0, 14]]);
817
+ }, _callee8, this, [[0, 16]]);
828
818
  }));
829
819
  function restoreOrder() {
830
820
  return _restoreOrder.apply(this, arguments);
@@ -1025,8 +1015,8 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1025
1015
  key: "loadDiscountConfig",
1026
1016
  value: function () {
1027
1017
  var _loadDiscountConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(params) {
1028
- var _this$getOrderIdentit, _tempOrder$customer, _tempOrder$_extend, _tempOrder$_extend2, _discountModule$getDi, _discountModule$getDi2;
1029
- var tempOrder, orderStore, discountModule, rulesModule, orderId, customerId, currentDiscountList, preparedDiscountList, _discountModule$setOr, nextDiscountList, _tempOrder$holder, _tempOrder$holder2, _orderStore$summary, holders, result;
1018
+ var _this$getOrderIdentit, _tempOrder$customer, _tempOrder$_extend, _tempOrder$_extend2, _discountModule$getDi, _discountModule$getOr, _discountModule$getDi2;
1019
+ var tempOrder, orderStore, discountModule, rulesModule, orderId, customerId, currentDiscountList, originalDiscountList, hasManualDiscountSelection, discountAction, discountConfigCacheKey, preparedDiscountList, _discountModule$setOr, nextDiscountList, _tempOrder$holder, _tempOrder$holder2, _orderStore$summary, holders, result, _iterator, _step, _product$metadata, _tempOrder$_extend3, _product$metadata2, _product$metadata$sou, _product$metadata3, _product$metadata4, _product$original_pri, product, productUid, runtimeOrigin, totalPerUnitDiscount, optionSum, sourcePrice, newSourceSellingPrice, newMainSellingPrice, summary;
1030
1020
  return _regeneratorRuntime().wrap(function _callee11$(_context11) {
1031
1021
  while (1) switch (_context11.prev = _context11.next) {
1032
1022
  case 0:
@@ -1043,30 +1033,54 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1043
1033
  orderId = tempOrder.order_id || ((_this$getOrderIdentit = this.getOrderIdentity) === null || _this$getOrderIdentit === void 0 || (_this$getOrderIdentit = _this$getOrderIdentit.call(this)) === null || _this$getOrderIdentit === void 0 ? void 0 : _this$getOrderIdentit.orderId);
1044
1034
  customerId = Number((params === null || params === void 0 ? void 0 : params.customerId) || tempOrder.customer_id || ((_tempOrder$customer = tempOrder.customer) === null || _tempOrder$customer === void 0 ? void 0 : _tempOrder$customer.id) || ((_tempOrder$_extend = tempOrder._extend) === null || _tempOrder$_extend === void 0 || (_tempOrder$_extend = _tempOrder$_extend.customerSnapshot) === null || _tempOrder$_extend === void 0 ? void 0 : _tempOrder$_extend.id) || ((_tempOrder$_extend2 = tempOrder._extend) === null || _tempOrder$_extend2 === void 0 || (_tempOrder$_extend2 = _tempOrder$_extend2.customerSnapshot) === null || _tempOrder$_extend2 === void 0 ? void 0 : _tempOrder$_extend2.customer_id) || 0);
1045
1035
  currentDiscountList = (discountModule === null || discountModule === void 0 || (_discountModule$getDi = discountModule.getDiscountList) === null || _discountModule$getDi === void 0 ? void 0 : _discountModule$getDi.call(discountModule)) || [];
1036
+ originalDiscountList = (discountModule === null || discountModule === void 0 || (_discountModule$getOr = discountModule.getOriginalDiscountList) === null || _discountModule$getOr === void 0 ? void 0 : _discountModule$getOr.call(discountModule)) || [];
1037
+ hasManualDiscountSelection = this.hasManualDiscountSelection || currentDiscountList.some(function (discount) {
1038
+ return discount.isManualSelect;
1039
+ });
1040
+ discountAction = (params === null || params === void 0 ? void 0 : params.action) || (orderId ? 'edit' : 'create');
1041
+ discountConfigCacheKey = [customerId, discountAction, Number(orderId) || 0].join(':');
1046
1042
  preparedDiscountList = [];
1047
1043
  if (!(customerId && customerId !== 1)) {
1048
- _context11.next = 16;
1044
+ _context11.next = 25;
1045
+ break;
1046
+ }
1047
+ if (!(this.discountConfigCacheKey === discountConfigCacheKey)) {
1048
+ _context11.next = 19;
1049
1049
  break;
1050
1050
  }
1051
- _context11.next = 13;
1051
+ preparedDiscountList = originalDiscountList;
1052
+ _context11.next = 25;
1053
+ break;
1054
+ case 19:
1055
+ _context11.next = 21;
1052
1056
  return this.store.order.loadDiscountConfig({
1053
1057
  customerId: customerId,
1054
- action: (params === null || params === void 0 ? void 0 : params.action) || (orderId ? 'edit' : 'create'),
1058
+ action: discountAction,
1055
1059
  orderId: Number(orderId) || undefined,
1056
1060
  apply: false
1057
1061
  });
1058
- case 13:
1062
+ case 21:
1059
1063
  preparedDiscountList = _context11.sent;
1060
- _context11.next = 16;
1064
+ this.discountConfigCacheKey = discountConfigCacheKey;
1065
+ _context11.next = 25;
1061
1066
  return discountModule === null || discountModule === void 0 || (_discountModule$setOr = discountModule.setOriginalDiscountList) === null || _discountModule$setOr === void 0 ? void 0 : _discountModule$setOr.call(discountModule, preparedDiscountList);
1062
- case 16:
1067
+ case 25:
1068
+ if (!(hasManualDiscountSelection && currentDiscountList.length)) {
1069
+ _context11.next = 27;
1070
+ break;
1071
+ }
1072
+ return _context11.abrupt("return", {
1073
+ productList: tempOrder.products || [],
1074
+ discountList: currentDiscountList
1075
+ });
1076
+ case 27:
1063
1077
  nextDiscountList = this.mergeHistoricalDiscountList(preparedDiscountList || (discountModule === null || discountModule === void 0 || (_discountModule$getDi2 = discountModule.getDiscountList) === null || _discountModule$getDi2 === void 0 ? void 0 : _discountModule$getDi2.call(discountModule)) || [], tempOrder.products || []);
1064
1078
  nextDiscountList = this.mergeCurrentDiscountSelectionState(nextDiscountList, currentDiscountList);
1065
- _context11.next = 20;
1079
+ _context11.next = 31;
1066
1080
  return discountModule === null || discountModule === void 0 ? void 0 : discountModule.setDiscountList(nextDiscountList);
1067
- case 20:
1081
+ case 31:
1068
1082
  if (!rulesModule) {
1069
- _context11.next = 30;
1083
+ _context11.next = 67;
1070
1084
  break;
1071
1085
  }
1072
1086
  holders = (_tempOrder$holder = tempOrder.holder) !== null && _tempOrder$holder !== void 0 && _tempOrder$holder.form_record_id ? [{
@@ -1085,37 +1099,90 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1085
1099
  if (result.productList) {
1086
1100
  tempOrder.products = result.productList;
1087
1101
  }
1102
+ _iterator = _createForOfIteratorHelper(tempOrder.products || []);
1103
+ _context11.prev = 36;
1104
+ _iterator.s();
1105
+ case 38:
1106
+ if ((_step = _iterator.n()).done) {
1107
+ _context11.next = 53;
1108
+ break;
1109
+ }
1110
+ product = _step.value;
1111
+ productUid = (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.unique_identification_number;
1112
+ runtimeOrigin = productUid ? (_tempOrder$_extend3 = tempOrder._extend) === null || _tempOrder$_extend3 === void 0 || (_tempOrder$_extend3 = _tempOrder$_extend3.productsByUid) === null || _tempOrder$_extend3 === void 0 || (_tempOrder$_extend3 = _tempOrder$_extend3[productUid]) === null || _tempOrder$_extend3 === void 0 ? void 0 : _tempOrder$_extend3.origin : undefined;
1113
+ if (!(runtimeOrigin !== null && runtimeOrigin !== void 0 && runtimeOrigin.isManualDiscount || (_product$metadata2 = product.metadata) !== null && _product$metadata2 !== void 0 && _product$metadata2.is_manual_discount)) {
1114
+ _context11.next = 44;
1115
+ break;
1116
+ }
1117
+ return _context11.abrupt("continue", 51);
1118
+ case 44:
1119
+ totalPerUnitDiscount = (product.discount_list || []).reduce(function (sum, pd) {
1120
+ return sum + Number(pd.amount || 0);
1121
+ }, 0);
1122
+ optionSum = sumOptionUnitPrice(product.product_option_item);
1123
+ sourcePrice = (_product$metadata$sou = (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.source_product_price) !== null && _product$metadata$sou !== void 0 ? _product$metadata$sou : ((_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
1124
+ newSourceSellingPrice = new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount).toDecimalPlaces(2).toString();
1125
+ newMainSellingPrice = new Decimal(Number(newSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
1126
+ if (product.metadata) {
1127
+ product.metadata.main_product_selling_price = newMainSellingPrice;
1128
+ product.metadata.price_schema_version = 2;
1129
+ }
1130
+ product.selling_price = composeLinePrice({
1131
+ mainPrice: newMainSellingPrice,
1132
+ bundle: product.product_bundle
1133
+ });
1134
+ case 51:
1135
+ _context11.next = 38;
1136
+ break;
1137
+ case 53:
1138
+ _context11.next = 58;
1139
+ break;
1140
+ case 55:
1141
+ _context11.prev = 55;
1142
+ _context11.t0 = _context11["catch"](36);
1143
+ _iterator.e(_context11.t0);
1144
+ case 58:
1145
+ _context11.prev = 58;
1146
+ _iterator.f();
1147
+ return _context11.finish(58);
1148
+ case 61:
1088
1149
  if (!result.discountList) {
1089
- _context11.next = 30;
1150
+ _context11.next = 67;
1090
1151
  break;
1091
1152
  }
1092
1153
  nextDiscountList = this.mergeHistoricalDiscountList(result.discountList, tempOrder.products || []);
1093
1154
  OrderModule.populateSavedAmounts(tempOrder.products, nextDiscountList);
1094
- _context11.next = 29;
1155
+ _context11.next = 66;
1095
1156
  return discountModule === null || discountModule === void 0 ? void 0 : discountModule.setDiscountList(nextDiscountList);
1096
- case 29:
1157
+ case 66:
1097
1158
  tempOrder.discount_list = nextDiscountList.filter(function (discount) {
1098
1159
  return discount.isSelected;
1099
1160
  });
1100
- case 30:
1161
+ case 67:
1162
+ _context11.next = 69;
1163
+ return this.store.order.recalculateSummary({
1164
+ createIfMissing: true
1165
+ });
1166
+ case 69:
1167
+ summary = _context11.sent;
1101
1168
  this.store.order.persistTempOrder();
1102
- _context11.next = 33;
1169
+ _context11.next = 73;
1103
1170
  return this.effectsEmit('onDiscountApplied', {
1104
1171
  productList: tempOrder.products || [],
1105
1172
  discountList: nextDiscountList,
1106
1173
  selectedDiscountList: tempOrder.discount_list || [],
1107
1174
  tempOrder: tempOrder
1108
1175
  });
1109
- case 33:
1176
+ case 73:
1110
1177
  return _context11.abrupt("return", {
1111
1178
  productList: tempOrder.products || [],
1112
1179
  discountList: nextDiscountList
1113
1180
  });
1114
- case 34:
1181
+ case 74:
1115
1182
  case "end":
1116
1183
  return _context11.stop();
1117
1184
  }
1118
- }, _callee11, this);
1185
+ }, _callee11, this, [[36, 55, 58, 61]]);
1119
1186
  }));
1120
1187
  function loadDiscountConfig(_x5) {
1121
1188
  return _loadDiscountConfig.apply(this, arguments);
@@ -1126,8 +1193,8 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1126
1193
  key: "bestDiscount",
1127
1194
  value: function () {
1128
1195
  var _bestDiscount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12(cb) {
1129
- var _discountModule$getOr;
1130
- var tempOrder, orderStore, discountModule, rulesModule, originalDiscountList, nextDiscountList, result, _tempOrder$holder3, _tempOrder$holder4, _orderStore$summary2, holders;
1196
+ var _discountModule$getOr2, _discountModule$getDi3;
1197
+ var tempOrder, orderStore, discountModule, rulesModule, originalDiscountList, currentDiscountList, nextDiscountList, result, _tempOrder$holder3, _tempOrder$holder4, _orderStore$summary2, holders;
1131
1198
  return _regeneratorRuntime().wrap(function _callee12$(_context12) {
1132
1199
  while (1) switch (_context12.prev = _context12.next) {
1133
1200
  case 0:
@@ -1141,17 +1208,18 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1141
1208
  orderStore = this.store.order.store || {};
1142
1209
  discountModule = orderStore.discount;
1143
1210
  rulesModule = orderStore.rules;
1144
- originalDiscountList = (discountModule === null || discountModule === void 0 || (_discountModule$getOr = discountModule.getOriginalDiscountList) === null || _discountModule$getOr === void 0 ? void 0 : _discountModule$getOr.call(discountModule)) || this.getDiscountList();
1211
+ originalDiscountList = (discountModule === null || discountModule === void 0 || (_discountModule$getOr2 = discountModule.getOriginalDiscountList) === null || _discountModule$getOr2 === void 0 ? void 0 : _discountModule$getOr2.call(discountModule)) || this.getDiscountList();
1212
+ currentDiscountList = (discountModule === null || discountModule === void 0 || (_discountModule$getDi3 = discountModule.getDiscountList) === null || _discountModule$getDi3 === void 0 ? void 0 : _discountModule$getDi3.call(discountModule)) || [];
1145
1213
  nextDiscountList = this.mergeHistoricalDiscountList(originalDiscountList || [], tempOrder.products || []);
1146
1214
  result = {
1147
1215
  productList: tempOrder.products || [],
1148
1216
  discountList: nextDiscountList
1149
1217
  };
1150
- _context12.next = 11;
1218
+ _context12.next = 12;
1151
1219
  return discountModule === null || discountModule === void 0 ? void 0 : discountModule.setDiscountList(nextDiscountList);
1152
- case 11:
1220
+ case 12:
1153
1221
  if (!rulesModule) {
1154
- _context12.next = 22;
1222
+ _context12.next = 23;
1155
1223
  break;
1156
1224
  }
1157
1225
  holders = (_tempOrder$holder3 = tempOrder.holder) !== null && _tempOrder$holder3 !== void 0 && _tempOrder$holder3.form_record_id ? [{
@@ -1168,14 +1236,14 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1168
1236
  tempOrder.products = result.productList;
1169
1237
  }
1170
1238
  if (!result.discountList) {
1171
- _context12.next = 22;
1239
+ _context12.next = 23;
1172
1240
  break;
1173
1241
  }
1174
1242
  nextDiscountList = this.mergeHistoricalDiscountList(result.discountList, tempOrder.products || []);
1175
1243
  OrderModule.populateSavedAmounts(tempOrder.products, nextDiscountList);
1176
- _context12.next = 20;
1244
+ _context12.next = 21;
1177
1245
  return discountModule === null || discountModule === void 0 ? void 0 : discountModule.setDiscountList(nextDiscountList);
1178
- case 20:
1246
+ case 21:
1179
1247
  tempOrder.discount_list = nextDiscountList.filter(function (discount) {
1180
1248
  return discount.isSelected;
1181
1249
  });
@@ -1183,16 +1251,16 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1183
1251
  productList: tempOrder.products,
1184
1252
  discountList: nextDiscountList
1185
1253
  };
1186
- case 22:
1187
- _context12.next = 24;
1254
+ case 23:
1255
+ _context12.next = 25;
1188
1256
  return this.store.order.recalculateSummary({
1189
1257
  createIfMissing: true
1190
1258
  });
1191
- case 24:
1259
+ case 25:
1192
1260
  this.store.order.persistTempOrder();
1193
1261
  cb === null || cb === void 0 || cb(result);
1194
1262
  return _context12.abrupt("return", result);
1195
- case 27:
1263
+ case 28:
1196
1264
  case "end":
1197
1265
  return _context12.stop();
1198
1266
  }
@@ -1263,7 +1331,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1263
1331
  key: "setDiscountSelected",
1264
1332
  value: function () {
1265
1333
  var _setDiscountSelected = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14(params) {
1266
- var _tempOrder$holder5, list, updated, tempOrder, orderStore, discountModule, rulesModule, holders, nextDiscountList, _tempOrder$holder6, result, beforeSelectedIds, _iterator, _step, d, selectedResourceIds, _iterator2, _step2, _product$metadata, _tempOrder$_extend3, _product$metadata2, _product$metadata$sou, _product$metadata3, _product$metadata4, _product$original_pri, product, productUid, runtimeOrigin, totalPerUnitDiscount, optionSum, sourcePrice, newSourceSellingPrice, newMainSellingPrice;
1334
+ var _tempOrder$holder5, list, updated, tempOrder, orderStore, discountModule, rulesModule, holders, nextDiscountList, _tempOrder$holder6, result, beforeSelectedIds, _iterator2, _step2, d, selectedResourceIds, _iterator3, _step3, _product$metadata5, _tempOrder$_extend4, _product$metadata6, _product$metadata$sou2, _product$metadata7, _product$metadata8, _product$original_pri2, product, productUid, runtimeOrigin, totalPerUnitDiscount, optionSum, sourcePrice, newSourceSellingPrice, newMainSellingPrice;
1267
1335
  return _regeneratorRuntime().wrap(function _callee14$(_context14) {
1268
1336
  while (1) switch (_context14.prev = _context14.next) {
1269
1337
  case 0:
@@ -1281,6 +1349,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1281
1349
  isManualSelect: !params.isSelected
1282
1350
  }) : d;
1283
1351
  });
1352
+ this.hasManualDiscountSelection = true;
1284
1353
  tempOrder = this.store.order.ensureTempOrder();
1285
1354
  orderStore = this.store.order.store || {};
1286
1355
  discountModule = orderStore.discount;
@@ -1289,9 +1358,9 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1289
1358
  form_record_id: tempOrder.holder.form_record_id
1290
1359
  }] : [];
1291
1360
  nextDiscountList = updated;
1292
- _context14.next = 13;
1361
+ _context14.next = 14;
1293
1362
  return discountModule === null || discountModule === void 0 ? void 0 : discountModule.setDiscountList(updated);
1294
- case 13:
1363
+ case 14:
1295
1364
  if (rulesModule) {
1296
1365
  result = rulesModule.calcDiscount({
1297
1366
  productList: tempOrder.products,
@@ -1316,18 +1385,19 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1316
1385
  }).map(function (d) {
1317
1386
  return d.id;
1318
1387
  }));
1319
- _iterator = _createForOfIteratorHelper(nextDiscountList);
1388
+ _iterator2 = _createForOfIteratorHelper(nextDiscountList);
1320
1389
  try {
1321
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
1322
- d = _step.value;
1390
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
1391
+ d = _step2.value;
1323
1392
  if (d.isSelected && !beforeSelectedIds.has(d.id)) {
1324
1393
  d.isSelected = false;
1394
+ d.isManualSelect = true;
1325
1395
  }
1326
1396
  }
1327
1397
  } catch (err) {
1328
- _iterator.e(err);
1398
+ _iterator2.e(err);
1329
1399
  } finally {
1330
- _iterator.f();
1400
+ _iterator2.f();
1331
1401
  }
1332
1402
  }
1333
1403
  }
@@ -1337,23 +1407,23 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1337
1407
  }).map(function (d) {
1338
1408
  return d.id;
1339
1409
  }));
1340
- _iterator2 = _createForOfIteratorHelper(tempOrder.products);
1341
- _context14.prev = 16;
1342
- _iterator2.s();
1343
- case 18:
1344
- if ((_step2 = _iterator2.n()).done) {
1345
- _context14.next = 34;
1410
+ _iterator3 = _createForOfIteratorHelper(tempOrder.products);
1411
+ _context14.prev = 17;
1412
+ _iterator3.s();
1413
+ case 19:
1414
+ if ((_step3 = _iterator3.n()).done) {
1415
+ _context14.next = 35;
1346
1416
  break;
1347
1417
  }
1348
- product = _step2.value;
1349
- productUid = (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.unique_identification_number;
1350
- runtimeOrigin = productUid ? (_tempOrder$_extend3 = tempOrder._extend) === null || _tempOrder$_extend3 === void 0 || (_tempOrder$_extend3 = _tempOrder$_extend3.productsByUid) === null || _tempOrder$_extend3 === void 0 || (_tempOrder$_extend3 = _tempOrder$_extend3[productUid]) === null || _tempOrder$_extend3 === void 0 ? void 0 : _tempOrder$_extend3.origin : undefined;
1351
- if (!(runtimeOrigin !== null && runtimeOrigin !== void 0 && runtimeOrigin.isManualDiscount || (_product$metadata2 = product.metadata) !== null && _product$metadata2 !== void 0 && _product$metadata2.is_manual_discount)) {
1352
- _context14.next = 24;
1418
+ product = _step3.value;
1419
+ productUid = (_product$metadata5 = product.metadata) === null || _product$metadata5 === void 0 ? void 0 : _product$metadata5.unique_identification_number;
1420
+ runtimeOrigin = productUid ? (_tempOrder$_extend4 = tempOrder._extend) === null || _tempOrder$_extend4 === void 0 || (_tempOrder$_extend4 = _tempOrder$_extend4.productsByUid) === null || _tempOrder$_extend4 === void 0 || (_tempOrder$_extend4 = _tempOrder$_extend4[productUid]) === null || _tempOrder$_extend4 === void 0 ? void 0 : _tempOrder$_extend4.origin : undefined;
1421
+ if (!(runtimeOrigin !== null && runtimeOrigin !== void 0 && runtimeOrigin.isManualDiscount || (_product$metadata6 = product.metadata) !== null && _product$metadata6 !== void 0 && _product$metadata6.is_manual_discount)) {
1422
+ _context14.next = 25;
1353
1423
  break;
1354
1424
  }
1355
- return _context14.abrupt("continue", 32);
1356
- case 24:
1425
+ return _context14.abrupt("continue", 33);
1426
+ case 25:
1357
1427
  product.discount_list = (product.discount_list || []).filter(function (pd) {
1358
1428
  var _pd$discount$resource, _pd$discount;
1359
1429
  var rid = (_pd$discount$resource = (_pd$discount = pd.discount) === null || _pd$discount === void 0 ? void 0 : _pd$discount.resource_id) !== null && _pd$discount$resource !== void 0 ? _pd$discount$resource : pd.id;
@@ -1366,7 +1436,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1366
1436
  return sum + (pd.amount || 0);
1367
1437
  }, 0); // TODO 这块逻辑需要拿掉
1368
1438
  optionSum = sumOptionUnitPrice(product.product_option_item);
1369
- sourcePrice = (_product$metadata$sou = (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.source_product_price) !== null && _product$metadata$sou !== void 0 ? _product$metadata$sou : ((_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
1439
+ sourcePrice = (_product$metadata$sou2 = (_product$metadata7 = product.metadata) === null || _product$metadata7 === void 0 ? void 0 : _product$metadata7.source_product_price) !== null && _product$metadata$sou2 !== void 0 ? _product$metadata$sou2 : ((_product$metadata8 = product.metadata) === null || _product$metadata8 === void 0 ? void 0 : _product$metadata8.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri2 = product.original_price) !== null && _product$original_pri2 !== void 0 ? _product$original_pri2 : '0';
1370
1440
  newSourceSellingPrice = new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount).toDecimalPlaces(2).toString();
1371
1441
  newMainSellingPrice = new Decimal(Number(newSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
1372
1442
  if (product.metadata) {
@@ -1377,33 +1447,33 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1377
1447
  mainPrice: newMainSellingPrice,
1378
1448
  bundle: product.product_bundle
1379
1449
  });
1380
- case 32:
1381
- _context14.next = 18;
1450
+ case 33:
1451
+ _context14.next = 19;
1382
1452
  break;
1383
- case 34:
1384
- _context14.next = 39;
1453
+ case 35:
1454
+ _context14.next = 40;
1385
1455
  break;
1386
- case 36:
1387
- _context14.prev = 36;
1388
- _context14.t0 = _context14["catch"](16);
1389
- _iterator2.e(_context14.t0);
1390
- case 39:
1391
- _context14.prev = 39;
1392
- _iterator2.f();
1393
- return _context14.finish(39);
1394
- case 42:
1456
+ case 37:
1457
+ _context14.prev = 37;
1458
+ _context14.t0 = _context14["catch"](17);
1459
+ _iterator3.e(_context14.t0);
1460
+ case 40:
1461
+ _context14.prev = 40;
1462
+ _iterator3.f();
1463
+ return _context14.finish(40);
1464
+ case 43:
1395
1465
  OrderModule.populateSavedAmounts(tempOrder.products, nextDiscountList);
1396
- _context14.next = 45;
1466
+ _context14.next = 46;
1397
1467
  return discountModule === null || discountModule === void 0 ? void 0 : discountModule.setDiscountList(nextDiscountList);
1398
- case 45:
1468
+ case 46:
1399
1469
  tempOrder.discount_list = (nextDiscountList || []).filter(function (d) {
1400
1470
  return d.isSelected;
1401
1471
  });
1402
- _context14.next = 48;
1472
+ _context14.next = 49;
1403
1473
  return this.store.order.recalculateSummary({
1404
1474
  createIfMissing: true
1405
1475
  });
1406
- case 48:
1476
+ case 49:
1407
1477
  this.store.order.persistTempOrder();
1408
1478
  this.effectsEmit('onDiscountApplied', {
1409
1479
  productList: tempOrder.products,
@@ -1411,17 +1481,17 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1411
1481
  selectedDiscountList: tempOrder.discount_list,
1412
1482
  tempOrder: tempOrder
1413
1483
  });
1414
- _context14.next = 55;
1484
+ _context14.next = 56;
1415
1485
  break;
1416
- case 52:
1417
- _context14.prev = 52;
1486
+ case 53:
1487
+ _context14.prev = 53;
1418
1488
  _context14.t1 = _context14["catch"](0);
1419
1489
  throw _context14.t1;
1420
- case 55:
1490
+ case 56:
1421
1491
  case "end":
1422
1492
  return _context14.stop();
1423
1493
  }
1424
- }, _callee14, this, [[0, 52], [16, 36, 39, 42]]);
1494
+ }, _callee14, this, [[0, 53], [17, 37, 40, 43]]);
1425
1495
  }));
1426
1496
  function setDiscountSelected(_x9) {
1427
1497
  return _setDiscountSelected.apply(this, arguments);
@@ -1701,10 +1771,14 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
1701
1771
  }, {
1702
1772
  key: "getWalletProductList",
1703
1773
  value: function getWalletProductList() {
1704
- var _this$store$order3, _tempOrder$products;
1774
+ var _this$store$order3, _tempOrder$products, _tempOrder$products2;
1705
1775
  var tempOrder = (_this$store$order3 = this.store.order) === null || _this$store$order3 === void 0 ? void 0 : _this$store$order3.getTempOrder();
1706
1776
  if (!(tempOrder !== null && tempOrder !== void 0 && (_tempOrder$products = tempOrder.products) !== null && _tempOrder$products !== void 0 && _tempOrder$products.length)) return [];
1707
- return tempOrder.products.map(function (product) {
1777
+ // 过滤出有 product_id的商品来,如果没有代表他是自定义商品,不需要参与 wallet
1778
+ var products = tempOrder === null || tempOrder === void 0 || (_tempOrder$products2 = tempOrder.products) === null || _tempOrder$products2 === void 0 ? void 0 : _tempOrder$products2.filter(function (n) {
1779
+ return n.product_id;
1780
+ });
1781
+ return products.map(function (product) {
1708
1782
  var _product$product_vari, _product$is_charge_ta, _product$holder_id, _metadata$main_produc, _metadata$main_produc2;
1709
1783
  var metadata = product.metadata || {};
1710
1784
  return {
@@ -243,6 +243,19 @@ export interface BaseSalesProductBookingPriceSegment {
243
243
  quotation_shelf_id: number;
244
244
  source: BaseSalesProductBookingPriceSegmentSource;
245
245
  }
246
+ export interface BaseSalesBundleProductBookingPriceResult {
247
+ bundle_id?: number;
248
+ group_id?: number;
249
+ bundle_group_id?: number;
250
+ bundle_product_id: number | null;
251
+ bundle_variant_id: number;
252
+ unit_price: string;
253
+ total_price: string;
254
+ quantity: number;
255
+ quotation_shelf_id: number;
256
+ source: BaseSalesProductBookingPriceSegmentSource;
257
+ segments: BaseSalesProductBookingPriceSegment[];
258
+ }
246
259
  export interface BaseSalesProductBookingPriceResult {
247
260
  product_id: number | null;
248
261
  product_variant_id: number;
@@ -253,6 +266,7 @@ export interface BaseSalesProductBookingPriceResult {
253
266
  duration?: BaseSalesQuotationDurationConfig;
254
267
  quotation_shelf_id: number;
255
268
  segments: BaseSalesProductBookingPriceSegment[];
269
+ product_bundle?: BaseSalesBundleProductBookingPriceResult[];
256
270
  }
257
271
  export type BaseSalesAvailabilityMode = 'idle' | 'shop_closed' | 'submit_disabled' | 'resource_busy' | 'additional_order_with_code' | 'additional_order';
258
272
  export interface BaseSalesTableFormRecord {