@open-tender/store 0.3.5 → 0.3.6

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,8 +1,11 @@
1
1
  import { AppState } from '../app';
2
- import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsView, OrderCounts, OrderKds, OrdersAndCounts, OrdersKds, OrderUpdate, RequestError, RequestErrorAPI, RequestStatus, TicketStatus, TicketStatusUpdate } from '../types';
2
+ import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsOrderType, KdsView, OrderCounts, OrderKds, OrdersAndCounts, 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;
6
+ prepStations: PrepStations;
7
+ prepStationId: number | null;
8
+ orderType: KdsOrderType;
6
9
  columns: number;
7
10
  boxes: number;
8
11
  cardWidth: number;
@@ -163,6 +166,9 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
163
166
  qa: Record<string, number>;
164
167
  };
165
168
  itemTypes: import("immer/dist/internal").WritableDraft<import("../types").ItemType>[] | null;
169
+ prepStations: import("immer/dist/internal").WritableDraft<import("../types").PrepStation>[];
170
+ prepStationId: number | null;
171
+ orderType: KdsOrderType;
166
172
  columns: number;
167
173
  boxes: number;
168
174
  cardWidth: number;
@@ -206,6 +212,7 @@ export declare const selectKdsFutureOrders: (state: AppState) => {
206
212
  error: RequestError;
207
213
  };
208
214
  export declare const selectKdsFutureCount: (state: AppState) => number;
215
+ export declare const selectKdsPrepStationOrders: (state: AppState) => OrdersKds;
209
216
  export declare const selectKdsOrdersCounts: (state: AppState) => {
210
217
  current: Record<string, number> | null;
211
218
  future: Record<string, number> | null;
@@ -1,14 +1,55 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.kdsReducer = exports.selectKdsOrdersCounts = 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.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;
5
5
  var tslib_1 = require("tslib");
6
6
  var toolkit_1 = require("@reduxjs/toolkit");
7
7
  var types_1 = require("./types");
8
8
  var utils_1 = require("../utils");
9
9
  var alerts_1 = require("./alerts");
10
+ var prepStations = [
11
+ {
12
+ prep_station_id: 1,
13
+ name: 'Entrees',
14
+ item_type_ids: [4],
15
+ prep_type: 'ASSEMBLY',
16
+ assembly_options: 'PRINT_DONE',
17
+ show_print: false,
18
+ show_reset: false
19
+ },
20
+ {
21
+ prep_station_id: 2,
22
+ name: 'Sides',
23
+ item_type_ids: [5],
24
+ prep_type: 'ASSEMBLY',
25
+ assembly_options: 'MARK_DONE',
26
+ show_print: false,
27
+ show_reset: false
28
+ },
29
+ {
30
+ prep_station_id: 3,
31
+ name: 'Drinks',
32
+ item_type_ids: [6],
33
+ prep_type: 'ASSEMBLY',
34
+ assembly_options: 'PRINT_AND_DONE',
35
+ show_print: false,
36
+ show_reset: false
37
+ },
38
+ {
39
+ prep_station_id: 4,
40
+ name: 'Expo',
41
+ item_type_ids: [4, 5, 6],
42
+ prep_type: 'EXPO',
43
+ assembly_options: null,
44
+ show_print: false,
45
+ show_reset: false
46
+ }
47
+ ];
10
48
  var initialState = {
11
49
  itemTypes: null,
50
+ prepStations: prepStations,
51
+ prepStationId: null,
52
+ orderType: 'CURRENT',
12
53
  columns: 4,
13
54
  boxes: 8,
14
55
  cardWidth: 300,
@@ -402,6 +443,14 @@ var selectKdsFutureCount = function (state) {
402
443
  return orders.length;
403
444
  };
404
445
  exports.selectKdsFutureCount = selectKdsFutureCount;
446
+ var selectKdsPrepStationOrders = function (state) {
447
+ var _a = state.kds, prepStations = _a.prepStations, prepStationId = _a.prepStationId, orderType = _a.orderType, orders = _a.orders;
448
+ var prepStation = prepStations.find(function (i) { return i.prep_station_id === prepStationId; });
449
+ if (!prepStation)
450
+ return [];
451
+ return (0, utils_1.makeOrdersForPrepStation)(orders, prepStation, orderType);
452
+ };
453
+ exports.selectKdsPrepStationOrders = selectKdsPrepStationOrders;
405
454
  var selectKdsOrdersCounts = function (state) {
406
455
  var _a = state.kds.counts, current = _a.current, future = _a.future, qa = _a.qa;
407
456
  return { current: current, future: future, qa: qa };
@@ -1,4 +1,5 @@
1
- import { IpAddress, PrepStatus } from '../global';
1
+ import { IpAddress } from '../global';
2
+ import { PrepStatus } from './kds';
2
3
  export interface Config {
3
4
  backup_printer_ip_address: IpAddress | null;
4
5
  backup_printer_use_beeper: boolean;
@@ -10,6 +10,7 @@ export * from './employee';
10
10
  export * from './errorAlerts';
11
11
  export * from './favorite';
12
12
  export * from './giftCard';
13
+ export * from './kds';
13
14
  export * from './menu';
14
15
  export * from './menuPages';
15
16
  export * from './messages';
@@ -13,6 +13,7 @@ tslib_1.__exportStar(require("./employee"), exports);
13
13
  tslib_1.__exportStar(require("./errorAlerts"), exports);
14
14
  tslib_1.__exportStar(require("./favorite"), exports);
15
15
  tslib_1.__exportStar(require("./giftCard"), exports);
16
+ tslib_1.__exportStar(require("./kds"), exports);
16
17
  tslib_1.__exportStar(require("./menu"), exports);
17
18
  tslib_1.__exportStar(require("./menuPages"), exports);
18
19
  tslib_1.__exportStar(require("./messages"), exports);
@@ -0,0 +1,30 @@
1
+ export declare type PrepStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED' | 'FULFILLED';
2
+ export declare type PrepStatusMap = {
3
+ [Property in PrepStatus]: PrepStatus;
4
+ };
5
+ export declare type TicketStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED';
6
+ export declare type KdsView = 'column' | 'grid' | 'list' | 'tiles';
7
+ export declare type KdsFontSize = 'xsmall' | 'small' | 'medium' | 'large';
8
+ export declare type KdsPrepType = 'ASSEMBLY' | 'EXPO';
9
+ export declare type KdsOrderType = 'CURRENT' | 'FUTURE' | 'COMPLETED';
10
+ export declare type KdsAssemblyOptions = 'AUTO_PRINT' | 'PRINT_DONE' | 'MARK_DONE' | 'PRINT_AND_DONE' | null;
11
+ export interface PrepStation {
12
+ prep_station_id: number;
13
+ name: string;
14
+ item_type_ids: number[];
15
+ prep_type: KdsPrepType;
16
+ assembly_options: KdsAssemblyOptions;
17
+ show_print: boolean;
18
+ show_reset: boolean;
19
+ }
20
+ export declare type PrepStations = PrepStation[];
21
+ export interface KdsTerminal {
22
+ name: string;
23
+ ipAddress: string;
24
+ prepStations: PrepStations;
25
+ defaultView: KdsView;
26
+ columns: number;
27
+ boxes: number;
28
+ cardWidth: number;
29
+ fontSize: KdsFontSize;
30
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,7 @@
1
1
  import { DateString, ISOStringOffset, TimezonePython } from '../datetimes';
2
- import { CardType, ChannelType, Decimal, Money, NegativeMoney, OrderStatus, OrderType, PrepStatus, ReceiptType, ServiceType, SurchargeType, Temperature, TenderStatus, TenderType, TicketStatus } from '../global';
2
+ import { CardType, ChannelType, Decimal, Money, NegativeMoney, OrderStatus, OrderType, ReceiptType, ServiceType, SurchargeType, Temperature, TenderStatus, TenderType } from '../global';
3
3
  import { Address, Customer } from './customer';
4
+ import { PrepStatus, TicketStatus } from './kds';
4
5
  export interface OrderChannel {
5
6
  ext_id?: string | null;
6
7
  ext_name?: string | null;
@@ -25,16 +25,9 @@ export declare type TaxTypeInt = 1 | 2;
25
25
  export declare type Temperature = 'Hot' | 'Cold';
26
26
  export declare type ReceiptType = 'SALE' | 'REFUND';
27
27
  export declare type ChannelType = 'POS' | 'ONLINE' | 'APP' | 'PHONE' | 'KIOSK' | 'PORTAL';
28
- export declare type PrepStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED' | 'FULFILLED';
29
- export declare type PrepStatusMap = {
30
- [Property in PrepStatus]: PrepStatus;
31
- };
32
- export declare type TicketStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED';
33
28
  export declare type OrderStatus = 'OPEN' | 'HELD' | 'CLOSED' | 'VOID';
34
29
  export declare type TenderStatus = 'AUTHORIZED' | 'PAID' | 'REFUNDED' | 'VOID' | 'FAILED';
35
30
  export declare type EntityType = 'TIME_PUNCH' | 'CASH_EVENT' | 'ORDER' | 'DEPARTMENT' | 'DEVICES' | 'DISCOUNT' | 'EMPLOYEE' | 'HOUSE_ACCOUNT' | 'LOCATION' | 'MENU' | 'MENU_PAGE' | 'SELECT_OPTION' | 'SURCHARGE' | 'TAX' | 'STORE' | 'REVENUE_CENTER' | 'ITEM_TYPE' | 'QRCODE';
36
- export declare type KdsView = 'column' | 'grid' | 'list' | 'tiles';
37
- export declare type KdsFontSize = 'xsmall' | 'small' | 'medium' | 'large';
38
31
  export interface PicklistOption {
39
32
  name: string;
40
33
  value: string | number;
@@ -1,4 +1,4 @@
1
- import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStatus, PrepStatusMap, Store, TicketGroups, Timezone } from '../types';
1
+ import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, KdsOrderType, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStation, 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;
@@ -6,6 +6,12 @@ export declare const isDone: (prep_status: PrepStatus) => boolean;
6
6
  export declare const notCompleted: (prep_status: PrepStatus) => boolean;
7
7
  export declare const isCompleted: (prep_status: PrepStatus) => boolean;
8
8
  export declare const makeKdsOrders: (orders: Orders) => OrdersKds;
9
+ export declare const makeCurrentOrders: (orders: OrdersKds) => OrdersKds;
10
+ export declare const makeFutureOrders: (orders: OrdersKds) => OrdersKds;
11
+ export declare const makeCompletedOrders: (orders: OrdersKds) => OrdersKds;
12
+ export declare const makeOrdersOfType: (orders: OrdersKds, orderType: KdsOrderType) => OrdersKds;
13
+ export declare const filterOrdersByItemType: (orders: OrdersKds, itemTypeIds: number[]) => OrdersKds;
14
+ export declare const makeOrdersForPrepStation: (orders: OrdersKds, prepStation: PrepStation, orderType: KdsOrderType) => OrdersKds;
9
15
  export declare const makeKdsCounts: (itemTypes: ItemTypes | null, orders: OrdersKds | null) => {
10
16
  current: null;
11
17
  future: null;
@@ -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.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.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 = {
@@ -72,6 +72,69 @@ var makeKdsOrders = function (orders) {
72
72
  return orders.filter(function (i) { return i.expected_at && i.fire_at && i.tickets; });
73
73
  };
74
74
  exports.makeKdsOrders = makeKdsOrders;
75
+ var makeCurrentOrders = function (orders) {
76
+ return orders.filter(function (i) {
77
+ var tz = datetimes_1.timezoneMap[i.timezone];
78
+ var fireDate = i.fire_at ? (0, datetimes_1.isoToDate)(i.fire_at, tz) : null;
79
+ var currentDate = (0, datetimes_1.currentLocalDate)(tz);
80
+ return (0, exports.notCompleted)(i.prep_status) && fireDate && fireDate < currentDate;
81
+ });
82
+ };
83
+ exports.makeCurrentOrders = makeCurrentOrders;
84
+ var makeFutureOrders = function (orders) {
85
+ return orders.filter(function (i) {
86
+ var tz = datetimes_1.timezoneMap[i.timezone];
87
+ var fireDate = i.fire_at ? (0, datetimes_1.isoToDate)(i.fire_at, tz) : null;
88
+ var currentDate = (0, datetimes_1.currentLocalDate)(tz);
89
+ return (0, exports.notCompleted)(i.prep_status) && fireDate && fireDate > currentDate;
90
+ });
91
+ };
92
+ exports.makeFutureOrders = makeFutureOrders;
93
+ var makeCompletedOrders = function (orders) {
94
+ return orders.filter(function (i) {
95
+ var tz = datetimes_1.timezoneMap[i.timezone];
96
+ var fireDate = i.fire_at ? (0, datetimes_1.isoToDate)(i.fire_at, tz) : null;
97
+ var fireDateStr = fireDate ? (0, datetimes_1.formatDate)(fireDate, 'yyyy-MM-dd') : null;
98
+ var currentDate = (0, datetimes_1.currentLocalDate)(tz);
99
+ var currentDateStr = (0, datetimes_1.formatDate)(currentDate, 'yyyy-MM-dd');
100
+ return ((0, exports.isCompleted)(i.prep_status) && fireDate && fireDateStr === currentDateStr);
101
+ });
102
+ };
103
+ exports.makeCompletedOrders = makeCompletedOrders;
104
+ var makeOrdersOfType = function (orders, orderType) {
105
+ switch (orderType) {
106
+ case 'FUTURE':
107
+ return (0, exports.makeFutureOrders)(orders);
108
+ case 'COMPLETED':
109
+ return (0, exports.makeCompletedOrders)(orders);
110
+ default:
111
+ return (0, exports.makeCurrentOrders)(orders);
112
+ }
113
+ };
114
+ exports.makeOrdersOfType = makeOrdersOfType;
115
+ var filterOrdersByItemType = function (orders, itemTypeIds) {
116
+ return orders
117
+ .reduce(function (arr, i) {
118
+ var tickets = i.tickets.filter(function (t) {
119
+ return itemTypeIds.includes(t.item_type_id);
120
+ });
121
+ return tslib_1.__spreadArray(tslib_1.__spreadArray([], arr, true), [tslib_1.__assign(tslib_1.__assign({}, i), { tickets: tickets })], false);
122
+ }, [])
123
+ .filter(function (i) { return i.tickets.length; });
124
+ };
125
+ exports.filterOrdersByItemType = filterOrdersByItemType;
126
+ var makeOrdersForPrepStation = function (orders, prepStation, orderType) {
127
+ var item_type_ids = prepStation.item_type_ids, prep_type = prepStation.prep_type;
128
+ var ordersOfType = (0, exports.makeOrdersOfType)(orders, orderType);
129
+ if (orderType === 'COMPLETED') {
130
+ return (0, exports.filterOrdersByItemType)(ordersOfType, item_type_ids);
131
+ }
132
+ var filteredOrders = prep_type === 'ASSEMBLY'
133
+ ? ordersOfType.filter(function (i) { return (0, exports.notDone)(i.prep_status); })
134
+ : ordersOfType.filter(function (i) { return i.prep_status === 'DONE'; });
135
+ return (0, exports.filterOrdersByItemType)(filteredOrders, item_type_ids);
136
+ };
137
+ exports.makeOrdersForPrepStation = makeOrdersForPrepStation;
75
138
  var updateCounts = function (counts, ticketCounts) {
76
139
  // console.log('BEFORE', counts, ticketCounts)
77
140
  var updated = Object.entries(counts).reduce(function (obj, _a) {
@@ -1,8 +1,11 @@
1
1
  import { AppState } from '../app';
2
- import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsView, OrderCounts, OrderKds, OrdersAndCounts, OrdersKds, OrderUpdate, RequestError, RequestErrorAPI, RequestStatus, TicketStatus, TicketStatusUpdate } from '../types';
2
+ import { DateString, FetchOrdersArgs, ItemTypes, KdsFontSize, KdsOrderType, KdsView, OrderCounts, OrderKds, OrdersAndCounts, 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;
6
+ prepStations: PrepStations;
7
+ prepStationId: number | null;
8
+ orderType: KdsOrderType;
6
9
  columns: number;
7
10
  boxes: number;
8
11
  cardWidth: number;
@@ -163,6 +166,9 @@ export declare const kdsSlice: import("@reduxjs/toolkit").Slice<KdsState, {
163
166
  qa: Record<string, number>;
164
167
  };
165
168
  itemTypes: import("immer/dist/internal").WritableDraft<import("../types").ItemType>[] | null;
169
+ prepStations: import("immer/dist/internal").WritableDraft<import("../types").PrepStation>[];
170
+ prepStationId: number | null;
171
+ orderType: KdsOrderType;
166
172
  columns: number;
167
173
  boxes: number;
168
174
  cardWidth: number;
@@ -206,6 +212,7 @@ export declare const selectKdsFutureOrders: (state: AppState) => {
206
212
  error: RequestError;
207
213
  };
208
214
  export declare const selectKdsFutureCount: (state: AppState) => number;
215
+ export declare const selectKdsPrepStationOrders: (state: AppState) => OrdersKds;
209
216
  export declare const selectKdsOrdersCounts: (state: AppState) => {
210
217
  current: Record<string, number> | null;
211
218
  future: Record<string, number> | null;
@@ -2,10 +2,51 @@ 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, notDone, timezoneMap } from '../utils';
5
+ import { currentLocalDate, isoToDate, makeFetchOrdersArgs, makeKdsCounts, makeKdsOrders, makeOrdersForPrepStation, notDone, timezoneMap } from '../utils';
6
6
  import { addAlert } from './alerts';
7
+ var prepStations = [
8
+ {
9
+ prep_station_id: 1,
10
+ name: 'Entrees',
11
+ item_type_ids: [4],
12
+ prep_type: 'ASSEMBLY',
13
+ assembly_options: 'PRINT_DONE',
14
+ show_print: false,
15
+ show_reset: false
16
+ },
17
+ {
18
+ prep_station_id: 2,
19
+ name: 'Sides',
20
+ item_type_ids: [5],
21
+ prep_type: 'ASSEMBLY',
22
+ assembly_options: 'MARK_DONE',
23
+ show_print: false,
24
+ show_reset: false
25
+ },
26
+ {
27
+ prep_station_id: 3,
28
+ name: 'Drinks',
29
+ item_type_ids: [6],
30
+ prep_type: 'ASSEMBLY',
31
+ assembly_options: 'PRINT_AND_DONE',
32
+ show_print: false,
33
+ show_reset: false
34
+ },
35
+ {
36
+ prep_station_id: 4,
37
+ name: 'Expo',
38
+ item_type_ids: [4, 5, 6],
39
+ prep_type: 'EXPO',
40
+ assembly_options: null,
41
+ show_print: false,
42
+ show_reset: false
43
+ }
44
+ ];
7
45
  var initialState = {
8
46
  itemTypes: null,
47
+ prepStations: prepStations,
48
+ prepStationId: null,
49
+ orderType: 'CURRENT',
9
50
  columns: 4,
10
51
  boxes: 8,
11
52
  cardWidth: 300,
@@ -382,6 +423,13 @@ export var selectKdsFutureCount = function (state) {
382
423
  var orders = selectKdsFutureOrders(state).orders;
383
424
  return orders.length;
384
425
  };
426
+ export var selectKdsPrepStationOrders = function (state) {
427
+ var _a = state.kds, prepStations = _a.prepStations, prepStationId = _a.prepStationId, orderType = _a.orderType, orders = _a.orders;
428
+ var prepStation = prepStations.find(function (i) { return i.prep_station_id === prepStationId; });
429
+ if (!prepStation)
430
+ return [];
431
+ return makeOrdersForPrepStation(orders, prepStation, orderType);
432
+ };
385
433
  export var selectKdsOrdersCounts = function (state) {
386
434
  var _a = state.kds.counts, current = _a.current, future = _a.future, qa = _a.qa;
387
435
  return { current: current, future: future, qa: qa };
@@ -1,4 +1,5 @@
1
- import { IpAddress, PrepStatus } from '../global';
1
+ import { IpAddress } from '../global';
2
+ import { PrepStatus } from './kds';
2
3
  export interface Config {
3
4
  backup_printer_ip_address: IpAddress | null;
4
5
  backup_printer_use_beeper: boolean;
@@ -10,6 +10,7 @@ export * from './employee';
10
10
  export * from './errorAlerts';
11
11
  export * from './favorite';
12
12
  export * from './giftCard';
13
+ export * from './kds';
13
14
  export * from './menu';
14
15
  export * from './menuPages';
15
16
  export * from './messages';
@@ -10,6 +10,7 @@ export * from './employee';
10
10
  export * from './errorAlerts';
11
11
  export * from './favorite';
12
12
  export * from './giftCard';
13
+ export * from './kds';
13
14
  export * from './menu';
14
15
  export * from './menuPages';
15
16
  export * from './messages';
@@ -0,0 +1,30 @@
1
+ export declare type PrepStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED' | 'FULFILLED';
2
+ export declare type PrepStatusMap = {
3
+ [Property in PrepStatus]: PrepStatus;
4
+ };
5
+ export declare type TicketStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED';
6
+ export declare type KdsView = 'column' | 'grid' | 'list' | 'tiles';
7
+ export declare type KdsFontSize = 'xsmall' | 'small' | 'medium' | 'large';
8
+ export declare type KdsPrepType = 'ASSEMBLY' | 'EXPO';
9
+ export declare type KdsOrderType = 'CURRENT' | 'FUTURE' | 'COMPLETED';
10
+ export declare type KdsAssemblyOptions = 'AUTO_PRINT' | 'PRINT_DONE' | 'MARK_DONE' | 'PRINT_AND_DONE' | null;
11
+ export interface PrepStation {
12
+ prep_station_id: number;
13
+ name: string;
14
+ item_type_ids: number[];
15
+ prep_type: KdsPrepType;
16
+ assembly_options: KdsAssemblyOptions;
17
+ show_print: boolean;
18
+ show_reset: boolean;
19
+ }
20
+ export declare type PrepStations = PrepStation[];
21
+ export interface KdsTerminal {
22
+ name: string;
23
+ ipAddress: string;
24
+ prepStations: PrepStations;
25
+ defaultView: KdsView;
26
+ columns: number;
27
+ boxes: number;
28
+ cardWidth: number;
29
+ fontSize: KdsFontSize;
30
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,7 @@
1
1
  import { DateString, ISOStringOffset, TimezonePython } from '../datetimes';
2
- import { CardType, ChannelType, Decimal, Money, NegativeMoney, OrderStatus, OrderType, PrepStatus, ReceiptType, ServiceType, SurchargeType, Temperature, TenderStatus, TenderType, TicketStatus } from '../global';
2
+ import { CardType, ChannelType, Decimal, Money, NegativeMoney, OrderStatus, OrderType, ReceiptType, ServiceType, SurchargeType, Temperature, TenderStatus, TenderType } from '../global';
3
3
  import { Address, Customer } from './customer';
4
+ import { PrepStatus, TicketStatus } from './kds';
4
5
  export interface OrderChannel {
5
6
  ext_id?: string | null;
6
7
  ext_name?: string | null;
@@ -25,16 +25,9 @@ export declare type TaxTypeInt = 1 | 2;
25
25
  export declare type Temperature = 'Hot' | 'Cold';
26
26
  export declare type ReceiptType = 'SALE' | 'REFUND';
27
27
  export declare type ChannelType = 'POS' | 'ONLINE' | 'APP' | 'PHONE' | 'KIOSK' | 'PORTAL';
28
- export declare type PrepStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED' | 'FULFILLED';
29
- export declare type PrepStatusMap = {
30
- [Property in PrepStatus]: PrepStatus;
31
- };
32
- export declare type TicketStatus = 'TODO' | 'IN_PROGRESS' | 'DONE' | 'COMPLETED';
33
28
  export declare type OrderStatus = 'OPEN' | 'HELD' | 'CLOSED' | 'VOID';
34
29
  export declare type TenderStatus = 'AUTHORIZED' | 'PAID' | 'REFUNDED' | 'VOID' | 'FAILED';
35
30
  export declare type EntityType = 'TIME_PUNCH' | 'CASH_EVENT' | 'ORDER' | 'DEPARTMENT' | 'DEVICES' | 'DISCOUNT' | 'EMPLOYEE' | 'HOUSE_ACCOUNT' | 'LOCATION' | 'MENU' | 'MENU_PAGE' | 'SELECT_OPTION' | 'SURCHARGE' | 'TAX' | 'STORE' | 'REVENUE_CENTER' | 'ITEM_TYPE' | 'QRCODE';
36
- export declare type KdsView = 'column' | 'grid' | 'list' | 'tiles';
37
- export declare type KdsFontSize = 'xsmall' | 'small' | 'medium' | 'large';
38
31
  export interface PicklistOption {
39
32
  name: string;
40
33
  value: string | number;
@@ -1,4 +1,4 @@
1
- import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStatus, PrepStatusMap, Store, TicketGroups, Timezone } from '../types';
1
+ import { FetchOrdersAPIArgs, FetchOrdersArgs, ItemType, ItemTypes, KdsOrderType, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderKds, Orders, OrdersKds, OrderTickets, OrderTimes, PrepStation, 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;
@@ -6,6 +6,12 @@ export declare const isDone: (prep_status: PrepStatus) => boolean;
6
6
  export declare const notCompleted: (prep_status: PrepStatus) => boolean;
7
7
  export declare const isCompleted: (prep_status: PrepStatus) => boolean;
8
8
  export declare const makeKdsOrders: (orders: Orders) => OrdersKds;
9
+ export declare const makeCurrentOrders: (orders: OrdersKds) => OrdersKds;
10
+ export declare const makeFutureOrders: (orders: OrdersKds) => OrdersKds;
11
+ export declare const makeCompletedOrders: (orders: OrdersKds) => OrdersKds;
12
+ export declare const makeOrdersOfType: (orders: OrdersKds, orderType: KdsOrderType) => OrdersKds;
13
+ export declare const filterOrdersByItemType: (orders: OrdersKds, itemTypeIds: number[]) => OrdersKds;
14
+ export declare const makeOrdersForPrepStation: (orders: OrdersKds, prepStation: PrepStation, orderType: KdsOrderType) => OrdersKds;
9
15
  export declare const makeKdsCounts: (itemTypes: ItemTypes | null, orders: OrdersKds | null) => {
10
16
  current: null;
11
17
  future: null;
@@ -63,6 +63,63 @@ export var isCompleted = function (prep_status) {
63
63
  export var makeKdsOrders = function (orders) {
64
64
  return orders.filter(function (i) { return i.expected_at && i.fire_at && i.tickets; });
65
65
  };
66
+ export var makeCurrentOrders = function (orders) {
67
+ return orders.filter(function (i) {
68
+ var tz = timezoneMap[i.timezone];
69
+ var fireDate = i.fire_at ? isoToDate(i.fire_at, tz) : null;
70
+ var currentDate = currentLocalDate(tz);
71
+ return notCompleted(i.prep_status) && fireDate && fireDate < currentDate;
72
+ });
73
+ };
74
+ export var makeFutureOrders = function (orders) {
75
+ return orders.filter(function (i) {
76
+ var tz = timezoneMap[i.timezone];
77
+ var fireDate = i.fire_at ? isoToDate(i.fire_at, tz) : null;
78
+ var currentDate = currentLocalDate(tz);
79
+ return notCompleted(i.prep_status) && fireDate && fireDate > currentDate;
80
+ });
81
+ };
82
+ export var makeCompletedOrders = function (orders) {
83
+ return orders.filter(function (i) {
84
+ var tz = timezoneMap[i.timezone];
85
+ var fireDate = i.fire_at ? isoToDate(i.fire_at, tz) : null;
86
+ var fireDateStr = fireDate ? formatDate(fireDate, 'yyyy-MM-dd') : null;
87
+ var currentDate = currentLocalDate(tz);
88
+ var currentDateStr = formatDate(currentDate, 'yyyy-MM-dd');
89
+ return (isCompleted(i.prep_status) && fireDate && fireDateStr === currentDateStr);
90
+ });
91
+ };
92
+ export var makeOrdersOfType = function (orders, orderType) {
93
+ switch (orderType) {
94
+ case 'FUTURE':
95
+ return makeFutureOrders(orders);
96
+ case 'COMPLETED':
97
+ return makeCompletedOrders(orders);
98
+ default:
99
+ return makeCurrentOrders(orders);
100
+ }
101
+ };
102
+ export var filterOrdersByItemType = function (orders, itemTypeIds) {
103
+ return orders
104
+ .reduce(function (arr, i) {
105
+ var tickets = i.tickets.filter(function (t) {
106
+ return itemTypeIds.includes(t.item_type_id);
107
+ });
108
+ return __spreadArray(__spreadArray([], arr, true), [__assign(__assign({}, i), { tickets: tickets })], false);
109
+ }, [])
110
+ .filter(function (i) { return i.tickets.length; });
111
+ };
112
+ export var makeOrdersForPrepStation = function (orders, prepStation, orderType) {
113
+ var item_type_ids = prepStation.item_type_ids, prep_type = prepStation.prep_type;
114
+ var ordersOfType = makeOrdersOfType(orders, orderType);
115
+ if (orderType === 'COMPLETED') {
116
+ return filterOrdersByItemType(ordersOfType, item_type_ids);
117
+ }
118
+ var filteredOrders = prep_type === 'ASSEMBLY'
119
+ ? ordersOfType.filter(function (i) { return notDone(i.prep_status); })
120
+ : ordersOfType.filter(function (i) { return i.prep_status === 'DONE'; });
121
+ return filterOrdersByItemType(filteredOrders, item_type_ids);
122
+ };
66
123
  var updateCounts = function (counts, ticketCounts) {
67
124
  // console.log('BEFORE', counts, ticketCounts)
68
125
  var updated = Object.entries(counts).reduce(function (obj, _a) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-tender/store",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
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",