@pisell/pisellos 2.2.271 → 2.2.273
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/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +5 -3
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +6 -3
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +11 -11
- package/dist/modules/Rules/index.js +31 -31
- package/dist/server/modules/order/index.d.ts +5 -0
- package/dist/server/modules/order/index.js +52 -31
- package/dist/solution/BaseSales/index.js +17 -17
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/BookingTicket/utils/addProductDecision.js +6 -0
- package/dist/solution/BookingTicket/utils/weighingProductSku.d.ts +5 -0
- package/dist/solution/BookingTicket/utils/weighingProductSku.js +45 -0
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +2 -1
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +2 -1
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +1 -1
- package/lib/modules/Rules/index.js +1 -2
- package/lib/server/modules/order/index.d.ts +5 -0
- package/lib/server/modules/order/index.js +24 -2
- package/lib/solution/BaseSales/index.js +1 -1
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/utils/addProductDecision.js +4 -0
- package/lib/solution/BookingTicket/utils/weighingProductSku.d.ts +5 -0
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +63 -0
- package/package.json +1 -1
|
@@ -190,7 +190,7 @@ function synthesizeProductResourceFromBooking(booking) {
|
|
|
190
190
|
* 调用方须传入与该行关联的 booking(通常 bookings[].product_uid === product.metadata.unique_identification_number)。
|
|
191
191
|
*/
|
|
192
192
|
export function buildCacheItemFromOrderLine(input) {
|
|
193
|
-
var _product$product_id, _product$selling_pric, _product$original_pri, _booking$metadata$hol, _booking$metadata2, _product$product_vari, _product$num, _ref10, _product$note, _booking$detail2, _product$metadata, _product$metadata2, _ref11, _extension_type, _booking$product2, _booking$product3, _price, _product$order_detail, _ref12, _booking$id;
|
|
193
|
+
var _product$product_id, _product$selling_pric, _product$original_pri, _booking$metadata$hol, _booking$metadata2, _product$product_vari, _product$num, _ref10, _product$note, _booking$detail2, _product$metadata, _product$metadata2, _ref11, _extension_type, _booking$product2, _booking$product3, _price, _product$product_sku, _product$order_detail, _ref12, _booking$id;
|
|
194
194
|
var product = input.product,
|
|
195
195
|
booking = input.booking,
|
|
196
196
|
sourceProduct = input.sourceProduct;
|
|
@@ -257,7 +257,7 @@ export function buildCacheItemFromOrderLine(input) {
|
|
|
257
257
|
if (Array.isArray(booking.relation_forms)) {
|
|
258
258
|
extend.relation_forms = booking.relation_forms;
|
|
259
259
|
}
|
|
260
|
-
var base = _objectSpread(_objectSpread(_objectSpread({}, sourceProduct || {}), {}, {
|
|
260
|
+
var base = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, sourceProduct || {}), {}, {
|
|
261
261
|
id: resolvedId,
|
|
262
262
|
product_id: resolvedId,
|
|
263
263
|
extension_type: (_ref11 = (_extension_type = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.extension_type) !== null && _extension_type !== void 0 ? _extension_type : booking === null || booking === void 0 || (_booking$product2 = booking.product) === null || _booking$product2 === void 0 ? void 0 : _booking$product2.extension_type) !== null && _ref11 !== void 0 ? _ref11 : sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.extension_type,
|
|
@@ -265,7 +265,9 @@ export function buildCacheItemFromOrderLine(input) {
|
|
|
265
265
|
price: (_price = sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.price) !== null && _price !== void 0 ? _price : selling,
|
|
266
266
|
selling_price: product.selling_price,
|
|
267
267
|
original_price: product.original_price
|
|
268
|
-
},
|
|
268
|
+
}, Number(((_product$product_sku = product.product_sku) === null || _product$product_sku === void 0 ? void 0 : _product$product_sku.open_sold_weight) || 0) === 1 ? {
|
|
269
|
+
product_sku: JSON.parse(JSON.stringify(product.product_sku))
|
|
270
|
+
} : {}), productOptionString ? {
|
|
269
271
|
product_option_string: productOptionString
|
|
270
272
|
} : {}), {}, {
|
|
271
273
|
_extend: extend,
|
|
@@ -75,7 +75,7 @@ function mapOrderBundleToOtherBundle(bundle) {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
export function buildNormalProductCacheItemFromOrderLine(input) {
|
|
78
|
-
var _product$product_id, _product$selling_pric2, _product$original_pri, _product$metadata, _product$metadata2, _product$product_vari, _originExtend$other, _product$num, _product$product_vari2, _product$num2, _title, _product$note, _originExtend$price, _originExtend$total, _originExtend$origin_, _product$metadata3, _ref6, _title2, _ref7, _cover, _price3, _product$order_detail;
|
|
78
|
+
var _product$product_id, _product$selling_pric2, _product$original_pri, _product$metadata, _product$metadata2, _product$product_vari, _originExtend$other, _product$num, _product$product_vari2, _product$num2, _title, _product$note, _originExtend$price, _originExtend$total, _originExtend$origin_, _product$metadata3, _ref6, _title2, _ref7, _cover, _price3, _product$order_detail, _product$product_sku;
|
|
79
79
|
var product = input.product,
|
|
80
80
|
sourceProduct = input.sourceProduct;
|
|
81
81
|
var resolvedId = (_product$product_id = product.product_id) !== null && _product$product_id !== void 0 ? _product$product_id : sourceProduct === null || sourceProduct === void 0 ? void 0 : sourceProduct.id;
|
|
@@ -127,7 +127,7 @@ export function buildNormalProductCacheItemFromOrderLine(input) {
|
|
|
127
127
|
extend.skuValue = JSON.parse(JSON.stringify(originExtend.skuValue || originExtend._skuValue));
|
|
128
128
|
extend._skuValue = JSON.parse(JSON.stringify(extend.skuValue));
|
|
129
129
|
}
|
|
130
|
-
return _objectSpread(_objectSpread(_objectSpread({}, sourceProduct || {}), {}, {
|
|
130
|
+
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, sourceProduct || {}), {}, {
|
|
131
131
|
id: resolvedId,
|
|
132
132
|
product_id: resolvedId,
|
|
133
133
|
_id: uid,
|
|
@@ -141,7 +141,10 @@ export function buildNormalProductCacheItemFromOrderLine(input) {
|
|
|
141
141
|
} : {}), {}, {
|
|
142
142
|
note: product.note,
|
|
143
143
|
order_detail_id: (_product$order_detail = product.order_detail_id) !== null && _product$order_detail !== void 0 ? _product$order_detail : null,
|
|
144
|
-
discount_list: discountList
|
|
144
|
+
discount_list: discountList
|
|
145
|
+
}, Number(((_product$product_sku = product.product_sku) === null || _product$product_sku === void 0 ? void 0 : _product$product_sku.open_sold_weight) || 0) === 1 ? {
|
|
146
|
+
product_sku: JSON.parse(JSON.stringify(product.product_sku))
|
|
147
|
+
} : {}), {}, {
|
|
145
148
|
new: 0,
|
|
146
149
|
autoClose: true,
|
|
147
150
|
_extend: extend
|
|
@@ -485,7 +485,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
485
485
|
generateIdempotencyToken(): string;
|
|
486
486
|
syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
|
|
487
487
|
createOrder(params: CommitOrderParams['query']): {
|
|
488
|
-
type: "
|
|
488
|
+
type: "virtual" | "appointment_booking";
|
|
489
489
|
platform: string;
|
|
490
490
|
sales_channel: string;
|
|
491
491
|
order_sales_channel: string;
|
|
@@ -4858,7 +4858,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
4858
4858
|
key: "saveTempOrderAsDraft",
|
|
4859
4859
|
value: function () {
|
|
4860
4860
|
var _saveTempOrderAsDraft = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee31(params) {
|
|
4861
|
-
var _params$cacheId2, _this$otherParams6,
|
|
4861
|
+
var _params$cacheId2, _this$otherParams6, _this$otherParams7, _this$otherParams8, _params$type, _this$otherParams9, _payload$products;
|
|
4862
4862
|
var tempOrder, latestSummary, payload;
|
|
4863
4863
|
return _regeneratorRuntime().wrap(function _callee31$(_context34) {
|
|
4864
4864
|
while (1) switch (_context34.prev = _context34.next) {
|
|
@@ -4890,7 +4890,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
4890
4890
|
tempOrder: tempOrder,
|
|
4891
4891
|
cacheId: (_params$cacheId2 = params === null || params === void 0 ? void 0 : params.cacheId) !== null && _params$cacheId2 !== void 0 ? _params$cacheId2 : this.cacheId,
|
|
4892
4892
|
platform: (params === null || params === void 0 ? void 0 : params.platform) || ((_this$otherParams6 = this.otherParams) === null || _this$otherParams6 === void 0 ? void 0 : _this$otherParams6.platform),
|
|
4893
|
-
businessCode: (
|
|
4893
|
+
businessCode: (params === null || params === void 0 ? void 0 : params.businessCode) || ((_this$otherParams7 = this.otherParams) === null || _this$otherParams7 === void 0 ? void 0 : _this$otherParams7.businessCode) || ((_this$otherParams8 = this.otherParams) === null || _this$otherParams8 === void 0 ? void 0 : _this$otherParams8.business_code) || tempOrder.business_code,
|
|
4894
4894
|
channel: params === null || params === void 0 ? void 0 : params.channel,
|
|
4895
4895
|
type: (_params$type = params === null || params === void 0 ? void 0 : params.type) !== null && _params$type !== void 0 ? _params$type : (_this$otherParams9 = this.otherParams) === null || _this$otherParams9 === void 0 ? void 0 : _this$otherParams9.type,
|
|
4896
4896
|
summary: latestSummary,
|
|
@@ -4971,7 +4971,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
4971
4971
|
key: "runSubmitTempOrder",
|
|
4972
4972
|
value: function () {
|
|
4973
4973
|
var _runSubmitTempOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee34(params) {
|
|
4974
|
-
var _params$cacheId3, _this$otherParams10,
|
|
4974
|
+
var _params$cacheId3, _this$otherParams10, _ref74, _ref75, _submitSnapshot$busin, _this$otherParams11, _this$otherParams12, _submitSnapshot$type;
|
|
4975
4975
|
var tempOrder, shouldConfirmPendingVoucherPayments, hasPaymentOverride, preparedPaymentOverride, latestSummary, effectiveCacheId, hasPaymentStatusOverride, hasSmallTicketDataFlagOverride, enhancePayload, submitSnapshot, payload, result, _payload$payments, _payload$payments2, backendErrorResponse, submittedOrderId, resultRecord;
|
|
4976
4976
|
return _regeneratorRuntime().wrap(function _callee34$(_context37) {
|
|
4977
4977
|
while (1) switch (_context37.prev = _context37.next) {
|
|
@@ -5033,7 +5033,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5033
5033
|
tempOrder: tempOrder,
|
|
5034
5034
|
cacheId: effectiveCacheId,
|
|
5035
5035
|
platform: (params === null || params === void 0 ? void 0 : params.platform) || ((_this$otherParams10 = this.otherParams) === null || _this$otherParams10 === void 0 ? void 0 : _this$otherParams10.platform),
|
|
5036
|
-
businessCode: (
|
|
5036
|
+
businessCode: (_ref74 = (_ref75 = (_submitSnapshot$busin = submitSnapshot.businessCode) !== null && _submitSnapshot$busin !== void 0 ? _submitSnapshot$busin : params === null || params === void 0 ? void 0 : params.businessCode) !== null && _ref75 !== void 0 ? _ref75 : (_this$otherParams11 = this.otherParams) === null || _this$otherParams11 === void 0 ? void 0 : _this$otherParams11.businessCode) !== null && _ref74 !== void 0 ? _ref74 : (_this$otherParams12 = this.otherParams) === null || _this$otherParams12 === void 0 ? void 0 : _this$otherParams12.business_code,
|
|
5037
5037
|
channel: params === null || params === void 0 ? void 0 : params.channel,
|
|
5038
5038
|
type: (_submitSnapshot$type = submitSnapshot.type) !== null && _submitSnapshot$type !== void 0 ? _submitSnapshot$type : params === null || params === void 0 ? void 0 : params.type,
|
|
5039
5039
|
summary: latestSummary,
|
|
@@ -6065,7 +6065,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6065
6065
|
_step24;
|
|
6066
6066
|
try {
|
|
6067
6067
|
for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
|
|
6068
|
-
var _product$metadata11,
|
|
6068
|
+
var _product$metadata11, _ref76, _ref77, _existed$origin, _rawProduct$metadata;
|
|
6069
6069
|
var _step24$value = _slicedToArray(_step24.value, 2),
|
|
6070
6070
|
index = _step24$value[0],
|
|
6071
6071
|
product = _step24$value[1];
|
|
@@ -6073,7 +6073,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6073
6073
|
if (!uid) continue;
|
|
6074
6074
|
var existed = productsByUid[uid] && _typeof(productsByUid[uid]) === 'object' ? productsByUid[uid] : {};
|
|
6075
6075
|
var rawProduct = rawProducts[index] && _typeof(rawProducts[index]) === 'object' ? rawProducts[index] : product;
|
|
6076
|
-
var origin = (
|
|
6076
|
+
var origin = (_ref76 = (_ref77 = (_existed$origin = existed.origin) !== null && _existed$origin !== void 0 ? _existed$origin : rawProduct._origin) !== null && _ref77 !== void 0 ? _ref77 : (_rawProduct$metadata = rawProduct.metadata) === null || _rawProduct$metadata === void 0 ? void 0 : _rawProduct$metadata.origin) !== null && _ref76 !== void 0 ? _ref76 : rawProduct;
|
|
6077
6077
|
var originSnapshot = cloneDeep(origin);
|
|
6078
6078
|
var productOptionString = this.buildHydratedProductOptionString(rawProduct) || this.buildHydratedProductOptionString(product);
|
|
6079
6079
|
if (productOptionString && originSnapshot && _typeof(originSnapshot) === 'object') {
|
|
@@ -6202,10 +6202,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6202
6202
|
}, {
|
|
6203
6203
|
key: "normalizeHydratedProductOptionItem",
|
|
6204
6204
|
value: function normalizeHydratedProductOptionItem(optionItem) {
|
|
6205
|
-
var
|
|
6206
|
-
var rawNum = (
|
|
6205
|
+
var _ref78, _optionItem$num, _ref79, _optionItem$add_price;
|
|
6206
|
+
var rawNum = (_ref78 = (_optionItem$num = optionItem === null || optionItem === void 0 ? void 0 : optionItem.num) !== null && _optionItem$num !== void 0 ? _optionItem$num : optionItem === null || optionItem === void 0 ? void 0 : optionItem.quantity) !== null && _ref78 !== void 0 ? _ref78 : 1;
|
|
6207
6207
|
var parsedNum = Number(rawNum);
|
|
6208
|
-
var rawPrice = (
|
|
6208
|
+
var rawPrice = (_ref79 = (_optionItem$add_price = optionItem === null || optionItem === void 0 ? void 0 : optionItem.add_price) !== null && _optionItem$add_price !== void 0 ? _optionItem$add_price : optionItem === null || optionItem === void 0 ? void 0 : optionItem.price) !== null && _ref79 !== void 0 ? _ref79 : 0;
|
|
6209
6209
|
var parsedPrice = Number(rawPrice);
|
|
6210
6210
|
var normalized = _objectSpread(_objectSpread({}, optionItem), {}, {
|
|
6211
6211
|
option_group_item_id: optionItem === null || optionItem === void 0 ? void 0 : optionItem.option_group_item_id,
|
|
@@ -6346,10 +6346,10 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6346
6346
|
_step29;
|
|
6347
6347
|
try {
|
|
6348
6348
|
for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
|
|
6349
|
-
var
|
|
6349
|
+
var _ref80, _bundle$num3;
|
|
6350
6350
|
var bundle = _step29.value;
|
|
6351
6351
|
var isPersistedBundleProduct = isPersistedProduct || Boolean((bundle === null || bundle === void 0 ? void 0 : bundle.order_detail_id) || (bundle === null || bundle === void 0 ? void 0 : bundle.orderDetailId) || (bundle === null || bundle === void 0 ? void 0 : bundle.booking_id));
|
|
6352
|
-
var bundleQty = new Decimal(Number(qty) || 1).times(Number((
|
|
6352
|
+
var bundleQty = new Decimal(Number(qty) || 1).times(Number((_ref80 = (_bundle$num3 = bundle === null || bundle === void 0 ? void 0 : bundle.num) !== null && _bundle$num3 !== void 0 ? _bundle$num3 : bundle === null || bundle === void 0 ? void 0 : bundle.quantity) !== null && _ref80 !== void 0 ? _ref80 : 1) || 1).toNumber();
|
|
6353
6353
|
var _iterator30 = _createForOfIteratorHelper((bundle === null || bundle === void 0 ? void 0 : bundle.discount_list) || []),
|
|
6354
6354
|
_step30;
|
|
6355
6355
|
try {
|
|
@@ -440,6 +440,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
440
440
|
// 2. 展开 bundle 子商品
|
|
441
441
|
if (product.bundle && Array.isArray(product.bundle) && product.bundle.length > 0) {
|
|
442
442
|
product.bundle.forEach(function (bundleItem, bundleIndex) {
|
|
443
|
+
var _ref3, _bundleItem$bundle_pr;
|
|
443
444
|
flattened.push({
|
|
444
445
|
type: 'bundle',
|
|
445
446
|
originProduct: originProduct,
|
|
@@ -448,8 +449,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
448
449
|
bundleIndex: bundleIndex,
|
|
449
450
|
// 虚拟商品属性
|
|
450
451
|
price: Number(bundleItem.price || 0),
|
|
451
|
-
id: bundleItem._bundle_product_id,
|
|
452
|
-
// 🔥 使用 _bundle_product_id
|
|
452
|
+
id: (_ref3 = (_bundleItem$bundle_pr = bundleItem.bundle_product_id) !== null && _bundleItem$bundle_pr !== void 0 ? _bundleItem$bundle_pr : bundleItem._bundle_product_id) !== null && _ref3 !== void 0 ? _ref3 : bundleItem.product_id,
|
|
453
453
|
_id: "".concat(product._id, "_bundle_").concat(bundleIndex),
|
|
454
454
|
parentId: product._id,
|
|
455
455
|
num: bundleItem.num || 1,
|
|
@@ -598,10 +598,10 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
598
598
|
|
|
599
599
|
// 对扁平化后的列表按价格降序排序(用于应用优惠券时优先选择高价商品)
|
|
600
600
|
var sortedFlattenedList = flattenedList.sort(function (a, b) {
|
|
601
|
-
var
|
|
601
|
+
var _ref4, _a$original_price, _ref5, _b$original_price;
|
|
602
602
|
// 子商品优先使用 original_price,主商品使用 price
|
|
603
|
-
var priceA = new Decimal(a.type === 'bundle' ? (
|
|
604
|
-
var priceB = new Decimal(b.type === 'bundle' ? (
|
|
603
|
+
var priceA = new Decimal(a.type === 'bundle' ? (_ref4 = (_a$original_price = a.original_price) !== null && _a$original_price !== void 0 ? _a$original_price : a.price) !== null && _ref4 !== void 0 ? _ref4 : '0' : a.price || '0');
|
|
604
|
+
var priceB = new Decimal(b.type === 'bundle' ? (_ref5 = (_b$original_price = b.original_price) !== null && _b$original_price !== void 0 ? _b$original_price : b.price) !== null && _ref5 !== void 0 ? _ref5 : '0' : b.price || '0');
|
|
605
605
|
if (priceA.equals(priceB)) {
|
|
606
606
|
// 价格相同时,主商品优先
|
|
607
607
|
if (a.type !== b.type) {
|
|
@@ -846,7 +846,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
846
846
|
// 收集该折扣卡适用的商品(排除被其他专属折扣卡占用的商品)
|
|
847
847
|
var applicableProducts = [];
|
|
848
848
|
sortedFlattenedList.forEach(function (flatItem) {
|
|
849
|
-
var _flatItem$parentProdu2, _flatItem$parentProdu3, _product$price,
|
|
849
|
+
var _flatItem$parentProdu2, _flatItem$parentProdu3, _product$price, _ref6, _flatItem$original_pr;
|
|
850
850
|
// 🔥 检查该商品是否被其他专属折扣卡占用
|
|
851
851
|
var occupyingDiscountId = occupiedItems.get(flatItem._id);
|
|
852
852
|
if (occupyingDiscountId !== undefined && occupyingDiscountId !== discount.id) {
|
|
@@ -874,7 +874,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
874
874
|
|
|
875
875
|
// 对于主商品:使用 price
|
|
876
876
|
// 对于子商品:优先使用 flatItem.original_price,否则使用 flatItem.price
|
|
877
|
-
var originalAmount = flatItem.type === 'main' ? Number((_product$price = product.price) !== null && _product$price !== void 0 ? _product$price : 0) : Number((
|
|
877
|
+
var originalAmount = flatItem.type === 'main' ? Number((_product$price = product.price) !== null && _product$price !== void 0 ? _product$price : 0) : Number((_ref6 = (_flatItem$original_pr = flatItem.original_price) !== null && _flatItem$original_pr !== void 0 ? _flatItem$original_pr : flatItem.price) !== null && _ref6 !== void 0 ? _ref6 : 0);
|
|
878
878
|
|
|
879
879
|
// 传递 parentQuantity 用于差值处理时判断是否是真正的"数量为1"
|
|
880
880
|
var productData = {
|
|
@@ -1003,13 +1003,13 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1003
1003
|
};
|
|
1004
1004
|
var optionDiscountAmount = 0;
|
|
1005
1005
|
var discountedOptions = options.map(function (option) {
|
|
1006
|
-
var
|
|
1006
|
+
var _ref7, _ref8, _option$_original_pri, _ref9, _option$num, _rest$price, _option$_original_pri2;
|
|
1007
1007
|
// 折前单价:优先 price,缺失再 add_price;已写回折后价时用 _original_price(或旧字段 _original_add_price)
|
|
1008
|
-
var rawUnit = (
|
|
1008
|
+
var rawUnit = (_ref7 = (_ref8 = (_option$_original_pri = option._original_price) !== null && _option$_original_pri !== void 0 ? _option$_original_pri : option._original_add_price) !== null && _ref8 !== void 0 ? _ref8 : option.price) !== null && _ref7 !== void 0 ? _ref7 : option.add_price;
|
|
1009
1009
|
var baseUnitNum = Number(rawUnit !== null && rawUnit !== void 0 ? rawUnit : 0);
|
|
1010
1010
|
if (baseUnitNum <= 0) return option;
|
|
1011
1011
|
var discountedPrice = getDiscountAmount(discount, baseUnitNum, baseUnitNum);
|
|
1012
|
-
var optQty = Number((
|
|
1012
|
+
var optQty = Number((_ref9 = (_option$num = option.num) !== null && _option$num !== void 0 ? _option$num : option.quantity) !== null && _ref9 !== void 0 ? _ref9 : 1);
|
|
1013
1013
|
optionDiscountAmount = new Decimal(optionDiscountAmount).plus(new Decimal(baseUnitNum).minus(discountedPrice).mul(optQty)).toNumber();
|
|
1014
1014
|
var _original_add_price = option._original_add_price,
|
|
1015
1015
|
rest = _objectWithoutProperties(option, _excluded);
|
|
@@ -1043,9 +1043,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1043
1043
|
var getOptionTotal = function getOptionTotal(options) {
|
|
1044
1044
|
if (!(options !== null && options !== void 0 && options.length)) return 0;
|
|
1045
1045
|
return options.reduce(function (sum, opt) {
|
|
1046
|
-
var
|
|
1047
|
-
var unit = Number((
|
|
1048
|
-
var n = Number((
|
|
1046
|
+
var _ref10, _opt$price, _ref11, _opt$num;
|
|
1047
|
+
var unit = Number((_ref10 = (_opt$price = opt.price) !== null && _opt$price !== void 0 ? _opt$price : opt.add_price) !== null && _ref10 !== void 0 ? _ref10 : 0);
|
|
1048
|
+
var n = Number((_ref11 = (_opt$num = opt.num) !== null && _opt$num !== void 0 ? _opt$num : opt.quantity) !== null && _ref11 !== void 0 ? _ref11 : 1);
|
|
1049
1049
|
return new Decimal(sum).plus(new Decimal(unit).mul(n)).toNumber();
|
|
1050
1050
|
}, 0);
|
|
1051
1051
|
};
|
|
@@ -1201,8 +1201,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1201
1201
|
isManualDiscount = typeof product.isManualDiscount === 'boolean' ? product.isManualDiscount : ((_product$discount_lis5 = product.discount_list) === null || _product$discount_lis5 === void 0 ? void 0 : _product$discount_lis5.some(function (item) {
|
|
1202
1202
|
return item.type === 'product';
|
|
1203
1203
|
})) || product.total != product.origin_total && (product.bundle || []).every(function (item) {
|
|
1204
|
-
var
|
|
1205
|
-
return !((
|
|
1204
|
+
var _ref12;
|
|
1205
|
+
return !((_ref12 = item.discount_list || []) !== null && _ref12 !== void 0 && _ref12.length);
|
|
1206
1206
|
}) && (!((_product$discount_lis6 = product.discount_list) !== null && _product$discount_lis6 !== void 0 && _product$discount_lis6.length) || ((_product12 = product) === null || _product12 === void 0 || (_product12 = _product12.discount_list) === null || _product12 === void 0 || (_product12$every = _product12.every) === null || _product12$every === void 0 ? void 0 : _product12$every.call(_product12, function (item) {
|
|
1207
1207
|
return item.type === 'product';
|
|
1208
1208
|
})));
|
|
@@ -1218,8 +1218,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1218
1218
|
isManualDiscount = typeof parentProduct.isManualDiscount === 'boolean' ? parentProduct.isManualDiscount : ((_parentProduct$discou = parentProduct.discount_list) === null || _parentProduct$discou === void 0 ? void 0 : _parentProduct$discou.some(function (item) {
|
|
1219
1219
|
return item.type === 'product';
|
|
1220
1220
|
})) || parentProduct.total != parentProduct.origin_total && (parentProduct.bundle || []).every(function (item) {
|
|
1221
|
-
var
|
|
1222
|
-
return !((
|
|
1221
|
+
var _ref13;
|
|
1222
|
+
return !((_ref13 = item.discount_list || []) !== null && _ref13 !== void 0 && _ref13.length);
|
|
1223
1223
|
}) && (!((_parentProduct$discou2 = parentProduct.discount_list) !== null && _parentProduct$discou2 !== void 0 && _parentProduct$discou2.length) || (parentProduct === null || parentProduct === void 0 || (_parentProduct$discou3 = parentProduct.discount_list) === null || _parentProduct$discou3 === void 0 || (_parentProduct$discou4 = _parentProduct$discou3.every) === null || _parentProduct$discou4 === void 0 ? void 0 : _parentProduct$discou4.call(_parentProduct$discou3, function (item) {
|
|
1224
1224
|
return item.type === 'product';
|
|
1225
1225
|
})));
|
|
@@ -1312,8 +1312,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1312
1312
|
discount_list: isManualDiscount ? _this3.resolveDiscountListForManualOverride(product.discount_list) : _this3.filterDiscountListByType(product.discount_list, 'promotion')
|
|
1313
1313
|
}))]);
|
|
1314
1314
|
} else {
|
|
1315
|
-
var
|
|
1316
|
-
var total = product.inPromotion ? (
|
|
1315
|
+
var _ref14, _product$_promotion$f, _product13, _product$origin_total;
|
|
1316
|
+
var total = product.inPromotion ? (_ref14 = (_product$_promotion$f = (_product13 = product) === null || _product13 === void 0 || (_product13 = _product13._promotion) === null || _product13 === void 0 ? void 0 : _product13.finalPrice) !== null && _product$_promotion$f !== void 0 ? _product$_promotion$f : product.origin_total) !== null && _ref14 !== void 0 ? _ref14 : product.total : (_product$origin_total = product.origin_total) !== null && _product$origin_total !== void 0 ? _product$origin_total : product.total;
|
|
1317
1317
|
var main_product_selling_price = product.price;
|
|
1318
1318
|
if ((product.discount_list || []).some(function (item) {
|
|
1319
1319
|
return item.type === 'promotion';
|
|
@@ -1960,7 +1960,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1960
1960
|
} else {
|
|
1961
1961
|
// 🔥 没有子商品被拆分,使用原有逻辑
|
|
1962
1962
|
mainProductArr.forEach(function (mainProduct) {
|
|
1963
|
-
var
|
|
1963
|
+
var _ref16, _mainProductData$main, _mainProductData$disc, _mainProductData$disc2, _mainProductData$disc3;
|
|
1964
1964
|
var mainProductData = _this3.hooks.getProduct(mainProduct);
|
|
1965
1965
|
|
|
1966
1966
|
// 重组bundle
|
|
@@ -1975,9 +1975,9 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1975
1975
|
} else {
|
|
1976
1976
|
// 🔥 关键:拆分后的bundle item
|
|
1977
1977
|
processedBundleItems.forEach(function (item) {
|
|
1978
|
-
var _item$price,
|
|
1978
|
+
var _item$price, _ref15, _item$bundle_selling_;
|
|
1979
1979
|
var nextBundlePrice = (_item$price = item.price) !== null && _item$price !== void 0 ? _item$price : bundleItem.price;
|
|
1980
|
-
var nextBundleSellingPrice = (
|
|
1980
|
+
var nextBundleSellingPrice = (_ref15 = (_item$bundle_selling_ = item.bundle_selling_price) !== null && _item$bundle_selling_ !== void 0 ? _item$bundle_selling_ : item.price) !== null && _ref15 !== void 0 ? _ref15 : bundleItem.bundle_selling_price;
|
|
1981
1981
|
// 🔥 更新 discount_list 中的 num,使其与拆分后的 item.num 一致
|
|
1982
1982
|
var updatedDiscountList = (item.discount_list || []).map(function (discount) {
|
|
1983
1983
|
var _discount$metadata10;
|
|
@@ -2004,7 +2004,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2004
2004
|
|
|
2005
2005
|
// 主商品已经在前面的 setProduct 中应用过折扣;这里只替换 bundle,
|
|
2006
2006
|
// 避免把主商品 discount_list 再扣一次。
|
|
2007
|
-
var mainSellingPrice = (
|
|
2007
|
+
var mainSellingPrice = (_ref16 = (_mainProductData$main = mainProductData.main_product_selling_price) !== null && _mainProductData$main !== void 0 ? _mainProductData$main : mainProductData.price) !== null && _ref16 !== void 0 ? _ref16 : 0;
|
|
2008
2008
|
var newTotal = Number(mainSellingPrice || 0);
|
|
2009
2009
|
var newOriginTotal = Number(mainProductData.original_price || mainProductData.price || 0);
|
|
2010
2010
|
|
|
@@ -2152,14 +2152,14 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2152
2152
|
var ruleType = usageRules.type;
|
|
2153
2153
|
// 套餐适用范围配置
|
|
2154
2154
|
var packageScope = usageRules === null || usageRules === void 0 ? void 0 : usageRules.package_scope;
|
|
2155
|
-
var
|
|
2156
|
-
scopeType =
|
|
2157
|
-
|
|
2158
|
-
exclude_bundle_product_ids =
|
|
2159
|
-
|
|
2160
|
-
include_bundle_product_ids =
|
|
2161
|
-
|
|
2162
|
-
filter =
|
|
2155
|
+
var _ref17 = packageScope || {},
|
|
2156
|
+
scopeType = _ref17.type,
|
|
2157
|
+
_ref17$exclude_bundle = _ref17.exclude_bundle_product_ids,
|
|
2158
|
+
exclude_bundle_product_ids = _ref17$exclude_bundle === void 0 ? [] : _ref17$exclude_bundle,
|
|
2159
|
+
_ref17$include_bundle = _ref17.include_bundle_product_ids,
|
|
2160
|
+
include_bundle_product_ids = _ref17$include_bundle === void 0 ? [] : _ref17$include_bundle,
|
|
2161
|
+
_ref17$filter = _ref17.filter,
|
|
2162
|
+
filter = _ref17$filter === void 0 ? 0 : _ref17$filter;
|
|
2163
2163
|
var isMainProduct = flatItem.type === 'main'; // 单独购买
|
|
2164
2164
|
var isBundleItem = flatItem.type === 'bundle'; // 套餐中购买
|
|
2165
2165
|
|
|
@@ -167,6 +167,11 @@ export declare class OrderModule extends BaseModule implements Module {
|
|
|
167
167
|
private syncOrdersMap;
|
|
168
168
|
private getOrderMapKey;
|
|
169
169
|
private isBlankIdentityValue;
|
|
170
|
+
/**
|
|
171
|
+
* `/sales/draft` 的旧调用方可能把未设置的 business_code 传成空串。
|
|
172
|
+
* 对同一真实订单,空值不能覆盖已有的分类,否则 booking 查询会把该订单从 Party 列表过滤掉。
|
|
173
|
+
*/
|
|
174
|
+
private preserveExistingBusinessCodeForDraft;
|
|
170
175
|
private getOrderIdentityEntries;
|
|
171
176
|
private getOrderIdentityKeys;
|
|
172
177
|
private getOrderDateKey;
|
|
@@ -1572,7 +1572,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1572
1572
|
value: (function () {
|
|
1573
1573
|
var _upsertLocalDraftOrders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(draftOrders) {
|
|
1574
1574
|
var _this10 = this;
|
|
1575
|
-
var draftMap, memoryDraftMap, _iterator8, _step8, order, draftOrder, storageKey, memoryDraftOrder,
|
|
1575
|
+
var draftMap, memoryDraftMap, _iterator8, _step8, order, draftOrder, storageKey, memoryDraftOrder, mergeActions, updatedList, identityKeyToIndex, index, _iterator9, _step9, key, _iterator10, _step10, _step10$value, _storageKey2, _draftOrder, matchIndex, existingOrder, reconciledDraftOrder, mergedOrder, nextOrder, insertIndex, patchedOrders, previousList, removedLegacyMemoryDraft;
|
|
1576
1576
|
return _regeneratorRuntime().wrap(function _callee13$(_context13) {
|
|
1577
1577
|
while (1) switch (_context13.prev = _context13.next) {
|
|
1578
1578
|
case 0:
|
|
@@ -1639,7 +1639,6 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1639
1639
|
memoryDraftCount: memoryDraftMap.size,
|
|
1640
1640
|
sqliteOnlyDraftCount: draftMap.size - memoryDraftMap.size
|
|
1641
1641
|
});
|
|
1642
|
-
patchedOrders = _toConsumableArray(draftMap.values());
|
|
1643
1642
|
mergeActions = {};
|
|
1644
1643
|
updatedList = this.store.list.filter(function (order) {
|
|
1645
1644
|
return _this10.shouldKeepOrderInMemory(order);
|
|
@@ -1659,66 +1658,71 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1659
1658
|
}
|
|
1660
1659
|
}
|
|
1661
1660
|
_iterator10 = _createForOfIteratorHelper(memoryDraftMap.entries());
|
|
1662
|
-
_context13.prev =
|
|
1661
|
+
_context13.prev = 36;
|
|
1663
1662
|
_iterator10.s();
|
|
1664
|
-
case
|
|
1663
|
+
case 38:
|
|
1665
1664
|
if ((_step10 = _iterator10.n()).done) {
|
|
1666
|
-
_context13.next =
|
|
1665
|
+
_context13.next = 57;
|
|
1667
1666
|
break;
|
|
1668
1667
|
}
|
|
1669
1668
|
_step10$value = _slicedToArray(_step10.value, 2), _storageKey2 = _step10$value[0], _draftOrder = _step10$value[1];
|
|
1670
1669
|
matchIndex = this.lookupOrderIndexByIdentityKeys(identityKeyToIndex, this.getOrderIdentityMatchKeys(_draftOrder));
|
|
1671
1670
|
if (!(matchIndex >= 0)) {
|
|
1672
|
-
_context13.next =
|
|
1671
|
+
_context13.next = 51;
|
|
1673
1672
|
break;
|
|
1674
1673
|
}
|
|
1675
|
-
|
|
1674
|
+
existingOrder = updatedList[matchIndex];
|
|
1675
|
+
reconciledDraftOrder = this.preserveExistingBusinessCodeForDraft(existingOrder, _draftOrder);
|
|
1676
|
+
mergedOrder = this.mergeOrderRecords(existingOrder, reconciledDraftOrder);
|
|
1676
1677
|
nextOrder = _objectSpread(_objectSpread({}, mergedOrder), {}, {
|
|
1677
1678
|
need_sync: 0,
|
|
1678
1679
|
is_draft_order: 1
|
|
1679
1680
|
});
|
|
1680
1681
|
updatedList[matchIndex] = nextOrder;
|
|
1682
|
+
// SQLite 必须与内存中的草稿保持同一份 business_code,避免下次 hydrate 再次丢失分类。
|
|
1683
|
+
draftMap.set(_storageKey2, reconciledDraftOrder);
|
|
1681
1684
|
this.registerOrderIdentityKeys(identityKeyToIndex, nextOrder, matchIndex);
|
|
1682
1685
|
mergeActions[_storageKey2] = 'update';
|
|
1683
|
-
return _context13.abrupt("continue",
|
|
1684
|
-
case
|
|
1686
|
+
return _context13.abrupt("continue", 55);
|
|
1687
|
+
case 51:
|
|
1685
1688
|
insertIndex = updatedList.length;
|
|
1686
1689
|
updatedList.push(_draftOrder);
|
|
1687
1690
|
this.registerOrderIdentityKeys(identityKeyToIndex, _draftOrder, insertIndex);
|
|
1688
1691
|
mergeActions[_storageKey2] = 'insert';
|
|
1689
|
-
case 53:
|
|
1690
|
-
_context13.next = 39;
|
|
1691
|
-
break;
|
|
1692
1692
|
case 55:
|
|
1693
|
-
_context13.next =
|
|
1693
|
+
_context13.next = 38;
|
|
1694
1694
|
break;
|
|
1695
1695
|
case 57:
|
|
1696
|
-
_context13.
|
|
1697
|
-
|
|
1696
|
+
_context13.next = 62;
|
|
1697
|
+
break;
|
|
1698
|
+
case 59:
|
|
1699
|
+
_context13.prev = 59;
|
|
1700
|
+
_context13.t1 = _context13["catch"](36);
|
|
1698
1701
|
_iterator10.e(_context13.t1);
|
|
1699
|
-
case
|
|
1700
|
-
_context13.prev =
|
|
1702
|
+
case 62:
|
|
1703
|
+
_context13.prev = 62;
|
|
1701
1704
|
_iterator10.f();
|
|
1702
|
-
return _context13.finish(
|
|
1703
|
-
case
|
|
1705
|
+
return _context13.finish(62);
|
|
1706
|
+
case 65:
|
|
1707
|
+
patchedOrders = _toConsumableArray(draftMap.values());
|
|
1704
1708
|
previousList = this.store.list;
|
|
1705
1709
|
this.store.list = this.runOrderStoreSelfCheck(updatedList, 'upsertLocalDraftOrders.store');
|
|
1706
1710
|
this.syncOrdersMap();
|
|
1707
|
-
_context13.prev =
|
|
1708
|
-
_context13.next =
|
|
1711
|
+
_context13.prev = 69;
|
|
1712
|
+
_context13.next = 72;
|
|
1709
1713
|
return this.patchOrdersInSQLite(patchedOrders, 'upsertLocalDraftOrders', mergeActions, {
|
|
1710
1714
|
throwOnError: true
|
|
1711
1715
|
});
|
|
1712
|
-
case
|
|
1713
|
-
_context13.next =
|
|
1716
|
+
case 72:
|
|
1717
|
+
_context13.next = 79;
|
|
1714
1718
|
break;
|
|
1715
|
-
case
|
|
1716
|
-
_context13.prev =
|
|
1717
|
-
_context13.t2 = _context13["catch"](
|
|
1719
|
+
case 74:
|
|
1720
|
+
_context13.prev = 74;
|
|
1721
|
+
_context13.t2 = _context13["catch"](69);
|
|
1718
1722
|
this.store.list = previousList;
|
|
1719
1723
|
this.syncOrdersMap();
|
|
1720
1724
|
throw _context13.t2;
|
|
1721
|
-
case
|
|
1725
|
+
case 79:
|
|
1722
1726
|
this.logInfo('upsertLocalDraftOrders-结束', {
|
|
1723
1727
|
count: patchedOrders.length,
|
|
1724
1728
|
storeOrderCountAfter: this.store.list.length
|
|
@@ -1727,18 +1731,18 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1727
1731
|
return !_this10.shouldKeepOrderInMemory(order);
|
|
1728
1732
|
});
|
|
1729
1733
|
if (!(memoryDraftMap.size > 0 || removedLegacyMemoryDraft)) {
|
|
1730
|
-
_context13.next =
|
|
1734
|
+
_context13.next = 84;
|
|
1731
1735
|
break;
|
|
1732
1736
|
}
|
|
1733
|
-
_context13.next =
|
|
1737
|
+
_context13.next = 84;
|
|
1734
1738
|
return this.emitOrdersChanged(patchedOrders.filter(function (order) {
|
|
1735
1739
|
return _this10.shouldKeepOrderInMemory(order);
|
|
1736
1740
|
}), 'upsertLocalDraftOrders');
|
|
1737
|
-
case
|
|
1741
|
+
case 84:
|
|
1738
1742
|
case "end":
|
|
1739
1743
|
return _context13.stop();
|
|
1740
1744
|
}
|
|
1741
|
-
}, _callee13, this, [[6, 21, 24, 27], [
|
|
1745
|
+
}, _callee13, this, [[6, 21, 24, 27], [36, 59, 62, 65], [69, 74]]);
|
|
1742
1746
|
}));
|
|
1743
1747
|
function upsertLocalDraftOrders(_x10) {
|
|
1744
1748
|
return _upsertLocalDraftOrders.apply(this, arguments);
|
|
@@ -1853,6 +1857,23 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1853
1857
|
value: function isBlankIdentityValue(value) {
|
|
1854
1858
|
return value === undefined || value === null || value === '';
|
|
1855
1859
|
}
|
|
1860
|
+
|
|
1861
|
+
/**
|
|
1862
|
+
* `/sales/draft` 的旧调用方可能把未设置的 business_code 传成空串。
|
|
1863
|
+
* 对同一真实订单,空值不能覆盖已有的分类,否则 booking 查询会把该订单从 Party 列表过滤掉。
|
|
1864
|
+
*/
|
|
1865
|
+
}, {
|
|
1866
|
+
key: "preserveExistingBusinessCodeForDraft",
|
|
1867
|
+
value: function preserveExistingBusinessCodeForDraft(existingOrder, draftOrder) {
|
|
1868
|
+
var existingBusinessCode = existingOrder.business_code;
|
|
1869
|
+
var draftBusinessCode = draftOrder.business_code;
|
|
1870
|
+
var hasExistingBusinessCode = typeof existingBusinessCode === 'string' && existingBusinessCode.trim() !== '';
|
|
1871
|
+
var hasDraftBusinessCode = typeof draftBusinessCode === 'string' && draftBusinessCode.trim() !== '';
|
|
1872
|
+
if (!hasExistingBusinessCode || hasDraftBusinessCode) return draftOrder;
|
|
1873
|
+
return _objectSpread(_objectSpread({}, draftOrder), {}, {
|
|
1874
|
+
business_code: existingBusinessCode
|
|
1875
|
+
});
|
|
1876
|
+
}
|
|
1856
1877
|
}, {
|
|
1857
1878
|
key: "getOrderIdentityEntries",
|
|
1858
1879
|
value: function getOrderIdentityEntries(order) {
|
|
@@ -2743,7 +2743,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2743
2743
|
key: "saveSalesOrderDraft",
|
|
2744
2744
|
value: function () {
|
|
2745
2745
|
var _saveSalesOrderDraft = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee28(params) {
|
|
2746
|
-
var _params$platform, _this$otherParams10,
|
|
2746
|
+
var _params$platform, _this$otherParams10, _this$otherParams11, _this$otherParams12, _params$channel, _params$type, _this$otherParams13;
|
|
2747
2747
|
return _regeneratorRuntime().wrap(function _callee28$(_context28) {
|
|
2748
2748
|
while (1) switch (_context28.prev = _context28.next) {
|
|
2749
2749
|
case 0:
|
|
@@ -2756,7 +2756,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2756
2756
|
return _context28.abrupt("return", this.store.order.saveTempOrderAsDraft(_objectSpread({
|
|
2757
2757
|
cacheId: this.cacheId,
|
|
2758
2758
|
platform: (_params$platform = params === null || params === void 0 ? void 0 : params.platform) !== null && _params$platform !== void 0 ? _params$platform : (_this$otherParams10 = this.otherParams) === null || _this$otherParams10 === void 0 ? void 0 : _this$otherParams10.platform,
|
|
2759
|
-
businessCode: (
|
|
2759
|
+
businessCode: (params === null || params === void 0 ? void 0 : params.businessCode) || ((_this$otherParams11 = this.otherParams) === null || _this$otherParams11 === void 0 ? void 0 : _this$otherParams11.businessCode) || ((_this$otherParams12 = this.otherParams) === null || _this$otherParams12 === void 0 ? void 0 : _this$otherParams12.business_code),
|
|
2760
2760
|
channel: (_params$channel = params === null || params === void 0 ? void 0 : params.channel) !== null && _params$channel !== void 0 ? _params$channel : this.getSubmitOrderSalesChannel(),
|
|
2761
2761
|
type: (_params$type = params === null || params === void 0 ? void 0 : params.type) !== null && _params$type !== void 0 ? _params$type : (_this$otherParams13 = this.otherParams) === null || _this$otherParams13 === void 0 ? void 0 : _this$otherParams13.type
|
|
2762
2762
|
}, (params === null || params === void 0 ? void 0 : params.enhancePayload) !== undefined ? {
|
|
@@ -2902,7 +2902,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2902
2902
|
key: "syncPaymentsToOrder",
|
|
2903
2903
|
value: function () {
|
|
2904
2904
|
var _syncPaymentsToOrder = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee31(params) {
|
|
2905
|
-
var
|
|
2905
|
+
var _ref22, _params$businessCode, _this$otherParams22, _this$otherParams23, _params$channel2;
|
|
2906
2906
|
var businessCode, channel, syncParams, syncState, payments, syncResult, latestPayments, amountSnapshot, orderSnapshot, syncPayload;
|
|
2907
2907
|
return _regeneratorRuntime().wrap(function _callee31$(_context31) {
|
|
2908
2908
|
while (1) switch (_context31.prev = _context31.next) {
|
|
@@ -2913,7 +2913,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2913
2913
|
}
|
|
2914
2914
|
throw new Error('order 模块未初始化');
|
|
2915
2915
|
case 2:
|
|
2916
|
-
businessCode = (
|
|
2916
|
+
businessCode = (_ref22 = (_params$businessCode = params.businessCode) !== null && _params$businessCode !== void 0 ? _params$businessCode : (_this$otherParams22 = this.otherParams) === null || _this$otherParams22 === void 0 ? void 0 : _this$otherParams22.businessCode) !== null && _ref22 !== void 0 ? _ref22 : (_this$otherParams23 = this.otherParams) === null || _this$otherParams23 === void 0 ? void 0 : _this$otherParams23.business_code;
|
|
2917
2917
|
channel = (_params$channel2 = params.channel) !== null && _params$channel2 !== void 0 ? _params$channel2 : this.getSubmitOrderSalesChannel();
|
|
2918
2918
|
syncParams = _objectSpread(_objectSpread(_objectSpread({}, params), businessCode !== undefined ? {
|
|
2919
2919
|
businessCode: businessCode
|
|
@@ -3173,7 +3173,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3173
3173
|
var _this$otherParams24,
|
|
3174
3174
|
_paymentRecord$paymen,
|
|
3175
3175
|
_paymentRecord$create,
|
|
3176
|
-
|
|
3176
|
+
_ref23,
|
|
3177
3177
|
_paymentRecord$origin,
|
|
3178
3178
|
_this14 = this;
|
|
3179
3179
|
if (!this.store.order) throw new Error('order 模块未初始化');
|
|
@@ -3195,7 +3195,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3195
3195
|
var paymentTime = (_paymentRecord$paymen = paymentRecord.payment_time) !== null && _paymentRecord$paymen !== void 0 ? _paymentRecord$paymen : paymentTimestamp;
|
|
3196
3196
|
var createdAt = (_paymentRecord$create = paymentRecord.created_at) !== null && _paymentRecord$create !== void 0 ? _paymentRecord$create : paymentTimestamp;
|
|
3197
3197
|
var serviceCharge = paymentRecord.service_charge && _typeof(paymentRecord.service_charge) === 'object' ? paymentRecord.service_charge : null;
|
|
3198
|
-
var calculatedServiceFee = serviceCharge ? new Decimal((
|
|
3198
|
+
var calculatedServiceFee = serviceCharge ? new Decimal((_ref23 = (_paymentRecord$origin = paymentRecord.origin_amount) !== null && _paymentRecord$origin !== void 0 ? _paymentRecord$origin : paymentRecord.amount) !== null && _ref23 !== void 0 ? _ref23 : 0).times(serviceCharge.percentage || 0).plus(serviceCharge.amount || 0).toDecimalPlaces(2).toFixed(2) : undefined;
|
|
3199
3199
|
var payments = this.store.order.addOrderPayment(_objectSpread(_objectSpread(_objectSpread({}, normalizedPaymentRecord), calculatedServiceFee !== undefined ? {
|
|
3200
3200
|
service_fee: calculatedServiceFee
|
|
3201
3201
|
} : {}), {}, {
|
|
@@ -3471,7 +3471,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3471
3471
|
key: "initWalletData",
|
|
3472
3472
|
value: function () {
|
|
3473
3473
|
var _initWalletData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee36(params) {
|
|
3474
|
-
var _params$order_wait_pa,
|
|
3474
|
+
var _params$order_wait_pa, _ref24, _tempOrder$is_price_i;
|
|
3475
3475
|
var snapshot, tempOrder, amount, walletBusinessData, result;
|
|
3476
3476
|
return _regeneratorRuntime().wrap(function _callee36$(_context36) {
|
|
3477
3477
|
while (1) switch (_context36.prev = _context36.next) {
|
|
@@ -3514,7 +3514,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3514
3514
|
},
|
|
3515
3515
|
products: this.getWalletProductList(),
|
|
3516
3516
|
order_wait_pay_amount: (_params$order_wait_pa = params === null || params === void 0 ? void 0 : params.order_wait_pay_amount) !== null && _params$order_wait_pa !== void 0 ? _params$order_wait_pa : Number(amount.amountGap || 0),
|
|
3517
|
-
is_price_include_tax: (
|
|
3517
|
+
is_price_include_tax: (_ref24 = (_tempOrder$is_price_i = tempOrder.is_price_include_tax) !== null && _tempOrder$is_price_i !== void 0 ? _tempOrder$is_price_i : this.otherParams.is_price_include_tax) !== null && _ref24 !== void 0 ? _ref24 : 1
|
|
3518
3518
|
}, snapshot.identity.orderId ? {
|
|
3519
3519
|
payment_order_id: String(snapshot.identity.orderId)
|
|
3520
3520
|
} : {});
|
|
@@ -3645,7 +3645,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3645
3645
|
key: "sendCustomerPayLink",
|
|
3646
3646
|
value: (function () {
|
|
3647
3647
|
var _sendCustomerPayLink = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee38(params) {
|
|
3648
|
-
var orderIds,
|
|
3648
|
+
var orderIds, _ref25, _ref26, _submitResult$data$or, _submitResult$data, _submitResult$data2, submitResult, orderId;
|
|
3649
3649
|
return _regeneratorRuntime().wrap(function _callee38$(_context38) {
|
|
3650
3650
|
while (1) switch (_context38.prev = _context38.next) {
|
|
3651
3651
|
case 0:
|
|
@@ -3666,7 +3666,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3666
3666
|
});
|
|
3667
3667
|
case 6:
|
|
3668
3668
|
submitResult = _context38.sent;
|
|
3669
|
-
orderId = (
|
|
3669
|
+
orderId = (_ref25 = (_ref26 = (_submitResult$data$or = submitResult === null || submitResult === void 0 || (_submitResult$data = submitResult.data) === null || _submitResult$data === void 0 ? void 0 : _submitResult$data.order_id) !== null && _submitResult$data$or !== void 0 ? _submitResult$data$or : submitResult === null || submitResult === void 0 ? void 0 : submitResult.order_id) !== null && _ref26 !== void 0 ? _ref26 : submitResult === null || submitResult === void 0 || (_submitResult$data2 = submitResult.data) === null || _submitResult$data2 === void 0 ? void 0 : _submitResult$data2.id) !== null && _ref25 !== void 0 ? _ref25 : submitResult === null || submitResult === void 0 ? void 0 : submitResult.id;
|
|
3670
3670
|
if (orderId) {
|
|
3671
3671
|
_context38.next = 10;
|
|
3672
3672
|
break;
|
|
@@ -3838,12 +3838,12 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3838
3838
|
});
|
|
3839
3839
|
_context41.next = 9;
|
|
3840
3840
|
return Promise.all(Array.from(groups.entries()).map( /*#__PURE__*/function () {
|
|
3841
|
-
var
|
|
3842
|
-
var
|
|
3841
|
+
var _ref28 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee40(_ref27) {
|
|
3842
|
+
var _ref29, groupKey, group, productsById;
|
|
3843
3843
|
return _regeneratorRuntime().wrap(function _callee40$(_context40) {
|
|
3844
3844
|
while (1) switch (_context40.prev = _context40.next) {
|
|
3845
3845
|
case 0:
|
|
3846
|
-
|
|
3846
|
+
_ref29 = _slicedToArray(_ref27, 2), groupKey = _ref29[0], group = _ref29[1];
|
|
3847
3847
|
_context40.next = 3;
|
|
3848
3848
|
return _this16.loadProductsForPriceQuery({
|
|
3849
3849
|
ids: Array.from(group.ids),
|
|
@@ -3861,7 +3861,7 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3861
3861
|
}, _callee40);
|
|
3862
3862
|
}));
|
|
3863
3863
|
return function (_x35) {
|
|
3864
|
-
return
|
|
3864
|
+
return _ref28.apply(this, arguments);
|
|
3865
3865
|
};
|
|
3866
3866
|
}()));
|
|
3867
3867
|
case 9:
|
|
@@ -4290,14 +4290,14 @@ export var BaseSalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
4290
4290
|
value: function () {
|
|
4291
4291
|
var _setOtherParams = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee51(params) {
|
|
4292
4292
|
var _this$otherParams26;
|
|
4293
|
-
var
|
|
4294
|
-
|
|
4293
|
+
var _ref30,
|
|
4294
|
+
_ref30$cover,
|
|
4295
4295
|
cover,
|
|
4296
4296
|
_args51 = arguments;
|
|
4297
4297
|
return _regeneratorRuntime().wrap(function _callee51$(_context51) {
|
|
4298
4298
|
while (1) switch (_context51.prev = _context51.next) {
|
|
4299
4299
|
case 0:
|
|
4300
|
-
|
|
4300
|
+
_ref30 = _args51.length > 1 && _args51[1] !== undefined ? _args51[1] : {}, _ref30$cover = _ref30.cover, cover = _ref30$cover === void 0 ? false : _ref30$cover;
|
|
4301
4301
|
if (cover) {
|
|
4302
4302
|
this.otherParams = _objectSpread({}, params);
|
|
4303
4303
|
} else {
|
|
@@ -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 | 6 | 4 | 5 | 3;
|
|
315
315
|
}[]>;
|
|
316
316
|
submitTimeSlot(timeSlots: TimeSliceItem): void;
|
|
317
317
|
private getScheduleDataByIds;
|
|
@@ -326,7 +326,7 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
|
|
|
326
326
|
* 获取当前的客户搜索条件
|
|
327
327
|
* @returns 当前搜索条件
|
|
328
328
|
*/
|
|
329
|
-
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "
|
|
329
|
+
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "num" | "skip">;
|
|
330
330
|
/**
|
|
331
331
|
* 获取客户列表状态(包含滚动加载相关状态)
|
|
332
332
|
* @returns 客户状态
|
|
@@ -7,6 +7,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
7
7
|
import dayjs from 'dayjs';
|
|
8
8
|
import { cacheItemToBookingInput, derivePresetStartTimeFromDate, getProductExtend, getIsAutoClose, isSessionProduct, isBookingProduct, applySessionTimesToExtend, hasActualResourceSelection, productNeedsResourceExtend } from "../../../modules/BookingContext";
|
|
9
9
|
import { transformBaseProductToOrderProduct } from "../../BaseSales/utils/transformBaseProductToOrderProduct";
|
|
10
|
+
import { buildProductSkuFromCacheItem } from "./weighingProductSku";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* cart.addProduct 两阶段决策(与 ticketBooking `handleSelectProduct` 对齐):
|
|
@@ -322,11 +323,16 @@ function buildBasePayloadFromCacheItem(cacheItem, ctx) {
|
|
|
322
323
|
var quantity = (ctx === null || ctx === void 0 ? void 0 : ctx.quantity) != null && ctx.quantity > 0 ? ctx.quantity : (_cacheItem$_extend$qu = cacheItem === null || cacheItem === void 0 || (_cacheItem$_extend2 = cacheItem._extend) === null || _cacheItem$_extend2 === void 0 ? void 0 : _cacheItem$_extend2.quantity) !== null && _cacheItem$_extend$qu !== void 0 ? _cacheItem$_extend$qu : 1;
|
|
323
324
|
var resolvedPid = (_cacheItem$product_id = cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.product_id) !== null && _cacheItem$product_id !== void 0 ? _cacheItem$product_id : cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.id;
|
|
324
325
|
var extend = (cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem._extend) || {};
|
|
326
|
+
var productSku = buildProductSkuFromCacheItem(cacheItem);
|
|
325
327
|
return {
|
|
326
328
|
id: (_cacheItem$id = cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.id) !== null && _cacheItem$id !== void 0 ? _cacheItem$id : cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.product_id,
|
|
327
329
|
product_id: resolvedPid,
|
|
328
330
|
variant_id: (_ref5 = (_other$product_varian = other === null || other === void 0 ? void 0 : other.product_variant_id) !== null && _other$product_varian !== void 0 ? _other$product_varian : other === null || other === void 0 ? void 0 : other.variant_id) !== null && _ref5 !== void 0 ? _ref5 : 0,
|
|
329
331
|
quantity: quantity,
|
|
332
|
+
// 规格弹窗本次选择是 option 权威源,避免目录/旧订单里的空 option 覆盖它。
|
|
333
|
+
product_sku: productSku ? _objectSpread(_objectSpread({}, productSku), {}, {
|
|
334
|
+
option: (other === null || other === void 0 ? void 0 : other.option) || []
|
|
335
|
+
}) : undefined,
|
|
330
336
|
option: (other === null || other === void 0 ? void 0 : other.option) || [],
|
|
331
337
|
bundle: (other === null || other === void 0 ? void 0 : other.bundle) || (extend === null || extend === void 0 || (_extend$skuValue = extend.skuValue) === null || _extend$skuValue === void 0 ? void 0 : _extend$skuValue.bundle) || (extend === null || extend === void 0 || (_extend$_skuValue = extend._skuValue) === null || _extend$_skuValue === void 0 ? void 0 : _extend$_skuValue.bundle) || [],
|
|
332
338
|
unique: other === null || other === void 0 ? void 0 : other.unique,
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
5
|
+
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); }
|
|
6
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
7
|
+
var WEIGHT_UNIT_MAP = {
|
|
8
|
+
KILOGRAMS: 'kg',
|
|
9
|
+
GRAMS: 'g',
|
|
10
|
+
POUNDS: 'lb',
|
|
11
|
+
OUNCES: 'oz'
|
|
12
|
+
};
|
|
13
|
+
function isRecord(value) {
|
|
14
|
+
return Boolean(value) && _typeof(value) === 'object' && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 将规格弹窗的称重结果写入订单行权威字段 product_sku。
|
|
19
|
+
* 商品目录已有的 SKU 字段会保留,本次称重结果只覆盖运行态称重字段。
|
|
20
|
+
*/
|
|
21
|
+
export function buildProductSkuFromCacheItem(cacheItem) {
|
|
22
|
+
var _cacheItem$_extend, _cacheItem$_extend2, _weighing$unit_weight, _weighing$tare$label, _weighing$tare, _weighing$tare$value, _weighing$tare2, _weighing$weight, _weighing$net_weight;
|
|
23
|
+
var currentSku = isRecord(cacheItem === null || cacheItem === void 0 ? void 0 : cacheItem.product_sku) ? cacheItem.product_sku : undefined;
|
|
24
|
+
var weighing = isRecord(cacheItem === null || cacheItem === void 0 || (_cacheItem$_extend = cacheItem._extend) === null || _cacheItem$_extend === void 0 ? void 0 : _cacheItem$_extend.weighing) ? cacheItem === null || cacheItem === void 0 || (_cacheItem$_extend2 = cacheItem._extend) === null || _cacheItem$_extend2 === void 0 ? void 0 : _cacheItem$_extend2.weighing : undefined;
|
|
25
|
+
var hasRuntimeWeighingSku = Number((currentSku === null || currentSku === void 0 ? void 0 : currentSku.open_sold_weight) || 0) === 1 && ((currentSku === null || currentSku === void 0 ? void 0 : currentSku.weight) !== undefined || (currentSku === null || currentSku === void 0 ? void 0 : currentSku.net_weight) !== undefined || (currentSku === null || currentSku === void 0 ? void 0 : currentSku.weight_source) !== undefined);
|
|
26
|
+
var isWeighingSku = Number((currentSku === null || currentSku === void 0 ? void 0 : currentSku.open_sold_weight) || 0) === 1;
|
|
27
|
+
|
|
28
|
+
// 普通商品维持旧转换行为,不把目录侧完整 SKU 引入订单行。
|
|
29
|
+
if (!isWeighingSku && !weighing) return undefined;
|
|
30
|
+
// 新版 SkuDetailModal 已直接生成 product_sku;_extend.weighing 只作为旧调用方回退。
|
|
31
|
+
if (hasRuntimeWeighingSku) return _objectSpread({}, currentSku);
|
|
32
|
+
if (!weighing) return currentSku ? _objectSpread({}, currentSku) : undefined;
|
|
33
|
+
return _objectSpread(_objectSpread({}, currentSku || {}), {}, {
|
|
34
|
+
open_sold_weight: 1,
|
|
35
|
+
unit_data_snapshot: weighing.scalePriceProduct,
|
|
36
|
+
unit: WEIGHT_UNIT_MAP[String(weighing.unit)] || weighing.unit,
|
|
37
|
+
unit_weight: (_weighing$unit_weight = weighing.unit_weight) !== null && _weighing$unit_weight !== void 0 ? _weighing$unit_weight : '1.000',
|
|
38
|
+
unit_price: weighing.unit_price,
|
|
39
|
+
weight_source: weighing.mode,
|
|
40
|
+
tare_name: (_weighing$tare$label = (_weighing$tare = weighing.tare) === null || _weighing$tare === void 0 ? void 0 : _weighing$tare.label) !== null && _weighing$tare$label !== void 0 ? _weighing$tare$label : '',
|
|
41
|
+
tare_weight: (_weighing$tare$value = (_weighing$tare2 = weighing.tare) === null || _weighing$tare2 === void 0 ? void 0 : _weighing$tare2.value) !== null && _weighing$tare$value !== void 0 ? _weighing$tare$value : 0,
|
|
42
|
+
weight: (_weighing$weight = weighing.weight) !== null && _weighing$weight !== void 0 ? _weighing$weight : 0,
|
|
43
|
+
net_weight: (_weighing$net_weight = weighing.net_weight) !== null && _weighing$net_weight !== void 0 ? _weighing$net_weight : 0
|
|
44
|
+
});
|
|
45
|
+
}
|
|
@@ -184,7 +184,7 @@ function synthesizeProductResourceFromBooking(booking) {
|
|
|
184
184
|
};
|
|
185
185
|
}
|
|
186
186
|
function buildCacheItemFromOrderLine(input) {
|
|
187
|
-
var _a, _b, _c, _d, _e, _f;
|
|
187
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
188
188
|
const { product, booking, sourceProduct } = input;
|
|
189
189
|
const resolvedId = product.product_id ?? (sourceProduct == null ? void 0 : sourceProduct.id);
|
|
190
190
|
const selling = Number(product.selling_price ?? 0);
|
|
@@ -259,6 +259,7 @@ function buildCacheItemFromOrderLine(input) {
|
|
|
259
259
|
price: (sourceProduct == null ? void 0 : sourceProduct.price) ?? selling,
|
|
260
260
|
selling_price: product.selling_price,
|
|
261
261
|
original_price: product.original_price,
|
|
262
|
+
...Number(((_g = product.product_sku) == null ? void 0 : _g.open_sold_weight) || 0) === 1 ? { product_sku: JSON.parse(JSON.stringify(product.product_sku)) } : {},
|
|
262
263
|
...productOptionString ? { product_option_string: productOptionString } : {},
|
|
263
264
|
_extend: extend,
|
|
264
265
|
new: 0,
|
|
@@ -78,7 +78,7 @@ function mapOrderBundleToOtherBundle(bundle) {
|
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
80
|
function buildNormalProductCacheItemFromOrderLine(input) {
|
|
81
|
-
var _a, _b, _c, _d, _e;
|
|
81
|
+
var _a, _b, _c, _d, _e, _f;
|
|
82
82
|
const { product, sourceProduct } = input;
|
|
83
83
|
const resolvedId = product.product_id ?? (sourceProduct == null ? void 0 : sourceProduct.id);
|
|
84
84
|
const sourcePrice = resolveSourceProductPrice(product, sourceProduct);
|
|
@@ -144,6 +144,7 @@ function buildNormalProductCacheItemFromOrderLine(input) {
|
|
|
144
144
|
note: product.note,
|
|
145
145
|
order_detail_id: product.order_detail_id ?? null,
|
|
146
146
|
discount_list: discountList,
|
|
147
|
+
...Number(((_f = product.product_sku) == null ? void 0 : _f.open_sold_weight) || 0) === 1 ? { product_sku: JSON.parse(JSON.stringify(product.product_sku)) } : {},
|
|
147
148
|
new: 0,
|
|
148
149
|
autoClose: true,
|
|
149
150
|
_extend: extend
|
|
@@ -485,7 +485,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
485
485
|
generateIdempotencyToken(): string;
|
|
486
486
|
syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
|
|
487
487
|
createOrder(params: CommitOrderParams['query']): {
|
|
488
|
-
type: "
|
|
488
|
+
type: "virtual" | "appointment_booking";
|
|
489
489
|
platform: string;
|
|
490
490
|
sales_channel: string;
|
|
491
491
|
order_sales_channel: string;
|
|
@@ -3629,7 +3629,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
3629
3629
|
tempOrder,
|
|
3630
3630
|
cacheId: (params == null ? void 0 : params.cacheId) ?? this.cacheId,
|
|
3631
3631
|
platform: (params == null ? void 0 : params.platform) || ((_a = this.otherParams) == null ? void 0 : _a.platform),
|
|
3632
|
-
businessCode: (params == null ? void 0 : params.businessCode)
|
|
3632
|
+
businessCode: (params == null ? void 0 : params.businessCode) || ((_b = this.otherParams) == null ? void 0 : _b.businessCode) || ((_c = this.otherParams) == null ? void 0 : _c.business_code) || tempOrder.business_code,
|
|
3633
3633
|
channel: params == null ? void 0 : params.channel,
|
|
3634
3634
|
type: (params == null ? void 0 : params.type) ?? ((_d = this.otherParams) == null ? void 0 : _d.type),
|
|
3635
3635
|
summary: latestSummary,
|
|
@@ -312,8 +312,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
312
312
|
bundleIndex,
|
|
313
313
|
// 虚拟商品属性
|
|
314
314
|
price: Number(bundleItem.price || 0),
|
|
315
|
-
id: bundleItem._bundle_product_id,
|
|
316
|
-
// 🔥 使用 _bundle_product_id
|
|
315
|
+
id: bundleItem.bundle_product_id ?? bundleItem._bundle_product_id ?? bundleItem.product_id,
|
|
317
316
|
_id: `${product._id}_bundle_${bundleIndex}`,
|
|
318
317
|
parentId: product._id,
|
|
319
318
|
num: bundleItem.num || 1,
|
|
@@ -167,6 +167,11 @@ export declare class OrderModule extends BaseModule implements Module {
|
|
|
167
167
|
private syncOrdersMap;
|
|
168
168
|
private getOrderMapKey;
|
|
169
169
|
private isBlankIdentityValue;
|
|
170
|
+
/**
|
|
171
|
+
* `/sales/draft` 的旧调用方可能把未设置的 business_code 传成空串。
|
|
172
|
+
* 对同一真实订单,空值不能覆盖已有的分类,否则 booking 查询会把该订单从 Party 列表过滤掉。
|
|
173
|
+
*/
|
|
174
|
+
private preserveExistingBusinessCodeForDraft;
|
|
170
175
|
private getOrderIdentityEntries;
|
|
171
176
|
private getOrderIdentityKeys;
|
|
172
177
|
private getOrderDateKey;
|
|
@@ -1090,7 +1090,6 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1090
1090
|
memoryDraftCount: memoryDraftMap.size,
|
|
1091
1091
|
sqliteOnlyDraftCount: draftMap.size - memoryDraftMap.size
|
|
1092
1092
|
});
|
|
1093
|
-
const patchedOrders = [...draftMap.values()];
|
|
1094
1093
|
const mergeActions = {};
|
|
1095
1094
|
const updatedList = this.store.list.filter((order) => this.shouldKeepOrderInMemory(order));
|
|
1096
1095
|
const identityKeyToIndex = /* @__PURE__ */ new Map();
|
|
@@ -1106,13 +1105,19 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1106
1105
|
this.getOrderIdentityMatchKeys(draftOrder)
|
|
1107
1106
|
);
|
|
1108
1107
|
if (matchIndex >= 0) {
|
|
1109
|
-
const
|
|
1108
|
+
const existingOrder = updatedList[matchIndex];
|
|
1109
|
+
const reconciledDraftOrder = this.preserveExistingBusinessCodeForDraft(
|
|
1110
|
+
existingOrder,
|
|
1111
|
+
draftOrder
|
|
1112
|
+
);
|
|
1113
|
+
const mergedOrder = this.mergeOrderRecords(existingOrder, reconciledDraftOrder);
|
|
1110
1114
|
const nextOrder = {
|
|
1111
1115
|
...mergedOrder,
|
|
1112
1116
|
need_sync: 0,
|
|
1113
1117
|
is_draft_order: 1
|
|
1114
1118
|
};
|
|
1115
1119
|
updatedList[matchIndex] = nextOrder;
|
|
1120
|
+
draftMap.set(storageKey, reconciledDraftOrder);
|
|
1116
1121
|
this.registerOrderIdentityKeys(identityKeyToIndex, nextOrder, matchIndex);
|
|
1117
1122
|
mergeActions[storageKey] = "update";
|
|
1118
1123
|
continue;
|
|
@@ -1122,6 +1127,7 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1122
1127
|
this.registerOrderIdentityKeys(identityKeyToIndex, draftOrder, insertIndex);
|
|
1123
1128
|
mergeActions[storageKey] = "insert";
|
|
1124
1129
|
}
|
|
1130
|
+
const patchedOrders = [...draftMap.values()];
|
|
1125
1131
|
const previousList = this.store.list;
|
|
1126
1132
|
this.store.list = this.runOrderStoreSelfCheck(updatedList, "upsertLocalDraftOrders.store");
|
|
1127
1133
|
this.syncOrdersMap();
|
|
@@ -1207,6 +1213,22 @@ var OrderModule = class extends import_BaseModule.BaseModule {
|
|
|
1207
1213
|
isBlankIdentityValue(value) {
|
|
1208
1214
|
return value === void 0 || value === null || value === "";
|
|
1209
1215
|
}
|
|
1216
|
+
/**
|
|
1217
|
+
* `/sales/draft` 的旧调用方可能把未设置的 business_code 传成空串。
|
|
1218
|
+
* 对同一真实订单,空值不能覆盖已有的分类,否则 booking 查询会把该订单从 Party 列表过滤掉。
|
|
1219
|
+
*/
|
|
1220
|
+
preserveExistingBusinessCodeForDraft(existingOrder, draftOrder) {
|
|
1221
|
+
const existingBusinessCode = existingOrder.business_code;
|
|
1222
|
+
const draftBusinessCode = draftOrder.business_code;
|
|
1223
|
+
const hasExistingBusinessCode = typeof existingBusinessCode === "string" && existingBusinessCode.trim() !== "";
|
|
1224
|
+
const hasDraftBusinessCode = typeof draftBusinessCode === "string" && draftBusinessCode.trim() !== "";
|
|
1225
|
+
if (!hasExistingBusinessCode || hasDraftBusinessCode)
|
|
1226
|
+
return draftOrder;
|
|
1227
|
+
return {
|
|
1228
|
+
...draftOrder,
|
|
1229
|
+
business_code: existingBusinessCode
|
|
1230
|
+
};
|
|
1231
|
+
}
|
|
1210
1232
|
getOrderIdentityEntries(order) {
|
|
1211
1233
|
if (!order)
|
|
1212
1234
|
return [];
|
|
@@ -1832,7 +1832,7 @@ var BaseSalesImpl = class extends import_BaseModule.BaseModule {
|
|
|
1832
1832
|
return this.store.order.saveTempOrderAsDraft({
|
|
1833
1833
|
cacheId: this.cacheId,
|
|
1834
1834
|
platform: (params == null ? void 0 : params.platform) ?? ((_a = this.otherParams) == null ? void 0 : _a.platform),
|
|
1835
|
-
businessCode: (params == null ? void 0 : params.businessCode)
|
|
1835
|
+
businessCode: (params == null ? void 0 : params.businessCode) || ((_b = this.otherParams) == null ? void 0 : _b.businessCode) || ((_c = this.otherParams) == null ? void 0 : _c.business_code),
|
|
1836
1836
|
channel: (params == null ? void 0 : params.channel) ?? this.getSubmitOrderSalesChannel(),
|
|
1837
1837
|
type: (params == null ? void 0 : params.type) ?? ((_d = this.otherParams) == null ? void 0 : _d.type),
|
|
1838
1838
|
...(params == null ? void 0 : params.enhancePayload) !== void 0 ? { enhancePayload: params.enhancePayload } : {}
|
|
@@ -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 | 6 | 4 | 5 | 3;
|
|
315
315
|
}[]>;
|
|
316
316
|
submitTimeSlot(timeSlots: TimeSliceItem): void;
|
|
317
317
|
private getScheduleDataByIds;
|
|
@@ -326,7 +326,7 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
|
|
|
326
326
|
* 获取当前的客户搜索条件
|
|
327
327
|
* @returns 当前搜索条件
|
|
328
328
|
*/
|
|
329
|
-
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "
|
|
329
|
+
getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "num" | "skip">;
|
|
330
330
|
/**
|
|
331
331
|
* 获取客户列表状态(包含滚动加载相关状态)
|
|
332
332
|
* @returns 客户状态
|
|
@@ -44,6 +44,7 @@ module.exports = __toCommonJS(addProductDecision_exports);
|
|
|
44
44
|
var import_dayjs = __toESM(require("dayjs"));
|
|
45
45
|
var import_BookingContext = require("../../../modules/BookingContext");
|
|
46
46
|
var import_transformBaseProductToOrderProduct = require("../../BaseSales/utils/transformBaseProductToOrderProduct");
|
|
47
|
+
var import_weighingProductSku = require("./weighingProductSku");
|
|
47
48
|
function needsSpecDetailModal(item) {
|
|
48
49
|
if (item == null ? void 0 : item.open_sold_weight)
|
|
49
50
|
return true;
|
|
@@ -281,11 +282,14 @@ function buildBasePayloadFromCacheItem(cacheItem, ctx) {
|
|
|
281
282
|
const quantity = (ctx == null ? void 0 : ctx.quantity) != null && ctx.quantity > 0 ? ctx.quantity : ((_b = cacheItem == null ? void 0 : cacheItem._extend) == null ? void 0 : _b.quantity) ?? 1;
|
|
282
283
|
const resolvedPid = (cacheItem == null ? void 0 : cacheItem.product_id) ?? (cacheItem == null ? void 0 : cacheItem.id);
|
|
283
284
|
const extend = (cacheItem == null ? void 0 : cacheItem._extend) || {};
|
|
285
|
+
const productSku = (0, import_weighingProductSku.buildProductSkuFromCacheItem)(cacheItem);
|
|
284
286
|
return {
|
|
285
287
|
id: (cacheItem == null ? void 0 : cacheItem.id) ?? (cacheItem == null ? void 0 : cacheItem.product_id),
|
|
286
288
|
product_id: resolvedPid,
|
|
287
289
|
variant_id: (other == null ? void 0 : other.product_variant_id) ?? (other == null ? void 0 : other.variant_id) ?? 0,
|
|
288
290
|
quantity,
|
|
291
|
+
// 规格弹窗本次选择是 option 权威源,避免目录/旧订单里的空 option 覆盖它。
|
|
292
|
+
product_sku: productSku ? { ...productSku, option: (other == null ? void 0 : other.option) || [] } : void 0,
|
|
289
293
|
option: (other == null ? void 0 : other.option) || [],
|
|
290
294
|
bundle: (other == null ? void 0 : other.bundle) || ((_c = extend == null ? void 0 : extend.skuValue) == null ? void 0 : _c.bundle) || ((_d = extend == null ? void 0 : extend._skuValue) == null ? void 0 : _d.bundle) || [],
|
|
291
295
|
unique: other == null ? void 0 : other.unique,
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
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);
|
|
18
|
+
|
|
19
|
+
// src/solution/BookingTicket/utils/weighingProductSku.ts
|
|
20
|
+
var weighingProductSku_exports = {};
|
|
21
|
+
__export(weighingProductSku_exports, {
|
|
22
|
+
buildProductSkuFromCacheItem: () => buildProductSkuFromCacheItem
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(weighingProductSku_exports);
|
|
25
|
+
var WEIGHT_UNIT_MAP = {
|
|
26
|
+
KILOGRAMS: "kg",
|
|
27
|
+
GRAMS: "g",
|
|
28
|
+
POUNDS: "lb",
|
|
29
|
+
OUNCES: "oz"
|
|
30
|
+
};
|
|
31
|
+
function isRecord(value) {
|
|
32
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
33
|
+
}
|
|
34
|
+
function buildProductSkuFromCacheItem(cacheItem) {
|
|
35
|
+
var _a, _b, _c, _d;
|
|
36
|
+
const currentSku = isRecord(cacheItem == null ? void 0 : cacheItem.product_sku) ? cacheItem.product_sku : void 0;
|
|
37
|
+
const weighing = isRecord((_a = cacheItem == null ? void 0 : cacheItem._extend) == null ? void 0 : _a.weighing) ? (_b = cacheItem == null ? void 0 : cacheItem._extend) == null ? void 0 : _b.weighing : void 0;
|
|
38
|
+
const hasRuntimeWeighingSku = Number((currentSku == null ? void 0 : currentSku.open_sold_weight) || 0) === 1 && ((currentSku == null ? void 0 : currentSku.weight) !== void 0 || (currentSku == null ? void 0 : currentSku.net_weight) !== void 0 || (currentSku == null ? void 0 : currentSku.weight_source) !== void 0);
|
|
39
|
+
const isWeighingSku = Number((currentSku == null ? void 0 : currentSku.open_sold_weight) || 0) === 1;
|
|
40
|
+
if (!isWeighingSku && !weighing)
|
|
41
|
+
return void 0;
|
|
42
|
+
if (hasRuntimeWeighingSku)
|
|
43
|
+
return { ...currentSku };
|
|
44
|
+
if (!weighing)
|
|
45
|
+
return currentSku ? { ...currentSku } : void 0;
|
|
46
|
+
return {
|
|
47
|
+
...currentSku || {},
|
|
48
|
+
open_sold_weight: 1,
|
|
49
|
+
unit_data_snapshot: weighing.scalePriceProduct,
|
|
50
|
+
unit: WEIGHT_UNIT_MAP[String(weighing.unit)] || weighing.unit,
|
|
51
|
+
unit_weight: weighing.unit_weight ?? "1.000",
|
|
52
|
+
unit_price: weighing.unit_price,
|
|
53
|
+
weight_source: weighing.mode,
|
|
54
|
+
tare_name: ((_c = weighing.tare) == null ? void 0 : _c.label) ?? "",
|
|
55
|
+
tare_weight: ((_d = weighing.tare) == null ? void 0 : _d.value) ?? 0,
|
|
56
|
+
weight: weighing.weight ?? 0,
|
|
57
|
+
net_weight: weighing.net_weight ?? 0
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
61
|
+
0 && (module.exports = {
|
|
62
|
+
buildProductSkuFromCacheItem
|
|
63
|
+
});
|