@pisell/pisellos 0.10.55 → 0.10.57
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 +0 -9
- package/dist/modules/OpenData/index.js +2 -1
- package/dist/modules/Order/index.d.ts +1 -0
- package/dist/modules/Order/index.js +118 -59
- 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 +1 -1
- package/dist/modules/Order/utils.js +9 -6
- package/dist/modules/Payment/index.d.ts +0 -5
- package/dist/modules/Payment/index.js +35 -85
- package/dist/modules/ProductList/index.js +18 -5
- package/dist/modules/ResourcePlanner/planner.js +10 -8
- package/dist/modules/Rules/index.js +16 -14
- package/dist/modules/Rules/types.d.ts +2 -0
- package/dist/plugins/request.d.ts +4 -0
- package/dist/server/index.js +122 -69
- package/dist/server/modules/floor-plan/index.js +34 -3
- package/dist/server/modules/payment/index.d.ts +25 -6
- package/dist/server/modules/payment/index.js +660 -133
- package/dist/server/test.json +1 -1
- package/dist/shared/receipt/customerInvoiceLanguages.d.ts +8 -0
- package/dist/shared/receipt/customerInvoiceLanguages.js +60 -0
- package/dist/shared/receipt/loadCustomerInvoiceLayout.d.ts +27 -0
- package/dist/shared/receipt/loadCustomerInvoiceLayout.js +184 -0
- package/dist/shared/receipt/small-ticket.d.ts +11 -0
- package/dist/shared/receipt/small-ticket.js +430 -255
- package/dist/shared/receipt/templateVisibility.d.ts +23 -0
- package/dist/shared/receipt/templateVisibility.js +64 -0
- package/dist/solution/BaseSales/index.d.ts +4 -2
- package/dist/solution/BaseSales/index.js +1328 -1214
- package/dist/solution/BaseSales/types.d.ts +5 -1
- package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +40 -25
- package/dist/solution/BaseSales/utils.js +3 -2
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.d.ts +4 -1
- package/dist/solution/BookingTicket/index.js +120 -80
- package/dist/solution/OrderInvoicePreview/index.d.ts +10 -0
- package/dist/solution/OrderInvoicePreview/index.js +87 -16
- package/dist/solution/RegisterAndLogin/config.js +54 -11
- package/dist/solution/RegisterAndLogin/index.d.ts +2 -0
- package/dist/solution/RegisterAndLogin/index.js +1 -1
- package/dist/solution/RegisterAndLogin/utils.d.ts +12 -4
- package/dist/solution/RegisterAndLogin/utils.js +36 -16
- package/dist/solution/Sales/index.d.ts +2 -0
- package/dist/solution/Sales/index.js +15 -1
- package/dist/solution/ScanOrder/utils.js +3 -2
- package/dist/solution/UnifiedBookingSales/index.js +12 -13
- package/dist/solution/VenueBooking/index.d.ts +15 -2
- package/dist/solution/VenueBooking/index.js +1062 -785
- package/dist/solution/VenueBooking/types.d.ts +2 -1
- package/dist/solution/VenueBooking/types.js +1 -0
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
- package/dist/solution/VenueBooking/utils/dateSummary.js +7 -4
- package/dist/solution/VenueBooking/utils/smartPricing.d.ts +71 -0
- package/dist/solution/VenueBooking/utils/smartPricing.js +273 -0
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +1 -0
- package/dist/solution/VenueBooking/utils/timeSlot.js +6 -3
- package/lib/modules/OpenData/index.js +2 -1
- package/lib/modules/Order/index.d.ts +1 -0
- package/lib/modules/Order/index.js +71 -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 +1 -1
- package/lib/modules/Order/utils.js +5 -3
- package/lib/modules/Payment/index.d.ts +0 -5
- package/lib/modules/Payment/index.js +3 -28
- package/lib/modules/ProductList/index.js +14 -1
- package/lib/modules/ResourcePlanner/planner.js +10 -8
- package/lib/modules/Rules/index.js +16 -14
- package/lib/modules/Rules/types.d.ts +2 -0
- package/lib/plugins/request.d.ts +4 -0
- package/lib/server/index.js +72 -28
- package/lib/server/modules/floor-plan/index.js +29 -1
- package/lib/server/modules/payment/index.d.ts +25 -6
- package/lib/server/modules/payment/index.js +350 -78
- package/lib/server/test.json +1 -1
- package/lib/shared/receipt/customerInvoiceLanguages.d.ts +8 -0
- package/lib/shared/receipt/customerInvoiceLanguages.js +58 -0
- package/lib/shared/receipt/loadCustomerInvoiceLayout.d.ts +27 -0
- package/lib/shared/receipt/loadCustomerInvoiceLayout.js +124 -0
- package/lib/shared/receipt/small-ticket.d.ts +11 -0
- package/lib/shared/receipt/small-ticket.js +234 -30
- package/lib/shared/receipt/templateVisibility.d.ts +23 -0
- package/lib/shared/receipt/templateVisibility.js +63 -0
- package/lib/solution/BaseSales/index.d.ts +4 -2
- package/lib/solution/BaseSales/index.js +79 -18
- package/lib/solution/BaseSales/types.d.ts +5 -1
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +24 -9
- package/lib/solution/BaseSales/utils.js +2 -1
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.d.ts +4 -1
- package/lib/solution/BookingTicket/index.js +14 -2
- package/lib/solution/OrderInvoicePreview/index.d.ts +10 -0
- package/lib/solution/OrderInvoicePreview/index.js +62 -10
- package/lib/solution/RegisterAndLogin/config.js +57 -11
- package/lib/solution/RegisterAndLogin/index.d.ts +2 -0
- package/lib/solution/RegisterAndLogin/index.js +9 -1
- package/lib/solution/RegisterAndLogin/utils.d.ts +12 -4
- package/lib/solution/RegisterAndLogin/utils.js +24 -17
- package/lib/solution/Sales/index.d.ts +2 -0
- package/lib/solution/Sales/index.js +10 -1
- package/lib/solution/ScanOrder/utils.js +2 -1
- package/lib/solution/UnifiedBookingSales/index.js +5 -6
- package/lib/solution/VenueBooking/index.d.ts +15 -2
- package/lib/solution/VenueBooking/index.js +243 -96
- package/lib/solution/VenueBooking/types.d.ts +2 -1
- package/lib/solution/VenueBooking/types.js +1 -0
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
- package/lib/solution/VenueBooking/utils/dateSummary.js +7 -4
- package/lib/solution/VenueBooking/utils/smartPricing.d.ts +71 -0
- package/lib/solution/VenueBooking/utils/smartPricing.js +224 -0
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +1 -0
- package/lib/solution/VenueBooking/utils/timeSlot.js +5 -2
- package/package.json +1 -1
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
var _excluded = ["secondaryLocale"];
|
|
2
|
+
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; }
|
|
3
|
+
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; }
|
|
1
4
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
5
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
6
|
+
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."); }
|
|
7
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
8
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
2
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; }
|
|
3
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; }
|
|
4
11
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -26,7 +33,8 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
26
33
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
27
34
|
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); }
|
|
28
35
|
import { BaseModule } from "../../modules/BaseModule";
|
|
29
|
-
import {
|
|
36
|
+
import { loadCustomerInvoiceTemplate } from "../../shared/receipt/loadCustomerInvoiceLayout";
|
|
37
|
+
import { resolveCustomerInvoiceLanguages } from "../../shared/receipt/customerInvoiceLanguages";
|
|
30
38
|
import { buildSmallTicketData } from "../../shared/receipt/small-ticket";
|
|
31
39
|
import { loadSalesOrderSnapshot } from "../../shared/sales/loadSalesOrderSnapshot";
|
|
32
40
|
import { loadPaymentMethods, withPaymentMethodNames } from "../../shared/payment/loadPaymentMethods";
|
|
@@ -53,6 +61,8 @@ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
53
61
|
_defineProperty(_assertThisInitialized(_this), "disposed", false);
|
|
54
62
|
_defineProperty(_assertThisInitialized(_this), "input", void 0);
|
|
55
63
|
_defineProperty(_assertThisInitialized(_this), "activeKey", '');
|
|
64
|
+
// Hosts retain this readonly instance while the same order modal is closed.
|
|
65
|
+
_defineProperty(_assertThisInitialized(_this), "languageSelection", void 0);
|
|
56
66
|
_defineProperty(_assertThisInitialized(_this), "pending", void 0);
|
|
57
67
|
_defineProperty(_assertThisInitialized(_this), "snapshotCache", new Map());
|
|
58
68
|
_defineProperty(_assertThisInitialized(_this), "getState", function () {
|
|
@@ -95,7 +105,7 @@ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
95
105
|
cache = new Map();
|
|
96
106
|
contextCaches.set(this.request, cache);
|
|
97
107
|
}
|
|
98
|
-
var key = JSON.stringify([input.tenantId, input.shopId, input.identity
|
|
108
|
+
var key = JSON.stringify([input.tenantId, input.shopId, input.identity]);
|
|
99
109
|
var cached = cache.get(key);
|
|
100
110
|
if (cached) return cached;
|
|
101
111
|
var task = Promise.all([this.request.get('/shop/show', {}, {
|
|
@@ -154,6 +164,7 @@ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
154
164
|
var _this$core$getPlugin,
|
|
155
165
|
_this$core$getPlugin$,
|
|
156
166
|
_this$core$getPlugin$2,
|
|
167
|
+
_this$languageSelecti,
|
|
157
168
|
_this3 = this;
|
|
158
169
|
if (this.disposed) return Promise.reject(new Error('Invoice preview disposed'));
|
|
159
170
|
var currentShop = (_this$core$getPlugin = this.core.getPlugin('app')) === null || _this$core$getPlugin === void 0 || (_this$core$getPlugin$ = _this$core$getPlugin.getData) === null || _this$core$getPlugin$ === void 0 || (_this$core$getPlugin$2 = _this$core$getPlugin$.call(_this$core$getPlugin)) === null || _this$core$getPlugin$2 === void 0 ? void 0 : _this$core$getPlugin$2('shop_id');
|
|
@@ -166,6 +177,7 @@ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
166
177
|
if (this.state.status === 'ready' && this.state.result) return Promise.resolve(this.state.result);
|
|
167
178
|
}
|
|
168
179
|
if (this.input && this.getScope(this.input) !== this.getScope(input)) this.snapshotCache.clear();
|
|
180
|
+
if (((_this$languageSelecti = this.languageSelection) === null || _this$languageSelecti === void 0 ? void 0 : _this$languageSelecti.scope) !== this.getSelectionScope(input)) this.languageSelection = undefined;
|
|
169
181
|
this.input = input;
|
|
170
182
|
this.activeKey = key;
|
|
171
183
|
var generation = ++this.generation;
|
|
@@ -175,20 +187,20 @@ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
175
187
|
error: null
|
|
176
188
|
});
|
|
177
189
|
var task = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
178
|
-
var _this3$core$getPlugin, _this3$core$getPlugin2, _coreData$core;
|
|
179
|
-
var _yield$Promise$all, _yield$Promise$all2, snapshot, context,
|
|
190
|
+
var _this3$core$getPlugin, _this3$core$getPlugin2, _coreData$core, _this3$languageSelect;
|
|
191
|
+
var _yield$Promise$all, _yield$Promise$all2, snapshot, context, template, source, getData, coreData, shop, languageOptions, remembered, selected, locale, result;
|
|
180
192
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
181
193
|
while (1) switch (_context.prev = _context.next) {
|
|
182
194
|
case 0:
|
|
183
195
|
_context.next = 2;
|
|
184
|
-
return Promise.all([_this3.loadSource(input), _this3.loadContext(input)]);
|
|
196
|
+
return Promise.all([_this3.loadSource(input), _this3.loadContext(input), loadCustomerInvoiceTemplate(_this3.request, input)]);
|
|
185
197
|
case 2:
|
|
186
198
|
_yield$Promise$all = _context.sent;
|
|
187
|
-
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all,
|
|
199
|
+
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);
|
|
188
200
|
snapshot = _yield$Promise$all2[0];
|
|
189
201
|
context = _yield$Promise$all2[1];
|
|
190
|
-
|
|
191
|
-
|
|
202
|
+
template = _yield$Promise$all2[2];
|
|
203
|
+
source = withPaymentMethodNames(snapshot, context.methods);
|
|
192
204
|
getData = (_this3$core$getPlugin = _this3.core.getPlugin('app')) === null || _this3$core$getPlugin === void 0 || (_this3$core$getPlugin2 = _this3$core$getPlugin.getData) === null || _this3$core$getPlugin2 === void 0 ? void 0 : _this3$core$getPlugin2.call(_this3$core$getPlugin);
|
|
193
205
|
if (!((getData === null || getData === void 0 ? void 0 : getData('shop_id')) != null && String(getData('shop_id')) !== String(input.shopId))) {
|
|
194
206
|
_context.next = 11;
|
|
@@ -206,30 +218,43 @@ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
206
218
|
}
|
|
207
219
|
throw new Error('Invoice request superseded');
|
|
208
220
|
case 15:
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
221
|
+
languageOptions = resolveCustomerInvoiceLanguages(template.language, input.locale);
|
|
222
|
+
remembered = (_this3$languageSelect = _this3.languageSelection) === null || _this3$languageSelect === void 0 ? void 0 : _this3$languageSelect.code;
|
|
223
|
+
selected = languageOptions.find(function (option) {
|
|
224
|
+
return option.code === remembered;
|
|
225
|
+
}) || languageOptions[0];
|
|
226
|
+
locale = selected.locales[0];
|
|
227
|
+
result = _objectSpread(_objectSpread({
|
|
228
|
+
identity: _this3.documentIdentity(key, selected.code),
|
|
229
|
+
languageOptions: languageOptions,
|
|
230
|
+
selectedLanguage: selected.code
|
|
231
|
+
}, selected.locales[1] ? {
|
|
232
|
+
secondaryLocale: selected.locales[1]
|
|
233
|
+
} : {}), {}, {
|
|
213
234
|
orderId: input.orderId,
|
|
214
235
|
sourceRevision: input.sourceRevision,
|
|
215
236
|
generatedAt: new Date().toISOString(),
|
|
216
237
|
locale: locale,
|
|
217
238
|
source: source,
|
|
218
239
|
shop: shop,
|
|
219
|
-
layout: layout,
|
|
240
|
+
layout: template.layout,
|
|
220
241
|
smallTicketData: buildSmallTicketData({
|
|
221
242
|
order: source,
|
|
222
243
|
shopInfo: shop,
|
|
223
|
-
locales:
|
|
244
|
+
locales: _toConsumableArray(new Set(languageOptions.flatMap(function (option) {
|
|
245
|
+
return option.locales;
|
|
246
|
+
}))),
|
|
247
|
+
includeReceiptKeys: true,
|
|
248
|
+
templateSettings: template.layout
|
|
224
249
|
})
|
|
225
|
-
};
|
|
250
|
+
});
|
|
226
251
|
_this3.publish({
|
|
227
252
|
status: 'ready',
|
|
228
253
|
result: result,
|
|
229
254
|
error: null
|
|
230
255
|
});
|
|
231
256
|
return _context.abrupt("return", result);
|
|
232
|
-
case
|
|
257
|
+
case 22:
|
|
233
258
|
case "end":
|
|
234
259
|
return _context.stop();
|
|
235
260
|
}
|
|
@@ -249,6 +274,52 @@ export var OrderInvoicePreviewImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
249
274
|
this.pending = task;
|
|
250
275
|
return task;
|
|
251
276
|
}
|
|
277
|
+
}, {
|
|
278
|
+
key: "getSelectionScope",
|
|
279
|
+
value: function getSelectionScope(input) {
|
|
280
|
+
return JSON.stringify([this.getScope(input), input.orderId]);
|
|
281
|
+
}
|
|
282
|
+
}, {
|
|
283
|
+
key: "documentIdentity",
|
|
284
|
+
value: function documentIdentity(key, language) {
|
|
285
|
+
return JSON.stringify([key, language]);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/** Switch only the ready receipt projection; no fetching or rebuilding data. */
|
|
289
|
+
}, {
|
|
290
|
+
key: "selectLanguage",
|
|
291
|
+
value: function selectLanguage(code) {
|
|
292
|
+
var _this$core$getPlugin2, _this$core$getPlugin3, _this$core$getPlugin4;
|
|
293
|
+
if (this.disposed) throw new Error('Invoice preview disposed');
|
|
294
|
+
var current = this.state.result;
|
|
295
|
+
if (this.state.status !== 'ready' || !current || !this.input) throw new Error('Invoice preview is not ready');
|
|
296
|
+
var currentShop = (_this$core$getPlugin2 = this.core.getPlugin('app')) === null || _this$core$getPlugin2 === void 0 || (_this$core$getPlugin3 = _this$core$getPlugin2.getData) === null || _this$core$getPlugin3 === void 0 || (_this$core$getPlugin4 = _this$core$getPlugin3.call(_this$core$getPlugin2)) === null || _this$core$getPlugin4 === void 0 ? void 0 : _this$core$getPlugin4('shop_id');
|
|
297
|
+
if (currentShop != null && String(currentShop) !== String(this.input.shopId)) throw new Error('Invoice shop changed');
|
|
298
|
+
var selected = current.languageOptions.find(function (option) {
|
|
299
|
+
return option.code === code;
|
|
300
|
+
});
|
|
301
|
+
if (!selected) throw new Error('Invoice language is unavailable');
|
|
302
|
+
this.languageSelection = {
|
|
303
|
+
scope: this.getSelectionScope(this.input),
|
|
304
|
+
code: selected.code
|
|
305
|
+
};
|
|
306
|
+
if (selected.code === current.selectedLanguage) return current;
|
|
307
|
+
var _previousSecondary = current.secondaryLocale,
|
|
308
|
+
rest = _objectWithoutProperties(current, _excluded);
|
|
309
|
+
var result = _objectSpread(_objectSpread({}, rest), {}, {
|
|
310
|
+
identity: this.documentIdentity(this.activeKey, selected.code),
|
|
311
|
+
selectedLanguage: selected.code,
|
|
312
|
+
locale: selected.locales[0]
|
|
313
|
+
}, selected.locales[1] ? {
|
|
314
|
+
secondaryLocale: selected.locales[1]
|
|
315
|
+
} : {});
|
|
316
|
+
this.publish({
|
|
317
|
+
status: 'ready',
|
|
318
|
+
result: result,
|
|
319
|
+
error: null
|
|
320
|
+
});
|
|
321
|
+
return result;
|
|
322
|
+
}
|
|
252
323
|
}, {
|
|
253
324
|
key: "retry",
|
|
254
325
|
value: function retry() {
|
|
@@ -386,6 +386,26 @@ function withH5AuthPrefix(config) {
|
|
|
386
386
|
return nextConfig;
|
|
387
387
|
}
|
|
388
388
|
var h5OnlineStoreConfig = withH5AuthPrefix(onlineStoreConfig);
|
|
389
|
+
function withKioskSalesChannel(config) {
|
|
390
|
+
return _objectSpread(_objectSpread({}, config), {}, {
|
|
391
|
+
options: function options(params) {
|
|
392
|
+
var options = (typeof config.options === 'function' ? config.options(params) : config.options) || {};
|
|
393
|
+
var headers = typeof options.headers === 'function' ? options.headers(params) : options.headers;
|
|
394
|
+
return _objectSpread(_objectSpread({}, options), {}, {
|
|
395
|
+
headers: _objectSpread(_objectSpread({}, headers), {}, {
|
|
396
|
+
'Sales-Channel': 'kiosk'
|
|
397
|
+
})
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// Kiosk 复用网店顾客认证接口,通过注册(含验证码登录自动注册)请求头标识会员归属渠道。
|
|
404
|
+
var kioskConfig = _objectSpread(_objectSpread({}, h5OnlineStoreConfig), {}, {
|
|
405
|
+
emailCodeRegister: withKioskSalesChannel(h5OnlineStoreConfig.emailCodeRegister),
|
|
406
|
+
phoneCodeRegister: withKioskSalesChannel(h5OnlineStoreConfig.phoneCodeRegister),
|
|
407
|
+
phoneCodeLogin: withKioskSalesChannel(h5OnlineStoreConfig.phoneCodeLogin)
|
|
408
|
+
});
|
|
389
409
|
|
|
390
410
|
/**
|
|
391
411
|
* 默认配置(通用配置)
|
|
@@ -713,6 +733,16 @@ var defaultConfig = {
|
|
|
713
733
|
/**
|
|
714
734
|
* webpos 渠道配置
|
|
715
735
|
*/
|
|
736
|
+
var webposPasswordResetOptions = {
|
|
737
|
+
prefix: false,
|
|
738
|
+
isDefaultSaasDomain: true,
|
|
739
|
+
cache: false,
|
|
740
|
+
noToast: true,
|
|
741
|
+
headers: {
|
|
742
|
+
Accept: 'application/json',
|
|
743
|
+
'Content-Type': 'application/json'
|
|
744
|
+
}
|
|
745
|
+
};
|
|
716
746
|
var webposConfig = {
|
|
717
747
|
sendEmailVerificationCode: {
|
|
718
748
|
url: '/auth/email/register-code',
|
|
@@ -865,15 +895,23 @@ var webposConfig = {
|
|
|
865
895
|
}
|
|
866
896
|
},
|
|
867
897
|
checkEmailCode: {
|
|
868
|
-
url: '/
|
|
869
|
-
method: '
|
|
898
|
+
url: '/tenant/account/reset-password/email-code/verify',
|
|
899
|
+
method: 'POST',
|
|
870
900
|
transformParams: function transformParams(params) {
|
|
871
901
|
return {
|
|
872
902
|
email: params.email,
|
|
873
|
-
code: params.code
|
|
874
|
-
action: params.action
|
|
903
|
+
code: params.code
|
|
875
904
|
};
|
|
876
|
-
}
|
|
905
|
+
},
|
|
906
|
+
// SaaS 成功时 data 为 null,统一为既有验证码校验返回结构。
|
|
907
|
+
transformResponse: function transformResponse(response) {
|
|
908
|
+
return (response === null || response === void 0 ? void 0 : response.status) === true ? _objectSpread(_objectSpread({}, response), {}, {
|
|
909
|
+
data: {
|
|
910
|
+
valid: true
|
|
911
|
+
}
|
|
912
|
+
}) : response;
|
|
913
|
+
},
|
|
914
|
+
options: webposPasswordResetOptions
|
|
877
915
|
},
|
|
878
916
|
checkMobileCode: {
|
|
879
917
|
url: '/auth/mobile/check-mobile-code',
|
|
@@ -899,13 +937,14 @@ var webposConfig = {
|
|
|
899
937
|
}
|
|
900
938
|
},
|
|
901
939
|
sendPasswordResetEmail: {
|
|
902
|
-
url: '/
|
|
903
|
-
method: '
|
|
940
|
+
url: '/tenant/account/reset-password/email-code/send',
|
|
941
|
+
method: 'POST',
|
|
904
942
|
transformParams: function transformParams(params) {
|
|
905
943
|
return {
|
|
906
944
|
email: params.email
|
|
907
945
|
};
|
|
908
|
-
}
|
|
946
|
+
},
|
|
947
|
+
options: webposPasswordResetOptions
|
|
909
948
|
},
|
|
910
949
|
sendPasswordResetSms: {
|
|
911
950
|
url: '/auth/mobile/sms-forget',
|
|
@@ -946,15 +985,18 @@ var webposConfig = {
|
|
|
946
985
|
}
|
|
947
986
|
},
|
|
948
987
|
resetPasswordByEmail: {
|
|
949
|
-
url: '/
|
|
988
|
+
url: '/tenant/account/reset-password/email-code',
|
|
950
989
|
method: 'POST',
|
|
951
990
|
transformParams: function transformParams(params) {
|
|
952
991
|
return {
|
|
953
992
|
email: params.email,
|
|
954
993
|
password: params.password,
|
|
955
|
-
code: params.code
|
|
994
|
+
code: params.code,
|
|
995
|
+
// 页面先校验两次输入完全一致,SDK 保持原有重置参数。
|
|
996
|
+
password_confirmation: params.password
|
|
956
997
|
};
|
|
957
|
-
}
|
|
998
|
+
},
|
|
999
|
+
options: webposPasswordResetOptions
|
|
958
1000
|
},
|
|
959
1001
|
resetPasswordByPhone: {
|
|
960
1002
|
url: '/auth/mobile/reset-password',
|
|
@@ -1383,6 +1425,7 @@ var shopWebposConfig = {
|
|
|
1383
1425
|
export var channelConfigMap = {
|
|
1384
1426
|
'online-store': onlineStoreConfig,
|
|
1385
1427
|
'online-store-h5': h5OnlineStoreConfig,
|
|
1428
|
+
'kiosk': kioskConfig,
|
|
1386
1429
|
'default': defaultConfig,
|
|
1387
1430
|
'webpos': webposConfig,
|
|
1388
1431
|
'shop.webpos': shopWebposConfig
|
|
@@ -4,6 +4,8 @@ import { RegisterParams, LoginParams, OAuthLoginParams, SendVerificationCodePara
|
|
|
4
4
|
import { ApiCaller } from './config';
|
|
5
5
|
export * from './types';
|
|
6
6
|
export * from './config';
|
|
7
|
+
export { validatePassword } from './utils';
|
|
8
|
+
export type { PasswordValidationOptions } from './utils';
|
|
7
9
|
/**
|
|
8
10
|
* 注册登录解决方案实现
|
|
9
11
|
*/
|
|
@@ -22,7 +22,7 @@ import { RegisterAndLoginHooks, VerificationCodeType, VerificationPurpose } from
|
|
|
22
22
|
import { createApiCaller } from "./config";
|
|
23
23
|
export * from "./types";
|
|
24
24
|
export * from "./config";
|
|
25
|
-
|
|
25
|
+
export { validatePassword } from "./utils";
|
|
26
26
|
/**
|
|
27
27
|
* 注册登录解决方案实现
|
|
28
28
|
*/
|
|
@@ -10,10 +10,18 @@ export declare function validateEmail(email: string): boolean;
|
|
|
10
10
|
* 验证手机号格式(支持多种国际格式)
|
|
11
11
|
*/
|
|
12
12
|
export declare function validatePhone(phone: string): boolean;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
export interface PasswordValidationOptions {
|
|
14
|
+
minLength?: number;
|
|
15
|
+
maxLength?: number;
|
|
16
|
+
requireLowercase?: boolean;
|
|
17
|
+
requireUppercase?: boolean;
|
|
18
|
+
requireNumber?: boolean;
|
|
19
|
+
requireSpecialCharacters?: boolean;
|
|
20
|
+
specialCharactersPattern?: RegExp;
|
|
21
|
+
messages?: Partial<Record<'minLength' | 'maxLength' | 'requireLowercase' | 'requireUppercase' | 'requireNumber' | 'requireSpecialCharacters', string>>;
|
|
22
|
+
}
|
|
23
|
+
/** 验证密码强度;不传 options 时保持原有规则与返回格式。 */
|
|
24
|
+
export declare function validatePassword(password: string, options?: PasswordValidationOptions): {
|
|
17
25
|
isValid: boolean;
|
|
18
26
|
errors: string[];
|
|
19
27
|
};
|
|
@@ -33,29 +33,49 @@ export function validatePhone(phone) {
|
|
|
33
33
|
var phoneRegex = /^(\+\d{1,3}[- ]?)?\d{10,14}$/;
|
|
34
34
|
return phoneRegex.test(cleanPhone);
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* 验证密码强度
|
|
39
|
-
*/
|
|
36
|
+
/** 验证密码强度;不传 options 时保持原有规则与返回格式。 */
|
|
40
37
|
export function validatePassword(password) {
|
|
38
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
41
39
|
var errors = [];
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
var _options$minLength = options.minLength,
|
|
41
|
+
minLength = _options$minLength === void 0 ? 8 : _options$minLength,
|
|
42
|
+
_options$maxLength = options.maxLength,
|
|
43
|
+
maxLength = _options$maxLength === void 0 ? 128 : _options$maxLength,
|
|
44
|
+
_options$requireLower = options.requireLowercase,
|
|
45
|
+
requireLowercase = _options$requireLower === void 0 ? true : _options$requireLower,
|
|
46
|
+
_options$requireUpper = options.requireUppercase,
|
|
47
|
+
requireUppercase = _options$requireUpper === void 0 ? true : _options$requireUpper,
|
|
48
|
+
_options$requireNumbe = options.requireNumber,
|
|
49
|
+
requireNumber = _options$requireNumbe === void 0 ? true : _options$requireNumbe,
|
|
50
|
+
_options$requireSpeci = options.requireSpecialCharacters,
|
|
51
|
+
requireSpecialCharacters = _options$requireSpeci === void 0 ? true : _options$requireSpeci,
|
|
52
|
+
_options$specialChara = options.specialCharactersPattern,
|
|
53
|
+
specialCharactersPattern = _options$specialChara === void 0 ? /[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/ : _options$specialChara,
|
|
54
|
+
_options$messages = options.messages,
|
|
55
|
+
messages = _options$messages === void 0 ? {} : _options$messages;
|
|
56
|
+
if (password.length < minLength) {
|
|
57
|
+
var _messages$minLength;
|
|
58
|
+
errors.push((_messages$minLength = messages.minLength) !== null && _messages$minLength !== void 0 ? _messages$minLength : "\u5BC6\u7801\u957F\u5EA6\u81F3\u5C11\u4E3A".concat(minLength, "\u4F4D"));
|
|
44
59
|
}
|
|
45
|
-
if (password.length >
|
|
46
|
-
|
|
60
|
+
if (password.length > maxLength) {
|
|
61
|
+
var _messages$maxLength;
|
|
62
|
+
errors.push((_messages$maxLength = messages.maxLength) !== null && _messages$maxLength !== void 0 ? _messages$maxLength : "\u5BC6\u7801\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7".concat(maxLength, "\u4F4D"));
|
|
47
63
|
}
|
|
48
|
-
if (!/[a-z]/.test(password)) {
|
|
49
|
-
|
|
64
|
+
if (requireLowercase && !/[a-z]/.test(password)) {
|
|
65
|
+
var _messages$requireLowe;
|
|
66
|
+
errors.push((_messages$requireLowe = messages.requireLowercase) !== null && _messages$requireLowe !== void 0 ? _messages$requireLowe : '密码必须包含至少一个小写字母');
|
|
50
67
|
}
|
|
51
|
-
if (!/[A-Z]/.test(password)) {
|
|
52
|
-
|
|
68
|
+
if (requireUppercase && !/[A-Z]/.test(password)) {
|
|
69
|
+
var _messages$requireUppe;
|
|
70
|
+
errors.push((_messages$requireUppe = messages.requireUppercase) !== null && _messages$requireUppe !== void 0 ? _messages$requireUppe : '密码必须包含至少一个大写字母');
|
|
53
71
|
}
|
|
54
|
-
if (!/\d/.test(password)) {
|
|
55
|
-
|
|
72
|
+
if (requireNumber && !/\d/.test(password)) {
|
|
73
|
+
var _messages$requireNumb;
|
|
74
|
+
errors.push((_messages$requireNumb = messages.requireNumber) !== null && _messages$requireNumb !== void 0 ? _messages$requireNumb : '密码必须包含至少一个数字');
|
|
56
75
|
}
|
|
57
|
-
if (
|
|
58
|
-
|
|
76
|
+
if (requireSpecialCharacters && !specialCharactersPattern.test(password)) {
|
|
77
|
+
var _messages$requireSpec;
|
|
78
|
+
errors.push((_messages$requireSpec = messages.requireSpecialCharacters) !== null && _messages$requireSpec !== void 0 ? _messages$requireSpec : '密码必须包含至少一个特殊字符');
|
|
59
79
|
}
|
|
60
80
|
return {
|
|
61
81
|
isValid: errors.length === 0,
|
|
@@ -105,6 +105,8 @@ export declare class SalesImpl extends BaseModule implements Module, SalesModule
|
|
|
105
105
|
private groupBookingsByResource;
|
|
106
106
|
private isBookingMatchedResource;
|
|
107
107
|
private sortMatchedBookings;
|
|
108
|
+
/** 已完成:按订单创建时间降序,避免实时追加和重新加载导致显示顺序不同。 */
|
|
109
|
+
private sortCompletedBookings;
|
|
108
110
|
/** Unpaid:与 Current 重合的订单沿用 Current 顺序,其余欠款订单按开始时间降序追加。 */
|
|
109
111
|
private sortUnpaidBookings;
|
|
110
112
|
/**
|
|
@@ -760,6 +760,20 @@ export var SalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
760
760
|
});
|
|
761
761
|
}
|
|
762
762
|
|
|
763
|
+
/** 已完成:按订单创建时间降序,避免实时追加和重新加载导致显示顺序不同。 */
|
|
764
|
+
}, {
|
|
765
|
+
key: "sortCompletedBookings",
|
|
766
|
+
value: function sortCompletedBookings(bookings) {
|
|
767
|
+
var createdAt = function createdAt(booking) {
|
|
768
|
+
var _booking$order3;
|
|
769
|
+
var timestamp = dayjs(((_booking$order3 = booking.order) === null || _booking$order3 === void 0 ? void 0 : _booking$order3.created_at) || '').valueOf();
|
|
770
|
+
return Number.isFinite(timestamp) ? timestamp : 0;
|
|
771
|
+
};
|
|
772
|
+
return _toConsumableArray(bookings).sort(function (left, right) {
|
|
773
|
+
return createdAt(right) - createdAt(left);
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
|
|
763
777
|
/** Unpaid:与 Current 重合的订单沿用 Current 顺序,其余欠款订单按开始时间降序追加。 */
|
|
764
778
|
}, {
|
|
765
779
|
key: "sortUnpaidBookings",
|
|
@@ -1260,7 +1274,7 @@ export var SalesImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
1260
1274
|
bookings = this.pickBookingsForCurrentPoint(current, this.normalizeResourceBookings(current, deviceCurrent, matchedBookingList), {
|
|
1261
1275
|
includeAllFuture: true
|
|
1262
1276
|
});
|
|
1263
|
-
completedBookings = completedBookingList.map(function (booking) {
|
|
1277
|
+
completedBookings = this.sortCompletedBookings(completedBookingList).map(function (booking) {
|
|
1264
1278
|
return _objectSpread(_objectSpread({}, booking), {}, {
|
|
1265
1279
|
status: 'compelete',
|
|
1266
1280
|
isTimeout: false,
|
|
@@ -11,10 +11,11 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
11
11
|
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
12
|
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); }
|
|
13
13
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
14
|
+
import { withOriginalBundleOptionPrices } from "../../modules/Order/utils/weighedProduct";
|
|
14
15
|
import dayjs from 'dayjs';
|
|
15
16
|
import Decimal from 'decimal.js';
|
|
16
17
|
import { composeLinePrice, createUuidV4, ensureProductSku, getBundleSellingMagnitude, getProductSkuOptions, normalizeProductSkuOptions, resolveManualOverrideLineOriginalPrice, sumOptionUnitPrice } from "../../modules/Order/utils";
|
|
17
|
-
import { ensureManualProductDiscountList } from "../../modules/Order/utils/manualProductDiscount";
|
|
18
|
+
import { ensureManualProductDiscountList, hasManualProductDiscountFlag } from "../../modules/Order/utils/manualProductDiscount";
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* 构建金额全为 0 的空 summary。
|
|
@@ -643,7 +644,7 @@ export function normalizeOrderProduct(product) {
|
|
|
643
644
|
});
|
|
644
645
|
var composedOriginalPrice = composeLinePrice({
|
|
645
646
|
mainPrice: mainOriginalStr,
|
|
646
|
-
bundle: normalizedBundle,
|
|
647
|
+
bundle: Number(productSku.open_sold_weight) === 1 && hasManualProductDiscountFlag(metadata) ? withOriginalBundleOptionPrices(normalizedBundle) : normalizedBundle,
|
|
647
648
|
useOriginalBundle: true
|
|
648
649
|
});
|
|
649
650
|
var finalOriginalPrice = resolveManualOverrideLineOriginalPrice({
|
|
@@ -49,7 +49,7 @@ import { isCustomerUserPlatform, normalizeRuntimePlatform } from "../../utils/pl
|
|
|
49
49
|
import { ItemRuleEvaluator } from "../../model/strategy/adapter/itemRule";
|
|
50
50
|
export * from "./types";
|
|
51
51
|
export { AvailabilityError } from "../../modules/ResourcePlanner";
|
|
52
|
-
var OPEN_DATA_SECTION_CODES = ['sale', 'reservation', 'fulfillment', 'menu', 'workflow', '
|
|
52
|
+
var OPEN_DATA_SECTION_CODES = ['sale', 'reservation', 'fulfillment', 'menu', 'workflow', 'documents', 'basic', 'checkout', 'availability'];
|
|
53
53
|
function normalizePositiveInteger(value) {
|
|
54
54
|
var normalized = Number(value);
|
|
55
55
|
if (!Number.isInteger(normalized) || normalized <= 0) return undefined;
|
|
@@ -304,10 +304,9 @@ function assertAvailabilityCatalogProductIds(productIds, context) {
|
|
|
304
304
|
});
|
|
305
305
|
}
|
|
306
306
|
}
|
|
307
|
-
function normalizeResourceType(
|
|
308
|
-
//
|
|
309
|
-
|
|
310
|
-
return 'single';
|
|
307
|
+
function normalizeResourceType(value) {
|
|
308
|
+
// 预约是否独占与每组选择几个资源是两个独立配置。
|
|
309
|
+
return value === 'multiple' || value === 'capacity' ? value : 'single';
|
|
311
310
|
}
|
|
312
311
|
function resolveProductKind(product) {
|
|
313
312
|
var _product$cartDetailVa, _product$_extend;
|
|
@@ -2002,10 +2001,10 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
|
|
|
2002
2001
|
}, {
|
|
2003
2002
|
key: "shouldUseCheckoutSyncTask",
|
|
2004
2003
|
value: function shouldUseCheckoutSyncTask() {
|
|
2005
|
-
var _this$otherParams13, _this$
|
|
2004
|
+
var _this$otherParams13, _this$otherParams14;
|
|
2006
2005
|
var configured = (_this$otherParams13 = this.otherParams) === null || _this$otherParams13 === void 0 ? void 0 : _this$otherParams13.checkoutSyncTaskEnabled;
|
|
2007
2006
|
if (configured === true) return true;
|
|
2008
|
-
var platform =
|
|
2007
|
+
var platform = normalizeRuntimePlatform((_this$otherParams14 = this.otherParams) === null || _this$otherParams14 === void 0 ? void 0 : _this$otherParams14.platform);
|
|
2009
2008
|
return !isCustomerUserPlatform(platform) && platform !== 'kiosk';
|
|
2010
2009
|
}
|
|
2011
2010
|
|
|
@@ -4852,7 +4851,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
|
|
|
4852
4851
|
key: "getProductTimeRanges",
|
|
4853
4852
|
value: (function () {
|
|
4854
4853
|
var _getProductTimeRanges = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee46(contextId) {
|
|
4855
|
-
var _this$otherParams$
|
|
4854
|
+
var _this$otherParams$pla,
|
|
4856
4855
|
_this$otherParams24,
|
|
4857
4856
|
_this13 = this;
|
|
4858
4857
|
var request,
|
|
@@ -4874,7 +4873,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
|
|
|
4874
4873
|
context = _yield$this$ensureAva.context;
|
|
4875
4874
|
projectionEntry = _yield$this$ensureAva.projectionEntry;
|
|
4876
4875
|
contextVersion = context.activeVersion;
|
|
4877
|
-
isPosAvailabilityRequest = String((_this$otherParams$
|
|
4876
|
+
isPosAvailabilityRequest = String((_this$otherParams$pla = (_this$otherParams24 = this.otherParams) === null || _this$otherParams24 === void 0 ? void 0 : _this$otherParams24.platform) !== null && _this$otherParams$pla !== void 0 ? _this$otherParams$pla : '').trim().toLowerCase() === 'pos';
|
|
4878
4877
|
allowOutsideOperatingHoursForRequestedStartTimes = isPosAvailabilityRequest && Object.values(request.durationStartTimesByProductId || {}).some(function (startTimes) {
|
|
4879
4878
|
return Array.isArray(startTimes) && startTimes.length > 0;
|
|
4880
4879
|
});
|
|
@@ -4907,7 +4906,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
|
|
|
4907
4906
|
key: "queryBookingAvailability",
|
|
4908
4907
|
value: (function () {
|
|
4909
4908
|
var _queryBookingAvailability = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee47(contextId, request) {
|
|
4910
|
-
var _this$otherParams$
|
|
4909
|
+
var _this$otherParams$pla2, _this$otherParams25;
|
|
4911
4910
|
var _yield$this$ensureAva2, context, projectionEntry, refreshed, isPosAvailabilityRequest, result, contextVersion, contextualResult;
|
|
4912
4911
|
return _regeneratorRuntime().wrap(function _callee47$(_context47) {
|
|
4913
4912
|
while (1) switch (_context47.prev = _context47.next) {
|
|
@@ -4920,7 +4919,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
|
|
|
4920
4919
|
projectionEntry = _yield$this$ensureAva2.projectionEntry;
|
|
4921
4920
|
refreshed = _yield$this$ensureAva2.refreshed;
|
|
4922
4921
|
this.assertContextualQueryFreshness(context, request);
|
|
4923
|
-
isPosAvailabilityRequest = String((_this$otherParams$
|
|
4922
|
+
isPosAvailabilityRequest = String((_this$otherParams$pla2 = (_this$otherParams25 = this.otherParams) === null || _this$otherParams25 === void 0 ? void 0 : _this$otherParams25.platform) !== null && _this$otherParams$pla2 !== void 0 ? _this$otherParams$pla2 : '').trim().toLowerCase() === 'pos';
|
|
4924
4923
|
result = queryAvailabilityProjection(projectionEntry.projection, request, {
|
|
4925
4924
|
useExactDurationCandidateMinute: isPosAvailabilityRequest,
|
|
4926
4925
|
allowExcludedScheduleDateOverride: isPosAvailabilityRequest
|
|
@@ -5033,7 +5032,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
|
|
|
5033
5032
|
key: "commitAvailabilitySelection",
|
|
5034
5033
|
value: (function () {
|
|
5035
5034
|
var _commitAvailabilitySelection = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee48(contextId, params) {
|
|
5036
|
-
var normalizedContextId, _params$bookingCount, _ref53, _params$orderProduct$, _params$orderProduct, _params$orderProduct2, _params$orderProduct3, _params$orderProduct$2, _params$orderProduct4, _params$orderProduct5, _editingLine$product_, _baseProjection$meta$, _refreshedProjection$, _baseProjection$meta$2, _this$otherParams$
|
|
5035
|
+
var normalizedContextId, _params$bookingCount, _ref53, _params$orderProduct$, _params$orderProduct, _params$orderProduct2, _params$orderProduct3, _params$orderProduct$2, _params$orderProduct4, _params$orderProduct5, _editingLine$product_, _baseProjection$meta$, _refreshedProjection$, _baseProjection$meta$2, _this$otherParams$pla3, _this$otherParams26, _ref54, _params$orderProduct$3, _params$orderProduct6, _existingBooking$meta, _ref55, _ref56, _params$orderProduct$4, _params$orderProduct7, _params$orderProduct8, _existingBooking$meta2, _existingBooking$hold, bookingCount, orderProductQuantity, partySize, _yield$this$ensureAva3, context, projectionEntry, refreshed, boundEditingUids, orderProductId, editingLine, _editingLine$product_2, baseProjection, commitWriteGuard, prepareParams, fallbackResources, commitSnapshot, refreshedProjection, _baseProjection$meta$3, latestContext, candidateDurationMinutes, candidateStartTime, allowPosAvailabilityOverride, refreshedRanges, refreshedCandidateBase, product, validation, forced, capacityConflict, revalidationEntry, revalidatedContext, refreshedCandidate, existingBooking, existingBookingUid, booking, transformed, productLineUid, bookingUid, productLineUids, bookingUids, _transformed$product_, _transformed$product_2, _transformed$product_3, _ref57, _transformed$product_4, _this$getTempOrder4, _this$getTempOrder5, _params$salesNotes, _this$getTempOrder6, beforeProductLineUids, beforeBookingUids, products, addedLines, addedBookings, nextContext, result;
|
|
5037
5036
|
return _regeneratorRuntime().wrap(function _callee48$(_context48) {
|
|
5038
5037
|
while (1) switch (_context48.prev = _context48.next) {
|
|
5039
5038
|
case 0:
|
|
@@ -5263,7 +5262,7 @@ export var UnifiedBookingSalesImpl = /*#__PURE__*/function (_BookingTicket) {
|
|
|
5263
5262
|
this.assertAvailabilityCommitWriteCAS(commitWriteGuard);
|
|
5264
5263
|
candidateDurationMinutes = getCandidateDurationMinutes(params.candidate);
|
|
5265
5264
|
candidateStartTime = getCandidateStartTime(params.candidate);
|
|
5266
|
-
allowPosAvailabilityOverride = String((_this$otherParams$
|
|
5265
|
+
allowPosAvailabilityOverride = String((_this$otherParams$pla3 = (_this$otherParams26 = this.otherParams) === null || _this$otherParams26 === void 0 ? void 0 : _this$otherParams26.platform) !== null && _this$otherParams$pla3 !== void 0 ? _this$otherParams$pla3 : '').trim().toLowerCase() === 'pos';
|
|
5267
5266
|
refreshedRanges = getProjectionProductTimeRanges(refreshedProjection, _objectSpread({
|
|
5268
5267
|
productIds: [params.candidate.productId],
|
|
5269
5268
|
dateRange: {
|