@open-tender/store 0.9.5 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.DS_Store +0 -0
- package/dist/cjs/app/hooks.d.ts +0 -1
- package/dist/cjs/app/store.d.ts +0 -4
- package/dist/cjs/app/store.js +0 -1
- package/dist/cjs/services/api.d.ts +4 -3
- package/dist/cjs/slices/arrivals.d.ts +1 -1
- package/dist/cjs/slices/arrivals.js +1 -0
- package/dist/cjs/slices/checkout.d.ts +3 -3
- package/dist/cjs/slices/checkout.js +2 -8
- package/dist/cjs/slices/config.d.ts +2 -1
- package/dist/cjs/slices/index.d.ts +0 -1
- package/dist/cjs/slices/index.js +0 -1
- package/dist/cjs/slices/kds.d.ts +34 -14
- package/dist/cjs/slices/kds.js +23 -7
- package/dist/cjs/slices/kiosk.d.ts +0 -1
- package/dist/cjs/slices/menuPages.d.ts +0 -1
- package/dist/cjs/slices/pos.d.ts +2 -1
- package/dist/cjs/slices/refund.d.ts +2 -1
- package/dist/cjs/slices/refund.js +4 -1
- package/dist/cjs/types/api/index.d.ts +0 -2
- package/dist/cjs/types/api/index.js +0 -2
- package/dist/cjs/types/api/order.d.ts +2 -91
- package/dist/cjs/utils/orders.d.ts +26 -24
- package/dist/cjs/utils/orders.js +110 -69
- package/dist/esm/app/hooks.d.ts +0 -1
- package/dist/esm/app/store.d.ts +0 -4
- package/dist/esm/app/store.js +1 -2
- package/dist/esm/services/api.d.ts +4 -3
- package/dist/esm/slices/arrivals.d.ts +1 -1
- package/dist/esm/slices/arrivals.js +1 -0
- package/dist/esm/slices/checkout.d.ts +3 -3
- package/dist/esm/slices/checkout.js +2 -8
- package/dist/esm/slices/config.d.ts +2 -1
- package/dist/esm/slices/index.d.ts +0 -1
- package/dist/esm/slices/index.js +0 -1
- package/dist/esm/slices/kds.d.ts +34 -14
- package/dist/esm/slices/kds.js +24 -8
- package/dist/esm/slices/kiosk.d.ts +0 -1
- package/dist/esm/slices/menuPages.d.ts +0 -1
- package/dist/esm/slices/pos.d.ts +2 -1
- package/dist/esm/slices/refund.d.ts +2 -1
- package/dist/esm/slices/refund.js +4 -1
- package/dist/esm/types/api/index.d.ts +0 -2
- package/dist/esm/types/api/index.js +0 -2
- package/dist/esm/types/api/order.d.ts +2 -91
- package/dist/esm/utils/orders.d.ts +26 -24
- package/dist/esm/utils/orders.js +103 -62
- package/package.json +6 -5
- package/dist/cjs/slices/completedOrders.d.ts +0 -34
- package/dist/cjs/slices/completedOrders.js +0 -104
- package/dist/cjs/types/api/config.d.ts +0 -22
- package/dist/cjs/types/api/config.js +0 -2
- package/dist/cjs/types/api/kds.d.ts +0 -24
- package/dist/cjs/types/api/kds.js +0 -2
- package/dist/esm/slices/completedOrders.d.ts +0 -34
- package/dist/esm/slices/completedOrders.js +0 -100
- package/dist/esm/types/api/config.d.ts +0 -22
- package/dist/esm/types/api/config.js +0 -1
- package/dist/esm/types/api/kds.d.ts +0 -24
- package/dist/esm/types/api/kds.js +0 -1
package/dist/esm/slices/kds.js
CHANGED
|
@@ -2,8 +2,9 @@ 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, filterOrdersToday,
|
|
5
|
+
import { currentLocalDate, filterOrdersToday, makeItemCounts, makeKdsOrder, makeKdsOrders, makeKdsStationCounts, makeOrdersForPrepStation, makeOrdersParams, notDone, timezoneMap } from '../utils';
|
|
6
6
|
import { addAlert } from './alerts';
|
|
7
|
+
import { isoToDate } from '@open-tender/utils';
|
|
7
8
|
var initialState = {
|
|
8
9
|
terminalId: null,
|
|
9
10
|
itemTypes: null,
|
|
@@ -51,7 +52,7 @@ export var fetchKdsOrders = createAsyncThunk(KdsActionType.FetchKdsOrders, funct
|
|
|
51
52
|
case 0:
|
|
52
53
|
_b.trys.push([0, 2, , 3]);
|
|
53
54
|
api = getState().config.api;
|
|
54
|
-
args =
|
|
55
|
+
args = makeOrdersParams(params);
|
|
55
56
|
return [4 /*yield*/, api.getOrders(args)];
|
|
56
57
|
case 1:
|
|
57
58
|
orders = _b.sent();
|
|
@@ -393,9 +394,14 @@ var kdsSlice = createSlice({
|
|
|
393
394
|
.map(function (i) {
|
|
394
395
|
return i.order_uuid === updated.order_uuid ? updated : i;
|
|
395
396
|
})
|
|
396
|
-
.filter(function (i) { return i.fire_at; });
|
|
397
|
+
.filter(function (i) { var _a; return (_a = i.order_prep) === null || _a === void 0 ? void 0 : _a.fire_at; });
|
|
397
398
|
var orders = updatedOrders
|
|
398
|
-
.map(function (i) {
|
|
399
|
+
.map(function (i) {
|
|
400
|
+
var _a;
|
|
401
|
+
return (__assign(__assign({}, i), { fireAt: ((_a = i.order_prep) === null || _a === void 0 ? void 0 : _a.fire_at)
|
|
402
|
+
? isoToDate(i.order_prep.fire_at, tz)
|
|
403
|
+
: new Date() }));
|
|
404
|
+
})
|
|
399
405
|
.sort(function (a, b) { return a.fireAt.getTime() - b.fireAt.getTime(); });
|
|
400
406
|
// const counts = makeKdsCounts(state.itemTypes, orders)
|
|
401
407
|
var stationCounts = makeKdsStationCounts(updatedOrders, state.prepStations || []);
|
|
@@ -555,10 +561,15 @@ export var selectKdsOrders = function (state) {
|
|
|
555
561
|
export var selectKdsCurrentOrders = function (state) {
|
|
556
562
|
var _a = state.kds, orders = _a.orders, loading = _a.loading, error = _a.error;
|
|
557
563
|
var filtered = orders.filter(function (i) {
|
|
564
|
+
if (!i.order_prep)
|
|
565
|
+
return false;
|
|
566
|
+
var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
567
|
+
if (!fire_at)
|
|
568
|
+
return false;
|
|
558
569
|
var tz = timezoneMap[i.timezone];
|
|
559
|
-
var fireDate =
|
|
570
|
+
var fireDate = isoToDate(fire_at, tz);
|
|
560
571
|
var currentDate = currentLocalDate(tz);
|
|
561
|
-
return notDone(
|
|
572
|
+
return notDone(prep_status) && fireDate < currentDate;
|
|
562
573
|
});
|
|
563
574
|
return { orders: filtered, loading: loading, error: error };
|
|
564
575
|
};
|
|
@@ -569,10 +580,15 @@ export var selectKdsCurrentCount = function (state) {
|
|
|
569
580
|
export var selectKdsFutureOrders = function (state) {
|
|
570
581
|
var _a = state.kds, orders = _a.orders, loading = _a.loading, error = _a.error;
|
|
571
582
|
var filtered = orders.filter(function (i) {
|
|
583
|
+
if (!i.order_prep)
|
|
584
|
+
return false;
|
|
585
|
+
var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
586
|
+
if (!fire_at)
|
|
587
|
+
return false;
|
|
572
588
|
var tz = timezoneMap[i.timezone];
|
|
573
|
-
var fireDate =
|
|
589
|
+
var fireDate = isoToDate(fire_at, tz);
|
|
574
590
|
var currentDate = currentLocalDate(tz);
|
|
575
|
-
return notDone(
|
|
591
|
+
return notDone(prep_status) && fireDate > currentDate;
|
|
576
592
|
});
|
|
577
593
|
return { orders: filtered, loading: loading, error: error };
|
|
578
594
|
};
|
|
@@ -47,7 +47,6 @@ export declare const selectKioskConfigScreen: (screen: string) => ((state: {
|
|
|
47
47
|
arrivals: import("./arrivals").ArrivalsState;
|
|
48
48
|
cartSummary: import("./cartSummary").CartSummaryState;
|
|
49
49
|
checkout: import("./checkout").CheckoutState;
|
|
50
|
-
completedOrders: import("./completedOrders").CompletedOrdersState;
|
|
51
50
|
config: import("./config").ConfigState;
|
|
52
51
|
discounts: import("./discounts").DiscountsState;
|
|
53
52
|
errorAlerts: import("./errorAlerts").ErrorAlertsState;
|
|
@@ -25,7 +25,6 @@ export declare const selectMenuPagesFiltered: ((state: {
|
|
|
25
25
|
arrivals: import("./arrivals").ArrivalsState;
|
|
26
26
|
cartSummary: import("./cartSummary").CartSummaryState;
|
|
27
27
|
checkout: import("./checkout").CheckoutState;
|
|
28
|
-
completedOrders: import("./completedOrders").CompletedOrdersState;
|
|
29
28
|
config: import("./config").ConfigState;
|
|
30
29
|
discounts: import("./discounts").DiscountsState;
|
|
31
30
|
errorAlerts: import("./errorAlerts").ErrorAlertsState;
|
package/dist/esm/slices/pos.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DeviceColorScheme, DeviceFontSize, Order, RequestError } from '@open-tender/types';
|
|
2
|
+
import { Cashier, Employee } from '../types';
|
|
2
3
|
import { AppState } from '../app';
|
|
3
4
|
export interface PosState {
|
|
4
5
|
terminalId: number | null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Order, Orders,
|
|
1
|
+
import { Order, Orders, RequestError, RequestStatus } from '@open-tender/types';
|
|
2
|
+
import { RefundArgs } from '../types';
|
|
2
3
|
import { AppState } from '../app';
|
|
3
4
|
export interface RefundState {
|
|
4
5
|
previous: Orders | null;
|
|
@@ -23,7 +23,10 @@ export var fetchPreviousRefunds = createAsyncThunk(RefundActionType.FetchPreviou
|
|
|
23
23
|
case 0:
|
|
24
24
|
_b.trys.push([0, 2, , 3]);
|
|
25
25
|
api = getState().config.api;
|
|
26
|
-
args = {
|
|
26
|
+
args = {
|
|
27
|
+
receipt_type: 'REFUND',
|
|
28
|
+
parent_receipt_uuid: orderId
|
|
29
|
+
};
|
|
27
30
|
return [4 /*yield*/, api.getOrders(args)];
|
|
28
31
|
case 1: return [2 /*return*/, _b.sent()];
|
|
29
32
|
case 2:
|
|
@@ -2,7 +2,6 @@ export * from './alerts';
|
|
|
2
2
|
export * from './arrivals';
|
|
3
3
|
export * from './cart';
|
|
4
4
|
export * from './checkout';
|
|
5
|
-
export * from './config';
|
|
6
5
|
export * from './customer';
|
|
7
6
|
export * from './device';
|
|
8
7
|
export * from './devices';
|
|
@@ -11,7 +10,6 @@ export * from './employee';
|
|
|
11
10
|
export * from './errorAlerts';
|
|
12
11
|
export * from './favorite';
|
|
13
12
|
export * from './giftCard';
|
|
14
|
-
export * from './kds';
|
|
15
13
|
export * from './kiosk';
|
|
16
14
|
export * from './menu';
|
|
17
15
|
export * from './menuPages';
|
|
@@ -2,7 +2,6 @@ export * from './alerts';
|
|
|
2
2
|
export * from './arrivals';
|
|
3
3
|
export * from './cart';
|
|
4
4
|
export * from './checkout';
|
|
5
|
-
export * from './config';
|
|
6
5
|
export * from './customer';
|
|
7
6
|
export * from './device';
|
|
8
7
|
export * from './devices';
|
|
@@ -11,7 +10,6 @@ export * from './employee';
|
|
|
11
10
|
export * from './errorAlerts';
|
|
12
11
|
export * from './favorite';
|
|
13
12
|
export * from './giftCard';
|
|
14
|
-
export * from './kds';
|
|
15
13
|
export * from './kiosk';
|
|
16
14
|
export * from './menu';
|
|
17
15
|
export * from './menuPages';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PrepStatus } from '@open-tender/types';
|
|
2
|
+
import { ISOStringOffset, TimezonePython } from '../datetimes';
|
|
2
3
|
import { CardType, ChannelType, Decimal, Money, NegativeMoney, OrderStatus, OrderType, ReceiptType, ServiceType, SurchargeType, Temperature, TenderStatus, TenderType } from '../global';
|
|
3
4
|
import { Address, Customer } from './customer';
|
|
4
|
-
import { PrepStatus, TicketStatus } from './kds';
|
|
5
5
|
export interface OrderChannel {
|
|
6
6
|
ext_id?: string | null;
|
|
7
7
|
ext_name?: string | null;
|
|
@@ -329,92 +329,3 @@ export interface Order {
|
|
|
329
329
|
totals: OrderTotals;
|
|
330
330
|
}
|
|
331
331
|
export type Orders = Array<Order>;
|
|
332
|
-
export interface OrderKds extends Omit<Order, 'fire_at' | 'tickets' | 'expected_at'> {
|
|
333
|
-
expected_at: ISOStringOffset;
|
|
334
|
-
fire_at: ISOStringOffset;
|
|
335
|
-
tickets: OrderTickets;
|
|
336
|
-
}
|
|
337
|
-
export type OrdersKds = Array<OrderKds>;
|
|
338
|
-
export interface FetchOrdersArgs {
|
|
339
|
-
businessDate?: DateString | null;
|
|
340
|
-
receiptType?: ReceiptType | 'BOTH';
|
|
341
|
-
channelType?: Array<ChannelType> | null;
|
|
342
|
-
prepStatus?: Array<PrepStatus> | null;
|
|
343
|
-
search?: string | null;
|
|
344
|
-
sortBy?: 'requested_at' | 'expected_at' | 'fire_at';
|
|
345
|
-
sortDirection?: 'ASC' | 'DESC';
|
|
346
|
-
parentOrderId?: string;
|
|
347
|
-
}
|
|
348
|
-
export interface FetchOrdersAPIArgs {
|
|
349
|
-
business_date?: DateString;
|
|
350
|
-
receipt_type?: ReceiptType | 'BOTH';
|
|
351
|
-
channel_type?: string;
|
|
352
|
-
prep_status?: string;
|
|
353
|
-
search?: string;
|
|
354
|
-
sort_by?: 'requested_at' | 'expected_at' | 'fire_at';
|
|
355
|
-
sort_direction?: 'ASC' | 'DESC';
|
|
356
|
-
parent_receipt_uuid?: string;
|
|
357
|
-
}
|
|
358
|
-
export interface OrderCounts {
|
|
359
|
-
current: Record<string, number> | null;
|
|
360
|
-
future: Record<string, number> | null;
|
|
361
|
-
qa: Record<string, number> | null;
|
|
362
|
-
}
|
|
363
|
-
export interface OrdersAndCounts {
|
|
364
|
-
orders: OrdersKds;
|
|
365
|
-
counts: OrderCounts;
|
|
366
|
-
}
|
|
367
|
-
export interface OrderUpdate {
|
|
368
|
-
expected_at?: string;
|
|
369
|
-
prep_status?: PrepStatus;
|
|
370
|
-
}
|
|
371
|
-
export interface OrderBucket {
|
|
372
|
-
orders: OrdersKds;
|
|
373
|
-
start: Date;
|
|
374
|
-
end: Date;
|
|
375
|
-
}
|
|
376
|
-
export type OrderBuckets = Array<OrderBucket>;
|
|
377
|
-
export interface OrderTimes {
|
|
378
|
-
delayed: number;
|
|
379
|
-
requested: Date;
|
|
380
|
-
requestedTime: string;
|
|
381
|
-
expected: Date;
|
|
382
|
-
expectedDate: string;
|
|
383
|
-
expectedTime: string;
|
|
384
|
-
readyBy: Date;
|
|
385
|
-
readyTime: string;
|
|
386
|
-
dateStr: string;
|
|
387
|
-
status: string;
|
|
388
|
-
}
|
|
389
|
-
export interface TicketUpdate {
|
|
390
|
-
ticket_status: TicketStatus;
|
|
391
|
-
}
|
|
392
|
-
export interface TicketsUpdate {
|
|
393
|
-
ticket_status?: TicketStatus;
|
|
394
|
-
ticket_nos?: number[];
|
|
395
|
-
}
|
|
396
|
-
export type TicketStatusUpdate = 'done' | 'completed' | 'reset';
|
|
397
|
-
export interface Ticket {
|
|
398
|
-
item_nos: number[];
|
|
399
|
-
item_type_id: number;
|
|
400
|
-
item_type_name: string;
|
|
401
|
-
ticket_no: number;
|
|
402
|
-
ticket_status: TicketStatus;
|
|
403
|
-
items: OrderCart;
|
|
404
|
-
is_default: boolean;
|
|
405
|
-
is_grouped: boolean;
|
|
406
|
-
is_hidden_assembly: boolean;
|
|
407
|
-
is_hidden_qa: boolean;
|
|
408
|
-
print_on_completed: boolean;
|
|
409
|
-
}
|
|
410
|
-
export type TicketGroup = Ticket[];
|
|
411
|
-
export type TicketGroups = TicketGroup[];
|
|
412
|
-
export interface OrderKdsStatus {
|
|
413
|
-
NOT_DONE: boolean;
|
|
414
|
-
DONE: boolean;
|
|
415
|
-
COMPLETED: boolean;
|
|
416
|
-
}
|
|
417
|
-
export interface OrderItemCount {
|
|
418
|
-
item: OrderItem;
|
|
419
|
-
count: number;
|
|
420
|
-
}
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Order, Orders } from '@open-tender/types';
|
|
2
|
+
import { HeaderColors, ItemType, ItemTypes, KdsOrderType, PrepStationPrepType, KdsStationCounts, KdsStationOrderTypeCount, ModifiersMetadata, OrderBuckets, OrderCart, OrderItem, OrderItemCount, OrderTickets, OrderPrepTimes, PrepStation, PrepStations, PrepStatus, PrepStatusMap, Store, TicketGroups, Timezone } from '@open-tender/types';
|
|
3
|
+
import { OrdersArgs, OrdersParams } from '../slices';
|
|
2
4
|
export declare const prepStatus: PrepStatusMap;
|
|
3
|
-
export declare const
|
|
5
|
+
export declare const makeOrdersParams: ({ businessDate, receiptType, channelType, prepStatus, search, sortBy, sortDirection, parentOrderId }: OrdersArgs) => OrdersParams;
|
|
4
6
|
export declare const notDone: (prep_status: PrepStatus) => boolean;
|
|
5
7
|
export declare const isDone: (prep_status: PrepStatus) => boolean;
|
|
6
8
|
export declare const notCompleted: (prep_status: PrepStatus) => boolean;
|
|
7
9
|
export declare const isCompleted: (prep_status: PrepStatus) => boolean;
|
|
8
|
-
export declare const isFutureOrder: (order:
|
|
9
|
-
export declare const makeKdsOrder: (order: Order) =>
|
|
10
|
-
export declare const makeKdsOrders: (orders: Orders) =>
|
|
11
|
-
export declare const makeCurrentOrders: (orders:
|
|
12
|
-
export declare const makeFutureOrders: (orders:
|
|
13
|
-
export declare const makeIncompleteOrders: (orders:
|
|
14
|
-
export declare const makeCompletedOrders: (orders:
|
|
15
|
-
export declare const makeOrdersOfType: (orders:
|
|
16
|
-
export declare const filterOrdersByItemType: (orders:
|
|
17
|
-
export declare const filterOrdersByPrepType: (orders:
|
|
18
|
-
export declare const filterOrdersToday: (orders:
|
|
19
|
-
export declare const makeOrdersForPrepStation: (orders:
|
|
10
|
+
export declare const isFutureOrder: (order: Order) => boolean | null;
|
|
11
|
+
export declare const makeKdsOrder: (order: Order) => Order;
|
|
12
|
+
export declare const makeKdsOrders: (orders: Orders) => Orders;
|
|
13
|
+
export declare const makeCurrentOrders: (orders: Orders) => Orders;
|
|
14
|
+
export declare const makeFutureOrders: (orders: Orders) => Orders;
|
|
15
|
+
export declare const makeIncompleteOrders: (orders: Orders) => Orders;
|
|
16
|
+
export declare const makeCompletedOrders: (orders: Orders) => Orders;
|
|
17
|
+
export declare const makeOrdersOfType: (orders: Orders, orderType: KdsOrderType) => Orders;
|
|
18
|
+
export declare const filterOrdersByItemType: (orders: Orders, itemTypeIds: number[] | null) => Orders;
|
|
19
|
+
export declare const filterOrdersByPrepType: (orders: Orders, prepType: PrepStationPrepType) => Orders;
|
|
20
|
+
export declare const filterOrdersToday: (orders: Orders) => Orders;
|
|
21
|
+
export declare const makeOrdersForPrepStation: (orders: Orders, prepStation: PrepStation, orderType: KdsOrderType) => Orders;
|
|
20
22
|
export declare const makeOrderItemSignature: (item: OrderItem, withNotes?: boolean) => string;
|
|
21
|
-
export declare const makeItemCounts: (orders:
|
|
22
|
-
export declare const makeKdsCounts: (itemTypes: ItemTypes | null, orders:
|
|
23
|
+
export declare const makeItemCounts: (orders: Orders, withMods?: boolean) => Record<string, OrderItemCount>;
|
|
24
|
+
export declare const makeKdsCounts: (itemTypes: ItemTypes | null, orders: Orders | null) => {
|
|
23
25
|
current: null;
|
|
24
26
|
future: null;
|
|
25
27
|
qa: null;
|
|
@@ -28,14 +30,14 @@ export declare const makeKdsCounts: (itemTypes: ItemTypes | null, orders: Orders
|
|
|
28
30
|
future: Record<string, number>;
|
|
29
31
|
qa: Record<string, number>;
|
|
30
32
|
};
|
|
31
|
-
export declare const makeCurrentAndFutureOrders: (orders:
|
|
32
|
-
current:
|
|
33
|
-
future:
|
|
33
|
+
export declare const makeCurrentAndFutureOrders: (orders: Orders) => {
|
|
34
|
+
current: Orders;
|
|
35
|
+
future: Orders;
|
|
34
36
|
};
|
|
35
|
-
export declare const makeKdsStationCount: (orders:
|
|
36
|
-
export declare const makeKdsStationCounts: (orders:
|
|
37
|
-
export declare const makeOrderBuckets: (orders:
|
|
38
|
-
export declare const makeOrderBucketsCounts: (itemTypes?: ItemTypes, orders?:
|
|
37
|
+
export declare const makeKdsStationCount: (orders: Orders, itemTypeIds: number[] | null, prepType: PrepStationPrepType) => KdsStationOrderTypeCount;
|
|
38
|
+
export declare const makeKdsStationCounts: (orders: Orders, prepStations: PrepStations) => KdsStationCounts;
|
|
39
|
+
export declare const makeOrderBuckets: (orders: Orders, tz: Timezone) => OrderBuckets;
|
|
40
|
+
export declare const makeOrderBucketsCounts: (itemTypes?: ItemTypes, orders?: Orders) => Record<string, number>;
|
|
39
41
|
export declare const makeTicketCounts: (tickets: OrderTickets) => Record<string, number>;
|
|
40
42
|
export declare const makeItemTypeSettings: (itemType: ItemType) => {
|
|
41
43
|
is_default: boolean;
|
|
@@ -51,5 +53,5 @@ export declare const makeTicketGroups: (tickets: OrderTickets, itemTypes: ItemTy
|
|
|
51
53
|
export declare const makeDisplayCounts: (counts: Record<string, number>) => number[] | "";
|
|
52
54
|
export declare const displayCounts: (counts: Record<string, number>) => string;
|
|
53
55
|
export declare const makeBucketColor: (settings: Store, minutes: number) => "" | "error" | "alert" | "text";
|
|
54
|
-
export declare const
|
|
56
|
+
export declare const makeOrderPrepTimes: (order: Order, amPm?: boolean, warningMinutes?: number, alertMinutes?: number) => OrderPrepTimes | null;
|
|
55
57
|
export declare const makeHeaderStatusColor: (status: string) => keyof HeaderColors;
|
package/dist/esm/utils/orders.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __assign, __spreadArray } from "tslib";
|
|
2
|
-
import { currentLocalDate, currentLocalDateStr, DATE, formatDate,
|
|
3
|
-
import {
|
|
2
|
+
import { currentLocalDate, currentLocalDateStr, DATE, formatDate, makeIntervals, minutesLeft, timezoneMap } from './datetimes';
|
|
3
|
+
import { isoToDate, isoToDateStr } from '@open-tender/utils';
|
|
4
4
|
export var prepStatus = {
|
|
5
5
|
TODO: 'TODO',
|
|
6
6
|
IN_PROGRESS: 'IN_PROGRESS',
|
|
@@ -8,7 +8,7 @@ export var prepStatus = {
|
|
|
8
8
|
COMPLETED: 'COMPLETED',
|
|
9
9
|
FULFILLED: 'FULFILLED'
|
|
10
10
|
};
|
|
11
|
-
export var
|
|
11
|
+
export var makeOrdersParams = function (_a) {
|
|
12
12
|
var businessDate = _a.businessDate, receiptType = _a.receiptType, channelType = _a.channelType, prepStatus = _a.prepStatus, search = _a.search, sortBy = _a.sortBy, sortDirection = _a.sortDirection, parentOrderId = _a.parentOrderId;
|
|
13
13
|
var args = {};
|
|
14
14
|
if (businessDate) {
|
|
@@ -62,50 +62,72 @@ export var isCompleted = function (prep_status) {
|
|
|
62
62
|
return completeStates.includes(prep_status);
|
|
63
63
|
};
|
|
64
64
|
export var isFutureOrder = function (order) {
|
|
65
|
-
var timezone = order.timezone,
|
|
65
|
+
var timezone = order.timezone, order_prep = order.order_prep;
|
|
66
|
+
if (!order_prep)
|
|
67
|
+
return false;
|
|
68
|
+
var fire_at = order_prep.fire_at, prep_status = order_prep.prep_status;
|
|
66
69
|
var tz = timezoneMap[timezone];
|
|
67
70
|
var fireDate = fire_at ? isoToDate(fire_at, tz) : null;
|
|
68
71
|
var currentDate = currentLocalDate(tz);
|
|
69
72
|
return notDone(prep_status) && fireDate && fireDate > currentDate;
|
|
70
73
|
};
|
|
71
74
|
export var makeKdsOrder = function (order) {
|
|
72
|
-
return
|
|
75
|
+
return order;
|
|
73
76
|
};
|
|
74
77
|
export var makeKdsOrders = function (orders) {
|
|
75
|
-
|
|
76
|
-
return filtered.map(function (i) { return (__assign(__assign({}, i), { order_type: normalizeOrderType(i.order_type) })); });
|
|
78
|
+
return orders.filter(function (i) { var _a; return ((_a = i.order_prep) === null || _a === void 0 ? void 0 : _a.expected_at) && i.order_prep.fire_at && i.tickets; });
|
|
77
79
|
};
|
|
78
80
|
export var makeCurrentOrders = function (orders) {
|
|
79
81
|
return orders.filter(function (i) {
|
|
80
82
|
var tz = timezoneMap[i.timezone];
|
|
81
|
-
|
|
83
|
+
if (!i.order_prep)
|
|
84
|
+
return false;
|
|
85
|
+
var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
86
|
+
if (!fire_at)
|
|
87
|
+
return false;
|
|
88
|
+
var fireDate = isoToDate(fire_at, tz);
|
|
82
89
|
var currentDate = currentLocalDate(tz);
|
|
83
|
-
return notCompleted(
|
|
90
|
+
return notCompleted(prep_status) && fireDate < currentDate;
|
|
84
91
|
});
|
|
85
92
|
};
|
|
86
93
|
export var makeFutureOrders = function (orders) {
|
|
87
94
|
return orders.filter(function (i) {
|
|
88
95
|
var tz = timezoneMap[i.timezone];
|
|
89
|
-
|
|
96
|
+
if (!i.order_prep)
|
|
97
|
+
return false;
|
|
98
|
+
var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
99
|
+
if (!fire_at)
|
|
100
|
+
return false;
|
|
101
|
+
var fireDate = isoToDate(fire_at, tz);
|
|
90
102
|
var currentDate = currentLocalDate(tz);
|
|
91
|
-
return
|
|
103
|
+
return notDone(prep_status) && fireDate > currentDate;
|
|
92
104
|
});
|
|
93
105
|
};
|
|
94
106
|
export var makeIncompleteOrders = function (orders) {
|
|
95
107
|
return orders.filter(function (i) {
|
|
96
108
|
var tz = timezoneMap[i.timezone];
|
|
97
|
-
|
|
98
|
-
|
|
109
|
+
if (!i.order_prep)
|
|
110
|
+
return false;
|
|
111
|
+
var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
112
|
+
if (!fire_at)
|
|
113
|
+
return false;
|
|
114
|
+
var fireDate = isoToDate(fire_at, tz);
|
|
115
|
+
return notCompleted(prep_status) && fireDate;
|
|
99
116
|
});
|
|
100
117
|
};
|
|
101
118
|
export var makeCompletedOrders = function (orders) {
|
|
102
119
|
return orders.filter(function (i) {
|
|
103
120
|
var tz = timezoneMap[i.timezone];
|
|
104
|
-
|
|
105
|
-
|
|
121
|
+
if (!i.order_prep)
|
|
122
|
+
return false;
|
|
123
|
+
var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
124
|
+
if (!fire_at)
|
|
125
|
+
return false;
|
|
126
|
+
var fireDate = isoToDate(fire_at, tz);
|
|
127
|
+
var fireDateStr = formatDate(fireDate, 'yyyy-MM-dd');
|
|
106
128
|
var currentDate = currentLocalDate(tz);
|
|
107
129
|
var currentDateStr = formatDate(currentDate, 'yyyy-MM-dd');
|
|
108
|
-
return
|
|
130
|
+
return isCompleted(prep_status) && fireDateStr === currentDateStr;
|
|
109
131
|
});
|
|
110
132
|
};
|
|
111
133
|
export var makeOrdersOfType = function (orders, orderType) {
|
|
@@ -125,21 +147,23 @@ export var filterOrdersByItemType = function (orders, itemTypeIds) {
|
|
|
125
147
|
return orders;
|
|
126
148
|
return orders
|
|
127
149
|
.reduce(function (arr, i) {
|
|
128
|
-
var
|
|
150
|
+
var _a;
|
|
151
|
+
var tickets = (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.filter(function (t) {
|
|
129
152
|
return itemTypeIds.includes(t.item_type_id);
|
|
130
153
|
});
|
|
131
154
|
return __spreadArray(__spreadArray([], arr, true), [__assign(__assign({}, i), { tickets: tickets })], false);
|
|
132
155
|
}, [])
|
|
133
|
-
.filter(function (i) { return i.tickets.length; });
|
|
156
|
+
.filter(function (i) { var _a; return (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.length; });
|
|
134
157
|
};
|
|
135
158
|
export var filterOrdersByPrepType = function (orders, prepType) {
|
|
136
159
|
var statusFunc = prepType === 'ASSEMBLY' ? notDone : notCompleted;
|
|
137
160
|
return orders
|
|
138
161
|
.reduce(function (arr, i) {
|
|
139
|
-
var
|
|
162
|
+
var _a;
|
|
163
|
+
var tickets = (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.filter(function (t) { return statusFunc(t.ticket_status); });
|
|
140
164
|
return __spreadArray(__spreadArray([], arr, true), [__assign(__assign({}, i), { tickets: tickets })], false);
|
|
141
165
|
}, [])
|
|
142
|
-
.filter(function (i) { return i.tickets.length; });
|
|
166
|
+
.filter(function (i) { var _a; return (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.length; });
|
|
143
167
|
};
|
|
144
168
|
export var filterOrdersToday = function (orders) {
|
|
145
169
|
if (!orders.length)
|
|
@@ -147,6 +171,8 @@ export var filterOrdersToday = function (orders) {
|
|
|
147
171
|
var tz = timezoneMap[orders[0].timezone];
|
|
148
172
|
var today = currentLocalDateStr(tz);
|
|
149
173
|
return orders.filter(function (i) {
|
|
174
|
+
if (i.requested_at === 'asap')
|
|
175
|
+
return true;
|
|
150
176
|
var requesteDateStr = isoToDateStr(i.requested_at, tz, DATE);
|
|
151
177
|
return today === requesteDateStr;
|
|
152
178
|
});
|
|
@@ -158,16 +184,20 @@ export var makeOrdersForPrepStation = function (orders, prepStation, orderType)
|
|
|
158
184
|
return filterOrdersByItemType(ordersOfType, item_type_ids);
|
|
159
185
|
}
|
|
160
186
|
var filteredOrders = prep_type === 'ASSEMBLY'
|
|
161
|
-
? ordersOfType.filter(function (i) {
|
|
187
|
+
? ordersOfType.filter(function (i) {
|
|
188
|
+
return i.order_prep ? notDone(i.order_prep.prep_status) : false;
|
|
189
|
+
})
|
|
162
190
|
: ordersOfType.filter(function (i) {
|
|
163
|
-
return
|
|
164
|
-
?
|
|
165
|
-
:
|
|
191
|
+
return !i.order_prep
|
|
192
|
+
? false
|
|
193
|
+
: expo_done_only
|
|
194
|
+
? i.order_prep.prep_status === 'DONE'
|
|
195
|
+
: notCompleted(i.order_prep.prep_status);
|
|
166
196
|
});
|
|
167
197
|
var filtered = filterOrdersByItemType(filteredOrders, item_type_ids);
|
|
168
198
|
return prep_type === 'EXPO'
|
|
169
199
|
? filtered
|
|
170
|
-
: filtered.filter(function (i) { return i.tickets.filter(function (t) { return notDone(t.ticket_status); }).length; });
|
|
200
|
+
: filtered.filter(function (i) { var _a; return (_a = i.tickets) === null || _a === void 0 ? void 0 : _a.filter(function (t) { return notDone(t.ticket_status); }).length; });
|
|
171
201
|
};
|
|
172
202
|
export var makeOrderItemSignature = function (item, withNotes) {
|
|
173
203
|
if (withNotes === void 0) { withNotes = false; }
|
|
@@ -225,14 +255,15 @@ export var makeKdsCounts = function (itemTypes, orders) {
|
|
|
225
255
|
var current = __assign({ Orders: 0 }, itemTypeCounts);
|
|
226
256
|
var qa = __assign({ Orders: 0 }, itemTypeCounts);
|
|
227
257
|
var future = __assign({ Orders: 0 }, itemTypeCounts);
|
|
228
|
-
var openOrders = orders.filter(function (i) { return notCompleted(i.prep_status); });
|
|
258
|
+
var openOrders = orders.filter(function (i) { return i.order_prep && notCompleted(i.order_prep.prep_status); });
|
|
229
259
|
openOrders.forEach(function (order) {
|
|
230
|
-
if (!order.
|
|
260
|
+
if (!order.order_prep || !order.tickets)
|
|
231
261
|
return;
|
|
262
|
+
var _a = order.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
232
263
|
var tz = timezoneMap[order.timezone];
|
|
233
|
-
var fireDate = isoToDate(
|
|
264
|
+
var fireDate = fire_at ? isoToDate(fire_at, tz) : null;
|
|
234
265
|
var currentDate = currentLocalDate(tz);
|
|
235
|
-
var isDone =
|
|
266
|
+
var isDone = prep_status === prepStatus.DONE;
|
|
236
267
|
var isCurrent = fireDate ? fireDate < currentDate : false;
|
|
237
268
|
var ticketCounts = order.tickets.reduce(function (obj, ticket) {
|
|
238
269
|
var _a;
|
|
@@ -257,8 +288,11 @@ export var makeCurrentAndFutureOrders = function (orders) {
|
|
|
257
288
|
var future = [];
|
|
258
289
|
orders.forEach(function (i) {
|
|
259
290
|
var tz = timezoneMap[i.timezone];
|
|
260
|
-
|
|
261
|
-
|
|
291
|
+
if (!i.order_prep)
|
|
292
|
+
return;
|
|
293
|
+
var _a = i.order_prep, fire_at = _a.fire_at, prep_status = _a.prep_status;
|
|
294
|
+
var fireDate = fire_at ? isoToDate(fire_at, tz) : null;
|
|
295
|
+
if (isCompleted(prep_status) || !fireDate)
|
|
262
296
|
return;
|
|
263
297
|
var currentDate = currentLocalDate(tz);
|
|
264
298
|
if (fireDate < currentDate) {
|
|
@@ -273,17 +307,29 @@ export var makeCurrentAndFutureOrders = function (orders) {
|
|
|
273
307
|
export var makeKdsStationCount = function (orders, itemTypeIds, prepType) {
|
|
274
308
|
var byItemType = filterOrdersByItemType(orders, itemTypeIds);
|
|
275
309
|
var filtered = filterOrdersByPrepType(byItemType, prepType);
|
|
276
|
-
var tickets = filtered.reduce(function (arr, i) { return __spreadArray(__spreadArray([], arr, true), i.tickets, true); }, []);
|
|
310
|
+
var tickets = filtered.reduce(function (arr, i) { return __spreadArray(__spreadArray([], arr, true), (i.tickets || []), true); }, []);
|
|
277
311
|
return { orders: filtered.length, tickets: tickets.length };
|
|
278
312
|
};
|
|
279
313
|
export var makeKdsStationCounts = function (orders, prepStations) {
|
|
280
314
|
var _a = makeCurrentAndFutureOrders(orders), currentOrders = _a.current, futureOrders = _a.future;
|
|
281
|
-
var currentAssembly = currentOrders.filter(function (i) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
var
|
|
285
|
-
|
|
286
|
-
|
|
315
|
+
var currentAssembly = currentOrders.filter(function (i) {
|
|
316
|
+
return i.order_prep ? notDone(i.order_prep.prep_status) : false;
|
|
317
|
+
});
|
|
318
|
+
var futureAssembly = futureOrders.filter(function (i) {
|
|
319
|
+
return i.order_prep ? notDone(i.order_prep.prep_status) : false;
|
|
320
|
+
});
|
|
321
|
+
var currentExpoDone = currentOrders.filter(function (i) {
|
|
322
|
+
return i.order_prep ? i.order_prep.prep_status === 'DONE' : false;
|
|
323
|
+
});
|
|
324
|
+
var currentExpo = currentOrders.filter(function (i) {
|
|
325
|
+
return i.order_prep ? notCompleted(i.order_prep.prep_status) : false;
|
|
326
|
+
});
|
|
327
|
+
var futureExpoDone = futureOrders.filter(function (i) {
|
|
328
|
+
return i.order_prep ? i.order_prep.prep_status === 'DONE' : false;
|
|
329
|
+
});
|
|
330
|
+
var futureExpo = futureOrders.filter(function (i) {
|
|
331
|
+
return i.order_prep ? notCompleted(i.order_prep.prep_status) : false;
|
|
332
|
+
});
|
|
287
333
|
return prepStations.reduce(function (obj, i) {
|
|
288
334
|
var _a;
|
|
289
335
|
var currentFiltered = i.prep_type === 'ASSEMBLY'
|
|
@@ -301,30 +347,16 @@ export var makeKdsStationCounts = function (orders, prepStations) {
|
|
|
301
347
|
return __assign(__assign({}, obj), (_a = {}, _a[i.prep_station_id] = { CURRENT: current, FUTURE: future }, _a));
|
|
302
348
|
}, {});
|
|
303
349
|
};
|
|
304
|
-
// export const makeOrderBuckets = (
|
|
305
|
-
// orders: OrdersKds,
|
|
306
|
-
// tz: Timezone,
|
|
307
|
-
// prepStates: Array<PrepStatus> = []
|
|
308
|
-
// ): OrderBuckets => {
|
|
309
|
-
// const intervals = makeIntervals(tz)
|
|
310
|
-
// const withOrders = intervals.map(i => {
|
|
311
|
-
// const inBucket = orders.filter(order => {
|
|
312
|
-
// if (!order.ready_at || !prepStates.length) return
|
|
313
|
-
// const incomplete = prepStates.includes(order.prep_status)
|
|
314
|
-
// const readyAt = isoToDate(order.ready_at, tz)
|
|
315
|
-
// return incomplete && i.start < readyAt && readyAt <= i.end
|
|
316
|
-
// })
|
|
317
|
-
// return { ...i, orders: inBucket }
|
|
318
|
-
// })
|
|
319
|
-
// return withOrders
|
|
320
|
-
// }
|
|
321
350
|
export var makeOrderBuckets = function (orders, tz) {
|
|
322
351
|
var intervals = makeIntervals(tz);
|
|
323
352
|
var withOrders = intervals.map(function (interval) {
|
|
324
353
|
var inBucket = orders.filter(function (order) {
|
|
325
|
-
if (!order.
|
|
354
|
+
if (!order.order_prep)
|
|
355
|
+
return false;
|
|
356
|
+
var ready_at = order.order_prep.ready_at;
|
|
357
|
+
if (!ready_at)
|
|
326
358
|
return false;
|
|
327
|
-
var readyAt = isoToDate(
|
|
359
|
+
var readyAt = isoToDate(ready_at, tz);
|
|
328
360
|
return readyAt > interval.start && readyAt <= interval.end;
|
|
329
361
|
});
|
|
330
362
|
return __assign(__assign({}, interval), { orders: inBucket });
|
|
@@ -342,12 +374,14 @@ export var makeOrderBucketsCounts = function (itemTypes, orders) {
|
|
|
342
374
|
}, {});
|
|
343
375
|
var counts = __assign({ Orders: 0 }, itemTypeCounts);
|
|
344
376
|
orders.forEach(function (order) {
|
|
345
|
-
var
|
|
377
|
+
var _a;
|
|
378
|
+
var ticketCounts = (_a = order.tickets) === null || _a === void 0 ? void 0 : _a.reduce(function (obj, ticket) {
|
|
346
379
|
var _a;
|
|
347
380
|
var count = obj[ticket.item_type_name] || 0;
|
|
348
381
|
return __assign(__assign({}, obj), (_a = {}, _a[ticket.item_type_name] = count + ticket.item_nos.length, _a));
|
|
349
382
|
}, {});
|
|
350
|
-
|
|
383
|
+
if (ticketCounts)
|
|
384
|
+
counts = updateCounts(counts, ticketCounts);
|
|
351
385
|
});
|
|
352
386
|
return counts;
|
|
353
387
|
};
|
|
@@ -377,7 +411,9 @@ export var makeItemTypesMap = function (itemTypes) {
|
|
|
377
411
|
export var makeCartLookup = function (cart) {
|
|
378
412
|
return cart.reduce(function (obj, i) {
|
|
379
413
|
var _a;
|
|
380
|
-
|
|
414
|
+
if (!i.item_no)
|
|
415
|
+
return obj;
|
|
416
|
+
return __assign(__assign({}, obj), (_a = {}, _a[i.item_no.toString()] = i, _a));
|
|
381
417
|
}, {});
|
|
382
418
|
};
|
|
383
419
|
export var makeModifiersMetadataLookup = function (cart) {
|
|
@@ -436,11 +472,16 @@ export var makeBucketColor = function (settings, minutes) {
|
|
|
436
472
|
? 'alert'
|
|
437
473
|
: 'text';
|
|
438
474
|
};
|
|
439
|
-
export var
|
|
475
|
+
export var makeOrderPrepTimes = function (order, amPm, warningMinutes, alertMinutes) {
|
|
440
476
|
if (amPm === void 0) { amPm = false; }
|
|
441
477
|
if (warningMinutes === void 0) { warningMinutes = 5; }
|
|
442
478
|
if (alertMinutes === void 0) { alertMinutes = 10; }
|
|
443
|
-
var
|
|
479
|
+
var order_prep = order.order_prep, timezone = order.timezone, requested_at = order.requested_at;
|
|
480
|
+
if (!order_prep)
|
|
481
|
+
return null;
|
|
482
|
+
var ready_at = order_prep.ready_at, expected_at = order_prep.expected_at, prep_status = order_prep.prep_status;
|
|
483
|
+
if (!ready_at || !expected_at || requested_at === 'asap')
|
|
484
|
+
return null;
|
|
444
485
|
var tz = timezoneMap[timezone];
|
|
445
486
|
var current = currentLocalDate(tz);
|
|
446
487
|
var readyBy = isoToDate(ready_at || expected_at, tz);
|