@pisell/pisellos 2.3.74 → 2.3.76
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.js +6 -10
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +2 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +75 -91
- package/dist/modules/Order/types.d.ts +3 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Rules/index.js +1 -4
- package/dist/modules/Schedule/index.js +0 -1
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +97 -129
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/order/index.js +2 -4
- package/dist/server/modules/products/index.js +24 -42
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +27 -35
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BaseSales/index.js +100 -72
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.js +0 -2
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -252
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.js +45 -55
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +134 -134
- package/lib/effects/index.js +46 -57
- package/lib/index.js +82 -49
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
- package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
- package/lib/model/strategy/adapter/promotion/examples.js +222 -234
- package/lib/model/strategy/adapter/promotion/index.js +1 -0
- package/lib/model/strategy/adapter/promotion/type.js +243 -36
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +23 -42
- package/lib/modules/BookingContext/index.js +158 -136
- package/lib/modules/BookingContext/types.js +46 -32
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
- package/lib/modules/BookingContext/utils/flexible.js +38 -55
- package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
- package/lib/modules/BookingContext/utils/index.js +124 -41
- package/lib/modules/BookingContext/utils/noResource.js +58 -70
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
- package/lib/modules/BookingContext/utils/productExtend.js +202 -155
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
- package/lib/modules/BookingContext/utils/resources.js +209 -167
- package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
- package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +321 -251
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +70 -78
- package/lib/modules/Cart/utils/changePrice.js +22 -50
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +235 -172
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +122 -127
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +70 -76
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +1733 -2121
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +3 -1
- package/lib/modules/Order/types.js +88 -35
- package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
- package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
- package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
- package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
- package/lib/modules/Order/utils.js +814 -647
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +532 -399
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +230 -108
- package/lib/modules/Payment/utils.js +52 -51
- package/lib/modules/Payment/walletpass.js +485 -660
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +113 -123
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +81 -118
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/ResourcePlanner/index.js +25 -23
- package/lib/modules/ResourcePlanner/localClock.js +54 -119
- package/lib/modules/ResourcePlanner/planner.js +589 -770
- package/lib/modules/ResourcePlanner/types.js +10 -29
- package/lib/modules/Rules/index.js +1218 -959
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +85 -90
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +355 -430
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
- package/lib/modules/Schedule/index.js +100 -114
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -71
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.js +773 -418
- package/lib/modules/SurchargeList/index.js +46 -60
- package/lib/modules/SurchargeList/types.js +4 -16
- package/lib/modules/index.js +245 -63
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +3050 -2665
- package/lib/server/modules/floor-plan/index.js +118 -134
- package/lib/server/modules/floor-plan/types.js +15 -30
- package/lib/server/modules/index.js +106 -68
- package/lib/server/modules/menu/index.js +142 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +784 -1002
- package/lib/server/modules/order/types.js +122 -33
- package/lib/server/modules/order/utils/filterBookings.js +219 -194
- package/lib/server/modules/order/utils/filterOrders.js +118 -92
- package/lib/server/modules/payment/index.js +59 -83
- package/lib/server/modules/payment/types.js +4 -16
- package/lib/server/modules/products/index.js +583 -471
- package/lib/server/modules/products/types.js +44 -34
- package/lib/server/modules/quotation/index.js +137 -172
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +220 -186
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +135 -123
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/small-ticket.js +479 -456
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BaseSales/index.js +1220 -1412
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
- package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
- package/lib/solution/BaseSales/utils.js +158 -143
- package/lib/solution/BookingByStep/index.js +1527 -1340
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.js +607 -522
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
- package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
- package/lib/solution/BookingTicket/utils/cartView.js +114 -99
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
- package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +228 -156
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +328 -324
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +832 -864
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +409 -374
- package/lib/solution/ShopDiscount/index.js +226 -232
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +300 -172
- package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
- package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
- package/lib/solution/UnifiedBookingSales/types.js +10 -32
- package/lib/solution/VenueBooking/index.js +811 -879
- package/lib/solution/VenueBooking/types.js +19 -39
- package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
- package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +124 -41
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/payment-number.js +26 -46
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
|
@@ -1,84 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(payment_utils_exports, {
|
|
22
|
-
ensureOrderPaymentNumber: () => ensureOrderPaymentNumber,
|
|
23
|
-
getOrderPaymentIdentityKeys: () => getOrderPaymentIdentityKeys,
|
|
24
|
-
hasOrderPaymentIdentityOverlap: () => hasOrderPaymentIdentityOverlap,
|
|
25
|
-
isIdentifiedPendingOrderPayment: () => isIdentifiedPendingOrderPayment,
|
|
26
|
-
isPendingOrderPayment: () => isPendingOrderPayment,
|
|
27
|
-
mergeOrderPaymentListsByIdentity: () => mergeOrderPaymentListsByIdentity,
|
|
28
|
-
mergeOrderPaymentRecord: () => mergeOrderPaymentRecord,
|
|
29
|
-
mergeOrderPaymentSnapshot: () => mergeOrderPaymentSnapshot,
|
|
30
|
-
mergeOrderPaymentTransactions: () => mergeOrderPaymentTransactions,
|
|
31
|
-
resolveOrderPaymentIdentity: () => resolveOrderPaymentIdentity
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
32
5
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
6
|
+
exports.ensureOrderPaymentNumber = ensureOrderPaymentNumber;
|
|
7
|
+
exports.getOrderPaymentIdentityKeys = getOrderPaymentIdentityKeys;
|
|
8
|
+
exports.hasOrderPaymentIdentityOverlap = hasOrderPaymentIdentityOverlap;
|
|
9
|
+
exports.isIdentifiedPendingOrderPayment = isIdentifiedPendingOrderPayment;
|
|
10
|
+
exports.isPendingOrderPayment = isPendingOrderPayment;
|
|
11
|
+
exports.mergeOrderPaymentListsByIdentity = mergeOrderPaymentListsByIdentity;
|
|
12
|
+
exports.mergeOrderPaymentRecord = mergeOrderPaymentRecord;
|
|
13
|
+
exports.mergeOrderPaymentSnapshot = mergeOrderPaymentSnapshot;
|
|
14
|
+
exports.mergeOrderPaymentTransactions = mergeOrderPaymentTransactions;
|
|
15
|
+
exports.resolveOrderPaymentIdentity = resolveOrderPaymentIdentity;
|
|
16
|
+
const PAYMENT_IDENTITY_TYPES = ['payment_number', 'order_payment_id', 'unique_payment_number'];
|
|
39
17
|
function normalizePaymentIdentityValue(value) {
|
|
40
|
-
if (value ===
|
|
41
|
-
return null;
|
|
18
|
+
if (value === undefined || value === null || value === '') return null;
|
|
42
19
|
return String(value);
|
|
43
20
|
}
|
|
44
21
|
function getPaymentIdentityValue(payment, type) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return (_a = payment == null ? void 0 : payment.metadata) == null ? void 0 : _a.unique_payment_number;
|
|
22
|
+
if (type === 'unique_payment_number') {
|
|
23
|
+
return payment?.metadata?.unique_payment_number;
|
|
48
24
|
}
|
|
49
|
-
return payment
|
|
25
|
+
return payment?.[type];
|
|
50
26
|
}
|
|
51
27
|
function getOrderPaymentIdentityKeys(payment) {
|
|
52
28
|
const record = payment;
|
|
53
|
-
if (!record)
|
|
54
|
-
|
|
55
|
-
return PAYMENT_IDENTITY_TYPES.flatMap((type) => {
|
|
29
|
+
if (!record) return [];
|
|
30
|
+
return PAYMENT_IDENTITY_TYPES.flatMap(type => {
|
|
56
31
|
const value = normalizePaymentIdentityValue(getPaymentIdentityValue(record, type));
|
|
57
32
|
return value === null ? [] : [`${type}:${value}`];
|
|
58
33
|
});
|
|
59
34
|
}
|
|
60
35
|
function isPendingOrderPayment(payment) {
|
|
61
36
|
const record = payment;
|
|
62
|
-
return String(
|
|
37
|
+
return String(record?.status || '').toLowerCase() === 'payment_pending';
|
|
63
38
|
}
|
|
64
39
|
function isIdentifiedPendingOrderPayment(payment) {
|
|
65
40
|
return isPendingOrderPayment(payment) && getOrderPaymentIdentityKeys(payment).length > 0;
|
|
66
41
|
}
|
|
67
42
|
function hasOrderPaymentIdentityOverlap(left, right) {
|
|
68
43
|
const leftKeys = new Set(getOrderPaymentIdentityKeys(left));
|
|
69
|
-
if (leftKeys.size === 0)
|
|
70
|
-
|
|
71
|
-
return getOrderPaymentIdentityKeys(right).some((key) => leftKeys.has(key));
|
|
44
|
+
if (leftKeys.size === 0) return false;
|
|
45
|
+
return getOrderPaymentIdentityKeys(right).some(key => leftKeys.has(key));
|
|
72
46
|
}
|
|
73
|
-
function resolveOrderPaymentIdentity(payments, identity, mode =
|
|
47
|
+
function resolveOrderPaymentIdentity(payments, identity, mode = 'payment_number') {
|
|
74
48
|
const target = String(identity);
|
|
75
|
-
const identityTypes = mode ===
|
|
76
|
-
const matchesByIndex =
|
|
49
|
+
const identityTypes = mode === 'payment_number' ? ['payment_number'] : PAYMENT_IDENTITY_TYPES;
|
|
50
|
+
const matchesByIndex = new Map();
|
|
77
51
|
for (const type of identityTypes) {
|
|
78
52
|
(payments || []).forEach((payment, index) => {
|
|
79
53
|
const value = normalizePaymentIdentityValue(getPaymentIdentityValue(payment, type));
|
|
80
54
|
if (value === target && !matchesByIndex.has(index)) {
|
|
81
|
-
matchesByIndex.set(index, {
|
|
55
|
+
matchesByIndex.set(index, {
|
|
56
|
+
index,
|
|
57
|
+
payment,
|
|
58
|
+
matchedBy: type
|
|
59
|
+
});
|
|
82
60
|
}
|
|
83
61
|
});
|
|
84
62
|
}
|
|
@@ -90,26 +68,32 @@ function resolveOrderPaymentIdentity(payments, identity, mode = "payment_number"
|
|
|
90
68
|
}
|
|
91
69
|
function ensureOrderPaymentNumber(payment, devicePrefix, createPaymentNumber) {
|
|
92
70
|
const existing = normalizePaymentIdentityValue(payment.payment_number);
|
|
93
|
-
if (existing)
|
|
94
|
-
|
|
71
|
+
if (existing) return {
|
|
72
|
+
...payment,
|
|
73
|
+
payment_number: existing
|
|
74
|
+
};
|
|
95
75
|
const uuid = normalizePaymentIdentityValue(payment.uuid) || createPaymentNumber();
|
|
96
|
-
const prefix = normalizePaymentIdentityValue(devicePrefix) ||
|
|
97
|
-
|
|
76
|
+
const prefix = normalizePaymentIdentityValue(devicePrefix) || 'LOCAL';
|
|
77
|
+
// TODO: 使用 ID Generator 替换当前 UUID 段生成器。
|
|
78
|
+
return {
|
|
79
|
+
...payment,
|
|
80
|
+
payment_number: `${prefix}_${uuid}`
|
|
81
|
+
};
|
|
98
82
|
}
|
|
99
83
|
function mergeOrderPaymentTransactions(current, incoming) {
|
|
100
|
-
const records =
|
|
101
|
-
const append =
|
|
102
|
-
if (!Array.isArray(value))
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
if (!number || status !== "success" && status !== "fail")
|
|
108
|
-
return;
|
|
84
|
+
const records = new Map();
|
|
85
|
+
const append = value => {
|
|
86
|
+
if (!Array.isArray(value)) return;
|
|
87
|
+
value.forEach(item => {
|
|
88
|
+
const number = item && typeof item === 'object' ? String(item.number || '') : '';
|
|
89
|
+
const status = item && typeof item === 'object' ? item.status : undefined;
|
|
90
|
+
if (!number || status !== 'success' && status !== 'fail') return;
|
|
109
91
|
const previous = records.get(number);
|
|
110
|
-
if (
|
|
111
|
-
|
|
112
|
-
|
|
92
|
+
if (previous?.status === 'success' && status === 'fail') return;
|
|
93
|
+
records.set(number, {
|
|
94
|
+
number,
|
|
95
|
+
status
|
|
96
|
+
});
|
|
113
97
|
});
|
|
114
98
|
};
|
|
115
99
|
append(current);
|
|
@@ -119,12 +103,9 @@ function mergeOrderPaymentTransactions(current, incoming) {
|
|
|
119
103
|
function mergeOrderPaymentRecord(payment, updates) {
|
|
120
104
|
const currentMetadata = payment.metadata || {};
|
|
121
105
|
const incomingMetadata = updates.metadata || {};
|
|
122
|
-
const transactions = mergeOrderPaymentTransactions(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
);
|
|
126
|
-
const currentPaid = payment.status === "paid";
|
|
127
|
-
const nextStatus = currentPaid && updates.status !== "paid" ? "paid" : updates.status ?? payment.status;
|
|
106
|
+
const transactions = mergeOrderPaymentTransactions(currentMetadata.transactions, incomingMetadata.transactions);
|
|
107
|
+
const currentPaid = payment.status === 'paid';
|
|
108
|
+
const nextStatus = currentPaid && updates.status !== 'paid' ? 'paid' : updates.status ?? payment.status;
|
|
128
109
|
return {
|
|
129
110
|
...payment,
|
|
130
111
|
...updates,
|
|
@@ -133,30 +114,21 @@ function mergeOrderPaymentRecord(payment, updates) {
|
|
|
133
114
|
metadata: {
|
|
134
115
|
...currentMetadata,
|
|
135
116
|
...incomingMetadata,
|
|
136
|
-
...transactions.length > 0 || Array.isArray(incomingMetadata.transactions) ? {
|
|
117
|
+
...(transactions.length > 0 || Array.isArray(incomingMetadata.transactions) ? {
|
|
118
|
+
transactions
|
|
119
|
+
} : {})
|
|
137
120
|
}
|
|
138
121
|
};
|
|
139
122
|
}
|
|
140
123
|
function mergeOrderPaymentSnapshot(current, incoming) {
|
|
141
124
|
const currentMetadata = current.metadata || {};
|
|
142
125
|
const incomingMetadata = incoming.metadata || {};
|
|
143
|
-
const currentUniquePaymentNumber = normalizePaymentIdentityValue(
|
|
144
|
-
|
|
145
|
-
);
|
|
146
|
-
const incomingUniquePaymentNumber = normalizePaymentIdentityValue(
|
|
147
|
-
incomingMetadata.unique_payment_number
|
|
148
|
-
);
|
|
149
|
-
const incomingOrderPaymentId = normalizePaymentIdentityValue(
|
|
150
|
-
incoming.order_payment_id
|
|
151
|
-
);
|
|
126
|
+
const currentUniquePaymentNumber = normalizePaymentIdentityValue(currentMetadata.unique_payment_number);
|
|
127
|
+
const incomingUniquePaymentNumber = normalizePaymentIdentityValue(incomingMetadata.unique_payment_number);
|
|
128
|
+
const incomingOrderPaymentId = normalizePaymentIdentityValue(incoming.order_payment_id);
|
|
152
129
|
const incomingFallbackPrefix = incomingOrderPaymentId ? `os-fallback:payment:order-payment:${incomingOrderPaymentId}` : null;
|
|
153
|
-
const incomingUsesDerivedUniquePaymentNumber = Boolean(
|
|
154
|
-
|
|
155
|
-
);
|
|
156
|
-
const transactions = mergeOrderPaymentTransactions(
|
|
157
|
-
currentMetadata.transactions,
|
|
158
|
-
incomingMetadata.transactions
|
|
159
|
-
);
|
|
130
|
+
const incomingUsesDerivedUniquePaymentNumber = Boolean(incomingUniquePaymentNumber && incomingFallbackPrefix && (incomingUniquePaymentNumber === incomingFallbackPrefix || incomingUniquePaymentNumber.startsWith(`${incomingFallbackPrefix}:conflict:`)));
|
|
131
|
+
const transactions = mergeOrderPaymentTransactions(currentMetadata.transactions, incomingMetadata.transactions);
|
|
160
132
|
return {
|
|
161
133
|
...current,
|
|
162
134
|
...incoming,
|
|
@@ -165,8 +137,12 @@ function mergeOrderPaymentSnapshot(current, incoming) {
|
|
|
165
137
|
metadata: {
|
|
166
138
|
...currentMetadata,
|
|
167
139
|
...incomingMetadata,
|
|
168
|
-
...incomingUsesDerivedUniquePaymentNumber && currentUniquePaymentNumber ? {
|
|
169
|
-
|
|
140
|
+
...(incomingUsesDerivedUniquePaymentNumber && currentUniquePaymentNumber ? {
|
|
141
|
+
unique_payment_number: currentUniquePaymentNumber
|
|
142
|
+
} : {}),
|
|
143
|
+
...(transactions.length > 0 ? {
|
|
144
|
+
transactions
|
|
145
|
+
} : {})
|
|
170
146
|
}
|
|
171
147
|
};
|
|
172
148
|
}
|
|
@@ -191,34 +167,15 @@ function compactOrderPaymentList(payments) {
|
|
|
191
167
|
return result;
|
|
192
168
|
}
|
|
193
169
|
function mergeOrderPaymentListsByIdentity(existing, incoming, options = {}) {
|
|
194
|
-
const existingList = compactOrderPaymentList([...existing || []]);
|
|
195
|
-
const incomingList = compactOrderPaymentList([...incoming || []]);
|
|
170
|
+
const existingList = compactOrderPaymentList([...(existing || [])]);
|
|
171
|
+
const incomingList = compactOrderPaymentList([...(incoming || [])]);
|
|
196
172
|
if (options.preserveUnmatchedExisting) {
|
|
197
173
|
return compactOrderPaymentList([...existingList, ...incomingList]);
|
|
198
174
|
}
|
|
199
|
-
const mergedIncoming = incomingList.map(
|
|
200
|
-
const matchingExisting = existingList.filter(
|
|
201
|
-
return matchingExisting.reduce(
|
|
202
|
-
(merged, existingPayment) => mergeOrderPaymentSnapshot(existingPayment, merged),
|
|
203
|
-
incomingPayment
|
|
204
|
-
);
|
|
175
|
+
const mergedIncoming = incomingList.map(incomingPayment => {
|
|
176
|
+
const matchingExisting = existingList.filter(existingPayment => hasOrderPaymentIdentityOverlap(existingPayment, incomingPayment));
|
|
177
|
+
return matchingExisting.reduce((merged, existingPayment) => mergeOrderPaymentSnapshot(existingPayment, merged), incomingPayment);
|
|
205
178
|
});
|
|
206
|
-
const preservedExisting = options.preserveUnmatchedExistingWhen ? existingList.filter((existingPayment)
|
|
207
|
-
var _a;
|
|
208
|
-
return !incomingList.some((incomingPayment) => hasOrderPaymentIdentityOverlap(existingPayment, incomingPayment)) && ((_a = options.preserveUnmatchedExistingWhen) == null ? void 0 : _a.call(options, existingPayment));
|
|
209
|
-
}) : [];
|
|
179
|
+
const preservedExisting = options.preserveUnmatchedExistingWhen ? existingList.filter(existingPayment => !incomingList.some(incomingPayment => hasOrderPaymentIdentityOverlap(existingPayment, incomingPayment)) && options.preserveUnmatchedExistingWhen?.(existingPayment)) : [];
|
|
210
180
|
return compactOrderPaymentList([...mergedIncoming, ...preservedExisting]);
|
|
211
|
-
}
|
|
212
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
213
|
-
0 && (module.exports = {
|
|
214
|
-
ensureOrderPaymentNumber,
|
|
215
|
-
getOrderPaymentIdentityKeys,
|
|
216
|
-
hasOrderPaymentIdentityOverlap,
|
|
217
|
-
isIdentifiedPendingOrderPayment,
|
|
218
|
-
isPendingOrderPayment,
|
|
219
|
-
mergeOrderPaymentListsByIdentity,
|
|
220
|
-
mergeOrderPaymentRecord,
|
|
221
|
-
mergeOrderPaymentSnapshot,
|
|
222
|
-
mergeOrderPaymentTransactions,
|
|
223
|
-
resolveOrderPaymentIdentity
|
|
224
|
-
});
|
|
181
|
+
}
|
|
@@ -330,6 +330,8 @@ export type AddProductBookingInput = Record<string, any>;
|
|
|
330
330
|
*/
|
|
331
331
|
export interface AddProductToOrderOptions {
|
|
332
332
|
insertAfterProductUid?: string;
|
|
333
|
+
/** 跳过同商品/规格匹配,始终新增购物车行。 */
|
|
334
|
+
disableMerge?: boolean;
|
|
333
335
|
}
|
|
334
336
|
/**
|
|
335
337
|
* 删除商品后的可选位置保持策略。
|
|
@@ -821,7 +823,7 @@ export interface OrderModuleAPI {
|
|
|
821
823
|
saveDraft: () => Promise<void>;
|
|
822
824
|
hydrateTempOrderFromRecord: (record: Record<string, any>, options?: {
|
|
823
825
|
recalcOnHydrate?: boolean;
|
|
824
|
-
source?: 'salesDetail' | 'sessionStorage';
|
|
826
|
+
source?: 'salesDetail' | 'mergedSalesDetail' | 'sessionStorage';
|
|
825
827
|
}) => Promise<OrderTempOrder>;
|
|
826
828
|
syncPaymentsToOrder: <T = any>(params: SyncPaymentsToOrderParams) => Promise<SyncPaymentsToOrderResult<T>>;
|
|
827
829
|
getSalesOrderByLookup: (params: SalesOrderLookupParams) => Promise<any>;
|
|
@@ -1,37 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(types_exports, {
|
|
22
|
-
OrderHooks: () => OrderHooks
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(types_exports);
|
|
25
|
-
var OrderHooks = /* @__PURE__ */ ((OrderHooks2) => {
|
|
26
|
-
OrderHooks2["OnOrderCreate"] = "order:onOrderCreate";
|
|
27
|
-
OrderHooks2["OnOrderUpdate"] = "order:onOrderUpdate";
|
|
28
|
-
OrderHooks2["OnOrderCancel"] = "order:onOrderCancel";
|
|
29
|
-
OrderHooks2["OnOrderStatusChange"] = "order:onOrderStatusChange";
|
|
30
|
-
OrderHooks2["OnOrderCustomerChange"] = "order:onOrderCustomerChange";
|
|
31
|
-
OrderHooks2["OnPromotionApplied"] = "order:onPromotionApplied";
|
|
32
|
-
return OrderHooks2;
|
|
33
|
-
})(OrderHooks || {});
|
|
34
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
35
|
-
0 && (module.exports = {
|
|
36
|
-
OrderHooks
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
37
5
|
});
|
|
6
|
+
exports.OrderHooks = void 0;
|
|
7
|
+
let OrderHooks = exports.OrderHooks = /*#__PURE__*/function (OrderHooks) {
|
|
8
|
+
OrderHooks["OnOrderCreate"] = "order:onOrderCreate";
|
|
9
|
+
OrderHooks["OnOrderUpdate"] = "order:onOrderUpdate";
|
|
10
|
+
OrderHooks["OnOrderCancel"] = "order:onOrderCancel";
|
|
11
|
+
OrderHooks["OnOrderStatusChange"] = "order:onOrderStatusChange";
|
|
12
|
+
OrderHooks["OnOrderCustomerChange"] = "order:onOrderCustomerChange";
|
|
13
|
+
OrderHooks["OnPromotionApplied"] = "order:onPromotionApplied";
|
|
14
|
+
return OrderHooks;
|
|
15
|
+
}({});
|
|
16
|
+
/**
|
|
17
|
+
* 促销评估器协议(OS 与 PromotionEvaluator 之间的桥接接口)。
|
|
18
|
+
*
|
|
19
|
+
* 与 `pisell_os/src/model/strategy/adapter/promotion/evaluator.ts` 中的
|
|
20
|
+
* `PromotionEvaluator` 实例结构保持兼容。SalesSdkProvider 会从 `appHelper.utils.promotionEvaluator`
|
|
21
|
+
* 读取实例并通过 `setPromotionEvaluator` 注入到 OrderModule。
|
|
22
|
+
*
|
|
23
|
+
* 这里只声明 OrderModule 需要调用的子集,避免反向依赖具体 evaluator 实现。
|
|
24
|
+
*/
|
|
25
|
+
/** 赠品解析回调 context(OS → SDK 的请求体) */
|
|
26
|
+
/**
|
|
27
|
+
* 赠品 resolver 返回值。
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* return { products: [giftProduct], bookings: [giftBooking] };
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* 赠品解析回调签名(SDK → OS 的返回值)。
|
|
34
|
+
*
|
|
35
|
+
* - 单选项:SDK 内部自动构造商品,不弹窗
|
|
36
|
+
* - 多选项:SDK 弹窗等用户确认后构造
|
|
37
|
+
* - 用户取消:抛错或返回空数组(OS 视为放弃本次添加)
|
|
38
|
+
*
|
|
39
|
+
* 返回数组时沿用旧协议,只写 tempOrder.products;返回对象时可同时写入预约 bookings。
|
|
40
|
+
*/
|
|
41
|
+
/** 未满足的促销策略(购物车底部 alert 渲染源) */
|
|
42
|
+
/** 上一次 applyPromotion 计算出的赠品操作(仅供调试/读取使用) */
|
|
43
|
+
/** onPromotionApplied 事件 payload */
|
|
44
|
+
/**
|
|
45
|
+
* tempOrder 上的下单客户协议字段视图。
|
|
46
|
+
* 这些字段会随订单提交到后端。
|
|
47
|
+
*
|
|
48
|
+
* customer_id 与 OrderTempOrder.customer_id 保持一致(number | null),
|
|
49
|
+
* 调用方若持有 string id(如 ICustomer.id 联合类型),需自行 Number() 转型。
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* 写入下单客户的协议字段输入。
|
|
53
|
+
* `customer_id` 必传(null 表示无客户);其余字段缺省视为「清空」(全量覆盖语义)。
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* 下单客户变更事件 payload。
|
|
57
|
+
* - `patch`:tempOrder 上的协议字段视图(会随订单提交)
|
|
58
|
+
* - `snapshot`:UI 富字段快照(仅本地,不随订单提交)
|
|
59
|
+
* - `source`:缺省表示真实业务变更;`detailHydrate` 仅表示打开详情时快照已就绪
|
|
60
|
+
* 清空时整个 payload 为 null。
|
|
61
|
+
*/
|
|
62
|
+
/**
|
|
63
|
+
* 添加商品行时的顺序控制。
|
|
64
|
+
* 默认追加到 products 尾部;预约数量同步可插入到既有预约组的最新行之后,
|
|
65
|
+
* 避免步进器修改数量改变该组展示位置。
|
|
66
|
+
*/
|
|
67
|
+
/**
|
|
68
|
+
* 删除商品后的可选位置保持策略。
|
|
69
|
+
* 预约合并行减量时仍删除最新真实行,再把剩余代表行移动到被删除代表行原位置。
|
|
70
|
+
*/
|
|
71
|
+
/** 更新购物车行:仅传 SKU 时命中同 SKU 第一行;多行同 SKU 须传 unique_identification_number / 选项指纹等 */
|
|
72
|
+
/** 仅更新购物车行数量;行定位语义与 updateOrderProduct / removeProductFromOrder 保持一致 */
|
|
73
|
+
/**
|
|
74
|
+
* 订单信息
|
|
75
|
+
*/
|
|
76
|
+
/**
|
|
77
|
+
* 支付项数据
|
|
78
|
+
*/
|
|
79
|
+
/**
|
|
80
|
+
* Checkout 专用订单创建参数
|
|
81
|
+
*/
|
|
82
|
+
/**
|
|
83
|
+
* 取消订单参数
|
|
84
|
+
*/
|
|
85
|
+
/**
|
|
86
|
+
* 变更预约状态参数
|
|
87
|
+
*/
|
|
88
|
+
/**
|
|
89
|
+
* 订单模块 API
|
|
90
|
+
*/
|
|
@@ -1,99 +1,72 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(bundleDiscountHydration_exports, {
|
|
22
|
-
expandHydratedProductsForDiscountCollection: () => expandHydratedProductsForDiscountCollection,
|
|
23
|
-
restoreHydratedBundleDiscounts: () => restoreHydratedBundleDiscounts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
24
5
|
});
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
exports.expandHydratedProductsForDiscountCollection = expandHydratedProductsForDiscountCollection;
|
|
7
|
+
exports.restoreHydratedBundleDiscounts = restoreHydratedBundleDiscounts;
|
|
8
|
+
const BUNDLE_MAP_ID_KEY = 'custom_product_bundle_map_id';
|
|
27
9
|
function getBundleMapId(bundle) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (metadataMapId !== void 0 && metadataMapId !== null && metadataMapId !== "") {
|
|
10
|
+
const metadataMapId = bundle?.metadata?.[BUNDLE_MAP_ID_KEY];
|
|
11
|
+
if (metadataMapId !== undefined && metadataMapId !== null && metadataMapId !== '') {
|
|
31
12
|
return String(metadataMapId);
|
|
32
13
|
}
|
|
33
|
-
if (
|
|
14
|
+
if (bundle?._id !== undefined && bundle._id !== null && bundle._id !== '') {
|
|
34
15
|
return String(bundle._id);
|
|
35
16
|
}
|
|
36
17
|
return null;
|
|
37
18
|
}
|
|
38
19
|
function getDiscountBundleMapId(discount) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (mapId === void 0 || mapId === null || mapId === "")
|
|
42
|
-
return null;
|
|
20
|
+
const mapId = discount?.metadata?.[BUNDLE_MAP_ID_KEY];
|
|
21
|
+
if (mapId === undefined || mapId === null || mapId === '') return null;
|
|
43
22
|
return String(mapId);
|
|
44
23
|
}
|
|
45
24
|
function hasSameBundleDiscount(discountList, discount) {
|
|
46
|
-
var _a;
|
|
47
25
|
const targetOrderDiscountId = discount.order_discount_id;
|
|
48
|
-
if (targetOrderDiscountId !==
|
|
49
|
-
return discountList.some(
|
|
26
|
+
if (targetOrderDiscountId !== undefined && targetOrderDiscountId !== null) {
|
|
27
|
+
return discountList.some(item => item?.order_discount_id === targetOrderDiscountId);
|
|
50
28
|
}
|
|
51
|
-
const targetResourceId =
|
|
29
|
+
const targetResourceId = discount?.discount?.resource_id ?? discount?.resource_id ?? discount?.discount_id;
|
|
52
30
|
const targetMapId = getDiscountBundleMapId(discount);
|
|
53
|
-
return discountList.some(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return resourceId === targetResourceId && String((item == null ? void 0 : item.amount) ?? "") === String((discount == null ? void 0 : discount.amount) ?? "") && getDiscountBundleMapId(item) === targetMapId;
|
|
31
|
+
return discountList.some(item => {
|
|
32
|
+
const resourceId = item?.discount?.resource_id ?? item?.resource_id ?? item?.discount_id;
|
|
33
|
+
return resourceId === targetResourceId && String(item?.amount ?? '') === String(discount?.amount ?? '') && getDiscountBundleMapId(item) === targetMapId;
|
|
57
34
|
});
|
|
58
35
|
}
|
|
59
36
|
function restoreHydratedBundleDiscounts(product, normalizeDiscountList) {
|
|
60
37
|
if (!Array.isArray(product.product_bundle) || !Array.isArray(product.discount_list)) {
|
|
61
38
|
return product;
|
|
62
39
|
}
|
|
63
|
-
const bundleByMapId =
|
|
64
|
-
product.product_bundle.forEach(
|
|
65
|
-
if (!bundle || typeof bundle !==
|
|
66
|
-
return;
|
|
40
|
+
const bundleByMapId = new Map();
|
|
41
|
+
product.product_bundle.forEach(bundle => {
|
|
42
|
+
if (!bundle || typeof bundle !== 'object') return;
|
|
67
43
|
const mapId = getBundleMapId(bundle);
|
|
68
|
-
if (mapId)
|
|
69
|
-
bundleByMapId.set(mapId, bundle);
|
|
44
|
+
if (mapId) bundleByMapId.set(mapId, bundle);
|
|
70
45
|
});
|
|
71
|
-
if (!bundleByMapId.size)
|
|
72
|
-
return product;
|
|
46
|
+
if (!bundleByMapId.size) return product;
|
|
73
47
|
const mainDiscountList = [];
|
|
74
48
|
const bundleDiscounts = [];
|
|
75
|
-
product.discount_list.forEach(
|
|
49
|
+
product.discount_list.forEach(discount => {
|
|
76
50
|
const mapId = getDiscountBundleMapId(discount);
|
|
77
51
|
if (mapId && bundleByMapId.has(mapId)) {
|
|
78
|
-
bundleDiscounts.push({
|
|
52
|
+
bundleDiscounts.push({
|
|
53
|
+
mapId,
|
|
54
|
+
discount
|
|
55
|
+
});
|
|
79
56
|
} else {
|
|
80
57
|
mainDiscountList.push(discount);
|
|
81
58
|
}
|
|
82
59
|
});
|
|
83
|
-
if (!bundleDiscounts.length)
|
|
84
|
-
return product;
|
|
60
|
+
if (!bundleDiscounts.length) return product;
|
|
85
61
|
return {
|
|
86
62
|
...product,
|
|
87
63
|
discount_list: normalizeDiscountList(mainDiscountList),
|
|
88
|
-
product_bundle: product.product_bundle.map(
|
|
89
|
-
if (!bundle || typeof bundle !==
|
|
90
|
-
return bundle;
|
|
64
|
+
product_bundle: product.product_bundle.map(bundle => {
|
|
65
|
+
if (!bundle || typeof bundle !== 'object') return bundle;
|
|
91
66
|
const mapId = getBundleMapId(bundle);
|
|
92
|
-
if (!mapId)
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (!matchedDiscounts.length)
|
|
96
|
-
return bundle;
|
|
67
|
+
if (!mapId) return bundle;
|
|
68
|
+
const matchedDiscounts = bundleDiscounts.filter(item => item.mapId === mapId).map(item => item.discount);
|
|
69
|
+
if (!matchedDiscounts.length) return bundle;
|
|
97
70
|
const currentDiscountList = Array.isArray(bundle.discount_list) ? [...bundle.discount_list] : [];
|
|
98
71
|
for (const discount of matchedDiscounts) {
|
|
99
72
|
if (!hasSameBundleDiscount(currentDiscountList, discount)) {
|
|
@@ -104,7 +77,7 @@ function restoreHydratedBundleDiscounts(product, normalizeDiscountList) {
|
|
|
104
77
|
...bundle,
|
|
105
78
|
discount_list: normalizeDiscountList(currentDiscountList),
|
|
106
79
|
metadata: {
|
|
107
|
-
...bundle.metadata || {},
|
|
80
|
+
...(bundle.metadata || {}),
|
|
108
81
|
[BUNDLE_MAP_ID_KEY]: mapId
|
|
109
82
|
}
|
|
110
83
|
};
|
|
@@ -115,25 +88,19 @@ function expandHydratedProductsForDiscountCollection(products) {
|
|
|
115
88
|
const expanded = [];
|
|
116
89
|
for (const product of products || []) {
|
|
117
90
|
expanded.push(product);
|
|
118
|
-
for (const bundle of
|
|
119
|
-
if (!Array.isArray(bundle
|
|
120
|
-
continue;
|
|
91
|
+
for (const bundle of product?.product_bundle || []) {
|
|
92
|
+
if (!Array.isArray(bundle?.discount_list) || bundle.discount_list.length === 0) continue;
|
|
121
93
|
expanded.push({
|
|
122
94
|
...product,
|
|
123
|
-
product_id: bundle.bundle_product_id ?? bundle._bundle_product_id ?? bundle.product_id ??
|
|
124
|
-
num: bundle.num ?? bundle.quantity ??
|
|
125
|
-
product_quantity: bundle.quantity ?? bundle.num ??
|
|
95
|
+
product_id: bundle.bundle_product_id ?? bundle._bundle_product_id ?? bundle.product_id ?? product?.product_id,
|
|
96
|
+
num: bundle.num ?? bundle.quantity ?? product?.num,
|
|
97
|
+
product_quantity: bundle.quantity ?? bundle.num ?? product?.product_quantity,
|
|
126
98
|
original_price: bundle.original_price ?? bundle.product_price ?? bundle.price,
|
|
127
99
|
selling_price: bundle.bundle_selling_price ?? bundle.price,
|
|
128
|
-
is_charge_tax: bundle.is_charge_tax ??
|
|
100
|
+
is_charge_tax: bundle.is_charge_tax ?? product?.is_charge_tax,
|
|
129
101
|
discount_list: bundle.discount_list
|
|
130
102
|
});
|
|
131
103
|
}
|
|
132
104
|
}
|
|
133
105
|
return expanded;
|
|
134
|
-
}
|
|
135
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
136
|
-
0 && (module.exports = {
|
|
137
|
-
expandHydratedProductsForDiscountCollection,
|
|
138
|
-
restoreHydratedBundleDiscounts
|
|
139
|
-
});
|
|
106
|
+
}
|