@pisell/pisellos 0.10.43 → 0.10.45
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/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/Customer/index.js +2 -1
- package/dist/modules/Discount/availability.d.ts +7 -0
- package/dist/modules/Discount/availability.js +49 -0
- package/dist/modules/Discount/index.d.ts +1 -3
- package/dist/modules/Discount/index.js +12 -151
- package/dist/modules/Discount/types.d.ts +6 -0
- package/dist/modules/Order/index.d.ts +41 -9
- package/dist/modules/Order/index.js +1457 -872
- 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 +4 -2
- package/dist/modules/Order/utils.js +224 -79
- package/dist/modules/Payment/cashRecommendationAlgorithm.d.ts +4 -5
- package/dist/modules/Payment/cashRecommendationAlgorithm.js +17 -367
- package/dist/modules/Product/index.d.ts +1 -1
- 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/modules/Rules/index.js +50 -16
- 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/BaseSales/types.d.ts +2 -2
- 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/ShopDiscount/index.d.ts +1 -0
- package/dist/solution/ShopDiscount/index.js +59 -22
- package/dist/solution/ShopDiscount/utils.d.ts +4 -2
- package/dist/solution/ShopDiscount/utils.js +40 -21
- 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/model/strategy/adapter/walletPass/evaluator.d.ts +2 -0
- package/lib/model/strategy/adapter/walletPass/evaluator.js +2 -0
- package/lib/modules/Customer/index.js +1 -0
- package/lib/modules/Discount/availability.d.ts +7 -0
- package/lib/modules/Discount/availability.js +43 -0
- package/lib/modules/Discount/index.d.ts +1 -3
- package/lib/modules/Discount/index.js +10 -131
- package/lib/modules/Discount/types.d.ts +6 -0
- package/lib/modules/Order/index.d.ts +41 -9
- package/lib/modules/Order/index.js +456 -69
- 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 +4 -2
- package/lib/modules/Order/utils.js +134 -3
- package/lib/modules/Payment/cashRecommendationAlgorithm.d.ts +4 -5
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +9 -354
- package/lib/modules/Product/index.d.ts +1 -1
- 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/modules/Rules/index.js +42 -5
- 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/BaseSales/types.d.ts +2 -2
- 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/ShopDiscount/index.d.ts +1 -0
- package/lib/solution/ShopDiscount/index.js +29 -3
- package/lib/solution/ShopDiscount/utils.d.ts +4 -2
- package/lib/solution/ShopDiscount/utils.js +39 -23
- 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,7 +1,7 @@
|
|
|
1
1
|
var _excluded = ["custom_product_bundle_map_id"],
|
|
2
2
|
_excluded2 = ["unique_identification_number"],
|
|
3
3
|
_excluded3 = ["num", "surcharge_fee", "discount_amount", "discount_type", "discountway", "product_discount_reason", "discount_per", "production_code"],
|
|
4
|
-
_excluded4 = ["_extend", "relation_id", "table_form_id", "resource_id", "summary", "lastOrderInfo", "paid_amount", "shop_id", "shop_note", "shop_service_type", "start_time", "customer", "discount_list", "order_meta_list", "tax_fee", "total_amount", "total_refund_amount", "create_date", "holder_id", "payment_status"],
|
|
4
|
+
_excluded4 = ["_extend", "relation_id", "table_form_id", "resource_id", "summary", "lastOrderInfo", "paid_amount", "shop_id", "shop_note", "shop_service_type", "start_time", "customer", "discount_list", "order_meta_list", "tax_fee", "total_amount", "total_refund_amount", "create_date", "holder_id", "payment_status", "notes"],
|
|
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; }
|
|
@@ -9,21 +9,29 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
|
|
|
9
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
10
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
11
11
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
12
|
+
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
13
|
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
14
|
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
15
|
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
16
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
16
17
|
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
|
|
18
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
19
|
+
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."); }
|
|
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); }
|
|
19
21
|
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; }
|
|
22
|
+
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; } }
|
|
23
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
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';
|
|
23
28
|
import { getProductHolderConfig } from "../Holder/utils";
|
|
24
29
|
import { buildProductLineFingerprint, createEmptySummary } from "../../solution/ScanOrder/utils";
|
|
25
30
|
import { createUuidV4 } from "./utils/orderCollectionIdentity";
|
|
31
|
+
import { encodeSalesNotes } from "./salesNotes";
|
|
32
|
+
dayjs.extend(customParseFormat);
|
|
26
33
|
var POINT_CARD_SNAPSHOT_TAG = 'point_card';
|
|
34
|
+
var VIRTUAL_CURRENCY_SNAPSHOT_TAG = 'virtual_currency';
|
|
27
35
|
function isPlainObject(value) {
|
|
28
36
|
return Boolean(value) && _typeof(value) === 'object' && !Array.isArray(value);
|
|
29
37
|
}
|
|
@@ -62,6 +70,106 @@ export function buildPointCardSnapshotFromWalletPassList(value) {
|
|
|
62
70
|
return result;
|
|
63
71
|
}, []);
|
|
64
72
|
}
|
|
73
|
+
function normalizeSnapshotNameMap(value) {
|
|
74
|
+
if (typeof value === 'string' || typeof value === 'number') {
|
|
75
|
+
var normalizedText = String(value).trim();
|
|
76
|
+
return normalizedText ? {
|
|
77
|
+
original: normalizedText
|
|
78
|
+
} : {};
|
|
79
|
+
}
|
|
80
|
+
if (!isPlainObject(value)) return {};
|
|
81
|
+
return Object.entries(value).reduce(function (result, _ref) {
|
|
82
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
83
|
+
locale = _ref2[0],
|
|
84
|
+
text = _ref2[1];
|
|
85
|
+
if (!locale.trim()) return result;
|
|
86
|
+
if (typeof text !== 'string' && typeof text !== 'number') return result;
|
|
87
|
+
var normalizedText = String(text).trim();
|
|
88
|
+
if (normalizedText) result[locale] = normalizedText;
|
|
89
|
+
return result;
|
|
90
|
+
}, {});
|
|
91
|
+
}
|
|
92
|
+
function buildVirtualCurrencySnapshotName(value) {
|
|
93
|
+
var _value$amount_format;
|
|
94
|
+
if (!isPlainObject(value)) return {};
|
|
95
|
+
var amountFormat = String((_value$amount_format = value.amount_format) !== null && _value$amount_format !== void 0 ? _value$amount_format : '').trim();
|
|
96
|
+
var configuredName;
|
|
97
|
+
if (amountFormat === '{{amount}} {{unit}}') {
|
|
98
|
+
configuredName = value.unit_label;
|
|
99
|
+
} else if (amountFormat === '{{amount}} {{sym}}') {
|
|
100
|
+
configuredName = value.symbol;
|
|
101
|
+
} else {
|
|
102
|
+
return {};
|
|
103
|
+
}
|
|
104
|
+
var configuredNameMap = normalizeSnapshotNameMap(configuredName);
|
|
105
|
+
var shortNameMap = normalizeSnapshotNameMap(value.short_name);
|
|
106
|
+
|
|
107
|
+
// The configured unit/symbol is resolved before short_name. If it already
|
|
108
|
+
// carries a global fallback, keep it authoritative so (for example)
|
|
109
|
+
// short_name.en cannot mask unit_label.original. When it only has explicit
|
|
110
|
+
// locale entries, merge short_name so other receipt locales can still fall
|
|
111
|
+
// back after the configured value has no match.
|
|
112
|
+
var hasConfiguredGlobalFallback = ['original', 'auto', 'default', 'en'].some(function (locale) {
|
|
113
|
+
return Boolean(configuredNameMap[locale]);
|
|
114
|
+
});
|
|
115
|
+
if (hasConfiguredGlobalFallback) return configuredNameMap;
|
|
116
|
+
return _objectSpread(_objectSpread({}, shortNameMap), configuredNameMap);
|
|
117
|
+
}
|
|
118
|
+
export function normalizeVirtualCurrencySnapshotItem(value) {
|
|
119
|
+
var _value$product_name2, _value$par_value2, _value$used_par_value2;
|
|
120
|
+
if (!isPlainObject(value)) return null;
|
|
121
|
+
var id = normalizeSnapshotScalar(value.id);
|
|
122
|
+
if (id === undefined) return null;
|
|
123
|
+
if (String(value.tag || '').trim().toLowerCase() !== VIRTUAL_CURRENCY_SNAPSHOT_TAG) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
var snapshot = {
|
|
127
|
+
id: id,
|
|
128
|
+
tag: 'virtual_currency',
|
|
129
|
+
product_name: String((_value$product_name2 = value.product_name) !== null && _value$product_name2 !== void 0 ? _value$product_name2 : ''),
|
|
130
|
+
par_value: String((_value$par_value2 = value.par_value) !== null && _value$par_value2 !== void 0 ? _value$par_value2 : ''),
|
|
131
|
+
used_par_value: String((_value$used_par_value2 = value.used_par_value) !== null && _value$used_par_value2 !== void 0 ? _value$used_par_value2 : ''),
|
|
132
|
+
name: normalizeSnapshotNameMap(value.name)
|
|
133
|
+
};
|
|
134
|
+
var productId = normalizeSnapshotScalar(value.product_id);
|
|
135
|
+
if (productId !== undefined) {
|
|
136
|
+
snapshot.product_id = productId;
|
|
137
|
+
}
|
|
138
|
+
return snapshot;
|
|
139
|
+
}
|
|
140
|
+
function normalizeVirtualCurrencySnapshotList(value) {
|
|
141
|
+
if (!Array.isArray(value)) return [];
|
|
142
|
+
return value.reduce(function (result, item) {
|
|
143
|
+
var normalized = normalizeVirtualCurrencySnapshotItem(item);
|
|
144
|
+
if (normalized) result.push(normalized);
|
|
145
|
+
return result;
|
|
146
|
+
}, []);
|
|
147
|
+
}
|
|
148
|
+
export function buildVirtualCurrencySnapshotFromList(value) {
|
|
149
|
+
if (!Array.isArray(value)) return [];
|
|
150
|
+
return value.reduce(function (result, item) {
|
|
151
|
+
var _item$tag, _item$product_name, _item$par_value, _item$used_par_value;
|
|
152
|
+
if (!isPlainObject(item)) return result;
|
|
153
|
+
var id = normalizeSnapshotScalar(item.id);
|
|
154
|
+
if (id === undefined) return result;
|
|
155
|
+
var sourceTag = String((_item$tag = item.tag) !== null && _item$tag !== void 0 ? _item$tag : '').trim().toLowerCase();
|
|
156
|
+
if (sourceTag !== VIRTUAL_CURRENCY_SNAPSHOT_TAG) return result;
|
|
157
|
+
var snapshot = {
|
|
158
|
+
id: id,
|
|
159
|
+
tag: 'virtual_currency',
|
|
160
|
+
product_name: String((_item$product_name = item.product_name) !== null && _item$product_name !== void 0 ? _item$product_name : ''),
|
|
161
|
+
par_value: String((_item$par_value = item.par_value) !== null && _item$par_value !== void 0 ? _item$par_value : ''),
|
|
162
|
+
used_par_value: String((_item$used_par_value = item.used_par_value) !== null && _item$used_par_value !== void 0 ? _item$used_par_value : ''),
|
|
163
|
+
name: buildVirtualCurrencySnapshotName(item.virtual_currency_display)
|
|
164
|
+
};
|
|
165
|
+
var productId = normalizeSnapshotScalar(item.product_id);
|
|
166
|
+
if (productId !== undefined) {
|
|
167
|
+
snapshot.product_id = productId;
|
|
168
|
+
}
|
|
169
|
+
result.push(snapshot);
|
|
170
|
+
return result;
|
|
171
|
+
}, []);
|
|
172
|
+
}
|
|
65
173
|
export function normalizeOrderMetaList(value) {
|
|
66
174
|
if (value === undefined) return undefined;
|
|
67
175
|
if (!isPlainObject(value)) return undefined;
|
|
@@ -69,6 +177,9 @@ export function normalizeOrderMetaList(value) {
|
|
|
69
177
|
if (Object.prototype.hasOwnProperty.call(value, 'point_cards_snapshot')) {
|
|
70
178
|
normalized.point_cards_snapshot = buildPointCardSnapshotFromWalletPassList(value.point_cards_snapshot);
|
|
71
179
|
}
|
|
180
|
+
if (Object.prototype.hasOwnProperty.call(value, 'virtual_currency_snapshot')) {
|
|
181
|
+
normalized.virtual_currency_snapshot = normalizeVirtualCurrencySnapshotList(value.virtual_currency_snapshot);
|
|
182
|
+
}
|
|
72
183
|
if (Object.keys(normalized).length > 0) return normalized;
|
|
73
184
|
return {};
|
|
74
185
|
}
|
|
@@ -96,13 +207,13 @@ export function composeLinePrice(params) {
|
|
|
96
207
|
_step;
|
|
97
208
|
try {
|
|
98
209
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
99
|
-
var
|
|
210
|
+
var _ref3, _item$num;
|
|
100
211
|
var item = _step.value;
|
|
101
212
|
// markdown(减价)按带符号净额取减;markup/原价维持相加。
|
|
102
213
|
var signedUnit = getBundleSignedUnit(item, {
|
|
103
214
|
useOriginal: useOriginalBundle
|
|
104
215
|
});
|
|
105
|
-
var rawNum = (
|
|
216
|
+
var rawNum = (_ref3 = (_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 && _ref3 !== void 0 ? _ref3 : 1;
|
|
106
217
|
var num = new Decimal(Number(rawNum) || 0);
|
|
107
218
|
total = total.plus(signedUnit.times(num));
|
|
108
219
|
}
|
|
@@ -166,12 +277,12 @@ function getSafeOrderProductNum(num) {
|
|
|
166
277
|
return Math.floor(parsedNum);
|
|
167
278
|
}
|
|
168
279
|
function getOrderProductDepositUnitTotal(product) {
|
|
169
|
-
var
|
|
280
|
+
var _ref4;
|
|
170
281
|
var metadata = product.metadata || {};
|
|
171
282
|
var paymentPrice = metadata.main_product_attached_bundle_payment_price;
|
|
172
283
|
var mainSellingPrice = metadata.main_product_selling_price;
|
|
173
284
|
var fallbackPrice = product.selling_price;
|
|
174
|
-
return new Decimal(Number((
|
|
285
|
+
return new Decimal(Number((_ref4 = paymentPrice !== null && paymentPrice !== void 0 ? paymentPrice : mainSellingPrice) !== null && _ref4 !== void 0 ? _ref4 : fallbackPrice) || 0);
|
|
175
286
|
}
|
|
176
287
|
function normalizeDepositProtocols(protocols) {
|
|
177
288
|
if (!Array.isArray(protocols)) return [];
|
|
@@ -220,13 +331,13 @@ function handleOrderProductDeposit(params) {
|
|
|
220
331
|
};
|
|
221
332
|
}
|
|
222
333
|
function resolveOrderProductDepositSource(product, runtimeOrigin) {
|
|
223
|
-
var
|
|
334
|
+
var _ref5, _record$custom_deposi, _ref6, _record$variant;
|
|
224
335
|
var record = product;
|
|
225
336
|
var origin = record._origin || runtimeOrigin || {};
|
|
226
337
|
var originProduct = origin.product || {};
|
|
227
338
|
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, originProduct), origin), record), {}, {
|
|
228
|
-
custom_deposit_data: (
|
|
229
|
-
variant: (
|
|
339
|
+
custom_deposit_data: (_ref5 = (_record$custom_deposi = record.custom_deposit_data) !== null && _record$custom_deposi !== void 0 ? _record$custom_deposi : origin.custom_deposit_data) !== null && _ref5 !== void 0 ? _ref5 : originProduct.custom_deposit_data,
|
|
340
|
+
variant: (_ref6 = (_record$variant = record.variant) !== null && _record$variant !== void 0 ? _record$variant : origin.variant) !== null && _ref6 !== void 0 ? _ref6 : originProduct.variant
|
|
230
341
|
});
|
|
231
342
|
}
|
|
232
343
|
function getOrderProductDeposit(product, runtimeOrigin) {
|
|
@@ -378,12 +489,12 @@ export function isMarkdownBundle(bundle) {
|
|
|
378
489
|
* - markup(加价)/原价子商品:维持 `+(bundle_selling_price ?? price)`,行为不变。
|
|
379
490
|
*/
|
|
380
491
|
export function getBundleSignedUnit(bundle, options) {
|
|
381
|
-
var _options$useOriginal,
|
|
492
|
+
var _options$useOriginal, _ref13, _bundle$original_pric2, _bundle$bundle_sellin;
|
|
382
493
|
if (!bundle || _typeof(bundle) !== 'object') return new Decimal(0);
|
|
383
494
|
var useOriginal = (_options$useOriginal = options === null || options === void 0 ? void 0 : options.useOriginal) !== null && _options$useOriginal !== void 0 ? _options$useOriginal : false;
|
|
384
495
|
if (isMarkdownBundle(bundle)) {
|
|
385
|
-
var
|
|
386
|
-
var catalog = useOriginal ? (
|
|
496
|
+
var _ref7, _ref8, _ref9, _bundle$original_pric, _ref10, _ref11, _ref12, _bundle$custom_price;
|
|
497
|
+
var catalog = useOriginal ? (_ref7 = (_ref8 = (_ref9 = (_bundle$original_pric = bundle.original_price) !== null && _bundle$original_pric !== void 0 ? _bundle$original_pric : bundle.product_price) !== null && _ref9 !== void 0 ? _ref9 : bundle.custom_price) !== null && _ref8 !== void 0 ? _ref8 : bundle.base_price) !== null && _ref7 !== void 0 ? _ref7 : bundle.price : (_ref10 = (_ref11 = (_ref12 = (_bundle$custom_price = bundle.custom_price) !== null && _bundle$custom_price !== void 0 ? _bundle$custom_price : bundle.product_price) !== null && _ref12 !== void 0 ? _ref12 : bundle.original_price) !== null && _ref11 !== void 0 ? _ref11 : bundle.base_price) !== null && _ref10 !== void 0 ? _ref10 : bundle.price;
|
|
387
498
|
if (catalog !== undefined && catalog !== null && catalog !== '') {
|
|
388
499
|
var raw = new Decimal(Number(catalog) || 0);
|
|
389
500
|
// 负值表示价格已是「带符号净额」(如 cart/changePrice 产出的 -3.7),直接取用不再扣 option,
|
|
@@ -394,7 +505,7 @@ export function getBundleSignedUnit(bundle, options) {
|
|
|
394
505
|
// 仅剩净额(无毛价)兜底:直接取负,不再扣 option
|
|
395
506
|
return new Decimal(Number(bundle.bundle_selling_price) || 0).abs().negated();
|
|
396
507
|
}
|
|
397
|
-
var rawPrice = useOriginal ? (
|
|
508
|
+
var rawPrice = useOriginal ? (_ref13 = (_bundle$original_pric2 = bundle.original_price) !== null && _bundle$original_pric2 !== void 0 ? _bundle$original_pric2 : bundle.product_price) !== null && _ref13 !== void 0 ? _ref13 : bundle.price : (_bundle$bundle_sellin = bundle.bundle_selling_price) !== null && _bundle$bundle_sellin !== void 0 ? _bundle$bundle_sellin : bundle.price;
|
|
398
509
|
return new Decimal(Number(rawPrice) || 0);
|
|
399
510
|
}
|
|
400
511
|
|
|
@@ -622,14 +733,37 @@ export function resolveEffectivePerUnitDiscount(product) {
|
|
|
622
733
|
if (!Number.isFinite(originalPrice) || !Number.isFinite(finalPrice)) return fromList;
|
|
623
734
|
return fromList + (originalPrice - finalPrice);
|
|
624
735
|
}
|
|
625
|
-
export function createDefaultOrderRulesHooks() {
|
|
736
|
+
export function createDefaultOrderRulesHooks(getBookings) {
|
|
737
|
+
var getProductStartDate = function getProductStartDate(product) {
|
|
738
|
+
var _ref14, _product$metadata$uni, _product$metadata2, _ref15, _product$booking_uid, _product$metadata3, _product$metadata4, _product$metadata5, _product$metadata6;
|
|
739
|
+
var productUid = String((_ref14 = (_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 && _ref14 !== void 0 ? _ref14 : '');
|
|
740
|
+
var bookingUid = String((_ref15 = (_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 && _ref15 !== void 0 ? _ref15 : '');
|
|
741
|
+
// 每次读取当前 bookings,覆盖改期、订单回显以及直接调用 Rules 的选券入口。
|
|
742
|
+
var bookings = (getBookings === null || getBookings === void 0 ? void 0 : getBookings()) || [];
|
|
743
|
+
var booking = bookings.find(function (item) {
|
|
744
|
+
var _ref16, _item$product_uid, _item$metadata3;
|
|
745
|
+
return productUid && String((_ref16 = (_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 && _ref16 !== void 0 ? _ref16 : '') === productUid;
|
|
746
|
+
}) || bookings.find(function (item) {
|
|
747
|
+
var _ref17, _item$metadata$unique, _item$metadata4;
|
|
748
|
+
return bookingUid && String((_ref17 = (_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 && _ref17 !== void 0 ? _ref17 : '') === bookingUid;
|
|
749
|
+
});
|
|
750
|
+
if (booking) {
|
|
751
|
+
// 严格解析并保留 Invalid Date,让公共时间校验拒绝缺失/非法时间,避免回退到当前时间。
|
|
752
|
+
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);
|
|
753
|
+
}
|
|
754
|
+
if (getBookings && (bookingUid || product.booking_id || (_product$metadata4 = product.metadata) !== null && _product$metadata4 !== void 0 && _product$metadata4.booking_id)) {
|
|
755
|
+
return dayjs('');
|
|
756
|
+
}
|
|
757
|
+
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);
|
|
758
|
+
return legacyStartDate ? dayjs(legacyStartDate) : undefined;
|
|
759
|
+
};
|
|
626
760
|
var toUnitPriceString = function toUnitPriceString(totalLike, num) {
|
|
627
761
|
var effectiveNum = Number(num) > 0 ? Number(num) : 1;
|
|
628
762
|
return new Decimal(Number(totalLike) || 0).dividedBy(effectiveNum).toDecimalPlaces(2).toString();
|
|
629
763
|
};
|
|
630
764
|
var getBundleIdentity = function getBundleIdentity(bundle) {
|
|
631
|
-
var
|
|
632
|
-
return [(
|
|
765
|
+
var _ref18, _bundle$bundle_id, _ref19, _ref20, _bundle$bundle_produc, _ref21, _ref22, _bundle$bundle_varian, _ref23, _bundle$bundle_group_;
|
|
766
|
+
return [(_ref18 = (_bundle$bundle_id = bundle.bundle_id) !== null && _bundle$bundle_id !== void 0 ? _bundle$bundle_id : bundle.id) !== null && _ref18 !== void 0 ? _ref18 : '', (_ref19 = (_ref20 = (_bundle$bundle_produc = bundle.bundle_product_id) !== null && _bundle$bundle_produc !== void 0 ? _bundle$bundle_produc : bundle._bundle_product_id) !== null && _ref20 !== void 0 ? _ref20 : bundle.product_id) !== null && _ref19 !== void 0 ? _ref19 : '', (_ref21 = (_ref22 = (_bundle$bundle_varian = bundle.bundle_variant_id) !== null && _bundle$bundle_varian !== void 0 ? _bundle$bundle_varian : bundle.variant_id) !== null && _ref22 !== void 0 ? _ref22 : bundle.product_variant_id) !== null && _ref21 !== void 0 ? _ref21 : 0, (_ref23 = (_bundle$bundle_group_ = bundle.bundle_group_id) !== null && _bundle$bundle_group_ !== void 0 ? _bundle$bundle_group_ : bundle.group_id) !== null && _ref23 !== void 0 ? _ref23 : ''].join('|');
|
|
633
767
|
};
|
|
634
768
|
var mergeRulesBundlePrices = function mergeRulesBundlePrices(currentBundle, rulesBundle) {
|
|
635
769
|
if (!Array.isArray(rulesBundle)) return rulesBundle;
|
|
@@ -639,7 +773,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
639
773
|
currentByIdentity.set(getBundleIdentity(bundle), bundle);
|
|
640
774
|
});
|
|
641
775
|
return rulesBundle.map(function (bundle) {
|
|
642
|
-
var _bundle$price_type_ex2,
|
|
776
|
+
var _bundle$price_type_ex2, _ref24, _ref25, _current$price, _ref26, _ref27, _ref28, _current$original_pri;
|
|
643
777
|
if (!bundle || _typeof(bundle) !== 'object') return bundle;
|
|
644
778
|
var current = currentByIdentity.get(getBundleIdentity(bundle));
|
|
645
779
|
if (!current) return bundle;
|
|
@@ -648,8 +782,8 @@ export function createDefaultOrderRulesHooks() {
|
|
|
648
782
|
} : {});
|
|
649
783
|
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';
|
|
650
784
|
if (!isProductPriceBundle) return bundleWithDisplayFields;
|
|
651
|
-
var sourcePrice = (
|
|
652
|
-
var originalPrice = (
|
|
785
|
+
var sourcePrice = (_ref24 = (_ref25 = (_current$price = current.price) !== null && _current$price !== void 0 ? _current$price : current.custom_price) !== null && _ref25 !== void 0 ? _ref25 : current.original_price) !== null && _ref24 !== void 0 ? _ref24 : current.bundle_selling_price;
|
|
786
|
+
var originalPrice = (_ref26 = (_ref27 = (_ref28 = (_current$original_pri = current.original_price) !== null && _current$original_pri !== void 0 ? _current$original_pri : current.product_price) !== null && _ref28 !== void 0 ? _ref28 : current.price) !== null && _ref27 !== void 0 ? _ref27 : current.custom_price) !== null && _ref26 !== void 0 ? _ref26 : sourcePrice;
|
|
653
787
|
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, bundleWithDisplayFields), sourcePrice !== undefined ? {
|
|
654
788
|
price: sourcePrice
|
|
655
789
|
} : {}), originalPrice !== undefined ? {
|
|
@@ -661,7 +795,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
661
795
|
};
|
|
662
796
|
return {
|
|
663
797
|
getProduct: function getProduct(product) {
|
|
664
|
-
var _product$
|
|
798
|
+
var _product$metadata7, _product$metadata8, _product$metadata9, _metadataAny$_promoti;
|
|
665
799
|
// source_product_price 是权威源;兜底链:source → mainSelling − options(反推)→ 行 selling_price
|
|
666
800
|
var metadataAny = product.metadata || {};
|
|
667
801
|
var optionSum = sumOptionUnitPrice(getProductSkuOptions(product));
|
|
@@ -688,7 +822,7 @@ export function createDefaultOrderRulesHooks() {
|
|
|
688
822
|
// 否则同 SKU 不同小料会在 calcDiscount 重组时互相覆盖。
|
|
689
823
|
// 不透明 identity 契约下,normalizeOrderProduct / hydrate 已保证唯一值存在;
|
|
690
824
|
// 留 fingerprint 分支仅作 Rules 单测里直接传裸 product 时的兜底。
|
|
691
|
-
_id: (_product$
|
|
825
|
+
_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)),
|
|
692
826
|
// Rules 内部 getProductTotalPrice / getProductOriginTotalPrice 会各自再叠加 bundle + option,
|
|
693
827
|
// 所以这里必须喂 source-level(不含 option、不含 bundle、不含折扣)单价,避免双加 option。
|
|
694
828
|
price: sourcePrice,
|
|
@@ -700,23 +834,23 @@ export function createDefaultOrderRulesHooks() {
|
|
|
700
834
|
num: product.num || 1,
|
|
701
835
|
discount_list: product.discount_list || [],
|
|
702
836
|
bundle: product.product_bundle || [],
|
|
703
|
-
booking_id: ((_product$
|
|
837
|
+
booking_id: ((_product$metadata8 = product.metadata) === null || _product$metadata8 === void 0 ? void 0 : _product$metadata8.booking_id) || null,
|
|
704
838
|
isClient: false,
|
|
705
839
|
// 勿写死 false:否则 Rules 不会走 total≠origin_total 的手动价推断,
|
|
706
840
|
// 无券时会把 bundle 价还原成 original_price(手动改价套餐会从 20 回到 30)。
|
|
707
841
|
isManualDiscount: resolveRulesManualDiscountFlag(metadataAny),
|
|
708
|
-
holder_id: (_product$
|
|
709
|
-
startDate: (
|
|
842
|
+
holder_id: (_product$metadata9 = product.metadata) === null || _product$metadata9 === void 0 ? void 0 : _product$metadata9.holder_id,
|
|
843
|
+
startDate: getProductStartDate(product),
|
|
710
844
|
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,
|
|
711
845
|
inPromotion: ((_metadataAny$_promoti = metadataAny._promotion) === null || _metadataAny$_promoti === void 0 ? void 0 : _metadataAny$_promoti.inPromotion) === true,
|
|
712
846
|
_promotion: metadataAny._promotion
|
|
713
847
|
};
|
|
714
848
|
},
|
|
715
849
|
setProduct: function setProduct(product, values) {
|
|
716
|
-
var
|
|
717
|
-
var nextNum = Number((
|
|
850
|
+
var _ref29, _values$quantity, _ref30, _metadataAny$source_p, _values$discount_list, _values$quantity2;
|
|
851
|
+
var nextNum = Number((_ref29 = (_values$quantity = values.quantity) !== null && _values$quantity !== void 0 ? _values$quantity : product.num) !== null && _ref29 !== void 0 ? _ref29 : 1) || 1;
|
|
718
852
|
var metadataAny = product.metadata || {};
|
|
719
|
-
var existedSource = (
|
|
853
|
+
var existedSource = (_ref30 = (_metadataAny$source_p = metadataAny.source_product_price) !== null && _metadataAny$source_p !== void 0 ? _metadataAny$source_p : product.selling_price) !== null && _ref30 !== void 0 ? _ref30 : '0';
|
|
720
854
|
var nextOptions = getProductSkuOptions(product);
|
|
721
855
|
var optionSum = sumOptionUnitPrice(nextOptions);
|
|
722
856
|
|
|
@@ -926,7 +1060,7 @@ function formatSubmitBundleItems(bundle) {
|
|
|
926
1060
|
var formatOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
927
1061
|
if (!Array.isArray(bundle)) return [];
|
|
928
1062
|
return bundle.map(function (b) {
|
|
929
|
-
var
|
|
1063
|
+
var _ref31, _rawBundle$price, _rawBundle$surcharge_, _rawBundle$num, _rawBundle$is_charge_, _rawBundle$bundle_var, _rawBundle$quantity, _rawBundle$extension_, _rawBundle$extension_2, _ref32, _rawBundle$price_type, _ref33, _rawBundle$price_type2, _rawBundle$bundle_gro, _rawBundle$bundle_id, _rawBundle$bundle_pro;
|
|
930
1064
|
var rawBundle = b && _typeof(b) === 'object' ? b : {};
|
|
931
1065
|
var existedMetadata = rawBundle.metadata && _typeof(rawBundle.metadata) === 'object' ? rawBundle.metadata : {};
|
|
932
1066
|
var _customProductBundleMapId = existedMetadata.custom_product_bundle_map_id,
|
|
@@ -937,7 +1071,7 @@ function formatSubmitBundleItems(bundle) {
|
|
|
937
1071
|
var sellingPrice = formatOptions.virtualSettlementMode ? '0.00' : getBundleSellingMagnitude(rawBundle).toFixed(2);
|
|
938
1072
|
// payment 价由整单折扣均摊层产出;缺省(无折扣)时与 selling 净额同义。
|
|
939
1073
|
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;
|
|
940
|
-
var priceValue = formatOptions.virtualSettlementMode ? 0 : (
|
|
1074
|
+
var priceValue = formatOptions.virtualSettlementMode ? 0 : (_ref31 = (_rawBundle$price = rawBundle.price) !== null && _rawBundle$price !== void 0 ? _rawBundle$price : rawBundle.custom_price) !== null && _ref31 !== void 0 ? _ref31 : rawBundle.bundle_selling_price;
|
|
941
1075
|
var relationSurchargeIds = Array.isArray(rawBundle.relation_surcharge_ids) ? rawBundle.relation_surcharge_ids : Array.isArray(existedMetadata.relation_surcharge_ids) ? existedMetadata.relation_surcharge_ids : [];
|
|
942
1076
|
var surchargeFee = toMoneyString((_rawBundle$surcharge_ = rawBundle.surcharge_fee) !== null && _rawBundle$surcharge_ !== void 0 ? _rawBundle$surcharge_ : existedMetadata.surcharge_fee);
|
|
943
1077
|
var productDiscountDifference = toBundleNumber(existedMetadata.product_discount_difference, 0);
|
|
@@ -956,8 +1090,8 @@ function formatSubmitBundleItems(bundle) {
|
|
|
956
1090
|
extension_id: (_rawBundle$extension_ = rawBundle.extension_id) !== null && _rawBundle$extension_ !== void 0 ? _rawBundle$extension_ : 0,
|
|
957
1091
|
extension_type: (_rawBundle$extension_2 = rawBundle.extension_type) !== null && _rawBundle$extension_2 !== void 0 ? _rawBundle$extension_2 : 'normal',
|
|
958
1092
|
price: priceValue,
|
|
959
|
-
price_type: (
|
|
960
|
-
price_type_ext: (
|
|
1093
|
+
price_type: (_ref32 = (_rawBundle$price_type = rawBundle.price_type) !== null && _rawBundle$price_type !== void 0 ? _rawBundle$price_type : rawBundle.custom_price_type) !== null && _ref32 !== void 0 ? _ref32 : '',
|
|
1094
|
+
price_type_ext: (_ref33 = (_rawBundle$price_type2 = rawBundle.price_type_ext) !== null && _rawBundle$price_type2 !== void 0 ? _rawBundle$price_type2 : rawBundle.custom_price_type_ext) !== null && _ref33 !== void 0 ? _ref33 : '',
|
|
961
1095
|
bundle_selling_price: sellingPrice,
|
|
962
1096
|
bundle_payment_price: paymentPrice,
|
|
963
1097
|
option: formatSubmitOptionItems(rawBundle.option, formatOptions),
|
|
@@ -993,11 +1127,11 @@ function formatSubmitBundleItems(bundle) {
|
|
|
993
1127
|
* 法币仅做字段/metadata 裁剪;虚拟币在出站前再次执行零加价与固定单价断言。
|
|
994
1128
|
*/
|
|
995
1129
|
function normalizeSubmitProduct(product) {
|
|
996
|
-
var
|
|
1130
|
+
var _ref35, _submitProduct$bundle, _rawMetadata$product_, _rawMetadata$selected, _rawMetadata$selected2, _submitProduct$produc, _submitProduct$paymen;
|
|
997
1131
|
var formatOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
998
|
-
var
|
|
999
|
-
_runtimeUid =
|
|
1000
|
-
submitProduct = _objectWithoutProperties(
|
|
1132
|
+
var _ref34 = product,
|
|
1133
|
+
_runtimeUid = _ref34.unique_identification_number,
|
|
1134
|
+
submitProduct = _objectWithoutProperties(_ref34, _excluded2);
|
|
1001
1135
|
var num = submitProduct.num,
|
|
1002
1136
|
_productSurchargeFee = submitProduct.surcharge_fee,
|
|
1003
1137
|
_deprecatedDiscountAmount = submitProduct.discount_amount,
|
|
@@ -1014,7 +1148,7 @@ function normalizeSubmitProduct(product) {
|
|
|
1014
1148
|
// 兼容历史 BigSale 编辑链路:bundle_edit 曾被写入 metadata,
|
|
1015
1149
|
// 出站时需提升到商品顶层;套餐未编辑时也必须显式提交 0。
|
|
1016
1150
|
var hasProductBundle = Array.isArray(submitProduct.product_bundle) && submitProduct.product_bundle.length > 0;
|
|
1017
|
-
var bundleEdit = (
|
|
1151
|
+
var bundleEdit = (_ref35 = (_submitProduct$bundle = submitProduct.bundle_edit) !== null && _submitProduct$bundle !== void 0 ? _submitProduct$bundle : rawMetadata.bundle_edit) !== null && _ref35 !== void 0 ? _ref35 : hasProductBundle ? 0 : undefined;
|
|
1018
1152
|
var cleanMetadata = {};
|
|
1019
1153
|
if (rawMetadata.unique_identification_number) {
|
|
1020
1154
|
cleanMetadata.unique_identification_number = rawMetadata.unique_identification_number;
|
|
@@ -1183,6 +1317,7 @@ export function createDefaultTempOrder(params) {
|
|
|
1183
1317
|
request_unique_idempotency_token: '',
|
|
1184
1318
|
vouchers: [],
|
|
1185
1319
|
products: [],
|
|
1320
|
+
notes: [],
|
|
1186
1321
|
bookings: [],
|
|
1187
1322
|
payments: [],
|
|
1188
1323
|
surcharges: [],
|
|
@@ -1192,7 +1327,11 @@ export function createDefaultTempOrder(params) {
|
|
|
1192
1327
|
holder: null,
|
|
1193
1328
|
metadata: {},
|
|
1194
1329
|
_extend: {
|
|
1195
|
-
productsByUid: {}
|
|
1330
|
+
productsByUid: {},
|
|
1331
|
+
salesNotesState: {
|
|
1332
|
+
loaded: true,
|
|
1333
|
+
dirty: false
|
|
1334
|
+
}
|
|
1196
1335
|
}
|
|
1197
1336
|
};
|
|
1198
1337
|
}
|
|
@@ -1240,7 +1379,7 @@ export function resolveSubmitOrderType(params) {
|
|
|
1240
1379
|
return 'virtual';
|
|
1241
1380
|
}
|
|
1242
1381
|
export function buildSubmitPayload(params) {
|
|
1243
|
-
var _tempOrder$metadata2, _tempOrder$customer_i, _tempOrder$country_ca, _tempOrder$phone, _tempOrder$email, _tempOrder$order_numb, _tempOrder$shop_order, _tempOrder$shop_full_,
|
|
1382
|
+
var _tempOrder$metadata2, _tempOrder$customer_i, _tempOrder$country_ca, _tempOrder$phone, _tempOrder$email, _tempOrder$order_numb, _tempOrder$shop_order, _tempOrder$shop_full_, _ref37, _tempOrder$is_price_i, _tempOrder$is_deposit, _tempOrder$_extend, _enhancedPayload$summ;
|
|
1244
1383
|
var tempOrder = params.tempOrder,
|
|
1245
1384
|
cacheId = params.cacheId,
|
|
1246
1385
|
_params$now = params.now,
|
|
@@ -1254,28 +1393,29 @@ export function buildSubmitPayload(params) {
|
|
|
1254
1393
|
var scheduleDate = tempOrder.schedule_date || tempOrder.created_at || formatDateTime(now);
|
|
1255
1394
|
var bookingUuid = createUuidV4();
|
|
1256
1395
|
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';
|
|
1257
|
-
var
|
|
1258
|
-
_extend =
|
|
1259
|
-
_relationId =
|
|
1260
|
-
_tableFormId =
|
|
1261
|
-
_resourceId =
|
|
1262
|
-
_summary =
|
|
1263
|
-
_lastOrderInfo =
|
|
1264
|
-
_paidAmount =
|
|
1265
|
-
_shopId =
|
|
1266
|
-
_shopNote =
|
|
1267
|
-
_shopServiceType =
|
|
1268
|
-
_startTime =
|
|
1269
|
-
_customer =
|
|
1270
|
-
_discountList =
|
|
1271
|
-
_orderMetaList =
|
|
1272
|
-
_rootTaxFee =
|
|
1273
|
-
_totalAmount =
|
|
1274
|
-
_totalRefundAmount =
|
|
1275
|
-
_createDate =
|
|
1276
|
-
_holderId =
|
|
1277
|
-
_paymentStatus =
|
|
1278
|
-
|
|
1396
|
+
var _ref36 = tempOrder,
|
|
1397
|
+
_extend = _ref36._extend,
|
|
1398
|
+
_relationId = _ref36.relation_id,
|
|
1399
|
+
_tableFormId = _ref36.table_form_id,
|
|
1400
|
+
_resourceId = _ref36.resource_id,
|
|
1401
|
+
_summary = _ref36.summary,
|
|
1402
|
+
_lastOrderInfo = _ref36.lastOrderInfo,
|
|
1403
|
+
_paidAmount = _ref36.paid_amount,
|
|
1404
|
+
_shopId = _ref36.shop_id,
|
|
1405
|
+
_shopNote = _ref36.shop_note,
|
|
1406
|
+
_shopServiceType = _ref36.shop_service_type,
|
|
1407
|
+
_startTime = _ref36.start_time,
|
|
1408
|
+
_customer = _ref36.customer,
|
|
1409
|
+
_discountList = _ref36.discount_list,
|
|
1410
|
+
_orderMetaList = _ref36.order_meta_list,
|
|
1411
|
+
_rootTaxFee = _ref36.tax_fee,
|
|
1412
|
+
_totalAmount = _ref36.total_amount,
|
|
1413
|
+
_totalRefundAmount = _ref36.total_refund_amount,
|
|
1414
|
+
_createDate = _ref36.create_date,
|
|
1415
|
+
_holderId = _ref36.holder_id,
|
|
1416
|
+
_paymentStatus = _ref36.payment_status,
|
|
1417
|
+
_notes = _ref36.notes,
|
|
1418
|
+
tempOrderRest = _objectWithoutProperties(_ref36, _excluded4);
|
|
1279
1419
|
var resolvedBusinessCode = businessCode !== null && businessCode !== void 0 ? businessCode : tempOrder.business_code;
|
|
1280
1420
|
var normalizedOrderMetaList = normalizeOrderMetaList(tempOrder.order_meta_list);
|
|
1281
1421
|
var submitType = resolveSubmitOrderType({
|
|
@@ -1286,7 +1426,7 @@ export function buildSubmitPayload(params) {
|
|
|
1286
1426
|
tempOrderBusinessCode: tempOrder.business_code,
|
|
1287
1427
|
bookings: tempOrder.bookings
|
|
1288
1428
|
});
|
|
1289
|
-
var payload = _objectSpread(_objectSpread(_objectSpread({}, tempOrderRest), {}, {
|
|
1429
|
+
var payload = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, tempOrderRest), {}, {
|
|
1290
1430
|
customer_id: (_tempOrder$customer_i = tempOrder.customer_id) !== null && _tempOrder$customer_i !== void 0 ? _tempOrder$customer_i : 1,
|
|
1291
1431
|
customer_name: tempOrder.customer_name || 'Walk-In',
|
|
1292
1432
|
country_calling_code: String((_tempOrder$country_ca = tempOrder.country_calling_code) !== null && _tempOrder$country_ca !== void 0 ? _tempOrder$country_ca : ''),
|
|
@@ -1300,7 +1440,7 @@ export function buildSubmitPayload(params) {
|
|
|
1300
1440
|
type: submitType,
|
|
1301
1441
|
business_code: resolvedBusinessCode,
|
|
1302
1442
|
sales_channel: tempOrder.sales_channel || 'my_pisel',
|
|
1303
|
-
order_sales_channel: (
|
|
1443
|
+
order_sales_channel: (_ref37 = channel !== null && channel !== void 0 ? channel : tempOrder.order_sales_channel) !== null && _ref37 !== void 0 ? _ref37 : 'online_store',
|
|
1304
1444
|
status: tempOrder.status || 'normal'
|
|
1305
1445
|
}, params.includePaymentStatus !== false ? {
|
|
1306
1446
|
payment_status: tempOrder.payment_status || 'payment_processing'
|
|
@@ -1328,15 +1468,20 @@ export function buildSubmitPayload(params) {
|
|
|
1328
1468
|
// holder: tempOrder.holder || null,
|
|
1329
1469
|
summary: summary || tempOrder.summary || createEmptySummary(),
|
|
1330
1470
|
metadata: function () {
|
|
1331
|
-
var
|
|
1332
|
-
_collectPax =
|
|
1333
|
-
_tableOccupancyDuration =
|
|
1334
|
-
_cartSettlementKey =
|
|
1335
|
-
_cartSettlementSnapshot =
|
|
1336
|
-
_legalCurrencySnapshot =
|
|
1337
|
-
rest = _objectWithoutProperties(
|
|
1471
|
+
var _ref38 = tempOrder.metadata || {},
|
|
1472
|
+
_collectPax = _ref38.collect_pax,
|
|
1473
|
+
_tableOccupancyDuration = _ref38.table_occupancy_duration,
|
|
1474
|
+
_cartSettlementKey = _ref38.cart_settlement_key,
|
|
1475
|
+
_cartSettlementSnapshot = _ref38.cart_settlement_snapshot,
|
|
1476
|
+
_legalCurrencySnapshot = _ref38.legal_currency_snapshot,
|
|
1477
|
+
rest = _objectWithoutProperties(_ref38, _excluded5);
|
|
1338
1478
|
return _objectSpread({}, rest);
|
|
1339
|
-
}()
|
|
1479
|
+
}()
|
|
1480
|
+
}, (_tempOrder$_extend = tempOrder._extend) !== null && _tempOrder$_extend !== void 0 && (_tempOrder$_extend = _tempOrder$_extend.salesNotesState) !== null && _tempOrder$_extend !== void 0 && _tempOrder$_extend.dirty ? {
|
|
1481
|
+
notes: encodeSalesNotes(tempOrder.notes || [], {
|
|
1482
|
+
allowUnresolvedOrderTarget: true
|
|
1483
|
+
})
|
|
1484
|
+
} : {}), {}, {
|
|
1340
1485
|
products: (tempOrder.products || []).map(function (product) {
|
|
1341
1486
|
return normalizeSubmitProduct(product, {
|
|
1342
1487
|
virtualSettlementMode: virtualSettlementMode
|
|
@@ -1468,7 +1613,7 @@ export function hasAssignedHolderId(value) {
|
|
|
1468
1613
|
* clearTempOrderHolderAssignments(tempOrder);
|
|
1469
1614
|
*/
|
|
1470
1615
|
export function clearTempOrderHolderAssignments(tempOrder) {
|
|
1471
|
-
var _tempOrder$
|
|
1616
|
+
var _tempOrder$_extend2;
|
|
1472
1617
|
var changed = false;
|
|
1473
1618
|
var resetHolderField = function resetHolderField(target) {
|
|
1474
1619
|
var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'holder_id';
|
|
@@ -1509,7 +1654,7 @@ export function clearTempOrderHolderAssignments(tempOrder) {
|
|
|
1509
1654
|
} finally {
|
|
1510
1655
|
_iterator9.f();
|
|
1511
1656
|
}
|
|
1512
|
-
var productsByUid = (_tempOrder$
|
|
1657
|
+
var productsByUid = (_tempOrder$_extend2 = tempOrder._extend) === null || _tempOrder$_extend2 === void 0 ? void 0 : _tempOrder$_extend2.productsByUid;
|
|
1513
1658
|
if (productsByUid && _typeof(productsByUid) === 'object') {
|
|
1514
1659
|
for (var _i4 = 0, _Object$values = Object.values(productsByUid); _i4 < _Object$values.length; _i4++) {
|
|
1515
1660
|
var entry = _Object$values[_i4];
|
|
@@ -1533,24 +1678,24 @@ export function clearTempOrderHolderAssignments(tempOrder) {
|
|
|
1533
1678
|
* getOrderProductLineUid({ metadata: { unique_identification_number: 'line-1' } }); // 'line-1'
|
|
1534
1679
|
*/
|
|
1535
1680
|
export function getOrderProductLineUid(product) {
|
|
1536
|
-
var _product$metadata$
|
|
1681
|
+
var _product$metadata$uni2, _product$metadata10;
|
|
1537
1682
|
if (!product || _typeof(product) !== 'object') return null;
|
|
1538
|
-
var uid = (_product$metadata$
|
|
1683
|
+
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;
|
|
1539
1684
|
if (uid === undefined || uid === null || uid === '') return null;
|
|
1540
1685
|
return String(uid);
|
|
1541
1686
|
}
|
|
1542
1687
|
export function getRuntimeProductOrigin(tempOrder, product) {
|
|
1543
|
-
var _tempOrder$
|
|
1688
|
+
var _tempOrder$_extend3, _tempOrder$_extend4;
|
|
1544
1689
|
var uid = getOrderProductLineUid(product);
|
|
1545
|
-
if (uid && tempOrder !== null && tempOrder !== void 0 && (_tempOrder$
|
|
1690
|
+
if (uid && tempOrder !== null && tempOrder !== void 0 && (_tempOrder$_extend3 = tempOrder._extend) !== null && _tempOrder$_extend3 !== void 0 && (_tempOrder$_extend3 = _tempOrder$_extend3.productsByUid) !== null && _tempOrder$_extend3 !== void 0 && (_tempOrder$_extend3 = _tempOrder$_extend3[uid]) !== null && _tempOrder$_extend3 !== void 0 && _tempOrder$_extend3.origin) {
|
|
1546
1691
|
return tempOrder._extend.productsByUid[uid].origin;
|
|
1547
1692
|
}
|
|
1548
1693
|
var matchedProduct = ((tempOrder === null || tempOrder === void 0 ? void 0 : tempOrder.products) || []).find(function (item) {
|
|
1549
|
-
var
|
|
1550
|
-
return item === product || getOrderProductLineUid(item) === uid || String((
|
|
1694
|
+
var _ref39, _item$product_id, _ref40, _product$product_id;
|
|
1695
|
+
return item === product || getOrderProductLineUid(item) === uid || String((_ref39 = (_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 && _ref39 !== void 0 ? _ref39 : '') === String((_ref40 = (_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 && _ref40 !== void 0 ? _ref40 : '');
|
|
1551
1696
|
});
|
|
1552
1697
|
var matchedUid = matchedProduct ? getOrderProductLineUid(matchedProduct) : '';
|
|
1553
|
-
return matchedUid ? (tempOrder === null || tempOrder === void 0 || (_tempOrder$
|
|
1698
|
+
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;
|
|
1554
1699
|
}
|
|
1555
1700
|
export function isHolderConfigRequired(holderConfig) {
|
|
1556
1701
|
if (!holderConfig || _typeof(holderConfig) !== 'object') return false;
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
* 现金支付推荐算法
|
|
3
3
|
*
|
|
4
4
|
* 核心原理:
|
|
5
|
-
* 1.
|
|
6
|
-
* 2.
|
|
7
|
-
* 3.
|
|
8
|
-
* 4. 根据组合判断去重,避免扩展组合
|
|
5
|
+
* 1. 第一项始终是精确应付金额
|
|
6
|
+
* 2. 其余推荐只能是严格大于应付金额的真实币种面额
|
|
7
|
+
* 3. 最多推荐三个更高面额
|
|
9
8
|
*/
|
|
10
9
|
/**
|
|
11
10
|
* 常见国家货币面额配置
|
|
@@ -13,7 +12,7 @@
|
|
|
13
12
|
export declare const CURRENCY_DENOMINATIONS: Record<string, number[]>;
|
|
14
13
|
/**
|
|
15
14
|
* 最优支付金额推荐算法
|
|
16
|
-
*
|
|
15
|
+
* 返回精确应付金额,以及最多三个更高的真实币种面额
|
|
17
16
|
*
|
|
18
17
|
* @param targetAmount 目标金额
|
|
19
18
|
* @param denominations 币种面值数组
|