@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.
- package/dist/cjs/slices/kds.d.ts +8 -1
- package/dist/cjs/slices/kds.js +50 -1
- package/dist/cjs/types/api/config.d.ts +2 -1
- package/dist/cjs/types/api/index.d.ts +1 -0
- package/dist/cjs/types/api/index.js +1 -0
- package/dist/cjs/types/api/kds.d.ts +30 -0
- package/dist/cjs/types/api/kds.js +2 -0
- package/dist/cjs/types/api/order.d.ts +2 -1
- package/dist/cjs/types/global.d.ts +0 -7
- package/dist/cjs/utils/orders.d.ts +7 -1
- package/dist/cjs/utils/orders.js +64 -1
- package/dist/esm/slices/kds.d.ts +8 -1
- package/dist/esm/slices/kds.js +49 -1
- package/dist/esm/types/api/config.d.ts +2 -1
- package/dist/esm/types/api/index.d.ts +1 -0
- package/dist/esm/types/api/index.js +1 -0
- package/dist/esm/types/api/kds.d.ts +30 -0
- package/dist/esm/types/api/kds.js +1 -0
- package/dist/esm/types/api/order.d.ts +2 -1
- package/dist/esm/types/global.d.ts +0 -7
- package/dist/esm/utils/orders.d.ts +7 -1
- package/dist/esm/utils/orders.js +57 -0
- package/package.json +1 -1
package/dist/cjs/slices/kds.d.ts
CHANGED
|
@@ -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;
|
package/dist/cjs/slices/kds.js
CHANGED
|
@@ -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 };
|
|
@@ -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
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DateString, ISOStringOffset, TimezonePython } from '../datetimes';
|
|
2
|
-
import { CardType, ChannelType, Decimal, Money, NegativeMoney, OrderStatus, OrderType,
|
|
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;
|
package/dist/cjs/utils/orders.js
CHANGED
|
@@ -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) {
|
package/dist/esm/slices/kds.d.ts
CHANGED
|
@@ -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;
|
package/dist/esm/slices/kds.js
CHANGED
|
@@ -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 };
|
|
@@ -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,
|
|
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;
|
package/dist/esm/utils/orders.js
CHANGED
|
@@ -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.
|
|
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",
|