@pisell/pisellos 2.1.174 → 2.1.176

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 (60) hide show
  1. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  2. package/dist/model/strategy/adapter/walletPass/evaluator.d.ts +0 -2
  3. package/dist/model/strategy/adapter/walletPass/evaluator.js +2 -4
  4. package/dist/modules/Discount/index.d.ts +3 -6
  5. package/dist/modules/Discount/index.js +23 -125
  6. package/dist/modules/Discount/types.d.ts +5 -34
  7. package/dist/modules/OpenData/types.d.ts +1 -0
  8. package/dist/modules/ProductList/index.js +13 -6
  9. package/dist/modules/Rules/index.d.ts +2 -12
  10. package/dist/modules/Rules/index.js +113 -377
  11. package/dist/modules/Rules/types.d.ts +2 -2
  12. package/dist/plugins/window.d.ts +0 -2
  13. package/dist/solution/BookingByStep/index.d.ts +1 -1
  14. package/dist/solution/ScanOrder/index.d.ts +7 -5
  15. package/dist/solution/ScanOrder/index.js +123 -31
  16. package/dist/solution/ScanOrder/resourceSchedule.d.ts +12 -0
  17. package/dist/solution/ScanOrder/resourceSchedule.js +300 -0
  18. package/dist/solution/ScanOrder/types.d.ts +9 -1
  19. package/dist/solution/ShopDiscount/index.d.ts +0 -3
  20. package/dist/solution/ShopDiscount/index.js +78 -161
  21. package/dist/solution/ShopDiscount/utils.d.ts +0 -1
  22. package/dist/solution/ShopDiscount/utils.js +1 -40
  23. package/lib/model/strategy/adapter/walletPass/evaluator.d.ts +0 -2
  24. package/lib/model/strategy/adapter/walletPass/evaluator.js +2 -4
  25. package/lib/modules/Discount/index.d.ts +3 -6
  26. package/lib/modules/Discount/index.js +16 -66
  27. package/lib/modules/Discount/types.d.ts +5 -34
  28. package/lib/modules/OpenData/types.d.ts +1 -0
  29. package/lib/modules/ProductList/index.js +8 -1
  30. package/lib/modules/Rules/index.d.ts +2 -12
  31. package/lib/modules/Rules/index.js +69 -303
  32. package/lib/modules/Rules/types.d.ts +2 -2
  33. package/lib/plugins/window.d.ts +0 -2
  34. package/lib/solution/BookingByStep/index.d.ts +1 -1
  35. package/lib/solution/ScanOrder/index.d.ts +7 -5
  36. package/lib/solution/ScanOrder/index.js +90 -12
  37. package/lib/solution/ScanOrder/resourceSchedule.d.ts +12 -0
  38. package/lib/solution/ScanOrder/resourceSchedule.js +272 -0
  39. package/lib/solution/ScanOrder/types.d.ts +9 -1
  40. package/lib/solution/ShopDiscount/index.d.ts +0 -3
  41. package/lib/solution/ShopDiscount/index.js +28 -78
  42. package/lib/solution/ShopDiscount/utils.d.ts +0 -1
  43. package/lib/solution/ShopDiscount/utils.js +1 -42
  44. package/package.json +1 -1
  45. package/dist/modules/Discount/availability.d.ts +0 -7
  46. package/dist/modules/Discount/availability.js +0 -52
  47. package/dist/modules/Discount/entitlementPass.d.ts +0 -34
  48. package/dist/modules/Discount/entitlementPass.js +0 -147
  49. package/dist/modules/Discount/entitlementState.d.ts +0 -8
  50. package/dist/modules/Discount/entitlementState.js +0 -205
  51. package/dist/modules/Rules/entitlementLines.d.ts +0 -8
  52. package/dist/modules/Rules/entitlementLines.js +0 -157
  53. package/lib/modules/Discount/availability.d.ts +0 -7
  54. package/lib/modules/Discount/availability.js +0 -91
  55. package/lib/modules/Discount/entitlementPass.d.ts +0 -34
  56. package/lib/modules/Discount/entitlementPass.js +0 -184
  57. package/lib/modules/Discount/entitlementState.d.ts +0 -8
  58. package/lib/modules/Discount/entitlementState.js +0 -206
  59. package/lib/modules/Rules/entitlementLines.d.ts +0 -8
  60. package/lib/modules/Rules/entitlementLines.js +0 -158
@@ -0,0 +1,300 @@
1
+ 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; } } }; }
2
+ 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); }
3
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
4
+ 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."); }
5
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
6
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
7
+ 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; }
8
+ 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; }
9
+ 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; }
10
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
11
+ 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); }
12
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
+ 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."); }
14
+ 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); }
15
+ 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; }
16
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+ import dayjs from 'dayjs';
19
+ import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';
20
+ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore';
21
+ import { getScheduleStartEndTimePoints } from "../../modules/Schedule/getDateIsInSchedule";
22
+ // Schedule's date expander uses these methods but does not initialize them itself.
23
+ dayjs.extend(isSameOrAfter);
24
+ dayjs.extend(isSameOrBefore);
25
+ var DAY = 24 * 60 * 60 * 1000;
26
+ function dateScalar(value) {
27
+ if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}$/.test(value)) {
28
+ throw new Error('Invalid schedule date');
29
+ }
30
+ var _value$split$map = value.split('-').map(Number),
31
+ _value$split$map2 = _slicedToArray(_value$split$map, 3),
32
+ year = _value$split$map2[0],
33
+ month = _value$split$map2[1],
34
+ day = _value$split$map2[2];
35
+ var result = new Date(0);
36
+ result.setUTCFullYear(year, month - 1, day);
37
+ result.setUTCHours(0, 0, 0, 0);
38
+ if (year < 1 || result.getUTCFullYear() !== year || result.getUTCMonth() !== month - 1 || result.getUTCDate() !== day) {
39
+ throw new Error('Invalid schedule date');
40
+ }
41
+ return result.getTime();
42
+ }
43
+ function timeScalar(value) {
44
+ if (typeof value !== 'string') throw new Error('Invalid schedule time');
45
+ var match = /^(\d{2}):(\d{2})(?::(\d{2}))?$/.exec(value);
46
+ if (!match) throw new Error('Invalid schedule time');
47
+ var _match = _slicedToArray(match, 4),
48
+ hours = _match[1],
49
+ minutes = _match[2],
50
+ _match$ = _match[3],
51
+ seconds = _match$ === void 0 ? '0' : _match$;
52
+ if (Number(hours) > 23 || Number(minutes) > 59 || Number(seconds) > 59) {
53
+ throw new Error('Invalid schedule time');
54
+ }
55
+ return ((Number(hours) * 60 + Number(minutes)) * 60 + Number(seconds)) * 1000;
56
+ }
57
+ function datetimeScalar(value) {
58
+ var allowDateOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
59
+ if (typeof value !== 'string') throw new Error('Invalid schedule datetime');
60
+ var parts = value.split(/[ T]/);
61
+ if (parts.length === 1 && allowDateOnly) return dateScalar(parts[0]);
62
+ if (parts.length !== 2) throw new Error('Invalid schedule datetime');
63
+ return dateScalar(parts[0]) + timeScalar(parts[1]);
64
+ }
65
+ function dayStart(value) {
66
+ return Math.floor(value / DAY) * DAY;
67
+ }
68
+ function dateLabel(value) {
69
+ return new Date(value).toISOString().slice(0, 10);
70
+ }
71
+ function absoluteRange(start, end, allDay) {
72
+ if (allDay) {
73
+ if (dayStart(end) < dayStart(start)) throw new Error('Reversed schedule');
74
+ start = dayStart(start);
75
+ // An explicit following-day midnight is already an exclusive day boundary.
76
+ end = end > start && end === dayStart(end) ? end : dayStart(end) + DAY;
77
+ }
78
+ if (end <= start) throw new Error('Empty or reversed schedule');
79
+ return {
80
+ start: start,
81
+ end: end
82
+ };
83
+ }
84
+ function contains(range, now) {
85
+ return range.start <= now && now < range.end;
86
+ }
87
+ function normalizeDateRanges(value) {
88
+ if (value === undefined || value === null) return [];
89
+ if (!Array.isArray(value)) throw new Error('Invalid schedule date ranges');
90
+ return value.map(function (range) {
91
+ if (!range || dateScalar(range.end) < dateScalar(range.start)) {
92
+ throw new Error('Invalid schedule date range');
93
+ }
94
+ return {
95
+ start: range.start,
96
+ end: range.end
97
+ };
98
+ });
99
+ }
100
+
101
+ /** Reuse Schedule's date/include/exclude rules without its truncated clock ranges. */
102
+ function dateProbe(schedule, initialDate) {
103
+ var _rule$end, _rule$end2;
104
+ var probe = _objectSpread(_objectSpread({}, schedule), {}, {
105
+ type: 'time-slots',
106
+ start_time: "".concat(dateLabel(initialDate), " 00:00:00"),
107
+ time_slot: [{
108
+ id: 0,
109
+ start_time: '00:00',
110
+ end_time: '23:59'
111
+ }]
112
+ });
113
+ if (schedule.repeat_type === 'none') return probe;
114
+ if (schedule.repeat_type !== 'daily' && schedule.repeat_type !== 'weekly') {
115
+ throw new Error('Invalid schedule repeat type');
116
+ }
117
+ var rule = schedule.repeat_rule;
118
+ if (!rule || !Number.isInteger(rule.frequency) || rule.frequency < 1) {
119
+ throw new Error('Invalid schedule repeat frequency');
120
+ }
121
+ if (((_rule$end = rule.end) === null || _rule$end === void 0 ? void 0 : _rule$end.type) !== 'never' && ((_rule$end2 = rule.end) === null || _rule$end2 === void 0 ? void 0 : _rule$end2.type) !== 'date') {
122
+ throw new Error('Invalid schedule repeat end');
123
+ }
124
+ if (rule.end.type === 'date') dateScalar(rule.end.end_date);
125
+ var included = normalizeDateRanges(rule.included_date);
126
+ var excluded = normalizeDateRanges(rule.excluded_date);
127
+ if (schedule.repeat_type === 'weekly') {
128
+ if (!Array.isArray(rule.frequency_date) || !rule.frequency_date.length || rule.frequency_date.some(function (weekday) {
129
+ return !Number.isInteger(weekday) || weekday < 0 || weekday > 6;
130
+ })) {
131
+ throw new Error('Invalid schedule weekdays');
132
+ }
133
+ // Weekly frequency counts calendar weeks, not elapsed seven-day periods.
134
+ // Keep the real first date as an exclusion; included dates retain priority.
135
+ var weekStart = initialDate - new Date(initialDate).getUTCDay() * DAY;
136
+ probe.start_time = "".concat(dateLabel(weekStart), " 00:00:00");
137
+ if (weekStart < initialDate) {
138
+ excluded.push({
139
+ start: dateLabel(weekStart),
140
+ end: dateLabel(initialDate - DAY)
141
+ });
142
+ }
143
+ }
144
+ probe.repeat_rule = _objectSpread(_objectSpread({}, rule), {}, {
145
+ included_date: included,
146
+ excluded_date: excluded
147
+ });
148
+ return probe;
149
+ }
150
+ function recurringRangeAvailable(schedule, initialDate, offsets, now) {
151
+ var probe = dateProbe(schedule, initialDate);
152
+ var maxDaysBack = Math.ceil(Math.max.apply(Math, _toConsumableArray(offsets.map(function (range) {
153
+ return range.end;
154
+ }))) / DAY);
155
+ var today = dayStart(now);
156
+ var _loop = function _loop() {
157
+ var anchor = today - daysBack * DAY;
158
+ // Do not expand an entire year: only dates whose windows can contain now.
159
+ if (!offsets.some(function (range) {
160
+ return contains({
161
+ start: anchor + range.start,
162
+ end: anchor + range.end
163
+ }, now);
164
+ })) {
165
+ return 0; // continue
166
+ }
167
+ if (getScheduleStartEndTimePoints(dateLabel(anchor), [probe]).length > 0) return {
168
+ v: true
169
+ };
170
+ },
171
+ _ret;
172
+ for (var daysBack = 0; daysBack <= maxDaysBack; daysBack += 1) {
173
+ _ret = _loop();
174
+ if (_ret === 0) continue;
175
+ if (_ret) return _ret.v;
176
+ }
177
+ return false;
178
+ }
179
+ function scheduleAvailable(schedule, now) {
180
+ if (!schedule || _typeof(schedule) !== 'object') throw new Error('Invalid schedule');
181
+ var allDay = schedule.is_all === 1;
182
+ if (schedule.type === 'designation') {
183
+ var entries = Array.isArray(schedule.designation) ? schedule.designation : [schedule.designation];
184
+ if (!entries.length) throw new Error('Missing designated schedule');
185
+ // Designation stores explicit absolute intervals, including multi-day spans.
186
+ var ranges = entries.map(function (entry) {
187
+ if (!entry) throw new Error('Invalid designated schedule');
188
+ return absoluteRange(dateScalar(entry.start_date) + (allDay ? 0 : timeScalar(entry.start_time)), dateScalar(entry.end_date) + (allDay ? timeScalar(entry.end_time || '00:00') : timeScalar(entry.end_time)), allDay);
189
+ });
190
+ return ranges.some(function (range) {
191
+ return contains(range, now);
192
+ });
193
+ }
194
+ if (schedule.type === 'standard') {
195
+ var range = absoluteRange(datetimeScalar(schedule.start_time, allDay), datetimeScalar(schedule.end_time, allDay), allDay);
196
+ if (schedule.repeat_type === 'none') return contains(range, now);
197
+ var initialDate = dayStart(range.start);
198
+ return recurringRangeAvailable(schedule, initialDate, [{
199
+ start: range.start - initialDate,
200
+ end: range.end - initialDate
201
+ }], now);
202
+ }
203
+ if (schedule.type === 'time-slots') {
204
+ var _initialDate = dayStart(datetimeScalar(schedule.start_time, true));
205
+ var offsets;
206
+ if (allDay) {
207
+ offsets = [{
208
+ start: 0,
209
+ end: DAY
210
+ }];
211
+ } else {
212
+ if (!Array.isArray(schedule.time_slot) || !schedule.time_slot.length) {
213
+ throw new Error('Missing schedule time slots');
214
+ }
215
+ offsets = schedule.time_slot.map(function (slot) {
216
+ var start = timeScalar(slot === null || slot === void 0 ? void 0 : slot.start_time);
217
+ var end = timeScalar(slot === null || slot === void 0 ? void 0 : slot.end_time);
218
+ if (start === end) throw new Error('Empty schedule time slot');
219
+ if (end < start) end += DAY;
220
+ return {
221
+ start: start,
222
+ end: end
223
+ };
224
+ });
225
+ }
226
+ return recurringRangeAvailable(schedule, _initialDate, offsets, now);
227
+ }
228
+ throw new Error('Unsupported schedule type');
229
+ }
230
+
231
+ /** Current time is projected into the shop's calendar; host timezone is not used. */
232
+ export function evaluateResourceSchedules(_ref) {
233
+ var schedules = _ref.schedules,
234
+ timeZone = _ref.timeZone,
235
+ now = _ref.now;
236
+ var formatter;
237
+ try {
238
+ if (typeof timeZone !== 'string' || !timeZone.trim()) throw new Error('Missing timezone');
239
+ var options = {
240
+ timeZone: timeZone,
241
+ calendar: 'gregory',
242
+ numberingSystem: 'latn',
243
+ year: 'numeric',
244
+ month: '2-digit',
245
+ day: '2-digit',
246
+ hour: '2-digit',
247
+ minute: '2-digit',
248
+ second: '2-digit',
249
+ hourCycle: 'h23'
250
+ };
251
+ formatter = new Intl.DateTimeFormat('en-GB', options);
252
+ } catch (_unused) {
253
+ return {
254
+ available: false,
255
+ reason: 'invalid_timezone'
256
+ };
257
+ }
258
+ if (!(now instanceof Date) || !Number.isFinite(now.getTime()) || !Array.isArray(schedules) || !schedules.length) {
259
+ return {
260
+ available: false,
261
+ reason: 'invalid_schedule'
262
+ };
263
+ }
264
+ var parts = {};
265
+ formatter.formatToParts(now).forEach(function (part) {
266
+ parts[part.type] = part.value;
267
+ });
268
+ var localNow;
269
+ try {
270
+ localNow = datetimeScalar("".concat(parts.year, "-").concat(parts.month, "-").concat(parts.day, " ").concat(parts.hour, ":").concat(parts.minute, ":").concat(parts.second)) + now.getUTCMilliseconds();
271
+ } catch (_unused2) {
272
+ return {
273
+ available: false,
274
+ reason: 'invalid_schedule'
275
+ };
276
+ }
277
+ var invalid = false;
278
+ var _iterator = _createForOfIteratorHelper(schedules),
279
+ _step;
280
+ try {
281
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
282
+ var schedule = _step.value;
283
+ try {
284
+ if (scheduleAvailable(schedule, localNow)) return {
285
+ available: true
286
+ };
287
+ } catch (_unused3) {
288
+ invalid = true;
289
+ }
290
+ }
291
+ } catch (err) {
292
+ _iterator.e(err);
293
+ } finally {
294
+ _iterator.f();
295
+ }
296
+ return {
297
+ available: false,
298
+ reason: invalid ? 'invalid_schedule' : 'outside_schedule'
299
+ };
300
+ }
@@ -27,6 +27,12 @@ export interface ScanOrderConfig {
27
27
  verifyResource: boolean;
28
28
  };
29
29
  }
30
+ export interface ScanOrderFulfillmentModes {
31
+ enablePickup: boolean;
32
+ enableTableService: boolean;
33
+ /** Present only when fulfillment.handover_mode is configured, including an empty list. */
34
+ handoverModes?: string[];
35
+ }
30
36
  export interface ScanOrderOrderProductIdentity {
31
37
  product_id: number | null;
32
38
  product_variant_id: number;
@@ -186,8 +192,10 @@ export interface ScanOrderSubmitPayload extends Omit<ScanOrderTempOrder, 'platfo
186
192
  }>;
187
193
  products: ScanOrderSubmitProduct[];
188
194
  }
189
- export type ScanOrderAvailabilityMode = 'idle' | 'shop_closed' | 'submit_disabled' | 'resource_busy' | 'multiple_orders' | 'additional_order_with_code' | 'additional_order';
195
+ export type ScanOrderAvailabilityMode = 'idle' | 'shop_closed' | 'submit_disabled' | 'resource_busy' | 'resource_block' | 'multiple_orders' | 'additional_order_with_code' | 'additional_order';
190
196
  export interface ScanOrderTableFormRecord {
197
+ /** 桌台可用日程;未配置时不限制可用时段。 */
198
+ schedule?: Array<number | string> | null;
191
199
  policy?: string | null;
192
200
  partyroom_booking?: string | null;
193
201
  capacity?: number | string | null;
@@ -12,8 +12,6 @@ export declare class ShopDiscountImpl extends BaseModule implements Module {
12
12
  private store;
13
13
  private options;
14
14
  private hooks?;
15
- private entitlementPassEnabled;
16
- setEntitlementPassEnabled(enabled: boolean): void;
17
15
  constructor(name?: string, version?: string);
18
16
  initialize(core: PisellCore, options: any): Promise<void>;
19
17
  destroy(): Promise<void>;
@@ -44,7 +42,6 @@ export declare class ShopDiscountImpl extends BaseModule implements Module {
44
42
  batchSearchByProductIds(productIds: number[]): Promise<Discount[]>;
45
43
  scanCode(code: string, customerId?: number): Promise<{
46
44
  isAvailable: boolean;
47
- isAccepted?: boolean;
48
45
  productList: Record<string, any>[];
49
46
  discountList: Discount[];
50
47
  type: "server" | "clientCalc";