@open-tender/store 0.7.2 → 0.7.4

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 (41) hide show
  1. package/dist/cjs/services/api.d.ts +66 -66
  2. package/dist/cjs/services/api.js +1 -1
  3. package/dist/cjs/slices/arrivals.js +0 -4
  4. package/dist/cjs/slices/checkout.d.ts +7 -7
  5. package/dist/cjs/slices/checkout.js +39 -39
  6. package/dist/cjs/slices/config.d.ts +4 -5
  7. package/dist/cjs/slices/config.js +17 -21
  8. package/dist/cjs/slices/discounts.js +9 -8
  9. package/dist/cjs/slices/errorAlerts.js +3 -1
  10. package/dist/cjs/slices/kds.js +3 -3
  11. package/dist/cjs/slices/order.d.ts +8 -23
  12. package/dist/cjs/slices/order.js +18 -76
  13. package/dist/cjs/slices/pos.js +1 -1
  14. package/dist/cjs/slices/settings.d.ts +1 -1
  15. package/dist/cjs/slices/surcharges.js +4 -3
  16. package/dist/cjs/slices/taxes.js +9 -8
  17. package/dist/cjs/types/api/checkout.d.ts +5 -2
  18. package/dist/cjs/types/api/store.d.ts +9 -16
  19. package/dist/cjs/types/global.d.ts +2 -0
  20. package/dist/cjs/utils/datetimes.d.ts +1 -1
  21. package/dist/esm/services/api.d.ts +66 -66
  22. package/dist/esm/services/api.js +1 -1
  23. package/dist/esm/slices/arrivals.js +0 -4
  24. package/dist/esm/slices/checkout.d.ts +7 -7
  25. package/dist/esm/slices/checkout.js +39 -39
  26. package/dist/esm/slices/config.d.ts +4 -5
  27. package/dist/esm/slices/config.js +17 -20
  28. package/dist/esm/slices/discounts.js +9 -8
  29. package/dist/esm/slices/errorAlerts.js +3 -1
  30. package/dist/esm/slices/kds.js +3 -3
  31. package/dist/esm/slices/order.d.ts +8 -23
  32. package/dist/esm/slices/order.js +18 -74
  33. package/dist/esm/slices/pos.js +1 -1
  34. package/dist/esm/slices/settings.d.ts +1 -1
  35. package/dist/esm/slices/surcharges.js +4 -3
  36. package/dist/esm/slices/taxes.js +9 -8
  37. package/dist/esm/types/api/checkout.d.ts +5 -2
  38. package/dist/esm/types/api/store.d.ts +9 -16
  39. package/dist/esm/types/global.d.ts +2 -0
  40. package/dist/esm/utils/datetimes.d.ts +1 -1
  41. package/package.json +1 -1
@@ -1,13 +1,13 @@
1
1
  var _a;
2
- import { __awaiter, __generator, __spreadArray } from "tslib";
3
- import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
2
+ import { __spreadArray } from "tslib";
3
+ import { createSlice } from '@reduxjs/toolkit';
4
4
  import { addItem, calcCartCounts, decrementItem, incrementItem, makeRandomNumberString, orderTypeNamesMap, removeItem, serviceTypeNamesMap } from '../utils';
5
5
  import { ReducerType } from './types';
6
6
  var initialState = {
7
7
  orderId: null,
8
8
  orderType: null,
9
9
  serviceType: null,
10
- revenueCenter: null,
10
+ revenueCenterId: null,
11
11
  table: null,
12
12
  prepType: null,
13
13
  requestedAt: 'asap',
@@ -25,25 +25,6 @@ export var OrderActionType;
25
25
  (function (OrderActionType) {
26
26
  OrderActionType["FetchRevenueCenter"] = "orders/fetchRevenueCenter";
27
27
  })(OrderActionType || (OrderActionType = {}));
28
- export var fetchRevenueCenter = createAsyncThunk(OrderActionType.FetchRevenueCenter, function (revenueCenterId, _a) {
29
- var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
30
- return __awaiter(void 0, void 0, void 0, function () {
31
- var api, err_1;
32
- return __generator(this, function (_b) {
33
- switch (_b.label) {
34
- case 0:
35
- _b.trys.push([0, 2, , 3]);
36
- api = getState().config.api;
37
- return [4 /*yield*/, api.getRevenueCenter(revenueCenterId)];
38
- case 1: return [2 /*return*/, _b.sent()];
39
- case 2:
40
- err_1 = _b.sent();
41
- return [2 /*return*/, rejectWithValue(err_1)];
42
- case 3: return [2 /*return*/];
43
- }
44
- });
45
- });
46
- });
47
28
  var orderSlice = createSlice({
48
29
  name: ReducerType.Orders,
49
30
  initialState: initialState,
@@ -54,15 +35,15 @@ var orderSlice = createSlice({
54
35
  state.orderType = null;
55
36
  state.serviceType = null;
56
37
  state.prepType = null;
57
- state.revenueCenter = null;
38
+ state.revenueCenterId = null;
58
39
  state.table = null;
59
40
  state.requestedAt = 'asap';
60
41
  },
61
42
  resetRevenueCenter: function (state) {
62
- state.revenueCenter = null;
43
+ state.revenueCenterId = null;
63
44
  },
64
45
  resetLocation: function (state) {
65
- state.revenueCenter = null;
46
+ state.revenueCenterId = null;
66
47
  },
67
48
  resetCart: function (state) {
68
49
  state.cart = [];
@@ -89,8 +70,8 @@ var orderSlice = createSlice({
89
70
  setRequestedAt: function (state, action) {
90
71
  state.requestedAt = action.payload;
91
72
  },
92
- setRevenueCenter: function (state, action) {
93
- state.revenueCenter = action.payload;
73
+ setRevenueCenterId: function (state, action) {
74
+ state.revenueCenterId = action.payload;
94
75
  },
95
76
  setTable: function (state, action) {
96
77
  state.table = action.payload;
@@ -104,8 +85,8 @@ var orderSlice = createSlice({
104
85
  state.serviceType = serviceType;
105
86
  },
106
87
  setMenuVars: function (state, action) {
107
- var _a = action.payload, revenueCenter = _a.revenueCenter, serviceType = _a.serviceType, requestedAt = _a.requestedAt;
108
- state.revenueCenter = revenueCenter;
88
+ var _a = action.payload, revenueCenterId = _a.revenueCenterId, serviceType = _a.serviceType, requestedAt = _a.requestedAt;
89
+ state.revenueCenterId = revenueCenterId;
109
90
  state.serviceType = serviceType;
110
91
  state.requestedAt = requestedAt;
111
92
  },
@@ -159,24 +140,9 @@ var orderSlice = createSlice({
159
140
  removeMessage: function (state, action) {
160
141
  state.messages = state.messages.filter(function (i) { return i.id !== action.payload; });
161
142
  }
162
- },
163
- extraReducers: function (builder) {
164
- builder
165
- .addCase(fetchRevenueCenter.fulfilled, function (state, action) {
166
- state.revenueCenter = action.payload;
167
- state.loading = 'idle';
168
- state.error = null;
169
- })
170
- .addCase(fetchRevenueCenter.pending, function (state) {
171
- state.loading = 'pending';
172
- })
173
- .addCase(fetchRevenueCenter.rejected, function (state, action) {
174
- state.error = action.payload;
175
- state.loading = 'idle';
176
- });
177
143
  }
178
144
  });
179
- 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, setRevenueCenter = _a.setRevenueCenter, 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;
145
+ 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;
180
146
  export var selectAlert = function (state) { return state.order.alert; };
181
147
  export var selectMessages = function (state) { return state.order.messages; };
182
148
  export var selectOrder = function (state) { return state.order; };
@@ -191,35 +157,16 @@ export var selectServiceTypeName = function (state) {
191
157
  export var selectRequestedAt = function (state) {
192
158
  return state.order.requestedAt === 'asap' ? 'ASAP' : state.order.requestedAt;
193
159
  };
194
- export var selectRevenueCenter = function (state) {
195
- return state.order.revenueCenter;
196
- };
197
- export var selectRevenueCenterName = function (state) {
198
- return state.order.revenueCenter ? state.order.revenueCenter.name : null;
160
+ export var selectRevenueCenterId = function (state) {
161
+ return state.order.revenueCenterId;
199
162
  };
200
- // export const selectOrderLimits = (state: AppState) => {
201
- // const { revenueCenter, serviceType } = state.order
202
- // if (!revenueCenter || !serviceType) {
203
- // return { orderMinimum: null, orderMaximum: null }
204
- // }
205
- // const { order_maximum, order_minimum } = revenueCenter
206
- // const orderMax = order_maximum[serviceType]
207
- // const orderMaximum = parseFloat(orderMax)
208
- // const orderMinimum = parseFloat(order_minimum[serviceType])
209
- // return {
210
- // orderMinimum: orderMinimum > 0 ? orderMinimum : null,
211
- // orderMaximum: orderMaximum > 0 ? orderMaximum : null
212
- // }
213
- // }
214
163
  export var selectMenuSlug = function (state) {
215
- var revenueCenter = state.order.revenueCenter;
216
- return revenueCenter ? "/menu/".concat(revenueCenter.slug) : '/';
164
+ var slug = (state.config.store || {}).slug;
165
+ return slug ? "/menu/".concat(slug) : '/';
217
166
  };
218
167
  export var selectMenuVars = function (state) {
219
- if (!state.order.revenueCenter)
220
- return {};
221
168
  return {
222
- revenueCenterId: state.order.revenueCenter.revenue_center_id,
169
+ revenueCenterId: state.order.revenueCenterId,
223
170
  serviceType: state.order.serviceType,
224
171
  requestedAt: state.order.requestedAt
225
172
  };
@@ -249,15 +196,12 @@ export var selectCartCounts = function (state) {
249
196
  return state.order.cartCounts || {};
250
197
  };
251
198
  export var selectCanOrder = function (state) {
252
- return state.order.revenueCenter &&
199
+ return state.order.revenueCenterId &&
253
200
  state.order.serviceType &&
254
201
  state.order.requestedAt;
255
202
  };
256
203
  export var selectCartValidate = function (state) {
257
- var _a = state.order || {}, revenueCenter = _a.revenueCenter, serviceType = _a.serviceType, requestedAt = _a.requestedAt, cart = _a.cart;
258
- if (!revenueCenter)
259
- return null;
260
- var revenueCenterId = revenueCenter.revenue_center_id;
204
+ var _a = state.order || {}, revenueCenterId = _a.revenueCenterId, serviceType = _a.serviceType, requestedAt = _a.requestedAt, cart = _a.cart;
261
205
  return {
262
206
  revenueCenterId: revenueCenterId,
263
207
  serviceType: serviceType,
@@ -188,7 +188,7 @@ export var selectCashier = function (state) {
188
188
  var cashier = state.pos.cashier;
189
189
  if (!cashier)
190
190
  return { cashier: null, isExpired: false };
191
- var tz = selectTimezone(state);
191
+ var tz = selectTimezone();
192
192
  var businessDate = currentLocalDateStr(tz);
193
193
  var isExpired = businessDate !== cashier.businessDate;
194
194
  if (isExpired)
@@ -20,7 +20,7 @@ export declare const fetchSetting: import("@reduxjs/toolkit").AsyncThunk<any, Po
20
20
  fulfilledMeta?: unknown;
21
21
  rejectedMeta?: unknown;
22
22
  }>;
23
- export declare const updateSetting: import("@reduxjs/toolkit").AsyncThunk<Settings, void | PosSettingType, {
23
+ export declare const updateSetting: import("@reduxjs/toolkit").AsyncThunk<Settings, PosSettingType | undefined, {
24
24
  state: AppState;
25
25
  rejectValue: RequestError;
26
26
  dispatch?: import("redux").Dispatch<import("redux").UnknownAction> | undefined;
@@ -14,14 +14,15 @@ export var SurchargesActionType;
14
14
  export var fetchSurcharges = createAsyncThunk(SurchargesActionType.GetSurcharges, function (_, _a) {
15
15
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
16
16
  return __awaiter(void 0, void 0, void 0, function () {
17
- var api, order, serviceType, err_1;
17
+ var api, serviceType, err_1;
18
18
  return __generator(this, function (_b) {
19
19
  switch (_b.label) {
20
20
  case 0:
21
21
  _b.trys.push([0, 2, , 3]);
22
22
  api = getState().config.api;
23
- order = { serviceType: 'PICKUP' };
24
- serviceType = order.serviceType;
23
+ serviceType = getState().order.serviceType;
24
+ if (!serviceType)
25
+ return [2 /*return*/, []];
25
26
  return [4 /*yield*/, api.getSurcharges(serviceType)];
26
27
  case 1: return [2 /*return*/, _b.sent()];
27
28
  case 2:
@@ -14,18 +14,19 @@ export var TaxesActionType;
14
14
  export var fetchTaxes = createAsyncThunk(TaxesActionType.GetTaxes, function (_, _a) {
15
15
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
16
16
  return __awaiter(void 0, void 0, void 0, function () {
17
- var api, order, serviceType, orderType, err_1;
18
- return __generator(this, function (_b) {
19
- switch (_b.label) {
17
+ var api, _b, serviceType, orderType, err_1;
18
+ return __generator(this, function (_c) {
19
+ switch (_c.label) {
20
20
  case 0:
21
- _b.trys.push([0, 2, , 3]);
21
+ _c.trys.push([0, 2, , 3]);
22
22
  api = getState().config.api;
23
- order = { serviceType: 'PICKUP', orderType: 'OLO' };
24
- serviceType = order.serviceType, orderType = order.orderType;
23
+ _b = getState().order, serviceType = _b.serviceType, orderType = _b.orderType;
24
+ if (!serviceType || !orderType)
25
+ return [2 /*return*/, []];
25
26
  return [4 /*yield*/, api.getTaxes(serviceType, orderType)];
26
- case 1: return [2 /*return*/, _b.sent()];
27
+ case 1: return [2 /*return*/, _c.sent()];
27
28
  case 2:
28
- err_1 = _b.sent();
29
+ err_1 = _c.sent();
29
30
  return [2 /*return*/, rejectWithValue(err_1)];
30
31
  case 3: return [2 /*return*/];
31
32
  }
@@ -27,12 +27,15 @@ export interface CustomerDiscount {
27
27
  is_loyalty: boolean;
28
28
  }
29
29
  export type CustomerDiscounts = Array<CustomerDiscount>;
30
- export interface CustomerCheckout {
30
+ export interface CustomerCheckoutCustomer {
31
31
  customer_id: number;
32
+ email: string;
32
33
  first_name: string;
33
34
  last_name: string;
34
- email: string;
35
35
  phone: string;
36
+ }
37
+ export interface CustomerCheckout {
38
+ customer: CustomerCheckoutCustomer;
36
39
  discounts: CustomerDiscounts;
37
40
  points: any;
38
41
  discount: any;
@@ -1,5 +1,5 @@
1
- import { TimeString, TimezonePython } from '../datetimes';
2
- import { Decimal, Money, ServiceType, TenderType, Url, Weekday } from '../global';
1
+ import { TimeString } from '../datetimes';
2
+ import { Decimal, Money, ServiceTypes, TenderTypes, Weekday } from '../global';
3
3
  export type PaymentProcessor = 'NONE' | 'CARDCONNECT' | 'VANTIV' | 'CLOVER' | 'NMI';
4
4
  export interface PaymentProcessing {
5
5
  integration: PaymentProcessor;
@@ -22,10 +22,11 @@ export interface StoreTax {
22
22
  tax_id: number;
23
23
  tax_type: number;
24
24
  }
25
+ export type StoreTaxes = StoreTax[];
25
26
  export interface StoreTenderTypes {
26
- DELIVERY: Array<TenderType>;
27
- PICKUP: Array<TenderType>;
28
- WALKIN: Array<TenderType>;
27
+ DELIVERY: TenderTypes;
28
+ PICKUP: TenderTypes;
29
+ WALKIN: TenderTypes;
29
30
  }
30
31
  export interface StoreAddress {
31
32
  city: string;
@@ -57,9 +58,8 @@ export interface StoreMessage {
57
58
  export type StorePunchType = 'PIN' | 'CARD';
58
59
  export interface Store {
59
60
  address: StoreAddress;
60
- auth_type: 'PIN' | 'CARD';
61
61
  alert_minutes: number;
62
- closed: boolean;
62
+ auth_type: 'PIN' | 'CARD';
63
63
  credit: PaymentProcessing;
64
64
  delivery_minutes: number;
65
65
  dine_in_prompt: boolean;
@@ -74,16 +74,11 @@ export interface Store {
74
74
  has_loyalty: boolean;
75
75
  hide_default_mods: boolean;
76
76
  hide_delay: boolean;
77
- is_closed: boolean;
78
77
  is_outpost: boolean;
79
- is_temporarily_closed: boolean;
80
78
  item_discount_approval: boolean;
81
- levelup?: LevelUp;
82
- messages: Array<StoreMessage> | null;
83
79
  name: string;
84
80
  number: string;
85
81
  order_page_swipe: boolean;
86
- origin: Url | null;
87
82
  overtime_threshold: number;
88
83
  overtime_threshold_daily: number;
89
84
  page_timeout: number;
@@ -95,16 +90,14 @@ export interface Store {
95
90
  receipt_header: string;
96
91
  receipt_phone: boolean;
97
92
  revenue_center_id: number;
98
- revenue_center_type: 'POS' | 'OLO' | 'CATERING';
99
- service_types: Array<ServiceType>;
93
+ service_types: ServiceTypes;
100
94
  short_name: string;
101
95
  slug: string;
102
96
  starting_cash: Decimal;
103
97
  store_id: number;
104
98
  tax_exempt_approval: boolean;
105
- taxes: Array<StoreTax>;
99
+ taxes: StoreTaxes;
106
100
  tender_types: StoreTenderTypes;
107
- timezone: TimezonePython;
108
101
  walkin_minutes: number;
109
102
  walkin_prep_minutes: number;
110
103
  warning_minutes: number;
@@ -11,10 +11,12 @@ export type OrderTypeMap = {
11
11
  [Property in OrderType]: string;
12
12
  };
13
13
  export type ServiceType = 'WALKIN' | 'PICKUP' | 'DELIVERY' | 'PORTAL';
14
+ export type ServiceTypes = ServiceType[];
14
15
  export type ServiceTypeMap = {
15
16
  [Property in ServiceType]: string;
16
17
  };
17
18
  export type TenderType = 'CASH' | 'CREDIT' | 'HOUSE_ACCOUNT' | 'GIFT_CARD' | 'COMP';
19
+ export type TenderTypes = TenderType[];
18
20
  export type TenderTypeMap = {
19
21
  [Property in TenderType]: string;
20
22
  };
@@ -6,7 +6,7 @@ export declare const HUMAN_TIME = "h:mma";
6
6
  export declare const HUMAN_DATETIME = "MMM d, h:mma";
7
7
  export declare const ISO_STRING = "yyyy-MM-dd'T'HH:mm:ssXXX";
8
8
  export declare const timezoneMap: TimezoneMap;
9
- export declare const getUserTimezone: () => string;
9
+ export declare const getUserTimezone: () => Timezone;
10
10
  export declare const currentLocalDate: (tz: Timezone) => Date;
11
11
  export declare const currentLocalDateStr: (tz: Timezone, fmt?: string) => string;
12
12
  export declare const currentLocalIso: (tz: Timezone) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tender/store",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
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",