@pisell/pisellos 2.2.189 → 2.2.191
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/promotion/index.js +0 -9
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +2 -1
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +2 -7
- package/dist/modules/Cart/utils/cartProduct.js +13 -2
- package/dist/modules/Order/index.d.ts +1 -3
- package/dist/modules/Order/index.js +88 -114
- package/dist/modules/Order/types.d.ts +10 -6
- package/dist/modules/Order/utils.d.ts +9 -2
- package/dist/modules/Order/utils.js +36 -13
- package/dist/modules/SalesSummary/types.d.ts +3 -1
- package/dist/modules/SalesSummary/utils.js +7 -3
- package/dist/server/modules/order/index.d.ts +126 -6
- package/dist/server/modules/order/index.js +1204 -285
- package/dist/server/modules/order/types.d.ts +0 -2
- package/dist/server/modules/products/index.d.ts +90 -6
- package/dist/server/modules/products/index.js +1017 -361
- package/dist/solution/BaseSales/index.js +54 -39
- package/dist/solution/BaseSales/types.d.ts +8 -5
- package/dist/solution/BaseSales/types.js +2 -3
- package/dist/solution/BaseSales/utils/cartPromotion.js +7 -7
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +1 -0
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +29 -14
- package/dist/solution/BaseSales/utils.d.ts +1 -1
- package/dist/solution/BaseSales/utils.js +22 -19
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/ScanOrder/index.js +7 -5
- package/dist/solution/ScanOrder/types.d.ts +8 -5
- package/dist/solution/ScanOrder/types.js +2 -3
- package/dist/solution/ScanOrder/utils.d.ts +1 -1
- package/dist/solution/ScanOrder/utils.js +26 -23
- package/dist/solution/VenueBooking/index.js +5 -3
- package/dist/solution/VenueBooking/sales-section-4-annotated.json +0 -2
- package/lib/model/strategy/adapter/promotion/index.js +0 -49
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +2 -1
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +2 -1
- package/lib/modules/Cart/utils/cartProduct.js +9 -2
- package/lib/modules/Order/index.d.ts +1 -3
- package/lib/modules/Order/index.js +50 -63
- package/lib/modules/Order/types.d.ts +10 -6
- package/lib/modules/Order/utils.d.ts +9 -2
- package/lib/modules/Order/utils.js +41 -10
- package/lib/modules/SalesSummary/types.d.ts +3 -1
- package/lib/modules/SalesSummary/utils.js +5 -3
- package/lib/server/modules/order/index.d.ts +126 -6
- package/lib/server/modules/order/index.js +722 -42
- package/lib/server/modules/order/types.d.ts +0 -2
- package/lib/server/modules/products/index.d.ts +90 -6
- package/lib/server/modules/products/index.js +492 -30
- package/lib/solution/BaseSales/index.js +26 -8
- package/lib/solution/BaseSales/types.d.ts +8 -5
- package/lib/solution/BaseSales/utils/cartPromotion.js +6 -6
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +1 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +32 -16
- package/lib/solution/BaseSales/utils.d.ts +1 -1
- package/lib/solution/BaseSales/utils.js +11 -7
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/ScanOrder/index.js +4 -4
- package/lib/solution/ScanOrder/types.d.ts +8 -5
- package/lib/solution/ScanOrder/utils.d.ts +1 -1
- package/lib/solution/ScanOrder/utils.js +12 -8
- package/lib/solution/VenueBooking/index.js +2 -2
- package/lib/solution/VenueBooking/sales-section-4-annotated.json +0 -2
- package/package.json +1 -1
- package/dist/solution/Checkout/appointmentDemo.json +0 -1
- package/lib/solution/Checkout/appointmentDemo.json +0 -1
|
@@ -5,7 +5,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
5
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
6
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
7
|
import Decimal from 'decimal.js';
|
|
8
|
-
import { composeLinePrice, createUuidV4, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
8
|
+
import { composeLinePrice, createUuidV4, ensureProductSku, normalizeProductSkuOptions, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
9
9
|
import { ensureManualProductDiscountList } from "../../modules/Order/utils/manualProductDiscount";
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -39,12 +39,12 @@ export function createEmptySummary() {
|
|
|
39
39
|
export function buildProductLineFingerprint(productOptionItem, productBundle) {
|
|
40
40
|
var optArr = Array.isArray(productOptionItem) ? productOptionItem : [];
|
|
41
41
|
var normalizedOpts = optArr.map(function (item) {
|
|
42
|
-
var _item$
|
|
42
|
+
var _ref, _item$add_price;
|
|
43
43
|
return {
|
|
44
44
|
option_group_item_id: Number(item === null || item === void 0 ? void 0 : item.option_group_item_id) || 0,
|
|
45
45
|
option_group_id: Number(item === null || item === void 0 ? void 0 : item.option_group_id) || 0,
|
|
46
46
|
num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1,
|
|
47
|
-
price: String((_item$
|
|
47
|
+
price: String((_ref = (_item$add_price = item === null || item === void 0 ? void 0 : item.add_price) !== null && _item$add_price !== void 0 ? _item$add_price : item === null || item === void 0 ? void 0 : item.price) !== null && _ref !== void 0 ? _ref : '')
|
|
48
48
|
};
|
|
49
49
|
}).sort(function (p, q) {
|
|
50
50
|
if (p.option_group_item_id !== q.option_group_item_id) {
|
|
@@ -56,9 +56,9 @@ export function buildProductLineFingerprint(productOptionItem, productBundle) {
|
|
|
56
56
|
});
|
|
57
57
|
var bundleArr = Array.isArray(productBundle) ? productBundle : [];
|
|
58
58
|
var normalizedBundles = bundleArr.map(function (item) {
|
|
59
|
-
var
|
|
59
|
+
var _ref2, _item$bundle_id;
|
|
60
60
|
return {
|
|
61
|
-
bundle_id: Number((
|
|
61
|
+
bundle_id: Number((_ref2 = (_item$bundle_id = item === null || item === void 0 ? void 0 : item.bundle_id) !== null && _item$bundle_id !== void 0 ? _item$bundle_id : item === null || item === void 0 ? void 0 : item.id) !== null && _ref2 !== void 0 ? _ref2 : 0) || 0,
|
|
62
62
|
product_id: Number(item === null || item === void 0 ? void 0 : item.product_id) || 0,
|
|
63
63
|
num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1
|
|
64
64
|
};
|
|
@@ -77,11 +77,11 @@ export function getSafeProductNum(num) {
|
|
|
77
77
|
|
|
78
78
|
/**
|
|
79
79
|
* removeProductFromOrder 仅传 SKU 时的通配 identity(对象上未声明选项键)。
|
|
80
|
-
* 与显式 `
|
|
80
|
+
* 与显式 `product_sku: { option: [] }` 区分:后者只匹配「无选项」行。
|
|
81
81
|
*/
|
|
82
82
|
export function isSkuOnlyDeleteIdentity(x) {
|
|
83
83
|
if (x.identity_key) return false;
|
|
84
|
-
return !('
|
|
84
|
+
return !('product_sku' in x) && !('product_bundle' in x);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
/**
|
|
@@ -107,7 +107,7 @@ export function isSkuOnlyDeleteIdentity(x) {
|
|
|
107
107
|
* - 因此多次 normalize 不会重复叠加 option/bundle。
|
|
108
108
|
*/
|
|
109
109
|
export function normalizeOrderProduct(product) {
|
|
110
|
-
var _product$metadata, _metadata$origin, _metadata$origin2, _variantList$find, _product$is_charge_ta;
|
|
110
|
+
var _product$metadata, _metadata$origin, _product$product_sku, _metadata$origin2, _variantList$find, _product$is_charge_ta;
|
|
111
111
|
var metadata = _objectSpread({}, product.metadata || {});
|
|
112
112
|
// 不透明 identity 契约:每条订单行必须带 identity_key。
|
|
113
113
|
// 调用方未传时由 SDK 自动生成 UUID,后续 update/remove 只做严格比对,避免猜测合成 key。
|
|
@@ -119,9 +119,9 @@ export function normalizeOrderProduct(product) {
|
|
|
119
119
|
if (priceOverride !== undefined && priceOverride !== null && priceOverride !== '' && Array.isArray(originOtherBundle) && originOtherBundle.length > 0) {
|
|
120
120
|
var priceById = new Map();
|
|
121
121
|
originOtherBundle.forEach(function (item) {
|
|
122
|
-
var _item$
|
|
122
|
+
var _item$price;
|
|
123
123
|
if ((item === null || item === void 0 ? void 0 : item.id) == null) return;
|
|
124
|
-
var unit = (_item$
|
|
124
|
+
var unit = (_item$price = item.price) !== null && _item$price !== void 0 ? _item$price : item.bundle_selling_price;
|
|
125
125
|
if (unit === undefined || unit === null) return;
|
|
126
126
|
priceById.set(String(item.id), String(unit));
|
|
127
127
|
});
|
|
@@ -136,19 +136,22 @@ export function normalizeOrderProduct(product) {
|
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
138
|
var normalizedBundle = bundleInput.map(function (item) {
|
|
139
|
-
var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id,
|
|
139
|
+
var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id, _ref3, _item$bundle_selling_, _ref4, _ref5, _item$price2, _ref6, _item$price_type, _ref7, _item$price_type_ext;
|
|
140
140
|
return _objectSpread(_objectSpread({}, item), {}, {
|
|
141
141
|
bundle_id: (_item$bundle_id2 = item.bundle_id) !== null && _item$bundle_id2 !== void 0 ? _item$bundle_id2 : item.id,
|
|
142
142
|
bundle_product_id: (_item$bundle_product_ = item.bundle_product_id) !== null && _item$bundle_product_ !== void 0 ? _item$bundle_product_ : item._bundle_product_id,
|
|
143
143
|
bundle_group_id: (_item$bundle_group_id = item.bundle_group_id) !== null && _item$bundle_group_id !== void 0 ? _item$bundle_group_id : item.group_id,
|
|
144
|
-
bundle_selling_price: (
|
|
145
|
-
price: (
|
|
146
|
-
price_type: (
|
|
147
|
-
price_type_ext: (
|
|
144
|
+
bundle_selling_price: (_ref3 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref3 !== void 0 ? _ref3 : '0.00',
|
|
145
|
+
price: (_ref4 = (_ref5 = (_item$price2 = item.price) !== null && _item$price2 !== void 0 ? _item$price2 : item.custom_price) !== null && _ref5 !== void 0 ? _ref5 : item.bundle_selling_price) !== null && _ref4 !== void 0 ? _ref4 : '0.00',
|
|
146
|
+
price_type: (_ref6 = (_item$price_type = item.price_type) !== null && _item$price_type !== void 0 ? _item$price_type : item.custom_price_type) !== null && _ref6 !== void 0 ? _ref6 : '',
|
|
147
|
+
price_type_ext: (_ref7 = (_item$price_type_ext = item.price_type_ext) !== null && _item$price_type_ext !== void 0 ? _item$price_type_ext : item.custom_price_type_ext) !== null && _ref7 !== void 0 ? _ref7 : ''
|
|
148
148
|
});
|
|
149
149
|
});
|
|
150
|
-
var normalizedOptions = product.
|
|
150
|
+
var normalizedOptions = normalizeProductSkuOptions((_product$product_sku = product.product_sku) === null || _product$product_sku === void 0 ? void 0 : _product$product_sku.option);
|
|
151
151
|
var optionSum = sumOptionUnitPrice(normalizedOptions);
|
|
152
|
+
var productSku = _objectSpread(_objectSpread({}, ensureProductSku(product)), {}, {
|
|
153
|
+
option: normalizedOptions
|
|
154
|
+
});
|
|
152
155
|
|
|
153
156
|
// 1) 解析 source_product_price。
|
|
154
157
|
// 优先级:
|
|
@@ -164,7 +167,7 @@ export function normalizeOrderProduct(product) {
|
|
|
164
167
|
var variantPrice = Array.isArray(variantList) ? (_variantList$find = variantList.find(function (v) {
|
|
165
168
|
return Number(v === null || v === void 0 ? void 0 : v.id) === variantId;
|
|
166
169
|
})) === null || _variantList$find === void 0 ? void 0 : _variantList$find.price : undefined;
|
|
167
|
-
var resolvedSource = function (_product$_origin, _product$_origin2,
|
|
170
|
+
var resolvedSource = function (_product$_origin, _product$_origin2, _ref8, _product$original_pri) {
|
|
168
171
|
if (metadata.source_product_price !== undefined) {
|
|
169
172
|
return String(metadata.source_product_price);
|
|
170
173
|
}
|
|
@@ -182,7 +185,7 @@ export function normalizeOrderProduct(product) {
|
|
|
182
185
|
if (!isV2 && metadata.main_product_original_price !== undefined) {
|
|
183
186
|
return String(metadata.main_product_original_price);
|
|
184
187
|
}
|
|
185
|
-
return (
|
|
188
|
+
return (_ref8 = (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : product.selling_price) !== null && _ref8 !== void 0 ? _ref8 : '0.00';
|
|
186
189
|
}();
|
|
187
190
|
|
|
188
191
|
// 2) 派生 main_product_original_price(含 option、不含折扣)
|
|
@@ -247,7 +250,7 @@ export function normalizeOrderProduct(product) {
|
|
|
247
250
|
product_id: product.product_id,
|
|
248
251
|
num: getSafeProductNum(product.num),
|
|
249
252
|
product_variant_id: product.product_variant_id,
|
|
250
|
-
|
|
253
|
+
product_sku: productSku,
|
|
251
254
|
selling_price: composedSellingPrice,
|
|
252
255
|
original_price: finalOriginalPrice,
|
|
253
256
|
tax_fee: product.tax_fee || '0.00',
|
|
@@ -311,7 +311,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
|
|
|
311
311
|
date: string;
|
|
312
312
|
status: string;
|
|
313
313
|
week: string;
|
|
314
|
-
weekNum: 0 |
|
|
314
|
+
weekNum: 0 | 2 | 1 | 5 | 3 | 4 | 6;
|
|
315
315
|
}[]>;
|
|
316
316
|
submitTimeSlot(timeSlots: TimeSliceItem): void;
|
|
317
317
|
private getScheduleDataByIds;
|
|
@@ -37,7 +37,7 @@ import { createModule } from "../BookingByStep/types";
|
|
|
37
37
|
import { ProductList } from "../../modules/ProductList";
|
|
38
38
|
import { ScheduleModule } from "../../modules/Schedule";
|
|
39
39
|
import { getDateIsInSchedule } from "../../modules/Schedule/getDateIsInSchedule";
|
|
40
|
-
import { composeLinePrice, createUuidV4, normalizeSubmitCollectPaxValue, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
40
|
+
import { composeLinePrice, createUuidV4, getProductSkuOptions, normalizeSubmitCollectPaxValue, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
41
41
|
import dayjs from 'dayjs';
|
|
42
42
|
import { ItemRuleEvaluator } from "../../model/strategy/adapter/itemRule";
|
|
43
43
|
export * from "./types";
|
|
@@ -1198,7 +1198,7 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1198
1198
|
totalPerUnitDiscount = (product.discount_list || []).reduce(function (sum, pd) {
|
|
1199
1199
|
return sum + (pd.amount || 0);
|
|
1200
1200
|
}, 0);
|
|
1201
|
-
optionSum = sumOptionUnitPrice(product
|
|
1201
|
+
optionSum = sumOptionUnitPrice(getProductSkuOptions(product));
|
|
1202
1202
|
sourcePrice = (_product$metadata$sou = (_product$metadata = product.metadata) === null || _product$metadata === void 0 ? void 0 : _product$metadata.source_product_price) !== null && _product$metadata$sou !== void 0 ? _product$metadata$sou : ((_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
|
|
1203
1203
|
newSourceSellingPrice = new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount).toDecimalPlaces(2).toString();
|
|
1204
1204
|
newMainSellingPrice = new Decimal(Number(newSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
|
|
@@ -1426,7 +1426,9 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1426
1426
|
original_price: originalPrice,
|
|
1427
1427
|
payment_price: sellingPrice,
|
|
1428
1428
|
is_charge_tax: (_ruleProduct$is_gst = ruleProduct.is_gst) !== null && _ruleProduct$is_gst !== void 0 ? _ruleProduct$is_gst : 0,
|
|
1429
|
-
|
|
1429
|
+
product_sku: {
|
|
1430
|
+
option: []
|
|
1431
|
+
},
|
|
1430
1432
|
discount_list: [],
|
|
1431
1433
|
product_bundle: [],
|
|
1432
1434
|
booking_uid: bookingUuid,
|
|
@@ -1632,8 +1634,8 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1632
1634
|
}
|
|
1633
1635
|
};
|
|
1634
1636
|
if (identity.identity_key !== undefined) params.identity_key = identity.identity_key;
|
|
1635
|
-
if (identity.
|
|
1636
|
-
params.
|
|
1637
|
+
if (identity.product_sku !== undefined) {
|
|
1638
|
+
params.product_sku = identity.product_sku;
|
|
1637
1639
|
}
|
|
1638
1640
|
if (identity.product_bundle !== undefined) params.product_bundle = identity.product_bundle;
|
|
1639
1641
|
_context20.next = 8;
|
|
@@ -33,13 +33,17 @@ export interface ScanOrderOrderProductIdentity {
|
|
|
33
33
|
identity_key?: string;
|
|
34
34
|
unique_identification_number?: string;
|
|
35
35
|
/** 参与合并/匹配;与 remove 通配语义见 isSkuOnlyDeleteIdentity */
|
|
36
|
-
|
|
36
|
+
product_sku?: ScanOrderProductSku;
|
|
37
37
|
product_bundle?: any[];
|
|
38
38
|
}
|
|
39
|
+
export interface ScanOrderProductSku {
|
|
40
|
+
option: any[];
|
|
41
|
+
[key: string]: any;
|
|
42
|
+
}
|
|
39
43
|
export interface ScanOrderOrderProduct extends ScanOrderOrderProductIdentity {
|
|
40
44
|
order_detail_id: number | null;
|
|
41
45
|
num: number;
|
|
42
|
-
|
|
46
|
+
product_sku: ScanOrderProductSku;
|
|
43
47
|
/**
|
|
44
48
|
* 券后 **行 composite 单价** = `metadata.main_product_selling_price`
|
|
45
49
|
* + Σ((bundle.bundle_selling_price ?? bundle.price) × (bundle.num ?? 1))
|
|
@@ -85,9 +89,8 @@ export interface ScanOrderOrderProduct extends ScanOrderOrderProductIdentity {
|
|
|
85
89
|
* 出站 payload 版本的商品行。
|
|
86
90
|
*
|
|
87
91
|
* 与 tempOrder 内部 `ScanOrderOrderProduct` 的字段差异:
|
|
88
|
-
* - `
|
|
89
|
-
*
|
|
90
|
-
* (后端 checkout 协议;丢弃 `price` 等运行时辅助字段)。
|
|
92
|
+
* - `product_sku.option[*]`:内部直接维护统一 Sales 协议字段;
|
|
93
|
+
* 提交时仅规范 `add_price`,保留传入/恢复得到的展示字段。
|
|
91
94
|
* - `product_bundle[*].option[*]`:同上重命名规则。
|
|
92
95
|
*
|
|
93
96
|
* 运行时(UI 显示、加购合并、指纹、持久化)与提交边界统一消费字段名
|
|
@@ -14,9 +14,8 @@ export var ScanOrderHooks = /*#__PURE__*/function (ScanOrderHooks) {
|
|
|
14
14
|
* 出站 payload 版本的商品行。
|
|
15
15
|
*
|
|
16
16
|
* 与 tempOrder 内部 `ScanOrderOrderProduct` 的字段差异:
|
|
17
|
-
* - `
|
|
18
|
-
*
|
|
19
|
-
* (后端 checkout 协议;丢弃 `price` 等运行时辅助字段)。
|
|
17
|
+
* - `product_sku.option[*]`:内部直接维护统一 Sales 协议字段;
|
|
18
|
+
* 提交时仅规范 `add_price`,保留传入/恢复得到的展示字段。
|
|
20
19
|
* - `product_bundle[*].option[*]`:同上重命名规则。
|
|
21
20
|
*
|
|
22
21
|
* 运行时(UI 显示、加购合并、指纹、持久化)与提交边界统一消费字段名
|
|
@@ -88,7 +88,7 @@ export declare function attachItemRuleLimitsToTopLevelProducts<T>(productList: T
|
|
|
88
88
|
export declare function buildProductLineFingerprint(productOptionItem?: unknown, productBundle?: unknown): string;
|
|
89
89
|
/**
|
|
90
90
|
* removeProductFromOrder 仅传 SKU 时的通配 identity(对象上未声明选项键)。
|
|
91
|
-
* 与显式 `
|
|
91
|
+
* 与显式 `product_sku: { option: [] }` 区分:后者只匹配「无选项」行。
|
|
92
92
|
*/
|
|
93
93
|
export declare function isSkuOnlyDeleteIdentity(x: ScanOrderOrderProductIdentity): boolean;
|
|
94
94
|
/**
|
|
@@ -13,7 +13,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
13
13
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
14
14
|
import dayjs from 'dayjs';
|
|
15
15
|
import Decimal from 'decimal.js';
|
|
16
|
-
import { composeLinePrice, createUuidV4, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
16
|
+
import { composeLinePrice, createUuidV4, ensureProductSku, getProductSkuOptions, normalizeProductSkuOptions, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
17
17
|
import { ensureManualProductDiscountList } from "../../modules/Order/utils/manualProductDiscount";
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -380,12 +380,12 @@ export function attachItemRuleLimitsToTopLevelProducts(productList, limits) {
|
|
|
380
380
|
export function buildProductLineFingerprint(productOptionItem, productBundle) {
|
|
381
381
|
var optArr = Array.isArray(productOptionItem) ? productOptionItem : [];
|
|
382
382
|
var normalizedOpts = optArr.map(function (item) {
|
|
383
|
-
var _item$
|
|
383
|
+
var _ref, _item$add_price;
|
|
384
384
|
return {
|
|
385
385
|
option_group_item_id: Number(item === null || item === void 0 ? void 0 : item.option_group_item_id) || 0,
|
|
386
386
|
option_group_id: Number(item === null || item === void 0 ? void 0 : item.option_group_id) || 0,
|
|
387
387
|
num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1,
|
|
388
|
-
price: String((_item$
|
|
388
|
+
price: String((_ref = (_item$add_price = item === null || item === void 0 ? void 0 : item.add_price) !== null && _item$add_price !== void 0 ? _item$add_price : item === null || item === void 0 ? void 0 : item.price) !== null && _ref !== void 0 ? _ref : '')
|
|
389
389
|
};
|
|
390
390
|
}).sort(function (p, q) {
|
|
391
391
|
if (p.option_group_item_id !== q.option_group_item_id) {
|
|
@@ -397,9 +397,9 @@ export function buildProductLineFingerprint(productOptionItem, productBundle) {
|
|
|
397
397
|
});
|
|
398
398
|
var bundleArr = Array.isArray(productBundle) ? productBundle : [];
|
|
399
399
|
var normalizedBundles = bundleArr.map(function (item) {
|
|
400
|
-
var
|
|
400
|
+
var _ref2, _item$bundle_id;
|
|
401
401
|
return {
|
|
402
|
-
bundle_id: Number((
|
|
402
|
+
bundle_id: Number((_ref2 = (_item$bundle_id = item === null || item === void 0 ? void 0 : item.bundle_id) !== null && _item$bundle_id !== void 0 ? _item$bundle_id : item === null || item === void 0 ? void 0 : item.id) !== null && _ref2 !== void 0 ? _ref2 : 0) || 0,
|
|
403
403
|
product_id: Number(item === null || item === void 0 ? void 0 : item.product_id) || 0,
|
|
404
404
|
num: typeof (item === null || item === void 0 ? void 0 : item.num) === 'number' && !Number.isNaN(item.num) ? Math.max(1, Math.floor(item.num)) : 1
|
|
405
405
|
};
|
|
@@ -413,15 +413,15 @@ export function buildProductLineFingerprint(productOptionItem, productBundle) {
|
|
|
413
413
|
|
|
414
414
|
/**
|
|
415
415
|
* removeProductFromOrder 仅传 SKU 时的通配 identity(对象上未声明选项键)。
|
|
416
|
-
* 与显式 `
|
|
416
|
+
* 与显式 `product_sku: { option: [] }` 区分:后者只匹配「无选项」行。
|
|
417
417
|
*/
|
|
418
418
|
export function isSkuOnlyDeleteIdentity(x) {
|
|
419
419
|
if (x.unique_identification_number || x.identity_key) return false;
|
|
420
|
-
return !('
|
|
420
|
+
return !('product_sku' in x) && !('product_bundle' in x);
|
|
421
421
|
}
|
|
422
422
|
function fingerprintForIdentityWithOptionKeys(x) {
|
|
423
423
|
var row = x;
|
|
424
|
-
var opts = '
|
|
424
|
+
var opts = 'product_sku' in row ? getProductSkuOptions(row) : [];
|
|
425
425
|
var buds = 'product_bundle' in row ? Array.isArray(row.product_bundle) ? row.product_bundle : [] : [];
|
|
426
426
|
return buildProductLineFingerprint(opts, buds);
|
|
427
427
|
}
|
|
@@ -437,10 +437,10 @@ function fingerprintForIdentityWithOptionKeys(x) {
|
|
|
437
437
|
* 忽略线侧 identity_key,按内容语义匹配。这给「行已 opaque、调用方却想按 SKU 通配 / 选项指纹删除」留兼容入口。
|
|
438
438
|
*/
|
|
439
439
|
export function isIdentityMatch(a, b) {
|
|
440
|
-
var
|
|
440
|
+
var _ref3, _metadata$unique_iden, _metadata2, _ref4, _metadata$unique_iden2, _metadata3;
|
|
441
441
|
if (a.product_id !== b.product_id || a.product_variant_id !== b.product_variant_id) return false;
|
|
442
|
-
var aUid = (
|
|
443
|
-
var bUid = (
|
|
442
|
+
var aUid = (_ref3 = (_metadata$unique_iden = (_metadata2 = a.metadata) === null || _metadata2 === void 0 ? void 0 : _metadata2.unique_identification_number) !== null && _metadata$unique_iden !== void 0 ? _metadata$unique_iden : a.unique_identification_number) !== null && _ref3 !== void 0 ? _ref3 : a.identity_key;
|
|
443
|
+
var bUid = (_ref4 = (_metadata$unique_iden2 = (_metadata3 = b.metadata) === null || _metadata3 === void 0 ? void 0 : _metadata3.unique_identification_number) !== null && _metadata$unique_iden2 !== void 0 ? _metadata$unique_iden2 : b.unique_identification_number) !== null && _ref4 !== void 0 ? _ref4 : b.identity_key;
|
|
444
444
|
var aHasKey = typeof aUid === 'string' && aUid.length > 0;
|
|
445
445
|
var bHasKey = typeof bUid === 'string' && bUid.length > 0;
|
|
446
446
|
if (aHasKey && bHasKey) return aUid === bUid;
|
|
@@ -481,7 +481,7 @@ export function getProductIdentityIndex(products, identity) {
|
|
|
481
481
|
* - 因此多次 normalize 不会重复叠加 option/bundle。
|
|
482
482
|
*/
|
|
483
483
|
export function normalizeOrderProduct(product) {
|
|
484
|
-
var _product$metadata, _metadata$origin, _metadata$origin2, _variantList$find, _product$is_charge_ta;
|
|
484
|
+
var _product$metadata, _metadata$origin, _product$product_sku, _metadata$origin2, _variantList$find, _product$is_charge_ta;
|
|
485
485
|
var metadata = _objectSpread({}, product.metadata || {});
|
|
486
486
|
// 不透明 identity 契约:每条订单行必须带 identity_key。
|
|
487
487
|
// 调用方未传时由 SDK 自动生成 UUID,后续 update/remove 只做严格比对,避免猜测合成 key。
|
|
@@ -493,9 +493,9 @@ export function normalizeOrderProduct(product) {
|
|
|
493
493
|
if (priceOverride !== undefined && priceOverride !== null && priceOverride !== '' && Array.isArray(originOtherBundle) && originOtherBundle.length > 0) {
|
|
494
494
|
var priceById = new Map();
|
|
495
495
|
originOtherBundle.forEach(function (item) {
|
|
496
|
-
var _item$
|
|
496
|
+
var _item$price;
|
|
497
497
|
if ((item === null || item === void 0 ? void 0 : item.id) == null) return;
|
|
498
|
-
var unit = (_item$
|
|
498
|
+
var unit = (_item$price = item.price) !== null && _item$price !== void 0 ? _item$price : item.bundle_selling_price;
|
|
499
499
|
if (unit === undefined || unit === null) return;
|
|
500
500
|
priceById.set(String(item.id), String(unit));
|
|
501
501
|
});
|
|
@@ -510,19 +510,22 @@ export function normalizeOrderProduct(product) {
|
|
|
510
510
|
});
|
|
511
511
|
}
|
|
512
512
|
var normalizedBundle = bundleInput.map(function (item) {
|
|
513
|
-
var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id,
|
|
513
|
+
var _item$bundle_id2, _item$bundle_product_, _item$bundle_group_id, _ref5, _item$bundle_selling_, _ref6, _ref7, _item$price2, _ref8, _item$price_type, _ref9, _item$price_type_ext;
|
|
514
514
|
return _objectSpread(_objectSpread({}, item), {}, {
|
|
515
515
|
bundle_id: (_item$bundle_id2 = item.bundle_id) !== null && _item$bundle_id2 !== void 0 ? _item$bundle_id2 : item.id,
|
|
516
516
|
bundle_product_id: (_item$bundle_product_ = item.bundle_product_id) !== null && _item$bundle_product_ !== void 0 ? _item$bundle_product_ : item._bundle_product_id,
|
|
517
517
|
bundle_group_id: (_item$bundle_group_id = item.bundle_group_id) !== null && _item$bundle_group_id !== void 0 ? _item$bundle_group_id : item.group_id,
|
|
518
|
-
bundle_selling_price: (
|
|
519
|
-
price: (
|
|
520
|
-
price_type: (
|
|
521
|
-
price_type_ext: (
|
|
518
|
+
bundle_selling_price: (_ref5 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref5 !== void 0 ? _ref5 : '0.00',
|
|
519
|
+
price: (_ref6 = (_ref7 = (_item$price2 = item.price) !== null && _item$price2 !== void 0 ? _item$price2 : item.custom_price) !== null && _ref7 !== void 0 ? _ref7 : item.bundle_selling_price) !== null && _ref6 !== void 0 ? _ref6 : '0.00',
|
|
520
|
+
price_type: (_ref8 = (_item$price_type = item.price_type) !== null && _item$price_type !== void 0 ? _item$price_type : item.custom_price_type) !== null && _ref8 !== void 0 ? _ref8 : '',
|
|
521
|
+
price_type_ext: (_ref9 = (_item$price_type_ext = item.price_type_ext) !== null && _item$price_type_ext !== void 0 ? _item$price_type_ext : item.custom_price_type_ext) !== null && _ref9 !== void 0 ? _ref9 : ''
|
|
522
522
|
});
|
|
523
523
|
});
|
|
524
|
-
var normalizedOptions = product.
|
|
524
|
+
var normalizedOptions = normalizeProductSkuOptions((_product$product_sku = product.product_sku) === null || _product$product_sku === void 0 ? void 0 : _product$product_sku.option);
|
|
525
525
|
var optionSum = sumOptionUnitPrice(normalizedOptions);
|
|
526
|
+
var productSku = _objectSpread(_objectSpread({}, ensureProductSku(product)), {}, {
|
|
527
|
+
option: normalizedOptions
|
|
528
|
+
});
|
|
526
529
|
|
|
527
530
|
// 1) 解析 source_product_price。
|
|
528
531
|
// 优先级:
|
|
@@ -538,7 +541,7 @@ export function normalizeOrderProduct(product) {
|
|
|
538
541
|
var variantPrice = Array.isArray(variantList) ? (_variantList$find = variantList.find(function (v) {
|
|
539
542
|
return Number(v === null || v === void 0 ? void 0 : v.id) === variantId;
|
|
540
543
|
})) === null || _variantList$find === void 0 ? void 0 : _variantList$find.price : undefined;
|
|
541
|
-
var resolvedSource = function (_product$_origin, _product$_origin2,
|
|
544
|
+
var resolvedSource = function (_product$_origin, _product$_origin2, _ref10, _product$original_pri) {
|
|
542
545
|
if (metadata.source_product_price !== undefined) {
|
|
543
546
|
return String(metadata.source_product_price);
|
|
544
547
|
}
|
|
@@ -556,7 +559,7 @@ export function normalizeOrderProduct(product) {
|
|
|
556
559
|
if (!isV2 && metadata.main_product_original_price !== undefined) {
|
|
557
560
|
return String(metadata.main_product_original_price);
|
|
558
561
|
}
|
|
559
|
-
return (
|
|
562
|
+
return (_ref10 = (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : product.selling_price) !== null && _ref10 !== void 0 ? _ref10 : '0.00';
|
|
560
563
|
}();
|
|
561
564
|
|
|
562
565
|
// 2) 派生 main_product_original_price(含 option、不含折扣)
|
|
@@ -625,7 +628,7 @@ export function normalizeOrderProduct(product) {
|
|
|
625
628
|
product_id: product.product_id,
|
|
626
629
|
num: getSafeProductNum(product.num),
|
|
627
630
|
product_variant_id: product.product_variant_id,
|
|
628
|
-
|
|
631
|
+
product_sku: productSku,
|
|
629
632
|
selling_price: composedSellingPrice,
|
|
630
633
|
original_price: manualOriginalPrice,
|
|
631
634
|
tax_fee: product.tax_fee || '0.00',
|
|
@@ -45,7 +45,7 @@ import { extractResourceIds, buildResourceProductMap } from "./utils/resource";
|
|
|
45
45
|
import { buildTimeSlotGrid, isBusinessHoursCrossDay, generateTimeLabels } from "./utils/timeSlot";
|
|
46
46
|
import { buildDateRangeSummary } from "./utils/dateSummary";
|
|
47
47
|
import { mergeConsecutiveSlots, expandMergedSlotToIndividual, buildVenueIdentityKey, buildVenueBookingEntry, buildVenueResourceMetadata, buildPriceBreakdown } from "./utils/slotMerge";
|
|
48
|
-
import { composeLinePrice, createUuidV4, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
48
|
+
import { composeLinePrice, createUuidV4, getProductSkuOptions, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
49
49
|
import { OrderModule } from "../../modules/Order";
|
|
50
50
|
import { RegisterAndLoginHooks } from "../RegisterAndLogin/types";
|
|
51
51
|
import Decimal from 'decimal.js';
|
|
@@ -1726,7 +1726,9 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1726
1726
|
product_variant_id: 0,
|
|
1727
1727
|
num: 1,
|
|
1728
1728
|
product_bundle: [],
|
|
1729
|
-
|
|
1729
|
+
product_sku: {
|
|
1730
|
+
option: []
|
|
1731
|
+
},
|
|
1730
1732
|
discount_list: [],
|
|
1731
1733
|
custom_deposit_data: customDepositData,
|
|
1732
1734
|
metadata: {}
|
|
@@ -2183,7 +2185,7 @@ export var VenueBookingImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2183
2185
|
totalPerUnitDiscount = (product.discount_list || []).reduce(function (sum, pd) {
|
|
2184
2186
|
return sum + (pd.amount || 0);
|
|
2185
2187
|
}, 0);
|
|
2186
|
-
optionSum = sumOptionUnitPrice(product
|
|
2188
|
+
optionSum = sumOptionUnitPrice(getProductSkuOptions(product));
|
|
2187
2189
|
sourcePrice = (_product$metadata$sou = (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.source_product_price) !== null && _product$metadata$sou !== void 0 ? _product$metadata$sou : ((_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_original_price) != null ? new Decimal(Number(product.metadata.main_product_original_price) || 0).minus(optionSum).toFixed(2) : (_product$original_pri = product.original_price) !== null && _product$original_pri !== void 0 ? _product$original_pri : '0';
|
|
2188
2190
|
newSourceSellingPrice = new Decimal(Number(sourcePrice) || 0).minus(totalPerUnitDiscount).toDecimalPlaces(2).toString();
|
|
2189
2191
|
newMainSellingPrice = new Decimal(Number(newSourceSellingPrice) || 0).plus(optionSum).toDecimalPlaces(2).toFixed(2);
|
|
@@ -71,8 +71,6 @@
|
|
|
71
71
|
"num__comment": "数量;int;↕;必填。统一使用 num,不再使用 product_quantity。",
|
|
72
72
|
"product_variant_id": 0,
|
|
73
73
|
"product_variant_id__comment": "多规格 ID;int;↕;可选。",
|
|
74
|
-
"product_option_item": [],
|
|
75
|
-
"product_option_item__comment": "选项配置;array;↕;可选。",
|
|
76
74
|
"selling_price": "50.00",
|
|
77
75
|
"selling_price__comment": "销售单价(交易快照);string;←;服务端返回,不能依赖基准数据回填。",
|
|
78
76
|
"original_price": "60.00",
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
|
|
29
|
-
// src/model/strategy/adapter/promotion/index.ts
|
|
30
|
-
var promotion_exports = {};
|
|
31
|
-
__export(promotion_exports, {
|
|
32
|
-
BUY_X_GET_Y_FREE_STRATEGY: () => import_examples.BUY_X_GET_Y_FREE_STRATEGY,
|
|
33
|
-
PromotionAdapter: () => import_adapter.PromotionAdapter,
|
|
34
|
-
PromotionEvaluator: () => import_evaluator.PromotionEvaluator,
|
|
35
|
-
X_ITEMS_FOR_Y_PRICE_STRATEGY: () => import_examples.X_ITEMS_FOR_Y_PRICE_STRATEGY,
|
|
36
|
-
default: () => import_adapter2.default
|
|
37
|
-
});
|
|
38
|
-
module.exports = __toCommonJS(promotion_exports);
|
|
39
|
-
var import_evaluator = require("./evaluator");
|
|
40
|
-
var import_adapter = require("./adapter");
|
|
41
|
-
var import_adapter2 = __toESM(require("./adapter"));
|
|
42
|
-
var import_examples = require("./examples");
|
|
43
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
44
|
-
0 && (module.exports = {
|
|
45
|
-
BUY_X_GET_Y_FREE_STRATEGY,
|
|
46
|
-
PromotionAdapter,
|
|
47
|
-
PromotionEvaluator,
|
|
48
|
-
X_ITEMS_FOR_Y_PRICE_STRATEGY
|
|
49
|
-
});
|
|
@@ -33,6 +33,7 @@ __export(buildCacheItemFromOrderLine_exports, {
|
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(buildCacheItemFromOrderLine_exports);
|
|
35
35
|
var import_dayjs = __toESM(require("dayjs"));
|
|
36
|
+
var import_utils = require("../../Order/utils");
|
|
36
37
|
var import_manualProductDiscount = require("../../Order/utils/manualProductDiscount");
|
|
37
38
|
var import_orderLineDisplay = require("./orderLineDisplay");
|
|
38
39
|
function safeFormat(value, fmt) {
|
|
@@ -182,7 +183,7 @@ function buildCacheItemFromOrderLine(input) {
|
|
|
182
183
|
const productOptionString = (0, import_orderLineDisplay.buildProductOptionStringFromOrderLine)(product);
|
|
183
184
|
const other = {
|
|
184
185
|
product_variant_id: product.product_variant_id ?? 0,
|
|
185
|
-
option:
|
|
186
|
+
option: (0, import_utils.getProductSkuOptions)(product),
|
|
186
187
|
bundle: Array.isArray(product.product_bundle) ? [...product.product_bundle] : []
|
|
187
188
|
};
|
|
188
189
|
const extend = {
|
|
@@ -22,6 +22,7 @@ __export(buildNormalProductCacheItemFromOrderLine_exports, {
|
|
|
22
22
|
buildNormalProductCacheItemFromOrderLine: () => buildNormalProductCacheItemFromOrderLine
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(buildNormalProductCacheItemFromOrderLine_exports);
|
|
25
|
+
var import_utils = require("../../Order/utils");
|
|
25
26
|
var import_orderLineDisplay = require("./orderLineDisplay");
|
|
26
27
|
function resolveSourceProductPrice(product, sourceProduct) {
|
|
27
28
|
var _a, _b, _c;
|
|
@@ -81,7 +82,7 @@ function buildNormalProductCacheItemFromOrderLine(input) {
|
|
|
81
82
|
const selling = Number(product.selling_price ?? 0);
|
|
82
83
|
const original = Number(product.original_price ?? selling);
|
|
83
84
|
const uid = (_a = product.metadata) == null ? void 0 : _a.unique_identification_number;
|
|
84
|
-
const option =
|
|
85
|
+
const option = (0, import_utils.getProductSkuOptions)(product);
|
|
85
86
|
const bundle = mapOrderBundleToOtherBundle(
|
|
86
87
|
Array.isArray(product.product_bundle) ? product.product_bundle : []
|
|
87
88
|
);
|
|
@@ -185,7 +185,7 @@ var formatProductToCartItemOrigin = (params) => {
|
|
|
185
185
|
product_id: product.id,
|
|
186
186
|
product_variant_id: product_variant_id || 0,
|
|
187
187
|
product_bundle: ((_b = origin.product) == null ? void 0 : _b.product_bundle) || [],
|
|
188
|
-
|
|
188
|
+
product_sku: ((_c = origin.product) == null ? void 0 : _c.product_sku) || { option: [] },
|
|
189
189
|
metadata: {
|
|
190
190
|
product_discount_difference
|
|
191
191
|
}
|
|
@@ -196,7 +196,14 @@ var formatProductToCartItemOrigin = (params) => {
|
|
|
196
196
|
origin.product.product_bundle = formatBundleToOrigin(bundle);
|
|
197
197
|
}
|
|
198
198
|
if (options == null ? void 0 : options.length) {
|
|
199
|
-
origin.product.
|
|
199
|
+
origin.product.product_sku = {
|
|
200
|
+
...origin.product.product_sku || {},
|
|
201
|
+
option: formatOptionsToOrigin(options).map((option) => {
|
|
202
|
+
const next = { ...option, add_price: option.add_price ?? option.price };
|
|
203
|
+
delete next.price;
|
|
204
|
+
return next;
|
|
205
|
+
})
|
|
206
|
+
};
|
|
200
207
|
}
|
|
201
208
|
}
|
|
202
209
|
return origin;
|
|
@@ -265,7 +265,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
265
265
|
private logSubmitBackendRejected;
|
|
266
266
|
syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
|
|
267
267
|
createOrder(params: CommitOrderParams['query']): {
|
|
268
|
-
type: "
|
|
268
|
+
type: "appointment_booking" | "virtual";
|
|
269
269
|
platform: string;
|
|
270
270
|
sales_channel: string;
|
|
271
271
|
order_sales_channel: string;
|
|
@@ -317,8 +317,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
317
317
|
private formatHydratedNamePair;
|
|
318
318
|
private buildHydratedProductOptionString;
|
|
319
319
|
private normalizeHydratedProductOptionItem;
|
|
320
|
-
private mergeHydratedProductOptionDisplayFields;
|
|
321
|
-
private resolveHydratedProductOptions;
|
|
322
320
|
private normalizeHydratedOrderProduct;
|
|
323
321
|
getLastOrderInfo(): Record<string, any> | undefined;
|
|
324
322
|
getOrderInfo(order_id: number): Promise<any>;
|