@pisell/pisellos 2.3.29 → 2.3.30

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.
Files changed (98) hide show
  1. package/dist/model/strategy/adapter/index.d.ts +0 -4
  2. package/dist/model/strategy/adapter/index.js +1 -5
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/modules/Discount/index.d.ts +2 -5
  5. package/dist/modules/Discount/index.js +7 -30
  6. package/dist/modules/Discount/types.d.ts +0 -4
  7. package/dist/modules/Order/index.d.ts +28 -10
  8. package/dist/modules/Order/index.js +747 -498
  9. package/dist/modules/Order/payment-utils.d.ts +23 -0
  10. package/dist/modules/Order/payment-utils.js +203 -0
  11. package/dist/modules/Order/types.d.ts +33 -3
  12. package/dist/modules/Order/utils.js +4 -4
  13. package/dist/modules/Payment/index.d.ts +2 -0
  14. package/dist/modules/Payment/index.js +78 -49
  15. package/dist/modules/Payment/types.d.ts +26 -24
  16. package/dist/modules/Payment/types.js +2 -0
  17. package/dist/modules/Product/index.d.ts +1 -1
  18. package/dist/modules/Product/types.d.ts +0 -22
  19. package/dist/modules/ProductList/index.d.ts +1 -1
  20. package/dist/modules/ProductList/index.js +2 -4
  21. package/dist/modules/ProductList/types.d.ts +0 -2
  22. package/dist/server/index.d.ts +14 -50
  23. package/dist/server/index.js +1975 -1395
  24. package/dist/server/modules/order/index.d.ts +40 -3
  25. package/dist/server/modules/order/index.js +1200 -501
  26. package/dist/server/modules/order/types.d.ts +11 -3
  27. package/dist/server/modules/order/types.js +1 -1
  28. package/dist/server/modules/products/index.d.ts +7 -26
  29. package/dist/server/modules/products/index.js +76 -167
  30. package/dist/server/modules/products/types.d.ts +0 -14
  31. package/dist/solution/BaseSales/index.d.ts +33 -5
  32. package/dist/solution/BaseSales/index.js +622 -345
  33. package/dist/solution/BaseSales/utils/parseSalesResponse.d.ts +6 -1
  34. package/dist/solution/BookingByStep/index.d.ts +1 -1
  35. package/dist/solution/BookingTicket/index.d.ts +1 -1
  36. package/dist/solution/BookingTicket/index.js +2 -1
  37. package/dist/solution/BookingTicket/types.d.ts +0 -2
  38. package/dist/solution/ShopDiscount/index.js +14 -15
  39. package/dist/utils/payment-number.d.ts +9 -0
  40. package/dist/utils/payment-number.js +69 -0
  41. package/lib/model/strategy/adapter/index.d.ts +0 -4
  42. package/lib/model/strategy/adapter/index.js +2 -13
  43. package/lib/modules/Discount/index.d.ts +2 -5
  44. package/lib/modules/Discount/index.js +3 -23
  45. package/lib/modules/Discount/types.d.ts +0 -4
  46. package/lib/modules/Order/index.d.ts +28 -10
  47. package/lib/modules/Order/index.js +181 -73
  48. package/lib/modules/Order/payment-utils.d.ts +23 -0
  49. package/lib/modules/Order/payment-utils.js +193 -0
  50. package/lib/modules/Order/types.d.ts +33 -3
  51. package/lib/modules/Order/utils.js +2 -3
  52. package/lib/modules/Payment/index.d.ts +2 -0
  53. package/lib/modules/Payment/index.js +33 -12
  54. package/lib/modules/Payment/types.d.ts +26 -24
  55. package/lib/modules/Product/index.d.ts +1 -1
  56. package/lib/modules/Product/types.d.ts +0 -22
  57. package/lib/modules/ProductList/index.d.ts +1 -1
  58. package/lib/modules/ProductList/index.js +2 -4
  59. package/lib/modules/ProductList/types.d.ts +0 -2
  60. package/lib/server/index.d.ts +14 -50
  61. package/lib/server/index.js +633 -214
  62. package/lib/server/modules/order/index.d.ts +40 -3
  63. package/lib/server/modules/order/index.js +434 -31
  64. package/lib/server/modules/order/types.d.ts +11 -3
  65. package/lib/server/modules/products/index.d.ts +7 -26
  66. package/lib/server/modules/products/index.js +35 -114
  67. package/lib/server/modules/products/types.d.ts +0 -14
  68. package/lib/solution/BaseSales/index.d.ts +33 -5
  69. package/lib/solution/BaseSales/index.js +170 -19
  70. package/lib/solution/BaseSales/utils/parseSalesResponse.d.ts +6 -1
  71. package/lib/solution/BookingByStep/index.d.ts +1 -1
  72. package/lib/solution/BookingTicket/index.d.ts +1 -1
  73. package/lib/solution/BookingTicket/index.js +2 -1
  74. package/lib/solution/BookingTicket/types.d.ts +0 -2
  75. package/lib/solution/ShopDiscount/index.js +1 -2
  76. package/lib/utils/payment-number.d.ts +9 -0
  77. package/lib/utils/payment-number.js +64 -0
  78. package/package.json +1 -1
  79. package/dist/model/strategy/adapter/dataVariant/adapter.d.ts +0 -50
  80. package/dist/model/strategy/adapter/dataVariant/adapter.js +0 -167
  81. package/dist/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -89
  82. package/dist/model/strategy/adapter/dataVariant/evaluator.js +0 -780
  83. package/dist/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
  84. package/dist/model/strategy/adapter/dataVariant/examples.js +0 -277
  85. package/dist/model/strategy/adapter/dataVariant/index.d.ts +0 -4
  86. package/dist/model/strategy/adapter/dataVariant/index.js +0 -4
  87. package/dist/model/strategy/adapter/dataVariant/type.d.ts +0 -148
  88. package/dist/model/strategy/adapter/dataVariant/type.js +0 -54
  89. package/lib/model/strategy/adapter/dataVariant/adapter.d.ts +0 -50
  90. package/lib/model/strategy/adapter/dataVariant/adapter.js +0 -149
  91. package/lib/model/strategy/adapter/dataVariant/evaluator.d.ts +0 -89
  92. package/lib/model/strategy/adapter/dataVariant/evaluator.js +0 -583
  93. package/lib/model/strategy/adapter/dataVariant/examples.d.ts +0 -39
  94. package/lib/model/strategy/adapter/dataVariant/examples.js +0 -293
  95. package/lib/model/strategy/adapter/dataVariant/index.d.ts +0 -4
  96. package/lib/model/strategy/adapter/dataVariant/index.js +0 -38
  97. package/lib/model/strategy/adapter/dataVariant/type.d.ts +0 -148
  98. package/lib/model/strategy/adapter/dataVariant/type.js +0 -31
@@ -82,8 +82,13 @@ export interface ISalesBooking {
82
82
  metadata?: Record<string, any> | null;
83
83
  [key: string]: any;
84
84
  }
85
+ export interface ISalesPaymentMetadata extends Record<string, any> {
86
+ /** 刷卡机设备快照;OS 不解析内部字段 */
87
+ card_reader_snapshot?: Record<string, unknown>;
88
+ }
85
89
  export interface ISalesPayment {
86
90
  order_payment_id?: number | null;
91
+ payment_number?: string;
87
92
  custom_payment_id?: number;
88
93
  code?: string;
89
94
  name?: string;
@@ -95,7 +100,7 @@ export interface ISalesPayment {
95
100
  status?: string;
96
101
  payment_time?: string | null;
97
102
  service_charge?: Record<string, any> | null;
98
- metadata?: Record<string, any> | null;
103
+ metadata?: ISalesPaymentMetadata | null;
99
104
  [key: string]: any;
100
105
  }
101
106
  export interface ISalesSurcharge {
@@ -311,7 +311,7 @@ export declare class BookingByStepImpl extends BaseModule implements Module {
311
311
  date: string;
312
312
  status: string;
313
313
  week: string;
314
- weekNum: 0 | 1 | 2 | 3 | 4 | 5 | 6;
314
+ weekNum: 0 | 2 | 1 | 6 | 4 | 3 | 5;
315
315
  }[]>;
316
316
  submitTimeSlot(timeSlots: TimeSliceItem): void;
317
317
  private getScheduleDataByIds;
@@ -322,7 +322,7 @@ export declare class BookingTicketImpl extends BaseSalesImpl implements Module {
322
322
  * 获取当前的客户搜索条件
323
323
  * @returns 当前搜索条件
324
324
  */
325
- getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "skip" | "num">;
325
+ getCurrentCustomerSearchParams(): Omit<import("../../modules").ShopGetCustomerListParams, "num" | "skip">;
326
326
  /**
327
327
  * 获取客户列表状态(包含滚动加载相关状态)
328
328
  * @returns 客户状态
@@ -1993,7 +1993,8 @@ export var BookingTicketImpl = /*#__PURE__*/function (_BaseSalesImpl) {
1993
1993
  }, {
1994
1994
  key: "getBookingConfig",
1995
1995
  value: function getBookingConfig() {
1996
- return this.store.bookingContext.getBookingConfig();
1996
+ var _this$store$bookingCo;
1997
+ return (_this$store$bookingCo = this.store.bookingContext) === null || _this$store$bookingCo === void 0 ? void 0 : _this$store$bookingCo.getBookingConfig();
1997
1998
  }
1998
1999
 
1999
2000
  /** 写入资源全集(来源:`/form/schedule`),同步派生 resourcesOriginMap。 */
@@ -83,8 +83,6 @@ export interface ILoadProductsParams {
83
83
  extension_type?: string[];
84
84
  /** 商品发布状态 */
85
85
  status?: string;
86
- /** 智能定价条件上下文,仅影响策略命中,不参与商品集合筛选 */
87
- strategy_context?: Record<string, any>;
88
86
  }
89
87
  /**
90
88
  * 加载商品详情的参数
@@ -756,7 +756,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
756
756
  key: "loadPrepareConfig",
757
757
  value: function () {
758
758
  var _loadPrepareConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(params) {
759
- var _this$getCustomer2, _this$store$discount7, _this$getDiscountList, _this$store$discount8, _this$store$productLi2, orderId, customerId, prepareConfigResult, goodPassList, scanDiscount, scanDiscountIds, newGoodPassList, newDiscountList, filteredDiscountList, _result3;
759
+ var _this$getCustomer2, _this$store$discount7, _this$getDiscountList, _this$store$discount8, _this$store$productLi2, orderId, customerId, goodPassList, scanDiscount, scanDiscountIds, newGoodPassList, newDiscountList, filteredDiscountList, _result3;
760
760
  return _regeneratorRuntime().wrap(function _callee9$(_context9) {
761
761
  while (1) switch (_context9.prev = _context9.next) {
762
762
  case 0:
@@ -777,8 +777,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
777
777
  order_id: orderId
778
778
  } : {}));
779
779
  case 5:
780
- prepareConfigResult = _context9.sent;
781
- goodPassList = (prepareConfigResult === null || prepareConfigResult === void 0 ? void 0 : prepareConfigResult.discountList) || [];
780
+ goodPassList = _context9.sent;
782
781
  scanDiscount = (_this$getDiscountList = this.getDiscountList()) === null || _this$getDiscountList === void 0 ? void 0 : _this$getDiscountList.filter(function (item) {
783
782
  return item.isScan;
784
783
  }); // goodPassList 里可能有 scanDiscount 重合的部分,goodPassList 需要剔除
@@ -790,35 +789,35 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
790
789
  });
791
790
  newDiscountList = [].concat(_toConsumableArray(scanDiscount), _toConsumableArray(newGoodPassList || [])); // 存储原始优惠券列表
792
791
  this.store.originalDiscountList = newDiscountList;
793
- _context9.next = 14;
792
+ _context9.next = 13;
794
793
  return (_this$store$discount8 = this.store.discount) === null || _this$store$discount8 === void 0 ? void 0 : _this$store$discount8.setOriginalDiscountList(newDiscountList);
795
- case 14:
794
+ case 13:
796
795
  // 根据当前预约时间过滤优惠券列表
797
796
  filteredDiscountList = this.filterDiscountListByBookingTime(newDiscountList, this.store.currentBookingTime);
798
797
  this.store.filteredDiscountList = filteredDiscountList;
799
798
  this.setDiscountList(filteredDiscountList || []);
800
799
  if (!((_this$store$productLi2 = this.store.productList) !== null && _this$store$productLi2 !== void 0 && _this$store$productLi2.length)) {
801
- _context9.next = 21;
800
+ _context9.next = 20;
802
801
  break;
803
802
  }
804
803
  _result3 = this.calcDiscount(this.store.productList);
805
- _context9.next = 21;
804
+ _context9.next = 20;
806
805
  return this.core.effects.emit("".concat(this.name, ":onLoadPrepareCalcResult"), _result3);
807
- case 21:
808
- _context9.next = 23;
806
+ case 20:
807
+ _context9.next = 22;
809
808
  return this.core.effects.emit("".concat(this.name, ":onLoadDiscountList"), filteredDiscountList);
810
- case 23:
811
- _context9.next = 28;
809
+ case 22:
810
+ _context9.next = 27;
812
811
  break;
813
- case 25:
814
- _context9.prev = 25;
812
+ case 24:
813
+ _context9.prev = 24;
815
814
  _context9.t0 = _context9["catch"](0);
816
815
  console.error('[ShopDiscount] 加载准备配置出错:', _context9.t0);
817
- case 28:
816
+ case 27:
818
817
  case "end":
819
818
  return _context9.stop();
820
819
  }
821
- }, _callee9, this, [[0, 25]]);
820
+ }, _callee9, this, [[0, 24]]);
822
821
  }));
823
822
  function loadPrepareConfig(_x9) {
824
823
  return _loadPrepareConfig.apply(this, arguments);
@@ -0,0 +1,9 @@
1
+ export type PaymentNumberAppDataGetter = (key: string) => unknown;
2
+ /**
3
+ * Resolve the synchronous fallback without caching runtime device data.
4
+ */
5
+ export declare function resolvePaymentNumberDevicePrefixFromDeviceId(getAppData: PaymentNumberAppDataGetter): string;
6
+ /**
7
+ * Resolve the latest device segment when a new payment number is generated.
8
+ */
9
+ export declare function resolvePaymentNumberDevicePrefix(getAppData: PaymentNumberAppDataGetter): Promise<string>;
@@ -0,0 +1,69 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _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; }
3
+ 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); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ function normalizeNonEmptyString(value) {
6
+ if (value === undefined || value === null) return null;
7
+ if (typeof value !== 'string' && typeof value !== 'number') return null;
8
+ if (typeof value === 'number' && !Number.isFinite(value)) return null;
9
+ var normalized = String(value).trim();
10
+ return normalized || null;
11
+ }
12
+
13
+ /**
14
+ * Resolve the synchronous fallback without caching runtime device data.
15
+ */
16
+ export function resolvePaymentNumberDevicePrefixFromDeviceId(getAppData) {
17
+ try {
18
+ var deviceId = normalizeNonEmptyString(getAppData('device_id'));
19
+ if (deviceId && deviceId !== '0') return deviceId.slice(-2);
20
+ } catch (_unused) {
21
+ // The stable LOCAL prefix is the final fallback.
22
+ }
23
+ return 'LOCAL';
24
+ }
25
+
26
+ /**
27
+ * Resolve the latest device segment when a new payment number is generated.
28
+ */
29
+ export function resolvePaymentNumberDevicePrefix(_x) {
30
+ return _resolvePaymentNumberDevicePrefix.apply(this, arguments);
31
+ }
32
+ function _resolvePaymentNumberDevicePrefix() {
33
+ _resolvePaymentNumberDevicePrefix = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(getAppData) {
34
+ var getAsyncIotDeviceInfo, info, shortNumber;
35
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
36
+ while (1) switch (_context.prev = _context.next) {
37
+ case 0:
38
+ _context.prev = 0;
39
+ getAsyncIotDeviceInfo = getAppData('async_iot_device_info');
40
+ if (!(typeof getAsyncIotDeviceInfo === 'function')) {
41
+ _context.next = 9;
42
+ break;
43
+ }
44
+ _context.next = 5;
45
+ return getAsyncIotDeviceInfo();
46
+ case 5:
47
+ info = _context.sent;
48
+ shortNumber = normalizeNonEmptyString(info === null || info === void 0 ? void 0 : info.short_number);
49
+ if (!(shortNumber && shortNumber !== '0')) {
50
+ _context.next = 9;
51
+ break;
52
+ }
53
+ return _context.abrupt("return", shortNumber);
54
+ case 9:
55
+ _context.next = 13;
56
+ break;
57
+ case 11:
58
+ _context.prev = 11;
59
+ _context.t0 = _context["catch"](0);
60
+ case 13:
61
+ return _context.abrupt("return", resolvePaymentNumberDevicePrefixFromDeviceId(getAppData));
62
+ case 14:
63
+ case "end":
64
+ return _context.stop();
65
+ }
66
+ }, _callee, null, [[0, 11]]);
67
+ }));
68
+ return _resolvePaymentNumberDevicePrefix.apply(this, arguments);
69
+ }
@@ -5,7 +5,3 @@ export { PromotionEvaluator } from './promotion/evaluator';
5
5
  export { PromotionAdapter } from './promotion/adapter';
6
6
  export { ItemRuleEvaluator } from './itemRule/evaluator';
7
7
  export { ItemRuleAdapter } from './itemRule/adapter';
8
- export { DataVariantEvaluator } from './dataVariant/evaluator';
9
- export { DataVariantAdapter } from './dataVariant/adapter';
10
- export { runDataVariantDemo } from './dataVariant/examples';
11
- export * from './dataVariant/type';
@@ -30,15 +30,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/model/strategy/adapter/index.ts
31
31
  var adapter_exports = {};
32
32
  __export(adapter_exports, {
33
- DataVariantAdapter: () => import_adapter3.DataVariantAdapter,
34
- DataVariantEvaluator: () => import_evaluator4.DataVariantEvaluator,
35
33
  ItemRuleAdapter: () => import_adapter2.ItemRuleAdapter,
36
34
  ItemRuleEvaluator: () => import_evaluator3.ItemRuleEvaluator,
37
35
  PromotionAdapter: () => import_adapter.PromotionAdapter,
38
36
  PromotionEvaluator: () => import_evaluator2.PromotionEvaluator,
39
37
  WalletPassAdapter: () => import_walletPass.default,
40
- WalletPassEvaluator: () => import_evaluator.WalletPassEvaluator,
41
- runDataVariantDemo: () => import_examples.runDataVariantDemo
38
+ WalletPassEvaluator: () => import_evaluator.WalletPassEvaluator
42
39
  });
43
40
  module.exports = __toCommonJS(adapter_exports);
44
41
  __reExport(adapter_exports, require("./type"), module.exports);
@@ -48,21 +45,13 @@ var import_evaluator2 = require("./promotion/evaluator");
48
45
  var import_adapter = require("./promotion/adapter");
49
46
  var import_evaluator3 = require("./itemRule/evaluator");
50
47
  var import_adapter2 = require("./itemRule/adapter");
51
- var import_evaluator4 = require("./dataVariant/evaluator");
52
- var import_adapter3 = require("./dataVariant/adapter");
53
- var import_examples = require("./dataVariant/examples");
54
- __reExport(adapter_exports, require("./dataVariant/type"), module.exports);
55
48
  // Annotate the CommonJS export names for ESM import in node:
56
49
  0 && (module.exports = {
57
- DataVariantAdapter,
58
- DataVariantEvaluator,
59
50
  ItemRuleAdapter,
60
51
  ItemRuleEvaluator,
61
52
  PromotionAdapter,
62
53
  PromotionEvaluator,
63
54
  WalletPassAdapter,
64
55
  WalletPassEvaluator,
65
- runDataVariantDemo,
66
- ...require("./type"),
67
- ...require("./dataVariant/type")
56
+ ...require("./type")
68
57
  });
@@ -1,6 +1,6 @@
1
1
  import { Module, PisellCore, ModuleOptions } from '../../types';
2
2
  import { BaseModule } from '../BaseModule';
3
- import { Discount, DiscountModuleAPI, DiscountWithReason, DiscountPrepareConfigResult } from './types';
3
+ import { Discount, DiscountModuleAPI, DiscountWithReason } from './types';
4
4
  export declare class DiscountModule extends BaseModule implements Module, DiscountModuleAPI {
5
5
  protected defaultName: string;
6
6
  protected defaultVersion: string;
@@ -16,18 +16,15 @@ export declare class DiscountModule extends BaseModule implements Module, Discou
16
16
  getDiscountList(): Discount[];
17
17
  setOriginalDiscountList(originalDiscountList: Discount[]): Promise<void>;
18
18
  getOriginalDiscountList(): Discount[];
19
- private normalizePositiveNumberIds;
20
19
  loadPrepareConfig(params: {
21
20
  action?: 'create' | 'edit';
22
21
  with_good_pass: 0 | 1;
23
22
  with_discount_card: 0 | 1;
24
23
  customer_id: number;
25
24
  with_wallet_pass_holder: 0 | 1;
26
- with_available_wallet_flag?: 0 | 1;
27
- with_available_wallet_pass_flag?: 0 | 1;
28
25
  request_timezone: string;
29
26
  order_id?: number | string;
30
- }): Promise<DiscountPrepareConfigResult>;
27
+ }): Promise<Discount[]>;
31
28
  batchSearch(code: string, options?: {
32
29
  customerId?: number;
33
30
  orderId?: number;
@@ -91,43 +91,23 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
91
91
  getOriginalDiscountList() {
92
92
  return this.store.originalDiscountList || [];
93
93
  }
94
- normalizePositiveNumberIds(values) {
95
- const ids = values.map((value) => Number(value)).filter((value) => Number.isFinite(value) && value > 0);
96
- return Array.from(new Set(ids));
97
- }
98
94
  async loadPrepareConfig(params) {
99
- var _a, _b, _c, _d, _e;
95
+ var _a, _b;
100
96
  if (typeof params.order_id === "string" && params.order_id.startsWith("LOCAL_")) {
101
97
  params.order_id = void 0;
102
98
  }
103
99
  const prepareConfig = await this.request.post(
104
100
  `/order/prepare/config`,
105
- {
106
- ...params,
107
- with_available_wallet_flag: params.with_available_wallet_flag ?? 1,
108
- with_available_wallet_pass_flag: params.with_available_wallet_pass_flag ?? 1
109
- }
101
+ params
110
102
  );
111
103
  const rawDiscountList = [
112
104
  ...((_a = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _a.good_pass_list) || [],
113
105
  ...((_b = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _b.discount_card_list) || []
114
106
  ];
115
- const availableWalletList = [
116
- ...((_c = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _c.avaiable_wallet_list) || [],
117
- ...((_d = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _d.available_wallet_list) || []
118
- ];
119
- const availableWalletPassList = ((_e = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _e.available_wallet_pass_list) || [];
120
- const availableWalletIds = this.normalizePositiveNumberIds([
121
- ...availableWalletList.map((item) => item == null ? void 0 : item.wallet_id),
122
- ...availableWalletPassList.map((item) => item == null ? void 0 : item.product_id)
123
- ]);
124
107
  const goodPassList = this.filterEnabledDiscountList(
125
108
  rawDiscountList
126
109
  ) || [];
127
- return {
128
- discountList: goodPassList,
129
- availableWalletIds
130
- };
110
+ return goodPassList;
131
111
  }
132
112
  async batchSearch(code, options) {
133
113
  const { customerId, orderId } = options || {};
@@ -68,10 +68,6 @@ export interface DiscountWithReason {
68
68
  discountList: Discount[];
69
69
  unavailableReasonKey: DiscountFilterRejectKey | null;
70
70
  }
71
- export interface DiscountPrepareConfigResult {
72
- discountList: Discount[];
73
- availableWalletIds: number[];
74
- }
75
71
  interface ExtensionData {
76
72
  id: number;
77
73
  shop_id: number;
@@ -3,7 +3,7 @@ import { BaseModule } from '../BaseModule';
3
3
  import { OrderModuleAPI, CommitOrderParams, UpdateOrderBookingParams, UpdateOrderProductParams, UpdateOrderProductQuantityParams, CheckoutOrderParams, CancelOrderParams, ChangeBookingStatusParams } from './types';
4
4
  import { CartItem } from '../Cart/types';
5
5
  import { type SubmitPayloadEnhancer } from './utils';
6
- import type { OrderAmountSnapshot, AddProductBookingInput, OrderIdentitySnapshot, OrderPaymentSource, OrderSnapshot, OrderSyncState, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, SubmitSalesOrderParams, OrderProduct, OrderProductIdentity, OrderSummary, OrderTempOrder, OrderPaymentData, SendCustomerPayLinkParams, UpdateTempOrderCustomerInput, OrderCustomerPatch, OrderCustomerView, ReplaceTempOrderOptions, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions } from './types';
6
+ import type { OrderAmountSnapshot, AddProductBookingInput, OrderIdentitySnapshot, OrderPaymentSource, OrderSnapshot, OrderSyncState, SyncPaymentsToOrderParams, SyncPaymentsToOrderResult, SubmitSalesOrderParams, OrderProduct, OrderProductIdentity, OrderSummary, OrderTempOrder, OrderPaymentData, OrderPaymentUpdateOptions, OrderPaymentUpdateResult, SendCustomerPayLinkParams, UpdateTempOrderCustomerInput, OrderCustomerPatch, OrderCustomerView, ReplaceTempOrderOptions, OrderPromotionEvaluator, OrderGiftSelectResolver, OrderUnfulfilledPromotion, OrderLastGiftActions } from './types';
7
7
  import type { ICustomer } from '../AccountList/types';
8
8
  import type { Discount } from '../Discount/types';
9
9
  import { UnavailableReason } from '../Rules/types';
@@ -14,6 +14,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
14
14
  private request;
15
15
  private logger;
16
16
  private window;
17
+ private appPlugin;
17
18
  private cacheId;
18
19
  private salesSummaryModuleName;
19
20
  private rulesHooksOverride?;
@@ -75,7 +76,6 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
75
76
  apply?: boolean;
76
77
  }): Promise<Discount[]>;
77
78
  getDiscountList(): Discount[];
78
- getAvailableWalletIds(): number[];
79
79
  private syncScannedDiscountsToOriginalDiscountList;
80
80
  private ensureEditDiscountConfigForProductChange;
81
81
  scanCode(code: string, customerId?: number): Promise<{
@@ -176,6 +176,9 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
176
176
  };
177
177
  private calculateDepositPaidAmount;
178
178
  private resolveNextOrderPaymentType;
179
+ private getPaymentNumberAppData;
180
+ private getPaymentNumberDevicePrefixSync;
181
+ private getPaymentNumberDevicePrefixAsync;
179
182
  private normalizePaymentSource;
180
183
  private updateTempOrderPaymentStatus;
181
184
  private shouldKeepPaymentStatusAfterAmountRecalc;
@@ -307,19 +310,20 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
307
310
  * 用一组支付来源覆盖当前订单支付项。
308
311
  *
309
312
  * 入参允许来自 PaymentModule 的 PaymentItem,内部统一映射为 Sales 协议:
310
- * uuid -> metadata.unique_payment_number,id -> custom_payment_id,
313
+ * 新支付来源的 uuid 会作为 payment_number 的唯一号段,id -> custom_payment_id,
311
314
  * isSynced 等运行态字段不会进入 tempOrder.payments。
312
315
  */
313
316
  setOrderPayments(payments: OrderPaymentSource[]): OrderPaymentData[];
314
- /** 追加单个支付项,并立即持久化当前 tempOrder。 */
317
+ /** 同步兼容入口:按调用当下的 device_id 或 LOCAL 生成支付编号。 */
315
318
  addOrderPayment(payment: OrderPaymentSource): OrderPaymentData[];
319
+ /** 异步入口:创建支付项时读取最新 IoT 设备短号。 */
320
+ addOrderPaymentAsync(payment: OrderPaymentSource): Promise<OrderPaymentData[]>;
321
+ private addOrderPaymentWithDevicePrefix;
316
322
  /**
317
- * 按支付唯一号、后端支付 ID、自定义支付方式 ID 或旧 uuid 更新支付项。
318
- *
319
- * 该方法服务 PaymentModal 的 void / 编辑场景;更新 metadata 时会做浅合并,
320
- * 避免覆盖 unique_payment_number、现金实付/找零等已有元数据。
323
+ * 默认按支付唯一号精确更新;仅显式指定 legacy 时兼容历史支付标识。
324
+ * metadata 与 transactions 会分别合并,避免覆盖支付会话号和已有交易记录。
321
325
  */
322
- updateOrderPayment(paymentIdentity: string | number, updates: Partial<OrderPaymentData> & Record<string, any>): OrderPaymentData[];
326
+ updateOrderPayment(paymentIdentity: string | number, updates: Partial<OrderPaymentData> & Record<string, any>, options?: OrderPaymentUpdateOptions): Promise<OrderPaymentUpdateResult>;
323
327
  /** 从当前订单支付项中移除指定支付项。 */
324
328
  deleteOrderPayment(paymentIdentity: string | number): OrderPaymentData[];
325
329
  private confirmPendingVoucherPaymentsInList;
@@ -342,7 +346,11 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
342
346
  */
343
347
  updateVoucherOrderPayments(payments: OrderPaymentSource[], options?: {
344
348
  status?: 'paid' | 'payment_pending';
349
+ devicePrefix?: string;
345
350
  }): OrderPaymentData[];
351
+ updateVoucherOrderPaymentsAsync(payments: OrderPaymentSource[], options?: {
352
+ status?: 'paid' | 'payment_pending';
353
+ }): Promise<OrderPaymentData[]>;
346
354
  private shouldMergeProductToOrder;
347
355
  private hasOrderProductLineNote;
348
356
  /**
@@ -427,6 +435,14 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
427
435
  type?: string;
428
436
  }): import("./types").OrderSubmitPayload;
429
437
  applyLocalPrintOrderNumbers(order?: Record<string, any> | null): Promise<OrderTempOrder>;
438
+ saveTempOrderAsDraft<T = any>(params?: {
439
+ cacheId?: string;
440
+ platform?: string;
441
+ businessCode?: string;
442
+ channel?: string;
443
+ type?: string;
444
+ enhancePayload?: SubmitPayloadEnhancer;
445
+ }): Promise<T>;
430
446
  /**
431
447
  * 提交当前 Sales tempOrder。
432
448
  *
@@ -468,7 +484,7 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
468
484
  generateIdempotencyToken(): string;
469
485
  syncPaymentsToOrder<T = any>(params: SyncPaymentsToOrderParams): Promise<SyncPaymentsToOrderResult<T>>;
470
486
  createOrder(params: CommitOrderParams['query']): {
471
- type: "appointment_booking" | "virtual";
487
+ type: "virtual" | "appointment_booking";
472
488
  platform: string;
473
489
  sales_channel: string;
474
490
  order_sales_channel: string;
@@ -531,6 +547,8 @@ export declare class OrderModule extends BaseModule implements Module, OrderModu
531
547
  */
532
548
  private seedAnonymousBookingUidsFromProducts;
533
549
  private normalizeTempOrderForRuntime;
550
+ private isSyntheticDraftOrderIdForRuntime;
551
+ private withoutSyntheticDraftOrderIdForRuntime;
534
552
  private hydrateLinkedBookingIdentity;
535
553
  private pickHydratedDisplayText;
536
554
  private formatHydratedNamePair;