@open-tender/store 1.0.24 → 1.0.26

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.
@@ -1,5 +1,5 @@
1
- import { Arrivals, CustomerIdentifier, CustomerIdentify, Menu, Order, Orders, OrderTender, OrderType, ServiceType, SelectOptions, ItemTypes, OrderUpdate, TicketsUpdate, TicketUpdate, TicketStatusUpdate, RequestedAt, RevenueCenter, CheckoutTender, OrderCreatePos, CustomerEndpoints } from '@open-tender/types';
2
- import { CashEvent, CashSummary, DeviceRead, Discount, Discounts, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, GiftCardBalance, GiftCardCredit, InternalSettings, KioskConfig, LevelUp, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Punch, Refund, Settings, Store, Surcharges, Taxes, Tender } from '../types';
1
+ import { Arrivals, CheckoutTender, CustomerEndpoints, CustomerIdentifier, CustomerIdentify, Discount, Discounts, ItemTypes, Menu, Order, Orders, OrderCreatePos, OrderTender, OrderUpdate, OrderType, RequestedAt, RevenueCenter, SelectOptions, ServiceType, TicketUpdate, TicketsUpdate, TicketStatusUpdate } from '@open-tender/types';
2
+ import { CashEvent, CashSummary, DeviceRead, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, GiftCardBalance, GiftCardCredit, InternalSettings, KioskConfig, LevelUp, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Punch, Refund, Settings, Store, Surcharges, Taxes, Tender } from '../types';
3
3
  import { OrdersParams } from '../slices';
4
4
  export interface InitAPI {
5
5
  apiUrl: string;
@@ -1,6 +1,6 @@
1
1
  import { OrderState } from './order';
2
2
  import { AppState } from '../app';
3
- import { CustomerIdentifier, CustomerIdentify, Money, Order, OrderCreate, OrderCreateDiscount, OrderCreateDiscounts, OrderCreateGiftCards, OrderCreatePoints, OrderCreateSurcharge, OrderCreateSurcharges, OrderTender, RequestError, RequestStatus, Taxes } from '@open-tender/types';
3
+ import { CustomerIdentifier, CustomerIdentify, Discount, Money, Order, OrderCreate, OrderCreateDiscount, OrderCreateDiscounts, OrderCreateGiftCards, OrderCreatePoints, OrderCreateSurcharge, OrderCreateSurcharges, OrderTender, RequestError, RequestStatus, Taxes } from '@open-tender/types';
4
4
  import { Tender } from '../types';
5
5
  export interface CheckoutState {
6
6
  activating: RequestStatus;
@@ -30,6 +30,7 @@ interface OrderCreatePos extends Omit<OrderCreate, 'customer'> {
30
30
  }
31
31
  export declare const prepareOrder: (order: OrderState, checkout: CheckoutState) => OrderCreatePos | null;
32
32
  export declare enum CheckoutActionType {
33
+ AddPromoCode = "checkout/addPromoCode",
33
34
  AddTender = "checkout/addTender",
34
35
  RemoveTender = "checkout/removeTender",
35
36
  UpdateTender = "checkout/updateTender",
@@ -41,6 +42,16 @@ export declare enum CheckoutActionType {
41
42
  VoidPosOrder = "checkout/voidPosOrder",
42
43
  ActivateGiftCards = "checkout/activateGiftCards"
43
44
  }
45
+ export declare const addPromoCode: import("@reduxjs/toolkit").AsyncThunk<Discount, string, {
46
+ state: AppState;
47
+ rejectValue: RequestError;
48
+ dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
49
+ extra?: unknown;
50
+ serializedErrorType?: unknown;
51
+ pendingMeta?: unknown;
52
+ fulfilledMeta?: unknown;
53
+ rejectedMeta?: unknown;
54
+ }>;
44
55
  export declare const addTender: import("@reduxjs/toolkit").AsyncThunk<void | OrderTender, Tender, {
45
56
  state: AppState;
46
57
  rejectValue: RequestError;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.checkoutReducer = exports.selectPosCheckTenders = exports.selectPosCheckTotal = exports.selectPosCheckSubtotal = exports.selectPosAmountDue = exports.selectPosPendingDiscounts = exports.selectPosCustomerNameShort = exports.selectPosCustomerName = exports.selectPosCustomer = exports.selectPosCheck = exports.selectPosCheckout = exports.setPhone = exports.setMadeFor = exports.setPoints = exports.setPendingDiscounts = exports.removeCustomer = exports.addCustomer = exports.setTaxExempt = exports.removeTip = exports.addTip = exports.removeTax = exports.addTax = exports.removeDiscount = exports.addDiscount = exports.removeSurcharge = exports.addSurcharge = exports.removeGiftCard = exports.addGiftCard = exports.handleCheckoutError = exports.resetPosCheck = exports.resetPosCheckout = exports.activateGiftCards = exports.voidPosOrder = exports.submitPosOrder = exports.validatePosOrder = exports.completeChipDNA = exports.identifyCustomer = exports.updateCart = exports.updateTender = exports.removeTender = exports.addTender = exports.CheckoutActionType = exports.prepareOrder = void 0;
4
+ exports.checkoutReducer = exports.selectPosCheckTenders = exports.selectPosCheckTotal = exports.selectPosCheckSubtotal = exports.selectPosAmountDue = exports.selectPosPendingDiscounts = exports.selectPosCustomerNameShort = exports.selectPosCustomerName = exports.selectPosCustomer = exports.selectPosCheck = exports.selectPosCheckout = exports.setPhone = exports.setMadeFor = exports.setPoints = exports.setPendingDiscounts = exports.removeCustomer = exports.addCustomer = exports.setTaxExempt = exports.removeTip = exports.addTip = exports.removeTax = exports.addTax = exports.removeDiscount = exports.addDiscount = exports.removeSurcharge = exports.addSurcharge = exports.removeGiftCard = exports.addGiftCard = exports.handleCheckoutError = exports.resetPosCheck = exports.resetPosCheckout = exports.activateGiftCards = exports.voidPosOrder = exports.submitPosOrder = exports.validatePosOrder = exports.completeChipDNA = exports.identifyCustomer = exports.updateCart = exports.updateTender = exports.removeTender = exports.addTender = exports.addPromoCode = exports.CheckoutActionType = exports.prepareOrder = void 0;
5
5
  var tslib_1 = require("tslib");
6
6
  var toolkit_1 = require("@reduxjs/toolkit");
7
7
  var uuid_1 = require("uuid");
@@ -79,6 +79,7 @@ var prepareOrder = function (order, checkout) {
79
79
  exports.prepareOrder = prepareOrder;
80
80
  var CheckoutActionType;
81
81
  (function (CheckoutActionType) {
82
+ CheckoutActionType["AddPromoCode"] = "checkout/addPromoCode";
82
83
  CheckoutActionType["AddTender"] = "checkout/addTender";
83
84
  CheckoutActionType["RemoveTender"] = "checkout/removeTender";
84
85
  CheckoutActionType["UpdateTender"] = "checkout/updateTender";
@@ -90,10 +91,30 @@ var CheckoutActionType;
90
91
  CheckoutActionType["VoidPosOrder"] = "checkout/voidPosOrder";
91
92
  CheckoutActionType["ActivateGiftCards"] = "checkout/activateGiftCards";
92
93
  })(CheckoutActionType || (exports.CheckoutActionType = CheckoutActionType = {}));
94
+ exports.addPromoCode = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.AddPromoCode, function (promoCode, _a) {
95
+ var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
96
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
97
+ var config, api, err_1;
98
+ return tslib_1.__generator(this, function (_b) {
99
+ switch (_b.label) {
100
+ case 0:
101
+ _b.trys.push([0, 2, , 3]);
102
+ config = getState().config;
103
+ api = config.api;
104
+ return [4 /*yield*/, api.getDiscount(promoCode)];
105
+ case 1: return [2 /*return*/, _b.sent()];
106
+ case 2:
107
+ err_1 = _b.sent();
108
+ return [2 /*return*/, rejectWithValue(err_1)];
109
+ case 3: return [2 /*return*/];
110
+ }
111
+ });
112
+ });
113
+ });
93
114
  exports.addTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.AddTender, function (tender, _a) {
94
115
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
95
116
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
96
- var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, card_token, callback, data, err_1;
117
+ var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, card_token, callback, data, err_2;
97
118
  return tslib_1.__generator(this, function (_c) {
98
119
  switch (_c.label) {
99
120
  case 0:
@@ -125,8 +146,8 @@ exports.addTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.AddTender
125
146
  _c.label = 4;
126
147
  case 4: return [2 /*return*/, response];
127
148
  case 5:
128
- err_1 = _c.sent();
129
- return [2 /*return*/, rejectWithValue(err_1)];
149
+ err_2 = _c.sent();
150
+ return [2 /*return*/, rejectWithValue(err_2)];
130
151
  case 6: return [2 /*return*/];
131
152
  }
132
153
  });
@@ -135,7 +156,7 @@ exports.addTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.AddTender
135
156
  exports.removeTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.RemoveTender, function (index, _a) {
136
157
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
137
158
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
138
- var api, orderId, response, err_2;
159
+ var api, orderId, response, err_3;
139
160
  return tslib_1.__generator(this, function (_b) {
140
161
  switch (_b.label) {
141
162
  case 0:
@@ -150,8 +171,8 @@ exports.removeTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Remove
150
171
  dispatch((0, exports.validatePosOrder)());
151
172
  return [2 /*return*/, response];
152
173
  case 2:
153
- err_2 = _b.sent();
154
- return [2 /*return*/, rejectWithValue(err_2)];
174
+ err_3 = _b.sent();
175
+ return [2 /*return*/, rejectWithValue(err_3)];
155
176
  case 3: return [2 /*return*/];
156
177
  }
157
178
  });
@@ -160,7 +181,7 @@ exports.removeTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Remove
160
181
  exports.updateTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.UpdateTender, function (_, _a) {
161
182
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
162
183
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
163
- var api, orderId, check, tenders, totals, tender, index, amountTender, amountDue, amount, updatedTender, response, err_3;
184
+ var api, orderId, check, tenders, totals, tender, index, amountTender, amountDue, amount, updatedTender, response, err_4;
164
185
  return tslib_1.__generator(this, function (_b) {
165
186
  switch (_b.label) {
166
187
  case 0:
@@ -196,8 +217,8 @@ exports.updateTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Update
196
217
  return [2 /*return*/];
197
218
  case 3: return [3 /*break*/, 5];
198
219
  case 4:
199
- err_3 = _b.sent();
200
- return [2 /*return*/, rejectWithValue(err_3)];
220
+ err_4 = _b.sent();
221
+ return [2 /*return*/, rejectWithValue(err_4)];
201
222
  case 5: return [2 /*return*/];
202
223
  }
203
224
  });
@@ -239,7 +260,7 @@ exports.identifyCustomer = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Id
239
260
  var data = _a.data, callback = _a.callback, showError = _a.showError;
240
261
  var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
241
262
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
242
- var api, response, customer, discounts, points, discount, autoDiscounts, err_4, errMsg;
263
+ var api, response, customer, discounts, points, discount, autoDiscounts, err_5, errMsg;
243
264
  return tslib_1.__generator(this, function (_c) {
244
265
  switch (_c.label) {
245
266
  case 0:
@@ -277,11 +298,11 @@ exports.identifyCustomer = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Id
277
298
  _c.label = 6;
278
299
  case 6: return [2 /*return*/, response];
279
300
  case 7:
280
- err_4 = _c.sent();
301
+ err_5 = _c.sent();
281
302
  if (showError) {
282
- errMsg = err_4.status === 404
303
+ errMsg = err_5.status === 404
283
304
  ? 'Customer not found. Please try again.'
284
- : err_4.detail || err_4.message;
305
+ : err_5.detail || err_5.message;
285
306
  dispatch((0, alerts_1.addAlert)(errMsg));
286
307
  }
287
308
  if (callback) {
@@ -289,7 +310,7 @@ exports.identifyCustomer = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Id
289
310
  return [2 /*return*/];
290
311
  }
291
312
  else {
292
- return [2 /*return*/, rejectWithValue(err_4)];
313
+ return [2 /*return*/, rejectWithValue(err_5)];
293
314
  }
294
315
  return [3 /*break*/, 8];
295
316
  case 8: return [2 /*return*/];
@@ -300,7 +321,7 @@ exports.identifyCustomer = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Id
300
321
  exports.completeChipDNA = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.CompleteChipDNA, function (card_token, _a) {
301
322
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
302
323
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
303
- var _b, config, checkout, hasLoyalty, data, callback, err_5;
324
+ var _b, config, checkout, hasLoyalty, data, callback, err_6;
304
325
  return tslib_1.__generator(this, function (_c) {
305
326
  switch (_c.label) {
306
327
  case 0:
@@ -316,8 +337,8 @@ exports.completeChipDNA = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Com
316
337
  case 2: return [2 /*return*/, _c.sent()];
317
338
  case 3: return [3 /*break*/, 5];
318
339
  case 4:
319
- err_5 = _c.sent();
320
- return [2 /*return*/, rejectWithValue(err_5)];
340
+ err_6 = _c.sent();
341
+ return [2 /*return*/, rejectWithValue(err_6)];
321
342
  case 5: return [2 /*return*/];
322
343
  }
323
344
  });
@@ -326,7 +347,7 @@ exports.completeChipDNA = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Com
326
347
  exports.validatePosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ValidatePosOrder, function (_, _a) {
327
348
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
328
349
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
329
- var _b, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_6, errors, fields;
350
+ var _b, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_7, errors, fields;
330
351
  var _c;
331
352
  return tslib_1.__generator(this, function (_d) {
332
353
  switch (_d.label) {
@@ -347,13 +368,13 @@ exports.validatePosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Va
347
368
  toRemove === null || toRemove === void 0 ? void 0 : toRemove.forEach(function (id) { return dispatch((0, exports.removeDiscount)({ id: id })); });
348
369
  return [2 /*return*/, check];
349
370
  case 2:
350
- err_6 = _d.sent();
351
- errors = (0, utils_1.handleRespError)(err_6).errors;
371
+ err_7 = _d.sent();
372
+ errors = (0, utils_1.handleRespError)(err_7).errors;
352
373
  fields = errors ? Object.keys(errors) : [];
353
374
  if (fields.includes('order_uuid')) {
354
375
  dispatch((0, order_1.setOrderId)((0, uuid_1.v4)()));
355
376
  }
356
- return [2 /*return*/, rejectWithValue(err_6)];
377
+ return [2 /*return*/, rejectWithValue(err_7)];
357
378
  case 3: return [2 /*return*/];
358
379
  }
359
380
  });
@@ -362,7 +383,7 @@ exports.validatePosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Va
362
383
  exports.submitPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.SubmitPosOrder, function (_, _a) {
363
384
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
364
385
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
365
- var _b, config, order, checkout, preparedOrder, response, err_7, errors, fields;
386
+ var _b, config, order, checkout, preparedOrder, response, err_8, errors, fields;
366
387
  return tslib_1.__generator(this, function (_c) {
367
388
  switch (_c.label) {
368
389
  case 0:
@@ -377,13 +398,13 @@ exports.submitPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Subm
377
398
  dispatch((0, pos_1.setLastOrderId)(response.order_uuid || null));
378
399
  return [2 /*return*/, response];
379
400
  case 2:
380
- err_7 = _c.sent();
381
- errors = (0, utils_1.handleRespError)(err_7).errors;
401
+ err_8 = _c.sent();
402
+ errors = (0, utils_1.handleRespError)(err_8).errors;
382
403
  fields = errors ? Object.keys(errors) : [];
383
404
  if (fields.includes('order_uuid')) {
384
405
  dispatch((0, order_1.setOrderId)((0, uuid_1.v4)()));
385
406
  }
386
- return [2 /*return*/, rejectWithValue(err_7)];
407
+ return [2 /*return*/, rejectWithValue(err_8)];
387
408
  case 3: return [2 /*return*/];
388
409
  }
389
410
  });
@@ -392,7 +413,7 @@ exports.submitPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Subm
392
413
  exports.voidPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.VoidPosOrder, function (_, _a) {
393
414
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
394
415
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
395
- var _b, config, order, checkout, preparedOrder, err_8;
416
+ var _b, config, order, checkout, preparedOrder, err_9;
396
417
  return tslib_1.__generator(this, function (_c) {
397
418
  switch (_c.label) {
398
419
  case 0:
@@ -404,8 +425,8 @@ exports.voidPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.VoidPo
404
425
  return [4 /*yield*/, config.api.deleteOrder(preparedOrder)];
405
426
  case 1: return [2 /*return*/, _c.sent()];
406
427
  case 2:
407
- err_8 = _c.sent();
408
- return [2 /*return*/, rejectWithValue(err_8)];
428
+ err_9 = _c.sent();
429
+ return [2 /*return*/, rejectWithValue(err_9)];
409
430
  case 3: return [2 /*return*/];
410
431
  }
411
432
  });
@@ -414,7 +435,7 @@ exports.voidPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.VoidPo
414
435
  exports.activateGiftCards = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.ActivateGiftCards, function (_, _a) {
415
436
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
416
437
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
417
- var api_1, giftCards, requests, err_9;
438
+ var api_1, giftCards, requests, err_10;
418
439
  return tslib_1.__generator(this, function (_b) {
419
440
  switch (_b.label) {
420
441
  case 0:
@@ -430,8 +451,8 @@ exports.activateGiftCards = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.A
430
451
  return [4 /*yield*/, Promise.all(requests)];
431
452
  case 1: return [2 /*return*/, _b.sent()];
432
453
  case 2:
433
- err_9 = _b.sent();
434
- return [2 /*return*/, rejectWithValue(err_9)];
454
+ err_10 = _b.sent();
455
+ return [2 /*return*/, rejectWithValue(err_10)];
435
456
  case 3: return [2 /*return*/];
436
457
  }
437
458
  });
@@ -531,6 +552,20 @@ var checkoutSlice = (0, toolkit_1.createSlice)({
531
552
  },
532
553
  extraReducers: function (builder) {
533
554
  builder
555
+ .addCase(exports.addPromoCode.fulfilled, function (state, action) {
556
+ var discount_id = action.payload.discount_id;
557
+ state.discounts.push({ id: discount_id });
558
+ state.loading = 'idle';
559
+ state.error = null;
560
+ })
561
+ .addCase(exports.addPromoCode.pending, function (state) {
562
+ state.loading = 'pending';
563
+ state.authorizing = 'pending';
564
+ })
565
+ .addCase(exports.addPromoCode.rejected, function (state, action) {
566
+ state.loading = 'idle';
567
+ state.error = action.payload;
568
+ })
534
569
  .addCase(exports.addTender.fulfilled, function (state) {
535
570
  state.loading = 'idle';
536
571
  state.authorizing = 'idle';
@@ -1,10 +1,9 @@
1
- import { Discounts, RequestError, RequestStatus, Version } from '../types';
2
1
  import { AppState } from '../app';
2
+ import { Discounts, RequestError, RequestStatus } from '@open-tender/types';
3
3
  export interface DiscountsState {
4
4
  entities: Discounts;
5
5
  loading: RequestStatus;
6
6
  error: RequestError;
7
- version: Version;
8
7
  }
9
8
  export declare enum DiscountsActionType {
10
9
  GetDiscounts = "discounts/fetchDiscounts"
@@ -7,8 +7,7 @@ var types_1 = require("./types");
7
7
  var initialState = {
8
8
  entities: [],
9
9
  loading: 'idle',
10
- error: null,
11
- version: null
10
+ error: null
12
11
  };
13
12
  var DiscountsActionType;
14
13
  (function (DiscountsActionType) {
@@ -1,4 +1,4 @@
1
- import { Cart, CartCounts, CartItem, MenuCategory, MenuRevenueCenter, Messages, OrderType, PrepType, RequestError, RequestStatus, RequestedAt, ServiceType } from '@open-tender/types';
1
+ import { Cart, CartCounts, CartItem, MenuCategory, MenuRevenueCenter, Messages, OrderCart, OrderType, PrepType, RequestError, RequestStatus, RequestedAt, ServiceType } from '@open-tender/types';
2
2
  import { AppState } from '../app';
3
3
  export interface OrderState {
4
4
  orderId: string | null;
@@ -19,8 +19,21 @@ export interface OrderState {
19
19
  loading: RequestStatus;
20
20
  }
21
21
  export declare enum OrderActionType {
22
- FetchRevenueCenter = "orders/fetchRevenueCenter"
22
+ Reorder = "orders/reorder"
23
23
  }
24
+ export declare const reorder: import("@reduxjs/toolkit").AsyncThunk<{
25
+ cart: Cart;
26
+ cartCounts: CartCounts;
27
+ }, OrderCart, {
28
+ state: AppState;
29
+ rejectValue: RequestError;
30
+ dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
31
+ extra?: unknown;
32
+ serializedErrorType?: unknown;
33
+ pendingMeta?: unknown;
34
+ fulfilledMeta?: unknown;
35
+ rejectedMeta?: unknown;
36
+ }>;
24
37
  export declare const resetOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetOrder">, resetOrderType: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetOrderType">, resetRevenueCenter: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetRevenueCenter">, resetLocation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetLocation">, resetCart: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetCart">, resetMessages: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetMessages">, resetAlert: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetAlert">, setAlert: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setAlert">, setOrderId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setOrderId">, setOrderType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setOrderType">, setServiceType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setServiceType">, setRequestedAt: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setRequestedAt">, setRevenueCenterId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setRevenueCenterId">, setTable: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setTable">, setPrepType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setPrepType">, setOrderServiceType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setOrderServiceType">, setMenuVars: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setMenuVars">, setCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCart">, setCurrentVendor: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCurrentVendor">, setCurrentCategory: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCurrentCategory">, setCurrentItem: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCurrentItem">, addItemToCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/addItemToCart">, removeItemFromCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/removeItemFromCart">, incrementItemInCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/incrementItemInCart">, decrementItemInCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/decrementItemInCart">, addMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/addMessage">, removeMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/removeMessage">;
25
38
  export declare const selectOrder: (state: AppState) => OrderState;
26
39
  export declare const selectAlert: (state: AppState) => string | null;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.selectCartValidate = exports.selectCanOrder = exports.selectCartCounts = exports.selectCartTotals = exports.selectCartTotal = exports.selectCartQuantity = exports.selectCartIds = exports.selectCart = exports.selectCurrentItem = exports.selectCurrentCategory = exports.selectCurrentVendor = exports.selectMenuVars = exports.selectMenuSlug = exports.selectRevenueCenterId = exports.selectRequestedAt = exports.selectServiceTypeName = exports.selectServiceType = exports.selectOrderTypeName = exports.selectOrderType = exports.selectMessages = exports.selectAlert = exports.selectOrder = exports.removeMessage = exports.addMessage = exports.decrementItemInCart = exports.incrementItemInCart = exports.removeItemFromCart = exports.addItemToCart = exports.setCurrentItem = exports.setCurrentCategory = exports.setCurrentVendor = exports.setCart = exports.setMenuVars = exports.setOrderServiceType = exports.setPrepType = exports.setTable = exports.setRevenueCenterId = exports.setRequestedAt = exports.setServiceType = exports.setOrderType = exports.setOrderId = exports.setAlert = exports.resetAlert = exports.resetMessages = exports.resetCart = exports.resetLocation = exports.resetRevenueCenter = exports.resetOrderType = exports.resetOrder = exports.OrderActionType = void 0;
5
- exports.orderReducer = void 0;
4
+ exports.selectCanOrder = exports.selectCartCounts = exports.selectCartTotals = exports.selectCartTotal = exports.selectCartQuantity = exports.selectCartIds = exports.selectCart = exports.selectCurrentItem = exports.selectCurrentCategory = exports.selectCurrentVendor = exports.selectMenuVars = exports.selectMenuSlug = exports.selectRevenueCenterId = exports.selectRequestedAt = exports.selectServiceTypeName = exports.selectServiceType = exports.selectOrderTypeName = exports.selectOrderType = exports.selectMessages = exports.selectAlert = exports.selectOrder = exports.removeMessage = exports.addMessage = exports.decrementItemInCart = exports.incrementItemInCart = exports.removeItemFromCart = exports.addItemToCart = exports.setCurrentItem = exports.setCurrentCategory = exports.setCurrentVendor = exports.setCart = exports.setMenuVars = exports.setOrderServiceType = exports.setPrepType = exports.setTable = exports.setRevenueCenterId = exports.setRequestedAt = exports.setServiceType = exports.setOrderType = exports.setOrderId = exports.setAlert = exports.resetAlert = exports.resetMessages = exports.resetCart = exports.resetLocation = exports.resetRevenueCenter = exports.resetOrderType = exports.resetOrder = exports.reorder = exports.OrderActionType = void 0;
5
+ exports.orderReducer = exports.selectCartValidate = void 0;
6
6
  var tslib_1 = require("tslib");
7
7
  var toolkit_1 = require("@reduxjs/toolkit");
8
8
  var utils_1 = require("@open-tender/utils");
@@ -27,8 +27,34 @@ var initialState = {
27
27
  };
28
28
  var OrderActionType;
29
29
  (function (OrderActionType) {
30
- OrderActionType["FetchRevenueCenter"] = "orders/fetchRevenueCenter";
30
+ OrderActionType["Reorder"] = "orders/reorder";
31
31
  })(OrderActionType || (exports.OrderActionType = OrderActionType = {}));
32
+ exports.reorder = (0, toolkit_1.createAsyncThunk)(OrderActionType.Reorder, function (orderCart, _a) {
33
+ var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
34
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
35
+ var _b, config, order, revenueCenterId, requestedAt, serviceType, categories, menuItems, simpleCart, _c, cart, cartCounts, err_1;
36
+ return tslib_1.__generator(this, function (_d) {
37
+ switch (_d.label) {
38
+ case 0:
39
+ _d.trys.push([0, 2, , 3]);
40
+ _b = getState(), config = _b.config, order = _b.order;
41
+ revenueCenterId = order.revenueCenterId, requestedAt = order.requestedAt;
42
+ serviceType = order.serviceType || 'WALKIN';
43
+ return [4 /*yield*/, config.api.getMenu(revenueCenterId || 0, serviceType, requestedAt)];
44
+ case 1:
45
+ categories = (_d.sent()).menu;
46
+ menuItems = Object.values((0, utils_1.makeMenuItemLookup)(categories));
47
+ simpleCart = (0, utils_1.makeSimpleCart)(orderCart);
48
+ _c = (0, utils_1.rehydrateCart)(menuItems, simpleCart), cart = _c.cart, cartCounts = _c.cartCounts;
49
+ return [2 /*return*/, { cart: cart, cartCounts: cartCounts }];
50
+ case 2:
51
+ err_1 = _d.sent();
52
+ return [2 /*return*/, rejectWithValue(err_1)];
53
+ case 3: return [2 /*return*/];
54
+ }
55
+ });
56
+ });
57
+ });
32
58
  var orderSlice = (0, toolkit_1.createSlice)({
33
59
  name: types_1.ReducerType.Orders,
34
60
  initialState: initialState,
@@ -144,6 +170,25 @@ var orderSlice = (0, toolkit_1.createSlice)({
144
170
  removeMessage: function (state, action) {
145
171
  state.messages = state.messages.filter(function (i) { return i.id !== action.payload; });
146
172
  }
173
+ },
174
+ extraReducers: function (builder) {
175
+ builder
176
+ .addCase(exports.reorder.fulfilled, function (state, action) {
177
+ state.cart = action.payload.cart;
178
+ state.cartCounts = action.payload.cartCounts;
179
+ state.serviceType = 'WALKIN';
180
+ state.orderType = 'OLO';
181
+ state.prepType = 'EAT_HERE';
182
+ state.loading = 'idle';
183
+ state.error = null;
184
+ })
185
+ .addCase(exports.reorder.pending, function (state) {
186
+ state.loading = 'pending';
187
+ })
188
+ .addCase(exports.reorder.rejected, function (state, action) {
189
+ state.error = action.payload;
190
+ state.loading = 'idle';
191
+ });
147
192
  }
148
193
  });
149
194
  exports.resetOrder = (_a = orderSlice.actions, _a.resetOrder), exports.resetOrderType = _a.resetOrderType, exports.resetRevenueCenter = _a.resetRevenueCenter, exports.resetLocation = _a.resetLocation, exports.resetCart = _a.resetCart, exports.resetMessages = _a.resetMessages, exports.resetAlert = _a.resetAlert, exports.setAlert = _a.setAlert, exports.setOrderId = _a.setOrderId, exports.setOrderType = _a.setOrderType, exports.setServiceType = _a.setServiceType, exports.setRequestedAt = _a.setRequestedAt, exports.setRevenueCenterId = _a.setRevenueCenterId, exports.setTable = _a.setTable, exports.setPrepType = _a.setPrepType, exports.setOrderServiceType = _a.setOrderServiceType, exports.setMenuVars = _a.setMenuVars, exports.setCart = _a.setCart, exports.setCurrentVendor = _a.setCurrentVendor, exports.setCurrentCategory = _a.setCurrentCategory, exports.setCurrentItem = _a.setCurrentItem, exports.addItemToCart = _a.addItemToCart, exports.removeItemFromCart = _a.removeItemFromCart, exports.incrementItemInCart = _a.incrementItemInCart, exports.decrementItemInCart = _a.decrementItemInCart, exports.addMessage = _a.addMessage, exports.removeMessage = _a.removeMessage;
@@ -1,5 +1,5 @@
1
- import { Arrivals, CustomerIdentifier, CustomerIdentify, Menu, Order, Orders, OrderTender, OrderType, ServiceType, SelectOptions, ItemTypes, OrderUpdate, TicketsUpdate, TicketUpdate, TicketStatusUpdate, RequestedAt, RevenueCenter, CheckoutTender, OrderCreatePos, CustomerEndpoints } from '@open-tender/types';
2
- import { CashEvent, CashSummary, DeviceRead, Discount, Discounts, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, GiftCardBalance, GiftCardCredit, InternalSettings, KioskConfig, LevelUp, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Punch, Refund, Settings, Store, Surcharges, Taxes, Tender } from '../types';
1
+ import { Arrivals, CheckoutTender, CustomerEndpoints, CustomerIdentifier, CustomerIdentify, Discount, Discounts, ItemTypes, Menu, Order, Orders, OrderCreatePos, OrderTender, OrderUpdate, OrderType, RequestedAt, RevenueCenter, SelectOptions, ServiceType, TicketUpdate, TicketsUpdate, TicketStatusUpdate } from '@open-tender/types';
2
+ import { CashEvent, CashSummary, DeviceRead, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, GiftCardBalance, GiftCardCredit, InternalSettings, KioskConfig, LevelUp, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Punch, Refund, Settings, Store, Surcharges, Taxes, Tender } from '../types';
3
3
  import { OrdersParams } from '../slices';
4
4
  export interface InitAPI {
5
5
  apiUrl: string;
@@ -1,6 +1,6 @@
1
1
  import { OrderState } from './order';
2
2
  import { AppState } from '../app';
3
- import { CustomerIdentifier, CustomerIdentify, Money, Order, OrderCreate, OrderCreateDiscount, OrderCreateDiscounts, OrderCreateGiftCards, OrderCreatePoints, OrderCreateSurcharge, OrderCreateSurcharges, OrderTender, RequestError, RequestStatus, Taxes } from '@open-tender/types';
3
+ import { CustomerIdentifier, CustomerIdentify, Discount, Money, Order, OrderCreate, OrderCreateDiscount, OrderCreateDiscounts, OrderCreateGiftCards, OrderCreatePoints, OrderCreateSurcharge, OrderCreateSurcharges, OrderTender, RequestError, RequestStatus, Taxes } from '@open-tender/types';
4
4
  import { Tender } from '../types';
5
5
  export interface CheckoutState {
6
6
  activating: RequestStatus;
@@ -30,6 +30,7 @@ interface OrderCreatePos extends Omit<OrderCreate, 'customer'> {
30
30
  }
31
31
  export declare const prepareOrder: (order: OrderState, checkout: CheckoutState) => OrderCreatePos | null;
32
32
  export declare enum CheckoutActionType {
33
+ AddPromoCode = "checkout/addPromoCode",
33
34
  AddTender = "checkout/addTender",
34
35
  RemoveTender = "checkout/removeTender",
35
36
  UpdateTender = "checkout/updateTender",
@@ -41,6 +42,16 @@ export declare enum CheckoutActionType {
41
42
  VoidPosOrder = "checkout/voidPosOrder",
42
43
  ActivateGiftCards = "checkout/activateGiftCards"
43
44
  }
45
+ export declare const addPromoCode: import("@reduxjs/toolkit").AsyncThunk<Discount, string, {
46
+ state: AppState;
47
+ rejectValue: RequestError;
48
+ dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
49
+ extra?: unknown;
50
+ serializedErrorType?: unknown;
51
+ pendingMeta?: unknown;
52
+ fulfilledMeta?: unknown;
53
+ rejectedMeta?: unknown;
54
+ }>;
44
55
  export declare const addTender: import("@reduxjs/toolkit").AsyncThunk<void | OrderTender, Tender, {
45
56
  state: AppState;
46
57
  rejectValue: RequestError;
@@ -75,6 +75,7 @@ export var prepareOrder = function (order, checkout) {
75
75
  };
76
76
  export var CheckoutActionType;
77
77
  (function (CheckoutActionType) {
78
+ CheckoutActionType["AddPromoCode"] = "checkout/addPromoCode";
78
79
  CheckoutActionType["AddTender"] = "checkout/addTender";
79
80
  CheckoutActionType["RemoveTender"] = "checkout/removeTender";
80
81
  CheckoutActionType["UpdateTender"] = "checkout/updateTender";
@@ -86,10 +87,30 @@ export var CheckoutActionType;
86
87
  CheckoutActionType["VoidPosOrder"] = "checkout/voidPosOrder";
87
88
  CheckoutActionType["ActivateGiftCards"] = "checkout/activateGiftCards";
88
89
  })(CheckoutActionType || (CheckoutActionType = {}));
90
+ export var addPromoCode = createAsyncThunk(CheckoutActionType.AddPromoCode, function (promoCode, _a) {
91
+ var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
92
+ return __awaiter(void 0, void 0, void 0, function () {
93
+ var config, api, err_1;
94
+ return __generator(this, function (_b) {
95
+ switch (_b.label) {
96
+ case 0:
97
+ _b.trys.push([0, 2, , 3]);
98
+ config = getState().config;
99
+ api = config.api;
100
+ return [4 /*yield*/, api.getDiscount(promoCode)];
101
+ case 1: return [2 /*return*/, _b.sent()];
102
+ case 2:
103
+ err_1 = _b.sent();
104
+ return [2 /*return*/, rejectWithValue(err_1)];
105
+ case 3: return [2 /*return*/];
106
+ }
107
+ });
108
+ });
109
+ });
89
110
  export var addTender = createAsyncThunk(CheckoutActionType.AddTender, function (tender, _a) {
90
111
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
91
112
  return __awaiter(void 0, void 0, void 0, function () {
92
- var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, card_token, callback, data, err_1;
113
+ var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, card_token, callback, data, err_2;
93
114
  return __generator(this, function (_c) {
94
115
  switch (_c.label) {
95
116
  case 0:
@@ -121,8 +142,8 @@ export var addTender = createAsyncThunk(CheckoutActionType.AddTender, function (
121
142
  _c.label = 4;
122
143
  case 4: return [2 /*return*/, response];
123
144
  case 5:
124
- err_1 = _c.sent();
125
- return [2 /*return*/, rejectWithValue(err_1)];
145
+ err_2 = _c.sent();
146
+ return [2 /*return*/, rejectWithValue(err_2)];
126
147
  case 6: return [2 /*return*/];
127
148
  }
128
149
  });
@@ -131,7 +152,7 @@ export var addTender = createAsyncThunk(CheckoutActionType.AddTender, function (
131
152
  export var removeTender = createAsyncThunk(CheckoutActionType.RemoveTender, function (index, _a) {
132
153
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
133
154
  return __awaiter(void 0, void 0, void 0, function () {
134
- var api, orderId, response, err_2;
155
+ var api, orderId, response, err_3;
135
156
  return __generator(this, function (_b) {
136
157
  switch (_b.label) {
137
158
  case 0:
@@ -146,8 +167,8 @@ export var removeTender = createAsyncThunk(CheckoutActionType.RemoveTender, func
146
167
  dispatch(validatePosOrder());
147
168
  return [2 /*return*/, response];
148
169
  case 2:
149
- err_2 = _b.sent();
150
- return [2 /*return*/, rejectWithValue(err_2)];
170
+ err_3 = _b.sent();
171
+ return [2 /*return*/, rejectWithValue(err_3)];
151
172
  case 3: return [2 /*return*/];
152
173
  }
153
174
  });
@@ -156,7 +177,7 @@ export var removeTender = createAsyncThunk(CheckoutActionType.RemoveTender, func
156
177
  export var updateTender = createAsyncThunk(CheckoutActionType.UpdateTender, function (_, _a) {
157
178
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
158
179
  return __awaiter(void 0, void 0, void 0, function () {
159
- var api, orderId, check, tenders, totals, tender, index, amountTender, amountDue, amount, updatedTender, response, err_3;
180
+ var api, orderId, check, tenders, totals, tender, index, amountTender, amountDue, amount, updatedTender, response, err_4;
160
181
  return __generator(this, function (_b) {
161
182
  switch (_b.label) {
162
183
  case 0:
@@ -192,8 +213,8 @@ export var updateTender = createAsyncThunk(CheckoutActionType.UpdateTender, func
192
213
  return [2 /*return*/];
193
214
  case 3: return [3 /*break*/, 5];
194
215
  case 4:
195
- err_3 = _b.sent();
196
- return [2 /*return*/, rejectWithValue(err_3)];
216
+ err_4 = _b.sent();
217
+ return [2 /*return*/, rejectWithValue(err_4)];
197
218
  case 5: return [2 /*return*/];
198
219
  }
199
220
  });
@@ -235,7 +256,7 @@ export var identifyCustomer = createAsyncThunk(CheckoutActionType.IdentifyCustom
235
256
  var data = _a.data, callback = _a.callback, showError = _a.showError;
236
257
  var dispatch = _b.dispatch, getState = _b.getState, rejectWithValue = _b.rejectWithValue;
237
258
  return __awaiter(void 0, void 0, void 0, function () {
238
- var api, response, customer, discounts, points, discount, autoDiscounts, err_4, errMsg;
259
+ var api, response, customer, discounts, points, discount, autoDiscounts, err_5, errMsg;
239
260
  return __generator(this, function (_c) {
240
261
  switch (_c.label) {
241
262
  case 0:
@@ -273,11 +294,11 @@ export var identifyCustomer = createAsyncThunk(CheckoutActionType.IdentifyCustom
273
294
  _c.label = 6;
274
295
  case 6: return [2 /*return*/, response];
275
296
  case 7:
276
- err_4 = _c.sent();
297
+ err_5 = _c.sent();
277
298
  if (showError) {
278
- errMsg = err_4.status === 404
299
+ errMsg = err_5.status === 404
279
300
  ? 'Customer not found. Please try again.'
280
- : err_4.detail || err_4.message;
301
+ : err_5.detail || err_5.message;
281
302
  dispatch(addAlert(errMsg));
282
303
  }
283
304
  if (callback) {
@@ -285,7 +306,7 @@ export var identifyCustomer = createAsyncThunk(CheckoutActionType.IdentifyCustom
285
306
  return [2 /*return*/];
286
307
  }
287
308
  else {
288
- return [2 /*return*/, rejectWithValue(err_4)];
309
+ return [2 /*return*/, rejectWithValue(err_5)];
289
310
  }
290
311
  return [3 /*break*/, 8];
291
312
  case 8: return [2 /*return*/];
@@ -296,7 +317,7 @@ export var identifyCustomer = createAsyncThunk(CheckoutActionType.IdentifyCustom
296
317
  export var completeChipDNA = createAsyncThunk(CheckoutActionType.CompleteChipDNA, function (card_token, _a) {
297
318
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
298
319
  return __awaiter(void 0, void 0, void 0, function () {
299
- var _b, config, checkout, hasLoyalty, data, callback, err_5;
320
+ var _b, config, checkout, hasLoyalty, data, callback, err_6;
300
321
  return __generator(this, function (_c) {
301
322
  switch (_c.label) {
302
323
  case 0:
@@ -312,8 +333,8 @@ export var completeChipDNA = createAsyncThunk(CheckoutActionType.CompleteChipDNA
312
333
  case 2: return [2 /*return*/, _c.sent()];
313
334
  case 3: return [3 /*break*/, 5];
314
335
  case 4:
315
- err_5 = _c.sent();
316
- return [2 /*return*/, rejectWithValue(err_5)];
336
+ err_6 = _c.sent();
337
+ return [2 /*return*/, rejectWithValue(err_6)];
317
338
  case 5: return [2 /*return*/];
318
339
  }
319
340
  });
@@ -322,7 +343,7 @@ export var completeChipDNA = createAsyncThunk(CheckoutActionType.CompleteChipDNA
322
343
  export var validatePosOrder = createAsyncThunk(CheckoutActionType.ValidatePosOrder, function (_, _a) {
323
344
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
324
345
  return __awaiter(void 0, void 0, void 0, function () {
325
- var _b, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_6, errors, fields;
346
+ var _b, config, order, checkout, preparedOrder, check, submitted, validated_1, toRemove, err_7, errors, fields;
326
347
  var _c;
327
348
  return __generator(this, function (_d) {
328
349
  switch (_d.label) {
@@ -343,13 +364,13 @@ export var validatePosOrder = createAsyncThunk(CheckoutActionType.ValidatePosOrd
343
364
  toRemove === null || toRemove === void 0 ? void 0 : toRemove.forEach(function (id) { return dispatch(removeDiscount({ id: id })); });
344
365
  return [2 /*return*/, check];
345
366
  case 2:
346
- err_6 = _d.sent();
347
- errors = handleRespError(err_6).errors;
367
+ err_7 = _d.sent();
368
+ errors = handleRespError(err_7).errors;
348
369
  fields = errors ? Object.keys(errors) : [];
349
370
  if (fields.includes('order_uuid')) {
350
371
  dispatch(setOrderId(uuidv4()));
351
372
  }
352
- return [2 /*return*/, rejectWithValue(err_6)];
373
+ return [2 /*return*/, rejectWithValue(err_7)];
353
374
  case 3: return [2 /*return*/];
354
375
  }
355
376
  });
@@ -358,7 +379,7 @@ export var validatePosOrder = createAsyncThunk(CheckoutActionType.ValidatePosOrd
358
379
  export var submitPosOrder = createAsyncThunk(CheckoutActionType.SubmitPosOrder, function (_, _a) {
359
380
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
360
381
  return __awaiter(void 0, void 0, void 0, function () {
361
- var _b, config, order, checkout, preparedOrder, response, err_7, errors, fields;
382
+ var _b, config, order, checkout, preparedOrder, response, err_8, errors, fields;
362
383
  return __generator(this, function (_c) {
363
384
  switch (_c.label) {
364
385
  case 0:
@@ -373,13 +394,13 @@ export var submitPosOrder = createAsyncThunk(CheckoutActionType.SubmitPosOrder,
373
394
  dispatch(setLastOrderId(response.order_uuid || null));
374
395
  return [2 /*return*/, response];
375
396
  case 2:
376
- err_7 = _c.sent();
377
- errors = handleRespError(err_7).errors;
397
+ err_8 = _c.sent();
398
+ errors = handleRespError(err_8).errors;
378
399
  fields = errors ? Object.keys(errors) : [];
379
400
  if (fields.includes('order_uuid')) {
380
401
  dispatch(setOrderId(uuidv4()));
381
402
  }
382
- return [2 /*return*/, rejectWithValue(err_7)];
403
+ return [2 /*return*/, rejectWithValue(err_8)];
383
404
  case 3: return [2 /*return*/];
384
405
  }
385
406
  });
@@ -388,7 +409,7 @@ export var submitPosOrder = createAsyncThunk(CheckoutActionType.SubmitPosOrder,
388
409
  export var voidPosOrder = createAsyncThunk(CheckoutActionType.VoidPosOrder, function (_, _a) {
389
410
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
390
411
  return __awaiter(void 0, void 0, void 0, function () {
391
- var _b, config, order, checkout, preparedOrder, err_8;
412
+ var _b, config, order, checkout, preparedOrder, err_9;
392
413
  return __generator(this, function (_c) {
393
414
  switch (_c.label) {
394
415
  case 0:
@@ -400,8 +421,8 @@ export var voidPosOrder = createAsyncThunk(CheckoutActionType.VoidPosOrder, func
400
421
  return [4 /*yield*/, config.api.deleteOrder(preparedOrder)];
401
422
  case 1: return [2 /*return*/, _c.sent()];
402
423
  case 2:
403
- err_8 = _c.sent();
404
- return [2 /*return*/, rejectWithValue(err_8)];
424
+ err_9 = _c.sent();
425
+ return [2 /*return*/, rejectWithValue(err_9)];
405
426
  case 3: return [2 /*return*/];
406
427
  }
407
428
  });
@@ -410,7 +431,7 @@ export var voidPosOrder = createAsyncThunk(CheckoutActionType.VoidPosOrder, func
410
431
  export var activateGiftCards = createAsyncThunk(CheckoutActionType.ActivateGiftCards, function (_, _a) {
411
432
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
412
433
  return __awaiter(void 0, void 0, void 0, function () {
413
- var api_1, giftCards, requests, err_9;
434
+ var api_1, giftCards, requests, err_10;
414
435
  return __generator(this, function (_b) {
415
436
  switch (_b.label) {
416
437
  case 0:
@@ -426,8 +447,8 @@ export var activateGiftCards = createAsyncThunk(CheckoutActionType.ActivateGiftC
426
447
  return [4 /*yield*/, Promise.all(requests)];
427
448
  case 1: return [2 /*return*/, _b.sent()];
428
449
  case 2:
429
- err_9 = _b.sent();
430
- return [2 /*return*/, rejectWithValue(err_9)];
450
+ err_10 = _b.sent();
451
+ return [2 /*return*/, rejectWithValue(err_10)];
431
452
  case 3: return [2 /*return*/];
432
453
  }
433
454
  });
@@ -527,6 +548,20 @@ var checkoutSlice = createSlice({
527
548
  },
528
549
  extraReducers: function (builder) {
529
550
  builder
551
+ .addCase(addPromoCode.fulfilled, function (state, action) {
552
+ var discount_id = action.payload.discount_id;
553
+ state.discounts.push({ id: discount_id });
554
+ state.loading = 'idle';
555
+ state.error = null;
556
+ })
557
+ .addCase(addPromoCode.pending, function (state) {
558
+ state.loading = 'pending';
559
+ state.authorizing = 'pending';
560
+ })
561
+ .addCase(addPromoCode.rejected, function (state, action) {
562
+ state.loading = 'idle';
563
+ state.error = action.payload;
564
+ })
530
565
  .addCase(addTender.fulfilled, function (state) {
531
566
  state.loading = 'idle';
532
567
  state.authorizing = 'idle';
@@ -1,10 +1,9 @@
1
- import { Discounts, RequestError, RequestStatus, Version } from '../types';
2
1
  import { AppState } from '../app';
2
+ import { Discounts, RequestError, RequestStatus } from '@open-tender/types';
3
3
  export interface DiscountsState {
4
4
  entities: Discounts;
5
5
  loading: RequestStatus;
6
6
  error: RequestError;
7
- version: Version;
8
7
  }
9
8
  export declare enum DiscountsActionType {
10
9
  GetDiscounts = "discounts/fetchDiscounts"
@@ -4,8 +4,7 @@ import { ReducerType } from './types';
4
4
  var initialState = {
5
5
  entities: [],
6
6
  loading: 'idle',
7
- error: null,
8
- version: null
7
+ error: null
9
8
  };
10
9
  export var DiscountsActionType;
11
10
  (function (DiscountsActionType) {
@@ -1,4 +1,4 @@
1
- import { Cart, CartCounts, CartItem, MenuCategory, MenuRevenueCenter, Messages, OrderType, PrepType, RequestError, RequestStatus, RequestedAt, ServiceType } from '@open-tender/types';
1
+ import { Cart, CartCounts, CartItem, MenuCategory, MenuRevenueCenter, Messages, OrderCart, OrderType, PrepType, RequestError, RequestStatus, RequestedAt, ServiceType } from '@open-tender/types';
2
2
  import { AppState } from '../app';
3
3
  export interface OrderState {
4
4
  orderId: string | null;
@@ -19,8 +19,21 @@ export interface OrderState {
19
19
  loading: RequestStatus;
20
20
  }
21
21
  export declare enum OrderActionType {
22
- FetchRevenueCenter = "orders/fetchRevenueCenter"
22
+ Reorder = "orders/reorder"
23
23
  }
24
+ export declare const reorder: import("@reduxjs/toolkit").AsyncThunk<{
25
+ cart: Cart;
26
+ cartCounts: CartCounts;
27
+ }, OrderCart, {
28
+ state: AppState;
29
+ rejectValue: RequestError;
30
+ dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
31
+ extra?: unknown;
32
+ serializedErrorType?: unknown;
33
+ pendingMeta?: unknown;
34
+ fulfilledMeta?: unknown;
35
+ rejectedMeta?: unknown;
36
+ }>;
24
37
  export declare const resetOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetOrder">, resetOrderType: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetOrderType">, resetRevenueCenter: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetRevenueCenter">, resetLocation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetLocation">, resetCart: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetCart">, resetMessages: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetMessages">, resetAlert: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"orders/resetAlert">, setAlert: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setAlert">, setOrderId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setOrderId">, setOrderType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setOrderType">, setServiceType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setServiceType">, setRequestedAt: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setRequestedAt">, setRevenueCenterId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setRevenueCenterId">, setTable: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setTable">, setPrepType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setPrepType">, setOrderServiceType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setOrderServiceType">, setMenuVars: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setMenuVars">, setCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCart">, setCurrentVendor: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCurrentVendor">, setCurrentCategory: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCurrentCategory">, setCurrentItem: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/setCurrentItem">, addItemToCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/addItemToCart">, removeItemFromCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/removeItemFromCart">, incrementItemInCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/incrementItemInCart">, decrementItemInCart: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/decrementItemInCart">, addMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/addMessage">, removeMessage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "orders/removeMessage">;
25
38
  export declare const selectOrder: (state: AppState) => OrderState;
26
39
  export declare const selectAlert: (state: AppState) => string | null;
@@ -1,7 +1,7 @@
1
1
  var _a;
2
- import { __spreadArray } from "tslib";
3
- import { createSelector, createSlice } from '@reduxjs/toolkit';
4
- import { addItem, calcCartCounts, decrementItem, incrementItem, makeRandomNumberString, orderTypeNamesMap, removeItem, serviceTypeNamesMap } from '@open-tender/utils';
2
+ import { __awaiter, __generator, __spreadArray } from "tslib";
3
+ import { createAsyncThunk, createSelector, createSlice } from '@reduxjs/toolkit';
4
+ import { addItem, calcCartCounts, decrementItem, incrementItem, makeMenuItemLookup, makeRandomNumberString, makeSimpleCart, orderTypeNamesMap, rehydrateCart, removeItem, serviceTypeNamesMap } from '@open-tender/utils';
5
5
  import { ReducerType } from './types';
6
6
  var initialState = {
7
7
  orderId: null,
@@ -23,8 +23,34 @@ var initialState = {
23
23
  };
24
24
  export var OrderActionType;
25
25
  (function (OrderActionType) {
26
- OrderActionType["FetchRevenueCenter"] = "orders/fetchRevenueCenter";
26
+ OrderActionType["Reorder"] = "orders/reorder";
27
27
  })(OrderActionType || (OrderActionType = {}));
28
+ export var reorder = createAsyncThunk(OrderActionType.Reorder, function (orderCart, _a) {
29
+ var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
30
+ return __awaiter(void 0, void 0, void 0, function () {
31
+ var _b, config, order, revenueCenterId, requestedAt, serviceType, categories, menuItems, simpleCart, _c, cart, cartCounts, err_1;
32
+ return __generator(this, function (_d) {
33
+ switch (_d.label) {
34
+ case 0:
35
+ _d.trys.push([0, 2, , 3]);
36
+ _b = getState(), config = _b.config, order = _b.order;
37
+ revenueCenterId = order.revenueCenterId, requestedAt = order.requestedAt;
38
+ serviceType = order.serviceType || 'WALKIN';
39
+ return [4 /*yield*/, config.api.getMenu(revenueCenterId || 0, serviceType, requestedAt)];
40
+ case 1:
41
+ categories = (_d.sent()).menu;
42
+ menuItems = Object.values(makeMenuItemLookup(categories));
43
+ simpleCart = makeSimpleCart(orderCart);
44
+ _c = rehydrateCart(menuItems, simpleCart), cart = _c.cart, cartCounts = _c.cartCounts;
45
+ return [2 /*return*/, { cart: cart, cartCounts: cartCounts }];
46
+ case 2:
47
+ err_1 = _d.sent();
48
+ return [2 /*return*/, rejectWithValue(err_1)];
49
+ case 3: return [2 /*return*/];
50
+ }
51
+ });
52
+ });
53
+ });
28
54
  var orderSlice = createSlice({
29
55
  name: ReducerType.Orders,
30
56
  initialState: initialState,
@@ -140,6 +166,25 @@ var orderSlice = createSlice({
140
166
  removeMessage: function (state, action) {
141
167
  state.messages = state.messages.filter(function (i) { return i.id !== action.payload; });
142
168
  }
169
+ },
170
+ extraReducers: function (builder) {
171
+ builder
172
+ .addCase(reorder.fulfilled, function (state, action) {
173
+ state.cart = action.payload.cart;
174
+ state.cartCounts = action.payload.cartCounts;
175
+ state.serviceType = 'WALKIN';
176
+ state.orderType = 'OLO';
177
+ state.prepType = 'EAT_HERE';
178
+ state.loading = 'idle';
179
+ state.error = null;
180
+ })
181
+ .addCase(reorder.pending, function (state) {
182
+ state.loading = 'pending';
183
+ })
184
+ .addCase(reorder.rejected, function (state, action) {
185
+ state.error = action.payload;
186
+ state.loading = 'idle';
187
+ });
143
188
  }
144
189
  });
145
190
  export var resetOrder = (_a = orderSlice.actions, _a.resetOrder), resetOrderType = _a.resetOrderType, resetRevenueCenter = _a.resetRevenueCenter, resetLocation = _a.resetLocation, resetCart = _a.resetCart, resetMessages = _a.resetMessages, resetAlert = _a.resetAlert, setAlert = _a.setAlert, setOrderId = _a.setOrderId, setOrderType = _a.setOrderType, setServiceType = _a.setServiceType, setRequestedAt = _a.setRequestedAt, setRevenueCenterId = _a.setRevenueCenterId, setTable = _a.setTable, setPrepType = _a.setPrepType, setOrderServiceType = _a.setOrderServiceType, setMenuVars = _a.setMenuVars, setCart = _a.setCart, setCurrentVendor = _a.setCurrentVendor, setCurrentCategory = _a.setCurrentCategory, setCurrentItem = _a.setCurrentItem, addItemToCart = _a.addItemToCart, removeItemFromCart = _a.removeItemFromCart, incrementItemInCart = _a.incrementItemInCart, decrementItemInCart = _a.decrementItemInCart, addMessage = _a.addMessage, removeMessage = _a.removeMessage;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tender/store",
3
- "version": "1.0.24",
3
+ "version": "1.0.26",
4
4
  "description": "A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -58,7 +58,7 @@
58
58
  },
59
59
  "peerDependencies": {
60
60
  "@emotion/react": "^11.11.1",
61
- "@open-tender/types": "^0.4.32",
61
+ "@open-tender/types": "^0.4.33",
62
62
  "@open-tender/ui": "^0.1.22",
63
63
  "@open-tender/utils": "^0.4.10",
64
64
  "@reduxjs/toolkit": "^2.0.1",