@pisell/pisellos 0.10.59 → 0.10.60
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/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +25 -2
- package/dist/modules/Order/holderRelations.d.ts +14 -0
- package/dist/modules/Order/holderRelations.js +154 -0
- package/dist/modules/Order/index.d.ts +2 -2
- package/dist/modules/Order/index.js +92 -47
- package/dist/modules/Order/types.d.ts +19 -1
- package/dist/modules/Order/types.js +2 -0
- package/dist/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
- package/dist/modules/Order/utils/discountProductLineIdentity.js +142 -7
- package/dist/modules/Order/utils/orderCollectionIdentity.js +24 -10
- package/dist/modules/Order/utils.d.ts +1 -1
- package/dist/modules/Order/utils.js +35 -9
- package/dist/server/index.js +18 -12
- package/dist/server/modules/order/index.d.ts +4 -0
- package/dist/server/modules/order/index.js +255 -190
- package/dist/server/modules/order/types.d.ts +3 -0
- package/dist/shared/receipt/small-ticket.js +17 -0
- package/dist/shared/sales/loadSalesOrderSnapshot.js +1 -1
- package/dist/solution/BaseSales/index.js +97 -27
- package/dist/solution/BaseSales/types.d.ts +2 -1
- package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
- package/dist/solution/BaseSales/utils/parseSalesResponse.js +7 -3
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +12 -3
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -13
- package/dist/solution/BookingTicket/index.js +7 -4
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +6 -2
- package/lib/model/strategy/adapter/promotion/index.js +46 -1
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +16 -1
- package/lib/modules/Order/holderRelations.d.ts +14 -0
- package/lib/modules/Order/holderRelations.js +98 -0
- package/lib/modules/Order/index.d.ts +2 -2
- package/lib/modules/Order/index.js +44 -12
- package/lib/modules/Order/types.d.ts +19 -1
- package/lib/modules/Order/types.js +1 -0
- package/lib/modules/Order/utils/discountProductLineIdentity.d.ts +1 -1
- package/lib/modules/Order/utils/discountProductLineIdentity.js +51 -2
- package/lib/modules/Order/utils/orderCollectionIdentity.js +5 -0
- package/lib/modules/Order/utils.d.ts +1 -1
- package/lib/modules/Order/utils.js +27 -6
- package/lib/server/index.js +6 -0
- package/lib/server/modules/order/index.d.ts +4 -0
- package/lib/server/modules/order/index.js +46 -4
- package/lib/server/modules/order/types.d.ts +3 -0
- package/lib/shared/receipt/small-ticket.js +15 -0
- package/lib/shared/sales/loadSalesOrderSnapshot.js +1 -1
- package/lib/solution/BaseSales/index.js +39 -2
- package/lib/solution/BaseSales/types.d.ts +2 -1
- package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +3 -1
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +4 -0
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +7 -0
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +1 -13
- package/lib/solution/BookingTicket/index.js +4 -1
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +7 -1
- package/package.json +1 -1
|
@@ -33,8 +33,9 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
33
33
|
import { loadSalesOrderSnapshot } from "../../shared/sales/loadSalesOrderSnapshot";
|
|
34
34
|
import { BaseModule } from "../BaseModule";
|
|
35
35
|
import { OrderHooks } from "./types";
|
|
36
|
-
import { composeLinePrice, generateDuration, getAllDiscountList, mergeRelationForms, ensureCartItemOriginHolder, buildSubmitPayload, createDefaultTempOrder, createDefaultOrderRulesHooks, createEmptySummary, createUuidV4, formatDateTime, isTempOrder, normalizeOrderMetaList, normalizeBookingIsAll, normalizeBookingSubType, mapPaymentItemsToOrderPayments, normalizeOrderProductDiscountList, resolveEffectivePerUnitDiscount, ensureProductSku, getProductSkuOptions, normalizeProductSkuOptions, sumOptionUnitPrice, clearTempOrderHolderAssignments, getOrderProductLineUid, indexOrderProductsByUid, calculateOrderProductsDeposit, collectPointCardSnapshotCodeCandidates, mergePointCardSnapshotCodes as _mergePointCardSnapshotCodes, buildVirtualCurrencySnapshotFromList, mergeOrderProductDisplayFields, resolveIsFormSubject, isMarkdownBundle } from "./utils";
|
|
36
|
+
import { composeLinePrice, generateDuration, getAllDiscountList, mergeRelationForms, ensureCartItemOriginHolder, buildSubmitPayload, createDefaultTempOrder, createDefaultOrderRulesHooks, createEmptySummary, createUuidV4, formatDateTime, isTempOrder, normalizeOrderMetaList, normalizeBookingIsAll, normalizeBookingSubType, mapPaymentItemsToOrderPayments, normalizeOrderProductDiscountList, resolveEffectivePerUnitDiscount, ensureProductSku, getProductSkuOptions, normalizeProductSkuOptions, sumOptionUnitPrice, clearTempOrderHolderAssignments, hasAssignedHolderId, getOrderProductLineUid, indexOrderProductsByUid, calculateOrderProductsDeposit, collectPointCardSnapshotCodeCandidates, mergePointCardSnapshotCodes as _mergePointCardSnapshotCodes, buildVirtualCurrencySnapshotFromList, mergeOrderProductDisplayFields, resolveIsFormSubject, isMarkdownBundle } from "./utils";
|
|
37
37
|
import { isNormalProduct } from "../Product/utils";
|
|
38
|
+
import { ensureHolderRelationUuids, getProductHolderRelations, hasProductBooking, removeProductHolderRelations, replaceProductHolderRelations, restoreLegacyHolderRelations } from "./holderRelations";
|
|
38
39
|
import { getWeighedProductPriceFingerprint, resolveWeighedSourcePrice, withOriginalBundleOptionPrices } from "./utils/weighedProduct";
|
|
39
40
|
import { buildPickupTimingBooking, isFulfillmentTimingBooking } from "./pickupTiming";
|
|
40
41
|
import dayjs from 'dayjs';
|
|
@@ -776,6 +777,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
776
777
|
return createDefaultOrderRulesHooks(function () {
|
|
777
778
|
var _this5$store$tempOrde;
|
|
778
779
|
return ((_this5$store$tempOrde = _this5.store.tempOrder) === null || _this5$store$tempOrde === void 0 ? void 0 : _this5$store$tempOrde.bookings) || [];
|
|
780
|
+
}, function () {
|
|
781
|
+
var _this5$store$tempOrde2;
|
|
782
|
+
return (_this5$store$tempOrde2 = _this5.store.tempOrder) === null || _this5$store$tempOrde2 === void 0 ? void 0 : _this5$store$tempOrde2.holder_relations;
|
|
779
783
|
});
|
|
780
784
|
}
|
|
781
785
|
|
|
@@ -1296,7 +1300,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1296
1300
|
discount_list: normalizeOrderProductDiscountList(syncManualProductDiscountProductNum(mergedProduct.discount_list, mergedProduct.num))
|
|
1297
1301
|
});
|
|
1298
1302
|
}));
|
|
1299
|
-
ensureUniqueProductLineUids(tempOrder);
|
|
1303
|
+
ensureUniqueProductLineUids(tempOrder, discountList);
|
|
1300
1304
|
consolidateDiscountFreeProductLines(tempOrder);
|
|
1301
1305
|
}
|
|
1302
1306
|
if (result !== null && result !== void 0 && result.discountList) {
|
|
@@ -1777,7 +1781,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1777
1781
|
}, {
|
|
1778
1782
|
key: "persistTempOrder",
|
|
1779
1783
|
value: function persistTempOrder() {
|
|
1780
|
-
if (!this.
|
|
1784
|
+
if (!this.store.tempOrder) return;
|
|
1785
|
+
ensureHolderRelationUuids(this.store.tempOrder);
|
|
1786
|
+
if (!this.sessionStoragePersistEnabled) return;
|
|
1781
1787
|
this.checkSaveCache({
|
|
1782
1788
|
cacheId: this.cacheId,
|
|
1783
1789
|
fatherModule: this.fatherModule,
|
|
@@ -2697,12 +2703,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2697
2703
|
selling_price: this.normalizeFingerprintMoney(product === null || product === void 0 ? void 0 : product.selling_price),
|
|
2698
2704
|
original_price: this.normalizeFingerprintMoney(product === null || product === void 0 ? void 0 : product.original_price),
|
|
2699
2705
|
payment_price: this.normalizeFingerprintMoney((_product$payment_pric = product === null || product === void 0 ? void 0 : product.payment_price) !== null && _product$payment_pric !== void 0 ? _product$payment_pric : product === null || product === void 0 ? void 0 : product.selling_price),
|
|
2700
|
-
metadata: {
|
|
2706
|
+
metadata: _objectSpread({
|
|
2701
2707
|
source_product_price: this.normalizeFingerprintMoney(metadata.source_product_price),
|
|
2702
2708
|
main_product_selling_price: this.normalizeFingerprintMoney(metadata.main_product_selling_price),
|
|
2703
2709
|
main_product_original_price: this.normalizeFingerprintMoney(metadata.main_product_original_price),
|
|
2704
2710
|
product_discount_difference: this.normalizeFingerprintMoney(metadata.product_discount_difference)
|
|
2705
|
-
},
|
|
2711
|
+
}, !hasProductBooking(product) ? {
|
|
2712
|
+
holder_relations: this.normalizeFingerprintValue(getProductHolderRelations(this.store.tempOrder || {}, product))
|
|
2713
|
+
} : {}),
|
|
2706
2714
|
product_sku: this.normalizeFingerprintValue({
|
|
2707
2715
|
code: (_sku$code = sku.code) !== null && _sku$code !== void 0 ? _sku$code : '',
|
|
2708
2716
|
barcode: (_sku$barcode = sku.barcode) !== null && _sku$barcode !== void 0 ? _sku$barcode : '',
|
|
@@ -2769,6 +2777,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2769
2777
|
_ref37,
|
|
2770
2778
|
_sku$variant_id2,
|
|
2771
2779
|
_this19 = this;
|
|
2780
|
+
var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.store.tempOrder || {};
|
|
2772
2781
|
var sku = (product === null || product === void 0 ? void 0 : product.product_sku) || {};
|
|
2773
2782
|
var metadata = (product === null || product === void 0 ? void 0 : product.metadata) || {};
|
|
2774
2783
|
var discountTypes = ((product === null || product === void 0 ? void 0 : product.discount_list) || []).map(function (discount) {
|
|
@@ -2784,12 +2793,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2784
2793
|
product_variant_id: (_product$product_vari2 = product === null || product === void 0 ? void 0 : product.product_variant_id) !== null && _product$product_vari2 !== void 0 ? _product$product_vari2 : null,
|
|
2785
2794
|
extension_type: extensionType,
|
|
2786
2795
|
num: getSafeProductNum((_product$num2 = product === null || product === void 0 ? void 0 : product.num) !== null && _product$num2 !== void 0 ? _product$num2 : product === null || product === void 0 ? void 0 : product.product_quantity),
|
|
2787
|
-
metadata: {
|
|
2796
|
+
metadata: _objectSpread({
|
|
2788
2797
|
unique_identification_number: (_ref36 = (_metadata$unique_iden = metadata.unique_identification_number) !== null && _metadata$unique_iden !== void 0 ? _metadata$unique_iden : product === null || product === void 0 ? void 0 : product.unique_identification_number) !== null && _ref36 !== void 0 ? _ref36 : '',
|
|
2789
2798
|
price_override: (_metadata$price_overr = metadata.price_override) !== null && _metadata$price_overr !== void 0 ? _metadata$price_overr : '',
|
|
2790
2799
|
is_manual_discount: (_metadata$is_manual_d = metadata.is_manual_discount) !== null && _metadata$is_manual_d !== void 0 ? _metadata$is_manual_d : '',
|
|
2791
2800
|
product_discount_reason: (_metadata$product_dis = metadata.product_discount_reason) !== null && _metadata$product_dis !== void 0 ? _metadata$product_dis : ''
|
|
2792
|
-
},
|
|
2801
|
+
}, !hasProductBooking(product) ? {
|
|
2802
|
+
holder_relations: this.normalizeFingerprintValue(getProductHolderRelations(order, product))
|
|
2803
|
+
} : {}),
|
|
2793
2804
|
product_sku: this.normalizeFingerprintValue({
|
|
2794
2805
|
code: (_sku$code2 = sku.code) !== null && _sku$code2 !== void 0 ? _sku$code2 : '',
|
|
2795
2806
|
barcode: (_sku$barcode2 = sku.barcode) !== null && _sku$barcode2 !== void 0 ? _sku$barcode2 : '',
|
|
@@ -2842,8 +2853,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2842
2853
|
key: "buildOrderProductsStructuralFingerprint",
|
|
2843
2854
|
value: function buildOrderProductsStructuralFingerprint(products) {
|
|
2844
2855
|
var _this20 = this;
|
|
2856
|
+
var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.store.tempOrder || {};
|
|
2845
2857
|
var items = (products || []).map(function (product) {
|
|
2846
|
-
return _this20.buildProductStructuralFingerprintItem(product);
|
|
2858
|
+
return _this20.buildProductStructuralFingerprintItem(product, order);
|
|
2847
2859
|
});
|
|
2848
2860
|
items.sort(function (left, right) {
|
|
2849
2861
|
return JSON.stringify(left).localeCompare(JSON.stringify(right));
|
|
@@ -2929,7 +2941,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2929
2941
|
var manualDepositOverride = this.getManualDepositOverride(tempOrder);
|
|
2930
2942
|
if (currentFingerprint !== snapshot.productFingerprint) {
|
|
2931
2943
|
var currentStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(tempOrder.products);
|
|
2932
|
-
var snapshotStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(Array.isArray(snapshot.products) ? snapshot.products : []);
|
|
2944
|
+
var snapshotStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(Array.isArray(snapshot.products) ? snapshot.products : [], snapshot);
|
|
2933
2945
|
if (currentStructuralFingerprint !== snapshotStructuralFingerprint) return null;
|
|
2934
2946
|
}
|
|
2935
2947
|
var summary = _objectSpread(_objectSpread({}, createEmptySummary()), cloneDeep(snapshot.summary || {}));
|
|
@@ -3287,8 +3299,17 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3287
3299
|
}, {
|
|
3288
3300
|
key: "sanitizeOrderProductForTempOrder",
|
|
3289
3301
|
value: function sanitizeOrderProductForTempOrder(product) {
|
|
3302
|
+
var _product$_extend;
|
|
3303
|
+
var deferHolderCleanup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
3290
3304
|
if (product.metadata && _typeof(product.metadata) === 'object') {
|
|
3291
3305
|
delete product.metadata.origin;
|
|
3306
|
+
if (!deferHolderCleanup && !hasProductBooking(product)) {
|
|
3307
|
+
delete product.metadata.holder;
|
|
3308
|
+
delete product.metadata.holder_id;
|
|
3309
|
+
}
|
|
3310
|
+
}
|
|
3311
|
+
if (((_product$_extend = product._extend) === null || _product$_extend === void 0 ? void 0 : _product$_extend.holder_relations) !== undefined) {
|
|
3312
|
+
delete product._extend.holder_relations;
|
|
3292
3313
|
}
|
|
3293
3314
|
return product;
|
|
3294
3315
|
}
|
|
@@ -4364,6 +4385,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
4364
4385
|
var nextCustomerId = (_tempOrder$customer_i4 = tempOrder.customer_id) !== null && _tempOrder$customer_i4 !== void 0 ? _tempOrder$customer_i4 : null;
|
|
4365
4386
|
if (String(previousCustomerId !== null && previousCustomerId !== void 0 ? previousCustomerId : '') !== String(nextCustomerId !== null && nextCustomerId !== void 0 ? nextCustomerId : '')) {
|
|
4366
4387
|
this.clearCustomerWalletState(tempOrder);
|
|
4388
|
+
removeProductHolderRelations(tempOrder, tempOrder.products.filter(function (product) {
|
|
4389
|
+
return !hasProductBooking(product);
|
|
4390
|
+
}));
|
|
4367
4391
|
}
|
|
4368
4392
|
this.persistTempOrder();
|
|
4369
4393
|
return {
|
|
@@ -5088,6 +5112,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5088
5112
|
_normalizedIncoming$p2,
|
|
5089
5113
|
_booking_uid,
|
|
5090
5114
|
_metadata,
|
|
5115
|
+
_productToAdd$_extend,
|
|
5091
5116
|
_productToAdd$metadat,
|
|
5092
5117
|
_origin,
|
|
5093
5118
|
_this35 = this;
|
|
@@ -5122,10 +5147,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5122
5147
|
var hasIncomingProductNote = this.hasOrderProductLineNote(normalizedIncoming);
|
|
5123
5148
|
var hasIncomingManualProductDiscount = isManualProductDiscountProduct(normalizedIncoming);
|
|
5124
5149
|
var hasIncomingBookingUid = this.hasLinkedBookingUid(productToAdd) || this.hasLinkedBookingUid(normalizedIncoming);
|
|
5150
|
+
var holderRelationsPatch = !hasIncomingBookingUid ? (_productToAdd$_extend = productToAdd._extend) === null || _productToAdd$_extend === void 0 ? void 0 : _productToAdd$_extend.holder_relations : undefined;
|
|
5151
|
+
var hasIncomingHolder = Array.isArray(holderRelationsPatch) && holderRelationsPatch.length > 0;
|
|
5125
5152
|
var isIncomingCustomItem = ((_productToAdd$metadat = productToAdd.metadata) === null || _productToAdd$metadat === void 0 || (_productToAdd$metadat = _productToAdd$metadat.origin) === null || _productToAdd$metadat === void 0 ? void 0 : _productToAdd$metadat.isCustomItem) === true || ((_origin = productToAdd._origin) === null || _origin === void 0 ? void 0 : _origin.isCustomItem) === true;
|
|
5126
|
-
var shouldForceNewLine = disableMerge || !!booking || hasIncomingGoodPass || isIncomingPersistedEntitlementPass || hasIncomingBookingUid || isIncomingCustomItem || isWeighingProduct;
|
|
5153
|
+
var shouldForceNewLine = disableMerge || !!booking || hasIncomingGoodPass || isIncomingPersistedEntitlementPass || hasIncomingBookingUid || hasIncomingHolder || isIncomingCustomItem || isWeighingProduct;
|
|
5127
5154
|
var matchedIndex = shouldForceNewLine ? -1 : tempOrder.products.findIndex(function (item) {
|
|
5155
|
+
var _item$metadata4;
|
|
5128
5156
|
if (_this35.hasGoodPassDiscount(item)) return false;
|
|
5157
|
+
if (getProductHolderRelations(tempOrder, item).length > 0 || hasAssignedHolderId((_item$metadata4 = item.metadata) === null || _item$metadata4 === void 0 ? void 0 : _item$metadata4.holder_id)) return false;
|
|
5129
5158
|
var isRuntimeEntitlementPass = _this35.isRuntimeEntitlementAppend(item, tempOrder);
|
|
5130
5159
|
if (isIncomingEntitlementAppend !== isRuntimeEntitlementPass) {
|
|
5131
5160
|
return false;
|
|
@@ -5209,6 +5238,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5209
5238
|
if (linked) {
|
|
5210
5239
|
tempOrder.bookings = [].concat(_toConsumableArray(tempOrder.bookings || []), [linked.booking]);
|
|
5211
5240
|
}
|
|
5241
|
+
replaceProductHolderRelations(tempOrder, committedProduct, holderRelationsPatch);
|
|
5212
5242
|
return committedProduct;
|
|
5213
5243
|
};
|
|
5214
5244
|
if (!matchedProduct) {
|
|
@@ -5350,6 +5380,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5350
5380
|
});
|
|
5351
5381
|
mutationSnapshot = salesNoteDrafts.length > 0 ? {
|
|
5352
5382
|
products: cloneDeep(tempOrder.products || []),
|
|
5383
|
+
holder_relations: cloneDeep(tempOrder.holder_relations),
|
|
5353
5384
|
bookings: cloneDeep(tempOrder.bookings || []),
|
|
5354
5385
|
notes: cloneDeep(tempOrder.notes || []),
|
|
5355
5386
|
extend: cloneDeep(tempOrder._extend || {})
|
|
@@ -5375,6 +5406,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5375
5406
|
rollbackProductAndNotesMutation = function rollbackProductAndNotesMutation() {
|
|
5376
5407
|
if (!mutationSnapshot) return;
|
|
5377
5408
|
tempOrder.products = mutationSnapshot.products;
|
|
5409
|
+
if (mutationSnapshot.holder_relations === undefined) delete tempOrder.holder_relations;else tempOrder.holder_relations = mutationSnapshot.holder_relations;
|
|
5378
5410
|
tempOrder.bookings = mutationSnapshot.bookings;
|
|
5379
5411
|
tempOrder.notes = mutationSnapshot.notes;
|
|
5380
5412
|
tempOrder._extend = mutationSnapshot.extend;
|
|
@@ -5646,12 +5678,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5646
5678
|
}, {
|
|
5647
5679
|
key: "getFullCoveragePassDiscounts",
|
|
5648
5680
|
value: function getFullCoveragePassDiscounts(product) {
|
|
5649
|
-
var _product$
|
|
5681
|
+
var _product$_extend2;
|
|
5650
5682
|
var discountList = _toConsumableArray(product.discount_list || []);
|
|
5651
5683
|
(product.product_bundle || []).forEach(function (item) {
|
|
5652
5684
|
discountList.push.apply(discountList, _toConsumableArray((item === null || item === void 0 ? void 0 : item.discount_list) || []));
|
|
5653
5685
|
});
|
|
5654
|
-
((product === null || product === void 0 || (_product$
|
|
5686
|
+
((product === null || product === void 0 || (_product$_extend2 = product._extend) === null || _product$_extend2 === void 0 || (_product$_extend2 = _product$_extend2.other) === null || _product$_extend2 === void 0 ? void 0 : _product$_extend2.bundle) || []).forEach(function (item) {
|
|
5655
5687
|
discountList.push.apply(discountList, _toConsumableArray((item === null || item === void 0 ? void 0 : item.discount_list) || []));
|
|
5656
5688
|
});
|
|
5657
5689
|
return discountList.filter(function (item) {
|
|
@@ -5763,15 +5795,15 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5763
5795
|
if (((_params$updates = params.updates) === null || _params$updates === void 0 ? void 0 : _params$updates.num) === undefined) return false;
|
|
5764
5796
|
var uid = params.unique_identification_number;
|
|
5765
5797
|
var product = uid !== undefined ? tempOrder.products.find(function (item) {
|
|
5766
|
-
var _item$
|
|
5767
|
-
return String(((_item$
|
|
5798
|
+
var _item$metadata5;
|
|
5799
|
+
return String(((_item$metadata5 = item.metadata) === null || _item$metadata5 === void 0 ? void 0 : _item$metadata5.unique_identification_number) || item.unique_identification_number || '') === String(uid);
|
|
5768
5800
|
}) : tempOrder.products[getProductIdentityIndex(tempOrder.products, params)];
|
|
5769
5801
|
return !product || getSafeProductNum(params.updates.num) > product.num;
|
|
5770
5802
|
}
|
|
5771
5803
|
}, {
|
|
5772
5804
|
key: "applyOrderProductUpdateToTempOrder",
|
|
5773
5805
|
value: function applyOrderProductUpdateToTempOrder(tempOrder, params, reapplyWeighedDiscountProductUids) {
|
|
5774
|
-
var _targetProduct$metada2, _product_sku, _metadata2, _metadata3, _metadata4, _metadata5, _metadata6, _metadata7, _metadata8, _metadata9, _metadata10, _nextProduct$metadata2, _targetProduct$metada20, _tempOrder$products$p, _tempOrder$products$p2;
|
|
5806
|
+
var _targetProduct$metada2, _product_sku, _metadata2, _metadata3, _metadata4, _metadata5, _metadata6, _metadata7, _metadata8, _metadata9, _metadata10, _nextProduct$metadata2, _targetProduct$metada20, _updates$_extend, _tempOrder$products$p, _tempOrder$products$p2;
|
|
5775
5807
|
var product_id = params.product_id,
|
|
5776
5808
|
product_variant_id = params.product_variant_id,
|
|
5777
5809
|
updates = params.updates,
|
|
@@ -5799,8 +5831,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5799
5831
|
if (unique_identification_number !== undefined) {
|
|
5800
5832
|
var targetUid = String(unique_identification_number);
|
|
5801
5833
|
productIndex = tempOrder.products.findIndex(function (item) {
|
|
5802
|
-
var _item$
|
|
5803
|
-
return String(((_item$
|
|
5834
|
+
var _item$metadata6;
|
|
5835
|
+
return String(((_item$metadata6 = item.metadata) === null || _item$metadata6 === void 0 ? void 0 : _item$metadata6.unique_identification_number) || item.unique_identification_number || '') === targetUid;
|
|
5804
5836
|
});
|
|
5805
5837
|
}
|
|
5806
5838
|
if (productIndex === -1) {
|
|
@@ -6000,6 +6032,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6000
6032
|
if (uid) reapplyWeighedDiscountProductUids === null || reapplyWeighedDiscountProductUids === void 0 || reapplyWeighedDiscountProductUids.push(String(uid));
|
|
6001
6033
|
}
|
|
6002
6034
|
tempOrder.products[productIndex] = normalizedProduct;
|
|
6035
|
+
replaceProductHolderRelations(tempOrder, normalizedProduct, (_updates$_extend = updates._extend) === null || _updates$_extend === void 0 ? void 0 : _updates$_extend.holder_relations);
|
|
6003
6036
|
this.syncTempOrderHolderFromBookings(tempOrder);
|
|
6004
6037
|
this.captureProductRuntime(tempOrder, updates, tempOrder.products[productIndex], (_tempOrder$products$p = tempOrder.products[productIndex].metadata) === null || _tempOrder$products$p === void 0 ? void 0 : _tempOrder$products$p.unique_identification_number);
|
|
6005
6038
|
return (_tempOrder$products$p2 = tempOrder.products[productIndex].metadata) === null || _tempOrder$products$p2 === void 0 ? void 0 : _tempOrder$products$p2.unique_identification_number;
|
|
@@ -6214,8 +6247,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6214
6247
|
if (unique_identification_number !== undefined) {
|
|
6215
6248
|
targetUid = String(unique_identification_number);
|
|
6216
6249
|
productIndex = tempOrder.products.findIndex(function (item) {
|
|
6217
|
-
var _item$
|
|
6218
|
-
return String(((_item$
|
|
6250
|
+
var _item$metadata7;
|
|
6251
|
+
return String(((_item$metadata7 = item.metadata) === null || _item$metadata7 === void 0 ? void 0 : _item$metadata7.unique_identification_number) || item.unique_identification_number || '') === targetUid;
|
|
6219
6252
|
});
|
|
6220
6253
|
}
|
|
6221
6254
|
if (productIndex === -1) {
|
|
@@ -6439,8 +6472,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6439
6472
|
bookingsBeforeRemove = tempOrder.bookings || [];
|
|
6440
6473
|
preserveDisplayPosition = options === null || options === void 0 ? void 0 : options.preserveDisplayPosition;
|
|
6441
6474
|
anchorIndex = preserveDisplayPosition ? productsBeforeRemove.findIndex(function (item) {
|
|
6442
|
-
var _item$
|
|
6443
|
-
var uid = ((_item$
|
|
6475
|
+
var _item$metadata8;
|
|
6476
|
+
var uid = ((_item$metadata8 = item.metadata) === null || _item$metadata8 === void 0 ? void 0 : _item$metadata8.unique_identification_number) || item.unique_identification_number;
|
|
6444
6477
|
return uid !== undefined && uid !== null && String(uid) === String(preserveDisplayPosition.anchorProductUid);
|
|
6445
6478
|
}) : -1;
|
|
6446
6479
|
productsAfterAnchor = anchorIndex >= 0 ? productsBeforeRemove.slice(anchorIndex + 1) : [];
|
|
@@ -6536,8 +6569,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6536
6569
|
}
|
|
6537
6570
|
if (preserveDisplayPosition && anchorIndex >= 0) {
|
|
6538
6571
|
remainingProductIndex = tempOrder.products.findIndex(function (item) {
|
|
6539
|
-
var _item$
|
|
6540
|
-
var uid = ((_item$
|
|
6572
|
+
var _item$metadata9;
|
|
6573
|
+
var uid = ((_item$metadata9 = item.metadata) === null || _item$metadata9 === void 0 ? void 0 : _item$metadata9.unique_identification_number) || item.unique_identification_number;
|
|
6541
6574
|
return uid !== undefined && uid !== null && String(uid) === String(preserveDisplayPosition.remainingProductUid);
|
|
6542
6575
|
});
|
|
6543
6576
|
if (remainingProductIndex >= 0) {
|
|
@@ -6550,24 +6583,27 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6550
6583
|
tempOrder.products = nextProductIndex >= 0 ? [].concat(_toConsumableArray(productsWithoutRemaining.slice(0, nextProductIndex)), [remainingProduct], _toConsumableArray(productsWithoutRemaining.slice(nextProductIndex))) : [].concat(_toConsumableArray(productsWithoutRemaining), [remainingProduct]);
|
|
6551
6584
|
}
|
|
6552
6585
|
}
|
|
6586
|
+
removeProductHolderRelations(tempOrder, productsBeforeRemove.filter(function (product) {
|
|
6587
|
+
return !tempOrder.products.includes(product);
|
|
6588
|
+
}));
|
|
6553
6589
|
this.removeSalesNotesForMissingProductLines(tempOrder);
|
|
6554
6590
|
if (!mutation.commit) {
|
|
6555
|
-
_context41.next =
|
|
6591
|
+
_context41.next = 42;
|
|
6556
6592
|
break;
|
|
6557
6593
|
}
|
|
6558
|
-
_context41.next =
|
|
6594
|
+
_context41.next = 41;
|
|
6559
6595
|
return mutation.commit();
|
|
6560
|
-
case 40:
|
|
6561
|
-
tempOrder = _context41.sent;
|
|
6562
6596
|
case 41:
|
|
6563
|
-
|
|
6597
|
+
tempOrder = _context41.sent;
|
|
6598
|
+
case 42:
|
|
6599
|
+
_context41.next = 44;
|
|
6564
6600
|
return this.finalizeAfterProductsMutation(tempOrder);
|
|
6565
|
-
case
|
|
6601
|
+
case 44:
|
|
6566
6602
|
this.logInfo('removeProductsFromOrder success', {
|
|
6567
6603
|
identities: identities
|
|
6568
6604
|
});
|
|
6569
6605
|
return _context41.abrupt("return", tempOrder.products);
|
|
6570
|
-
case
|
|
6606
|
+
case 46:
|
|
6571
6607
|
case "end":
|
|
6572
6608
|
return _context41.stop();
|
|
6573
6609
|
}
|
|
@@ -6634,6 +6670,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6634
6670
|
mutation = this.beginCartMutation();
|
|
6635
6671
|
tempOrder = mutation.draft;
|
|
6636
6672
|
this.ensureSalesNotesLoadedForMutation(tempOrder);
|
|
6673
|
+
removeProductHolderRelations(tempOrder, tempOrder.products);
|
|
6637
6674
|
tempOrder.products = [];
|
|
6638
6675
|
tempOrder.bookings = [];
|
|
6639
6676
|
releaseTempOrderSettlementState(tempOrder);
|
|
@@ -6645,30 +6682,30 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6645
6682
|
});
|
|
6646
6683
|
}
|
|
6647
6684
|
if (!mutation.commit) {
|
|
6648
|
-
_context44.next =
|
|
6685
|
+
_context44.next = 14;
|
|
6649
6686
|
break;
|
|
6650
6687
|
}
|
|
6651
|
-
_context44.next =
|
|
6688
|
+
_context44.next = 13;
|
|
6652
6689
|
return mutation.commit();
|
|
6653
|
-
case 12:
|
|
6654
|
-
tempOrder = _context44.sent;
|
|
6655
6690
|
case 13:
|
|
6656
|
-
|
|
6691
|
+
tempOrder = _context44.sent;
|
|
6692
|
+
case 14:
|
|
6693
|
+
_context44.next = 16;
|
|
6657
6694
|
return this.evaluatePromotion();
|
|
6658
|
-
case
|
|
6695
|
+
case 16:
|
|
6659
6696
|
promotionPayload = _context44.sent;
|
|
6660
6697
|
this.applyDiscount();
|
|
6661
6698
|
this.sanitizeTempOrderProducts(tempOrder);
|
|
6662
|
-
_context44.next =
|
|
6699
|
+
_context44.next = 21;
|
|
6663
6700
|
return this.recalculateSummary({
|
|
6664
6701
|
createIfMissing: true
|
|
6665
6702
|
});
|
|
6666
|
-
case
|
|
6703
|
+
case 21:
|
|
6667
6704
|
this.persistTempOrder();
|
|
6668
6705
|
this.emitPromotionApplied(promotionPayload);
|
|
6669
6706
|
this.logInfo('clearOrderCartLines success', {});
|
|
6670
6707
|
return _context44.abrupt("return", tempOrder);
|
|
6671
|
-
case
|
|
6708
|
+
case 25:
|
|
6672
6709
|
case "end":
|
|
6673
6710
|
return _context44.stop();
|
|
6674
6711
|
}
|
|
@@ -6693,6 +6730,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6693
6730
|
case 0:
|
|
6694
6731
|
tempOrder = this.ensureTempOrder();
|
|
6695
6732
|
this.ensureSalesNotesLoadedForMutation(tempOrder);
|
|
6733
|
+
removeProductHolderRelations(tempOrder, tempOrder.products);
|
|
6696
6734
|
tempOrder.products = [];
|
|
6697
6735
|
tempOrder.bookings = [];
|
|
6698
6736
|
this.removeSalesNotesForMissingProductLines(tempOrder);
|
|
@@ -6708,24 +6746,24 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6708
6746
|
productsByUid: {}
|
|
6709
6747
|
});
|
|
6710
6748
|
}
|
|
6711
|
-
_context45.next =
|
|
6749
|
+
_context45.next = 16;
|
|
6712
6750
|
return (_this$store$discount22 = this.store.discount) === null || _this$store$discount22 === void 0 ? void 0 : _this$store$discount22.setDiscountList([]);
|
|
6713
|
-
case
|
|
6714
|
-
_context45.next =
|
|
6751
|
+
case 16:
|
|
6752
|
+
_context45.next = 18;
|
|
6715
6753
|
return (_this$store$discount23 = this.store.discount) === null || _this$store$discount23 === void 0 ? void 0 : _this$store$discount23.setOriginalDiscountList([]);
|
|
6716
|
-
case
|
|
6754
|
+
case 18:
|
|
6717
6755
|
this.hasActiveCustomerBoundDiscount = false;
|
|
6718
6756
|
this.lastUnfulfilledPromotions = [];
|
|
6719
6757
|
this.lastGiftActions = null;
|
|
6720
|
-
_context45.next =
|
|
6758
|
+
_context45.next = 23;
|
|
6721
6759
|
return this.recalculateSummary({
|
|
6722
6760
|
createIfMissing: true
|
|
6723
6761
|
});
|
|
6724
|
-
case
|
|
6762
|
+
case 23:
|
|
6725
6763
|
this.persistTempOrder();
|
|
6726
6764
|
this.logInfo('clearOrderForSettlementSwitch success', {});
|
|
6727
6765
|
return _context45.abrupt("return", tempOrder);
|
|
6728
|
-
case
|
|
6766
|
+
case 26:
|
|
6729
6767
|
case "end":
|
|
6730
6768
|
return _context45.stop();
|
|
6731
6769
|
}
|
|
@@ -7853,6 +7891,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
7853
7891
|
originalSalesSnapshot: _objectSpread(_objectSpread({
|
|
7854
7892
|
summary: cloneDeep(this.store.summary),
|
|
7855
7893
|
products: cloneDeep(nextTempOrder.products || []),
|
|
7894
|
+
holder_relations: cloneDeep(nextTempOrder.holder_relations),
|
|
7856
7895
|
bookings: cloneDeep(nextTempOrder.bookings || []),
|
|
7857
7896
|
payments: cloneDeep(nextTempOrder.payments || []),
|
|
7858
7897
|
surcharges: cloneDeep(nextTempOrder.surcharges || []),
|
|
@@ -8047,6 +8086,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
8047
8086
|
delete nextTempOrder.total_refund_amount;
|
|
8048
8087
|
delete nextTempOrder.holder_id;
|
|
8049
8088
|
nextTempOrder.metadata = raw.metadata && _typeof(raw.metadata) === 'object' ? _objectSpread({}, raw.metadata) : {};
|
|
8089
|
+
var holderRelations = restoreLegacyHolderRelations(raw);
|
|
8090
|
+
if (holderRelations === undefined) delete nextTempOrder.holder_relations;else nextTempOrder.holder_relations = cloneDeep(holderRelations);
|
|
8091
|
+
ensureHolderRelationUuids(nextTempOrder);
|
|
8050
8092
|
nextTempOrder.holder = raw.holder && _typeof(raw.holder) === 'object' ? _objectSpread({}, raw.holder) : null;
|
|
8051
8093
|
var rawProducts = Array.isArray(raw.products) ? raw.products : [];
|
|
8052
8094
|
nextTempOrder.products = rawProducts.length > 0 ? rawProducts.map(function (p) {
|
|
@@ -8135,6 +8177,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
8135
8177
|
}
|
|
8136
8178
|
tempOrderExtend.productsByUid = productsByUid;
|
|
8137
8179
|
this.hydrateLinkedBookingIdentity(nextTempOrder);
|
|
8180
|
+
nextTempOrder.products.forEach(function (product) {
|
|
8181
|
+
return _this51.sanitizeOrderProductForTempOrder(product);
|
|
8182
|
+
});
|
|
8138
8183
|
if ((options === null || options === void 0 ? void 0 : options.ensureIdentity) !== false) {
|
|
8139
8184
|
this.ensureExternalSaleNumber(nextTempOrder);
|
|
8140
8185
|
}
|
|
@@ -8319,7 +8364,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
8319
8364
|
});
|
|
8320
8365
|
if (result.metadata) delete result.metadata.price_schema_version;
|
|
8321
8366
|
var restored = restoreHydratedBundleDiscounts(result, normalizeOrderProductDiscountList);
|
|
8322
|
-
return this.sanitizeOrderProductForTempOrder(this.normalizeVirtualSettlementProductIfEnabled(restored));
|
|
8367
|
+
return this.sanitizeOrderProductForTempOrder(this.normalizeVirtualSettlementProductIfEnabled(restored), true);
|
|
8323
8368
|
}
|
|
8324
8369
|
}, {
|
|
8325
8370
|
key: "getLastOrderInfo",
|
|
@@ -242,6 +242,11 @@ export interface OrderProduct extends OrderProductIdentity {
|
|
|
242
242
|
product_cover?: string;
|
|
243
243
|
metadata: Record<string, any>;
|
|
244
244
|
note?: string;
|
|
245
|
+
/** 仅作按行更新输入;正式数据保存于订单顶层。 */
|
|
246
|
+
_extend?: {
|
|
247
|
+
holder_relations?: OrderHolderRelation[];
|
|
248
|
+
[key: string]: any;
|
|
249
|
+
};
|
|
245
250
|
}
|
|
246
251
|
export interface OrderSummary {
|
|
247
252
|
product_quantity: number;
|
|
@@ -339,6 +344,17 @@ export interface SalesNotesMutationSnapshot {
|
|
|
339
344
|
}
|
|
340
345
|
export type SalesNoteProtocolRelation = SalesNoteRelation;
|
|
341
346
|
export type SalesNoteProtocol = SalesNote;
|
|
347
|
+
/** 后端关系及 metadata 均为开放对象,未知字段必须往返保留。 */
|
|
348
|
+
export interface OrderHolderRelation {
|
|
349
|
+
/** 关系自身的 UUID;新选择/旧草稿可缺省,入单与提交时由 OS 补齐。 */
|
|
350
|
+
uuid?: string;
|
|
351
|
+
relation_model: string;
|
|
352
|
+
relation_uuid: string;
|
|
353
|
+
holder_type: 'form' | 'customer';
|
|
354
|
+
holder_id: number;
|
|
355
|
+
metadata?: Record<string, any>;
|
|
356
|
+
[key: string]: any;
|
|
357
|
+
}
|
|
342
358
|
export interface OrderTempOrder {
|
|
343
359
|
order_id: number | null;
|
|
344
360
|
external_sale_number: string;
|
|
@@ -378,6 +394,7 @@ export interface OrderTempOrder {
|
|
|
378
394
|
created_at: string | undefined;
|
|
379
395
|
request_unique_idempotency_token?: string;
|
|
380
396
|
products: OrderProduct[];
|
|
397
|
+
holder_relations?: OrderHolderRelation[];
|
|
381
398
|
notes: SalesNote[];
|
|
382
399
|
bookings: any[];
|
|
383
400
|
payments: any[];
|
|
@@ -397,7 +414,7 @@ export interface OrderTempOrder {
|
|
|
397
414
|
[key: string]: any;
|
|
398
415
|
};
|
|
399
416
|
}
|
|
400
|
-
export interface OrderSubmitProduct extends Omit<OrderProduct, 'unique_identification_number' | 'num'> {
|
|
417
|
+
export interface OrderSubmitProduct extends Omit<OrderProduct, 'unique_identification_number' | 'num' | '_extend'> {
|
|
401
418
|
product_quantity: number;
|
|
402
419
|
payment_price: string;
|
|
403
420
|
product_sku: OrderProductSku;
|
|
@@ -598,6 +615,7 @@ export interface SubmitSalesOrderParams {
|
|
|
598
615
|
schedule_date: string;
|
|
599
616
|
created_at?: string | undefined;
|
|
600
617
|
products: OrderSubmitProduct[];
|
|
618
|
+
holder_relations?: OrderHolderRelation[];
|
|
601
619
|
bookings: OrderSubmitBooking[];
|
|
602
620
|
payments: any[];
|
|
603
621
|
vouchers: any[];
|
|
@@ -31,7 +31,7 @@ export declare const DISCOUNT_SPLIT_ORIGIN_UID_KEY = "discountSplitOriginUid";
|
|
|
31
31
|
* 没有 UID 的裸商品不会被补写 UID。这是为了兼容 Rules/mock 的历史协议形状;
|
|
32
32
|
* 正常 Order 写路径会在 normalize 阶段提前创建 UID。
|
|
33
33
|
*/
|
|
34
|
-
export declare function ensureUniqueProductLineUids(tempOrder: OrderTempOrder): void;
|
|
34
|
+
export declare function ensureUniqueProductLineUids(tempOrder: OrderTempOrder, discounts?: Array<Record<string, any>>): void;
|
|
35
35
|
/**
|
|
36
36
|
* 把券移除后已经恢复原价的同源折扣拆分行重新合并。
|
|
37
37
|
*
|