@pisell/pisellos 0.10.14 → 0.10.16
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 -9
- 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 +5 -1
- package/dist/modules/Order/utils/virtualSettlement.d.ts +8 -1
- package/dist/modules/Order/utils/virtualSettlement.js +15 -2
- package/dist/modules/Order/utils.js +7 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Product/types.d.ts +2 -0
- 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 +107 -76
- package/dist/solution/BaseSales/types.d.ts +2 -0
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -1
- package/dist/solution/BaseSales/utils.js +6 -3
- package/dist/solution/BookingByStep/index.d.ts +2 -2
- 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 +8 -4
- package/dist/solution/BookingTicket/utils/addProductDecision.js +3 -1
- 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/ScanOrder/types.d.ts +2 -0
- package/dist/solution/ScanOrder/utils.js +6 -3
- 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 +131 -131
- 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 +209 -315
- 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 +43 -48
- 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 +133 -143
- 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 +1810 -2238
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +5 -1
- package/lib/modules/Order/types.js +87 -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/virtualSettlement.d.ts +8 -1
- package/lib/modules/Order/utils/virtualSettlement.js +126 -164
- package/lib/modules/Order/utils.js +834 -668
- 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.d.ts +2 -0
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +138 -161
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +66 -100
- 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 +591 -772
- 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 +78 -89
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +359 -442
- 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 +3027 -2655
- package/lib/server/modules/floor-plan/index.js +102 -123
- 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 +146 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +758 -956
- 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 +575 -459
- 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 +213 -184
- 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 +1276 -1485
- package/lib/solution/BaseSales/types.d.ts +2 -0
- 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.d.ts +3 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +138 -180
- package/lib/solution/BaseSales/utils.js +161 -143
- package/lib/solution/BookingByStep/index.d.ts +2 -2
- 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 +598 -514
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +229 -190
- 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 +822 -852
- package/lib/solution/ScanOrder/types.d.ts +2 -0
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +412 -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 +1052 -1213
- 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,106 +1,94 @@
|
|
|
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(transformBaseProductToOrderProduct_exports, {
|
|
22
|
-
transformBaseProductToOrderProduct: () => transformBaseProductToOrderProduct
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
23
5
|
});
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
6
|
+
exports.transformBaseProductToOrderProduct = transformBaseProductToOrderProduct;
|
|
7
|
+
var _utils = require("../../../modules/Order/utils");
|
|
8
|
+
var _manualProductDiscount = require("../../../modules/Order/utils/manualProductDiscount");
|
|
27
9
|
function toNumber(value, fallback = 0) {
|
|
28
10
|
const parsedValue = Number(value);
|
|
29
|
-
if (!Number.isFinite(parsedValue))
|
|
30
|
-
return fallback;
|
|
11
|
+
if (!Number.isFinite(parsedValue)) return fallback;
|
|
31
12
|
return parsedValue;
|
|
32
13
|
}
|
|
33
14
|
function toProductId(value) {
|
|
34
|
-
if (value === null || value ===
|
|
35
|
-
return null;
|
|
15
|
+
if (value === null || value === undefined || value === '') return null;
|
|
36
16
|
const parsedValue = Number(value);
|
|
37
|
-
if (!Number.isFinite(parsedValue))
|
|
38
|
-
return null;
|
|
17
|
+
if (!Number.isFinite(parsedValue)) return null;
|
|
39
18
|
return parsedValue;
|
|
40
19
|
}
|
|
41
20
|
function toSafePositiveInt(value, fallback = 1) {
|
|
42
21
|
const parsedValue = Math.floor(Number(value));
|
|
43
|
-
if (!Number.isFinite(parsedValue) || parsedValue < 1)
|
|
44
|
-
return fallback;
|
|
22
|
+
if (!Number.isFinite(parsedValue) || parsedValue < 1) return fallback;
|
|
45
23
|
return parsedValue;
|
|
46
24
|
}
|
|
47
|
-
function toPriceString(value, fallback =
|
|
25
|
+
function toPriceString(value, fallback = '0.00') {
|
|
48
26
|
const parsedValue = Number(value);
|
|
49
|
-
if (!Number.isFinite(parsedValue))
|
|
50
|
-
return fallback;
|
|
27
|
+
if (!Number.isFinite(parsedValue)) return fallback;
|
|
51
28
|
return parsedValue.toFixed(2);
|
|
52
29
|
}
|
|
30
|
+
function normalizeProductionCode(value) {
|
|
31
|
+
if (value === undefined || value === null) return '';
|
|
32
|
+
return String(value).trim();
|
|
33
|
+
}
|
|
53
34
|
function isBlankValue(value) {
|
|
54
|
-
return value ===
|
|
35
|
+
return value === undefined || value === null || typeof value === 'string' && value.trim() === '';
|
|
55
36
|
}
|
|
56
37
|
function firstNonBlank(...values) {
|
|
57
|
-
return values.find(
|
|
38
|
+
return values.find(value => !isBlankValue(value));
|
|
58
39
|
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 取第一份接口权威 Data Variant 命中结果并复制数组。
|
|
43
|
+
* 空数组表示规则已计算但无命中,必须与字段缺失区分。
|
|
44
|
+
*/
|
|
59
45
|
function cloneFirstDataVariantIds(...values) {
|
|
60
|
-
const ids = values.find(
|
|
61
|
-
return Array.isArray(ids) ? [...ids] :
|
|
46
|
+
const ids = values.find(value => Array.isArray(value));
|
|
47
|
+
return Array.isArray(ids) ? [...ids] : undefined;
|
|
62
48
|
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 在接口权威命中结果后追加本地应用及最终选中的 Data Variant ID。
|
|
52
|
+
* 以字符串身份去重,同时将新增 ID 归一为正整数。
|
|
53
|
+
*/
|
|
63
54
|
function appendDataVariantIds(base, ...values) {
|
|
64
55
|
const result = Array.isArray(base) ? [...base] : [];
|
|
65
|
-
const seen = new Set(result.map(
|
|
56
|
+
const seen = new Set(result.map(id => String(id)));
|
|
66
57
|
for (const value of values) {
|
|
67
58
|
const candidates = Array.isArray(value) ? value : [value];
|
|
68
59
|
for (const candidate of candidates) {
|
|
69
60
|
const id = Number(candidate);
|
|
70
|
-
if (!Number.isFinite(id) || id <= 0 || seen.has(String(id)))
|
|
71
|
-
continue;
|
|
61
|
+
if (!Number.isFinite(id) || id <= 0 || seen.has(String(id))) continue;
|
|
72
62
|
result.push(id);
|
|
73
63
|
seen.add(String(id));
|
|
74
64
|
}
|
|
75
65
|
}
|
|
76
|
-
return Array.isArray(base) || result.length ? result :
|
|
66
|
+
return Array.isArray(base) || result.length ? result : undefined;
|
|
77
67
|
}
|
|
78
68
|
function normalizeOptionItems(optionItems) {
|
|
79
|
-
if (!Array.isArray(optionItems))
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const
|
|
83
|
-
const price = (optionItem == null ? void 0 : optionItem.price) ?? (optionItem == null ? void 0 : optionItem.add_price) ?? 0;
|
|
69
|
+
if (!Array.isArray(optionItems)) return [];
|
|
70
|
+
return optionItems.map(optionItem => {
|
|
71
|
+
const optionGroupItemId = toNumber(optionItem?.option_group_item_id ?? optionItem?.id);
|
|
72
|
+
const price = optionItem?.price ?? optionItem?.add_price ?? 0;
|
|
84
73
|
return {
|
|
85
74
|
...optionItem,
|
|
86
75
|
option_group_item_id: optionGroupItemId,
|
|
87
|
-
option_group_id: toNumber(optionItem
|
|
88
|
-
num: toSafePositiveInt(
|
|
76
|
+
option_group_id: toNumber(optionItem?.option_group_id),
|
|
77
|
+
num: toSafePositiveInt(optionItem?.num ?? optionItem?.quantity, 1),
|
|
89
78
|
add_price: toNumber(price, 0),
|
|
90
|
-
price:
|
|
79
|
+
price: undefined
|
|
91
80
|
};
|
|
92
81
|
});
|
|
93
82
|
}
|
|
94
83
|
function normalizeBundleItems(bundleItems, preferPriceField = false) {
|
|
95
|
-
if (!Array.isArray(bundleItems))
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
const num = toSafePositiveInt((bundleItem == null ? void 0 : bundleItem.num) ?? (bundleItem == null ? void 0 : bundleItem.quantity), 1);
|
|
84
|
+
if (!Array.isArray(bundleItems)) return [];
|
|
85
|
+
return bundleItems.map(bundleItem => {
|
|
86
|
+
const unitSelling = preferPriceField ? bundleItem.price ?? bundleItem.bundle_selling_price ?? bundleItem.custom_price ?? bundleItem.product_price ?? '0' : bundleItem.bundle_selling_price ?? bundleItem.price ?? bundleItem.custom_price ?? bundleItem.product_price ?? '0';
|
|
87
|
+
const unitStr = toPriceString(unitSelling, '0.00');
|
|
88
|
+
const num = toSafePositiveInt(bundleItem?.num ?? bundleItem?.quantity, 1);
|
|
101
89
|
const magnitudeSource = {
|
|
102
90
|
...bundleItem,
|
|
103
|
-
option: normalizeOptionItems(bundleItem
|
|
91
|
+
option: normalizeOptionItems(bundleItem?.option),
|
|
104
92
|
bundle_selling_price: unitStr,
|
|
105
93
|
// 计算 markdown 净额时,只传真实毛价;仅有 bundle_selling_price 时按历史净额兜底。
|
|
106
94
|
price: bundleItem.price ?? bundleItem.custom_price
|
|
@@ -108,16 +96,17 @@ function normalizeBundleItems(bundleItems, preferPriceField = false) {
|
|
|
108
96
|
const normalizedItem = {
|
|
109
97
|
...bundleItem,
|
|
110
98
|
num,
|
|
111
|
-
quantity:
|
|
99
|
+
quantity: bundleItem?.quantity ?? num,
|
|
112
100
|
// price 保留毛价(markdown 仍为正),由 price_type 决定符号。
|
|
113
101
|
price: bundleItem.price ?? unitStr,
|
|
114
102
|
bundle_selling_price: unitStr,
|
|
115
103
|
original_price: bundleItem.original_price ?? bundleItem.product_price ?? bundleItem.price ?? unitStr,
|
|
116
|
-
option: normalizeOptionItems(bundleItem
|
|
104
|
+
option: normalizeOptionItems(bundleItem?.option),
|
|
117
105
|
discount_list: preferPriceField ? [] : bundleItem.discount_list
|
|
118
106
|
};
|
|
119
|
-
|
|
120
|
-
|
|
107
|
+
// bundle_selling_price 落「正净额」:markdown = |price| − Σoptions;markup/原价维持原值。
|
|
108
|
+
normalizedItem.bundle_selling_price = (0, _utils.getBundleSellingMagnitude)(magnitudeSource).toFixed(2);
|
|
109
|
+
if ((normalizedItem.price_type ?? normalizedItem.custom_price_type) === 'markdown' && (normalizedItem.price_type_ext === '' || normalizedItem.price_type_ext === undefined || normalizedItem.price_type_ext === null)) {
|
|
121
110
|
normalizedItem.custom_price = normalizedItem.custom_price ?? normalizedItem.price;
|
|
122
111
|
normalizedItem.price = normalizedItem.bundle_selling_price;
|
|
123
112
|
}
|
|
@@ -125,117 +114,88 @@ function normalizeBundleItems(bundleItems, preferPriceField = false) {
|
|
|
125
114
|
});
|
|
126
115
|
}
|
|
127
116
|
function findVariantById(origin, variantId) {
|
|
128
|
-
if (!origin || !variantId || variantId <= 0)
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return variants.find((variant) => Number(variant == null ? void 0 : variant.id) === variantId) || null;
|
|
117
|
+
if (!origin || !variantId || variantId <= 0) return null;
|
|
118
|
+
const variants = Array.isArray(origin?.variant) ? origin.variant : [];
|
|
119
|
+
return variants.find(variant => Number(variant?.id) === variantId) || null;
|
|
132
120
|
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* 将商品列表原始数据 + 商品详情选择回调转换成 OrderModule.addProductToOrder 入参。
|
|
124
|
+
*
|
|
125
|
+
* 注意:这里不生成 identity,缺省时由 OrderModule 自动补齐。
|
|
126
|
+
*/
|
|
133
127
|
function transformBaseProductToOrderProduct(params) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
128
|
+
const {
|
|
129
|
+
payload,
|
|
130
|
+
fallbackProductId = null
|
|
131
|
+
} = params;
|
|
132
|
+
if (!payload || typeof payload !== 'object') return null;
|
|
138
133
|
const sourceProduct = params.sourceProduct || params.sourceItem || {};
|
|
139
|
-
const productId = toProductId(
|
|
140
|
-
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
return null;
|
|
144
|
-
const productVariantId = toNumber(
|
|
145
|
-
payload.product_variant_id ?? payload.variant_id ?? (sourceProduct == null ? void 0 : sourceProduct.product_variant_id) ?? (sourceProduct == null ? void 0 : sourceProduct.variant_id),
|
|
146
|
-
0
|
|
147
|
-
);
|
|
148
|
-
const callbackOrigin = payload.origin || ((_a = payload._origin) == null ? void 0 : _a.sourceProduct) || ((_b = payload._origin) == null ? void 0 : _b.sourceItem) || payload._origin || {};
|
|
134
|
+
const productId = toProductId(payload.product_id ?? payload.id ?? sourceProduct?.product_id ?? sourceProduct?.id ?? fallbackProductId);
|
|
135
|
+
if (productId === null) return null;
|
|
136
|
+
const productVariantId = toNumber(payload.product_variant_id ?? payload.variant_id ?? sourceProduct?.product_variant_id ?? sourceProduct?.variant_id, 0);
|
|
137
|
+
const callbackOrigin = payload.origin || payload._origin?.sourceProduct || payload._origin?.sourceItem || payload._origin || {};
|
|
149
138
|
const origin = {
|
|
150
|
-
...sourceProduct || {},
|
|
151
|
-
...callbackOrigin || {}
|
|
139
|
+
...(sourceProduct || {}),
|
|
140
|
+
...(callbackOrigin || {})
|
|
152
141
|
};
|
|
153
|
-
const authoritativeDataVariantIds = cloneFirstDataVariantIds(
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
(_f = origin == null ? void 0 : origin.metadata) == null ? void 0 : _f.data_variant_ids
|
|
158
|
-
);
|
|
159
|
-
const selectedSettlementSnapshot = firstNonBlank(
|
|
160
|
-
payload.selected_settlement_snapshot,
|
|
161
|
-
(_g = payload.metadata) == null ? void 0 : _g.selected_settlement_snapshot,
|
|
162
|
-
(_i = (_h = payload._extend) == null ? void 0 : _h.metadata) == null ? void 0 : _i.selected_settlement_snapshot,
|
|
163
|
-
(_j = sourceProduct == null ? void 0 : sourceProduct.metadata) == null ? void 0 : _j.selected_settlement_snapshot,
|
|
164
|
-
(_l = (_k = sourceProduct == null ? void 0 : sourceProduct._extend) == null ? void 0 : _k.metadata) == null ? void 0 : _l.selected_settlement_snapshot,
|
|
165
|
-
(_m = callbackOrigin == null ? void 0 : callbackOrigin.metadata) == null ? void 0 : _m.selected_settlement_snapshot,
|
|
166
|
-
(_o = (_n = callbackOrigin == null ? void 0 : callbackOrigin._extend) == null ? void 0 : _n.metadata) == null ? void 0 : _o.selected_settlement_snapshot
|
|
167
|
-
);
|
|
168
|
-
const locallyAppliedVariantIds = authoritativeDataVariantIds === void 0 ? cloneFirstDataVariantIds(
|
|
169
|
-
(_p = payload._dataVariant) == null ? void 0 : _p.appliedVariantIds,
|
|
170
|
-
(_q = sourceProduct == null ? void 0 : sourceProduct._dataVariant) == null ? void 0 : _q.appliedVariantIds,
|
|
171
|
-
(_r = callbackOrigin == null ? void 0 : callbackOrigin._dataVariant) == null ? void 0 : _r.appliedVariantIds,
|
|
172
|
-
(_s = origin == null ? void 0 : origin._dataVariant) == null ? void 0 : _s.appliedVariantIds
|
|
173
|
-
) : void 0;
|
|
174
|
-
const dataVariantIds = appendDataVariantIds(
|
|
175
|
-
authoritativeDataVariantIds,
|
|
176
|
-
locallyAppliedVariantIds,
|
|
177
|
-
selectedSettlementSnapshot == null ? void 0 : selectedSettlementSnapshot.data_variant_id
|
|
178
|
-
);
|
|
142
|
+
const authoritativeDataVariantIds = cloneFirstDataVariantIds(payload.metadata?.data_variant_ids, sourceProduct?.metadata?.data_variant_ids, callbackOrigin?.metadata?.data_variant_ids, origin?.metadata?.data_variant_ids);
|
|
143
|
+
const selectedSettlementSnapshot = firstNonBlank(payload.selected_settlement_snapshot, payload.metadata?.selected_settlement_snapshot, payload._extend?.metadata?.selected_settlement_snapshot, sourceProduct?.metadata?.selected_settlement_snapshot, sourceProduct?._extend?.metadata?.selected_settlement_snapshot, callbackOrigin?.metadata?.selected_settlement_snapshot, callbackOrigin?._extend?.metadata?.selected_settlement_snapshot);
|
|
144
|
+
const locallyAppliedVariantIds = authoritativeDataVariantIds === undefined ? cloneFirstDataVariantIds(payload._dataVariant?.appliedVariantIds, sourceProduct?._dataVariant?.appliedVariantIds, callbackOrigin?._dataVariant?.appliedVariantIds, origin?._dataVariant?.appliedVariantIds) : undefined;
|
|
145
|
+
const dataVariantIds = appendDataVariantIds(authoritativeDataVariantIds, locallyAppliedVariantIds, selectedSettlementSnapshot?.data_variant_id);
|
|
179
146
|
const matchedVariant = findVariantById(callbackOrigin, productVariantId) ?? findVariantById(sourceProduct, productVariantId) ?? findVariantById(origin, productVariantId);
|
|
180
|
-
const
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
);
|
|
186
|
-
const explicitLineTotal = payload.line_total ?? payload.total ??
|
|
147
|
+
const productionCode = normalizeProductionCode(Object.prototype.hasOwnProperty.call(payload, 'production_code') ? payload.production_code : productVariantId > 0 ? matchedVariant?.production_code : origin?.production_code ?? sourceProduct?.production_code);
|
|
148
|
+
const hasPriceOverride = payload.price_override !== undefined && payload.price_override !== null && payload.price_override !== '';
|
|
149
|
+
// 手动改价后 payload.price 是分摊后的主商品售价,不能再作为券前 source。
|
|
150
|
+
// 此时优先从商品/variant 快照读取目录价;售价仍由 line_total - bundle 推导。
|
|
151
|
+
const catalogSourcePrice = matchedVariant?.price ?? matchedVariant?.base_price ?? origin?.price ?? origin?.base_price ?? sourceProduct?.price ?? sourceProduct?.selling_price ?? sourceProduct?.base_price;
|
|
152
|
+
const sourceProductPrice = toPriceString(hasPriceOverride ? catalogSourcePrice ?? payload.price ?? payload.selling_price : payload.price ?? payload.selling_price ?? catalogSourcePrice, '0.00');
|
|
153
|
+
const explicitLineTotal = payload.line_total ?? payload.total ?? payload._extend?.total;
|
|
187
154
|
const hasExplicitLineTotal = Number.isFinite(Number(explicitLineTotal));
|
|
188
155
|
const lineCompositeTotal = toPriceString(explicitLineTotal, sourceProductPrice);
|
|
189
|
-
const productOptionItem = (0,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
);
|
|
194
|
-
const productBundle = normalizeBundleItems(
|
|
195
|
-
payload.bundle ?? payload.product_bundle,
|
|
196
|
-
hasPriceOverride
|
|
197
|
-
);
|
|
156
|
+
const productOptionItem = (0, _utils.normalizeProductSkuOptions)(normalizeOptionItems(payload.product_sku?.option ?? payload.option ?? payload.options ?? payload.product_option_item));
|
|
157
|
+
const productBundle = normalizeBundleItems(payload.bundle ?? payload.product_bundle, hasPriceOverride);
|
|
158
|
+
// `payload.unique` 是业务侧商品/票务标识,可能在连续加同一商品时重复;
|
|
159
|
+
// 行级唯一值只接受显式协议字段,缺省交给 OrderModule 生成。
|
|
198
160
|
const uniqueIdentificationNumber = payload.unique_identification_number;
|
|
199
161
|
const resolvedQuantity = toSafePositiveInt(payload.quantity ?? payload.num, 1);
|
|
200
|
-
const originTotal = (0,
|
|
162
|
+
const originTotal = (0, _manualProductDiscount.resolveManualDiscountOriginTotal)({
|
|
201
163
|
originTotal: payload.origin_total,
|
|
202
|
-
extendOriginTotal:
|
|
203
|
-
originExtendOriginTotal:
|
|
204
|
-
sourceExtendOriginTotal:
|
|
205
|
-
catalogUnitPrice:
|
|
164
|
+
extendOriginTotal: payload._extend?.origin_total,
|
|
165
|
+
originExtendOriginTotal: origin?._extend?.origin_total,
|
|
166
|
+
sourceExtendOriginTotal: sourceProduct?._extend?.origin_total,
|
|
167
|
+
catalogUnitPrice: origin?.base_price ?? origin?.price ?? sourceProduct?.base_price ?? sourceProduct?.price,
|
|
206
168
|
quantity: resolvedQuantity
|
|
207
169
|
});
|
|
208
|
-
const sellingTotal = Number(
|
|
209
|
-
|
|
210
|
-
);
|
|
211
|
-
const discountReason = (0, import_manualProductDiscount.resolveManualDiscountReasonFromSources)({
|
|
170
|
+
const sellingTotal = Number(payload.line_total ?? payload.total ?? payload._extend?.total ?? lineCompositeTotal);
|
|
171
|
+
const discountReason = (0, _manualProductDiscount.resolveManualDiscountReasonFromSources)({
|
|
212
172
|
discountReason: payload.discount_reason,
|
|
213
|
-
extendDiscountReason:
|
|
214
|
-
originExtendDiscountReason:
|
|
173
|
+
extendDiscountReason: payload._extend?.discount_reason,
|
|
174
|
+
originExtendDiscountReason: origin?._extend?.discount_reason
|
|
215
175
|
});
|
|
216
176
|
const lineOriginalPrice = hasPriceOverride && Number.isFinite(originTotal) ? toPriceString(originTotal) : lineCompositeTotal;
|
|
217
|
-
const manualDiscountList = (0,
|
|
177
|
+
const manualDiscountList = (0, _manualProductDiscount.shouldBuildManualProductDiscount)({
|
|
218
178
|
hasPriceOverride,
|
|
219
179
|
originTotal,
|
|
220
180
|
sellingTotal
|
|
221
|
-
}) ? (0,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
const optionSum = (0, import_utils.sumOptionUnitPrice)(productOptionItem).toNumber();
|
|
181
|
+
}) ? (0, _manualProductDiscount.mergeManualProductDiscountIntoList)(payload.discount_list, (0, _manualProductDiscount.buildManualProductDiscountItem)({
|
|
182
|
+
originTotal: Number.isFinite(originTotal) ? originTotal : Number(lineOriginalPrice),
|
|
183
|
+
sellingTotal: Number.isFinite(sellingTotal) ? sellingTotal : Number(lineCompositeTotal),
|
|
184
|
+
quantity: resolvedQuantity,
|
|
185
|
+
message: discountReason,
|
|
186
|
+
discountway: payload._extend?.discountway,
|
|
187
|
+
discount_per: payload._extend?.discount_per
|
|
188
|
+
})) : payload.discount_list || [];
|
|
189
|
+
|
|
190
|
+
// v2:source 不含 option;main_product_* 含 option(与 normalizeOrderProduct 一致)
|
|
191
|
+
const optionSum = (0, _utils.sumOptionUnitPrice)(productOptionItem).toNumber();
|
|
233
192
|
const mainProductOriginalPrice = toPriceString(Number(sourceProductPrice) + optionSum);
|
|
234
|
-
const bundleOnlyComposite = (0,
|
|
193
|
+
const bundleOnlyComposite = (0, _utils.composeLinePrice)({
|
|
194
|
+
mainPrice: 0,
|
|
195
|
+
bundle: productBundle
|
|
196
|
+
});
|
|
235
197
|
const derivedMainSelling = hasExplicitLineTotal ? Number(lineCompositeTotal) - Number(bundleOnlyComposite) : Number(mainProductOriginalPrice);
|
|
236
|
-
const mainProductSellingPrice = toPriceString(
|
|
237
|
-
Number.isFinite(derivedMainSelling) && derivedMainSelling >= 0 ? derivedMainSelling : Number(mainProductOriginalPrice)
|
|
238
|
-
);
|
|
198
|
+
const mainProductSellingPrice = toPriceString(Number.isFinite(derivedMainSelling) && derivedMainSelling >= 0 ? derivedMainSelling : Number(mainProductOriginalPrice));
|
|
239
199
|
const metadata = {
|
|
240
200
|
unique: payload.unique,
|
|
241
201
|
session: payload.session,
|
|
@@ -250,58 +210,56 @@ function transformBaseProductToOrderProduct(params) {
|
|
|
250
210
|
main_product_selling_price: mainProductSellingPrice,
|
|
251
211
|
main_product_original_price: mainProductOriginalPrice,
|
|
252
212
|
price_schema_version: 2,
|
|
253
|
-
holder_config: sourceProduct
|
|
254
|
-
...dataVariantIds !==
|
|
255
|
-
|
|
213
|
+
holder_config: sourceProduct?.holder_config,
|
|
214
|
+
...(dataVariantIds !== undefined ? {
|
|
215
|
+
data_variant_ids: dataVariantIds
|
|
216
|
+
} : {}),
|
|
217
|
+
...(selectedSettlementSnapshot ? {
|
|
256
218
|
selected_settlement_snapshot: selectedSettlementSnapshot
|
|
257
|
-
} : {},
|
|
258
|
-
...hasPriceOverride ? {
|
|
219
|
+
} : {}),
|
|
220
|
+
...(hasPriceOverride ? {
|
|
259
221
|
price_override: String(payload.price_override),
|
|
260
222
|
is_manual_discount: 1
|
|
261
|
-
} : {},
|
|
262
|
-
...payload.bundle_edit !==
|
|
223
|
+
} : {}),
|
|
224
|
+
...(payload.bundle_edit !== undefined ? {
|
|
225
|
+
bundle_edit: payload.bundle_edit
|
|
226
|
+
} : {})
|
|
263
227
|
};
|
|
264
228
|
if (uniqueIdentificationNumber) {
|
|
265
229
|
metadata.unique_identification_number = String(uniqueIdentificationNumber);
|
|
266
230
|
}
|
|
231
|
+
// 从源头补充商品多语言标题
|
|
267
232
|
const productTitle = {
|
|
268
|
-
...(sourceProduct
|
|
269
|
-
original:
|
|
233
|
+
...(sourceProduct?.title_i18n || {}),
|
|
234
|
+
original: sourceProduct?.original_title || sourceProduct?.title || ''
|
|
270
235
|
};
|
|
271
236
|
return {
|
|
272
237
|
product_id: productId,
|
|
273
238
|
product_variant_id: productVariantId,
|
|
274
|
-
|
|
239
|
+
production_code: productionCode,
|
|
240
|
+
unique_identification_number: uniqueIdentificationNumber ? String(uniqueIdentificationNumber) : undefined,
|
|
275
241
|
num: resolvedQuantity,
|
|
276
242
|
product_sku: {
|
|
277
|
-
...payload.product_sku && typeof payload.product_sku ===
|
|
243
|
+
...(payload.product_sku && typeof payload.product_sku === 'object' ? payload.product_sku : {}),
|
|
278
244
|
option: productOptionItem
|
|
279
245
|
},
|
|
280
246
|
product_bundle: productBundle,
|
|
281
247
|
discount_list: manualDiscountList,
|
|
282
|
-
...payload.bundle_edit !==
|
|
248
|
+
...(payload.bundle_edit !== undefined ? {
|
|
249
|
+
bundle_edit: payload.bundle_edit
|
|
250
|
+
} : {}),
|
|
283
251
|
// 折后行价由 normalizeOrderProduct 按 main + bundle 合成;手动改价时 bundle 已为分摊后单价
|
|
284
252
|
selling_price: lineCompositeTotal,
|
|
285
253
|
original_price: lineOriginalPrice,
|
|
286
|
-
tax_fee: toPriceString(
|
|
287
|
-
|
|
288
|
-
"0.00"
|
|
289
|
-
),
|
|
290
|
-
is_charge_tax: toNumber(
|
|
291
|
-
payload.is_charge_tax ?? (matchedVariant == null ? void 0 : matchedVariant.is_charge_tax) ?? (origin == null ? void 0 : origin.is_charge_tax) ?? (sourceProduct == null ? void 0 : sourceProduct.is_charge_tax),
|
|
292
|
-
0
|
|
293
|
-
),
|
|
254
|
+
tax_fee: toPriceString(payload.tax_fee ?? matchedVariant?.tax_fee ?? origin?.tax_fee ?? sourceProduct?.tax_fee, '0.00'),
|
|
255
|
+
is_charge_tax: toNumber(payload.is_charge_tax ?? matchedVariant?.is_charge_tax ?? origin?.is_charge_tax ?? sourceProduct?.is_charge_tax, 0),
|
|
294
256
|
metadata,
|
|
295
|
-
note: payload.note != null ? String(payload.note) :
|
|
257
|
+
note: payload.note != null ? String(payload.note) : '',
|
|
296
258
|
product_title: productTitle,
|
|
297
|
-
product_cover: firstNonBlank(matchedVariant
|
|
259
|
+
product_cover: firstNonBlank(matchedVariant?.cover, sourceProduct?.cover),
|
|
298
260
|
_origin: {
|
|
299
|
-
...sourceProduct || {},
|
|
261
|
+
...(sourceProduct || {}),
|
|
300
262
|
callbackData: payload
|
|
301
263
|
}
|
|
302
264
|
};
|
|
303
|
-
}
|
|
304
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
305
|
-
0 && (module.exports = {
|
|
306
|
-
transformBaseProductToOrderProduct
|
|
307
|
-
});
|
|
265
|
+
}
|