@pisell/pisellos 2.3.164 → 2.3.166
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/model/strategy/adapter/promotion/evaluator.js +89 -104
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +28 -4
- package/dist/modules/Holder/utils.d.ts +2 -0
- package/dist/modules/Holder/utils.js +32 -2
- package/dist/modules/OpenData/contactInfo.d.ts +20 -0
- package/dist/modules/OpenData/contactInfo.js +70 -0
- package/dist/modules/OpenData/index.d.ts +1 -0
- package/dist/modules/OpenData/index.js +1 -0
- package/dist/modules/OpenData/types.d.ts +9 -0
- package/dist/modules/Order/holderRelations.d.ts +14 -0
- package/dist/modules/Order/holderRelations.js +154 -0
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +89 -44
- 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/modules/Rules/index.js +62 -61
- 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/server/modules/products/index.js +3 -2
- package/dist/shared/receipt/small-ticket.js +17 -6
- package/dist/shared/sales/loadSalesOrderSnapshot.js +1 -1
- package/dist/solution/BaseSales/index.d.ts +4 -0
- package/dist/solution/BaseSales/index.js +1116 -935
- 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 +14 -4
- package/dist/solution/BookingTicket/index.d.ts +15 -1
- package/dist/solution/BookingTicket/index.js +784 -501
- package/dist/solution/UnifiedBookingSales/index.js +1 -1
- package/lib/model/strategy/adapter/promotion/evaluator.js +9 -14
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.d.ts +3 -1
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +17 -1
- package/lib/modules/Holder/utils.d.ts +2 -0
- package/lib/modules/Holder/utils.js +27 -1
- package/lib/modules/OpenData/contactInfo.d.ts +20 -0
- package/lib/modules/OpenData/contactInfo.js +56 -0
- package/lib/modules/OpenData/index.d.ts +1 -0
- package/lib/modules/OpenData/index.js +12 -0
- package/lib/modules/OpenData/types.d.ts +9 -0
- package/lib/modules/Order/holderRelations.d.ts +14 -0
- package/lib/modules/Order/holderRelations.js +98 -0
- package/lib/modules/Order/index.d.ts +1 -1
- 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/modules/Rules/index.js +2 -1
- 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/server/modules/products/index.js +2 -1
- package/lib/shared/receipt/small-ticket.js +15 -7
- package/lib/shared/sales/loadSalesOrderSnapshot.js +1 -1
- package/lib/solution/BaseSales/index.d.ts +4 -0
- package/lib/solution/BaseSales/index.js +68 -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 +16 -8
- package/lib/solution/BookingTicket/index.d.ts +15 -1
- package/lib/solution/BookingTicket/index.js +132 -3
- package/lib/solution/UnifiedBookingSales/index.js +1 -1
- package/package.json +1 -1
|
@@ -34,8 +34,9 @@ import { loadSalesOrderSnapshot } from "../../shared/sales/loadSalesOrderSnapsho
|
|
|
34
34
|
import { PAYMENT_REFRESH_MESSAGE, requiresLocalPaymentRefresh, stripLocalEftposState } from "./localEftposState";
|
|
35
35
|
import { BaseModule } from "../BaseModule";
|
|
36
36
|
import { OrderHooks } from "./types";
|
|
37
|
-
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";
|
|
37
|
+
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";
|
|
38
38
|
import { isNormalProduct } from "../Product/utils";
|
|
39
|
+
import { ensureHolderRelationUuids, getProductHolderRelations, hasProductBooking, removeProductHolderRelations, replaceProductHolderRelations, restoreLegacyHolderRelations } from "./holderRelations";
|
|
39
40
|
import { getWeighedProductPriceFingerprint, resolveWeighedSourcePrice, withOriginalBundleOptionPrices } from "./utils/weighedProduct";
|
|
40
41
|
import { buildPickupTimingBooking, isFulfillmentTimingBooking } from "./pickupTiming";
|
|
41
42
|
import dayjs from 'dayjs';
|
|
@@ -648,6 +649,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
648
649
|
return createDefaultOrderRulesHooks(function () {
|
|
649
650
|
var _this3$store$tempOrde;
|
|
650
651
|
return ((_this3$store$tempOrde = _this3.store.tempOrder) === null || _this3$store$tempOrde === void 0 ? void 0 : _this3$store$tempOrde.bookings) || [];
|
|
652
|
+
}, function () {
|
|
653
|
+
var _this3$store$tempOrde2;
|
|
654
|
+
return (_this3$store$tempOrde2 = _this3.store.tempOrder) === null || _this3$store$tempOrde2 === void 0 ? void 0 : _this3$store$tempOrde2.holder_relations;
|
|
651
655
|
});
|
|
652
656
|
}
|
|
653
657
|
|
|
@@ -1168,7 +1172,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1168
1172
|
discount_list: normalizeOrderProductDiscountList(syncManualProductDiscountProductNum(mergedProduct.discount_list, mergedProduct.num))
|
|
1169
1173
|
});
|
|
1170
1174
|
}));
|
|
1171
|
-
ensureUniqueProductLineUids(tempOrder);
|
|
1175
|
+
ensureUniqueProductLineUids(tempOrder, discountList);
|
|
1172
1176
|
consolidateDiscountFreeProductLines(tempOrder);
|
|
1173
1177
|
}
|
|
1174
1178
|
if (result !== null && result !== void 0 && result.discountList) {
|
|
@@ -1710,7 +1714,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
1710
1714
|
}, {
|
|
1711
1715
|
key: "persistTempOrder",
|
|
1712
1716
|
value: function persistTempOrder() {
|
|
1713
|
-
if (!this.
|
|
1717
|
+
if (!this.store.tempOrder) return;
|
|
1718
|
+
ensureHolderRelationUuids(this.store.tempOrder);
|
|
1719
|
+
if (!this.sessionStoragePersistEnabled) return;
|
|
1714
1720
|
this.checkSaveCache({
|
|
1715
1721
|
cacheId: this.cacheId,
|
|
1716
1722
|
fatherModule: this.fatherModule,
|
|
@@ -2630,12 +2636,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2630
2636
|
selling_price: this.normalizeFingerprintMoney(product === null || product === void 0 ? void 0 : product.selling_price),
|
|
2631
2637
|
original_price: this.normalizeFingerprintMoney(product === null || product === void 0 ? void 0 : product.original_price),
|
|
2632
2638
|
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),
|
|
2633
|
-
metadata: {
|
|
2639
|
+
metadata: _objectSpread({
|
|
2634
2640
|
source_product_price: this.normalizeFingerprintMoney(metadata.source_product_price),
|
|
2635
2641
|
main_product_selling_price: this.normalizeFingerprintMoney(metadata.main_product_selling_price),
|
|
2636
2642
|
main_product_original_price: this.normalizeFingerprintMoney(metadata.main_product_original_price),
|
|
2637
2643
|
product_discount_difference: this.normalizeFingerprintMoney(metadata.product_discount_difference)
|
|
2638
|
-
},
|
|
2644
|
+
}, !hasProductBooking(product) ? {
|
|
2645
|
+
holder_relations: this.normalizeFingerprintValue(getProductHolderRelations(this.store.tempOrder || {}, product))
|
|
2646
|
+
} : {}),
|
|
2639
2647
|
product_sku: this.normalizeFingerprintValue({
|
|
2640
2648
|
code: (_sku$code = sku.code) !== null && _sku$code !== void 0 ? _sku$code : '',
|
|
2641
2649
|
barcode: (_sku$barcode = sku.barcode) !== null && _sku$barcode !== void 0 ? _sku$barcode : '',
|
|
@@ -2702,6 +2710,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2702
2710
|
_ref36,
|
|
2703
2711
|
_sku$variant_id2,
|
|
2704
2712
|
_this17 = this;
|
|
2713
|
+
var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.store.tempOrder || {};
|
|
2705
2714
|
var sku = (product === null || product === void 0 ? void 0 : product.product_sku) || {};
|
|
2706
2715
|
var metadata = (product === null || product === void 0 ? void 0 : product.metadata) || {};
|
|
2707
2716
|
var discountTypes = ((product === null || product === void 0 ? void 0 : product.discount_list) || []).map(function (discount) {
|
|
@@ -2717,12 +2726,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2717
2726
|
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,
|
|
2718
2727
|
extension_type: extensionType,
|
|
2719
2728
|
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),
|
|
2720
|
-
metadata: {
|
|
2729
|
+
metadata: _objectSpread({
|
|
2721
2730
|
unique_identification_number: (_ref35 = (_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 && _ref35 !== void 0 ? _ref35 : '',
|
|
2722
2731
|
price_override: (_metadata$price_overr = metadata.price_override) !== null && _metadata$price_overr !== void 0 ? _metadata$price_overr : '',
|
|
2723
2732
|
is_manual_discount: (_metadata$is_manual_d = metadata.is_manual_discount) !== null && _metadata$is_manual_d !== void 0 ? _metadata$is_manual_d : '',
|
|
2724
2733
|
product_discount_reason: (_metadata$product_dis = metadata.product_discount_reason) !== null && _metadata$product_dis !== void 0 ? _metadata$product_dis : ''
|
|
2725
|
-
},
|
|
2734
|
+
}, !hasProductBooking(product) ? {
|
|
2735
|
+
holder_relations: this.normalizeFingerprintValue(getProductHolderRelations(order, product))
|
|
2736
|
+
} : {}),
|
|
2726
2737
|
product_sku: this.normalizeFingerprintValue({
|
|
2727
2738
|
code: (_sku$code2 = sku.code) !== null && _sku$code2 !== void 0 ? _sku$code2 : '',
|
|
2728
2739
|
barcode: (_sku$barcode2 = sku.barcode) !== null && _sku$barcode2 !== void 0 ? _sku$barcode2 : '',
|
|
@@ -2775,8 +2786,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2775
2786
|
key: "buildOrderProductsStructuralFingerprint",
|
|
2776
2787
|
value: function buildOrderProductsStructuralFingerprint(products) {
|
|
2777
2788
|
var _this18 = this;
|
|
2789
|
+
var order = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.store.tempOrder || {};
|
|
2778
2790
|
var items = (products || []).map(function (product) {
|
|
2779
|
-
return _this18.buildProductStructuralFingerprintItem(product);
|
|
2791
|
+
return _this18.buildProductStructuralFingerprintItem(product, order);
|
|
2780
2792
|
});
|
|
2781
2793
|
items.sort(function (left, right) {
|
|
2782
2794
|
return JSON.stringify(left).localeCompare(JSON.stringify(right));
|
|
@@ -2862,7 +2874,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
2862
2874
|
var manualDepositOverride = this.getManualDepositOverride(tempOrder);
|
|
2863
2875
|
if (currentFingerprint !== snapshot.productFingerprint) {
|
|
2864
2876
|
var currentStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(tempOrder.products);
|
|
2865
|
-
var snapshotStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(Array.isArray(snapshot.products) ? snapshot.products : []);
|
|
2877
|
+
var snapshotStructuralFingerprint = this.buildOrderProductsStructuralFingerprint(Array.isArray(snapshot.products) ? snapshot.products : [], snapshot);
|
|
2866
2878
|
if (currentStructuralFingerprint !== snapshotStructuralFingerprint) return null;
|
|
2867
2879
|
}
|
|
2868
2880
|
var summary = _objectSpread(_objectSpread({}, createEmptySummary()), cloneDeep(snapshot.summary || {}));
|
|
@@ -3220,8 +3232,17 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
3220
3232
|
}, {
|
|
3221
3233
|
key: "sanitizeOrderProductForTempOrder",
|
|
3222
3234
|
value: function sanitizeOrderProductForTempOrder(product) {
|
|
3235
|
+
var _product$_extend;
|
|
3236
|
+
var deferHolderCleanup = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
3223
3237
|
if (product.metadata && _typeof(product.metadata) === 'object') {
|
|
3224
3238
|
delete product.metadata.origin;
|
|
3239
|
+
if (!deferHolderCleanup && !hasProductBooking(product)) {
|
|
3240
|
+
delete product.metadata.holder;
|
|
3241
|
+
delete product.metadata.holder_id;
|
|
3242
|
+
}
|
|
3243
|
+
}
|
|
3244
|
+
if (((_product$_extend = product._extend) === null || _product$_extend === void 0 ? void 0 : _product$_extend.holder_relations) !== undefined) {
|
|
3245
|
+
delete product._extend.holder_relations;
|
|
3225
3246
|
}
|
|
3226
3247
|
return product;
|
|
3227
3248
|
}
|
|
@@ -4322,6 +4343,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
4322
4343
|
var nextCustomerId = (_tempOrder$customer_i4 = tempOrder.customer_id) !== null && _tempOrder$customer_i4 !== void 0 ? _tempOrder$customer_i4 : null;
|
|
4323
4344
|
if (String(previousCustomerId !== null && previousCustomerId !== void 0 ? previousCustomerId : '') !== String(nextCustomerId !== null && nextCustomerId !== void 0 ? nextCustomerId : '')) {
|
|
4324
4345
|
this.clearCustomerWalletState(tempOrder);
|
|
4346
|
+
removeProductHolderRelations(tempOrder, tempOrder.products.filter(function (product) {
|
|
4347
|
+
return !hasProductBooking(product);
|
|
4348
|
+
}));
|
|
4325
4349
|
}
|
|
4326
4350
|
this.persistTempOrder();
|
|
4327
4351
|
return {
|
|
@@ -5092,6 +5116,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5092
5116
|
_normalizedIncoming$p2,
|
|
5093
5117
|
_booking_uid,
|
|
5094
5118
|
_metadata,
|
|
5119
|
+
_productToAdd$_extend,
|
|
5095
5120
|
_productToAdd$metadat,
|
|
5096
5121
|
_origin,
|
|
5097
5122
|
_this33 = this;
|
|
@@ -5126,10 +5151,14 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5126
5151
|
var hasIncomingProductNote = this.hasOrderProductLineNote(normalizedIncoming);
|
|
5127
5152
|
var hasIncomingManualProductDiscount = isManualProductDiscountProduct(normalizedIncoming);
|
|
5128
5153
|
var hasIncomingBookingUid = this.hasLinkedBookingUid(productToAdd) || this.hasLinkedBookingUid(normalizedIncoming);
|
|
5154
|
+
var holderRelationsPatch = !hasIncomingBookingUid ? (_productToAdd$_extend = productToAdd._extend) === null || _productToAdd$_extend === void 0 ? void 0 : _productToAdd$_extend.holder_relations : undefined;
|
|
5155
|
+
var hasIncomingHolder = Array.isArray(holderRelationsPatch) && holderRelationsPatch.length > 0;
|
|
5129
5156
|
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;
|
|
5130
|
-
var shouldForceNewLine = disableMerge || !!booking || hasIncomingGoodPass || isIncomingPersistedEntitlementPass || hasIncomingBookingUid || isIncomingCustomItem || isWeighingProduct;
|
|
5157
|
+
var shouldForceNewLine = disableMerge || !!booking || hasIncomingGoodPass || isIncomingPersistedEntitlementPass || hasIncomingBookingUid || hasIncomingHolder || isIncomingCustomItem || isWeighingProduct;
|
|
5131
5158
|
var matchedIndex = shouldForceNewLine ? -1 : tempOrder.products.findIndex(function (item) {
|
|
5159
|
+
var _item$metadata4;
|
|
5132
5160
|
if (_this33.hasGoodPassDiscount(item)) return false;
|
|
5161
|
+
if (getProductHolderRelations(tempOrder, item).length > 0 || hasAssignedHolderId((_item$metadata4 = item.metadata) === null || _item$metadata4 === void 0 ? void 0 : _item$metadata4.holder_id)) return false;
|
|
5133
5162
|
var isRuntimeEntitlementPass = _this33.isRuntimeEntitlementAppend(item, tempOrder);
|
|
5134
5163
|
if (isIncomingEntitlementAppend !== isRuntimeEntitlementPass) {
|
|
5135
5164
|
return false;
|
|
@@ -5213,6 +5242,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5213
5242
|
if (linked) {
|
|
5214
5243
|
tempOrder.bookings = [].concat(_toConsumableArray(tempOrder.bookings || []), [linked.booking]);
|
|
5215
5244
|
}
|
|
5245
|
+
replaceProductHolderRelations(tempOrder, committedProduct, holderRelationsPatch);
|
|
5216
5246
|
return committedProduct;
|
|
5217
5247
|
};
|
|
5218
5248
|
if (!matchedProduct) {
|
|
@@ -5342,6 +5372,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5342
5372
|
});
|
|
5343
5373
|
mutationSnapshot = salesNoteDrafts.length > 0 ? {
|
|
5344
5374
|
products: cloneDeep(tempOrder.products || []),
|
|
5375
|
+
holder_relations: cloneDeep(tempOrder.holder_relations),
|
|
5345
5376
|
bookings: cloneDeep(tempOrder.bookings || []),
|
|
5346
5377
|
notes: cloneDeep(tempOrder.notes || []),
|
|
5347
5378
|
extend: cloneDeep(tempOrder._extend || {})
|
|
@@ -5367,6 +5398,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5367
5398
|
rollbackProductAndNotesMutation = function rollbackProductAndNotesMutation() {
|
|
5368
5399
|
if (!mutationSnapshot) return;
|
|
5369
5400
|
tempOrder.products = mutationSnapshot.products;
|
|
5401
|
+
if (mutationSnapshot.holder_relations === undefined) delete tempOrder.holder_relations;else tempOrder.holder_relations = mutationSnapshot.holder_relations;
|
|
5370
5402
|
tempOrder.bookings = mutationSnapshot.bookings;
|
|
5371
5403
|
tempOrder.notes = mutationSnapshot.notes;
|
|
5372
5404
|
tempOrder._extend = mutationSnapshot.extend;
|
|
@@ -5653,12 +5685,12 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5653
5685
|
}, {
|
|
5654
5686
|
key: "getFullCoveragePassDiscounts",
|
|
5655
5687
|
value: function getFullCoveragePassDiscounts(product) {
|
|
5656
|
-
var _product$
|
|
5688
|
+
var _product$_extend2;
|
|
5657
5689
|
var discountList = _toConsumableArray(product.discount_list || []);
|
|
5658
5690
|
(product.product_bundle || []).forEach(function (item) {
|
|
5659
5691
|
discountList.push.apply(discountList, _toConsumableArray((item === null || item === void 0 ? void 0 : item.discount_list) || []));
|
|
5660
5692
|
});
|
|
5661
|
-
((product === null || product === void 0 || (_product$
|
|
5693
|
+
((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) {
|
|
5662
5694
|
discountList.push.apply(discountList, _toConsumableArray((item === null || item === void 0 ? void 0 : item.discount_list) || []));
|
|
5663
5695
|
});
|
|
5664
5696
|
return discountList.filter(function (item) {
|
|
@@ -5770,15 +5802,15 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5770
5802
|
if (((_params$updates = params.updates) === null || _params$updates === void 0 ? void 0 : _params$updates.num) === undefined) return false;
|
|
5771
5803
|
var uid = params.unique_identification_number;
|
|
5772
5804
|
var product = uid !== undefined ? tempOrder.products.find(function (item) {
|
|
5773
|
-
var _item$
|
|
5774
|
-
return String(((_item$
|
|
5805
|
+
var _item$metadata5;
|
|
5806
|
+
return String(((_item$metadata5 = item.metadata) === null || _item$metadata5 === void 0 ? void 0 : _item$metadata5.unique_identification_number) || item.unique_identification_number || '') === String(uid);
|
|
5775
5807
|
}) : tempOrder.products[getProductIdentityIndex(tempOrder.products, params)];
|
|
5776
5808
|
return !product || getSafeProductNum(params.updates.num) > product.num;
|
|
5777
5809
|
}
|
|
5778
5810
|
}, {
|
|
5779
5811
|
key: "applyOrderProductUpdateToTempOrder",
|
|
5780
5812
|
value: function applyOrderProductUpdateToTempOrder(tempOrder, params, reapplyWeighedDiscountProductUids) {
|
|
5781
|
-
var _targetProduct$metada2, _product_sku, _metadata2, _metadata3, _metadata4, _metadata5, _metadata6, _metadata7, _metadata8, _metadata9, _metadata10, _nextProduct$metadata2, _targetProduct$metada20, _tempOrder$products$p, _tempOrder$products$p2;
|
|
5813
|
+
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;
|
|
5782
5814
|
var product_id = params.product_id,
|
|
5783
5815
|
product_variant_id = params.product_variant_id,
|
|
5784
5816
|
updates = params.updates,
|
|
@@ -5806,8 +5838,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
5806
5838
|
if (unique_identification_number !== undefined) {
|
|
5807
5839
|
var targetUid = String(unique_identification_number);
|
|
5808
5840
|
productIndex = tempOrder.products.findIndex(function (item) {
|
|
5809
|
-
var _item$
|
|
5810
|
-
return String(((_item$
|
|
5841
|
+
var _item$metadata6;
|
|
5842
|
+
return String(((_item$metadata6 = item.metadata) === null || _item$metadata6 === void 0 ? void 0 : _item$metadata6.unique_identification_number) || item.unique_identification_number || '') === targetUid;
|
|
5811
5843
|
});
|
|
5812
5844
|
}
|
|
5813
5845
|
if (productIndex === -1) {
|
|
@@ -6007,6 +6039,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6007
6039
|
if (uid) reapplyWeighedDiscountProductUids === null || reapplyWeighedDiscountProductUids === void 0 || reapplyWeighedDiscountProductUids.push(String(uid));
|
|
6008
6040
|
}
|
|
6009
6041
|
tempOrder.products[productIndex] = normalizedProduct;
|
|
6042
|
+
replaceProductHolderRelations(tempOrder, normalizedProduct, (_updates$_extend = updates._extend) === null || _updates$_extend === void 0 ? void 0 : _updates$_extend.holder_relations);
|
|
6010
6043
|
this.syncTempOrderHolderFromBookings(tempOrder);
|
|
6011
6044
|
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);
|
|
6012
6045
|
return (_tempOrder$products$p2 = tempOrder.products[productIndex].metadata) === null || _tempOrder$products$p2 === void 0 ? void 0 : _tempOrder$products$p2.unique_identification_number;
|
|
@@ -6143,8 +6176,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6143
6176
|
if (unique_identification_number !== undefined) {
|
|
6144
6177
|
targetUid = String(unique_identification_number);
|
|
6145
6178
|
productIndex = tempOrder.products.findIndex(function (item) {
|
|
6146
|
-
var _item$
|
|
6147
|
-
return String(((_item$
|
|
6179
|
+
var _item$metadata7;
|
|
6180
|
+
return String(((_item$metadata7 = item.metadata) === null || _item$metadata7 === void 0 ? void 0 : _item$metadata7.unique_identification_number) || item.unique_identification_number || '') === targetUid;
|
|
6148
6181
|
});
|
|
6149
6182
|
}
|
|
6150
6183
|
if (productIndex === -1) {
|
|
@@ -6365,8 +6398,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6365
6398
|
bookingsBeforeRemove = tempOrder.bookings || [];
|
|
6366
6399
|
preserveDisplayPosition = options === null || options === void 0 ? void 0 : options.preserveDisplayPosition;
|
|
6367
6400
|
anchorIndex = preserveDisplayPosition ? productsBeforeRemove.findIndex(function (item) {
|
|
6368
|
-
var _item$
|
|
6369
|
-
var uid = ((_item$
|
|
6401
|
+
var _item$metadata8;
|
|
6402
|
+
var uid = ((_item$metadata8 = item.metadata) === null || _item$metadata8 === void 0 ? void 0 : _item$metadata8.unique_identification_number) || item.unique_identification_number;
|
|
6370
6403
|
return uid !== undefined && uid !== null && String(uid) === String(preserveDisplayPosition.anchorProductUid);
|
|
6371
6404
|
}) : -1;
|
|
6372
6405
|
productsAfterAnchor = anchorIndex >= 0 ? productsBeforeRemove.slice(anchorIndex + 1) : [];
|
|
@@ -6462,8 +6495,8 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6462
6495
|
}
|
|
6463
6496
|
if (preserveDisplayPosition && anchorIndex >= 0) {
|
|
6464
6497
|
remainingProductIndex = tempOrder.products.findIndex(function (item) {
|
|
6465
|
-
var _item$
|
|
6466
|
-
var uid = ((_item$
|
|
6498
|
+
var _item$metadata9;
|
|
6499
|
+
var uid = ((_item$metadata9 = item.metadata) === null || _item$metadata9 === void 0 ? void 0 : _item$metadata9.unique_identification_number) || item.unique_identification_number;
|
|
6467
6500
|
return uid !== undefined && uid !== null && String(uid) === String(preserveDisplayPosition.remainingProductUid);
|
|
6468
6501
|
});
|
|
6469
6502
|
if (remainingProductIndex >= 0) {
|
|
@@ -6476,28 +6509,31 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6476
6509
|
tempOrder.products = nextProductIndex >= 0 ? [].concat(_toConsumableArray(productsWithoutRemaining.slice(0, nextProductIndex)), [remainingProduct], _toConsumableArray(productsWithoutRemaining.slice(nextProductIndex))) : [].concat(_toConsumableArray(productsWithoutRemaining), [remainingProduct]);
|
|
6477
6510
|
}
|
|
6478
6511
|
}
|
|
6512
|
+
removeProductHolderRelations(tempOrder, productsBeforeRemove.filter(function (product) {
|
|
6513
|
+
return !tempOrder.products.includes(product);
|
|
6514
|
+
}));
|
|
6479
6515
|
this.removeSalesNotesForMissingProductLines(tempOrder);
|
|
6480
6516
|
if (!isCurrentOrder) {
|
|
6481
|
-
_context32.next =
|
|
6517
|
+
_context32.next = 45;
|
|
6482
6518
|
break;
|
|
6483
6519
|
}
|
|
6484
|
-
_context32.next =
|
|
6520
|
+
_context32.next = 43;
|
|
6485
6521
|
return this.finalizeProductOrderMutation(tempOrder, {
|
|
6486
6522
|
skipEditDiscountConfigRefresh: true,
|
|
6487
6523
|
isCurrentOrder: isCurrentOrder
|
|
6488
6524
|
});
|
|
6489
|
-
case
|
|
6490
|
-
_context32.next =
|
|
6525
|
+
case 43:
|
|
6526
|
+
_context32.next = 47;
|
|
6491
6527
|
break;
|
|
6492
|
-
case
|
|
6493
|
-
_context32.next =
|
|
6528
|
+
case 45:
|
|
6529
|
+
_context32.next = 47;
|
|
6494
6530
|
return this.finalizeAfterProductsMutation(tempOrder);
|
|
6495
|
-
case
|
|
6531
|
+
case 47:
|
|
6496
6532
|
this.logInfo('removeProductsFromOrder success', {
|
|
6497
6533
|
identities: identities
|
|
6498
6534
|
});
|
|
6499
6535
|
return _context32.abrupt("return", tempOrder.products);
|
|
6500
|
-
case
|
|
6536
|
+
case 49:
|
|
6501
6537
|
case "end":
|
|
6502
6538
|
return _context32.stop();
|
|
6503
6539
|
}
|
|
@@ -6541,6 +6577,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6541
6577
|
case 0:
|
|
6542
6578
|
tempOrder = this.ensureTempOrder();
|
|
6543
6579
|
this.ensureSalesNotesLoadedForMutation(tempOrder);
|
|
6580
|
+
removeProductHolderRelations(tempOrder, tempOrder.products);
|
|
6544
6581
|
tempOrder.products = [];
|
|
6545
6582
|
tempOrder.bookings = [];
|
|
6546
6583
|
releaseTempOrderSettlementState(tempOrder);
|
|
@@ -6551,22 +6588,22 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6551
6588
|
productsByUid: {}
|
|
6552
6589
|
});
|
|
6553
6590
|
}
|
|
6554
|
-
_context34.next =
|
|
6591
|
+
_context34.next = 11;
|
|
6555
6592
|
return this.evaluatePromotion();
|
|
6556
|
-
case
|
|
6593
|
+
case 11:
|
|
6557
6594
|
promotionPayload = _context34.sent;
|
|
6558
6595
|
this.applyDiscount();
|
|
6559
6596
|
this.sanitizeTempOrderProducts(tempOrder);
|
|
6560
|
-
_context34.next =
|
|
6597
|
+
_context34.next = 16;
|
|
6561
6598
|
return this.recalculateSummary({
|
|
6562
6599
|
createIfMissing: true
|
|
6563
6600
|
});
|
|
6564
|
-
case
|
|
6601
|
+
case 16:
|
|
6565
6602
|
this.persistTempOrder();
|
|
6566
6603
|
this.emitPromotionApplied(promotionPayload);
|
|
6567
6604
|
this.logInfo('clearOrderCartLines success', {});
|
|
6568
6605
|
return _context34.abrupt("return", tempOrder);
|
|
6569
|
-
case
|
|
6606
|
+
case 20:
|
|
6570
6607
|
case "end":
|
|
6571
6608
|
return _context34.stop();
|
|
6572
6609
|
}
|
|
@@ -6592,6 +6629,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6592
6629
|
case 0:
|
|
6593
6630
|
tempOrder = this.ensureTempOrder();
|
|
6594
6631
|
this.ensureSalesNotesLoadedForMutation(tempOrder);
|
|
6632
|
+
removeProductHolderRelations(tempOrder, tempOrder.products);
|
|
6595
6633
|
tempOrder.products = [];
|
|
6596
6634
|
tempOrder.bookings = [];
|
|
6597
6635
|
this.removeSalesNotesForMissingProductLines(tempOrder);
|
|
@@ -6607,24 +6645,24 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
6607
6645
|
productsByUid: {}
|
|
6608
6646
|
});
|
|
6609
6647
|
}
|
|
6610
|
-
_context35.next =
|
|
6648
|
+
_context35.next = 16;
|
|
6611
6649
|
return (_this$store$discount22 = this.store.discount) === null || _this$store$discount22 === void 0 ? void 0 : _this$store$discount22.setDiscountList([]);
|
|
6612
|
-
case
|
|
6613
|
-
_context35.next =
|
|
6650
|
+
case 16:
|
|
6651
|
+
_context35.next = 18;
|
|
6614
6652
|
return (_this$store$discount23 = this.store.discount) === null || _this$store$discount23 === void 0 ? void 0 : _this$store$discount23.setOriginalDiscountList([]);
|
|
6615
|
-
case
|
|
6653
|
+
case 18:
|
|
6616
6654
|
this.hasActiveCustomerBoundDiscount = false;
|
|
6617
6655
|
this.lastUnfulfilledPromotions = [];
|
|
6618
6656
|
this.lastGiftActions = null;
|
|
6619
|
-
_context35.next =
|
|
6657
|
+
_context35.next = 23;
|
|
6620
6658
|
return this.recalculateSummary({
|
|
6621
6659
|
createIfMissing: true
|
|
6622
6660
|
});
|
|
6623
|
-
case
|
|
6661
|
+
case 23:
|
|
6624
6662
|
this.persistTempOrder();
|
|
6625
6663
|
this.logInfo('clearOrderForSettlementSwitch success', {});
|
|
6626
6664
|
return _context35.abrupt("return", tempOrder);
|
|
6627
|
-
case
|
|
6665
|
+
case 26:
|
|
6628
6666
|
case "end":
|
|
6629
6667
|
return _context35.stop();
|
|
6630
6668
|
}
|
|
@@ -7758,6 +7796,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
7758
7796
|
originalSalesSnapshot: _objectSpread(_objectSpread({
|
|
7759
7797
|
summary: cloneDeep(this.store.summary),
|
|
7760
7798
|
products: cloneDeep(nextTempOrder.products || []),
|
|
7799
|
+
holder_relations: cloneDeep(nextTempOrder.holder_relations),
|
|
7761
7800
|
bookings: cloneDeep(nextTempOrder.bookings || []),
|
|
7762
7801
|
payments: cloneDeep(nextTempOrder.payments || []),
|
|
7763
7802
|
surcharges: cloneDeep(nextTempOrder.surcharges || []),
|
|
@@ -7952,6 +7991,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
7952
7991
|
delete nextTempOrder.total_refund_amount;
|
|
7953
7992
|
delete nextTempOrder.holder_id;
|
|
7954
7993
|
nextTempOrder.metadata = raw.metadata && _typeof(raw.metadata) === 'object' ? _objectSpread({}, raw.metadata) : {};
|
|
7994
|
+
var holderRelations = restoreLegacyHolderRelations(raw);
|
|
7995
|
+
if (holderRelations === undefined) delete nextTempOrder.holder_relations;else nextTempOrder.holder_relations = cloneDeep(holderRelations);
|
|
7996
|
+
ensureHolderRelationUuids(nextTempOrder);
|
|
7955
7997
|
nextTempOrder.holder = raw.holder && _typeof(raw.holder) === 'object' ? _objectSpread({}, raw.holder) : null;
|
|
7956
7998
|
var rawProducts = Array.isArray(raw.products) ? raw.products : [];
|
|
7957
7999
|
nextTempOrder.products = rawProducts.length > 0 ? rawProducts.map(function (p) {
|
|
@@ -8040,6 +8082,9 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
8040
8082
|
}
|
|
8041
8083
|
tempOrderExtend.productsByUid = productsByUid;
|
|
8042
8084
|
this.hydrateLinkedBookingIdentity(nextTempOrder);
|
|
8085
|
+
nextTempOrder.products.forEach(function (product) {
|
|
8086
|
+
return _this42.sanitizeOrderProductForTempOrder(product);
|
|
8087
|
+
});
|
|
8043
8088
|
if ((options === null || options === void 0 ? void 0 : options.ensureIdentity) !== false) {
|
|
8044
8089
|
this.ensureExternalSaleNumber(nextTempOrder);
|
|
8045
8090
|
}
|
|
@@ -8224,7 +8269,7 @@ export var OrderModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
8224
8269
|
});
|
|
8225
8270
|
if (result.metadata) delete result.metadata.price_schema_version;
|
|
8226
8271
|
var restored = restoreHydratedBundleDiscounts(result, normalizeOrderProductDiscountList);
|
|
8227
|
-
return this.sanitizeOrderProductForTempOrder(this.normalizeVirtualSettlementProductIfEnabled(restored));
|
|
8272
|
+
return this.sanitizeOrderProductForTempOrder(this.normalizeVirtualSettlementProductIfEnabled(restored), true);
|
|
8228
8273
|
}
|
|
8229
8274
|
}, {
|
|
8230
8275
|
key: "getLastOrderInfo",
|
|
@@ -243,6 +243,11 @@ export interface OrderProduct extends OrderProductIdentity {
|
|
|
243
243
|
product_cover?: string;
|
|
244
244
|
metadata: Record<string, any>;
|
|
245
245
|
note?: string;
|
|
246
|
+
/** 仅作按行更新输入;正式数据保存于订单顶层。 */
|
|
247
|
+
_extend?: {
|
|
248
|
+
holder_relations?: OrderHolderRelation[];
|
|
249
|
+
[key: string]: any;
|
|
250
|
+
};
|
|
246
251
|
}
|
|
247
252
|
export interface OrderSummary {
|
|
248
253
|
product_quantity: number;
|
|
@@ -340,6 +345,17 @@ export interface SalesNotesMutationSnapshot {
|
|
|
340
345
|
}
|
|
341
346
|
export type SalesNoteProtocolRelation = SalesNoteRelation;
|
|
342
347
|
export type SalesNoteProtocol = SalesNote;
|
|
348
|
+
/** 后端关系及 metadata 均为开放对象,未知字段必须往返保留。 */
|
|
349
|
+
export interface OrderHolderRelation {
|
|
350
|
+
/** 关系自身的 UUID;新选择/旧草稿可缺省,入单与提交时由 OS 补齐。 */
|
|
351
|
+
uuid?: string;
|
|
352
|
+
relation_model: string;
|
|
353
|
+
relation_uuid: string;
|
|
354
|
+
holder_type: 'form' | 'customer';
|
|
355
|
+
holder_id: number;
|
|
356
|
+
metadata?: Record<string, any>;
|
|
357
|
+
[key: string]: any;
|
|
358
|
+
}
|
|
343
359
|
export interface OrderTempOrder {
|
|
344
360
|
order_id: number | null;
|
|
345
361
|
external_sale_number: string;
|
|
@@ -379,6 +395,7 @@ export interface OrderTempOrder {
|
|
|
379
395
|
created_at: string | undefined;
|
|
380
396
|
request_unique_idempotency_token?: string;
|
|
381
397
|
products: OrderProduct[];
|
|
398
|
+
holder_relations?: OrderHolderRelation[];
|
|
382
399
|
notes: SalesNote[];
|
|
383
400
|
bookings: any[];
|
|
384
401
|
payments: any[];
|
|
@@ -398,7 +415,7 @@ export interface OrderTempOrder {
|
|
|
398
415
|
[key: string]: any;
|
|
399
416
|
};
|
|
400
417
|
}
|
|
401
|
-
export interface OrderSubmitProduct extends Omit<OrderProduct, 'unique_identification_number' | 'num'> {
|
|
418
|
+
export interface OrderSubmitProduct extends Omit<OrderProduct, 'unique_identification_number' | 'num' | '_extend'> {
|
|
402
419
|
product_quantity: number;
|
|
403
420
|
payment_price: string;
|
|
404
421
|
product_sku: OrderProductSku;
|
|
@@ -607,6 +624,7 @@ export interface SubmitSalesOrderParams {
|
|
|
607
624
|
schedule_date: string;
|
|
608
625
|
created_at?: string | undefined;
|
|
609
626
|
products: OrderSubmitProduct[];
|
|
627
|
+
holder_relations?: OrderHolderRelation[];
|
|
610
628
|
bookings: OrderSubmitBooking[];
|
|
611
629
|
payments: any[];
|
|
612
630
|
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
|
*
|