@pisell/pisellos 0.10.43 → 0.10.44
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/itemRule/adapter.d.ts +4 -1
- package/dist/model/strategy/adapter/itemRule/adapter.js +135 -35
- package/dist/model/strategy/adapter/itemRule/evaluator.d.ts +8 -1
- package/dist/model/strategy/adapter/itemRule/evaluator.js +25 -1
- package/dist/model/strategy/adapter/itemRule/type.d.ts +44 -0
- package/dist/model/strategy/adapter/itemRule/type.js +19 -1
- package/dist/modules/Order/index.d.ts +41 -9
- package/dist/modules/Order/index.js +1438 -878
- package/dist/modules/Order/salesNotes.d.ts +31 -0
- package/dist/modules/Order/salesNotes.js +492 -0
- package/dist/modules/Order/types.d.ts +105 -8
- package/dist/modules/Order/types.js +6 -1
- package/dist/modules/Order/utils.d.ts +3 -1
- package/dist/modules/Order/utils.js +191 -71
- package/dist/modules/Payment/cashRecommendationAlgorithm.d.ts +4 -5
- package/dist/modules/Payment/cashRecommendationAlgorithm.js +17 -367
- package/dist/modules/ProductList/index.d.ts +2 -1
- package/dist/modules/ProductList/index.js +100 -20
- package/dist/modules/ProductList/types.d.ts +10 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.js +45 -3
- package/dist/server/modules/order/index.js +6 -0
- package/dist/server/modules/order/types.d.ts +9 -0
- package/dist/server/utils/small-ticket.d.ts +1 -0
- package/dist/server/utils/small-ticket.js +142 -14
- package/dist/solution/BaseSales/index.d.ts +15 -1
- package/dist/solution/BaseSales/index.js +1240 -877
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +1 -0
- package/dist/solution/BookingTicket/index.js +37 -16
- package/dist/solution/BookingTicket/utils/orderCustomer.js +3 -2
- package/dist/solution/RegisterAndLogin/config.d.ts +9 -3
- package/dist/solution/RegisterAndLogin/config.js +95 -40
- package/dist/solution/RegisterAndLogin/index.js +4 -1
- package/dist/solution/ScanOrder/index.d.ts +1 -0
- package/dist/solution/ScanOrder/index.js +31 -27
- package/dist/solution/ScanOrder/utils.d.ts +1 -0
- package/dist/solution/ScanOrder/utils.js +2 -0
- package/dist/solution/UnifiedBookingSales/index.d.ts +15 -2
- package/dist/solution/UnifiedBookingSales/index.js +777 -510
- package/dist/solution/UnifiedBookingSales/types.d.ts +14 -1
- package/dist/solution/VenueBooking/index.d.ts +1 -0
- package/dist/solution/VenueBooking/index.js +8 -4
- package/lib/model/strategy/adapter/itemRule/adapter.d.ts +4 -1
- package/lib/model/strategy/adapter/itemRule/adapter.js +73 -4
- package/lib/model/strategy/adapter/itemRule/evaluator.d.ts +8 -1
- package/lib/model/strategy/adapter/itemRule/evaluator.js +23 -1
- package/lib/model/strategy/adapter/itemRule/type.d.ts +44 -0
- package/lib/model/strategy/adapter/itemRule/type.js +19 -1
- package/lib/modules/Order/index.d.ts +41 -9
- package/lib/modules/Order/index.js +434 -61
- package/lib/modules/Order/salesNotes.d.ts +31 -0
- package/lib/modules/Order/salesNotes.js +382 -0
- package/lib/modules/Order/types.d.ts +105 -8
- package/lib/modules/Order/types.js +5 -1
- package/lib/modules/Order/utils.d.ts +3 -1
- package/lib/modules/Order/utils.js +114 -1
- package/lib/modules/Payment/cashRecommendationAlgorithm.d.ts +4 -5
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +9 -354
- package/lib/modules/ProductList/index.d.ts +2 -1
- package/lib/modules/ProductList/index.js +47 -2
- package/lib/modules/ProductList/types.d.ts +10 -0
- package/lib/server/index.d.ts +7 -0
- package/lib/server/index.js +39 -3
- package/lib/server/modules/order/index.js +6 -0
- package/lib/server/modules/order/types.d.ts +9 -0
- package/lib/server/utils/small-ticket.d.ts +1 -0
- package/lib/server/utils/small-ticket.js +136 -12
- package/lib/solution/BaseSales/index.d.ts +15 -1
- package/lib/solution/BaseSales/index.js +192 -22
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +1 -0
- package/lib/solution/BookingTicket/index.js +23 -5
- package/lib/solution/BookingTicket/utils/orderCustomer.js +2 -1
- package/lib/solution/RegisterAndLogin/config.d.ts +9 -3
- package/lib/solution/RegisterAndLogin/config.js +49 -8
- package/lib/solution/RegisterAndLogin/index.js +4 -1
- package/lib/solution/ScanOrder/index.d.ts +1 -0
- package/lib/solution/ScanOrder/index.js +5 -1
- package/lib/solution/ScanOrder/utils.d.ts +1 -0
- package/lib/solution/ScanOrder/utils.js +1 -0
- package/lib/solution/UnifiedBookingSales/index.d.ts +15 -2
- package/lib/solution/UnifiedBookingSales/index.js +125 -1
- package/lib/solution/UnifiedBookingSales/types.d.ts +14 -1
- package/lib/solution/VenueBooking/index.d.ts +1 -0
- package/lib/solution/VenueBooking/index.js +5 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EvaluationResult, RuntimeContext, ActionEffect } from '../../type';
|
|
2
2
|
import type { BusinessAdapter } from '../type';
|
|
3
|
-
import { type ItemRuleBusinessData, type QuantityCheckResult, type PrefillItemResult, type QuantityLimitResult } from './type';
|
|
3
|
+
import { type ItemRuleBusinessData, type QuantityCheckResult, type PrefillItemResult, type QuantityLimitResult, type AllergyRequirement } from './type';
|
|
4
4
|
/**
|
|
5
5
|
* ItemRule 适配器
|
|
6
6
|
*
|
|
@@ -14,7 +14,10 @@ export declare class ItemRuleAdapter implements BusinessAdapter {
|
|
|
14
14
|
transformResult(result: EvaluationResult, businessData?: ItemRuleBusinessData): {
|
|
15
15
|
quantityChecks: QuantityCheckResult[];
|
|
16
16
|
prefillItems: PrefillItemResult[];
|
|
17
|
+
allergyRequirements: AllergyRequirement[];
|
|
17
18
|
};
|
|
19
|
+
private processAllergyCheck;
|
|
20
|
+
private normalizeAllergyDataSourceItems;
|
|
18
21
|
formatConfig(result: EvaluationResult, businessData?: ItemRuleBusinessData): {
|
|
19
22
|
result: EvaluationResult;
|
|
20
23
|
businessData?: ItemRuleBusinessData;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
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); }
|
|
2
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
3
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
5
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
2
6
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
3
7
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
8
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
@@ -31,18 +35,22 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
31
35
|
_createClass(ItemRuleAdapter, [{
|
|
32
36
|
key: "prepareContext",
|
|
33
37
|
value: function prepareContext(businessData) {
|
|
38
|
+
var _ref;
|
|
34
39
|
var pax = businessData.pax,
|
|
35
40
|
cartItems = businessData.cartItems,
|
|
36
41
|
serviceType = businessData.serviceType,
|
|
42
|
+
channel = businessData.channel,
|
|
37
43
|
submissionIndex = businessData.submissionIndex,
|
|
38
44
|
custom = businessData.custom;
|
|
45
|
+
var resolvedChannel = String((_ref = channel !== null && channel !== void 0 ? channel : custom === null || custom === void 0 ? void 0 : custom.channel) !== null && _ref !== void 0 ? _ref : '').trim();
|
|
39
46
|
return {
|
|
40
47
|
entities: {
|
|
41
48
|
cartItems: cartItems,
|
|
42
49
|
historicalItems: businessData.historicalItems || [],
|
|
43
|
-
pax: pax
|
|
50
|
+
pax: pax,
|
|
51
|
+
currentProduct: businessData.currentProduct
|
|
44
52
|
},
|
|
45
|
-
attributes: _objectSpread({
|
|
53
|
+
attributes: _objectSpread(_objectSpread({
|
|
46
54
|
serviceType: serviceType || '',
|
|
47
55
|
totalPax: pax.total,
|
|
48
56
|
adultPax: pax.adult,
|
|
@@ -52,7 +60,9 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
52
60
|
cartTotalQuantity: cartItems.reduce(function (sum, item) {
|
|
53
61
|
return sum + item.quantity;
|
|
54
62
|
}, 0)
|
|
55
|
-
}, custom),
|
|
63
|
+
}, custom), {}, {
|
|
64
|
+
channel: resolvedChannel
|
|
65
|
+
}),
|
|
56
66
|
metadata: {
|
|
57
67
|
timestamp: Date.now()
|
|
58
68
|
}
|
|
@@ -63,10 +73,12 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
63
73
|
value: function transformResult(result, businessData) {
|
|
64
74
|
var quantityChecks = [];
|
|
65
75
|
var prefillItems = [];
|
|
76
|
+
var allergyRequirements = [];
|
|
66
77
|
if (!result.applicable || !businessData) {
|
|
67
78
|
return {
|
|
68
79
|
quantityChecks: quantityChecks,
|
|
69
|
-
prefillItems: prefillItems
|
|
80
|
+
prefillItems: prefillItems,
|
|
81
|
+
allergyRequirements: allergyRequirements
|
|
70
82
|
};
|
|
71
83
|
}
|
|
72
84
|
var _iterator = _createForOfIteratorHelper(result.matchedActions),
|
|
@@ -82,6 +94,9 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
82
94
|
} else if (action.type === ITEM_RULE_ACTION_TYPES.PREFILL_CART) {
|
|
83
95
|
var items = this.processPrefillCart(action, businessData);
|
|
84
96
|
prefillItems.push.apply(prefillItems, _toConsumableArray(items));
|
|
97
|
+
} else if (action.type === ITEM_RULE_ACTION_TYPES.ALLERGY_CHECK) {
|
|
98
|
+
var requirement = this.processAllergyCheck(action, result, businessData);
|
|
99
|
+
if (requirement) allergyRequirements.push(requirement);
|
|
85
100
|
}
|
|
86
101
|
}
|
|
87
102
|
} catch (err) {
|
|
@@ -91,9 +106,94 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
91
106
|
}
|
|
92
107
|
return {
|
|
93
108
|
quantityChecks: quantityChecks,
|
|
94
|
-
prefillItems: prefillItems
|
|
109
|
+
prefillItems: prefillItems,
|
|
110
|
+
allergyRequirements: allergyRequirements
|
|
95
111
|
};
|
|
96
112
|
}
|
|
113
|
+
|
|
114
|
+
// ============================================
|
|
115
|
+
// Allergy Check 处理
|
|
116
|
+
// ============================================
|
|
117
|
+
}, {
|
|
118
|
+
key: "processAllergyCheck",
|
|
119
|
+
value: function processAllergyCheck(action, result, businessData) {
|
|
120
|
+
var _currentProduct$produ, _productTargets$find, _target$dataSource, _action$priority, _target$product_varia;
|
|
121
|
+
var config = action.config;
|
|
122
|
+
var currentProduct = businessData.currentProduct;
|
|
123
|
+
if (!config || config.targetType !== 'product' || config.promptScope !== 'once_per_order_product' || !Array.isArray(config.targets) || !currentProduct) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
var currentProductId = Number(currentProduct.product_id);
|
|
127
|
+
var currentVariantId = Number((_currentProduct$produ = currentProduct.product_variant_id) !== null && _currentProduct$produ !== void 0 ? _currentProduct$produ : 0);
|
|
128
|
+
if (!Number.isFinite(currentProductId) || currentProductId <= 0) return null;
|
|
129
|
+
var productTargets = config.targets.filter(function (item) {
|
|
130
|
+
return Number(item.product_id) === currentProductId;
|
|
131
|
+
});
|
|
132
|
+
var target = (_productTargets$find = productTargets.find(function (item) {
|
|
133
|
+
var _item$product_variant;
|
|
134
|
+
return currentVariantId > 0 && Number((_item$product_variant = item.product_variant_id) !== null && _item$product_variant !== void 0 ? _item$product_variant : 0) === currentVariantId;
|
|
135
|
+
})) !== null && _productTargets$find !== void 0 ? _productTargets$find : productTargets.find(function (item) {
|
|
136
|
+
var _item$product_variant2;
|
|
137
|
+
return Number((_item$product_variant2 = item.product_variant_id) !== null && _item$product_variant2 !== void 0 ? _item$product_variant2 : 0) <= 0;
|
|
138
|
+
});
|
|
139
|
+
if (!target || ((_target$dataSource = target.dataSource) === null || _target$dataSource === void 0 ? void 0 : _target$dataSource.type) !== 'inline') return null;
|
|
140
|
+
var items = this.normalizeAllergyDataSourceItems(target.dataSource.items);
|
|
141
|
+
if (!items.length) return null;
|
|
142
|
+
return _objectSpread(_objectSpread({
|
|
143
|
+
strategyId: result.config.metadata.id,
|
|
144
|
+
ruleId: action.id,
|
|
145
|
+
priority: (_action$priority = action.priority) !== null && _action$priority !== void 0 ? _action$priority : 0,
|
|
146
|
+
targetType: 'product',
|
|
147
|
+
product_id: currentProductId
|
|
148
|
+
}, Number((_target$product_varia = target.product_variant_id) !== null && _target$product_varia !== void 0 ? _target$product_varia : 0) > 0 ? {
|
|
149
|
+
product_variant_id: Number(target.product_variant_id)
|
|
150
|
+
} : {}), {}, {
|
|
151
|
+
dataSource: {
|
|
152
|
+
type: 'inline',
|
|
153
|
+
items: items
|
|
154
|
+
},
|
|
155
|
+
promptScope: config.promptScope,
|
|
156
|
+
allowNote: config.allowNote === true
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}, {
|
|
160
|
+
key: "normalizeAllergyDataSourceItems",
|
|
161
|
+
value: function normalizeAllergyDataSourceItems(items) {
|
|
162
|
+
if (!Array.isArray(items)) return [];
|
|
163
|
+
var uniqueIds = new Set();
|
|
164
|
+
var normalized = [];
|
|
165
|
+
var _iterator2 = _createForOfIteratorHelper(items),
|
|
166
|
+
_step2;
|
|
167
|
+
try {
|
|
168
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
169
|
+
var _item$id;
|
|
170
|
+
var item = _step2.value;
|
|
171
|
+
var id = String((_item$id = item === null || item === void 0 ? void 0 : item.id) !== null && _item$id !== void 0 ? _item$id : '').trim();
|
|
172
|
+
var rawLabel = item === null || item === void 0 ? void 0 : item.label;
|
|
173
|
+
var label = typeof rawLabel === 'string' ? rawLabel.trim() : Object.entries(rawLabel || {}).reduce(function (labels, _ref2) {
|
|
174
|
+
var _ref3 = _slicedToArray(_ref2, 2),
|
|
175
|
+
locale = _ref3[0],
|
|
176
|
+
value = _ref3[1];
|
|
177
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
178
|
+
labels[locale] = value.trim();
|
|
179
|
+
}
|
|
180
|
+
return labels;
|
|
181
|
+
}, {});
|
|
182
|
+
var hasLabel = typeof label === 'string' ? label.length > 0 : Object.keys(label).length > 0;
|
|
183
|
+
if (!id || !hasLabel || uniqueIds.has(id)) continue;
|
|
184
|
+
uniqueIds.add(id);
|
|
185
|
+
normalized.push({
|
|
186
|
+
id: id,
|
|
187
|
+
label: label
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
} catch (err) {
|
|
191
|
+
_iterator2.e(err);
|
|
192
|
+
} finally {
|
|
193
|
+
_iterator2.f();
|
|
194
|
+
}
|
|
195
|
+
return normalized;
|
|
196
|
+
}
|
|
97
197
|
}, {
|
|
98
198
|
key: "formatConfig",
|
|
99
199
|
value: function formatConfig(result, businessData) {
|
|
@@ -178,19 +278,19 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
178
278
|
}));
|
|
179
279
|
var quantity = 0;
|
|
180
280
|
var countFromItems = function countFromItems(items) {
|
|
181
|
-
var
|
|
182
|
-
|
|
281
|
+
var _iterator3 = _createForOfIteratorHelper(items),
|
|
282
|
+
_step3;
|
|
183
283
|
try {
|
|
184
|
-
for (
|
|
185
|
-
var item =
|
|
284
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
285
|
+
var item = _step3.value;
|
|
186
286
|
if (targetIds.has(item.product_id)) {
|
|
187
287
|
quantity += item.quantity;
|
|
188
288
|
}
|
|
189
289
|
}
|
|
190
290
|
} catch (err) {
|
|
191
|
-
|
|
291
|
+
_iterator3.e(err);
|
|
192
292
|
} finally {
|
|
193
|
-
|
|
293
|
+
_iterator3.f();
|
|
194
294
|
}
|
|
195
295
|
};
|
|
196
296
|
if (scope === 'cumulative') {
|
|
@@ -214,11 +314,11 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
214
314
|
var requiredMax;
|
|
215
315
|
var requiredExact;
|
|
216
316
|
var mustInclude;
|
|
217
|
-
var
|
|
218
|
-
|
|
317
|
+
var _iterator4 = _createForOfIteratorHelper(rules),
|
|
318
|
+
_step4;
|
|
219
319
|
try {
|
|
220
|
-
for (
|
|
221
|
-
var rule =
|
|
320
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
321
|
+
var rule = _step4.value;
|
|
222
322
|
var resolvedValue = this.resolveQuantityValue(rule, businessData);
|
|
223
323
|
switch (rule.comparison) {
|
|
224
324
|
case 'minimum':
|
|
@@ -260,9 +360,9 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
260
360
|
}
|
|
261
361
|
}
|
|
262
362
|
} catch (err) {
|
|
263
|
-
|
|
363
|
+
_iterator4.e(err);
|
|
264
364
|
} finally {
|
|
265
|
-
|
|
365
|
+
_iterator4.f();
|
|
266
366
|
}
|
|
267
367
|
return {
|
|
268
368
|
passed: failedRules.length === 0,
|
|
@@ -336,11 +436,11 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
336
436
|
var requiredMax;
|
|
337
437
|
var requiredExact;
|
|
338
438
|
var mustInclude;
|
|
339
|
-
var
|
|
340
|
-
|
|
439
|
+
var _iterator5 = _createForOfIteratorHelper(quantityRules),
|
|
440
|
+
_step5;
|
|
341
441
|
try {
|
|
342
|
-
for (
|
|
343
|
-
var rule =
|
|
442
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
443
|
+
var rule = _step5.value;
|
|
344
444
|
var resolvedValue = this.resolveQuantityValue(rule, businessData);
|
|
345
445
|
switch (rule.comparison) {
|
|
346
446
|
case 'minimum':
|
|
@@ -370,9 +470,9 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
370
470
|
}
|
|
371
471
|
}
|
|
372
472
|
} catch (err) {
|
|
373
|
-
|
|
473
|
+
_iterator5.e(err);
|
|
374
474
|
} finally {
|
|
375
|
-
|
|
475
|
+
_iterator5.f();
|
|
376
476
|
}
|
|
377
477
|
var remainingMax = this.calculateRemainingMax(scope, requiredMax, targets, businessData);
|
|
378
478
|
var formattedValidationMessage = this.formatValidationMessage(validationMessage, requiredMin, requiredMax, requiredExact);
|
|
@@ -412,19 +512,19 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
412
512
|
return t.product_id;
|
|
413
513
|
}));
|
|
414
514
|
var historicalQty = 0;
|
|
415
|
-
var
|
|
416
|
-
|
|
515
|
+
var _iterator6 = _createForOfIteratorHelper(historicalItems),
|
|
516
|
+
_step6;
|
|
417
517
|
try {
|
|
418
|
-
for (
|
|
419
|
-
var item =
|
|
518
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
519
|
+
var item = _step6.value;
|
|
420
520
|
if (targetIds.has(item.product_id)) {
|
|
421
521
|
historicalQty += item.quantity;
|
|
422
522
|
}
|
|
423
523
|
}
|
|
424
524
|
} catch (err) {
|
|
425
|
-
|
|
525
|
+
_iterator6.e(err);
|
|
426
526
|
} finally {
|
|
427
|
-
|
|
527
|
+
_iterator6.f();
|
|
428
528
|
}
|
|
429
529
|
return Math.max(0, requiredMax - historicalQty);
|
|
430
530
|
}
|
|
@@ -438,11 +538,11 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
438
538
|
var config = action.config;
|
|
439
539
|
if (!(config !== null && config !== void 0 && config.products)) return [];
|
|
440
540
|
var results = [];
|
|
441
|
-
var
|
|
442
|
-
|
|
541
|
+
var _iterator7 = _createForOfIteratorHelper(config.products),
|
|
542
|
+
_step7;
|
|
443
543
|
try {
|
|
444
|
-
for (
|
|
445
|
-
var prefillProduct =
|
|
544
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
545
|
+
var prefillProduct = _step7.value;
|
|
446
546
|
var quantity = this.resolvePrefillQuantity(prefillProduct.quantityFrom, prefillProduct.quantity, businessData);
|
|
447
547
|
if (quantity <= 0) continue;
|
|
448
548
|
results.push({
|
|
@@ -453,9 +553,9 @@ export var ItemRuleAdapter = /*#__PURE__*/function () {
|
|
|
453
553
|
});
|
|
454
554
|
}
|
|
455
555
|
} catch (err) {
|
|
456
|
-
|
|
556
|
+
_iterator7.e(err);
|
|
457
557
|
} finally {
|
|
458
|
-
|
|
558
|
+
_iterator7.f();
|
|
459
559
|
}
|
|
460
560
|
return results;
|
|
461
561
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StrategyConfig } from '../../type';
|
|
2
|
-
import { type ItemRuleBusinessData, type ItemRuleEvaluationResult, type QuantityCheckResult, type QuantityLimitResult, type PrefillItemResult } from './type';
|
|
2
|
+
import { type ItemRuleBusinessData, type ItemRuleEvaluationResult, type QuantityCheckResult, type QuantityLimitResult, type PrefillItemResult, type AllergyRequirement } from './type';
|
|
3
3
|
/**
|
|
4
4
|
* ItemRule 评估器
|
|
5
5
|
*
|
|
@@ -21,6 +21,13 @@ export declare class ItemRuleEvaluator {
|
|
|
21
21
|
* 完整评估:数量校验 + 预填购物车
|
|
22
22
|
*/
|
|
23
23
|
evaluate(businessData: ItemRuleBusinessData): ItemRuleEvaluationResult;
|
|
24
|
+
/**
|
|
25
|
+
* 获取当前商品优先级最高的过敏门禁要求。
|
|
26
|
+
*
|
|
27
|
+
* 不同商品或不同 Action 的数据源不会合并;相同优先级按
|
|
28
|
+
* strategyId + ruleId 稳定排序,保证多次评估结果一致。
|
|
29
|
+
*/
|
|
30
|
+
getAllergyRequirement(businessData: ItemRuleBusinessData): AllergyRequirement | null;
|
|
24
31
|
/**
|
|
25
32
|
* 获取当前配置中各商品的数量限制
|
|
26
33
|
*
|
|
@@ -63,6 +63,7 @@ export var ItemRuleEvaluator = /*#__PURE__*/function () {
|
|
|
63
63
|
}) : this.strategyConfigs;
|
|
64
64
|
var allQuantityChecks = [];
|
|
65
65
|
var allPrefillItems = [];
|
|
66
|
+
var allAllergyRequirements = [];
|
|
66
67
|
var rawResults = [];
|
|
67
68
|
var context = this.adapter.prepareContext(businessData);
|
|
68
69
|
var _iterator = _createForOfIteratorHelper(configs),
|
|
@@ -74,9 +75,11 @@ export var ItemRuleEvaluator = /*#__PURE__*/function () {
|
|
|
74
75
|
rawResults.push(evalResult);
|
|
75
76
|
var _this$adapter$transfo = this.adapter.transformResult(evalResult, businessData),
|
|
76
77
|
quantityChecks = _this$adapter$transfo.quantityChecks,
|
|
77
|
-
prefillItems = _this$adapter$transfo.prefillItems
|
|
78
|
+
prefillItems = _this$adapter$transfo.prefillItems,
|
|
79
|
+
allergyRequirements = _this$adapter$transfo.allergyRequirements;
|
|
78
80
|
allQuantityChecks.push.apply(allQuantityChecks, _toConsumableArray(quantityChecks));
|
|
79
81
|
allPrefillItems.push.apply(allPrefillItems, _toConsumableArray(prefillItems));
|
|
82
|
+
allAllergyRequirements.push.apply(allAllergyRequirements, _toConsumableArray(allergyRequirements));
|
|
80
83
|
}
|
|
81
84
|
} catch (err) {
|
|
82
85
|
_iterator.e(err);
|
|
@@ -89,12 +92,33 @@ export var ItemRuleEvaluator = /*#__PURE__*/function () {
|
|
|
89
92
|
return {
|
|
90
93
|
quantityChecks: allQuantityChecks,
|
|
91
94
|
prefillItems: allPrefillItems,
|
|
95
|
+
allergyRequirements: allAllergyRequirements,
|
|
92
96
|
allPassed: failedChecks.length === 0,
|
|
93
97
|
failedChecks: failedChecks,
|
|
94
98
|
rawResults: rawResults
|
|
95
99
|
};
|
|
96
100
|
}
|
|
97
101
|
|
|
102
|
+
/**
|
|
103
|
+
* 获取当前商品优先级最高的过敏门禁要求。
|
|
104
|
+
*
|
|
105
|
+
* 不同商品或不同 Action 的数据源不会合并;相同优先级按
|
|
106
|
+
* strategyId + ruleId 稳定排序,保证多次评估结果一致。
|
|
107
|
+
*/
|
|
108
|
+
}, {
|
|
109
|
+
key: "getAllergyRequirement",
|
|
110
|
+
value: function getAllergyRequirement(businessData) {
|
|
111
|
+
var requirements = this.evaluate(businessData).allergyRequirements;
|
|
112
|
+
if (!requirements.length) return null;
|
|
113
|
+
return _toConsumableArray(requirements).sort(function (left, right) {
|
|
114
|
+
var priorityDiff = right.priority - left.priority;
|
|
115
|
+
if (priorityDiff !== 0) return priorityDiff;
|
|
116
|
+
var strategyDiff = left.strategyId.localeCompare(right.strategyId);
|
|
117
|
+
if (strategyDiff !== 0) return strategyDiff;
|
|
118
|
+
return left.ruleId.localeCompare(right.ruleId);
|
|
119
|
+
})[0];
|
|
120
|
+
}
|
|
121
|
+
|
|
98
122
|
/**
|
|
99
123
|
* 获取当前配置中各商品的数量限制
|
|
100
124
|
*
|
|
@@ -4,6 +4,8 @@ export declare const ITEM_RULE_ACTION_TYPES: {
|
|
|
4
4
|
readonly QUANTITY_CHECK: "QUANTITY_CHECK";
|
|
5
5
|
/** 预填购物车 */
|
|
6
6
|
readonly PREFILL_CART: "PREFILL_CART";
|
|
7
|
+
/** 加购前过敏信息确认 */
|
|
8
|
+
readonly ALLERGY_CHECK: "ALLERGY_CHECK";
|
|
7
9
|
};
|
|
8
10
|
export type ItemRuleActionType = (typeof ITEM_RULE_ACTION_TYPES)[keyof typeof ITEM_RULE_ACTION_TYPES];
|
|
9
11
|
export declare const ITEM_RULE_TEMPLATES: {
|
|
@@ -63,6 +65,42 @@ export interface TargetItem {
|
|
|
63
65
|
/** 变体 ID */
|
|
64
66
|
product_variant_id?: number;
|
|
65
67
|
}
|
|
68
|
+
/** 策略展示文案,可由调用方按当前 locale 解析。 */
|
|
69
|
+
export type ItemRuleLocalizedText = string | Record<string, string>;
|
|
70
|
+
/** 内联过敏源选项。稳定 id 用于保存选择,label 只负责展示。 */
|
|
71
|
+
export interface AllergyDataSourceItem {
|
|
72
|
+
id: string;
|
|
73
|
+
label: ItemRuleLocalizedText;
|
|
74
|
+
}
|
|
75
|
+
/** 当前仅支持随策略下发的内联过敏源。 */
|
|
76
|
+
export interface AllergyDataSource {
|
|
77
|
+
type: 'inline';
|
|
78
|
+
items: AllergyDataSourceItem[];
|
|
79
|
+
}
|
|
80
|
+
/** 每个目标商品独立持有自己的过敏源,禁止跨商品合并。 */
|
|
81
|
+
export interface AllergyTargetItem extends TargetItem {
|
|
82
|
+
dataSource: AllergyDataSource;
|
|
83
|
+
}
|
|
84
|
+
export type AllergyPromptScope = 'once_per_order_product';
|
|
85
|
+
/** ALLERGY_CHECK Action 的商品级配置。 */
|
|
86
|
+
export interface AllergyCheckConfig {
|
|
87
|
+
targetType: 'product';
|
|
88
|
+
targets: AllergyTargetItem[];
|
|
89
|
+
promptScope: AllergyPromptScope;
|
|
90
|
+
allowNote?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/** 当前商品命中的单条过敏门禁要求。 */
|
|
93
|
+
export interface AllergyRequirement {
|
|
94
|
+
strategyId: string;
|
|
95
|
+
ruleId: string;
|
|
96
|
+
priority: number;
|
|
97
|
+
targetType: 'product';
|
|
98
|
+
product_id: number;
|
|
99
|
+
product_variant_id?: number;
|
|
100
|
+
dataSource: AllergyDataSource;
|
|
101
|
+
promptScope: AllergyPromptScope;
|
|
102
|
+
allowNote: boolean;
|
|
103
|
+
}
|
|
66
104
|
/**
|
|
67
105
|
* 预填商品项
|
|
68
106
|
*/
|
|
@@ -119,6 +157,10 @@ export interface ItemRuleBusinessData {
|
|
|
119
157
|
historicalItems?: CartItemSummary[];
|
|
120
158
|
/** 服务类型(如 'dine-in', 'takeaway') */
|
|
121
159
|
serviceType?: string;
|
|
160
|
+
/** 当前业务渠道(如 'kiosk', 'pos', 'online_store') */
|
|
161
|
+
channel?: string;
|
|
162
|
+
/** 当前正在加入购物车的商品;ALLERGY_CHECK 只读取该商品的 Target。 */
|
|
163
|
+
currentProduct?: Pick<TargetItem, 'product_id' | 'product_variant_id'>;
|
|
122
164
|
/** 当前提交次数(0=首次提交, >0=追加提交) */
|
|
123
165
|
submissionIndex?: number;
|
|
124
166
|
/** 策略配置列表(可选,如果不传则使用 setStrategyConfigs 设置的) */
|
|
@@ -216,6 +258,8 @@ export interface ItemRuleEvaluationResult {
|
|
|
216
258
|
quantityChecks: QuantityCheckResult[];
|
|
217
259
|
/** 需要预填的商品列表 */
|
|
218
260
|
prefillItems: PrefillItemResult[];
|
|
261
|
+
/** 当前商品命中的过敏门禁要求;不同 Action/商品不会合并。 */
|
|
262
|
+
allergyRequirements: AllergyRequirement[];
|
|
219
263
|
/** 所有校验是否全部通过 */
|
|
220
264
|
allPassed: boolean;
|
|
221
265
|
/** 未通过的校验列表 */
|
|
@@ -6,7 +6,9 @@ export var ITEM_RULE_ACTION_TYPES = {
|
|
|
6
6
|
/** 数量校验 */
|
|
7
7
|
QUANTITY_CHECK: 'QUANTITY_CHECK',
|
|
8
8
|
/** 预填购物车 */
|
|
9
|
-
PREFILL_CART: 'PREFILL_CART'
|
|
9
|
+
PREFILL_CART: 'PREFILL_CART',
|
|
10
|
+
/** 加购前过敏信息确认 */
|
|
11
|
+
ALLERGY_CHECK: 'ALLERGY_CHECK'
|
|
10
12
|
};
|
|
11
13
|
// ============================================
|
|
12
14
|
// Rule Template 类型(创建规则时的起始模板)
|
|
@@ -50,6 +52,22 @@ export var ITEM_RULE_TEMPLATES = {
|
|
|
50
52
|
|
|
51
53
|
/** 目标项 */
|
|
52
54
|
|
|
55
|
+
// ============================================
|
|
56
|
+
// Allergy Check 相关类型
|
|
57
|
+
// ============================================
|
|
58
|
+
|
|
59
|
+
/** 策略展示文案,可由调用方按当前 locale 解析。 */
|
|
60
|
+
|
|
61
|
+
/** 内联过敏源选项。稳定 id 用于保存选择,label 只负责展示。 */
|
|
62
|
+
|
|
63
|
+
/** 当前仅支持随策略下发的内联过敏源。 */
|
|
64
|
+
|
|
65
|
+
/** 每个目标商品独立持有自己的过敏源,禁止跨商品合并。 */
|
|
66
|
+
|
|
67
|
+
/** ALLERGY_CHECK Action 的商品级配置。 */
|
|
68
|
+
|
|
69
|
+
/** 当前商品命中的单条过敏门禁要求。 */
|
|
70
|
+
|
|
53
71
|
// ============================================
|
|
54
72
|
// Prefill Cart 相关类型
|
|
55
73
|
// ============================================
|
|
@@ -3,7 +3,7 @@ import { BaseModule } from '../BaseModule';
|
|
|
3
3
|
import { OrderModuleAPI, CommitOrderParams, UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams, CancelOrderParams, ChangeBookingStatusParams, CheckoutOrderParams } from './types';
|
|
4
4
|
import { CartItem } from '../Cart/types';
|
|
5
5
|
import { type SubmitPayloadEnhancer } from './utils';
|
|
6
|
-
import type { OrderAmountSnapshot, AddProductBookingInput, AddProductToOrderOptions, OrderIdentitySnapshot, OrderPaymentSource, OrderSnapshot, OrderSyncState, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, SubmitSalesOrderParams, OrderProduct, OrderProductIdentity, OrderSummary, OrderTempOrder, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, SendCustomerPayLinkParams, UpdateTempOrderCustomerInput, OrderCustomerPatch, OrderCustomerView, ReplaceTempOrderOptions, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions, RemoveProductsFromOrderOptions } from './types';
|
|
6
|
+
import type { OrderAmountSnapshot, AddProductBookingInput, AddProductToOrderOptions, OrderIdentitySnapshot, OrderPaymentSource, OrderSnapshot, OrderSyncState, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, SubmitSalesOrderParams, OrderProduct, OrderProductIdentity, OrderSummary, OrderTempOrder, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, SendCustomerPayLinkParams, UpdateTempOrderCustomerInput, OrderCustomerPatch, OrderCustomerView, ReplaceTempOrderOptions, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions, RemoveProductsFromOrderOptions, SalesNote, SalesNotesMutationSnapshot, SetSalesNoteInput, PickupReferenceMode, ShopServiceData, ShopServiceType } from './types';
|
|
7
7
|
import type { ICustomer } from '../AccountList/types';
|
|
8
8
|
import type { Discount } from '../Discount/types';
|
|
9
9
|
import { UnavailableReason } from '../Rules/types';
|
|
@@ -20,6 +20,8 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
20
20
|
private openCache;
|
|
21
21
|
private sessionStoragePersistEnabled;
|
|
22
22
|
private sessionStorageRestoreRecord;
|
|
23
|
+
/** 只允许当前订单最新的 prepare/config 请求回写客户资产态。 */
|
|
24
|
+
private customerWalletPrepareConfigEpoch;
|
|
23
25
|
private salesSummaryModuleName;
|
|
24
26
|
private rulesHooksOverride?;
|
|
25
27
|
private moduleHooksOverride?;
|
|
@@ -29,8 +31,10 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
29
31
|
private promotionEvaluator;
|
|
30
32
|
/** 赠品选择 resolver;由 SDK host bridge 注入 */
|
|
31
33
|
private giftSelectResolver;
|
|
32
|
-
/**
|
|
34
|
+
/** 促销评估递归保护 flag(写路径同步评估促销,禁止重入) */
|
|
33
35
|
private isApplyingPromotion;
|
|
36
|
+
/** 保持旧事件语义:同步事件监听器内触发的订单写入不得递归评估促销。 */
|
|
37
|
+
private isEmittingPromotionApplied;
|
|
34
38
|
/** 商品曾应用过客户券卡,客户变更剥离后需强制跑一次 calcDiscount 复位价格 */
|
|
35
39
|
private hasActiveCustomerBoundDiscount;
|
|
36
40
|
/** 最近一次 applyPromotion 的未满足促销提示 */
|
|
@@ -76,6 +80,11 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
76
80
|
private logError;
|
|
77
81
|
private registerDiscountModules;
|
|
78
82
|
private createDefaultRulesHooks;
|
|
83
|
+
/**
|
|
84
|
+
* Stable across notifyTempOrderChanged's immutable copy, but changes when a
|
|
85
|
+
* different local/server order becomes current.
|
|
86
|
+
*/
|
|
87
|
+
private getDiscountConfigOrderIdentityKey;
|
|
79
88
|
loadDiscountConfig(params: {
|
|
80
89
|
customerId: number;
|
|
81
90
|
action?: 'create' | 'edit';
|
|
@@ -85,6 +94,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
85
94
|
getDiscountList(): Discount[];
|
|
86
95
|
getAvailableWalletIds(): number[];
|
|
87
96
|
getVirtualCurrencyList(): import("../Discount/types").VirtualCurrencyAsset[];
|
|
97
|
+
getCustomerWalletPrepareConfigEpoch(): number;
|
|
88
98
|
private syncScannedDiscountsToOriginalDiscountList;
|
|
89
99
|
private ensureEditDiscountConfigForProductChange;
|
|
90
100
|
scanCode(code: string, customerId?: number): Promise<{
|
|
@@ -124,7 +134,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
124
134
|
*/
|
|
125
135
|
appendPromotionTags<T extends Record<string, any>>(products: T[]): T[];
|
|
126
136
|
/**
|
|
127
|
-
*
|
|
137
|
+
* 只执行购物车促销评估与赠品写回,不发布稳定态事件。
|
|
128
138
|
*
|
|
129
139
|
* 调用时机:写路径(add/update/remove/clear/setCustomer)末尾自动触发;外部一般无需手动调。
|
|
130
140
|
*
|
|
@@ -132,8 +142,13 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
132
142
|
* - 不调用任何公开 CRUD API(如 removeProductFromOrder),全部内部 mutate tempOrder.products,避免事件风暴;
|
|
133
143
|
* - 用 `isApplyingPromotion` 防递归;
|
|
134
144
|
* - 多选项赠品依赖 giftSelectResolver,未注入则跳过且 console.warn;
|
|
135
|
-
* - 不主动调用 applyDiscount / recalculateSummary
|
|
145
|
+
* - 不主动调用 applyDiscount / recalculateSummary,调用方负责跟进;
|
|
146
|
+
* - 返回的 payload 只能在 applyDiscount(商品写路径还需 summary/persist)完成后发布。
|
|
136
147
|
*/
|
|
148
|
+
private evaluatePromotion;
|
|
149
|
+
/** 发布促销稳定态;products 必须读取折扣计算后的当前数组。 */
|
|
150
|
+
private emitPromotionApplied;
|
|
151
|
+
/** 公开入口:促销、折扣、summary 与持久化完成后发布稳定态事件。 */
|
|
137
152
|
applyPromotion(): Promise<void>;
|
|
138
153
|
/** 最近一次 applyPromotion 输出的未满足促销列表 */
|
|
139
154
|
getUnfulfilledPromotions(): OrderUnfulfilledPromotion[];
|
|
@@ -169,8 +184,10 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
169
184
|
consumeSessionStorageRestore(): Record<string, any> | null;
|
|
170
185
|
notifyTempOrderChanged(): void;
|
|
171
186
|
private createDefaultTempOrderInstance;
|
|
172
|
-
private
|
|
173
|
-
private
|
|
187
|
+
private clearTempOrderCustomerWalletSnapshots;
|
|
188
|
+
private clearCustomerWalletState;
|
|
189
|
+
private clearCustomerWalletRuntimeState;
|
|
190
|
+
private writeCustomerWalletSnapshotsFromPrepareConfig;
|
|
174
191
|
private createExternalSaleNumber;
|
|
175
192
|
private ensureExternalSaleNumber;
|
|
176
193
|
private ensureRequestUniqueIdempotencyToken;
|
|
@@ -306,9 +323,24 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
306
323
|
updateTempOrderNote(note: string, sync: boolean): string | Promise<string>;
|
|
307
324
|
syncTempOrderNoteToRemote(orderId: number | string, note: string): Promise<string>;
|
|
308
325
|
getTempOrderNote(): string;
|
|
326
|
+
private ensureSalesNotesRuntimeState;
|
|
327
|
+
private ensureSalesNotesLoadedForMutation;
|
|
328
|
+
private normalizeSalesNoteUuid;
|
|
329
|
+
private getSalesNotePrimaryRelation;
|
|
330
|
+
private removeSalesNotesForMissingProductLines;
|
|
331
|
+
private setSalesNoteOnTempOrder;
|
|
332
|
+
getSalesNotes(): SalesNote[];
|
|
333
|
+
createSalesNotesMutationSnapshot(): SalesNotesMutationSnapshot;
|
|
334
|
+
restoreSalesNotesMutationSnapshot(snapshot: SalesNotesMutationSnapshot): void;
|
|
335
|
+
setSalesNote(input: SetSalesNoteInput): Promise<SalesNote>;
|
|
336
|
+
removeSalesNote(uuid: string): Promise<void>;
|
|
337
|
+
clearSalesNotes(): Promise<void>;
|
|
309
338
|
updateTempOrderShopDiscount(amount: string | number): string;
|
|
310
339
|
updateTempOrderDepositAmount(amount: string | number): OrderSummary;
|
|
311
340
|
updateTempOrderBuzzer(buzzer: string): string;
|
|
341
|
+
private updateTempOrderShopServiceData;
|
|
342
|
+
updateTempOrderPickupReferenceMode(mode: PickupReferenceMode): ShopServiceData;
|
|
343
|
+
updateTempOrderServiceType(serviceType: ShopServiceType): ShopServiceData;
|
|
312
344
|
updateTempOrderContactsInfo(contactsInfo: Record<string, any> | null): Record<string, any> | null;
|
|
313
345
|
private buildTempOrderCustomer;
|
|
314
346
|
private isCustomerBoundDiscount;
|
|
@@ -476,7 +508,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
476
508
|
removeProductFromOrder(identity: OrderProductIdentity, options?: RemoveProductsFromOrderOptions): Promise<OrderProduct[]>;
|
|
477
509
|
/**
|
|
478
510
|
* 仅清空购物车行(products / bookings),不重置整单。
|
|
479
|
-
*
|
|
511
|
+
* 普通整单 note 保持不变;以商品行为主体的 Sales Notes 同步删除。
|
|
480
512
|
*/
|
|
481
513
|
clearOrderCartLines(): Promise<OrderTempOrder>;
|
|
482
514
|
/**
|
|
@@ -540,7 +572,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
540
572
|
generateIdempotencyToken(): string;
|
|
541
573
|
syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
|
|
542
574
|
createOrder(params: CommitOrderParams['query']): {
|
|
543
|
-
type: "
|
|
575
|
+
type: "virtual" | "appointment_booking";
|
|
544
576
|
platform: string;
|
|
545
577
|
sales_channel: string;
|
|
546
578
|
order_sales_channel: string;
|
|
@@ -618,4 +650,4 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
|
|
|
618
650
|
getOrderInfo(order_id: number): Promise<any>;
|
|
619
651
|
getVouchers(): any[];
|
|
620
652
|
}
|
|
621
|
-
export type { AddProductToOrderOptions, OrderMetaList, PointCardSnapshotItem, RemoveProductsFromOrderOptions, UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams, } from './types';
|
|
653
|
+
export type { AddProductToOrderOptions, OrderMetaList, PointCardSnapshotItem, VirtualCurrencySnapshotItem, RemoveProductsFromOrderOptions, SalesNote, SalesNoteDraftInput, SalesNoteLocalizedSelection, SalesNoteLocalizedText, SalesNoteRelation, SalesNoteTextInput, SetSalesNoteInput, UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams, } from './types';
|