@pisell/pisellos 0.0.500 → 0.0.502
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 +8 -0
- package/dist/model/strategy/adapter/itemRule/adapter.js +52 -8
- package/dist/model/strategy/adapter/itemRule/examples.d.ts +15 -0
- package/dist/model/strategy/adapter/itemRule/examples.js +68 -1
- package/dist/model/strategy/adapter/itemRule/index.d.ts +1 -1
- package/dist/model/strategy/adapter/itemRule/index.js +1 -1
- package/dist/model/strategy/adapter/itemRule/type.d.ts +20 -1
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/modules/Order/index.d.ts +10 -0
- package/dist/modules/Order/index.js +64 -40
- package/dist/modules/Order/types.d.ts +13 -1
- package/dist/modules/Order/utils.d.ts +36 -1
- package/dist/modules/Order/utils.js +120 -24
- package/dist/modules/ProductList/index.js +2 -2
- package/dist/modules/Quotation/index.js +6 -3
- package/dist/modules/SalesSummary/types.d.ts +2 -1
- package/dist/modules/SalesSummary/utils.js +10 -10
- package/dist/modules/Schedule/utils.d.ts +1 -1
- package/dist/solution/ScanOrder/index.d.ts +22 -0
- package/dist/solution/ScanOrder/index.js +863 -369
- package/dist/solution/ScanOrder/types.d.ts +31 -8
- package/dist/solution/ScanOrder/utils.d.ts +26 -0
- package/dist/solution/ScanOrder/utils.js +191 -44
- package/dist/solution/VenueBooking/index.d.ts +42 -5
- package/dist/solution/VenueBooking/index.js +692 -280
- package/dist/solution/VenueBooking/types.d.ts +23 -0
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -1
- package/dist/solution/VenueBooking/utils/dateSummary.js +7 -5
- package/dist/solution/VenueBooking/utils/resource.d.ts +11 -1
- package/dist/solution/VenueBooking/utils/resource.js +57 -21
- package/dist/solution/VenueBooking/utils/slotMerge.d.ts +5 -0
- package/dist/solution/VenueBooking/utils/slotMerge.js +33 -12
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +1 -1
- package/dist/solution/VenueBooking/utils/timeSlot.js +259 -62
- package/lib/model/strategy/adapter/itemRule/adapter.d.ts +8 -0
- package/lib/model/strategy/adapter/itemRule/adapter.js +41 -2
- package/lib/model/strategy/adapter/itemRule/examples.d.ts +15 -0
- package/lib/model/strategy/adapter/itemRule/examples.js +47 -0
- package/lib/model/strategy/adapter/itemRule/index.d.ts +1 -1
- package/lib/model/strategy/adapter/itemRule/index.js +2 -0
- package/lib/model/strategy/adapter/itemRule/type.d.ts +20 -1
- package/lib/modules/Order/index.d.ts +10 -0
- package/lib/modules/Order/index.js +40 -43
- package/lib/modules/Order/types.d.ts +13 -1
- package/lib/modules/Order/utils.d.ts +36 -1
- package/lib/modules/Order/utils.js +100 -21
- package/lib/modules/ProductList/index.js +3 -2
- package/lib/modules/Quotation/index.js +3 -0
- package/lib/modules/SalesSummary/types.d.ts +2 -1
- package/lib/modules/SalesSummary/utils.js +2 -2
- package/lib/modules/Schedule/utils.d.ts +1 -1
- package/lib/solution/ScanOrder/index.d.ts +22 -0
- package/lib/solution/ScanOrder/index.js +376 -21
- package/lib/solution/ScanOrder/types.d.ts +31 -8
- package/lib/solution/ScanOrder/utils.d.ts +26 -0
- package/lib/solution/ScanOrder/utils.js +128 -19
- package/lib/solution/VenueBooking/index.d.ts +42 -5
- package/lib/solution/VenueBooking/index.js +356 -84
- package/lib/solution/VenueBooking/types.d.ts +23 -0
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -1
- package/lib/solution/VenueBooking/utils/dateSummary.js +14 -5
- package/lib/solution/VenueBooking/utils/resource.d.ts +11 -1
- package/lib/solution/VenueBooking/utils/resource.js +15 -4
- package/lib/solution/VenueBooking/utils/slotMerge.d.ts +5 -0
- package/lib/solution/VenueBooking/utils/slotMerge.js +29 -12
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +1 -1
- package/lib/solution/VenueBooking/utils/timeSlot.js +182 -43
- package/package.json +1 -1
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
var _excluded = ["_origin", "identity_key"],
|
|
2
|
-
_excluded2 = ["created_at", "summary", "surcharges"]
|
|
2
|
+
_excluded2 = ["created_at", "summary", "surcharges"],
|
|
3
|
+
_excluded3 = ["collect_pax", "table_occupancy_duration"];
|
|
3
4
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
4
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
7
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
8
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
5
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
6
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
11
7
|
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); }
|
|
@@ -15,8 +11,75 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
15
11
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
16
12
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
17
13
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
14
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
18
19
|
import dayjs from "dayjs";
|
|
20
|
+
import Decimal from 'decimal.js';
|
|
19
21
|
import { createEmptySummary } from "../../solution/ScanOrder/utils";
|
|
22
|
+
/**
|
|
23
|
+
* OrderModule 默认 Rules 钩子工厂。
|
|
24
|
+
*
|
|
25
|
+
* 价格语义约定(订单域):
|
|
26
|
+
* - `selling_price`:券后单品单价(实际成交单价)。初次加购 = `original_price`;券应用后由 Rules 引擎更新。
|
|
27
|
+
* - `original_price`:券前单品单价(店铺售价)。不承载后台划线价语义。
|
|
28
|
+
* - `payment_price`:已从内部字段移除;只在出站 payload 中由 `selling_price` 派生以兼容后端。
|
|
29
|
+
*
|
|
30
|
+
* Rules 钩子契约:
|
|
31
|
+
* - `getProduct.total` = `selling_price × num`(当前成交总价)
|
|
32
|
+
* - `getProduct.origin_total` = `original_price × num`(券前总价)
|
|
33
|
+
* - `setProduct` 写回 `selling_price` 的优先级:
|
|
34
|
+
* 1. `values.main_product_selling_price`(券应用分支,per-unit 券后主价)
|
|
35
|
+
* 2. `values.price`(还原分支 `restoredPrice`、good_pass 归零)
|
|
36
|
+
* 3. `values.total / num`(仅当 Rules 只给出总价时的兜底)
|
|
37
|
+
*
|
|
38
|
+
* 导出为纯函数方便单测直接驱动钩子,不依赖 OrderModule 实例。
|
|
39
|
+
*/
|
|
40
|
+
export function createDefaultOrderRulesHooks() {
|
|
41
|
+
var toUnitPriceString = function toUnitPriceString(totalLike, num) {
|
|
42
|
+
var effectiveNum = Number(num) > 0 ? Number(num) : 1;
|
|
43
|
+
return new Decimal(Number(totalLike) || 0).dividedBy(effectiveNum).toDecimalPlaces(2).toString();
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
getProduct: function getProduct(product) {
|
|
47
|
+
var _product$_origin, _product$_origin2, _product$_origin3, _product$_origin4;
|
|
48
|
+
return {
|
|
49
|
+
id: product.product_id,
|
|
50
|
+
_id: product.identity_key ? "".concat(product.product_id, "_").concat(product.product_variant_id, "_").concat(product.identity_key) : "".concat(product.product_id, "_").concat(product.product_variant_id),
|
|
51
|
+
price: product.selling_price,
|
|
52
|
+
total: new Decimal(product.selling_price || 0).times(product.num || 1).toNumber(),
|
|
53
|
+
origin_total: new Decimal(product.original_price || product.selling_price || 0).times(product.num || 1).toNumber(),
|
|
54
|
+
original_price: product.original_price,
|
|
55
|
+
quantity: product.num || 1,
|
|
56
|
+
num: product.num || 1,
|
|
57
|
+
discount_list: product.discount_list || [],
|
|
58
|
+
bundle: product.product_bundle || [],
|
|
59
|
+
booking_id: ((_product$_origin = product._origin) === null || _product$_origin === void 0 ? void 0 : _product$_origin.booking_id) || null,
|
|
60
|
+
isClient: false,
|
|
61
|
+
isManualDiscount: ((_product$_origin2 = product._origin) === null || _product$_origin2 === void 0 ? void 0 : _product$_origin2.isManualDiscount) || false,
|
|
62
|
+
holder_id: (_product$_origin3 = product._origin) === null || _product$_origin3 === void 0 ? void 0 : _product$_origin3.holder_id,
|
|
63
|
+
startDate: (_product$_origin4 = product._origin) === null || _product$_origin4 === void 0 ? void 0 : _product$_origin4.startDate
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
setProduct: function setProduct(product, values) {
|
|
67
|
+
var _ref, _values$quantity, _values$discount_list, _values$quantity2, _values$bundle;
|
|
68
|
+
var nextNum = Number((_ref = (_values$quantity = values.quantity) !== null && _values$quantity !== void 0 ? _values$quantity : product.num) !== null && _ref !== void 0 ? _ref : 1) || 1;
|
|
69
|
+
var nextSellingPrice = values.main_product_selling_price !== undefined ? String(values.main_product_selling_price) : values.price !== undefined ? String(values.price) : values.total !== undefined ? toUnitPriceString(values.total, nextNum) : product.selling_price;
|
|
70
|
+
return _objectSpread(_objectSpread({}, product), {}, {
|
|
71
|
+
selling_price: nextSellingPrice,
|
|
72
|
+
original_price: values.original_price !== undefined ? String(values.original_price) : product.original_price,
|
|
73
|
+
discount_list: (_values$discount_list = values.discount_list) !== null && _values$discount_list !== void 0 ? _values$discount_list : product.discount_list,
|
|
74
|
+
num: (_values$quantity2 = values.quantity) !== null && _values$quantity2 !== void 0 ? _values$quantity2 : product.num,
|
|
75
|
+
product_bundle: (_values$bundle = values.bundle) !== null && _values$bundle !== void 0 ? _values$bundle : product.product_bundle,
|
|
76
|
+
metadata: _objectSpread(_objectSpread({}, product.metadata || {}), values.main_product_selling_price !== undefined ? {
|
|
77
|
+
main_product_selling_price: String(values.main_product_selling_price)
|
|
78
|
+
} : {})
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
20
83
|
|
|
21
84
|
/**
|
|
22
85
|
* 通过 session 类商品的开始时间结束时间生成商品的时长
|
|
@@ -125,13 +188,18 @@ function normalizeSubmitProduct(product) {
|
|
|
125
188
|
if (rawMetadata.price_breakdown) {
|
|
126
189
|
cleanMetadata.price_breakdown = rawMetadata.price_breakdown;
|
|
127
190
|
}
|
|
191
|
+
if (rawMetadata.is_rule !== undefined) {
|
|
192
|
+
cleanMetadata.is_rule = rawMetadata.is_rule;
|
|
193
|
+
}
|
|
128
194
|
return _objectSpread(_objectSpread(_objectSpread({}, submitProduct), bookingUid ? {
|
|
129
195
|
booking_uid: bookingUid
|
|
130
196
|
} : {}), {}, {
|
|
131
197
|
product_option_item: submitProduct.product_option_item || [],
|
|
132
198
|
discount_list: submitProduct.discount_list || [],
|
|
133
199
|
product_bundle: submitProduct.product_bundle || [],
|
|
134
|
-
metadata: cleanMetadata
|
|
200
|
+
metadata: cleanMetadata,
|
|
201
|
+
// 出站兼容:后端仍消费 payment_price 字段,从 selling_price(券后单价)派生。
|
|
202
|
+
payment_price: submitProduct.selling_price
|
|
135
203
|
});
|
|
136
204
|
}
|
|
137
205
|
var SUBMIT_BOOKING_METADATA_WHITELIST = ['unique_identification_number', 'collect_pax'];
|
|
@@ -170,6 +238,18 @@ function resolveTableOccupancyDuration(tempOrder) {
|
|
|
170
238
|
}
|
|
171
239
|
return DEFAULT_TABLE_OCCUPANCY_DURATION;
|
|
172
240
|
}
|
|
241
|
+
|
|
242
|
+
/** 提交用人数:有限且为正则向下取整,否则为 1 */
|
|
243
|
+
export function normalizeSubmitCollectPaxValue(value) {
|
|
244
|
+
var n = Number(value);
|
|
245
|
+
return Number.isFinite(n) && n > 0 ? Math.floor(n) : 1;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/** 从临时订单 metadata 解析合成 booking 的 collect_pax */
|
|
249
|
+
export function resolveSubmitCollectPax(tempOrder) {
|
|
250
|
+
var _tempOrder$metadata;
|
|
251
|
+
return normalizeSubmitCollectPaxValue((_tempOrder$metadata = tempOrder.metadata) === null || _tempOrder$metadata === void 0 ? void 0 : _tempOrder$metadata.collect_pax);
|
|
252
|
+
}
|
|
173
253
|
export function createDefaultTempOrder(params) {
|
|
174
254
|
var summary = params.summary || createEmptySummary();
|
|
175
255
|
return {
|
|
@@ -219,11 +299,16 @@ export function createDefaultTempOrder(params) {
|
|
|
219
299
|
};
|
|
220
300
|
}
|
|
221
301
|
export function buildSubmitPayload(params) {
|
|
222
|
-
var _tempOrder$is_price_i, _tempOrder$is_deposit;
|
|
302
|
+
var _ref2, _ref3, _ref4, _tempOrder$is_price_i, _tempOrder$is_deposit;
|
|
223
303
|
var tempOrder = params.tempOrder,
|
|
224
304
|
cacheId = params.cacheId,
|
|
225
305
|
_params$now = params.now,
|
|
226
|
-
now = _params$now === void 0 ? new Date() : _params$now
|
|
306
|
+
now = _params$now === void 0 ? new Date() : _params$now,
|
|
307
|
+
platform = params.platform,
|
|
308
|
+
businessCode = params.businessCode,
|
|
309
|
+
channel = params.channel,
|
|
310
|
+
type = params.type,
|
|
311
|
+
enhance = params.enhance;
|
|
227
312
|
var scheduleDate = tempOrder.schedule_date || tempOrder.created_at || formatDateTime(now);
|
|
228
313
|
var summary = tempOrder.summary || createEmptySummary();
|
|
229
314
|
var relationId = tempOrder.relation_id;
|
|
@@ -233,8 +318,8 @@ export function buildSubmitPayload(params) {
|
|
|
233
318
|
var bookingDuration = resolveTableOccupancyDuration(tempOrder);
|
|
234
319
|
var bookingEnd = bookingStart.add(bookingDuration, 'minute');
|
|
235
320
|
var bookings = relationId && tableFormId ? [{
|
|
236
|
-
relation_id:
|
|
237
|
-
form_id:
|
|
321
|
+
relation_id: 0,
|
|
322
|
+
form_id: 0,
|
|
238
323
|
start_time: bookingStart.format('HH:mm'),
|
|
239
324
|
start_date: bookingStart.format('YYYY-MM-DD'),
|
|
240
325
|
end_time: bookingEnd.format('HH:mm'),
|
|
@@ -242,30 +327,30 @@ export function buildSubmitPayload(params) {
|
|
|
242
327
|
duration: bookingDuration,
|
|
243
328
|
metadata: {
|
|
244
329
|
unique_identification_number: bookingUuid,
|
|
245
|
-
collect_pax:
|
|
330
|
+
collect_pax: resolveSubmitCollectPax(tempOrder)
|
|
246
331
|
},
|
|
247
332
|
select_date: bookingStart.format('YYYY-MM-DD'),
|
|
248
333
|
is_all: false,
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
334
|
+
like_status: 'common',
|
|
335
|
+
schedule_id: 0,
|
|
336
|
+
relation_type: '',
|
|
337
|
+
number: 1
|
|
253
338
|
}] : tempOrder.bookings || [];
|
|
254
339
|
var formRecordIds = relationId && tableFormId ? [{
|
|
255
340
|
form_id: tableFormId,
|
|
256
|
-
|
|
341
|
+
form_record_id: relationId
|
|
257
342
|
}] : undefined;
|
|
258
343
|
var _createdAt = tempOrder.created_at,
|
|
259
344
|
_summary = tempOrder.summary,
|
|
260
345
|
_surcharges = tempOrder.surcharges,
|
|
261
346
|
tempOrderRest = _objectWithoutProperties(tempOrder, _excluded2);
|
|
262
|
-
|
|
263
|
-
platform: normalizeSubmitPlatform(tempOrder.platform),
|
|
347
|
+
var payload = _objectSpread(_objectSpread({}, tempOrderRest), {}, {
|
|
348
|
+
platform: normalizeSubmitPlatform(platform !== null && platform !== void 0 ? platform : tempOrder.platform),
|
|
264
349
|
request_unique_idempotency_token: cacheId,
|
|
265
|
-
type: tempOrder.type
|
|
266
|
-
business_code: tempOrder.business_code
|
|
350
|
+
type: (_ref2 = type !== null && type !== void 0 ? type : tempOrder.type) !== null && _ref2 !== void 0 ? _ref2 : 'table-order',
|
|
351
|
+
business_code: (_ref3 = businessCode !== null && businessCode !== void 0 ? businessCode : tempOrder.business_code) !== null && _ref3 !== void 0 ? _ref3 : 'table-order',
|
|
267
352
|
sales_channel: tempOrder.sales_channel || 'my_pisel',
|
|
268
|
-
order_sales_channel: tempOrder.order_sales_channel
|
|
353
|
+
order_sales_channel: (_ref4 = channel !== null && channel !== void 0 ? channel : tempOrder.order_sales_channel) !== null && _ref4 !== void 0 ? _ref4 : 'online_store',
|
|
269
354
|
status: tempOrder.status || 'normal',
|
|
270
355
|
payment_status: tempOrder.payment_status || 'payment_processing',
|
|
271
356
|
// shipping_status: tempOrder.shipping_status || 'unfulfilled',
|
|
@@ -288,11 +373,22 @@ export function buildSubmitPayload(params) {
|
|
|
288
373
|
contacts_info: tempOrder.contacts_info || [],
|
|
289
374
|
// holder: tempOrder.holder || null,
|
|
290
375
|
// summary,
|
|
291
|
-
metadata:
|
|
376
|
+
metadata: function () {
|
|
377
|
+
var _ref5 = tempOrder.metadata || {},
|
|
378
|
+
_collectPax = _ref5.collect_pax,
|
|
379
|
+
_tableOccupancyDuration = _ref5.table_occupancy_duration,
|
|
380
|
+
rest = _objectWithoutProperties(_ref5, _excluded3);
|
|
381
|
+
return _objectSpread({}, rest);
|
|
382
|
+
}(),
|
|
292
383
|
products: (tempOrder.products || []).map(function (product) {
|
|
293
384
|
return normalizeSubmitProduct(product);
|
|
294
385
|
})
|
|
295
386
|
});
|
|
387
|
+
return enhance ? enhance(payload, {
|
|
388
|
+
tempOrder: tempOrder,
|
|
389
|
+
bookingUuid: bookingUuid,
|
|
390
|
+
now: now
|
|
391
|
+
}) : payload;
|
|
296
392
|
}
|
|
297
393
|
export function formatV1Product(products) {
|
|
298
394
|
return products.map(function (product) {
|
|
@@ -302,7 +398,7 @@ export function formatV1Product(products) {
|
|
|
302
398
|
option: product.product_option_item,
|
|
303
399
|
product_id: product.product_id,
|
|
304
400
|
product_variant_id: product.product_variant_id,
|
|
305
|
-
|
|
401
|
+
num: product.num,
|
|
306
402
|
rowKey: product.product_id,
|
|
307
403
|
session: null,
|
|
308
404
|
unique: createUuidV4()
|
|
@@ -85,7 +85,6 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
85
85
|
key: "loadProducts",
|
|
86
86
|
value: function () {
|
|
87
87
|
var _loadProducts = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(_ref, options) {
|
|
88
|
-
var _this$otherParams;
|
|
89
88
|
var _ref$category_ids, category_ids, _ref$product_ids, product_ids, _ref$collection, collection, _ref$menu_list_ids, menu_list_ids, paramsCustomerId, _ref$with_count, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, userPlugin, customer_id, _userPlugin$get, productsData, sortedList;
|
|
90
89
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
91
90
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -131,7 +130,8 @@ export var ProductList = /*#__PURE__*/function (_BaseModule) {
|
|
|
131
130
|
schedule_date: schedule_date,
|
|
132
131
|
with_schedule: with_schedule,
|
|
133
132
|
schedule_datetime: schedule_datetime,
|
|
134
|
-
application_code:
|
|
133
|
+
// application_code: this.otherParams?.channel,
|
|
134
|
+
application_code: 'online-store',
|
|
135
135
|
is_eject: 1
|
|
136
136
|
}, {
|
|
137
137
|
osServer: true,
|
|
@@ -78,18 +78,21 @@ export var QuotationModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
78
78
|
case 0:
|
|
79
79
|
query = {};
|
|
80
80
|
if (params !== null && params !== void 0 && params.channel) query.channel = params.channel;
|
|
81
|
-
|
|
81
|
+
if ((params === null || params === void 0 ? void 0 : params.channel) === 'online_store') {
|
|
82
|
+
query.channel = 'online-store';
|
|
83
|
+
}
|
|
84
|
+
_context2.next = 5;
|
|
82
85
|
return this.request.get('/quotation/available', query, {
|
|
83
86
|
useCache: false
|
|
84
87
|
});
|
|
85
|
-
case
|
|
88
|
+
case 5:
|
|
86
89
|
res = _context2.sent;
|
|
87
90
|
list = (res === null || res === void 0 || (_data = res.data) === null || _data === void 0 ? void 0 : _data.list) || (res === null || res === void 0 ? void 0 : res.list) || [];
|
|
88
91
|
list.sort(function (a, b) {
|
|
89
92
|
return a.sort - b.sort;
|
|
90
93
|
});
|
|
91
94
|
this.store.list = list;
|
|
92
|
-
case
|
|
95
|
+
case 9:
|
|
93
96
|
case "end":
|
|
94
97
|
return _context2.stop();
|
|
95
98
|
}
|
|
@@ -2,9 +2,10 @@ export interface SalesSummaryProduct {
|
|
|
2
2
|
product_id: number | null;
|
|
3
3
|
product_variant_id: number;
|
|
4
4
|
num: number;
|
|
5
|
+
/** 券后单品单价(订单域成交单价),由 OrderModule 维护。 */
|
|
5
6
|
selling_price: string;
|
|
7
|
+
/** 券前单品单价(店铺售价)。 */
|
|
6
8
|
original_price: string;
|
|
7
|
-
payment_price: string;
|
|
8
9
|
tax_fee: string;
|
|
9
10
|
is_charge_tax?: number;
|
|
10
11
|
product_option_item?: any[];
|
|
@@ -68,7 +68,7 @@ function getBundleUnitPrice(product) {
|
|
|
68
68
|
// 单商品总价口径:主商品单价 + option + bundle(随后再乘商品数量)
|
|
69
69
|
function getUnitPaymentTotal(product) {
|
|
70
70
|
var variantPrice = getVariantPrice(product);
|
|
71
|
-
var basePrice = variantPrice || toDecimal(product.selling_price
|
|
71
|
+
var basePrice = variantPrice || toDecimal(product.selling_price);
|
|
72
72
|
return basePrice.plus(getOptionUnitPrice(product)).plus(getBundleUnitPrice(product));
|
|
73
73
|
}
|
|
74
74
|
function getUnitOriginalTotal(product) {
|
|
@@ -254,9 +254,9 @@ function calculateSingleItemTax(params) {
|
|
|
254
254
|
* 与 Summary/utils.ts 的 getMainProductTotal 逻辑对齐,适配 SalesSummaryProduct 结构。
|
|
255
255
|
*/
|
|
256
256
|
function getMainProductPaymentTotal(product) {
|
|
257
|
-
var
|
|
257
|
+
var _product$metadata$mai, _product$metadata4, _product$_origin3, _product$_origin4;
|
|
258
258
|
var variantPrice = getVariantPrice(product);
|
|
259
|
-
var total = variantPrice || toDecimal((
|
|
259
|
+
var total = variantPrice || toDecimal((_product$metadata$mai = (_product$metadata4 = product.metadata) === null || _product$metadata4 === void 0 ? void 0 : _product$metadata4.main_product_selling_price) !== null && _product$metadata$mai !== void 0 ? _product$metadata$mai : product.selling_price);
|
|
260
260
|
var mainDiscountList = ((_product$_origin3 = product._origin) === null || _product$_origin3 === void 0 || (_product$_origin3 = _product$_origin3.product) === null || _product$_origin3 === void 0 ? void 0 : _product$_origin3.discount_list) || ((_product$_origin4 = product._origin) === null || _product$_origin4 === void 0 ? void 0 : _product$_origin4.discount_list) || [];
|
|
261
261
|
var mainDiscountAmount = getDiscountListAmount(mainDiscountList.filter(function (d) {
|
|
262
262
|
var _d$metadata;
|
|
@@ -271,8 +271,8 @@ function getMainProductPaymentTotal(product) {
|
|
|
271
271
|
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
272
272
|
var bundleItem = _step5.value;
|
|
273
273
|
if (isBundleMarkupOrDiscount(bundleItem)) {
|
|
274
|
-
var
|
|
275
|
-
total = total.plus(toDecimal((
|
|
274
|
+
var _ref2, _bundleItem$bundle_se;
|
|
275
|
+
total = total.plus(toDecimal((_ref2 = (_bundleItem$bundle_se = bundleItem.bundle_selling_price) !== null && _bundleItem$bundle_se !== void 0 ? _bundleItem$bundle_se : bundleItem.price) !== null && _ref2 !== void 0 ? _ref2 : 0));
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
} catch (err) {
|
|
@@ -340,24 +340,24 @@ function calculateProductsTax(products, taxRate, isPriceIncludeTax) {
|
|
|
340
340
|
_step7;
|
|
341
341
|
try {
|
|
342
342
|
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
343
|
-
var _bundleItem$num,
|
|
343
|
+
var _bundleItem$num, _ref3, _bundleItem$bundle_se2, _ref4, _ref5, _bundleItem$original_, _ref6, _bundleItem$is_charge, _ref7, _bundleItem$is_charge2;
|
|
344
344
|
var bundleItem = _step7.value;
|
|
345
345
|
if (!isBundleOriginalPrice(bundleItem)) continue;
|
|
346
346
|
var bundleQuantity = new Decimal(getSafeNum((_bundleItem$num = bundleItem.num) !== null && _bundleItem$num !== void 0 ? _bundleItem$num : bundleItem.quantity));
|
|
347
|
-
var bundlePrice = toDecimal((
|
|
348
|
-
var bundleOriginalPrice = toDecimal((
|
|
347
|
+
var bundlePrice = toDecimal((_ref3 = (_bundleItem$bundle_se2 = bundleItem.bundle_selling_price) !== null && _bundleItem$bundle_se2 !== void 0 ? _bundleItem$bundle_se2 : bundleItem.price) !== null && _ref3 !== void 0 ? _ref3 : 0);
|
|
348
|
+
var bundleOriginalPrice = toDecimal((_ref4 = (_ref5 = (_bundleItem$original_ = bundleItem.original_price) !== null && _bundleItem$original_ !== void 0 ? _bundleItem$original_ : bundleItem.product_price) !== null && _ref5 !== void 0 ? _ref5 : bundleItem.price) !== null && _ref4 !== void 0 ? _ref4 : 0);
|
|
349
349
|
var bundleTaxPrecise = calculateSingleItemTax({
|
|
350
350
|
price: bundlePrice,
|
|
351
351
|
taxRate: rate,
|
|
352
352
|
isPriceIncludeTax: isPriceIncludeTax,
|
|
353
|
-
isChargeTax: (
|
|
353
|
+
isChargeTax: (_ref6 = (_bundleItem$is_charge = bundleItem.is_charge_tax) !== null && _bundleItem$is_charge !== void 0 ? _bundleItem$is_charge : product.is_charge_tax) !== null && _ref6 !== void 0 ? _ref6 : 0
|
|
354
354
|
});
|
|
355
355
|
var bundleTaxRounded = bundleTaxPrecise.toDecimalPlaces(2, Decimal.ROUND_HALF_UP);
|
|
356
356
|
var bundleOrigTaxPrecise = calculateSingleItemTax({
|
|
357
357
|
price: bundleOriginalPrice,
|
|
358
358
|
taxRate: rate,
|
|
359
359
|
isPriceIncludeTax: isPriceIncludeTax,
|
|
360
|
-
isChargeTax: (
|
|
360
|
+
isChargeTax: (_ref7 = (_bundleItem$is_charge2 = bundleItem.is_charge_tax) !== null && _bundleItem$is_charge2 !== void 0 ? _bundleItem$is_charge2 : product.is_charge_tax) !== null && _ref7 !== void 0 ? _ref7 : 0
|
|
361
361
|
});
|
|
362
362
|
var bundleOrigTaxRounded = bundleOrigTaxPrecise.toDecimalPlaces(2, Decimal.ROUND_HALF_UP);
|
|
363
363
|
bundleItem.tax_fee = bundleTaxRounded.toNumber();
|
|
@@ -46,7 +46,7 @@ export declare const formatScheduleResult: (schedule: ScheduleItem) => {
|
|
|
46
46
|
};
|
|
47
47
|
export declare const calcScheduleDateRange: (schedule: ScheduleItem) => any[];
|
|
48
48
|
export declare const calcCalendarDataBySchedules: (schedules: ScheduleItem[]) => unknown[];
|
|
49
|
-
export declare const calcMinTimeMaxTimeBySchedules: (schedules: ScheduleItem[], scheduleAllMap?: ScheduleAllMap, selectDate?: string) =>
|
|
49
|
+
export declare const calcMinTimeMaxTimeBySchedules: (schedules: ScheduleItem[], scheduleAllMap?: ScheduleAllMap, selectDate?: string) => ScheduleAllMap;
|
|
50
50
|
/**
|
|
51
51
|
* @title: 格式化日程数据
|
|
52
52
|
* @description:
|
|
@@ -27,6 +27,8 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
27
27
|
private itemRuleConfigsPromise;
|
|
28
28
|
private itemRulePrefillApplied;
|
|
29
29
|
private itemRuleRuntimeConfig;
|
|
30
|
+
/** 最近一次 checkResourceAvailable 从预约规则 link 拉取的商品快照 */
|
|
31
|
+
private enabledReservationRuleProducts;
|
|
30
32
|
private getScanOrderLoggerContext;
|
|
31
33
|
private serializeError;
|
|
32
34
|
private addScanOrderLog;
|
|
@@ -50,10 +52,17 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
50
52
|
};
|
|
51
53
|
getTempOrder(): import("./types").ScanOrderTempOrder | null;
|
|
52
54
|
updateTempOrderNote(note: string): string;
|
|
55
|
+
setPickupReferenceMode(mode: 'counter_pickup' | 'table_service'): {
|
|
56
|
+
service_type: 'dine_in';
|
|
57
|
+
pickup_reference_mode: 'counter_pickup' | 'table_service';
|
|
58
|
+
};
|
|
59
|
+
setPickupRef(buzzer: string): string;
|
|
53
60
|
private ensureTempOrder;
|
|
54
61
|
addNewOrder(): Promise<import("./types").ScanOrderTempOrder>;
|
|
62
|
+
restoreOrder(): Promise<import("./types").ScanOrderTempOrder>;
|
|
55
63
|
getOrderProducts(): ScanOrderOrderProduct[];
|
|
56
64
|
getSummary(): Promise<import("./types").ScanOrderSummary>;
|
|
65
|
+
private buildReservationRuleEnhancer;
|
|
57
66
|
submitScanOrder<T = any>(): Promise<T>;
|
|
58
67
|
addProductToOrder(product: Partial<ScanOrderOrderProduct> & ScanOrderOrderProductIdentity): Promise<ScanOrderOrderProduct[]>;
|
|
59
68
|
updateProductInOrder(params: {
|
|
@@ -87,4 +96,17 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
87
96
|
}>;
|
|
88
97
|
getProductList(): Promise<any>;
|
|
89
98
|
getOtherParams(): Record<string, any>;
|
|
99
|
+
setOtherParams(params: Record<string, any>, { cover }?: {
|
|
100
|
+
cover?: boolean;
|
|
101
|
+
}): Promise<void>;
|
|
102
|
+
setEntryPaxNumber(number: number): Promise<void>;
|
|
103
|
+
getEntryPaxNumber(): number | null;
|
|
104
|
+
getFulfillmentModes(): {
|
|
105
|
+
enablePickup: boolean;
|
|
106
|
+
enableTableService: boolean;
|
|
107
|
+
};
|
|
108
|
+
checkManualPickupRef(): {
|
|
109
|
+
enabled: boolean;
|
|
110
|
+
manualInputType?: string;
|
|
111
|
+
};
|
|
90
112
|
}
|