@open-tender/store 0.8.11 → 0.9.0

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,4 +1,5 @@
1
- import { Arrivals, CashEvent, CashSummary, CustomerCheckout, CustomerIdentifier, DeviceRead, Discount, Discounts, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, FetchOrdersAPIArgs, GiftCardBalance, GiftCardCredit, InternalSettings, ItemTypes, KioskConfig, LevelUp, Menu, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Order, OrderCreate, Orders, OrderTender, OrderType, OrderUpdate, Punch, Refund, RequestedAt, RevenueCenter, SelectOptions, ServiceType, Settings, Store, Surcharges, Taxes, Tender, TicketStatusUpdate, TicketsUpdate, TicketUpdate } from '../types';
1
+ import { CustomerCheckout, Menu, OrderCreate, OrderTender, OrderType, ServiceType } from '@open-tender/types';
2
+ import { Arrivals, CashEvent, CashSummary, CustomerIdentifier, DeviceRead, Discount, Discounts, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, FetchOrdersAPIArgs, GiftCardBalance, GiftCardCredit, InternalSettings, ItemTypes, KioskConfig, LevelUp, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Order, Orders, OrderUpdate, Punch, Refund, RequestedAt, RevenueCenter, SelectOptions, Settings, Store, Surcharges, Taxes, Tender, TicketStatusUpdate, TicketsUpdate, TicketUpdate } from '../types';
2
3
  export interface InitAPI {
3
4
  apiUrl: string;
4
5
  posTerminalId?: number;
@@ -1,24 +1,26 @@
1
- import { CustomerCheckout, Discounts, IdentifyCustomer, Money, Order, OrderCreateGiftCard, OrderCreatePoints, OrderTender, RequestError, RequestStatus, Surcharges, Taxes, Tender } from '../types';
2
1
  import { AppState } from '../app';
2
+ import { CustomerCheckout, IdentifyCustomer, Money, OrderCreateDiscounts, OrderCreateGiftCards, OrderCreatePoints, OrderCreateSurcharges, OrderTender, RequestError, RequestStatus, Taxes } from '@open-tender/types';
3
+ import { Order, Tender } from '../types';
3
4
  export interface CheckoutState {
5
+ activating: RequestStatus;
6
+ authorizing: RequestStatus;
4
7
  check: Order | null;
8
+ completedOrder: Order | null;
9
+ customer: CustomerCheckout | null;
10
+ discounts: OrderCreateDiscounts;
11
+ error: any | null;
12
+ giftCards: OrderCreateGiftCards;
13
+ identifying: RequestStatus;
14
+ isTaxExempt: boolean;
5
15
  loading: RequestStatus;
6
- authorizing: RequestStatus;
16
+ pendingDiscounts: boolean;
17
+ points: OrderCreatePoints;
7
18
  removing: RequestStatus;
8
- validating: RequestStatus;
9
19
  submitting: RequestStatus;
10
- activating: RequestStatus;
11
- identifying: RequestStatus;
12
- error: any | null;
13
- giftCards: Array<OrderCreateGiftCard>;
14
- surcharges: Surcharges;
15
- discounts: Discounts;
20
+ surcharges: OrderCreateSurcharges;
16
21
  taxes: Taxes;
17
- isTaxExempt: boolean;
18
- tip: Money;
19
- customer: CustomerCheckout | null;
20
- points: Array<OrderCreatePoints>;
21
- pendingDiscounts: boolean;
22
+ tip: Money | null;
23
+ validating: RequestStatus;
22
24
  }
23
25
  export declare enum CheckoutActionType {
24
26
  AddTender = "checkout/addTender",
@@ -143,5 +145,4 @@ export declare const selectPosAmountDue: (state: AppState) => `${number}.${numbe
143
145
  export declare const selectPosCheckSubtotal: (state: AppState) => `${number}.${number}`;
144
146
  export declare const selectPosCheckTotal: (state: AppState) => `${number}.${number}`;
145
147
  export declare const selectPosCheckTenders: (state: AppState) => import("../types").OrderTenders;
146
- export declare const selectPosCheckGiftCardCodes: (state: AppState) => (string | null)[];
147
148
  export declare const checkoutReducer: import("redux").Reducer<CheckoutState>;
@@ -1,36 +1,43 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.checkoutReducer = exports.selectPosCheckGiftCardCodes = exports.selectPosCheckTenders = exports.selectPosCheckTotal = exports.selectPosCheckSubtotal = exports.selectPosAmountDue = exports.selectPosPendingDiscounts = exports.selectPosCustomerNameShort = exports.selectPosCustomerName = exports.selectPosCustomer = exports.selectPosCheck = exports.selectPosCheckout = 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 = 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.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 = void 0;
5
5
  var tslib_1 = require("tslib");
6
6
  var toolkit_1 = require("@reduxjs/toolkit");
7
7
  var uuid_1 = require("uuid");
8
+ // import {
9
+ // IdentifyCustomer,
10
+ // Order,
11
+ // OrderCreate,
12
+ // Tender
13
+ // } from '../types'
8
14
  var utils_1 = require("../utils");
9
- var order_1 = require("../utils/order");
10
15
  var alerts_1 = require("./alerts");
11
16
  var notifications_1 = require("./notifications");
12
- var order_2 = require("./order");
17
+ var order_1 = require("./order");
13
18
  var pos_1 = require("./pos");
14
19
  var types_1 = require("./types");
20
+ var utils_2 = require("@open-tender/utils");
15
21
  var initialState = {
22
+ activating: 'idle',
23
+ authorizing: 'idle',
16
24
  check: null,
25
+ completedOrder: null,
26
+ customer: null,
27
+ discounts: [],
28
+ error: null,
29
+ giftCards: [],
30
+ identifying: 'idle',
31
+ isTaxExempt: false,
17
32
  loading: 'idle',
18
- authorizing: 'idle',
33
+ pendingDiscounts: false,
34
+ points: [],
19
35
  removing: 'idle',
20
- validating: 'idle',
21
36
  submitting: 'idle',
22
- activating: 'idle',
23
- identifying: 'idle',
24
- error: null,
25
- giftCards: [],
26
37
  surcharges: [],
27
- discounts: [],
28
- points: [],
29
38
  taxes: [],
30
- isTaxExempt: false,
31
- tip: '0.00',
32
- customer: null,
33
- pendingDiscounts: false
39
+ tip: null,
40
+ validating: 'idle'
34
41
  };
35
42
  var getAmountDue = function (check) {
36
43
  return check && check.totals ? check.totals.amount_due : null;
@@ -39,26 +46,30 @@ var prepareOrder = function (order, checkout) {
39
46
  var order_uuid = order.orderId, requested_at = order.requestedAt, service_type = order.serviceType, order_type = order.orderType, revenue_center_id = order.revenueCenterId;
40
47
  if (!order_uuid)
41
48
  return null;
42
- var simpleCart = (0, order_1.makeSimpleCart)(order.cart);
49
+ var simpleCart = (0, utils_2.makeSimpleCart)(order.cart);
43
50
  var cart = simpleCart.filter(function (item) { return item; });
44
51
  if (!revenue_center_id || !order_type || !service_type) {
45
52
  return null;
46
53
  }
47
- var customer = checkout.customer, gift_cards = checkout.giftCards, surcharges = checkout.surcharges, discounts = checkout.discounts, taxes = checkout.taxes, tip = checkout.tip, isTaxExempt = checkout.isTaxExempt, points = checkout.points;
48
- var is_tax_exempt = isTaxExempt ? true : false;
54
+ var customer = checkout.customer,
55
+ // giftCards: gift_cards,
56
+ surcharges = checkout.surcharges, discounts = checkout.discounts, taxes = checkout.taxes, tip = checkout.tip,
57
+ // isTaxExempt,
58
+ points = checkout.points;
59
+ // const is_tax_exempt = isTaxExempt ? true : false
49
60
  return {
50
61
  order_uuid: order_uuid,
51
62
  revenue_center_id: revenue_center_id,
52
- order_type: order_type,
63
+ // order_type,
53
64
  service_type: service_type,
54
65
  requested_at: requested_at,
55
66
  customer: customer,
56
67
  cart: cart,
57
- gift_cards: gift_cards,
68
+ // gift_cards,
58
69
  surcharges: surcharges,
59
70
  discounts: discounts,
60
71
  taxes: taxes,
61
- is_tax_exempt: is_tax_exempt,
72
+ // is_tax_exempt,
62
73
  tip: tip,
63
74
  points: points
64
75
  };
@@ -79,7 +90,7 @@ var CheckoutActionType;
79
90
  exports.addTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.AddTender, function (tender, _a) {
80
91
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
81
92
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
82
- var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, credit_card, card_token, callback, data, err_1;
93
+ var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, card_token, callback, data, err_1;
83
94
  return tslib_1.__generator(this, function (_c) {
84
95
  switch (_c.label) {
85
96
  case 0:
@@ -91,11 +102,13 @@ exports.addTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.AddTender
91
102
  api = config.api;
92
103
  hasLoyalty = config.store ? config.store.has_loyalty : false;
93
104
  amountDue = getAmountDue(checkout.check);
94
- return [4 /*yield*/, api.postTender(orderId, tender)];
105
+ return [4 /*yield*/, api.postTender(orderId, tender)
106
+ // TODO: need to fix this
107
+ ];
95
108
  case 1:
96
109
  response = _c.sent();
97
- amount = response.amount, credit_card = response.credit_card;
98
- card_token = (credit_card || {}).token;
110
+ amount = response.amount;
111
+ card_token = null;
99
112
  callback = amount === amountDue
100
113
  ? function () { return dispatch((0, exports.submitPosOrder)()); }
101
114
  : function () { return dispatch((0, exports.validatePosOrder)()); };
@@ -163,7 +176,10 @@ exports.updateTender = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Update
163
176
  amountDue = parseFloat(totals.amount_due || '0.00');
164
177
  amount = amountTender + amountDue;
165
178
  if (!(amount > 0)) return [3 /*break*/, 2];
166
- updatedTender = { tender_type: tender.tender_type, amount: amount.toFixed(2) };
179
+ updatedTender = {
180
+ tender_type: tender.tender_type,
181
+ amount: amount.toFixed(2)
182
+ };
167
183
  return [4 /*yield*/, api.patchTender(orderId, index, updatedTender)];
168
184
  case 1:
169
185
  response = _b.sent();
@@ -203,7 +219,7 @@ exports.updateCart = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.UpdateCa
203
219
  }
204
220
  errIndices_1 = cartErrors.map(function (i) { return i.index; });
205
221
  newCart = cart.filter(function (_, idx) { return !errIndices_1.includes(idx); });
206
- dispatch((0, order_2.setCart)(newCart));
222
+ dispatch((0, order_1.setCart)(newCart));
207
223
  // not necessary here since validatePosOrder() runs when
208
224
  // error is set to null when updateCart is fulfilled
209
225
  // dispatch(validatePosOrder())
@@ -334,7 +350,7 @@ exports.validatePosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Va
334
350
  errors = (0, utils_1.handleRespError)(err_6).errors;
335
351
  fields = errors ? Object.keys(errors) : [];
336
352
  if (fields.includes('order_uuid')) {
337
- dispatch((0, order_2.setOrderId)((0, uuid_1.v4)()));
353
+ dispatch((0, order_1.setOrderId)((0, uuid_1.v4)()));
338
354
  }
339
355
  return [2 /*return*/, rejectWithValue(err_6)];
340
356
  case 3: return [2 /*return*/];
@@ -364,7 +380,7 @@ exports.submitPosOrder = (0, toolkit_1.createAsyncThunk)(CheckoutActionType.Subm
364
380
  errors = (0, utils_1.handleRespError)(err_7).errors;
365
381
  fields = errors ? Object.keys(errors) : [];
366
382
  if (fields.includes('order_uuid')) {
367
- dispatch((0, order_2.setOrderId)((0, uuid_1.v4)()));
383
+ dispatch((0, order_1.setOrderId)((0, uuid_1.v4)()));
368
384
  }
369
385
  return [2 /*return*/, rejectWithValue(err_7)];
370
386
  case 3: return [2 /*return*/];
@@ -607,10 +623,15 @@ var checkoutSlice = (0, toolkit_1.createSlice)({
607
623
  state.error = action.payload;
608
624
  })
609
625
  .addCase(exports.submitPosOrder.fulfilled, function (state, action) {
610
- state.check = action.payload || null;
626
+ state.check = null;
627
+ state.completedOrder = action.payload || null;
611
628
  state.loading = 'idle';
612
629
  state.submitting = 'idle';
613
630
  state.error = null;
631
+ // return {
632
+ // ...initialState,
633
+ // completedOrder: action.payload
634
+ // }
614
635
  })
615
636
  .addCase(exports.submitPosOrder.pending, function (state) {
616
637
  state.loading = 'pending';
@@ -693,14 +714,15 @@ var selectPosCheckTenders = function (state) {
693
714
  return check ? check.tenders : [];
694
715
  };
695
716
  exports.selectPosCheckTenders = selectPosCheckTenders;
696
- var selectPosCheckGiftCardCodes = function (state) {
697
- var check = state.checkout.check;
698
- return check
699
- ? check.tenders
700
- .filter(function (i) { return i.tender_type === 'GIFT_CARD' && i.tender_status === 'AUTHORIZED'; })
701
- .map(function (i) { return (i.gift_card ? i.gift_card.code : null); })
702
- .filter(function (i) { return i; })
703
- : [];
704
- };
705
- exports.selectPosCheckGiftCardCodes = selectPosCheckGiftCardCodes;
717
+ // export const selectPosCheckGiftCardCodes = (state: AppState) => {
718
+ // const check = state.checkout.check
719
+ // return check
720
+ // ? check.tenders
721
+ // .filter(
722
+ // i => i.tender_type === 'GIFT_CARD' && i.tender_status === 'AUTHORIZED'
723
+ // )
724
+ // .map(i => (i.gift_card ? i.gift_card.code : null))
725
+ // .filter(i => i)
726
+ // : []
727
+ // }
706
728
  exports.checkoutReducer = checkoutSlice.reducer;
@@ -41,7 +41,7 @@ export declare const selectKiosk: (state: AppState) => KioskState;
41
41
  export declare const selectKioskVersion: (state: AppState) => string | null | undefined;
42
42
  export declare const selectKioskStore: (state: AppState) => Store | null;
43
43
  export declare const selectKioskBrand: (state: AppState) => KioskBrand | null;
44
- export declare const selectKioskConfig: (state: AppState) => AppConfig | null;
44
+ export declare const selectKioskConfig: (state: AppState) => AppConfig;
45
45
  export declare const selectKioskConfigScreen: (screen: string) => ((state: {
46
46
  alerts: import("../types").Alerts;
47
47
  arrivals: import("./arrivals").ArrivalsState;
@@ -140,7 +140,7 @@ var selectKioskStore = function (state) { return state.kiosk.store; };
140
140
  exports.selectKioskStore = selectKioskStore;
141
141
  var selectKioskBrand = function (state) { return state.kiosk.brand; };
142
142
  exports.selectKioskBrand = selectKioskBrand;
143
- var selectKioskConfig = function (state) { return state.kiosk.config; };
143
+ var selectKioskConfig = function (state) { return state.kiosk.config || {}; };
144
144
  exports.selectKioskConfig = selectKioskConfig;
145
145
  var selectKioskConfigScreen = function (screen) {
146
146
  return (0, toolkit_1.createSelector)(function (state) {
@@ -1,4 +1,4 @@
1
- import { Menu, RequestError, RequestStatus, MenuVars, MenuCategories, SoldOut } from '../types';
1
+ import { Menu, MenuCategories, MenuVars, RequestError, RequestStatus, SoldOut } from '@open-tender/types';
2
2
  import { AppState } from '../app';
3
3
  export interface MenuState {
4
4
  categories: MenuCategories;
@@ -55,7 +55,7 @@ export declare const selectMenuPagesFiltered: ((state: {
55
55
  resetResultsCount: () => void;
56
56
  } & {
57
57
  resultFunc: (resultFuncArgs_0: {
58
- orderType: import("../types").OrderType | null;
58
+ orderType: import("@open-tender/types").OrderType | null;
59
59
  pages: MenuPages;
60
60
  }) => {
61
61
  order_type: import("../types").OrderType;
@@ -65,7 +65,7 @@ export declare const selectMenuPagesFiltered: ((state: {
65
65
  sections: import("../types").MenuSections;
66
66
  }[];
67
67
  memoizedResultFunc: ((resultFuncArgs_0: {
68
- orderType: import("../types").OrderType | null;
68
+ orderType: import("@open-tender/types").OrderType | null;
69
69
  pages: MenuPages;
70
70
  }) => {
71
71
  order_type: import("../types").OrderType;
@@ -86,7 +86,7 @@ export declare const selectMenuPagesFiltered: ((state: {
86
86
  sections: import("../types").MenuSections;
87
87
  }[];
88
88
  dependencies: [(state: AppState) => {
89
- orderType: import("../types").OrderType | null;
89
+ orderType: import("@open-tender/types").OrderType | null;
90
90
  pages: MenuPages;
91
91
  }];
92
92
  recomputations: () => number;
@@ -1,5 +1,4 @@
1
- import { MenuCategory } from '@open-tender/types';
2
- import { Cart, CartCounts, CartItem, MenuVendor, Messages, OrderType, RequestedAt, RequestError, RequestStatus, ServiceType } from '../types';
1
+ import { Cart, CartCounts, CartItem, MenuCategory, MenuRevenueCenter, Messages, OrderType, RequestError, RequestStatus, RequestedAt, ServiceType } from '@open-tender/types';
3
2
  import { AppState } from '../app';
4
3
  export interface OrderState {
5
4
  orderId: string | null;
@@ -9,7 +8,7 @@ export interface OrderState {
9
8
  table: string | null;
10
9
  prepType: 'EAT_HERE' | 'TAKE_OUT' | null;
11
10
  requestedAt: RequestedAt;
12
- currentVendor: MenuVendor | null;
11
+ currentVendor: MenuRevenueCenter | null;
13
12
  currentCategory: MenuCategory | null;
14
13
  currentItem: CartItem | null;
15
14
  cart: Cart;
@@ -29,7 +28,7 @@ export declare const selectOrder: (state: AppState) => OrderState;
29
28
  export declare const selectOrderType: (state: AppState) => OrderType | null;
30
29
  export declare const selectOrderTypeName: (state: AppState) => string;
31
30
  export declare const selectServiceType: (state: AppState) => ServiceType | null;
32
- export declare const selectServiceTypeName: (state: AppState) => string;
31
+ export declare const selectServiceTypeName: (state: AppState) => string | undefined;
33
32
  export declare const selectRequestedAt: (state: AppState) => `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | "ASAP";
34
33
  export declare const selectRevenueCenterId: (state: AppState) => number | null;
35
34
  export declare const selectMenuSlug: (state: AppState) => string;
@@ -38,7 +37,7 @@ export declare const selectMenuVars: (state: AppState) => {
38
37
  serviceType: ServiceType | null;
39
38
  requestedAt: RequestedAt;
40
39
  };
41
- export declare const selectCurrentVendor: (state: AppState) => MenuVendor | null;
40
+ export declare const selectCurrentVendor: (state: AppState) => MenuRevenueCenter | null;
42
41
  export declare const selectCurrentCategory: (state: AppState) => MenuCategory | null;
43
42
  export declare const selectCurrentItem: (state: AppState) => CartItem | null;
44
43
  export declare const selectCart: (state: AppState) => Cart;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.orderReducer = exports.selectCartValidate = exports.selectCanOrder = exports.selectCartCounts = 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.selectOrder = exports.selectMessages = exports.selectAlert = 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
5
  var tslib_1 = require("tslib");
6
6
  var toolkit_1 = require("@reduxjs/toolkit");
7
- var utils_1 = require("../utils");
7
+ var utils_1 = require("@open-tender/utils");
8
8
  var types_1 = require("./types");
9
9
  var initialState = {
10
10
  orderId: null,
@@ -209,7 +209,7 @@ var selectCartQuantity = function (state) {
209
209
  exports.selectCartQuantity = selectCartQuantity;
210
210
  var selectCartTotal = function (state) {
211
211
  return state.order.cart
212
- ? state.order.cart.reduce(function (t, i) { return (t += i.totalPrice); }, 0.0)
212
+ ? state.order.cart.reduce(function (t, i) { return (t += i.totalPrice || 0); }, 0.0)
213
213
  : 0.0;
214
214
  };
215
215
  exports.selectCartTotal = selectCartTotal;
@@ -1,5 +1,4 @@
1
- import { ISOString } from '../datetimes';
2
- import { DiscountType, Money, OrderType, ServiceType, TenderType } from '../global';
1
+ import { DiscountType, ISOString, Money, OrderType, ServiceType, TenderType } from '@open-tender/types';
3
2
  import { Address, Customer } from './customer';
4
3
  export interface CustomerIdentifier {
5
4
  card_token?: string;
@@ -1,4 +1,5 @@
1
- import { Arrivals, CashEvent, CashSummary, CustomerCheckout, CustomerIdentifier, DeviceRead, Discount, Discounts, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, FetchOrdersAPIArgs, GiftCardBalance, GiftCardCredit, InternalSettings, ItemTypes, KioskConfig, LevelUp, Menu, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Order, OrderCreate, Orders, OrderTender, OrderType, OrderUpdate, Punch, Refund, RequestedAt, RevenueCenter, SelectOptions, ServiceType, Settings, Store, Surcharges, Taxes, Tender, TicketStatusUpdate, TicketsUpdate, TicketUpdate } from '../types';
1
+ import { CustomerCheckout, Menu, OrderCreate, OrderTender, OrderType, ServiceType } from '@open-tender/types';
2
+ import { Arrivals, CashEvent, CashSummary, CustomerIdentifier, DeviceRead, Discount, Discounts, Employee, Employees, PosSettingType, ErrorAlert, ErrorAlerts, FetchOrdersAPIArgs, GiftCardBalance, GiftCardCredit, InternalSettings, ItemTypes, KioskConfig, LevelUp, MenuColors, MenuPages, OfflineAuths, OfflineAuthsResult, Order, Orders, OrderUpdate, Punch, Refund, RequestedAt, RevenueCenter, SelectOptions, Settings, Store, Surcharges, Taxes, Tender, TicketStatusUpdate, TicketsUpdate, TicketUpdate } from '../types';
2
3
  export interface InitAPI {
3
4
  apiUrl: string;
4
5
  posTerminalId?: number;
@@ -1,24 +1,26 @@
1
- import { CustomerCheckout, Discounts, IdentifyCustomer, Money, Order, OrderCreateGiftCard, OrderCreatePoints, OrderTender, RequestError, RequestStatus, Surcharges, Taxes, Tender } from '../types';
2
1
  import { AppState } from '../app';
2
+ import { CustomerCheckout, IdentifyCustomer, Money, OrderCreateDiscounts, OrderCreateGiftCards, OrderCreatePoints, OrderCreateSurcharges, OrderTender, RequestError, RequestStatus, Taxes } from '@open-tender/types';
3
+ import { Order, Tender } from '../types';
3
4
  export interface CheckoutState {
5
+ activating: RequestStatus;
6
+ authorizing: RequestStatus;
4
7
  check: Order | null;
8
+ completedOrder: Order | null;
9
+ customer: CustomerCheckout | null;
10
+ discounts: OrderCreateDiscounts;
11
+ error: any | null;
12
+ giftCards: OrderCreateGiftCards;
13
+ identifying: RequestStatus;
14
+ isTaxExempt: boolean;
5
15
  loading: RequestStatus;
6
- authorizing: RequestStatus;
16
+ pendingDiscounts: boolean;
17
+ points: OrderCreatePoints;
7
18
  removing: RequestStatus;
8
- validating: RequestStatus;
9
19
  submitting: RequestStatus;
10
- activating: RequestStatus;
11
- identifying: RequestStatus;
12
- error: any | null;
13
- giftCards: Array<OrderCreateGiftCard>;
14
- surcharges: Surcharges;
15
- discounts: Discounts;
20
+ surcharges: OrderCreateSurcharges;
16
21
  taxes: Taxes;
17
- isTaxExempt: boolean;
18
- tip: Money;
19
- customer: CustomerCheckout | null;
20
- points: Array<OrderCreatePoints>;
21
- pendingDiscounts: boolean;
22
+ tip: Money | null;
23
+ validating: RequestStatus;
22
24
  }
23
25
  export declare enum CheckoutActionType {
24
26
  AddTender = "checkout/addTender",
@@ -143,5 +145,4 @@ export declare const selectPosAmountDue: (state: AppState) => `${number}.${numbe
143
145
  export declare const selectPosCheckSubtotal: (state: AppState) => `${number}.${number}`;
144
146
  export declare const selectPosCheckTotal: (state: AppState) => `${number}.${number}`;
145
147
  export declare const selectPosCheckTenders: (state: AppState) => import("../types").OrderTenders;
146
- export declare const selectPosCheckGiftCardCodes: (state: AppState) => (string | null)[];
147
148
  export declare const checkoutReducer: import("redux").Reducer<CheckoutState>;
@@ -2,32 +2,39 @@ var _a;
2
2
  import { __assign, __awaiter, __generator } from "tslib";
3
3
  import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
4
4
  import { v4 as uuidv4 } from 'uuid';
5
+ // import {
6
+ // IdentifyCustomer,
7
+ // Order,
8
+ // OrderCreate,
9
+ // Tender
10
+ // } from '../types'
5
11
  import { handleRespError } from '../utils';
6
- import { makeSimpleCart } from '../utils/order';
7
12
  import { addAlert } from './alerts';
8
13
  import { showNotification } from './notifications';
9
14
  import { setCart, setOrderId } from './order';
10
15
  import { setLastOrderId } from './pos';
11
16
  import { ReducerType } from './types';
17
+ import { makeSimpleCart } from '@open-tender/utils';
12
18
  var initialState = {
19
+ activating: 'idle',
20
+ authorizing: 'idle',
13
21
  check: null,
22
+ completedOrder: null,
23
+ customer: null,
24
+ discounts: [],
25
+ error: null,
26
+ giftCards: [],
27
+ identifying: 'idle',
28
+ isTaxExempt: false,
14
29
  loading: 'idle',
15
- authorizing: 'idle',
30
+ pendingDiscounts: false,
31
+ points: [],
16
32
  removing: 'idle',
17
- validating: 'idle',
18
33
  submitting: 'idle',
19
- activating: 'idle',
20
- identifying: 'idle',
21
- error: null,
22
- giftCards: [],
23
34
  surcharges: [],
24
- discounts: [],
25
- points: [],
26
35
  taxes: [],
27
- isTaxExempt: false,
28
- tip: '0.00',
29
- customer: null,
30
- pendingDiscounts: false
36
+ tip: null,
37
+ validating: 'idle'
31
38
  };
32
39
  var getAmountDue = function (check) {
33
40
  return check && check.totals ? check.totals.amount_due : null;
@@ -41,21 +48,25 @@ var prepareOrder = function (order, checkout) {
41
48
  if (!revenue_center_id || !order_type || !service_type) {
42
49
  return null;
43
50
  }
44
- var customer = checkout.customer, gift_cards = checkout.giftCards, surcharges = checkout.surcharges, discounts = checkout.discounts, taxes = checkout.taxes, tip = checkout.tip, isTaxExempt = checkout.isTaxExempt, points = checkout.points;
45
- var is_tax_exempt = isTaxExempt ? true : false;
51
+ var customer = checkout.customer,
52
+ // giftCards: gift_cards,
53
+ surcharges = checkout.surcharges, discounts = checkout.discounts, taxes = checkout.taxes, tip = checkout.tip,
54
+ // isTaxExempt,
55
+ points = checkout.points;
56
+ // const is_tax_exempt = isTaxExempt ? true : false
46
57
  return {
47
58
  order_uuid: order_uuid,
48
59
  revenue_center_id: revenue_center_id,
49
- order_type: order_type,
60
+ // order_type,
50
61
  service_type: service_type,
51
62
  requested_at: requested_at,
52
63
  customer: customer,
53
64
  cart: cart,
54
- gift_cards: gift_cards,
65
+ // gift_cards,
55
66
  surcharges: surcharges,
56
67
  discounts: discounts,
57
68
  taxes: taxes,
58
- is_tax_exempt: is_tax_exempt,
69
+ // is_tax_exempt,
59
70
  tip: tip,
60
71
  points: points
61
72
  };
@@ -76,7 +87,7 @@ export var CheckoutActionType;
76
87
  export var addTender = createAsyncThunk(CheckoutActionType.AddTender, function (tender, _a) {
77
88
  var dispatch = _a.dispatch, getState = _a.getState, rejectWithValue = _a.rejectWithValue;
78
89
  return __awaiter(void 0, void 0, void 0, function () {
79
- var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, credit_card, card_token, callback, data, err_1;
90
+ var _b, config, order, checkout, orderId, api, hasLoyalty, amountDue, response, amount, card_token, callback, data, err_1;
80
91
  return __generator(this, function (_c) {
81
92
  switch (_c.label) {
82
93
  case 0:
@@ -88,11 +99,13 @@ export var addTender = createAsyncThunk(CheckoutActionType.AddTender, function (
88
99
  api = config.api;
89
100
  hasLoyalty = config.store ? config.store.has_loyalty : false;
90
101
  amountDue = getAmountDue(checkout.check);
91
- return [4 /*yield*/, api.postTender(orderId, tender)];
102
+ return [4 /*yield*/, api.postTender(orderId, tender)
103
+ // TODO: need to fix this
104
+ ];
92
105
  case 1:
93
106
  response = _c.sent();
94
- amount = response.amount, credit_card = response.credit_card;
95
- card_token = (credit_card || {}).token;
107
+ amount = response.amount;
108
+ card_token = null;
96
109
  callback = amount === amountDue
97
110
  ? function () { return dispatch(submitPosOrder()); }
98
111
  : function () { return dispatch(validatePosOrder()); };
@@ -160,7 +173,10 @@ export var updateTender = createAsyncThunk(CheckoutActionType.UpdateTender, func
160
173
  amountDue = parseFloat(totals.amount_due || '0.00');
161
174
  amount = amountTender + amountDue;
162
175
  if (!(amount > 0)) return [3 /*break*/, 2];
163
- updatedTender = { tender_type: tender.tender_type, amount: amount.toFixed(2) };
176
+ updatedTender = {
177
+ tender_type: tender.tender_type,
178
+ amount: amount.toFixed(2)
179
+ };
164
180
  return [4 /*yield*/, api.patchTender(orderId, index, updatedTender)];
165
181
  case 1:
166
182
  response = _b.sent();
@@ -604,10 +620,15 @@ var checkoutSlice = createSlice({
604
620
  state.error = action.payload;
605
621
  })
606
622
  .addCase(submitPosOrder.fulfilled, function (state, action) {
607
- state.check = action.payload || null;
623
+ state.check = null;
624
+ state.completedOrder = action.payload || null;
608
625
  state.loading = 'idle';
609
626
  state.submitting = 'idle';
610
627
  state.error = null;
628
+ // return {
629
+ // ...initialState,
630
+ // completedOrder: action.payload
631
+ // }
611
632
  })
612
633
  .addCase(submitPosOrder.pending, function (state) {
613
634
  state.loading = 'pending';
@@ -680,13 +701,15 @@ export var selectPosCheckTenders = function (state) {
680
701
  var check = state.checkout.check;
681
702
  return check ? check.tenders : [];
682
703
  };
683
- export var selectPosCheckGiftCardCodes = function (state) {
684
- var check = state.checkout.check;
685
- return check
686
- ? check.tenders
687
- .filter(function (i) { return i.tender_type === 'GIFT_CARD' && i.tender_status === 'AUTHORIZED'; })
688
- .map(function (i) { return (i.gift_card ? i.gift_card.code : null); })
689
- .filter(function (i) { return i; })
690
- : [];
691
- };
704
+ // export const selectPosCheckGiftCardCodes = (state: AppState) => {
705
+ // const check = state.checkout.check
706
+ // return check
707
+ // ? check.tenders
708
+ // .filter(
709
+ // i => i.tender_type === 'GIFT_CARD' && i.tender_status === 'AUTHORIZED'
710
+ // )
711
+ // .map(i => (i.gift_card ? i.gift_card.code : null))
712
+ // .filter(i => i)
713
+ // : []
714
+ // }
692
715
  export var checkoutReducer = checkoutSlice.reducer;
@@ -41,7 +41,7 @@ export declare const selectKiosk: (state: AppState) => KioskState;
41
41
  export declare const selectKioskVersion: (state: AppState) => string | null | undefined;
42
42
  export declare const selectKioskStore: (state: AppState) => Store | null;
43
43
  export declare const selectKioskBrand: (state: AppState) => KioskBrand | null;
44
- export declare const selectKioskConfig: (state: AppState) => AppConfig | null;
44
+ export declare const selectKioskConfig: (state: AppState) => AppConfig;
45
45
  export declare const selectKioskConfigScreen: (screen: string) => ((state: {
46
46
  alerts: import("../types").Alerts;
47
47
  arrivals: import("./arrivals").ArrivalsState;
@@ -133,7 +133,7 @@ export var selectKiosk = function (state) { return state.kiosk; };
133
133
  export var selectKioskVersion = function (state) { return state.kiosk.version; };
134
134
  export var selectKioskStore = function (state) { return state.kiosk.store; };
135
135
  export var selectKioskBrand = function (state) { return state.kiosk.brand; };
136
- export var selectKioskConfig = function (state) { return state.kiosk.config; };
136
+ export var selectKioskConfig = function (state) { return state.kiosk.config || {}; };
137
137
  export var selectKioskConfigScreen = function (screen) {
138
138
  return createSelector(function (state) {
139
139
  var config = state.kiosk.config;
@@ -1,4 +1,4 @@
1
- import { Menu, RequestError, RequestStatus, MenuVars, MenuCategories, SoldOut } from '../types';
1
+ import { Menu, MenuCategories, MenuVars, RequestError, RequestStatus, SoldOut } from '@open-tender/types';
2
2
  import { AppState } from '../app';
3
3
  export interface MenuState {
4
4
  categories: MenuCategories;
@@ -55,7 +55,7 @@ export declare const selectMenuPagesFiltered: ((state: {
55
55
  resetResultsCount: () => void;
56
56
  } & {
57
57
  resultFunc: (resultFuncArgs_0: {
58
- orderType: import("../types").OrderType | null;
58
+ orderType: import("@open-tender/types").OrderType | null;
59
59
  pages: MenuPages;
60
60
  }) => {
61
61
  order_type: import("../types").OrderType;
@@ -65,7 +65,7 @@ export declare const selectMenuPagesFiltered: ((state: {
65
65
  sections: import("../types").MenuSections;
66
66
  }[];
67
67
  memoizedResultFunc: ((resultFuncArgs_0: {
68
- orderType: import("../types").OrderType | null;
68
+ orderType: import("@open-tender/types").OrderType | null;
69
69
  pages: MenuPages;
70
70
  }) => {
71
71
  order_type: import("../types").OrderType;
@@ -86,7 +86,7 @@ export declare const selectMenuPagesFiltered: ((state: {
86
86
  sections: import("../types").MenuSections;
87
87
  }[];
88
88
  dependencies: [(state: AppState) => {
89
- orderType: import("../types").OrderType | null;
89
+ orderType: import("@open-tender/types").OrderType | null;
90
90
  pages: MenuPages;
91
91
  }];
92
92
  recomputations: () => number;
@@ -1,5 +1,4 @@
1
- import { MenuCategory } from '@open-tender/types';
2
- import { Cart, CartCounts, CartItem, MenuVendor, Messages, OrderType, RequestedAt, RequestError, RequestStatus, ServiceType } from '../types';
1
+ import { Cart, CartCounts, CartItem, MenuCategory, MenuRevenueCenter, Messages, OrderType, RequestError, RequestStatus, RequestedAt, ServiceType } from '@open-tender/types';
3
2
  import { AppState } from '../app';
4
3
  export interface OrderState {
5
4
  orderId: string | null;
@@ -9,7 +8,7 @@ export interface OrderState {
9
8
  table: string | null;
10
9
  prepType: 'EAT_HERE' | 'TAKE_OUT' | null;
11
10
  requestedAt: RequestedAt;
12
- currentVendor: MenuVendor | null;
11
+ currentVendor: MenuRevenueCenter | null;
13
12
  currentCategory: MenuCategory | null;
14
13
  currentItem: CartItem | null;
15
14
  cart: Cart;
@@ -29,7 +28,7 @@ export declare const selectOrder: (state: AppState) => OrderState;
29
28
  export declare const selectOrderType: (state: AppState) => OrderType | null;
30
29
  export declare const selectOrderTypeName: (state: AppState) => string;
31
30
  export declare const selectServiceType: (state: AppState) => ServiceType | null;
32
- export declare const selectServiceTypeName: (state: AppState) => string;
31
+ export declare const selectServiceTypeName: (state: AppState) => string | undefined;
33
32
  export declare const selectRequestedAt: (state: AppState) => `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | "ASAP";
34
33
  export declare const selectRevenueCenterId: (state: AppState) => number | null;
35
34
  export declare const selectMenuSlug: (state: AppState) => string;
@@ -38,7 +37,7 @@ export declare const selectMenuVars: (state: AppState) => {
38
37
  serviceType: ServiceType | null;
39
38
  requestedAt: RequestedAt;
40
39
  };
41
- export declare const selectCurrentVendor: (state: AppState) => MenuVendor | null;
40
+ export declare const selectCurrentVendor: (state: AppState) => MenuRevenueCenter | null;
42
41
  export declare const selectCurrentCategory: (state: AppState) => MenuCategory | null;
43
42
  export declare const selectCurrentItem: (state: AppState) => CartItem | null;
44
43
  export declare const selectCart: (state: AppState) => Cart;
@@ -1,7 +1,7 @@
1
1
  var _a;
2
2
  import { __spreadArray } from "tslib";
3
3
  import { createSlice } from '@reduxjs/toolkit';
4
- import { addItem, calcCartCounts, decrementItem, incrementItem, makeRandomNumberString, orderTypeNamesMap, removeItem, serviceTypeNamesMap } from '../utils';
4
+ import { addItem, calcCartCounts, decrementItem, incrementItem, makeRandomNumberString, orderTypeNamesMap, removeItem, serviceTypeNamesMap } from '@open-tender/utils';
5
5
  import { ReducerType } from './types';
6
6
  var initialState = {
7
7
  orderId: null,
@@ -189,7 +189,7 @@ export var selectCartQuantity = function (state) {
189
189
  };
190
190
  export var selectCartTotal = function (state) {
191
191
  return state.order.cart
192
- ? state.order.cart.reduce(function (t, i) { return (t += i.totalPrice); }, 0.0)
192
+ ? state.order.cart.reduce(function (t, i) { return (t += i.totalPrice || 0); }, 0.0)
193
193
  : 0.0;
194
194
  };
195
195
  export var selectCartCounts = function (state) {
@@ -1,5 +1,4 @@
1
- import { ISOString } from '../datetimes';
2
- import { DiscountType, Money, OrderType, ServiceType, TenderType } from '../global';
1
+ import { DiscountType, ISOString, Money, OrderType, ServiceType, TenderType } from '@open-tender/types';
3
2
  import { Address, Customer } from './customer';
4
3
  export interface CustomerIdentifier {
5
4
  card_token?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tender/store",
3
- "version": "0.8.11",
3
+ "version": "0.9.0",
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,8 +58,9 @@
58
58
  },
59
59
  "peerDependencies": {
60
60
  "@emotion/react": "^11.11.1",
61
- "@open-tender/types": "^0.4.1",
62
- "@open-tender/ui": "^0.1.15",
61
+ "@open-tender/types": "^0.4.4",
62
+ "@open-tender/ui": "^0.1.18",
63
+ "@open-tender/utils": "^0.4.1",
63
64
  "@reduxjs/toolkit": "^2.0.1",
64
65
  "date-fns": "2.30.0",
65
66
  "date-fns-tz": "^2.0.0",