@pisell/pisellos 2.3.60 → 2.3.61
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.
- package/dist/core/index.d.ts +0 -7
- package/dist/core/index.js +66 -109
- package/dist/model/strategy/adapter/promotion/index.js +0 -9
- package/dist/model/strategy/adapter/walletPass/evaluator.js +0 -1
- package/dist/model/strategy/adapter/walletPass/type.d.ts +5 -0
- package/dist/model/strategy/adapter/walletPass/utils.js +57 -24
- package/dist/modules/Payment/types.d.ts +2 -0
- package/dist/modules/Payment/utils.js +4 -1
- package/dist/modules/Payment/walletpass.d.ts +11 -0
- package/dist/modules/Payment/walletpass.js +204 -49
- package/dist/modules/ProductList/index.js +2 -1
- package/dist/modules/Quotation/index.d.ts +0 -6
- package/dist/modules/Quotation/index.js +19 -75
- package/dist/plugins/request.d.ts +0 -1
- package/dist/server/index.d.ts +2 -6
- package/dist/server/index.js +90 -130
- package/dist/server/modules/floor-plan/index.d.ts +0 -4
- package/dist/server/modules/floor-plan/index.js +98 -240
- package/dist/server/modules/menu/index.js +23 -48
- package/dist/server/modules/order/index.d.ts +7 -12
- package/dist/server/modules/order/index.js +96 -248
- package/dist/server/modules/products/index.d.ts +2 -8
- package/dist/server/modules/products/index.js +75 -167
- package/dist/server/modules/resource/index.js +13 -21
- package/dist/solution/BaseSales/index.d.ts +5 -0
- package/dist/solution/BaseSales/index.js +311 -281
- package/lib/core/index.d.ts +0 -7
- package/lib/core/index.js +3 -20
- package/lib/model/strategy/adapter/promotion/index.js +0 -51
- package/lib/model/strategy/adapter/walletPass/evaluator.js +0 -1
- package/lib/model/strategy/adapter/walletPass/type.d.ts +5 -0
- package/lib/model/strategy/adapter/walletPass/utils.js +62 -10
- package/lib/modules/Payment/types.d.ts +2 -0
- package/lib/modules/Payment/utils.js +5 -1
- package/lib/modules/Payment/walletpass.d.ts +11 -0
- package/lib/modules/Payment/walletpass.js +183 -15
- package/lib/modules/ProductList/index.js +2 -1
- package/lib/modules/Quotation/index.d.ts +0 -6
- package/lib/modules/Quotation/index.js +5 -49
- package/lib/plugins/request.d.ts +0 -1
- package/lib/server/index.d.ts +2 -6
- package/lib/server/index.js +8 -18
- package/lib/server/modules/floor-plan/index.d.ts +0 -4
- package/lib/server/modules/floor-plan/index.js +6 -54
- package/lib/server/modules/menu/index.js +5 -31
- package/lib/server/modules/order/index.d.ts +7 -12
- package/lib/server/modules/order/index.js +28 -143
- package/lib/server/modules/products/index.d.ts +2 -8
- package/lib/server/modules/products/index.js +24 -97
- package/lib/server/modules/resource/index.js +2 -7
- package/lib/solution/BaseSales/index.d.ts +5 -0
- package/lib/solution/BaseSales/index.js +11 -0
- package/package.json +1 -1
|
@@ -45,6 +45,29 @@ function normalizeWalletAssetCode(code) {
|
|
|
45
45
|
function getWalletAssetCodeKeys(asset) {
|
|
46
46
|
return [asset === null || asset === void 0 ? void 0 : asset.code, asset === null || asset === void 0 ? void 0 : asset.encoded].map(normalizeWalletAssetCode).filter(Boolean);
|
|
47
47
|
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* 保存货币类扫码资产自身的可用余额,供后续前端策略重新计算。
|
|
51
|
+
* 搜索接口的 recommended_usage_amount 已扣除了搜索时的已选券,不能作为
|
|
52
|
+
* 取消勾选后的永久上限。积分卡的 balance_par_value 是积分值,不能直接
|
|
53
|
+
* 当作货币金额,因此继续沿用接口推荐金额。
|
|
54
|
+
*/
|
|
55
|
+
function withWalletAssetRecalculationBaseAmount(asset) {
|
|
56
|
+
var existingBaseAmount = Number(asset === null || asset === void 0 ? void 0 : asset._wallet_asset_recalculation_base_amount);
|
|
57
|
+
if (Number.isFinite(existingBaseAmount) && existingBaseAmount >= 0) {
|
|
58
|
+
return asset;
|
|
59
|
+
}
|
|
60
|
+
if (!['product_voucher', 'gift_card'].includes(asset === null || asset === void 0 ? void 0 : asset.tag)) {
|
|
61
|
+
return asset;
|
|
62
|
+
}
|
|
63
|
+
var balanceParValue = Number(asset === null || asset === void 0 ? void 0 : asset.balance_par_value);
|
|
64
|
+
if (!Number.isFinite(balanceParValue) || balanceParValue < 0) {
|
|
65
|
+
return asset;
|
|
66
|
+
}
|
|
67
|
+
return _objectSpread(_objectSpread({}, asset), {}, {
|
|
68
|
+
_wallet_asset_recalculation_base_amount: balanceParValue
|
|
69
|
+
});
|
|
70
|
+
}
|
|
48
71
|
function isWalletAssetAvailable(asset) {
|
|
49
72
|
if (!asset) return false;
|
|
50
73
|
if (asset.unified_available_status !== undefined && Number(asset.unified_available_status) !== 1) {
|
|
@@ -228,6 +251,36 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
228
251
|
});
|
|
229
252
|
}
|
|
230
253
|
|
|
254
|
+
/**
|
|
255
|
+
* 搜索接口只返回后端 Wallet Pass 数据,不包含前端策略 config。
|
|
256
|
+
* 在资产进入共享选择状态前补齐策略结果,避免增量重算回退到接口状态。
|
|
257
|
+
*/
|
|
258
|
+
}, {
|
|
259
|
+
key: "formatSearchedWalletPaymentAssets",
|
|
260
|
+
value: function formatSearchedWalletPaymentAssets(assets) {
|
|
261
|
+
var _this$paymentModule$w3, _this$paymentModule$w4, _this$walletParams, _this$walletParams2;
|
|
262
|
+
if (!assets.length) return assets;
|
|
263
|
+
var assetsWithRecalculationBase = assets.map(withWalletAssetRecalculationBaseAmount);
|
|
264
|
+
var evaluator = (_this$paymentModule$w3 = this.paymentModule.window) === null || _this$paymentModule$w3 === void 0 || (_this$paymentModule$w4 = _this$paymentModule$w3.getWalletPassEvaluator) === null || _this$paymentModule$w4 === void 0 ? void 0 : _this$paymentModule$w4.call(_this$paymentModule$w3);
|
|
265
|
+
if (!(evaluator !== null && evaluator !== void 0 && evaluator.searchVoucherFormat)) return assetsWithRecalculationBase;
|
|
266
|
+
var hasCalculationProducts = this.walletAssetsCalculationContext.products.length > 0;
|
|
267
|
+
var products = hasCalculationProducts ? this.walletAssetsCalculationContext.products : ((_this$walletParams = this.walletParams) === null || _this$walletParams === void 0 ? void 0 : _this$walletParams.products) || [];
|
|
268
|
+
var orderTotalAmount = Number(hasCalculationProducts ? this.walletAssetsCalculationContext.orderTotalAmount : ((_this$walletParams2 = this.walletParams) === null || _this$walletParams2 === void 0 ? void 0 : _this$walletParams2.order_wait_pay_amount) || 0);
|
|
269
|
+
try {
|
|
270
|
+
var formattedAssets = evaluator.searchVoucherFormat({
|
|
271
|
+
orderTotalAmount: orderTotalAmount,
|
|
272
|
+
products: products,
|
|
273
|
+
vouchers: assetsWithRecalculationBase
|
|
274
|
+
});
|
|
275
|
+
return formattedAssets;
|
|
276
|
+
} catch (error) {
|
|
277
|
+
this.paymentModule.logWarning('[WalletPass] 搜索资产策略格式化失败,保留接口结果', {
|
|
278
|
+
error: error instanceof Error ? error.message : String(error)
|
|
279
|
+
});
|
|
280
|
+
return assetsWithRecalculationBase;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
231
284
|
/** 获取当前缓存中所有支付类 Wallet 资产的扫码 code。 */
|
|
232
285
|
}, {
|
|
233
286
|
key: "getSearchedWalletAssetCodes",
|
|
@@ -256,8 +309,19 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
256
309
|
return code.toUpperCase();
|
|
257
310
|
}));
|
|
258
311
|
if (searchedCodeKeys.size === 0) return cachedAssets;
|
|
312
|
+
var cachedAssetByCode = new Map();
|
|
313
|
+
cachedAssets.forEach(function (item) {
|
|
314
|
+
getWalletAssetCodeKeys(item).forEach(function (code) {
|
|
315
|
+
cachedAssetByCode.set(code, item);
|
|
316
|
+
});
|
|
317
|
+
});
|
|
259
318
|
var refreshedAssets = refreshedCandidates.filter(function (item) {
|
|
260
319
|
return isWalletPaymentAsset(item) && searchedCodeKeys.has(String((item === null || item === void 0 ? void 0 : item.code) || '').trim().toUpperCase());
|
|
320
|
+
}).map(function (item) {
|
|
321
|
+
var cachedAsset = getWalletAssetCodeKeys(item).map(function (code) {
|
|
322
|
+
return cachedAssetByCode.get(code);
|
|
323
|
+
}).find(Boolean);
|
|
324
|
+
return withWalletAssetRecalculationBaseAmount(_objectSpread(_objectSpread({}, cachedAsset), item));
|
|
261
325
|
});
|
|
262
326
|
if (refreshedAssets.length > 0) {
|
|
263
327
|
var replacedCodes = new Set(refreshedAssets.map(function (item) {
|
|
@@ -333,8 +397,14 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
333
397
|
payment_order_id: payment_order_id
|
|
334
398
|
};
|
|
335
399
|
|
|
336
|
-
//
|
|
400
|
+
// 扫码可能早于异步 Wallet 初始化完成。walletParams 与前端增量重算
|
|
401
|
+
// 必须使用同一份当前购物车上下文,避免搜索按真实金额判断可用,
|
|
402
|
+
// 随后的 recalculateVouchers 却仍读取初始的 0 元/空商品上下文。
|
|
337
403
|
this.walletParams = walletParams;
|
|
404
|
+
this.walletAssetsCalculationContext = {
|
|
405
|
+
orderTotalAmount: Number(walletParams.order_wait_pay_amount || 0),
|
|
406
|
+
products: Array.isArray(walletParams.products) ? walletParams.products : []
|
|
407
|
+
};
|
|
338
408
|
this.paymentModule.logInfo('[WalletPass] 钱包默认参数已生成并存储', {
|
|
339
409
|
customer_id: walletParams.customer_id,
|
|
340
410
|
holder_id: walletParams.holder_id,
|
|
@@ -511,7 +581,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
511
581
|
key: "initializeWalletDataAsync",
|
|
512
582
|
value: (function () {
|
|
513
583
|
var _initializeWalletDataAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(baseParams) {
|
|
514
|
-
var _this$paymentModule$
|
|
584
|
+
var _this$paymentModule$w5, _this$paymentModule$w6, identificationParams, _yield$Promise$all, _yield$Promise$all2, allList, orderBasicDetail, walletPassEvaluator, products, res, recommended, transformList, noApplicableVoucher, recommendedAmount;
|
|
515
585
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
516
586
|
while (1) switch (_context3.prev = _context3.next) {
|
|
517
587
|
case 0:
|
|
@@ -530,7 +600,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
530
600
|
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
|
|
531
601
|
allList = _yield$Promise$all2[0];
|
|
532
602
|
orderBasicDetail = _yield$Promise$all2[1];
|
|
533
|
-
walletPassEvaluator = (_this$paymentModule$
|
|
603
|
+
walletPassEvaluator = (_this$paymentModule$w5 = this.paymentModule.window) === null || _this$paymentModule$w5 === void 0 || (_this$paymentModule$w6 = _this$paymentModule$w5.getWalletPassEvaluator) === null || _this$paymentModule$w6 === void 0 ? void 0 : _this$paymentModule$w6.call(_this$paymentModule$w5);
|
|
534
604
|
if (walletPassEvaluator) {
|
|
535
605
|
_context3.next = 11;
|
|
536
606
|
break;
|
|
@@ -598,7 +668,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
598
668
|
key: "aggregateRecalculateWalletAssetsAsync",
|
|
599
669
|
value: (function () {
|
|
600
670
|
var _aggregateRecalculateWalletAssetsAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(businessData, selectedIds) {
|
|
601
|
-
var _this$paymentModule$
|
|
671
|
+
var _this$paymentModule$w7, _this$paymentModule$w8;
|
|
602
672
|
var walletParams, customerId, requestParams, response, responseData, hasAggregateLists, recalculateList, customerWalletPassList, allList, walletPassEvaluator, evaluated, returnedSelectedKeys, authoritativeSelectedIds;
|
|
603
673
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
604
674
|
while (1) switch (_context4.prev = _context4.next) {
|
|
@@ -636,7 +706,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
636
706
|
recalculateList = Array.isArray(responseData === null || responseData === void 0 ? void 0 : responseData.recalculate_list) ? responseData.recalculate_list : [];
|
|
637
707
|
customerWalletPassList = Array.isArray(responseData === null || responseData === void 0 ? void 0 : responseData.customer_wallet_pass_list) ? responseData.customer_wallet_pass_list : [];
|
|
638
708
|
allList = mergeWalletAssets(recalculateList, customerWalletPassList);
|
|
639
|
-
walletPassEvaluator = (_this$paymentModule$
|
|
709
|
+
walletPassEvaluator = (_this$paymentModule$w7 = this.paymentModule.window) === null || _this$paymentModule$w7 === void 0 || (_this$paymentModule$w8 = _this$paymentModule$w7.getWalletPassEvaluator) === null || _this$paymentModule$w8 === void 0 ? void 0 : _this$paymentModule$w8.call(_this$paymentModule$w7);
|
|
640
710
|
evaluated = walletPassEvaluator !== null && walletPassEvaluator !== void 0 && walletPassEvaluator.getRecommendedVouchers ? walletPassEvaluator.getRecommendedVouchers({
|
|
641
711
|
orderTotalAmount: walletParams.order_wait_pay_amount,
|
|
642
712
|
products: walletParams.products,
|
|
@@ -647,8 +717,10 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
647
717
|
noApplicableVoucher: allList.filter(function (item) {
|
|
648
718
|
return !isWalletAssetAvailable(item);
|
|
649
719
|
})
|
|
650
|
-
};
|
|
651
|
-
|
|
720
|
+
}; // 聚合接口只负责刷新资产数据;选中资格最终由前端 evaluator 重算。
|
|
721
|
+
// 这里仅移除接口完全未返回的资产,不能把 recalculate_list 当作
|
|
722
|
+
// 策略选中结果,否则 customer_wallet_pass_list 中的可用券会被误取消。
|
|
723
|
+
returnedSelectedKeys = new Set(allList.map(function (item) {
|
|
652
724
|
return getWalletAssetKey(item);
|
|
653
725
|
}));
|
|
654
726
|
authoritativeSelectedIds = selectedIds.filter(function (id) {
|
|
@@ -692,7 +764,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
692
764
|
key: "getWalletPassRecommendListAsync",
|
|
693
765
|
value: function () {
|
|
694
766
|
var _getWalletPassRecommendListAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(params) {
|
|
695
|
-
var _this$
|
|
767
|
+
var _this$walletParams3, response;
|
|
696
768
|
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
697
769
|
while (1) switch (_context5.prev = _context5.next) {
|
|
698
770
|
case 0:
|
|
@@ -701,7 +773,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
701
773
|
customer_id: params.customer_id,
|
|
702
774
|
order_expect_amount: params.order_expect_amount,
|
|
703
775
|
sale_channel: params.sale_channel,
|
|
704
|
-
payment_order_id: (_this$
|
|
776
|
+
payment_order_id: (_this$walletParams3 = this.walletParams) === null || _this$walletParams3 === void 0 ? void 0 : _this$walletParams3.payment_order_id
|
|
705
777
|
});
|
|
706
778
|
if (typeof params.payment_order_id === 'string' && params.payment_order_id.startsWith('LOCAL_')) {
|
|
707
779
|
params.payment_order_id = undefined;
|
|
@@ -759,7 +831,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
759
831
|
key: "getUserIdentificationCodeListAsync",
|
|
760
832
|
value: function () {
|
|
761
833
|
var _getUserIdentificationCodeListAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(params) {
|
|
762
|
-
var _newParams$products, _newParams$prepare_pa, _this$
|
|
834
|
+
var _newParams$products, _newParams$prepare_pa, _this$walletParams4, newParams, response, sortedData;
|
|
763
835
|
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
764
836
|
while (1) switch (_context6.prev = _context6.next) {
|
|
765
837
|
case 0:
|
|
@@ -780,7 +852,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
780
852
|
available: newParams.available,
|
|
781
853
|
prepare_payments_count: ((_newParams$prepare_pa = newParams.prepare_payments) === null || _newParams$prepare_pa === void 0 ? void 0 : _newParams$prepare_pa.length) || 0,
|
|
782
854
|
filter_prepare_wallet_pass: newParams.filter_prepare_wallet_pass,
|
|
783
|
-
payment_order_id: (_this$
|
|
855
|
+
payment_order_id: (_this$walletParams4 = this.walletParams) === null || _this$walletParams4 === void 0 ? void 0 : _this$walletParams4.payment_order_id
|
|
784
856
|
});
|
|
785
857
|
_context6.next = 9;
|
|
786
858
|
return this.paymentModule.request.post('/machinecode/prepare/deduction', newParams);
|
|
@@ -1019,6 +1091,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1019
1091
|
selectedIds,
|
|
1020
1092
|
selectionSources,
|
|
1021
1093
|
scanSelectedAssets,
|
|
1094
|
+
manualEditAmountByKey,
|
|
1022
1095
|
restoredSearchedAssets,
|
|
1023
1096
|
searchedWalletAssetCodes,
|
|
1024
1097
|
useAggregateRecalculate,
|
|
@@ -1061,11 +1134,20 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1061
1134
|
scanSelectedAssets = preserveSelection ? this.walletAssetsState.selectedItems.filter(function (asset) {
|
|
1062
1135
|
var assetId = getWalletAssetId(asset);
|
|
1063
1136
|
return assetId !== undefined && assetId !== null && selectionSources[String(assetId)] === 'scan';
|
|
1064
|
-
}) : [];
|
|
1137
|
+
}) : [];
|
|
1138
|
+
manualEditAmountByKey = new Map();
|
|
1139
|
+
if (preserveSelection) {
|
|
1140
|
+
this.walletAssetsState.selectedItems.forEach(function (asset) {
|
|
1141
|
+
if (typeof (asset === null || asset === void 0 ? void 0 : asset.edit_current_amount) !== 'number') return;
|
|
1142
|
+
manualEditAmountByKey.set(getWalletAssetKey(asset), asset.edit_current_amount);
|
|
1143
|
+
});
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
// aggregate-recalculate 不接受空商品列表。
|
|
1065
1147
|
// 清空购物车时保留扫码资产供后续加购恢复;只有手动 Remove/Clear
|
|
1066
1148
|
// 会取消自动应用资格,商品变化导致的自动失效需要重新进入待选队列。
|
|
1067
1149
|
if ((_businessData$product2 = businessData.products) !== null && _businessData$product2 !== void 0 && _businessData$product2.length) {
|
|
1068
|
-
_context8.next =
|
|
1150
|
+
_context8.next = 24;
|
|
1069
1151
|
break;
|
|
1070
1152
|
}
|
|
1071
1153
|
this.queuePendingAutoSelectForAssets(scanSelectedAssets);
|
|
@@ -1103,7 +1185,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1103
1185
|
totalSelectedAmount: 0,
|
|
1104
1186
|
error: null
|
|
1105
1187
|
}));
|
|
1106
|
-
case
|
|
1188
|
+
case 24:
|
|
1107
1189
|
this.publishWalletAssetsState({
|
|
1108
1190
|
status: 'loading',
|
|
1109
1191
|
customerId: nextCustomerId,
|
|
@@ -1114,40 +1196,40 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1114
1196
|
totalSelectedAmount: preserveSelection ? this.walletAssetsState.totalSelectedAmount : 0,
|
|
1115
1197
|
error: null
|
|
1116
1198
|
});
|
|
1117
|
-
_context8.prev =
|
|
1199
|
+
_context8.prev = 25;
|
|
1118
1200
|
searchedWalletAssetCodes = preserveSelection ? this.getSearchedWalletAssetCodes() : [];
|
|
1119
1201
|
useAggregateRecalculate = preserveSelection && (selectedIds.length > 0 || searchedWalletAssetCodes.length > 0);
|
|
1120
1202
|
if (!useAggregateRecalculate) {
|
|
1121
|
-
_context8.next =
|
|
1203
|
+
_context8.next = 34;
|
|
1122
1204
|
break;
|
|
1123
1205
|
}
|
|
1124
|
-
_context8.next =
|
|
1206
|
+
_context8.next = 31;
|
|
1125
1207
|
return this.aggregateRecalculateWalletAssetsAsync(businessData, selectedIds);
|
|
1126
|
-
case
|
|
1208
|
+
case 31:
|
|
1127
1209
|
_context8.t0 = _context8.sent;
|
|
1128
|
-
_context8.next =
|
|
1210
|
+
_context8.next = 35;
|
|
1129
1211
|
break;
|
|
1130
|
-
case
|
|
1212
|
+
case 34:
|
|
1131
1213
|
_context8.t0 = null;
|
|
1132
|
-
case
|
|
1214
|
+
case 35:
|
|
1133
1215
|
aggregateResult = _context8.t0;
|
|
1134
1216
|
_context8.t1 = aggregateResult;
|
|
1135
1217
|
if (_context8.t1) {
|
|
1136
|
-
_context8.next =
|
|
1218
|
+
_context8.next = 41;
|
|
1137
1219
|
break;
|
|
1138
1220
|
}
|
|
1139
|
-
_context8.next =
|
|
1221
|
+
_context8.next = 40;
|
|
1140
1222
|
return this.initializeWalletDataFromBusinessAsync(businessData);
|
|
1141
|
-
case
|
|
1223
|
+
case 40:
|
|
1142
1224
|
_context8.t1 = _context8.sent;
|
|
1143
|
-
case
|
|
1225
|
+
case 41:
|
|
1144
1226
|
result = _context8.t1;
|
|
1145
1227
|
if (!(requestSequence !== this.walletAssetsRequestSequence)) {
|
|
1146
|
-
_context8.next =
|
|
1228
|
+
_context8.next = 44;
|
|
1147
1229
|
break;
|
|
1148
1230
|
}
|
|
1149
1231
|
return _context8.abrupt("return", this.getWalletAssetsState());
|
|
1150
|
-
case
|
|
1232
|
+
case 44:
|
|
1151
1233
|
this.walletAssetsCalculationContext = {
|
|
1152
1234
|
orderTotalAmount: Number(businessData.order_wait_pay_amount || 0),
|
|
1153
1235
|
products: result.products || businessData.products || []
|
|
@@ -1170,17 +1252,20 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1170
1252
|
}
|
|
1171
1253
|
searchedWalletAssets = preserveSelection ? this.syncSearchedWalletAssets([].concat(_toConsumableArray(result.transformList || []), _toConsumableArray(result.noApplicableVoucher || []))) : [];
|
|
1172
1254
|
if (!(requestSequence !== this.walletAssetsRequestSequence)) {
|
|
1173
|
-
_context8.next =
|
|
1255
|
+
_context8.next = 50;
|
|
1174
1256
|
break;
|
|
1175
1257
|
}
|
|
1176
1258
|
return _context8.abrupt("return", this.getWalletAssetsState());
|
|
1177
|
-
case
|
|
1259
|
+
case 50:
|
|
1178
1260
|
recommendedKeys = new Set((result.walletRecommendList || []).map(function (asset) {
|
|
1179
1261
|
return getWalletAssetKey(asset);
|
|
1180
1262
|
}));
|
|
1181
1263
|
items = mergeWalletAssets(preserveSelection && !aggregateResult ? this.walletAssetsState.selectedItems : [], searchedWalletAssets, result.transformList || [], result.noApplicableVoucher || []).map(function (asset) {
|
|
1182
|
-
|
|
1183
|
-
|
|
1264
|
+
var assetKey = getWalletAssetKey(asset);
|
|
1265
|
+
return _objectSpread(_objectSpread(_objectSpread({}, asset), manualEditAmountByKey.has(assetKey) ? {
|
|
1266
|
+
edit_current_amount: manualEditAmountByKey.get(assetKey)
|
|
1267
|
+
} : {}), {}, {
|
|
1268
|
+
_wallet_asset_recommended: recommendedKeys.has(assetKey)
|
|
1184
1269
|
});
|
|
1185
1270
|
});
|
|
1186
1271
|
latestSelectedIds = preserveSelection ? authoritativeSelectedIds : [];
|
|
@@ -1217,15 +1302,15 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1217
1302
|
});
|
|
1218
1303
|
this.queuePendingAutoSelectForAssets(droppedScanSelectedAssets);
|
|
1219
1304
|
return _context8.abrupt("return", nextState);
|
|
1220
|
-
case
|
|
1221
|
-
_context8.prev =
|
|
1222
|
-
_context8.t2 = _context8["catch"](
|
|
1305
|
+
case 65:
|
|
1306
|
+
_context8.prev = 65;
|
|
1307
|
+
_context8.t2 = _context8["catch"](25);
|
|
1223
1308
|
if (!(requestSequence !== this.walletAssetsRequestSequence)) {
|
|
1224
|
-
_context8.next =
|
|
1309
|
+
_context8.next = 69;
|
|
1225
1310
|
break;
|
|
1226
1311
|
}
|
|
1227
1312
|
return _context8.abrupt("return", this.getWalletAssetsState());
|
|
1228
|
-
case
|
|
1313
|
+
case 69:
|
|
1229
1314
|
this.paymentModule.logError('[WalletPass] 刷新共享钱包资产失败,保留刷新前状态', _context8.t2, {
|
|
1230
1315
|
customer_id: businessData.customer_id,
|
|
1231
1316
|
selected_ids: selectedIds,
|
|
@@ -1241,11 +1326,11 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1241
1326
|
customerId: nextCustomerId,
|
|
1242
1327
|
error: _context8.t2 instanceof Error ? _context8.t2.message : String(_context8.t2)
|
|
1243
1328
|
}));
|
|
1244
|
-
case
|
|
1329
|
+
case 71:
|
|
1245
1330
|
case "end":
|
|
1246
1331
|
return _context8.stop();
|
|
1247
1332
|
}
|
|
1248
|
-
}, _callee8, this, [[
|
|
1333
|
+
}, _callee8, this, [[25, 65]]);
|
|
1249
1334
|
}));
|
|
1250
1335
|
function refreshWalletAssetsFromBusinessAsync(_x9) {
|
|
1251
1336
|
return _refreshWalletAssetsFromBusinessAsync.apply(this, arguments);
|
|
@@ -1298,6 +1383,17 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1298
1383
|
selectionSources: snapshot.state.selectionSources || {}
|
|
1299
1384
|
}));
|
|
1300
1385
|
}
|
|
1386
|
+
}, {
|
|
1387
|
+
key: "updateWalletAssetEditAmountInCaches",
|
|
1388
|
+
value: function updateWalletAssetEditAmountInCaches(assetKey, amount) {
|
|
1389
|
+
var updateAsset = function updateAsset(asset) {
|
|
1390
|
+
return getWalletAssetKey(asset) === assetKey ? _objectSpread(_objectSpread({}, asset), {}, {
|
|
1391
|
+
edit_current_amount: amount
|
|
1392
|
+
}) : asset;
|
|
1393
|
+
};
|
|
1394
|
+
this.searchResults = this.searchResults.map(updateAsset);
|
|
1395
|
+
return this.walletAssetsState.items.map(updateAsset);
|
|
1396
|
+
}
|
|
1301
1397
|
}, {
|
|
1302
1398
|
key: "selectWalletAsset",
|
|
1303
1399
|
value: function selectWalletAsset(assetId, options) {
|
|
@@ -1314,6 +1410,7 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1314
1410
|
});
|
|
1315
1411
|
var selectionSources = _objectSpread({}, this.walletAssetsState.selectionSources);
|
|
1316
1412
|
delete selectionSources[assetKey];
|
|
1413
|
+
var nextItems = this.walletAssetsState.items;
|
|
1317
1414
|
if (options.selected) {
|
|
1318
1415
|
if (!asset || !isWalletAssetAvailable(asset)) {
|
|
1319
1416
|
return this.getWalletAssetsState();
|
|
@@ -1322,8 +1419,9 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1322
1419
|
selectionSources[assetKey] = options.source || 'manual';
|
|
1323
1420
|
} else if (asset) {
|
|
1324
1421
|
this.clearPendingAutoSelectForAsset(asset);
|
|
1422
|
+
nextItems = this.updateWalletAssetEditAmountInCaches(assetKey, undefined);
|
|
1325
1423
|
}
|
|
1326
|
-
var nextState = this.recalculateWalletAssets(
|
|
1424
|
+
var nextState = this.recalculateWalletAssets(nextItems, selectedIds, selectionSources);
|
|
1327
1425
|
if (options.selected && asset && nextState.selectedIds.some(function (id) {
|
|
1328
1426
|
return String(id) === assetKey;
|
|
1329
1427
|
})) {
|
|
@@ -1331,11 +1429,49 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1331
1429
|
}
|
|
1332
1430
|
return nextState;
|
|
1333
1431
|
}
|
|
1432
|
+
|
|
1433
|
+
/**
|
|
1434
|
+
* 更新已选资产的手动金额。只允许在当前实际抵扣额内向下调整,
|
|
1435
|
+
* 金额为 0 时沿用 legacy 行为取消选择。
|
|
1436
|
+
*/
|
|
1437
|
+
}, {
|
|
1438
|
+
key: "updateWalletAssetAmount",
|
|
1439
|
+
value: function updateWalletAssetAmount(assetId, amount) {
|
|
1440
|
+
var assetKey = String(assetId);
|
|
1441
|
+
var committedKeys = new Set(this.walletAssetsState.committedIds.map(function (id) {
|
|
1442
|
+
return String(id);
|
|
1443
|
+
}));
|
|
1444
|
+
var selectedKeys = new Set(this.walletAssetsState.selectedIds.map(function (id) {
|
|
1445
|
+
return String(id);
|
|
1446
|
+
}));
|
|
1447
|
+
var asset = this.walletAssetsState.items.find(function (item) {
|
|
1448
|
+
return getWalletAssetKey(item) === assetKey;
|
|
1449
|
+
});
|
|
1450
|
+
var requestedAmount = Number(amount);
|
|
1451
|
+
if (!asset || committedKeys.has(assetKey) || !selectedKeys.has(assetKey) || !Number.isFinite(requestedAmount) || requestedAmount < 0) {
|
|
1452
|
+
return this.getWalletAssetsState();
|
|
1453
|
+
}
|
|
1454
|
+
var selectedIds = _toConsumableArray(this.walletAssetsState.selectedIds);
|
|
1455
|
+
var selectionSources = _objectSpread({}, this.walletAssetsState.selectionSources);
|
|
1456
|
+
if (requestedAmount === 0) {
|
|
1457
|
+
var _nextItems = this.updateWalletAssetEditAmountInCaches(assetKey, undefined);
|
|
1458
|
+
delete selectionSources[assetKey];
|
|
1459
|
+
this.clearPendingAutoSelectForAsset(asset);
|
|
1460
|
+
return this.recalculateWalletAssets(_nextItems, selectedIds.filter(function (id) {
|
|
1461
|
+
return String(id) !== assetKey;
|
|
1462
|
+
}), selectionSources);
|
|
1463
|
+
}
|
|
1464
|
+
var currentDeductionAmount = getWalletAssetDeductionAmount(asset);
|
|
1465
|
+
var editAmount = Math.min(requestedAmount, currentDeductionAmount);
|
|
1466
|
+
if (editAmount <= 0) return this.getWalletAssetsState();
|
|
1467
|
+
var nextItems = this.updateWalletAssetEditAmountInCaches(assetKey, editAmount);
|
|
1468
|
+
return this.recalculateWalletAssets(nextItems, selectedIds, selectionSources);
|
|
1469
|
+
}
|
|
1334
1470
|
}, {
|
|
1335
1471
|
key: "scanWalletAssetAsync",
|
|
1336
1472
|
value: function () {
|
|
1337
1473
|
var _scanWalletAssetAsync = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(code) {
|
|
1338
|
-
var normalizedCode, selectedAsset, result, paymentAssets, asset, items, recalculatedState, assetId, selected, isSelected;
|
|
1474
|
+
var normalizedCode, selectedAsset, result, paymentAssets, asset, items, recalculatedState, assetId, recalculatedAsset, selected, isSelected, selectedStateAsset, resolvedAsset;
|
|
1339
1475
|
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
1340
1476
|
while (1) switch (_context9.prev = _context9.next) {
|
|
1341
1477
|
case 0:
|
|
@@ -1372,12 +1508,15 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1372
1508
|
}));
|
|
1373
1509
|
case 9:
|
|
1374
1510
|
result = _context9.sent;
|
|
1375
|
-
paymentAssets = result.data.filter(isWalletPaymentAsset);
|
|
1511
|
+
paymentAssets = this.formatSearchedWalletPaymentAssets(result.data.filter(isWalletPaymentAsset));
|
|
1512
|
+
if (paymentAssets.length > 0) {
|
|
1513
|
+
this.searchResults = mergeWalletAssets(this.searchResults, paymentAssets);
|
|
1514
|
+
}
|
|
1376
1515
|
asset = paymentAssets.find(function (item) {
|
|
1377
1516
|
return String((item === null || item === void 0 ? void 0 : item.code) || '') === normalizedCode;
|
|
1378
1517
|
}) || paymentAssets[0];
|
|
1379
1518
|
if (!(!asset || result.type === 'walletCode')) {
|
|
1380
|
-
_context9.next =
|
|
1519
|
+
_context9.next = 15;
|
|
1381
1520
|
break;
|
|
1382
1521
|
}
|
|
1383
1522
|
return _context9.abrupt("return", {
|
|
@@ -1386,30 +1525,37 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1386
1525
|
selected: false,
|
|
1387
1526
|
state: this.getWalletAssetsState()
|
|
1388
1527
|
});
|
|
1389
|
-
case
|
|
1528
|
+
case 15:
|
|
1390
1529
|
items = mergeWalletAssets(this.walletAssetsState.items, [asset]);
|
|
1391
1530
|
recalculatedState = this.recalculateWalletAssets(items, this.walletAssetsState.selectedIds, this.walletAssetsState.selectionSources);
|
|
1392
1531
|
assetId = getWalletAssetId(asset);
|
|
1393
|
-
|
|
1532
|
+
recalculatedAsset = assetId === undefined ? undefined : recalculatedState.items.find(function (item) {
|
|
1533
|
+
return getWalletAssetKey(item) === String(assetId);
|
|
1534
|
+
});
|
|
1535
|
+
selected = this.walletAssetsBehavior.autoSelectAfterSearch && assetId !== undefined && isWalletAssetAvailable(recalculatedAsset) ? this.selectWalletAsset(assetId, {
|
|
1394
1536
|
selected: true,
|
|
1395
1537
|
source: 'scan'
|
|
1396
1538
|
}) : recalculatedState;
|
|
1397
1539
|
isSelected = assetId !== undefined && selected.selectedIds.some(function (id) {
|
|
1398
1540
|
return String(id) === String(assetId);
|
|
1399
1541
|
});
|
|
1542
|
+
selectedStateAsset = assetId === undefined ? undefined : selected.items.find(function (item) {
|
|
1543
|
+
return getWalletAssetKey(item) === String(assetId);
|
|
1544
|
+
});
|
|
1545
|
+
resolvedAsset = selectedStateAsset || recalculatedAsset || asset;
|
|
1400
1546
|
if (isSelected) {
|
|
1401
|
-
this.clearPendingAutoSelectForAsset(
|
|
1547
|
+
this.clearPendingAutoSelectForAsset(resolvedAsset);
|
|
1402
1548
|
} else if (this.walletAssetsBehavior.autoSelectAfterSearch) {
|
|
1403
1549
|
this.pendingAutoSelectSearchCodes.add(normalizeWalletAssetCode(normalizedCode));
|
|
1404
|
-
this.queuePendingAutoSelectForAssets([
|
|
1550
|
+
this.queuePendingAutoSelectForAssets([resolvedAsset]);
|
|
1405
1551
|
}
|
|
1406
1552
|
return _context9.abrupt("return", {
|
|
1407
1553
|
type: result.type,
|
|
1408
|
-
asset:
|
|
1554
|
+
asset: resolvedAsset,
|
|
1409
1555
|
selected: isSelected,
|
|
1410
1556
|
state: selected
|
|
1411
1557
|
});
|
|
1412
|
-
case
|
|
1558
|
+
case 25:
|
|
1413
1559
|
case "end":
|
|
1414
1560
|
return _context9.stop();
|
|
1415
1561
|
}
|
|
@@ -1424,7 +1570,16 @@ export var WalletPassPaymentImpl = /*#__PURE__*/function () {
|
|
|
1424
1570
|
key: "clearWalletAssetSelection",
|
|
1425
1571
|
value: function clearWalletAssetSelection() {
|
|
1426
1572
|
this.pendingAutoSelectSearchCodes.clear();
|
|
1427
|
-
|
|
1573
|
+
var selectedKeys = new Set(this.walletAssetsState.selectedIds.map(function (id) {
|
|
1574
|
+
return String(id);
|
|
1575
|
+
}));
|
|
1576
|
+
var clearSelectedEditAmount = function clearSelectedEditAmount(asset) {
|
|
1577
|
+
return selectedKeys.has(getWalletAssetKey(asset)) ? _objectSpread(_objectSpread({}, asset), {}, {
|
|
1578
|
+
edit_current_amount: undefined
|
|
1579
|
+
}) : asset;
|
|
1580
|
+
};
|
|
1581
|
+
this.searchResults = this.searchResults.map(clearSelectedEditAmount);
|
|
1582
|
+
return this.recalculateWalletAssets(this.walletAssetsState.items.map(clearSelectedEditAmount), [], {});
|
|
1428
1583
|
}
|
|
1429
1584
|
}, {
|
|
1430
1585
|
key: "setCommittedWalletAssets",
|
|
@@ -225,7 +225,8 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
225
225
|
is_eject: 1,
|
|
226
226
|
with_schedule: with_schedule,
|
|
227
227
|
schedule_datetime: schedule_datetime,
|
|
228
|
-
extension_type: extension_type
|
|
228
|
+
extension_type: extension_type,
|
|
229
|
+
strategy_context: strategy_context
|
|
229
230
|
});
|
|
230
231
|
_context4.next = 11;
|
|
231
232
|
return this.request.post("/product/query", queryPayload, {
|
|
@@ -9,8 +9,6 @@ export declare class QuotationModule extends BaseModule implements Module {
|
|
|
9
9
|
private request;
|
|
10
10
|
private store;
|
|
11
11
|
private scheduleResolver?;
|
|
12
|
-
private app;
|
|
13
|
-
private quotationListUpdatedListener?;
|
|
14
12
|
constructor(name?: string, version?: string);
|
|
15
13
|
initialize(core: PisellCore, options: ModuleOptions): Promise<void>;
|
|
16
14
|
loadQuotations(params?: {
|
|
@@ -18,7 +16,6 @@ export declare class QuotationModule extends BaseModule implements Module {
|
|
|
18
16
|
customer_id?: number | string;
|
|
19
17
|
}): Promise<void>;
|
|
20
18
|
getQuotationList(): QuotationItem[];
|
|
21
|
-
setQuotationListUpdatedListener(listener?: () => void): void;
|
|
22
19
|
getQuotationCustomerScopeInfo(): QuotationCustomerScopeInfo;
|
|
23
20
|
/**
|
|
24
21
|
* Look up the quotation price for a specific product (+ optional variant) at a given datetime.
|
|
@@ -63,9 +60,6 @@ export declare class QuotationModule extends BaseModule implements Module {
|
|
|
63
60
|
customer_id?: number | string;
|
|
64
61
|
}): Map<string, string | null>;
|
|
65
62
|
setScheduleResolver(resolver: (id: number) => ScheduleItem | undefined): void;
|
|
66
|
-
private applyQuotationResponse;
|
|
67
|
-
private notifyQuotationListUpdated;
|
|
68
|
-
private getQuotationCacheKeyData;
|
|
69
63
|
private isQuotationVisibleForCustomer;
|
|
70
64
|
private hasValidCustomerId;
|
|
71
65
|
private normalizeCustomerId;
|