@open-tender/store 0.3.6 → 0.3.8

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
1
  import { AppState } from '../app';
2
- import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsOrderType, KdsView, OrderCounts, OrderKds, OrdersAndCounts, OrdersKds, OrderUpdate, PrepStations, RequestError, RequestErrorAPI, RequestStatus, TicketStatus, TicketStatusUpdate } from '../types';
2
+ import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsOrderType, KdsStationCounts, KdsView, OrderCounts, OrderKds, OrdersAndStationCounts, OrdersKds, OrderUpdate, PrepStations, RequestError, RequestErrorAPI, RequestStatus, TicketStatus, TicketStatusUpdate } from '../types';
3
3
  import { ReducerType } from './types';
4
4
  export interface KdsState {
5
5
  itemTypes: ItemTypes | null;
@@ -20,6 +20,7 @@ export interface KdsState {
20
20
  error: RequestError;
21
21
  order: OrderKds | null;
22
22
  counts: OrderCounts;
23
+ stationCounts: KdsStationCounts | null;
23
24
  }
24
25
  export declare enum KdsActionType {
25
26
  FetchKdsOrders = "kds/fetchKdsOrders",
@@ -30,7 +31,7 @@ export declare enum KdsActionType {
30
31
  PrintTicket = "kds/printTicket",
31
32
  UpdateTicket = "kds/updateTicket"
32
33
  }
33
- export declare const fetchKdsOrders: import("@reduxjs/toolkit").AsyncThunk<OrdersAndCounts, FetchOrdersArgs, {
34
+ export declare const fetchKdsOrders: import("@reduxjs/toolkit").AsyncThunk<OrdersAndStationCounts, FetchOrdersArgs, {
34
35
  state: AppState;
35
36
  rejectValue: RequestError;
36
37
  }>;
@@ -72,6 +73,18 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
72
73
  payload: any;
73
74
  type: string;
74
75
  }) => void;
76
+ setKdsPrepStations: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
77
+ payload: any;
78
+ type: string;
79
+ }) => void;
80
+ setKdsPrepStationId: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
81
+ payload: any;
82
+ type: string;
83
+ }) => void;
84
+ setKdsOrderType: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
85
+ payload: any;
86
+ type: string;
87
+ }) => void;
75
88
  setKdsColumns: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
76
89
  payload: any;
77
90
  type: string;
@@ -156,15 +169,7 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
156
169
  totals: import("../types").OrderTotals;
157
170
  }[];
158
171
  order: OrderKds | null;
159
- counts: {
160
- current: null;
161
- future: null;
162
- qa: null;
163
- } | {
164
- current: Record<string, number>;
165
- future: Record<string, number>;
166
- qa: Record<string, number>;
167
- };
172
+ stationCounts: KdsStationCounts;
168
173
  itemTypes: import("immer/dist/internal").WritableDraft<import("../types").ItemType>[] | null;
169
174
  prepStations: import("immer/dist/internal").WritableDraft<import("../types").PrepStation>[];
170
175
  prepStationId: number | null;
@@ -180,11 +185,15 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
180
185
  summary: boolean;
181
186
  loading: RequestStatus;
182
187
  error: import("immer/dist/internal").WritableDraft<RequestErrorAPI> | null | undefined;
188
+ counts: import("immer/dist/internal").WritableDraft<OrderCounts>;
183
189
  };
184
190
  }, ReducerType.Kds>;
185
- export declare const resetkds: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsItemTypes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsColumns: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBoxes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsCardWidth: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsFontSize: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsView: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBusinessDate: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsSearch: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, toggleKdsSummary: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, replaceKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
191
+ export declare const resetkds: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsItemTypes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPrepStations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPrepStationId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsOrderType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsColumns: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBoxes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsCardWidth: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsFontSize: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsView: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBusinessDate: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsSearch: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, toggleKdsSummary: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, replaceKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
186
192
  export declare const selectKds: (state: AppState) => KdsState;
187
193
  export declare const selectKdsItemTypes: (state: AppState) => ItemTypes | null;
194
+ export declare const selectKdsPrepStations: (state: AppState) => PrepStations;
195
+ export declare const selectKdsPrepStationId: (state: AppState) => number | null;
196
+ export declare const selectKdsOrderType: (state: AppState) => KdsOrderType;
188
197
  export declare const selectKdsColumns: (state: AppState) => number;
189
198
  export declare const selectKdsBoxes: (state: AppState) => number;
190
199
  export declare const selectKdsCardWidth: (state: AppState) => number;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.kdsReducer = exports.selectKdsOrdersCounts = exports.selectKdsPrepStationOrders = exports.selectKdsFutureCount = exports.selectKdsFutureOrders = exports.selectKdsCurrentCount = exports.selectKdsCurrentOrders = exports.selectKdsOrders = exports.selectKdsOrder = exports.selectKdsBusinessDate = exports.selectKdsView = exports.selectKdsPageIndex = exports.selectKdsPage = exports.selectKdsSummary = exports.selectKdsFontSize = exports.selectKdsCardWidth = exports.selectKdsBoxes = exports.selectKdsColumns = exports.selectKdsItemTypes = exports.selectKds = exports.replaceKdsOrder = exports.setKdsOrder = exports.toggleKdsSummary = exports.setKdsSearch = exports.setKdsBusinessDate = exports.setKdsView = exports.setKdsPage = exports.setKdsFontSize = exports.setKdsCardWidth = exports.setKdsBoxes = exports.setKdsColumns = exports.setKdsItemTypes = exports.resetkds = exports.kdsSlice = exports.updateTicket = exports.printTicket = exports.resetTickets = exports.printTickets = exports.printKdsOrder = exports.updateKdsOrder = exports.fetchKdsOrders = exports.KdsActionType = void 0;
4
+ exports.kdsReducer = exports.selectKdsOrdersCounts = exports.selectKdsPrepStationOrders = exports.selectKdsFutureCount = exports.selectKdsFutureOrders = exports.selectKdsCurrentCount = exports.selectKdsCurrentOrders = exports.selectKdsOrders = exports.selectKdsOrder = exports.selectKdsBusinessDate = exports.selectKdsView = exports.selectKdsPageIndex = exports.selectKdsPage = exports.selectKdsSummary = exports.selectKdsFontSize = exports.selectKdsCardWidth = exports.selectKdsBoxes = exports.selectKdsColumns = exports.selectKdsOrderType = exports.selectKdsPrepStationId = exports.selectKdsPrepStations = exports.selectKdsItemTypes = exports.selectKds = exports.replaceKdsOrder = exports.setKdsOrder = exports.toggleKdsSummary = exports.setKdsSearch = exports.setKdsBusinessDate = exports.setKdsView = exports.setKdsPage = exports.setKdsFontSize = exports.setKdsCardWidth = exports.setKdsBoxes = exports.setKdsColumns = exports.setKdsOrderType = exports.setKdsPrepStationId = exports.setKdsPrepStations = exports.setKdsItemTypes = exports.resetkds = exports.kdsSlice = exports.updateTicket = exports.printTicket = exports.resetTickets = exports.printTickets = exports.printKdsOrder = exports.updateKdsOrder = exports.fetchKdsOrders = exports.KdsActionType = void 0;
5
5
  var tslib_1 = require("tslib");
6
6
  var toolkit_1 = require("@reduxjs/toolkit");
7
7
  var types_1 = require("./types");
@@ -63,7 +63,8 @@ var initialState = {
63
63
  loading: 'idle',
64
64
  error: null,
65
65
  order: null,
66
- counts: { current: null, future: null, qa: null }
66
+ counts: { current: null, future: null, qa: null },
67
+ stationCounts: null
67
68
  };
68
69
  var KdsActionType;
69
70
  (function (KdsActionType) {
@@ -78,20 +79,24 @@ var KdsActionType;
78
79
  exports.fetchKdsOrders = (0, toolkit_1.createAsyncThunk)(KdsActionType.FetchKdsOrders, function (params, _a) {
79
80
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
80
81
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
81
- var api, itemTypes, args, orders, ordersKds, counts, err_1;
82
+ var api, args, orders, ordersKds, prepStations_1, stationCounts, err_1;
82
83
  return tslib_1.__generator(this, function (_b) {
83
84
  switch (_b.label) {
84
85
  case 0:
85
86
  _b.trys.push([0, 2, , 3]);
86
87
  api = getState().config.api;
87
- itemTypes = getState().kds.itemTypes;
88
88
  args = (0, utils_1.makeFetchOrdersArgs)(params);
89
89
  return [4 /*yield*/, api.getOrders(args)];
90
90
  case 1:
91
91
  orders = _b.sent();
92
92
  ordersKds = (0, utils_1.makeKdsOrders)(orders);
93
- counts = (0, utils_1.makeKdsCounts)(itemTypes, ordersKds);
94
- return [2 /*return*/, { orders: orders, counts: counts }];
93
+ prepStations_1 = getState().kds.prepStations;
94
+ stationCounts = prepStations_1
95
+ ? (0, utils_1.makeKdsStationCounts)(ordersKds, prepStations_1)
96
+ : null;
97
+ // const itemTypes = getState().kds.itemTypes
98
+ // const counts = makeKdsCounts(itemTypes, ordersKds)
99
+ return [2 /*return*/, { orders: ordersKds, stationCounts: stationCounts }];
95
100
  case 2:
96
101
  err_1 = _b.sent();
97
102
  return [2 /*return*/, rejectWithValue(err_1)];
@@ -257,6 +262,15 @@ exports.kdsSlice = (0, toolkit_1.createSlice)({
257
262
  setKdsItemTypes: function (state, action) {
258
263
  state.itemTypes = action.payload;
259
264
  },
265
+ setKdsPrepStations: function (state, action) {
266
+ state.prepStations = action.payload;
267
+ },
268
+ setKdsPrepStationId: function (state, action) {
269
+ state.prepStationId = action.payload;
270
+ },
271
+ setKdsOrderType: function (state, action) {
272
+ state.orderType = action.payload;
273
+ },
260
274
  setKdsColumns: function (state, action) {
261
275
  state.columns = action.payload;
262
276
  },
@@ -298,17 +312,18 @@ exports.kdsSlice = (0, toolkit_1.createSlice)({
298
312
  var orders = updatedOrders
299
313
  .map(function (i) { return (tslib_1.__assign(tslib_1.__assign({}, i), { fireAt: (0, utils_1.isoToDate)(i.fire_at, tz) })); })
300
314
  .sort(function (a, b) { return a.fireAt.getTime() - b.fireAt.getTime(); });
301
- var counts = (0, utils_1.makeKdsCounts)(state.itemTypes, orders);
315
+ // const counts = makeKdsCounts(state.itemTypes, orders)
316
+ var stationCounts = (0, utils_1.makeKdsStationCounts)(updatedOrders, state.prepStations);
302
317
  var order = state.order ? updated : null;
303
- return tslib_1.__assign(tslib_1.__assign({}, state), { orders: orders, order: order, counts: counts });
318
+ return tslib_1.__assign(tslib_1.__assign({}, state), { orders: orders, order: order, stationCounts: stationCounts });
304
319
  }
305
320
  },
306
321
  extraReducers: function (builder) {
307
322
  builder
308
323
  .addCase(exports.fetchKdsOrders.fulfilled, function (state, action) {
309
- var _a = action.payload, orders = _a.orders, counts = _a.counts;
324
+ var _a = action.payload, orders = _a.orders, stationCounts = _a.stationCounts;
310
325
  state.orders = orders;
311
- state.counts = counts;
326
+ state.stationCounts = stationCounts;
312
327
  state.loading = 'idle';
313
328
  state.error = null;
314
329
  })
@@ -381,11 +396,19 @@ exports.kdsSlice = (0, toolkit_1.createSlice)({
381
396
  });
382
397
  }
383
398
  });
384
- exports.resetkds = (_a = exports.kdsSlice.actions, _a.resetkds), exports.setKdsItemTypes = _a.setKdsItemTypes, exports.setKdsColumns = _a.setKdsColumns, exports.setKdsBoxes = _a.setKdsBoxes, exports.setKdsCardWidth = _a.setKdsCardWidth, exports.setKdsFontSize = _a.setKdsFontSize, exports.setKdsPage = _a.setKdsPage, exports.setKdsView = _a.setKdsView, exports.setKdsBusinessDate = _a.setKdsBusinessDate, exports.setKdsSearch = _a.setKdsSearch, exports.toggleKdsSummary = _a.toggleKdsSummary, exports.setKdsOrder = _a.setKdsOrder, exports.replaceKdsOrder = _a.replaceKdsOrder;
399
+ exports.resetkds = (_a = exports.kdsSlice.actions, _a.resetkds), exports.setKdsItemTypes = _a.setKdsItemTypes, exports.setKdsPrepStations = _a.setKdsPrepStations, exports.setKdsPrepStationId = _a.setKdsPrepStationId, exports.setKdsOrderType = _a.setKdsOrderType, exports.setKdsColumns = _a.setKdsColumns, exports.setKdsBoxes = _a.setKdsBoxes, exports.setKdsCardWidth = _a.setKdsCardWidth, exports.setKdsFontSize = _a.setKdsFontSize, exports.setKdsPage = _a.setKdsPage, exports.setKdsView = _a.setKdsView, exports.setKdsBusinessDate = _a.setKdsBusinessDate, exports.setKdsSearch = _a.setKdsSearch, exports.toggleKdsSummary = _a.toggleKdsSummary, exports.setKdsOrder = _a.setKdsOrder, exports.replaceKdsOrder = _a.replaceKdsOrder;
385
400
  var selectKds = function (state) { return state.kds; };
386
401
  exports.selectKds = selectKds;
387
402
  var selectKdsItemTypes = function (state) { return state.kds.itemTypes; };
388
403
  exports.selectKdsItemTypes = selectKdsItemTypes;
404
+ var selectKdsPrepStations = function (state) { return state.kds.prepStations; };
405
+ exports.selectKdsPrepStations = selectKdsPrepStations;
406
+ var selectKdsPrepStationId = function (state) {
407
+ return state.kds.prepStationId;
408
+ };
409
+ exports.selectKdsPrepStationId = selectKdsPrepStationId;
410
+ var selectKdsOrderType = function (state) { return state.kds.orderType; };
411
+ exports.selectKdsOrderType = selectKdsOrderType;
389
412
  var selectKdsColumns = function (state) { return state.kds.columns; };
390
413
  exports.selectKdsColumns = selectKdsColumns;
391
414
  var selectKdsBoxes = function (state) { return state.kds.boxes; };
@@ -1,3 +1,4 @@
1
+ import { OrdersKds } from './order';
1
2
  export declare type PrepStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED' | 'FULFILLED';
2
3
  export declare type PrepStatusMap = {
3
4
  [Property in PrepStatus]: PrepStatus;
@@ -28,3 +29,16 @@ export interface KdsTerminal {
28
29
  cardWidth: number;
29
30
  fontSize: KdsFontSize;
30
31
  }
32
+ export interface KdsStationOrderTypeCount {
33
+ orders: number;
34
+ ticets: number;
35
+ }
36
+ export interface KdsStationCount {
37
+ current: KdsStationOrderTypeCount;
38
+ future: KdsStationOrderTypeCount;
39
+ }
40
+ export declare type KdsStationCounts = Record<string, KdsStationCount>;
41
+ export interface OrdersAndStationCounts {
42
+ orders: OrdersKds;
43
+ stationCounts: KdsStationCounts | null;
44
+ }
@@ -1,4 +1,4 @@
1
- import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, KdsOrderType, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStation, PrepStatus, PrepStatusMap, Store, TicketGroups, Timezone } from '../types';
1
+ import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, KdsOrderType, KdsStationCounts, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStation, PrepStations, PrepStatus, PrepStatusMap, Store, TicketGroups, Timezone } from '../types';
2
2
  export declare const prepStatus: PrepStatusMap;
3
3
  export declare const makeFetchOrdersArgs: ({ businessDate, receiptType, channelType, prepStatus, search, sortBy, sortDirection, parentOrderId }: FetchOrdersArgs) => FetchOrdersAPIArgs;
4
4
  export declare const notDone: (prep_status: PrepStatus) => boolean;
@@ -21,6 +21,15 @@ export declare const makeKdsCounts: (itemTypes: ItemTypes | null, orders: Orders
21
21
  future: Record<string, number>;
22
22
  qa: Record<string, number>;
23
23
  };
24
+ export declare const makeCurrentAndFutureOrders: (orders: OrdersKds) => {
25
+ current: OrdersKds;
26
+ future: OrdersKds;
27
+ };
28
+ export declare const makeKdsStationCount: (orders: OrdersKds, itemTypeIds: number[]) => {
29
+ orders: number;
30
+ tickets: number;
31
+ };
32
+ export declare const makeKdsStationCounts: (orders: OrdersKds, prepStations: PrepStations) => KdsStationCounts;
24
33
  export declare const makeOrderBuckets: (orders: OrdersKds, tz: Timezone, prepStates?: Array<PrepStatus>) => OrderBuckets;
25
34
  export declare const makeOrderBucketsCounts: (itemTypes?: ItemTypes, orders?: OrdersKds) => Record<string, number>;
26
35
  export declare const makeTicketCounts: (tickets: OrderTickets) => Record<string, number>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeOrderTimes = exports.makeBucketColor = exports.displayCounts = exports.makeDisplayCounts = exports.makeTicketGroups = exports.makeModifiersMetadataLookup = exports.makeCartLookup = exports.makeItemTypesMap = exports.makeItemTypeSettings = exports.makeTicketCounts = exports.makeOrderBucketsCounts = exports.makeOrderBuckets = exports.makeKdsCounts = exports.makeOrdersForPrepStation = exports.filterOrdersByItemType = exports.makeOrdersOfType = exports.makeCompletedOrders = exports.makeFutureOrders = exports.makeCurrentOrders = exports.makeKdsOrders = exports.isCompleted = exports.notCompleted = exports.isDone = exports.notDone = exports.makeFetchOrdersArgs = exports.prepStatus = void 0;
3
+ exports.makeOrderTimes = exports.makeBucketColor = exports.displayCounts = exports.makeDisplayCounts = exports.makeTicketGroups = exports.makeModifiersMetadataLookup = exports.makeCartLookup = exports.makeItemTypesMap = exports.makeItemTypeSettings = exports.makeTicketCounts = exports.makeOrderBucketsCounts = exports.makeOrderBuckets = exports.makeKdsStationCounts = exports.makeKdsStationCount = exports.makeCurrentAndFutureOrders = exports.makeKdsCounts = exports.makeOrdersForPrepStation = exports.filterOrdersByItemType = exports.makeOrdersOfType = exports.makeCompletedOrders = exports.makeFutureOrders = exports.makeCurrentOrders = exports.makeKdsOrders = exports.isCompleted = exports.notCompleted = exports.isDone = exports.notDone = exports.makeFetchOrdersArgs = exports.prepStatus = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var datetimes_1 = require("./datetimes");
6
6
  exports.prepStatus = {
@@ -188,6 +188,41 @@ var makeKdsCounts = function (itemTypes, orders) {
188
188
  return { current: current, future: future, qa: qa };
189
189
  };
190
190
  exports.makeKdsCounts = makeKdsCounts;
191
+ var makeCurrentAndFutureOrders = function (orders) {
192
+ var current = [];
193
+ var future = [];
194
+ orders.forEach(function (i) {
195
+ var tz = datetimes_1.timezoneMap[i.timezone];
196
+ var fireDate = i.fire_at ? (0, datetimes_1.isoToDate)(i.fire_at, tz) : null;
197
+ if ((0, exports.isCompleted)(i.prep_status) || !fireDate)
198
+ return;
199
+ var currentDate = (0, datetimes_1.currentLocalDate)(tz);
200
+ if (fireDate < currentDate) {
201
+ current.push(i);
202
+ }
203
+ else if (fireDate > currentDate) {
204
+ future.push(i);
205
+ }
206
+ });
207
+ return { current: current, future: future };
208
+ };
209
+ exports.makeCurrentAndFutureOrders = makeCurrentAndFutureOrders;
210
+ var makeKdsStationCount = function (orders, itemTypeIds) {
211
+ var filtered = (0, exports.filterOrdersByItemType)(orders, itemTypeIds);
212
+ var tickets = filtered.reduce(function (arr, i) { return tslib_1.__spreadArray(tslib_1.__spreadArray([], arr, true), i.tickets, true); }, []);
213
+ return { orders: filtered.length, tickets: tickets.length };
214
+ };
215
+ exports.makeKdsStationCount = makeKdsStationCount;
216
+ var makeKdsStationCounts = function (orders, prepStations) {
217
+ var _a = (0, exports.makeCurrentAndFutureOrders)(orders), currentOrders = _a.current, futureOrders = _a.future;
218
+ return prepStations.reduce(function (obj, i) {
219
+ var _a;
220
+ var current = (0, exports.makeKdsStationCount)(currentOrders, i.item_type_ids);
221
+ var future = (0, exports.makeKdsStationCount)(futureOrders, i.item_type_ids);
222
+ return tslib_1.__assign(tslib_1.__assign({}, obj), (_a = {}, _a[i.prep_station_id] = { current: current, future: future }, _a));
223
+ }, {});
224
+ };
225
+ exports.makeKdsStationCounts = makeKdsStationCounts;
191
226
  var makeOrderBuckets = function (orders, tz, prepStates) {
192
227
  if (prepStates === void 0) { prepStates = []; }
193
228
  var intervals = (0, datetimes_1.makeIntervals)(tz);
@@ -1,5 +1,5 @@
1
1
  import { AppState } from '../app';
2
- import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsOrderType, KdsView, OrderCounts, OrderKds, OrdersAndCounts, OrdersKds, OrderUpdate, PrepStations, RequestError, RequestErrorAPI, RequestStatus, TicketStatus, TicketStatusUpdate } from '../types';
2
+ import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsOrderType, KdsStationCounts, KdsView, OrderCounts, OrderKds, OrdersAndStationCounts, OrdersKds, OrderUpdate, PrepStations, RequestError, RequestErrorAPI, RequestStatus, TicketStatus, TicketStatusUpdate } from '../types';
3
3
  import { ReducerType } from './types';
4
4
  export interface KdsState {
5
5
  itemTypes: ItemTypes | null;
@@ -20,6 +20,7 @@ export interface KdsState {
20
20
  error: RequestError;
21
21
  order: OrderKds | null;
22
22
  counts: OrderCounts;
23
+ stationCounts: KdsStationCounts | null;
23
24
  }
24
25
  export declare enum KdsActionType {
25
26
  FetchKdsOrders = "kds/fetchKdsOrders",
@@ -30,7 +31,7 @@ export declare enum KdsActionType {
30
31
  PrintTicket = "kds/printTicket",
31
32
  UpdateTicket = "kds/updateTicket"
32
33
  }
33
- export declare const fetchKdsOrders: import("@reduxjs/toolkit").AsyncThunk<OrdersAndCounts, FetchOrdersArgs, {
34
+ export declare const fetchKdsOrders: import("@reduxjs/toolkit").AsyncThunk<OrdersAndStationCounts, FetchOrdersArgs, {
34
35
  state: AppState;
35
36
  rejectValue: RequestError;
36
37
  }>;
@@ -72,6 +73,18 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
72
73
  payload: any;
73
74
  type: string;
74
75
  }) => void;
76
+ setKdsPrepStations: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
77
+ payload: any;
78
+ type: string;
79
+ }) => void;
80
+ setKdsPrepStationId: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
81
+ payload: any;
82
+ type: string;
83
+ }) => void;
84
+ setKdsOrderType: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
85
+ payload: any;
86
+ type: string;
87
+ }) => void;
75
88
  setKdsColumns: (state: import("immer/dist/internal").WritableDraft<KdsState>, action: {
76
89
  payload: any;
77
90
  type: string;
@@ -156,15 +169,7 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
156
169
  totals: import("../types").OrderTotals;
157
170
  }[];
158
171
  order: OrderKds | null;
159
- counts: {
160
- current: null;
161
- future: null;
162
- qa: null;
163
- } | {
164
- current: Record<string, number>;
165
- future: Record<string, number>;
166
- qa: Record<string, number>;
167
- };
172
+ stationCounts: KdsStationCounts;
168
173
  itemTypes: import("immer/dist/internal").WritableDraft<import("../types").ItemType>[] | null;
169
174
  prepStations: import("immer/dist/internal").WritableDraft<import("../types").PrepStation>[];
170
175
  prepStationId: number | null;
@@ -180,11 +185,15 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
180
185
  summary: boolean;
181
186
  loading: RequestStatus;
182
187
  error: import("immer/dist/internal").WritableDraft<RequestErrorAPI> | null | undefined;
188
+ counts: import("immer/dist/internal").WritableDraft<OrderCounts>;
183
189
  };
184
190
  }, ReducerType.Kds>;
185
- export declare const resetkds: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsItemTypes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsColumns: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBoxes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsCardWidth: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsFontSize: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsView: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBusinessDate: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsSearch: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, toggleKdsSummary: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, replaceKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
191
+ export declare const resetkds: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsItemTypes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPrepStations: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPrepStationId: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsOrderType: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsColumns: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBoxes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsCardWidth: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsFontSize: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsPage: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsView: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsBusinessDate: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setKdsSearch: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, toggleKdsSummary: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, replaceKdsOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
186
192
  export declare const selectKds: (state: AppState) => KdsState;
187
193
  export declare const selectKdsItemTypes: (state: AppState) => ItemTypes | null;
194
+ export declare const selectKdsPrepStations: (state: AppState) => PrepStations;
195
+ export declare const selectKdsPrepStationId: (state: AppState) => number | null;
196
+ export declare const selectKdsOrderType: (state: AppState) => KdsOrderType;
188
197
  export declare const selectKdsColumns: (state: AppState) => number;
189
198
  export declare const selectKdsBoxes: (state: AppState) => number;
190
199
  export declare const selectKdsCardWidth: (state: AppState) => number;
@@ -2,7 +2,7 @@ var _a;
2
2
  import { __assign, __awaiter, __generator } from "tslib";
3
3
  import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
4
4
  import { ReducerType } from './types';
5
- import { currentLocalDate, isoToDate, makeFetchOrdersArgs, makeKdsCounts, makeKdsOrders, makeOrdersForPrepStation, notDone, timezoneMap } from '../utils';
5
+ import { currentLocalDate, isoToDate, makeFetchOrdersArgs, makeKdsOrders, makeKdsStationCounts, makeOrdersForPrepStation, notDone, timezoneMap } from '../utils';
6
6
  import { addAlert } from './alerts';
7
7
  var prepStations = [
8
8
  {
@@ -60,7 +60,8 @@ var initialState = {
60
60
  loading: 'idle',
61
61
  error: null,
62
62
  order: null,
63
- counts: { current: null, future: null, qa: null }
63
+ counts: { current: null, future: null, qa: null },
64
+ stationCounts: null
64
65
  };
65
66
  export var KdsActionType;
66
67
  (function (KdsActionType) {
@@ -75,20 +76,24 @@ export var KdsActionType;
75
76
  export var fetchKdsOrders = createAsyncThunk(KdsActionType.FetchKdsOrders, function (params, _a) {
76
77
  var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
77
78
  return __awaiter(void 0, void 0, void 0, function () {
78
- var api, itemTypes, args, orders, ordersKds, counts, err_1;
79
+ var api, args, orders, ordersKds, prepStations_1, stationCounts, err_1;
79
80
  return __generator(this, function (_b) {
80
81
  switch (_b.label) {
81
82
  case 0:
82
83
  _b.trys.push([0, 2, , 3]);
83
84
  api = getState().config.api;
84
- itemTypes = getState().kds.itemTypes;
85
85
  args = makeFetchOrdersArgs(params);
86
86
  return [4 /*yield*/, api.getOrders(args)];
87
87
  case 1:
88
88
  orders = _b.sent();
89
89
  ordersKds = makeKdsOrders(orders);
90
- counts = makeKdsCounts(itemTypes, ordersKds);
91
- return [2 /*return*/, { orders: orders, counts: counts }];
90
+ prepStations_1 = getState().kds.prepStations;
91
+ stationCounts = prepStations_1
92
+ ? makeKdsStationCounts(ordersKds, prepStations_1)
93
+ : null;
94
+ // const itemTypes = getState().kds.itemTypes
95
+ // const counts = makeKdsCounts(itemTypes, ordersKds)
96
+ return [2 /*return*/, { orders: ordersKds, stationCounts: stationCounts }];
92
97
  case 2:
93
98
  err_1 = _b.sent();
94
99
  return [2 /*return*/, rejectWithValue(err_1)];
@@ -254,6 +259,15 @@ export var kdsSlice = createSlice({
254
259
  setKdsItemTypes: function (state, action) {
255
260
  state.itemTypes = action.payload;
256
261
  },
262
+ setKdsPrepStations: function (state, action) {
263
+ state.prepStations = action.payload;
264
+ },
265
+ setKdsPrepStationId: function (state, action) {
266
+ state.prepStationId = action.payload;
267
+ },
268
+ setKdsOrderType: function (state, action) {
269
+ state.orderType = action.payload;
270
+ },
257
271
  setKdsColumns: function (state, action) {
258
272
  state.columns = action.payload;
259
273
  },
@@ -295,17 +309,18 @@ export var kdsSlice = createSlice({
295
309
  var orders = updatedOrders
296
310
  .map(function (i) { return (__assign(__assign({}, i), { fireAt: isoToDate(i.fire_at, tz) })); })
297
311
  .sort(function (a, b) { return a.fireAt.getTime() - b.fireAt.getTime(); });
298
- var counts = makeKdsCounts(state.itemTypes, orders);
312
+ // const counts = makeKdsCounts(state.itemTypes, orders)
313
+ var stationCounts = makeKdsStationCounts(updatedOrders, state.prepStations);
299
314
  var order = state.order ? updated : null;
300
- return __assign(__assign({}, state), { orders: orders, order: order, counts: counts });
315
+ return __assign(__assign({}, state), { orders: orders, order: order, stationCounts: stationCounts });
301
316
  }
302
317
  },
303
318
  extraReducers: function (builder) {
304
319
  builder
305
320
  .addCase(fetchKdsOrders.fulfilled, function (state, action) {
306
- var _a = action.payload, orders = _a.orders, counts = _a.counts;
321
+ var _a = action.payload, orders = _a.orders, stationCounts = _a.stationCounts;
307
322
  state.orders = orders;
308
- state.counts = counts;
323
+ state.stationCounts = stationCounts;
309
324
  state.loading = 'idle';
310
325
  state.error = null;
311
326
  })
@@ -378,9 +393,14 @@ export var kdsSlice = createSlice({
378
393
  });
379
394
  }
380
395
  });
381
- export var resetkds = (_a = kdsSlice.actions, _a.resetkds), setKdsItemTypes = _a.setKdsItemTypes, setKdsColumns = _a.setKdsColumns, setKdsBoxes = _a.setKdsBoxes, setKdsCardWidth = _a.setKdsCardWidth, setKdsFontSize = _a.setKdsFontSize, setKdsPage = _a.setKdsPage, setKdsView = _a.setKdsView, setKdsBusinessDate = _a.setKdsBusinessDate, setKdsSearch = _a.setKdsSearch, toggleKdsSummary = _a.toggleKdsSummary, setKdsOrder = _a.setKdsOrder, replaceKdsOrder = _a.replaceKdsOrder;
396
+ export var resetkds = (_a = kdsSlice.actions, _a.resetkds), setKdsItemTypes = _a.setKdsItemTypes, setKdsPrepStations = _a.setKdsPrepStations, setKdsPrepStationId = _a.setKdsPrepStationId, setKdsOrderType = _a.setKdsOrderType, setKdsColumns = _a.setKdsColumns, setKdsBoxes = _a.setKdsBoxes, setKdsCardWidth = _a.setKdsCardWidth, setKdsFontSize = _a.setKdsFontSize, setKdsPage = _a.setKdsPage, setKdsView = _a.setKdsView, setKdsBusinessDate = _a.setKdsBusinessDate, setKdsSearch = _a.setKdsSearch, toggleKdsSummary = _a.toggleKdsSummary, setKdsOrder = _a.setKdsOrder, replaceKdsOrder = _a.replaceKdsOrder;
382
397
  export var selectKds = function (state) { return state.kds; };
383
398
  export var selectKdsItemTypes = function (state) { return state.kds.itemTypes; };
399
+ export var selectKdsPrepStations = function (state) { return state.kds.prepStations; };
400
+ export var selectKdsPrepStationId = function (state) {
401
+ return state.kds.prepStationId;
402
+ };
403
+ export var selectKdsOrderType = function (state) { return state.kds.orderType; };
384
404
  export var selectKdsColumns = function (state) { return state.kds.columns; };
385
405
  export var selectKdsBoxes = function (state) { return state.kds.boxes; };
386
406
  export var selectKdsCardWidth = function (state) { return state.kds.cardWidth; };
@@ -1,3 +1,4 @@
1
+ import { OrdersKds } from './order';
1
2
  export declare type PrepStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED' | 'FULFILLED';
2
3
  export declare type PrepStatusMap = {
3
4
  [Property in PrepStatus]: PrepStatus;
@@ -28,3 +29,16 @@ export interface KdsTerminal {
28
29
  cardWidth: number;
29
30
  fontSize: KdsFontSize;
30
31
  }
32
+ export interface KdsStationOrderTypeCount {
33
+ orders: number;
34
+ ticets: number;
35
+ }
36
+ export interface KdsStationCount {
37
+ current: KdsStationOrderTypeCount;
38
+ future: KdsStationOrderTypeCount;
39
+ }
40
+ export declare type KdsStationCounts = Record<string, KdsStationCount>;
41
+ export interface OrdersAndStationCounts {
42
+ orders: OrdersKds;
43
+ stationCounts: KdsStationCounts | null;
44
+ }
@@ -1,4 +1,4 @@
1
- import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, KdsOrderType, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStation, PrepStatus, PrepStatusMap, Store, TicketGroups, Timezone } from '../types';
1
+ import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, KdsOrderType, KdsStationCounts, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStation, PrepStations, PrepStatus, PrepStatusMap, Store, TicketGroups, Timezone } from '../types';
2
2
  export declare const prepStatus: PrepStatusMap;
3
3
  export declare const makeFetchOrdersArgs: ({ businessDate, receiptType, channelType, prepStatus, search, sortBy, sortDirection, parentOrderId }: FetchOrdersArgs) => FetchOrdersAPIArgs;
4
4
  export declare const notDone: (prep_status: PrepStatus) => boolean;
@@ -21,6 +21,15 @@ export declare const makeKdsCounts: (itemTypes: ItemTypes | null, orders: Orders
21
21
  future: Record<string, number>;
22
22
  qa: Record<string, number>;
23
23
  };
24
+ export declare const makeCurrentAndFutureOrders: (orders: OrdersKds) => {
25
+ current: OrdersKds;
26
+ future: OrdersKds;
27
+ };
28
+ export declare const makeKdsStationCount: (orders: OrdersKds, itemTypeIds: number[]) => {
29
+ orders: number;
30
+ tickets: number;
31
+ };
32
+ export declare const makeKdsStationCounts: (orders: OrdersKds, prepStations: PrepStations) => KdsStationCounts;
24
33
  export declare const makeOrderBuckets: (orders: OrdersKds, tz: Timezone, prepStates?: Array<PrepStatus>) => OrderBuckets;
25
34
  export declare const makeOrderBucketsCounts: (itemTypes?: ItemTypes, orders?: OrdersKds) => Record<string, number>;
26
35
  export declare const makeTicketCounts: (tickets: OrderTickets) => Record<string, number>;
@@ -172,6 +172,38 @@ export var makeKdsCounts = function (itemTypes, orders) {
172
172
  console.timeEnd('makeKdsCounts');
173
173
  return { current: current, future: future, qa: qa };
174
174
  };
175
+ export var makeCurrentAndFutureOrders = function (orders) {
176
+ var current = [];
177
+ var future = [];
178
+ orders.forEach(function (i) {
179
+ var tz = timezoneMap[i.timezone];
180
+ var fireDate = i.fire_at ? isoToDate(i.fire_at, tz) : null;
181
+ if (isCompleted(i.prep_status) || !fireDate)
182
+ return;
183
+ var currentDate = currentLocalDate(tz);
184
+ if (fireDate < currentDate) {
185
+ current.push(i);
186
+ }
187
+ else if (fireDate > currentDate) {
188
+ future.push(i);
189
+ }
190
+ });
191
+ return { current: current, future: future };
192
+ };
193
+ export var makeKdsStationCount = function (orders, itemTypeIds) {
194
+ var filtered = filterOrdersByItemType(orders, itemTypeIds);
195
+ var tickets = filtered.reduce(function (arr, i) { return __spreadArray(__spreadArray([], arr, true), i.tickets, true); }, []);
196
+ return { orders: filtered.length, tickets: tickets.length };
197
+ };
198
+ export var makeKdsStationCounts = function (orders, prepStations) {
199
+ var _a = makeCurrentAndFutureOrders(orders), currentOrders = _a.current, futureOrders = _a.future;
200
+ return prepStations.reduce(function (obj, i) {
201
+ var _a;
202
+ var current = makeKdsStationCount(currentOrders, i.item_type_ids);
203
+ var future = makeKdsStationCount(futureOrders, i.item_type_ids);
204
+ return __assign(__assign({}, obj), (_a = {}, _a[i.prep_station_id] = { current: current, future: future }, _a));
205
+ }, {});
206
+ };
175
207
  export var makeOrderBuckets = function (orders, tz, prepStates) {
176
208
  if (prepStates === void 0) { prepStates = []; }
177
209
  var intervals = makeIntervals(tz);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tender/store",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
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",