@pisell/pisellos 2.2.308 → 2.2.310
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/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +2 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.js +4 -2
- package/dist/modules/BookingContext/index.js +4 -4
- package/dist/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +58 -19
- package/dist/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +24 -12
- package/dist/modules/Customer/index.js +6 -3
- package/dist/modules/Customer/types.d.ts +2 -0
- package/dist/modules/Discount/availability.d.ts +7 -0
- package/dist/modules/Discount/availability.js +49 -0
- package/dist/modules/Discount/entitlementPass.d.ts +34 -0
- package/dist/modules/Discount/entitlementPass.js +147 -0
- package/dist/modules/Discount/index.d.ts +2 -2
- package/dist/modules/Discount/index.js +37 -151
- package/dist/modules/Discount/types.d.ts +36 -5
- package/dist/modules/OpenData/index.d.ts +1 -1
- package/dist/modules/OpenData/index.js +21 -12
- package/dist/modules/Order/index.d.ts +33 -4
- package/dist/modules/Order/index.js +830 -411
- package/dist/modules/Order/types.d.ts +17 -0
- package/dist/modules/Order/utils/orderCollectionIdentity.js +16 -12
- package/dist/modules/Order/utils/weighedProduct.d.ts +12 -0
- package/dist/modules/Order/utils/weighedProduct.js +94 -0
- package/dist/modules/Order/utils.d.ts +14 -2
- package/dist/modules/Order/utils.js +280 -79
- package/dist/modules/Payment/index.d.ts +0 -5
- package/dist/modules/Payment/index.js +35 -85
- package/dist/modules/Payment/types.d.ts +21 -1
- package/dist/modules/Payment/types.js +2 -0
- package/dist/modules/Payment/walletpass.d.ts +1 -1
- package/dist/modules/Payment/walletpass.js +80 -47
- package/dist/modules/ProductList/index.js +18 -5
- package/dist/modules/Rules/index.d.ts +2 -2
- package/dist/modules/Rules/index.js +484 -188
- package/dist/modules/Rules/types.d.ts +6 -0
- package/dist/server/index.js +8 -5
- package/dist/server/modules/order/index.js +6 -0
- package/dist/server/modules/order/types.d.ts +12 -0
- package/dist/server/modules/payment/index.d.ts +25 -6
- package/dist/server/modules/payment/index.js +660 -133
- package/dist/server/utils/small-ticket.d.ts +8 -5
- package/dist/server/utils/small-ticket.js +1269 -199
- package/dist/solution/BaseSales/index.d.ts +11 -2
- package/dist/solution/BaseSales/index.js +1463 -1173
- package/dist/solution/BaseSales/types.d.ts +7 -3
- package/dist/solution/BaseSales/utils/cartPromotion.js +141 -126
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +40 -25
- package/dist/solution/BaseSales/utils.js +3 -2
- package/dist/solution/BookingTicket/index.d.ts +11 -2
- package/dist/solution/BookingTicket/index.js +663 -542
- package/dist/solution/BookingTicket/types.d.ts +5 -1
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +2 -0
- package/dist/solution/BookingTicket/utils/scan/applyGlobalScan.js +338 -147
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +8 -4
- package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +6 -0
- package/dist/solution/BookingTicket/utils/scan/formatGlobalScan.js +19 -6
- package/dist/solution/ScanOrder/utils.js +3 -2
- package/dist/solution/ShopDiscount/index.d.ts +2 -0
- package/dist/solution/ShopDiscount/index.js +99 -42
- package/dist/solution/ShopDiscount/utils.d.ts +4 -2
- package/dist/solution/ShopDiscount/utils.js +43 -23
- package/dist/solution/UnifiedBookingSales/index.d.ts +2 -2
- package/dist/solution/UnifiedBookingSales/index.js +5 -5
- package/dist/utils/os-private-payload.d.ts +5 -0
- package/dist/utils/os-private-payload.js +17 -0
- package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +2 -0
- package/lib/model/strategy/adapter/walletPass/evaluator.js +2 -0
- package/lib/modules/BookingContext/index.js +3 -3
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +35 -6
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +13 -6
- package/lib/modules/Customer/index.js +5 -1
- package/lib/modules/Customer/types.d.ts +2 -0
- package/lib/modules/Discount/availability.d.ts +7 -0
- package/lib/modules/Discount/availability.js +43 -0
- package/lib/modules/Discount/entitlementPass.d.ts +34 -0
- package/lib/modules/Discount/entitlementPass.js +141 -0
- package/lib/modules/Discount/index.d.ts +2 -2
- package/lib/modules/Discount/index.js +23 -129
- package/lib/modules/Discount/types.d.ts +36 -5
- package/lib/modules/OpenData/index.d.ts +1 -1
- package/lib/modules/OpenData/index.js +11 -2
- package/lib/modules/Order/index.d.ts +33 -4
- package/lib/modules/Order/index.js +411 -81
- package/lib/modules/Order/types.d.ts +17 -0
- package/lib/modules/Order/utils/orderCollectionIdentity.js +14 -11
- package/lib/modules/Order/utils/weighedProduct.d.ts +12 -0
- package/lib/modules/Order/utils/weighedProduct.js +89 -0
- package/lib/modules/Order/utils.d.ts +14 -2
- package/lib/modules/Order/utils.js +189 -5
- package/lib/modules/Payment/index.d.ts +0 -5
- package/lib/modules/Payment/index.js +3 -28
- package/lib/modules/Payment/types.d.ts +21 -1
- package/lib/modules/Payment/types.js +1 -0
- package/lib/modules/Payment/walletpass.d.ts +1 -1
- package/lib/modules/Payment/walletpass.js +29 -9
- package/lib/modules/ProductList/index.js +14 -1
- package/lib/modules/Rules/index.d.ts +2 -2
- package/lib/modules/Rules/index.js +361 -112
- package/lib/modules/Rules/types.d.ts +6 -0
- package/lib/server/index.js +8 -5
- package/lib/server/modules/order/index.js +6 -0
- package/lib/server/modules/order/types.d.ts +12 -0
- package/lib/server/modules/payment/index.d.ts +25 -6
- package/lib/server/modules/payment/index.js +350 -78
- package/lib/server/utils/small-ticket.d.ts +8 -5
- package/lib/server/utils/small-ticket.js +1009 -121
- package/lib/solution/BaseSales/index.d.ts +11 -2
- package/lib/solution/BaseSales/index.js +164 -30
- package/lib/solution/BaseSales/types.d.ts +7 -3
- package/lib/solution/BaseSales/utils/cartPromotion.js +12 -4
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +24 -9
- package/lib/solution/BaseSales/utils.js +2 -1
- package/lib/solution/BookingTicket/index.d.ts +11 -2
- package/lib/solution/BookingTicket/index.js +103 -41
- package/lib/solution/BookingTicket/types.d.ts +5 -1
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.d.ts +2 -0
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +174 -42
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +8 -4
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.d.ts +6 -0
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +11 -3
- package/lib/solution/ScanOrder/utils.js +2 -1
- package/lib/solution/ShopDiscount/index.d.ts +2 -0
- package/lib/solution/ShopDiscount/index.js +55 -9
- package/lib/solution/ShopDiscount/utils.d.ts +4 -2
- package/lib/solution/ShopDiscount/utils.js +42 -25
- package/lib/solution/UnifiedBookingSales/index.d.ts +2 -2
- package/lib/solution/UnifiedBookingSales/index.js +5 -5
- package/lib/utils/os-private-payload.d.ts +5 -0
- package/lib/utils/os-private-payload.js +22 -0
- package/package.json +1 -1
|
@@ -5,26 +5,35 @@ var _excluded = ["custom_product_bundle_map_id"],
|
|
|
5
5
|
_excluded5 = ["collect_pax", "table_occupancy_duration", "cart_settlement_key", "cart_settlement_snapshot", "legal_currency_snapshot"];
|
|
6
6
|
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; }
|
|
7
7
|
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; }
|
|
8
|
-
function
|
|
9
|
-
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."); }
|
|
10
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
11
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
8
|
+
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; } } }; }
|
|
12
9
|
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; }
|
|
13
10
|
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; }
|
|
14
11
|
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; }
|
|
15
12
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
16
13
|
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); }
|
|
17
|
-
function
|
|
14
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
15
|
+
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."); }
|
|
16
|
+
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; } }
|
|
17
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
19
|
+
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."); }
|
|
18
20
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
21
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
22
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
19
23
|
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; }
|
|
20
24
|
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); }
|
|
21
25
|
import dayjs from "dayjs";
|
|
26
|
+
import customParseFormat from 'dayjs/plugin/customParseFormat';
|
|
22
27
|
import Decimal from 'decimal.js';
|
|
28
|
+
import { withOriginalBundleOptionPrices } from "./utils/weighedProduct";
|
|
29
|
+
import { hasManualProductDiscountFlag } from "./utils/manualProductDiscount";
|
|
23
30
|
import { getProductHolderConfig } from "../Holder/utils";
|
|
24
31
|
import { buildProductLineFingerprint, createEmptySummary } from "../../solution/ScanOrder/utils";
|
|
25
32
|
import { createUuidV4 } from "./utils/orderCollectionIdentity";
|
|
26
33
|
import { encodeSalesNotes } from "./salesNotes";
|
|
34
|
+
dayjs.extend(customParseFormat);
|
|
27
35
|
var POINT_CARD_SNAPSHOT_TAG = 'point_card';
|
|
36
|
+
var VIRTUAL_CURRENCY_SNAPSHOT_TAG = 'virtual_currency';
|
|
28
37
|
function isPlainObject(value) {
|
|
29
38
|
return Boolean(value) && _typeof(value) === 'object' && !Array.isArray(value);
|
|
30
39
|
}
|
|
@@ -53,6 +62,10 @@ export function normalizePointCardSnapshotItem(value) {
|
|
|
53
62
|
if (productId !== undefined) {
|
|
54
63
|
snapshot.product_id = productId;
|
|
55
64
|
}
|
|
65
|
+
var code = normalizeSnapshotScalar(value.code);
|
|
66
|
+
if (code !== undefined) {
|
|
67
|
+
snapshot.code = String(code).trim();
|
|
68
|
+
}
|
|
56
69
|
return snapshot;
|
|
57
70
|
}
|
|
58
71
|
export function buildPointCardSnapshotFromWalletPassList(value) {
|
|
@@ -63,6 +76,152 @@ export function buildPointCardSnapshotFromWalletPassList(value) {
|
|
|
63
76
|
return result;
|
|
64
77
|
}, []);
|
|
65
78
|
}
|
|
79
|
+
export function collectPointCardSnapshotCodeCandidates(value) {
|
|
80
|
+
if (!Array.isArray(value)) return [];
|
|
81
|
+
var codeById = new Map();
|
|
82
|
+
value.forEach(function (item) {
|
|
83
|
+
var _item$id;
|
|
84
|
+
if (!isPlainObject(item)) return;
|
|
85
|
+
var id = normalizeSnapshotScalar((_item$id = item.id) !== null && _item$id !== void 0 ? _item$id : item.voucher_id);
|
|
86
|
+
var code = normalizeSnapshotScalar(item.code);
|
|
87
|
+
if (id === undefined || code === undefined) return;
|
|
88
|
+
var identity = String(id).trim();
|
|
89
|
+
var normalizedCode = String(code).trim();
|
|
90
|
+
if (!identity || !normalizedCode || codeById.has(identity)) return;
|
|
91
|
+
codeById.set(identity, normalizedCode);
|
|
92
|
+
});
|
|
93
|
+
return _toConsumableArray(codeById).map(function (_ref) {
|
|
94
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
95
|
+
id = _ref2[0],
|
|
96
|
+
code = _ref2[1];
|
|
97
|
+
return {
|
|
98
|
+
id: id,
|
|
99
|
+
code: code
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Payment 的 WalletPass 列表包含实例 code,而 prepare/config 通常只提供
|
|
106
|
+
* 卡名称和余额。按实例 ID 仅补齐 Snapshot 缺失的 code,避免后到的运行态
|
|
107
|
+
* 数据覆盖下单时已经冻结的卡名称和余额。
|
|
108
|
+
*/
|
|
109
|
+
export function mergePointCardSnapshotCodes(snapshotsValue, walletPassesValue) {
|
|
110
|
+
var snapshots = buildPointCardSnapshotFromWalletPassList(snapshotsValue);
|
|
111
|
+
if (!snapshots.length || !Array.isArray(walletPassesValue)) return snapshots;
|
|
112
|
+
var codeById = new Map(collectPointCardSnapshotCodeCandidates(walletPassesValue).map(function (_ref3) {
|
|
113
|
+
var id = _ref3.id,
|
|
114
|
+
code = _ref3.code;
|
|
115
|
+
return [id, code];
|
|
116
|
+
}));
|
|
117
|
+
return snapshots.map(function (snapshot) {
|
|
118
|
+
if (snapshot.code) return snapshot;
|
|
119
|
+
var code = codeById.get(String(snapshot.id).trim());
|
|
120
|
+
return code ? _objectSpread(_objectSpread({}, snapshot), {}, {
|
|
121
|
+
code: code
|
|
122
|
+
}) : snapshot;
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
function normalizeSnapshotNameMap(value) {
|
|
126
|
+
if (typeof value === 'string' || typeof value === 'number') {
|
|
127
|
+
var normalizedText = String(value).trim();
|
|
128
|
+
return normalizedText ? {
|
|
129
|
+
original: normalizedText
|
|
130
|
+
} : {};
|
|
131
|
+
}
|
|
132
|
+
if (!isPlainObject(value)) return {};
|
|
133
|
+
return Object.entries(value).reduce(function (result, _ref4) {
|
|
134
|
+
var _ref5 = _slicedToArray(_ref4, 2),
|
|
135
|
+
locale = _ref5[0],
|
|
136
|
+
text = _ref5[1];
|
|
137
|
+
if (!locale.trim()) return result;
|
|
138
|
+
if (typeof text !== 'string' && typeof text !== 'number') return result;
|
|
139
|
+
var normalizedText = String(text).trim();
|
|
140
|
+
if (normalizedText) result[locale] = normalizedText;
|
|
141
|
+
return result;
|
|
142
|
+
}, {});
|
|
143
|
+
}
|
|
144
|
+
function buildVirtualCurrencySnapshotName(value) {
|
|
145
|
+
var _value$amount_format;
|
|
146
|
+
if (!isPlainObject(value)) return {};
|
|
147
|
+
var amountFormat = String((_value$amount_format = value.amount_format) !== null && _value$amount_format !== void 0 ? _value$amount_format : '').trim();
|
|
148
|
+
var configuredName;
|
|
149
|
+
if (amountFormat === '{{amount}} {{unit}}') {
|
|
150
|
+
configuredName = value.unit_label;
|
|
151
|
+
} else if (amountFormat === '{{amount}} {{sym}}') {
|
|
152
|
+
configuredName = value.symbol;
|
|
153
|
+
} else {
|
|
154
|
+
return {};
|
|
155
|
+
}
|
|
156
|
+
var configuredNameMap = normalizeSnapshotNameMap(configuredName);
|
|
157
|
+
var shortNameMap = normalizeSnapshotNameMap(value.short_name);
|
|
158
|
+
|
|
159
|
+
// The configured unit/symbol is resolved before short_name. If it already
|
|
160
|
+
// carries a global fallback, keep it authoritative so (for example)
|
|
161
|
+
// short_name.en cannot mask unit_label.original. When it only has explicit
|
|
162
|
+
// locale entries, merge short_name so other receipt locales can still fall
|
|
163
|
+
// back after the configured value has no match.
|
|
164
|
+
var hasConfiguredGlobalFallback = ['original', 'auto', 'default', 'en'].some(function (locale) {
|
|
165
|
+
return Boolean(configuredNameMap[locale]);
|
|
166
|
+
});
|
|
167
|
+
if (hasConfiguredGlobalFallback) return configuredNameMap;
|
|
168
|
+
return _objectSpread(_objectSpread({}, shortNameMap), configuredNameMap);
|
|
169
|
+
}
|
|
170
|
+
export function normalizeVirtualCurrencySnapshotItem(value) {
|
|
171
|
+
var _value$product_name2, _value$par_value2, _value$used_par_value2;
|
|
172
|
+
if (!isPlainObject(value)) return null;
|
|
173
|
+
var id = normalizeSnapshotScalar(value.id);
|
|
174
|
+
if (id === undefined) return null;
|
|
175
|
+
if (String(value.tag || '').trim().toLowerCase() !== VIRTUAL_CURRENCY_SNAPSHOT_TAG) {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
var snapshot = {
|
|
179
|
+
id: id,
|
|
180
|
+
tag: 'virtual_currency',
|
|
181
|
+
product_name: String((_value$product_name2 = value.product_name) !== null && _value$product_name2 !== void 0 ? _value$product_name2 : ''),
|
|
182
|
+
par_value: String((_value$par_value2 = value.par_value) !== null && _value$par_value2 !== void 0 ? _value$par_value2 : ''),
|
|
183
|
+
used_par_value: String((_value$used_par_value2 = value.used_par_value) !== null && _value$used_par_value2 !== void 0 ? _value$used_par_value2 : ''),
|
|
184
|
+
name: normalizeSnapshotNameMap(value.name)
|
|
185
|
+
};
|
|
186
|
+
var productId = normalizeSnapshotScalar(value.product_id);
|
|
187
|
+
if (productId !== undefined) {
|
|
188
|
+
snapshot.product_id = productId;
|
|
189
|
+
}
|
|
190
|
+
return snapshot;
|
|
191
|
+
}
|
|
192
|
+
function normalizeVirtualCurrencySnapshotList(value) {
|
|
193
|
+
if (!Array.isArray(value)) return [];
|
|
194
|
+
return value.reduce(function (result, item) {
|
|
195
|
+
var normalized = normalizeVirtualCurrencySnapshotItem(item);
|
|
196
|
+
if (normalized) result.push(normalized);
|
|
197
|
+
return result;
|
|
198
|
+
}, []);
|
|
199
|
+
}
|
|
200
|
+
export function buildVirtualCurrencySnapshotFromList(value) {
|
|
201
|
+
if (!Array.isArray(value)) return [];
|
|
202
|
+
return value.reduce(function (result, item) {
|
|
203
|
+
var _item$tag, _item$product_name, _item$par_value, _item$used_par_value;
|
|
204
|
+
if (!isPlainObject(item)) return result;
|
|
205
|
+
var id = normalizeSnapshotScalar(item.id);
|
|
206
|
+
if (id === undefined) return result;
|
|
207
|
+
var sourceTag = String((_item$tag = item.tag) !== null && _item$tag !== void 0 ? _item$tag : '').trim().toLowerCase();
|
|
208
|
+
if (sourceTag !== VIRTUAL_CURRENCY_SNAPSHOT_TAG) return result;
|
|
209
|
+
var snapshot = {
|
|
210
|
+
id: id,
|
|
211
|
+
tag: 'virtual_currency',
|
|
212
|
+
product_name: String((_item$product_name = item.product_name) !== null && _item$product_name !== void 0 ? _item$product_name : ''),
|
|
213
|
+
par_value: String((_item$par_value = item.par_value) !== null && _item$par_value !== void 0 ? _item$par_value : ''),
|
|
214
|
+
used_par_value: String((_item$used_par_value = item.used_par_value) !== null && _item$used_par_value !== void 0 ? _item$used_par_value : ''),
|
|
215
|
+
name: buildVirtualCurrencySnapshotName(item.virtual_currency_display)
|
|
216
|
+
};
|
|
217
|
+
var productId = normalizeSnapshotScalar(item.product_id);
|
|
218
|
+
if (productId !== undefined) {
|
|
219
|
+
snapshot.product_id = productId;
|
|
220
|
+
}
|
|
221
|
+
result.push(snapshot);
|
|
222
|
+
return result;
|
|
223
|
+
}, []);
|
|
224
|
+
}
|
|
66
225
|
export function normalizeOrderMetaList(value) {
|
|
67
226
|
if (value === undefined) return undefined;
|
|
68
227
|
if (!isPlainObject(value)) return undefined;
|
|
@@ -70,6 +229,9 @@ export function normalizeOrderMetaList(value) {
|
|
|
70
229
|
if (Object.prototype.hasOwnProperty.call(value, 'point_cards_snapshot')) {
|
|
71
230
|
normalized.point_cards_snapshot = buildPointCardSnapshotFromWalletPassList(value.point_cards_snapshot);
|
|
72
231
|
}
|
|
232
|
+
if (Object.prototype.hasOwnProperty.call(value, 'virtual_currency_snapshot')) {
|
|
233
|
+
normalized.virtual_currency_snapshot = normalizeVirtualCurrencySnapshotList(value.virtual_currency_snapshot);
|
|
234
|
+
}
|
|
73
235
|
if (Object.keys(normalized).length > 0) return normalized;
|
|
74
236
|
return {};
|
|
75
237
|
}
|
|
@@ -97,13 +259,13 @@ export function composeLinePrice(params) {
|
|
|
97
259
|
_step;
|
|
98
260
|
try {
|
|
99
261
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
100
|
-
var
|
|
262
|
+
var _ref6, _item$num;
|
|
101
263
|
var item = _step.value;
|
|
102
264
|
// markdown(减价)按带符号净额取减;markup/原价维持相加。
|
|
103
265
|
var signedUnit = getBundleSignedUnit(item, {
|
|
104
266
|
useOriginal: useOriginalBundle
|
|
105
267
|
});
|
|
106
|
-
var rawNum = (
|
|
268
|
+
var rawNum = (_ref6 = (_item$num = item === null || item === void 0 ? void 0 : item.num) !== null && _item$num !== void 0 ? _item$num : item === null || item === void 0 ? void 0 : item.quantity) !== null && _ref6 !== void 0 ? _ref6 : 1;
|
|
107
269
|
var num = new Decimal(Number(rawNum) || 0);
|
|
108
270
|
total = total.plus(signedUnit.times(num));
|
|
109
271
|
}
|
|
@@ -167,12 +329,12 @@ function getSafeOrderProductNum(num) {
|
|
|
167
329
|
return Math.floor(parsedNum);
|
|
168
330
|
}
|
|
169
331
|
function getOrderProductDepositUnitTotal(product) {
|
|
170
|
-
var
|
|
332
|
+
var _ref7;
|
|
171
333
|
var metadata = product.metadata || {};
|
|
172
334
|
var paymentPrice = metadata.main_product_attached_bundle_payment_price;
|
|
173
335
|
var mainSellingPrice = metadata.main_product_selling_price;
|
|
174
336
|
var fallbackPrice = product.selling_price;
|
|
175
|
-
return new Decimal(Number((
|
|
337
|
+
return new Decimal(Number((_ref7 = paymentPrice !== null && paymentPrice !== void 0 ? paymentPrice : mainSellingPrice) !== null && _ref7 !== void 0 ? _ref7 : fallbackPrice) || 0);
|
|
176
338
|
}
|
|
177
339
|
function normalizeDepositProtocols(protocols) {
|
|
178
340
|
if (!Array.isArray(protocols)) return [];
|
|
@@ -221,13 +383,13 @@ function handleOrderProductDeposit(params) {
|
|
|
221
383
|
};
|
|
222
384
|
}
|
|
223
385
|
function resolveOrderProductDepositSource(product, runtimeOrigin) {
|
|
224
|
-
var
|
|
386
|
+
var _ref8, _record$custom_deposi, _ref9, _record$variant;
|
|
225
387
|
var record = product;
|
|
226
388
|
var origin = record._origin || runtimeOrigin || {};
|
|
227
389
|
var originProduct = origin.product || {};
|
|
228
390
|
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, originProduct), origin), record), {}, {
|
|
229
|
-
custom_deposit_data: (
|
|
230
|
-
variant: (
|
|
391
|
+
custom_deposit_data: (_ref8 = (_record$custom_deposi = record.custom_deposit_data) !== null && _record$custom_deposi !== void 0 ? _record$custom_deposi : origin.custom_deposit_data) !== null && _ref8 !== void 0 ? _ref8 : originProduct.custom_deposit_data,
|
|
392
|
+
variant: (_ref9 = (_record$variant = record.variant) !== null && _record$variant !== void 0 ? _record$variant : origin.variant) !== null && _ref9 !== void 0 ? _ref9 : originProduct.variant
|
|
231
393
|
});
|
|
232
394
|
}
|
|
233
395
|
function getOrderProductDeposit(product, runtimeOrigin) {
|
|
@@ -379,12 +541,12 @@ export function isMarkdownBundle(bundle) {
|
|
|
379
541
|
* - markup(加价)/原价子商品:维持 `+(bundle_selling_price ?? price)`,行为不变。
|
|
380
542
|
*/
|
|
381
543
|
export function getBundleSignedUnit(bundle, options) {
|
|
382
|
-
var _options$useOriginal,
|
|
544
|
+
var _options$useOriginal, _ref16, _bundle$original_pric2, _bundle$bundle_sellin;
|
|
383
545
|
if (!bundle || _typeof(bundle) !== 'object') return new Decimal(0);
|
|
384
546
|
var useOriginal = (_options$useOriginal = options === null || options === void 0 ? void 0 : options.useOriginal) !== null && _options$useOriginal !== void 0 ? _options$useOriginal : false;
|
|
385
547
|
if (isMarkdownBundle(bundle)) {
|
|
386
|
-
var
|
|
387
|
-
var catalog = useOriginal ? (
|
|
548
|
+
var _ref10, _ref11, _ref12, _bundle$original_pric, _ref13, _ref14, _ref15, _bundle$custom_price;
|
|
549
|
+
var catalog = useOriginal ? (_ref10 = (_ref11 = (_ref12 = (_bundle$original_pric = bundle.original_price) !== null && _bundle$original_pric !== void 0 ? _bundle$original_pric : bundle.product_price) !== null && _ref12 !== void 0 ? _ref12 : bundle.custom_price) !== null && _ref11 !== void 0 ? _ref11 : bundle.base_price) !== null && _ref10 !== void 0 ? _ref10 : bundle.price : (_ref13 = (_ref14 = (_ref15 = (_bundle$custom_price = bundle.custom_price) !== null && _bundle$custom_price !== void 0 ? _bundle$custom_price : bundle.product_price) !== null && _ref15 !== void 0 ? _ref15 : bundle.original_price) !== null && _ref14 !== void 0 ? _ref14 : bundle.base_price) !== null && _ref13 !== void 0 ? _ref13 : bundle.price;
|
|
388
550
|
if (catalog !== undefined && catalog !== null && catalog !== '') {
|
|
389
551
|
var raw = new Decimal(Number(catalog) || 0);
|
|
390
552
|
// 负值表示价格已是「带符号净额」(如 cart/changePrice 产出的 -3.7),直接取用不再扣 option,
|
|
@@ -395,7 +557,7 @@ export function getBundleSignedUnit(bundle, options) {
|
|
|
395
557
|
// 仅剩净额(无毛价)兜底:直接取负,不再扣 option
|
|
396
558
|
return new Decimal(Number(bundle.bundle_selling_price) || 0).abs().negated();
|
|
397
559
|
}
|
|
398
|
-
var rawPrice = useOriginal ? (
|
|
560
|
+
var rawPrice = useOriginal ? (_ref16 = (_bundle$original_pric2 = bundle.original_price) !== null && _bundle$original_pric2 !== void 0 ? _bundle$original_pric2 : bundle.product_price) !== null && _ref16 !== void 0 ? _ref16 : bundle.price : (_bundle$bundle_sellin = bundle.bundle_selling_price) !== null && _bundle$bundle_sellin !== void 0 ? _bundle$bundle_sellin : bundle.price;
|
|
399
561
|
return new Decimal(Number(rawPrice) || 0);
|
|
400
562
|
}
|
|
401
563
|
|
|
@@ -499,6 +661,22 @@ function resolveSubmitBundleMapId(bundle) {
|
|
|
499
661
|
}
|
|
500
662
|
return undefined;
|
|
501
663
|
}
|
|
664
|
+
function ensureSubmitDiscountIdentity(discount) {
|
|
665
|
+
if (!discount || _typeof(discount) !== 'object' || Array.isArray(discount)) {
|
|
666
|
+
return discount;
|
|
667
|
+
}
|
|
668
|
+
var discountRecord = discount;
|
|
669
|
+
var metadata = discountRecord.metadata && _typeof(discountRecord.metadata) === 'object' && !Array.isArray(discountRecord.metadata) ? discountRecord.metadata : {};
|
|
670
|
+
var uniqueIdentificationNumber = metadata.unique_identification_number;
|
|
671
|
+
if (uniqueIdentificationNumber !== undefined && uniqueIdentificationNumber !== null && String(uniqueIdentificationNumber).trim() !== '') {
|
|
672
|
+
return discount;
|
|
673
|
+
}
|
|
674
|
+
return _objectSpread(_objectSpread({}, discountRecord), {}, {
|
|
675
|
+
metadata: _objectSpread(_objectSpread({}, metadata), {}, {
|
|
676
|
+
unique_identification_number: createUuidV4()
|
|
677
|
+
})
|
|
678
|
+
});
|
|
679
|
+
}
|
|
502
680
|
function collectSubmitProductDiscountList(product) {
|
|
503
681
|
var submitDiscountList = Array.isArray(product === null || product === void 0 ? void 0 : product.discount_list) ? _toConsumableArray(product.discount_list) : [];
|
|
504
682
|
var _iterator5 = _createForOfIteratorHelper((product === null || product === void 0 ? void 0 : product.product_bundle) || []),
|
|
@@ -534,7 +712,7 @@ function collectSubmitProductDiscountList(product) {
|
|
|
534
712
|
} finally {
|
|
535
713
|
_iterator5.f();
|
|
536
714
|
}
|
|
537
|
-
return normalizeOrderProductDiscountList(submitDiscountList);
|
|
715
|
+
return normalizeOrderProductDiscountList(submitDiscountList.map(ensureSubmitDiscountIdentity));
|
|
538
716
|
}
|
|
539
717
|
|
|
540
718
|
/**
|
|
@@ -607,14 +785,37 @@ export function resolveEffectivePerUnitDiscount(product) {
|
|
|
607
785
|
if (!Number.isFinite(originalPrice) || !Number.isFinite(finalPrice)) return fromList;
|
|
608
786
|
return fromList + (originalPrice - finalPrice);
|
|
609
787
|
}
|
|
610
|
-
export function createDefaultOrderRulesHooks() {
|
|
788
|
+
export function createDefaultOrderRulesHooks(getBookings) {
|
|
789
|
+
var getProductStartDate = function getProductStartDate(product) {
|
|
790
|
+
var _ref17, _product$metadata$uni, _product$metadata2, _ref18, _product$booking_uid, _product$metadata3, _product$metadata4, _product$metadata5, _product$metadata6;
|
|
791
|
+
var productUid = String((_ref17 = (_product$metadata$uni = (_product$metadata2 = product.metadata) === null || _product$metadata2 === void 0 ? void 0 : _product$metadata2.unique_identification_number) !== null && _product$metadata$uni !== void 0 ? _product$metadata$uni : product.unique_identification_number) !== null && _ref17 !== void 0 ? _ref17 : '');
|
|
792
|
+
var bookingUid = String((_ref18 = (_product$booking_uid = product.booking_uid) !== null && _product$booking_uid !== void 0 ? _product$booking_uid : (_product$metadata3 = product.metadata) === null || _product$metadata3 === void 0 ? void 0 : _product$metadata3.booking_uid) !== null && _ref18 !== void 0 ? _ref18 : '');
|
|
793
|
+
// 每次读取当前 bookings,覆盖改期、订单回显以及直接调用 Rules 的选券入口。
|
|
794
|
+
var bookings = (getBookings === null || getBookings === void 0 ? void 0 : getBookings()) || [];
|
|
795
|
+
var booking = bookings.find(function (item) {
|
|
796
|
+
var _ref19, _item$product_uid, _item$metadata3;
|
|
797
|
+
return productUid && String((_ref19 = (_item$product_uid = item === null || item === void 0 ? void 0 : item.product_uid) !== null && _item$product_uid !== void 0 ? _item$product_uid : item === null || item === void 0 || (_item$metadata3 = item.metadata) === null || _item$metadata3 === void 0 ? void 0 : _item$metadata3.product_uid) !== null && _ref19 !== void 0 ? _ref19 : '') === productUid;
|
|
798
|
+
}) || bookings.find(function (item) {
|
|
799
|
+
var _ref20, _item$metadata$unique, _item$metadata4;
|
|
800
|
+
return bookingUid && String((_ref20 = (_item$metadata$unique = item === null || item === void 0 || (_item$metadata4 = item.metadata) === null || _item$metadata4 === void 0 ? void 0 : _item$metadata4.unique_identification_number) !== null && _item$metadata$unique !== void 0 ? _item$metadata$unique : item === null || item === void 0 ? void 0 : item.booking_uid) !== null && _ref20 !== void 0 ? _ref20 : '') === bookingUid;
|
|
801
|
+
});
|
|
802
|
+
if (booking) {
|
|
803
|
+
// 严格解析并保留 Invalid Date,让公共时间校验拒绝缺失/非法时间,避免回退到当前时间。
|
|
804
|
+
return dayjs("".concat(booking.start_date, " ").concat(booking.start_time), ['YYYY-MM-DD HH:mm', 'YYYY-MM-DD HH:mm:ss', 'YYYY-MM-DD H:mm', 'YYYY-MM-DD H:mm:ss'], true);
|
|
805
|
+
}
|
|
806
|
+
if (getBookings && (bookingUid || product.booking_id || (_product$metadata4 = product.metadata) !== null && _product$metadata4 !== void 0 && _product$metadata4.booking_id)) {
|
|
807
|
+
return dayjs('');
|
|
808
|
+
}
|
|
809
|
+
var legacyStartDate = ((_product$metadata5 = product.metadata) === null || _product$metadata5 === void 0 ? void 0 : _product$metadata5.start_date) || ((_product$metadata6 = product.metadata) === null || _product$metadata6 === void 0 ? void 0 : _product$metadata6.startDate);
|
|
810
|
+
return legacyStartDate ? dayjs(legacyStartDate) : undefined;
|
|
811
|
+
};
|
|
611
812
|
var toUnitPriceString = function toUnitPriceString(totalLike, num) {
|
|
612
813
|
var effectiveNum = Number(num) > 0 ? Number(num) : 1;
|
|
613
814
|
return new Decimal(Number(totalLike) || 0).dividedBy(effectiveNum).toDecimalPlaces(2).toString();
|
|
614
815
|
};
|
|
615
816
|
var getBundleIdentity = function getBundleIdentity(bundle) {
|
|
616
|
-
var
|
|
617
|
-
return [(
|
|
817
|
+
var _ref21, _bundle$bundle_id, _ref22, _ref23, _bundle$bundle_produc, _ref24, _ref25, _bundle$bundle_varian, _ref26, _bundle$bundle_group_;
|
|
818
|
+
return [(_ref21 = (_bundle$bundle_id = bundle.bundle_id) !== null && _bundle$bundle_id !== void 0 ? _bundle$bundle_id : bundle.id) !== null && _ref21 !== void 0 ? _ref21 : '', (_ref22 = (_ref23 = (_bundle$bundle_produc = bundle.bundle_product_id) !== null && _bundle$bundle_produc !== void 0 ? _bundle$bundle_produc : bundle._bundle_product_id) !== null && _ref23 !== void 0 ? _ref23 : bundle.product_id) !== null && _ref22 !== void 0 ? _ref22 : '', (_ref24 = (_ref25 = (_bundle$bundle_varian = bundle.bundle_variant_id) !== null && _bundle$bundle_varian !== void 0 ? _bundle$bundle_varian : bundle.variant_id) !== null && _ref25 !== void 0 ? _ref25 : bundle.product_variant_id) !== null && _ref24 !== void 0 ? _ref24 : 0, (_ref26 = (_bundle$bundle_group_ = bundle.bundle_group_id) !== null && _bundle$bundle_group_ !== void 0 ? _bundle$bundle_group_ : bundle.group_id) !== null && _ref26 !== void 0 ? _ref26 : ''].join('|');
|
|
618
819
|
};
|
|
619
820
|
var mergeRulesBundlePrices = function mergeRulesBundlePrices(currentBundle, rulesBundle) {
|
|
620
821
|
if (!Array.isArray(rulesBundle)) return rulesBundle;
|
|
@@ -624,7 +825,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
624
825
|
currentByIdentity.set(getBundleIdentity(bundle), bundle);
|
|
625
826
|
});
|
|
626
827
|
return rulesBundle.map(function (bundle) {
|
|
627
|
-
var _bundle$price_type_ex2,
|
|
828
|
+
var _bundle$price_type_ex2, _ref27, _ref28, _current$price, _ref29, _ref30, _ref31, _current$original_pri;
|
|
628
829
|
if (!bundle || _typeof(bundle) !== 'object') return bundle;
|
|
629
830
|
var current = currentByIdentity.get(getBundleIdentity(bundle));
|
|
630
831
|
if (!current) return bundle;
|
|
@@ -633,8 +834,8 @@ export function createDefaultOrderRulesHooks() {
|
|
|
633
834
|
} : {});
|
|
634
835
|
var isProductPriceBundle = ((_bundle$price_type_ex2 = bundle.price_type_ext) !== null && _bundle$price_type_ex2 !== void 0 ? _bundle$price_type_ex2 : current.price_type_ext) === 'product_price';
|
|
635
836
|
if (!isProductPriceBundle) return bundleWithDisplayFields;
|
|
636
|
-
var sourcePrice = (
|
|
637
|
-
var originalPrice = (
|
|
837
|
+
var sourcePrice = (_ref27 = (_ref28 = (_current$price = current.price) !== null && _current$price !== void 0 ? _current$price : current.custom_price) !== null && _ref28 !== void 0 ? _ref28 : current.original_price) !== null && _ref27 !== void 0 ? _ref27 : current.bundle_selling_price;
|
|
838
|
+
var originalPrice = (_ref29 = (_ref30 = (_ref31 = (_current$original_pri = current.original_price) !== null && _current$original_pri !== void 0 ? _current$original_pri : current.product_price) !== null && _ref31 !== void 0 ? _ref31 : current.price) !== null && _ref30 !== void 0 ? _ref30 : current.custom_price) !== null && _ref29 !== void 0 ? _ref29 : sourcePrice;
|
|
638
839
|
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, bundleWithDisplayFields), sourcePrice !== undefined ? {
|
|
639
840
|
price: sourcePrice
|
|
640
841
|
} : {}), originalPrice !== undefined ? {
|
|
@@ -646,7 +847,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
646
847
|
};
|
|
647
848
|
return {
|
|
648
849
|
getProduct: function getProduct(product) {
|
|
649
|
-
var _product$
|
|
850
|
+
var _product$metadata7, _product$metadata8, _product$metadata9, _metadataAny$_promoti;
|
|
650
851
|
// source_product_price 是权威源;兜底链:source → mainSelling − options(反推)→ 行 selling_price
|
|
651
852
|
var metadataAny = product.metadata || {};
|
|
652
853
|
var optionSum = sumOptionUnitPrice(getProductSkuOptions(product));
|
|
@@ -673,7 +874,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
673
874
|
// 否则同 SKU 不同小料会在 calcDiscount 重组时互相覆盖。
|
|
674
875
|
// 不透明 identity 契约下,normalizeOrderProduct / hydrate 已保证唯一值存在;
|
|
675
876
|
// 留 fingerprint 分支仅作 Rules 单测里直接传裸 product 时的兜底。
|
|
676
|
-
_id: (_product$
|
|
877
|
+
_id: (_product$metadata7 = product.metadata) !== null && _product$metadata7 !== void 0 && _product$metadata7.unique_identification_number ? "".concat(product.product_id, "_").concat(product.product_variant_id, "_").concat(product.metadata.unique_identification_number) : "".concat(product.product_id, "_").concat(product.product_variant_id, "_").concat(buildProductLineFingerprint(getProductSkuOptions(product), product.product_bundle)),
|
|
677
878
|
// Rules 内部 getProductTotalPrice / getProductOriginTotalPrice 会各自再叠加 bundle + option,
|
|
678
879
|
// 所以这里必须喂 source-level(不含 option、不含 bundle、不含折扣)单价,避免双加 option。
|
|
679
880
|
price: sourcePrice,
|
|
@@ -685,23 +886,23 @@ export function createDefaultOrderRulesHooks() {
|
|
|
685
886
|
num: product.num || 1,
|
|
686
887
|
discount_list: product.discount_list || [],
|
|
687
888
|
bundle: product.product_bundle || [],
|
|
688
|
-
booking_id: ((_product$
|
|
889
|
+
booking_id: ((_product$metadata8 = product.metadata) === null || _product$metadata8 === void 0 ? void 0 : _product$metadata8.booking_id) || null,
|
|
689
890
|
isClient: false,
|
|
690
891
|
// 勿写死 false:否则 Rules 不会走 total≠origin_total 的手动价推断,
|
|
691
892
|
// 无券时会把 bundle 价还原成 original_price(手动改价套餐会从 20 回到 30)。
|
|
692
893
|
isManualDiscount: resolveRulesManualDiscountFlag(metadataAny),
|
|
693
|
-
holder_id: (_product$
|
|
694
|
-
startDate: (
|
|
894
|
+
holder_id: (_product$metadata9 = product.metadata) === null || _product$metadata9 === void 0 ? void 0 : _product$metadata9.holder_id,
|
|
895
|
+
startDate: getProductStartDate(product),
|
|
695
896
|
main_product_selling_price: metadataAny.main_product_selling_price !== undefined ? new Decimal(Number(metadataAny.main_product_selling_price) || 0).minus(optionSum).toDecimalPlaces(2).toString() : undefined,
|
|
696
897
|
inPromotion: ((_metadataAny$_promoti = metadataAny._promotion) === null || _metadataAny$_promoti === void 0 ? void 0 : _metadataAny$_promoti.inPromotion) === true,
|
|
697
898
|
_promotion: metadataAny._promotion
|
|
698
899
|
};
|
|
699
900
|
},
|
|
700
901
|
setProduct: function setProduct(product, values) {
|
|
701
|
-
var
|
|
702
|
-
var nextNum = Number((
|
|
902
|
+
var _ref32, _values$quantity, _ref33, _metadataAny$source_p, _product$product_sku, _values$discount_list, _values$quantity2;
|
|
903
|
+
var nextNum = Number((_ref32 = (_values$quantity = values.quantity) !== null && _values$quantity !== void 0 ? _values$quantity : product.num) !== null && _ref32 !== void 0 ? _ref32 : 1) || 1;
|
|
703
904
|
var metadataAny = product.metadata || {};
|
|
704
|
-
var existedSource = (
|
|
905
|
+
var existedSource = (_ref33 = (_metadataAny$source_p = metadataAny.source_product_price) !== null && _metadataAny$source_p !== void 0 ? _metadataAny$source_p : product.selling_price) !== null && _ref33 !== void 0 ? _ref33 : '0';
|
|
705
906
|
var nextOptions = getProductSkuOptions(product);
|
|
706
907
|
var optionSum = sumOptionUnitPrice(nextOptions);
|
|
707
908
|
|
|
@@ -724,7 +925,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
724
925
|
});
|
|
725
926
|
var composedOriginalPrice = composeLinePrice({
|
|
726
927
|
mainPrice: nextMainOriginalPrice,
|
|
727
|
-
bundle: nextBundle,
|
|
928
|
+
bundle: Number((_product$product_sku = product.product_sku) === null || _product$product_sku === void 0 ? void 0 : _product$product_sku.open_sold_weight) === 1 && hasManualProductDiscountFlag(metadataAny) ? withOriginalBundleOptionPrices(nextBundle) : nextBundle,
|
|
728
929
|
useOriginalBundle: true
|
|
729
930
|
});
|
|
730
931
|
var finalOriginalPrice = resolveManualOverrideLineOriginalPrice({
|
|
@@ -912,7 +1113,7 @@ function formatSubmitBundleItems(bundle) {
|
|
|
912
1113
|
var formatOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
913
1114
|
if (!Array.isArray(bundle)) return [];
|
|
914
1115
|
return bundle.map(function (b) {
|
|
915
|
-
var
|
|
1116
|
+
var _ref34, _rawBundle$price, _rawBundle$surcharge_, _rawBundle$num, _rawBundle$is_charge_, _rawBundle$bundle_var, _rawBundle$quantity, _rawBundle$extension_, _rawBundle$extension_2, _ref35, _rawBundle$price_type, _ref36, _rawBundle$price_type2, _rawBundle$bundle_gro, _rawBundle$bundle_id, _rawBundle$bundle_pro;
|
|
916
1117
|
var rawBundle = b && _typeof(b) === 'object' ? b : {};
|
|
917
1118
|
var existedMetadata = rawBundle.metadata && _typeof(rawBundle.metadata) === 'object' ? rawBundle.metadata : {};
|
|
918
1119
|
var _customProductBundleMapId = existedMetadata.custom_product_bundle_map_id,
|
|
@@ -923,7 +1124,7 @@ function formatSubmitBundleItems(bundle) {
|
|
|
923
1124
|
var sellingPrice = formatOptions.virtualSettlementMode ? '0.00' : getBundleSellingMagnitude(rawBundle).toFixed(2);
|
|
924
1125
|
// payment 价由整单折扣均摊层产出;缺省(无折扣)时与 selling 净额同义。
|
|
925
1126
|
var paymentPrice = formatOptions.virtualSettlementMode ? '0.00' : rawBundle.bundle_payment_price !== undefined && rawBundle.bundle_payment_price !== null && rawBundle.bundle_payment_price !== '' ? toMoneyString(rawBundle.bundle_payment_price) : sellingPrice;
|
|
926
|
-
var priceValue = formatOptions.virtualSettlementMode ? 0 : (
|
|
1127
|
+
var priceValue = formatOptions.virtualSettlementMode ? 0 : (_ref34 = (_rawBundle$price = rawBundle.price) !== null && _rawBundle$price !== void 0 ? _rawBundle$price : rawBundle.custom_price) !== null && _ref34 !== void 0 ? _ref34 : rawBundle.bundle_selling_price;
|
|
927
1128
|
var relationSurchargeIds = Array.isArray(rawBundle.relation_surcharge_ids) ? rawBundle.relation_surcharge_ids : Array.isArray(existedMetadata.relation_surcharge_ids) ? existedMetadata.relation_surcharge_ids : [];
|
|
928
1129
|
var surchargeFee = toMoneyString((_rawBundle$surcharge_ = rawBundle.surcharge_fee) !== null && _rawBundle$surcharge_ !== void 0 ? _rawBundle$surcharge_ : existedMetadata.surcharge_fee);
|
|
929
1130
|
var productDiscountDifference = toBundleNumber(existedMetadata.product_discount_difference, 0);
|
|
@@ -942,8 +1143,8 @@ function formatSubmitBundleItems(bundle) {
|
|
|
942
1143
|
extension_id: (_rawBundle$extension_ = rawBundle.extension_id) !== null && _rawBundle$extension_ !== void 0 ? _rawBundle$extension_ : 0,
|
|
943
1144
|
extension_type: (_rawBundle$extension_2 = rawBundle.extension_type) !== null && _rawBundle$extension_2 !== void 0 ? _rawBundle$extension_2 : 'normal',
|
|
944
1145
|
price: priceValue,
|
|
945
|
-
price_type: (
|
|
946
|
-
price_type_ext: (
|
|
1146
|
+
price_type: (_ref35 = (_rawBundle$price_type = rawBundle.price_type) !== null && _rawBundle$price_type !== void 0 ? _rawBundle$price_type : rawBundle.custom_price_type) !== null && _ref35 !== void 0 ? _ref35 : '',
|
|
1147
|
+
price_type_ext: (_ref36 = (_rawBundle$price_type2 = rawBundle.price_type_ext) !== null && _rawBundle$price_type2 !== void 0 ? _rawBundle$price_type2 : rawBundle.custom_price_type_ext) !== null && _ref36 !== void 0 ? _ref36 : '',
|
|
947
1148
|
bundle_selling_price: sellingPrice,
|
|
948
1149
|
bundle_payment_price: paymentPrice,
|
|
949
1150
|
option: formatSubmitOptionItems(rawBundle.option, formatOptions),
|
|
@@ -979,11 +1180,11 @@ function formatSubmitBundleItems(bundle) {
|
|
|
979
1180
|
* 法币仅做字段/metadata 裁剪;虚拟币在出站前再次执行零加价与固定单价断言。
|
|
980
1181
|
*/
|
|
981
1182
|
function normalizeSubmitProduct(product) {
|
|
982
|
-
var
|
|
1183
|
+
var _ref38, _submitProduct$bundle, _rawMetadata$product_, _rawMetadata$selected, _rawMetadata$selected2, _submitProduct$produc, _submitProduct$paymen;
|
|
983
1184
|
var formatOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
984
|
-
var
|
|
985
|
-
_runtimeUid =
|
|
986
|
-
submitProduct = _objectWithoutProperties(
|
|
1185
|
+
var _ref37 = product,
|
|
1186
|
+
_runtimeUid = _ref37.unique_identification_number,
|
|
1187
|
+
submitProduct = _objectWithoutProperties(_ref37, _excluded2);
|
|
987
1188
|
var num = submitProduct.num,
|
|
988
1189
|
_productSurchargeFee = submitProduct.surcharge_fee,
|
|
989
1190
|
_deprecatedDiscountAmount = submitProduct.discount_amount,
|
|
@@ -1000,7 +1201,7 @@ function normalizeSubmitProduct(product) {
|
|
|
1000
1201
|
// 兼容历史 BigSale 编辑链路:bundle_edit 曾被写入 metadata,
|
|
1001
1202
|
// 出站时需提升到商品顶层;套餐未编辑时也必须显式提交 0。
|
|
1002
1203
|
var hasProductBundle = Array.isArray(submitProduct.product_bundle) && submitProduct.product_bundle.length > 0;
|
|
1003
|
-
var bundleEdit = (
|
|
1204
|
+
var bundleEdit = (_ref38 = (_submitProduct$bundle = submitProduct.bundle_edit) !== null && _submitProduct$bundle !== void 0 ? _submitProduct$bundle : rawMetadata.bundle_edit) !== null && _ref38 !== void 0 ? _ref38 : hasProductBundle ? 0 : undefined;
|
|
1004
1205
|
var cleanMetadata = {};
|
|
1005
1206
|
if (rawMetadata.unique_identification_number) {
|
|
1006
1207
|
cleanMetadata.unique_identification_number = rawMetadata.unique_identification_number;
|
|
@@ -1231,7 +1432,7 @@ export function resolveSubmitOrderType(params) {
|
|
|
1231
1432
|
return 'virtual';
|
|
1232
1433
|
}
|
|
1233
1434
|
export function buildSubmitPayload(params) {
|
|
1234
|
-
var _tempOrder$metadata2, _tempOrder$customer_i, _tempOrder$country_ca, _tempOrder$phone, _tempOrder$email, _tempOrder$order_numb, _tempOrder$shop_order, _tempOrder$shop_full_,
|
|
1435
|
+
var _tempOrder$metadata2, _tempOrder$customer_i, _tempOrder$country_ca, _tempOrder$phone, _tempOrder$email, _tempOrder$order_numb, _tempOrder$shop_order, _tempOrder$shop_full_, _ref40, _tempOrder$is_price_i, _tempOrder$is_deposit, _tempOrder$_extend, _enhancedPayload$summ;
|
|
1235
1436
|
var tempOrder = params.tempOrder,
|
|
1236
1437
|
cacheId = params.cacheId,
|
|
1237
1438
|
_params$now = params.now,
|
|
@@ -1245,29 +1446,29 @@ export function buildSubmitPayload(params) {
|
|
|
1245
1446
|
var scheduleDate = tempOrder.schedule_date || tempOrder.created_at || formatDateTime(now);
|
|
1246
1447
|
var bookingUuid = createUuidV4();
|
|
1247
1448
|
var virtualSettlementMode = ((_tempOrder$metadata2 = tempOrder.metadata) === null || _tempOrder$metadata2 === void 0 || (_tempOrder$metadata2 = _tempOrder$metadata2.currency_settlement_config) === null || _tempOrder$metadata2 === void 0 ? void 0 : _tempOrder$metadata2.settlement_type) === 'virtual_currency';
|
|
1248
|
-
var
|
|
1249
|
-
_extend =
|
|
1250
|
-
_relationId =
|
|
1251
|
-
_tableFormId =
|
|
1252
|
-
_resourceId =
|
|
1253
|
-
_summary =
|
|
1254
|
-
_lastOrderInfo =
|
|
1255
|
-
_paidAmount =
|
|
1256
|
-
_shopId =
|
|
1257
|
-
_shopNote =
|
|
1258
|
-
_shopServiceType =
|
|
1259
|
-
_startTime =
|
|
1260
|
-
_customer =
|
|
1261
|
-
_discountList =
|
|
1262
|
-
_orderMetaList =
|
|
1263
|
-
_rootTaxFee =
|
|
1264
|
-
_totalAmount =
|
|
1265
|
-
_totalRefundAmount =
|
|
1266
|
-
_createDate =
|
|
1267
|
-
_holderId =
|
|
1268
|
-
_paymentStatus =
|
|
1269
|
-
_notes =
|
|
1270
|
-
tempOrderRest = _objectWithoutProperties(
|
|
1449
|
+
var _ref39 = tempOrder,
|
|
1450
|
+
_extend = _ref39._extend,
|
|
1451
|
+
_relationId = _ref39.relation_id,
|
|
1452
|
+
_tableFormId = _ref39.table_form_id,
|
|
1453
|
+
_resourceId = _ref39.resource_id,
|
|
1454
|
+
_summary = _ref39.summary,
|
|
1455
|
+
_lastOrderInfo = _ref39.lastOrderInfo,
|
|
1456
|
+
_paidAmount = _ref39.paid_amount,
|
|
1457
|
+
_shopId = _ref39.shop_id,
|
|
1458
|
+
_shopNote = _ref39.shop_note,
|
|
1459
|
+
_shopServiceType = _ref39.shop_service_type,
|
|
1460
|
+
_startTime = _ref39.start_time,
|
|
1461
|
+
_customer = _ref39.customer,
|
|
1462
|
+
_discountList = _ref39.discount_list,
|
|
1463
|
+
_orderMetaList = _ref39.order_meta_list,
|
|
1464
|
+
_rootTaxFee = _ref39.tax_fee,
|
|
1465
|
+
_totalAmount = _ref39.total_amount,
|
|
1466
|
+
_totalRefundAmount = _ref39.total_refund_amount,
|
|
1467
|
+
_createDate = _ref39.create_date,
|
|
1468
|
+
_holderId = _ref39.holder_id,
|
|
1469
|
+
_paymentStatus = _ref39.payment_status,
|
|
1470
|
+
_notes = _ref39.notes,
|
|
1471
|
+
tempOrderRest = _objectWithoutProperties(_ref39, _excluded4);
|
|
1271
1472
|
var resolvedBusinessCode = businessCode !== null && businessCode !== void 0 ? businessCode : tempOrder.business_code;
|
|
1272
1473
|
var normalizedOrderMetaList = normalizeOrderMetaList(tempOrder.order_meta_list);
|
|
1273
1474
|
var submitType = resolveSubmitOrderType({
|
|
@@ -1292,7 +1493,7 @@ export function buildSubmitPayload(params) {
|
|
|
1292
1493
|
type: submitType,
|
|
1293
1494
|
business_code: resolvedBusinessCode,
|
|
1294
1495
|
sales_channel: tempOrder.sales_channel || 'my_pisel',
|
|
1295
|
-
order_sales_channel: (
|
|
1496
|
+
order_sales_channel: (_ref40 = channel !== null && channel !== void 0 ? channel : tempOrder.order_sales_channel) !== null && _ref40 !== void 0 ? _ref40 : 'online_store',
|
|
1296
1497
|
status: tempOrder.status || 'normal'
|
|
1297
1498
|
}, params.includePaymentStatus !== false ? {
|
|
1298
1499
|
payment_status: tempOrder.payment_status || 'payment_processing'
|
|
@@ -1320,13 +1521,13 @@ export function buildSubmitPayload(params) {
|
|
|
1320
1521
|
// holder: tempOrder.holder || null,
|
|
1321
1522
|
summary: summary || tempOrder.summary || createEmptySummary(),
|
|
1322
1523
|
metadata: function () {
|
|
1323
|
-
var
|
|
1324
|
-
_collectPax =
|
|
1325
|
-
_tableOccupancyDuration =
|
|
1326
|
-
_cartSettlementKey =
|
|
1327
|
-
_cartSettlementSnapshot =
|
|
1328
|
-
_legalCurrencySnapshot =
|
|
1329
|
-
rest = _objectWithoutProperties(
|
|
1524
|
+
var _ref41 = tempOrder.metadata || {},
|
|
1525
|
+
_collectPax = _ref41.collect_pax,
|
|
1526
|
+
_tableOccupancyDuration = _ref41.table_occupancy_duration,
|
|
1527
|
+
_cartSettlementKey = _ref41.cart_settlement_key,
|
|
1528
|
+
_cartSettlementSnapshot = _ref41.cart_settlement_snapshot,
|
|
1529
|
+
_legalCurrencySnapshot = _ref41.legal_currency_snapshot,
|
|
1530
|
+
rest = _objectWithoutProperties(_ref41, _excluded5);
|
|
1330
1531
|
return _objectSpread({}, rest);
|
|
1331
1532
|
}()
|
|
1332
1533
|
}, (_tempOrder$_extend = tempOrder._extend) !== null && _tempOrder$_extend !== void 0 && (_tempOrder$_extend = _tempOrder$_extend.salesNotesState) !== null && _tempOrder$_extend !== void 0 && _tempOrder$_extend.dirty ? {
|
|
@@ -1428,11 +1629,11 @@ export function mapPaymentItemsToOrderPayments(paymentItems) {
|
|
|
1428
1629
|
*/
|
|
1429
1630
|
export function formatV1Product(products) {
|
|
1430
1631
|
return products.map(function (product) {
|
|
1431
|
-
var _product$
|
|
1632
|
+
var _product$product_sku2, _product$note;
|
|
1432
1633
|
return {
|
|
1433
1634
|
bundle: product.product_bundle,
|
|
1434
1635
|
key: product.product_id,
|
|
1435
|
-
option: ((_product$
|
|
1636
|
+
option: ((_product$product_sku2 = product.product_sku) === null || _product$product_sku2 === void 0 ? void 0 : _product$product_sku2.option) || [],
|
|
1436
1637
|
product_id: product.product_id,
|
|
1437
1638
|
product_variant_id: product.product_variant_id,
|
|
1438
1639
|
num: product.product_quantity,
|
|
@@ -1530,9 +1731,9 @@ export function clearTempOrderHolderAssignments(tempOrder) {
|
|
|
1530
1731
|
* getOrderProductLineUid({ metadata: { unique_identification_number: 'line-1' } }); // 'line-1'
|
|
1531
1732
|
*/
|
|
1532
1733
|
export function getOrderProductLineUid(product) {
|
|
1533
|
-
var _product$metadata$
|
|
1734
|
+
var _product$metadata$uni2, _product$metadata10;
|
|
1534
1735
|
if (!product || _typeof(product) !== 'object') return null;
|
|
1535
|
-
var uid = (_product$metadata$
|
|
1736
|
+
var uid = (_product$metadata$uni2 = (_product$metadata10 = product.metadata) === null || _product$metadata10 === void 0 ? void 0 : _product$metadata10.unique_identification_number) !== null && _product$metadata$uni2 !== void 0 ? _product$metadata$uni2 : product.unique_identification_number;
|
|
1536
1737
|
if (uid === undefined || uid === null || uid === '') return null;
|
|
1537
1738
|
return String(uid);
|
|
1538
1739
|
}
|
|
@@ -1543,8 +1744,8 @@ export function getRuntimeProductOrigin(tempOrder, product) {
|
|
|
1543
1744
|
return tempOrder._extend.productsByUid[uid].origin;
|
|
1544
1745
|
}
|
|
1545
1746
|
var matchedProduct = ((tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.products) || []).find(function (item) {
|
|
1546
|
-
var
|
|
1547
|
-
return item === product || getOrderProductLineUid(item) === uid || String((
|
|
1747
|
+
var _ref42, _item$product_id, _ref43, _product$product_id;
|
|
1748
|
+
return item === product || getOrderProductLineUid(item) === uid || String((_ref42 = (_item$product_id = item === null || item === void 0 ? void 0 : item.product_id) !== null && _item$product_id !== void 0 ? _item$product_id : item === null || item === void 0 ? void 0 : item.id) !== null && _ref42 !== void 0 ? _ref42 : '') === String((_ref43 = (_product$product_id = product === null || product === void 0 ? void 0 : product.product_id) !== null && _product$product_id !== void 0 ? _product$product_id : product === null || product === void 0 ? void 0 : product.id) !== null && _ref43 !== void 0 ? _ref43 : '');
|
|
1548
1749
|
});
|
|
1549
1750
|
var matchedUid = matchedProduct ? getOrderProductLineUid(matchedProduct) : '';
|
|
1550
1751
|
return matchedUid ? (tempOrder === null || tempOrder === void 0 || (_tempOrder$_extend4 = tempOrder._extend) === null || _tempOrder$_extend4 === void 0 || (_tempOrder$_extend4 = _tempOrder$_extend4.productsByUid) === null || _tempOrder$_extend4 === void 0 || (_tempOrder$_extend4 = _tempOrder$_extend4[matchedUid]) === null || _tempOrder$_extend4 === void 0 ? void 0 : _tempOrder$_extend4.origin) || null : null;
|