@pisell/pisellos 2.3.24 → 2.3.26
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/model/strategy/adapter/index.d.ts +0 -4
- package/dist/model/strategy/adapter/index.js +1 -5
- package/dist/modules/Discount/index.d.ts +2 -5
- package/dist/modules/Discount/index.js +7 -30
- package/dist/modules/Discount/types.d.ts +0 -4
- package/dist/modules/Order/index.d.ts +4 -2
- package/dist/modules/Order/index.js +725 -647
- package/dist/modules/Order/types.d.ts +0 -2
- package/dist/modules/Product/types.d.ts +0 -22
- package/dist/modules/ProductList/index.d.ts +1 -1
- package/dist/modules/ProductList/index.js +2 -4
- package/dist/modules/ProductList/types.d.ts +0 -2
- package/dist/server/index.d.ts +0 -50
- package/dist/server/index.js +749 -995
- package/dist/server/modules/products/index.d.ts +7 -26
- package/dist/server/modules/products/index.js +76 -167
- package/dist/server/modules/products/types.d.ts +0 -14
- package/dist/solution/BaseSales/index.d.ts +0 -2
- package/dist/solution/BaseSales/index.js +50 -36
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -13
- package/dist/solution/BookingTicket/index.js +21 -5
- package/dist/solution/BookingTicket/types.d.ts +0 -2
- package/dist/solution/ShopDiscount/index.js +14 -15
- package/lib/model/strategy/adapter/index.d.ts +0 -4
- package/lib/model/strategy/adapter/index.js +2 -13
- package/lib/modules/Discount/index.d.ts +2 -5
- package/lib/modules/Discount/index.js +3 -23
- package/lib/modules/Discount/types.d.ts +0 -4
- package/lib/modules/Order/index.d.ts +4 -2
- package/lib/modules/Order/index.js +80 -34
- package/lib/modules/Order/types.d.ts +0 -2
- package/lib/modules/Product/types.d.ts +0 -22
- package/lib/modules/ProductList/index.d.ts +1 -1
- package/lib/modules/ProductList/index.js +2 -4
- package/lib/modules/ProductList/types.d.ts +0 -2
- package/lib/server/index.d.ts +0 -50
- package/lib/server/index.js +29 -206
- package/lib/server/modules/products/index.d.ts +7 -26
- package/lib/server/modules/products/index.js +35 -114
- package/lib/server/modules/products/types.d.ts +0 -14
- package/lib/solution/BaseSales/index.d.ts +0 -2
- package/lib/solution/BaseSales/index.js +22 -12
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +1 -13
- package/lib/solution/BookingTicket/index.js +18 -1
- package/lib/solution/BookingTicket/types.d.ts +0 -2
- package/lib/solution/ShopDiscount/index.js +1 -2
- package/package.json +1 -1
- package/dist/model/strategy/adapter/dataVariant/adapter.d.ts +0 -50
- package/dist/model/strategy/adapter/dataVariant/adapter.js +0 -167
- package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -89
- package/dist/model/strategy/adapter/dataVariant/evaluator.js +0 -780
- package/dist/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
- package/dist/model/strategy/adapter/dataVariant/examples.js +0 -277
- package/dist/model/strategy/adapter/dataVariant/index.d.ts +0 -4
- package/dist/model/strategy/adapter/dataVariant/index.js +0 -4
- package/dist/model/strategy/adapter/dataVariant/type.d.ts +0 -148
- package/dist/model/strategy/adapter/dataVariant/type.js +0 -54
- package/lib/model/strategy/adapter/dataVariant/adapter.d.ts +0 -50
- package/lib/model/strategy/adapter/dataVariant/adapter.js +0 -149
- package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -89
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +0 -583
- package/lib/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
- package/lib/model/strategy/adapter/dataVariant/examples.js +0 -293
- package/lib/model/strategy/adapter/dataVariant/index.d.ts +0 -4
- package/lib/model/strategy/adapter/dataVariant/index.js +0 -38
- package/lib/model/strategy/adapter/dataVariant/type.d.ts +0 -148
- package/lib/model/strategy/adapter/dataVariant/type.js +0 -31
|
@@ -308,9 +308,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
308
308
|
if (!this.store.summary) {
|
|
309
309
|
this.store.summary = (0, import_utils.createEmptySummary)();
|
|
310
310
|
}
|
|
311
|
-
if (!Array.isArray(this.store.availableWalletIds)) {
|
|
312
|
-
this.store.availableWalletIds = [];
|
|
313
|
-
}
|
|
314
311
|
this.request = this.core.getPlugin("request");
|
|
315
312
|
const appPlugin = this.core.getPlugin("app");
|
|
316
313
|
if (!appPlugin) {
|
|
@@ -438,19 +435,15 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
438
435
|
async loadDiscountConfig(params) {
|
|
439
436
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
440
437
|
const orderId = params.orderId || ((_a = this.store.tempOrder) == null ? void 0 : _a.order_id) || void 0;
|
|
441
|
-
const
|
|
438
|
+
const discountList = await ((_b = this.store.discount) == null ? void 0 : _b.loadPrepareConfig({
|
|
442
439
|
customer_id: params.customerId,
|
|
443
440
|
action: params.action || (orderId ? "edit" : "create"),
|
|
444
441
|
with_good_pass: 1,
|
|
445
442
|
with_discount_card: 1,
|
|
446
443
|
with_wallet_pass_holder: 1,
|
|
447
|
-
with_available_wallet_flag: 1,
|
|
448
|
-
with_available_wallet_pass_flag: 1,
|
|
449
444
|
request_timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
450
445
|
...orderId ? { order_id: orderId } : {}
|
|
451
446
|
}));
|
|
452
|
-
const discountList = prepareConfigResult == null ? void 0 : prepareConfigResult.discountList;
|
|
453
|
-
this.store.availableWalletIds = (prepareConfigResult == null ? void 0 : prepareConfigResult.availableWalletIds) || [];
|
|
454
447
|
if (discountList) {
|
|
455
448
|
const currentDiscountList = ((_c = this.store.discount) == null ? void 0 : _c.getDiscountList()) || [];
|
|
456
449
|
const currentEditDiscounts = currentDiscountList.filter((discount) => discount == null ? void 0 : discount.isEditMode);
|
|
@@ -484,8 +477,18 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
484
477
|
var _a;
|
|
485
478
|
return ((_a = this.store.discount) == null ? void 0 : _a.getDiscountList()) || [];
|
|
486
479
|
}
|
|
487
|
-
|
|
488
|
-
|
|
480
|
+
async syncScannedDiscountsToOriginalDiscountList(discountList) {
|
|
481
|
+
var _a, _b, _c, _d;
|
|
482
|
+
const scanDiscounts = (discountList || []).filter((discount) => discount == null ? void 0 : discount.isScan);
|
|
483
|
+
if (!scanDiscounts.length)
|
|
484
|
+
return;
|
|
485
|
+
const scanDiscountIds = new Set(scanDiscounts.map((discount) => discount == null ? void 0 : discount.id));
|
|
486
|
+
const originalDiscounts = ((_b = (_a = this.store.discount) == null ? void 0 : _a.getOriginalDiscountList) == null ? void 0 : _b.call(_a)) || [];
|
|
487
|
+
const nextOriginalDiscounts = [
|
|
488
|
+
...scanDiscounts,
|
|
489
|
+
...originalDiscounts.filter((discount) => !scanDiscountIds.has(discount == null ? void 0 : discount.id))
|
|
490
|
+
];
|
|
491
|
+
await ((_d = (_c = this.store.discount) == null ? void 0 : _c.setOriginalDiscountList) == null ? void 0 : _d.call(_c, nextOriginalDiscounts));
|
|
489
492
|
}
|
|
490
493
|
async ensureEditDiscountConfigForProductChange(tempOrder) {
|
|
491
494
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -535,6 +538,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
535
538
|
}));
|
|
536
539
|
const currentSelected = this.getDiscountList().filter((n) => n.isSelected);
|
|
537
540
|
if (currentSelected.length && currentSelected.some((n) => withScanList.some((m) => m.id === n.id))) {
|
|
541
|
+
await this.syncScannedDiscountsToOriginalDiscountList(this.getDiscountList());
|
|
538
542
|
return {
|
|
539
543
|
type: "clientCalc",
|
|
540
544
|
isAvailable: true,
|
|
@@ -555,6 +559,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
555
559
|
if (isAvailable && newDiscountList) {
|
|
556
560
|
(_d = this.store.discount) == null ? void 0 : _d.setDiscountList(newDiscountList);
|
|
557
561
|
this.applyDiscount();
|
|
562
|
+
await this.syncScannedDiscountsToOriginalDiscountList(this.getDiscountList());
|
|
558
563
|
}
|
|
559
564
|
return {
|
|
560
565
|
type: "clientCalc",
|
|
@@ -897,6 +902,15 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
897
902
|
return sum.plus(this.calculatePaymentEffectiveAmount(payment));
|
|
898
903
|
}, new import_decimal.default(0));
|
|
899
904
|
}
|
|
905
|
+
calculateOrderPaidPaymentTotal(payments) {
|
|
906
|
+
return (0, import_utils.mapPaymentItemsToOrderPayments)(payments, {
|
|
907
|
+
includeVoided: false
|
|
908
|
+
}).reduce((sum, payment) => {
|
|
909
|
+
if (!isPaidPaymentRecord(payment))
|
|
910
|
+
return sum;
|
|
911
|
+
return sum.plus(this.calculatePaymentGapAmount(payment));
|
|
912
|
+
}, new import_decimal.default(0));
|
|
913
|
+
}
|
|
900
914
|
getDepositAmount(tempOrder, summary) {
|
|
901
915
|
return new import_decimal.default(summary.deposit_amount || tempOrder.deposit_amount || "0.00");
|
|
902
916
|
}
|
|
@@ -987,7 +1001,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
987
1001
|
const paymentList = payments || tempOrder.payments || [];
|
|
988
1002
|
const refundAmount = this.getSummaryRefundAmount(summary);
|
|
989
1003
|
const netPaidAmount = import_decimal.default.max(
|
|
990
|
-
this.
|
|
1004
|
+
this.calculateOrderPaidPaymentTotal(paymentList).minus(refundAmount),
|
|
991
1005
|
0
|
|
992
1006
|
);
|
|
993
1007
|
const depositAmount = this.getDepositAmount(tempOrder, summary);
|
|
@@ -1016,11 +1030,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1016
1030
|
const isDepositPayment = paymentRecord.type === "deposit" || paymentRecord.order_payment_type === "deposit";
|
|
1017
1031
|
if (!isDepositPayment)
|
|
1018
1032
|
return sum;
|
|
1019
|
-
|
|
1020
|
-
return sum.plus(this.calculatePaymentGapAmount(paymentRecord));
|
|
1021
|
-
}
|
|
1022
|
-
const rounding = new import_decimal.default(paymentRecord.rounding_amount || 0);
|
|
1023
|
-
return sum.plus(new import_decimal.default(paymentRecord.amount || 0).minus(rounding));
|
|
1033
|
+
return sum.plus(this.calculatePaymentGapAmount(paymentRecord));
|
|
1024
1034
|
}, new import_decimal.default(0));
|
|
1025
1035
|
}
|
|
1026
1036
|
resolveNextOrderPaymentType(tempOrder) {
|
|
@@ -1053,8 +1063,9 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1053
1063
|
updateTempOrderPaymentStatus(tempOrder, options) {
|
|
1054
1064
|
const summary = (options == null ? void 0 : options.summary) || this.store.summary || (0, import_utils.createEmptySummary)();
|
|
1055
1065
|
const paymentTotal = this.calculatePaymentTotal(tempOrder.payments || []);
|
|
1066
|
+
const orderPaymentTotal = this.calculateOrderPaidPaymentTotal(tempOrder.payments || []);
|
|
1056
1067
|
const refundAmount = this.getSummaryRefundAmount(summary);
|
|
1057
|
-
const netPaymentTotal = import_decimal.default.max(
|
|
1068
|
+
const netPaymentTotal = import_decimal.default.max(orderPaymentTotal.minus(refundAmount), 0);
|
|
1058
1069
|
const targetAmount = this.calculatePaymentTargetAmount(
|
|
1059
1070
|
tempOrder,
|
|
1060
1071
|
summary,
|
|
@@ -1123,7 +1134,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1123
1134
|
}
|
|
1124
1135
|
capVoucherPaymentsByRemainingAmount(params) {
|
|
1125
1136
|
const targetAmount = this.getPaymentTargetAmount();
|
|
1126
|
-
const nonVoucherTotal = this.
|
|
1137
|
+
const nonVoucherTotal = this.calculateOrderPaidPaymentTotal(params.nonVoucherPayments);
|
|
1127
1138
|
if (targetAmount.lte(0))
|
|
1128
1139
|
return [];
|
|
1129
1140
|
let remainingAmount = import_decimal.default.max(
|
|
@@ -1166,7 +1177,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1166
1177
|
return summary;
|
|
1167
1178
|
return {
|
|
1168
1179
|
customerPaidAmount: summary.customerPaidAmount.plus(paymentRecord.amount || 0),
|
|
1169
|
-
orderPaidAmount: summary.orderPaidAmount.plus(paymentRecord
|
|
1180
|
+
orderPaidAmount: summary.orderPaidAmount.plus(this.calculatePaymentOrderAmount(paymentRecord)),
|
|
1170
1181
|
gapPaidAmount: summary.gapPaidAmount.plus(this.calculatePaymentGapAmount(paymentRecord)),
|
|
1171
1182
|
payServiceChargeAmount: summary.payServiceChargeAmount.plus(this.calculatePaymentServiceFee(paymentRecord)),
|
|
1172
1183
|
roundingAmount: summary.roundingAmount.plus(this.calculatePaymentRoundingAmount(paymentRecord))
|
|
@@ -1191,11 +1202,30 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1191
1202
|
return new import_decimal.default(payment.amount || 0).times(percentage).plus(fixedAmount);
|
|
1192
1203
|
}
|
|
1193
1204
|
calculatePaymentGapAmount(payment) {
|
|
1194
|
-
if (payment.origin_amount
|
|
1195
|
-
|
|
1205
|
+
if (payment.origin_amount !== void 0 && payment.origin_amount !== null && payment.origin_amount !== "") {
|
|
1206
|
+
const rounding2 = new import_decimal.default(payment.rounding_amount || 0);
|
|
1207
|
+
return new import_decimal.default(payment.origin_amount || 0).minus(rounding2);
|
|
1196
1208
|
}
|
|
1197
1209
|
const rounding = new import_decimal.default(payment.rounding_amount || 0);
|
|
1198
|
-
|
|
1210
|
+
const amount = new import_decimal.default(payment.amount || 0);
|
|
1211
|
+
const serviceFee = this.calculatePaymentServiceFee(payment);
|
|
1212
|
+
if (serviceFee.lte(0))
|
|
1213
|
+
return amount.minus(rounding);
|
|
1214
|
+
if (!hasSyncedOrderPaymentRecord(payment))
|
|
1215
|
+
return new import_decimal.default(0);
|
|
1216
|
+
return import_decimal.default.max(amount.minus(serviceFee), 0).minus(rounding);
|
|
1217
|
+
}
|
|
1218
|
+
calculatePaymentOrderAmount(payment) {
|
|
1219
|
+
if (payment.origin_amount !== void 0 && payment.origin_amount !== null && payment.origin_amount !== "") {
|
|
1220
|
+
return new import_decimal.default(payment.origin_amount || 0);
|
|
1221
|
+
}
|
|
1222
|
+
const amount = new import_decimal.default(payment.amount || 0);
|
|
1223
|
+
const serviceFee = this.calculatePaymentServiceFee(payment);
|
|
1224
|
+
if (serviceFee.lte(0))
|
|
1225
|
+
return amount;
|
|
1226
|
+
if (!hasSyncedOrderPaymentRecord(payment))
|
|
1227
|
+
return new import_decimal.default(0);
|
|
1228
|
+
return import_decimal.default.max(amount.minus(serviceFee), 0);
|
|
1199
1229
|
}
|
|
1200
1230
|
calculatePaymentRoundingAmount(payment) {
|
|
1201
1231
|
if (payment.rounding_amount === void 0 || payment.rounding_amount === null || payment.rounding_amount === "") {
|
|
@@ -1543,7 +1573,12 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1543
1573
|
tempOrder.surcharge_fee = summary.surcharge_fee || tempOrder.surcharge_fee;
|
|
1544
1574
|
tempOrder.deposit_amount = summary.deposit_amount || "0.00";
|
|
1545
1575
|
tempOrder.is_deposit = summary.deposit_amount !== "0.00" ? 1 : 0;
|
|
1576
|
+
const previousSummary = this.store.summary;
|
|
1546
1577
|
this.store.summary = summary;
|
|
1578
|
+
this.updateTempOrderPaymentStatus(tempOrder, {
|
|
1579
|
+
previousSummary,
|
|
1580
|
+
summary
|
|
1581
|
+
});
|
|
1547
1582
|
return summary;
|
|
1548
1583
|
}
|
|
1549
1584
|
clearPersistedAmountFieldsForFullRecalc(products) {
|
|
@@ -2366,7 +2401,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
2366
2401
|
}
|
|
2367
2402
|
const nextCustomerId = tempOrder.customer_id ?? null;
|
|
2368
2403
|
if (String(previousCustomerId ?? "") !== String(nextCustomerId ?? "")) {
|
|
2369
|
-
this.store.availableWalletIds = [];
|
|
2370
2404
|
(0, import_utils.clearTempOrderHolderAssignments)(tempOrder);
|
|
2371
2405
|
this.clearCustomerBoundDiscounts(tempOrder);
|
|
2372
2406
|
this.applyDiscount();
|
|
@@ -2406,7 +2440,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
2406
2440
|
tempOrder.customer = null;
|
|
2407
2441
|
if (tempOrder._extend)
|
|
2408
2442
|
delete tempOrder._extend.customerSnapshot;
|
|
2409
|
-
this.store.availableWalletIds = [];
|
|
2410
2443
|
this.clearCustomerBoundDiscounts(tempOrder);
|
|
2411
2444
|
this.persistTempOrder();
|
|
2412
2445
|
this.saveDraftInBackground();
|
|
@@ -3656,8 +3689,8 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
3656
3689
|
const shouldConfirmPendingVoucherPayments = params.confirmPendingVoucherPayments ?? params.submitWhenPaid === true;
|
|
3657
3690
|
const effectivePayments = shouldConfirmPendingVoucherPayments ? this.confirmPendingVoucherPaymentsInList(mappedPayments) : params.confirmPendingVoucherPayments === false ? this.discardPendingVoucherPaymentsFromList(mappedPayments) : mappedPayments;
|
|
3658
3691
|
const completion = this.getPaymentCompletion(effectivePayments);
|
|
3659
|
-
const
|
|
3660
|
-
const paymentStatus = completion.isOrderFullyPaid ? params.paymentStatus || "paid" :
|
|
3692
|
+
const orderPaidPaymentTotal = this.calculateOrderPaidPaymentTotal(effectivePayments);
|
|
3693
|
+
const paymentStatus = completion.isOrderFullyPaid ? params.paymentStatus || "paid" : orderPaidPaymentTotal.gt(0) ? "partially_paid" : "payment_processing";
|
|
3661
3694
|
tempOrder.payments = effectivePayments;
|
|
3662
3695
|
tempOrder.payment_status = paymentStatus;
|
|
3663
3696
|
this.persistTempOrder();
|
|
@@ -3998,7 +4031,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
3998
4031
|
async hydrateTempOrderFromRecord(record, options) {
|
|
3999
4032
|
var _a, _b, _c;
|
|
4000
4033
|
const raw = record && typeof record === "object" && record.data && record.order_id == null ? record.data : record || {};
|
|
4001
|
-
const nextTempOrder = this.normalizeTempOrderForRuntime(raw);
|
|
4034
|
+
const nextTempOrder = this.normalizeTempOrderForRuntime(raw, { makeEditMark: true });
|
|
4002
4035
|
const rawSummary = raw.summary && typeof raw.summary === "object" ? raw.summary : {};
|
|
4003
4036
|
const summarySurcharges = Array.isArray(rawSummary.surcharges) ? rawSummary.surcharges.map((s) => ({ ...s || {} })) : (0, import_lodash_es.cloneDeep)(nextTempOrder.surcharges || []);
|
|
4004
4037
|
this.store.tempOrder = nextTempOrder;
|
|
@@ -4021,14 +4054,25 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
4021
4054
|
this.store.lastOrderInfo = raw.lastOrderInfo || raw;
|
|
4022
4055
|
const hydratedEditDiscounts = this.collectHydratedEditDiscounts(nextTempOrder.products);
|
|
4023
4056
|
const currentDiscounts = typeof ((_a = this.store.discount) == null ? void 0 : _a.getDiscountList) === "function" ? this.store.discount.getDiscountList() || [] : [];
|
|
4024
|
-
const
|
|
4057
|
+
const currentScanDiscounts = currentDiscounts.filter((discount) => discount == null ? void 0 : discount.isScan);
|
|
4058
|
+
const hydratedDiscountIds = new Set(
|
|
4059
|
+
hydratedEditDiscounts.map((discount) => discount == null ? void 0 : discount.id)
|
|
4060
|
+
);
|
|
4061
|
+
const retainedScanDiscounts = currentScanDiscounts.filter(
|
|
4062
|
+
(discount) => !hydratedDiscountIds.has(discount == null ? void 0 : discount.id)
|
|
4063
|
+
);
|
|
4064
|
+
const nextDiscounts = [
|
|
4065
|
+
...hydratedEditDiscounts,
|
|
4066
|
+
...retainedScanDiscounts
|
|
4067
|
+
];
|
|
4068
|
+
const shouldSkipEmptyDiscountSync = nextDiscounts.length === 0 && currentDiscounts.length === 0;
|
|
4025
4069
|
if (!shouldSkipEmptyDiscountSync) {
|
|
4026
4070
|
OrderModule.populateSavedAmounts(
|
|
4027
4071
|
nextTempOrder.products,
|
|
4028
|
-
|
|
4072
|
+
nextDiscounts
|
|
4029
4073
|
);
|
|
4030
|
-
await ((_b = this.store.discount) == null ? void 0 : _b.setOriginalDiscountList(
|
|
4031
|
-
await ((_c = this.store.discount) == null ? void 0 : _c.setDiscountList(
|
|
4074
|
+
await ((_b = this.store.discount) == null ? void 0 : _b.setOriginalDiscountList(nextDiscounts));
|
|
4075
|
+
await ((_c = this.store.discount) == null ? void 0 : _c.setDiscountList(nextDiscounts));
|
|
4032
4076
|
}
|
|
4033
4077
|
if (options == null ? void 0 : options.recalcOnHydrate) {
|
|
4034
4078
|
await this.recalculateSummary({ createIfMissing: false });
|
|
@@ -4085,7 +4129,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
4085
4129
|
nextTempOrder.metadata = raw.metadata && typeof raw.metadata === "object" ? { ...raw.metadata } : {};
|
|
4086
4130
|
nextTempOrder.holder = raw.holder && typeof raw.holder === "object" ? { ...raw.holder } : null;
|
|
4087
4131
|
const rawProducts = Array.isArray(raw.products) ? raw.products : [];
|
|
4088
|
-
nextTempOrder.products = rawProducts.length > 0 ? rawProducts.map((p) => this.normalizeHydratedOrderProduct(p)) : [];
|
|
4132
|
+
nextTempOrder.products = rawProducts.length > 0 ? rawProducts.map((p) => this.normalizeHydratedOrderProduct(p, { makeEditMark: options == null ? void 0 : options.makeEditMark })) : [];
|
|
4089
4133
|
nextTempOrder.bookings = Array.isArray(raw.bookings) ? raw.bookings.map((b) => {
|
|
4090
4134
|
const booking = this.normalizeHydratedBookingHolder(b || {});
|
|
4091
4135
|
return {
|
|
@@ -4231,7 +4275,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
4231
4275
|
normalized.id = optionItem.id;
|
|
4232
4276
|
return normalized;
|
|
4233
4277
|
}
|
|
4234
|
-
normalizeHydratedOrderProduct(product) {
|
|
4278
|
+
normalizeHydratedOrderProduct(product, options) {
|
|
4235
4279
|
let row = { ...product || {} };
|
|
4236
4280
|
if (row.num === void 0 && row.product_quantity !== void 0) {
|
|
4237
4281
|
row.num = row.product_quantity;
|
|
@@ -4258,7 +4302,9 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
4258
4302
|
if (!existingIdentity) {
|
|
4259
4303
|
row.metadata.unique_identification_number = (0, import_utils.createUuidV4)();
|
|
4260
4304
|
}
|
|
4261
|
-
|
|
4305
|
+
if (options == null ? void 0 : options.makeEditMark) {
|
|
4306
|
+
row.metadata.is_edit_for_runtime = true;
|
|
4307
|
+
}
|
|
4262
4308
|
const normalized = (0, import_utils3.normalizeOrderProduct)(row);
|
|
4263
4309
|
normalized.discount_list = (0, import_utils.normalizeOrderProductDiscountList)(
|
|
4264
4310
|
normalized.discount_list
|
|
@@ -309,7 +309,6 @@ export interface OrderState {
|
|
|
309
309
|
lastOrderInfo?: Record<string, any>;
|
|
310
310
|
syncState?: OrderSyncState;
|
|
311
311
|
discountList: any[];
|
|
312
|
-
availableWalletIds?: number[];
|
|
313
312
|
discount: DiscountModule | null;
|
|
314
313
|
rules: RulesModule | null;
|
|
315
314
|
}
|
|
@@ -776,7 +775,6 @@ export interface OrderModuleAPI {
|
|
|
776
775
|
apply?: boolean;
|
|
777
776
|
}) => Promise<Discount[]>;
|
|
778
777
|
getDiscountList: () => Discount[];
|
|
779
|
-
getAvailableWalletIds: () => number[];
|
|
780
778
|
applyDiscount: () => void;
|
|
781
779
|
/**
|
|
782
780
|
* 注入促销评估器。
|
|
@@ -9,26 +9,6 @@ export interface ProductCollection {
|
|
|
9
9
|
/** 商品集合封面 */
|
|
10
10
|
cover: string;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* 商品 Data Variant 记录,结构与后端 data_variant 表对齐。
|
|
14
|
-
*/
|
|
15
|
-
export interface ProductDataVariant {
|
|
16
|
-
/** 变体记录 id */
|
|
17
|
-
id: number;
|
|
18
|
-
/** 店铺 id */
|
|
19
|
-
shop_id: number;
|
|
20
|
-
/** 所属模块,商品场景固定为 product */
|
|
21
|
-
module: string;
|
|
22
|
-
/** 模块数据 id,商品场景对应 product.id */
|
|
23
|
-
module_data_id: number;
|
|
24
|
-
/** 关联 data_variant_rule.id */
|
|
25
|
-
data_variant_rule_id: number;
|
|
26
|
-
/** 命中策略后覆盖到商品上的字段 */
|
|
27
|
-
data: Record<string, any>;
|
|
28
|
-
created_at: string | null;
|
|
29
|
-
updated_at: string | null;
|
|
30
|
-
deleted_at: string | null;
|
|
31
|
-
}
|
|
32
12
|
/**
|
|
33
13
|
* 商品基本信息接口
|
|
34
14
|
*/
|
|
@@ -234,8 +214,6 @@ export interface ProductData {
|
|
|
234
214
|
bundle_group_count: number;
|
|
235
215
|
/** 选项组数量 */
|
|
236
216
|
option_group_count: number;
|
|
237
|
-
/** 智能定价变体列表,/product/query with dataVariants 返回 */
|
|
238
|
-
data_variants?: ProductDataVariant[];
|
|
239
217
|
/** 服务时长 */
|
|
240
218
|
service_times?: any;
|
|
241
219
|
}
|
|
@@ -26,7 +26,7 @@ export declare class ProductList extends BaseModule implements Module {
|
|
|
26
26
|
* const products = await productList.getAddTimeProducts({ schedule_date: '2026-06-16' });
|
|
27
27
|
*/
|
|
28
28
|
getAddTimeProducts(params?: ProductListLoadProductsParams): Promise<any>;
|
|
29
|
-
loadProducts({ category_ids, product_ids, collection, menu_list_ids, customer_id: paramsCustomerId, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, extension_type, status,
|
|
29
|
+
loadProducts({ category_ids, product_ids, collection, menu_list_ids, customer_id: paramsCustomerId, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, extension_type, status, }?: ProductListLoadProductsParams, options?: {
|
|
30
30
|
callback?: (result: any) => void;
|
|
31
31
|
subscriberId?: string;
|
|
32
32
|
}): Promise<any>;
|
|
@@ -95,8 +95,7 @@ var ProductList = class extends import_BaseModule.BaseModule {
|
|
|
95
95
|
cacheId,
|
|
96
96
|
with_schedule,
|
|
97
97
|
extension_type,
|
|
98
|
-
status = "published"
|
|
99
|
-
strategy_context
|
|
98
|
+
status = "published"
|
|
100
99
|
} = {}, options) {
|
|
101
100
|
var _a, _b;
|
|
102
101
|
let userPlugin = this.core.getPlugin("user");
|
|
@@ -136,8 +135,7 @@ var ProductList = class extends import_BaseModule.BaseModule {
|
|
|
136
135
|
is_eject: 1,
|
|
137
136
|
with_schedule,
|
|
138
137
|
schedule_datetime,
|
|
139
|
-
extension_type
|
|
140
|
-
strategy_context
|
|
138
|
+
extension_type
|
|
141
139
|
},
|
|
142
140
|
{ osServer: true, callback: options == null ? void 0 : options.callback, subscriberId: options == null ? void 0 : options.subscriberId, customToast: () => {
|
|
143
141
|
} }
|
|
@@ -12,8 +12,6 @@ export interface ProductListLoadProductsParams {
|
|
|
12
12
|
with_schedule?: number;
|
|
13
13
|
extension_type?: string[];
|
|
14
14
|
status?: string;
|
|
15
|
-
/** 智能定价条件上下文,仅影响策略命中,不参与商品集合筛选 */
|
|
16
|
-
strategy_context?: Record<string, any>;
|
|
17
15
|
}
|
|
18
16
|
export interface ProductListData {
|
|
19
17
|
list: ProductData[];
|
package/lib/server/index.d.ts
CHANGED
|
@@ -47,8 +47,6 @@ declare class Server {
|
|
|
47
47
|
private prefixRouterGet;
|
|
48
48
|
router: Router;
|
|
49
49
|
private productQuerySubscribers;
|
|
50
|
-
/** subscriberId → 智能定价变价时间点定时器句柄(与 subscriber 分离存储,便于 clear) */
|
|
51
|
-
private productQueryScheduleTimers;
|
|
52
50
|
private orderQuerySubscribers;
|
|
53
51
|
private bookingQuerySubscribers;
|
|
54
52
|
private bookingRemoteQuerySubscribers;
|
|
@@ -212,48 +210,6 @@ declare class Server {
|
|
|
212
210
|
* 根据 subscriberId 移除商品查询订阅者
|
|
213
211
|
*/
|
|
214
212
|
removeProductQuerySubscriber(subscriberId?: string): void;
|
|
215
|
-
/**
|
|
216
|
-
* 构建商品 query 响应 data 段,附带智能定价 schedule_time_points 元数据。
|
|
217
|
-
*/
|
|
218
|
-
private buildProductQueryResultPayload;
|
|
219
|
-
/**
|
|
220
|
-
* 是否启用商品 query 订阅的 schedule 时间点定时重算。
|
|
221
|
-
* strategy_context.enable_schedule_reload === false 时关闭。
|
|
222
|
-
*/
|
|
223
|
-
private shouldScheduleProductQueryReload;
|
|
224
|
-
/**
|
|
225
|
-
* 清除指定 subscriber 的全部 schedule 定时器,防止重复 query 或 unsubscribe 后泄漏。
|
|
226
|
-
*/
|
|
227
|
-
private clearSubscriberScheduleTimers;
|
|
228
|
-
/**
|
|
229
|
-
* 从 productQueryScheduleTimers 移除已触发的 timer 引用。
|
|
230
|
-
*/
|
|
231
|
-
private removeScheduleTimerRef;
|
|
232
|
-
/**
|
|
233
|
-
* 计算 schedule 变价时间点到当前时刻的延迟(ms)。已过期返回 -1。
|
|
234
|
-
*/
|
|
235
|
-
private computeScheduleTimePointDelayMs;
|
|
236
|
-
/**
|
|
237
|
-
* 定时重算前刷新 subscriber schedule 上下文:使用执行瞬间时间,禁止沿用首次 query 的 schedule_datetime。
|
|
238
|
-
*/
|
|
239
|
-
private refreshSubscriberScheduleAtExecution;
|
|
240
|
-
/**
|
|
241
|
-
* 为 subscriber 注册智能定价 scheduleTimePoints 定时重算。
|
|
242
|
-
* 必须先 clearSubscriberScheduleTimers,再调用本方法。
|
|
243
|
-
*/
|
|
244
|
-
private scheduleSubscriberTimePointReloads;
|
|
245
|
-
/**
|
|
246
|
-
* schedule 变价时间点定时器触发:刷新 schedule_datetime 后重算并 callback。
|
|
247
|
-
*/
|
|
248
|
-
private onScheduleTimePointTimerFire;
|
|
249
|
-
/**
|
|
250
|
-
* 对单个商品 query 订阅者重算并推送(定时路径;不新建 schedule timer)。
|
|
251
|
-
*/
|
|
252
|
-
private recomputeAndNotifySubscriber;
|
|
253
|
-
/**
|
|
254
|
-
* query 完成后为 subscriber 同步 schedule 定时器(先 clear 再 schedule)。
|
|
255
|
-
*/
|
|
256
|
-
private syncProductQueryScheduleTimers;
|
|
257
213
|
/**
|
|
258
214
|
* 处理商品查询请求
|
|
259
215
|
* 存储订阅者信息,便于数据变更时推送最新结果
|
|
@@ -614,12 +570,6 @@ declare class Server {
|
|
|
614
570
|
* @param options.changedIds 变更的商品 IDs,用于增量更新价格缓存
|
|
615
571
|
*/
|
|
616
572
|
private computeProductQueryResult;
|
|
617
|
-
/**
|
|
618
|
-
* 构建商品格式化上下文。
|
|
619
|
-
*
|
|
620
|
-
* 智能定价条件使用全量 menuList/scheduleList;Product Query 顶层参数只保留筛选商品集合所需字段。
|
|
621
|
-
*/
|
|
622
|
-
private buildProductFormatterContext;
|
|
623
573
|
/**
|
|
624
574
|
* 数据变更后,遍历所有订阅者重新计算查询结果并通过 callback 推送
|
|
625
575
|
* 由 ProductsModule 的 onProductsSyncCompleted 事件触发
|