@open-tender/store 0.2.16 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,21 +1,229 @@
1
1
  var _a;
2
- import { createSlice } from '@reduxjs/toolkit';
2
+ import { __assign, __awaiter, __generator } from "tslib";
3
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
4
  import { ReducerType } from './types';
5
+ import { currentLocalDate, isoToDate, makeFetchOrdersArgs, makeKdsCounts, makeKdsOrders, notDone, timezoneMap } from '../utils';
6
+ import { addAlert } from './alerts';
4
7
  var initialState = {
5
- summary: true,
6
- page: null,
8
+ itemTypes: null,
9
+ columns: 4,
10
+ boxes: 8,
11
+ cardWidth: 300,
12
+ fontSize: 'medium',
7
13
  view: null,
8
- order: null,
14
+ page: null,
15
+ search: null,
9
16
  businessDate: null,
10
- alarm: true
17
+ summary: true,
18
+ orders: [],
19
+ loading: 'idle',
20
+ error: null,
21
+ order: null,
22
+ counts: { current: null, future: null, qa: null }
11
23
  };
24
+ export var KdsActionType;
25
+ (function (KdsActionType) {
26
+ KdsActionType["FetchKdsOrders"] = "kds/fetchKdsOrders";
27
+ KdsActionType["UpdateOrder"] = "kds/updateOrder";
28
+ KdsActionType["PrintTickets"] = "kds/printTickets";
29
+ KdsActionType["ResetTickets"] = "kds/resetTickets";
30
+ KdsActionType["PrintReceipt"] = "kds/printReceipt";
31
+ KdsActionType["PrintTicket"] = "kds/printTicket";
32
+ KdsActionType["UpdateTicket"] = "kds/updateTicket";
33
+ })(KdsActionType || (KdsActionType = {}));
34
+ export var fetchKdsOrders = createAsyncThunk(KdsActionType.FetchKdsOrders, function (params, _a) {
35
+ var getState = _a.getState, rejectWithValue = _a.rejectWithValue;
36
+ return __awaiter(void 0, void 0, void 0, function () {
37
+ var api, itemTypes, args, orders, ordersKds, counts, err_1;
38
+ return __generator(this, function (_b) {
39
+ switch (_b.label) {
40
+ case 0:
41
+ _b.trys.push([0, 2, , 3]);
42
+ api = getState().config.api;
43
+ itemTypes = getState().kds.itemTypes;
44
+ args = makeFetchOrdersArgs(params);
45
+ return [4 /*yield*/, api.getOrders(args)];
46
+ case 1:
47
+ orders = _b.sent();
48
+ ordersKds = makeKdsOrders(orders);
49
+ counts = makeKdsCounts(itemTypes, ordersKds);
50
+ return [2 /*return*/, { orders: orders, counts: counts }];
51
+ case 2:
52
+ err_1 = _b.sent();
53
+ return [2 /*return*/, rejectWithValue(err_1)];
54
+ case 3: return [2 /*return*/];
55
+ }
56
+ });
57
+ });
58
+ });
59
+ export var updateOrder = createAsyncThunk(KdsActionType.UpdateOrder, function (_a, _b) {
60
+ var orderId = _a.orderId, data = _a.data;
61
+ var getState = _b.getState, dispatch = _b.dispatch;
62
+ return __awaiter(void 0, void 0, void 0, function () {
63
+ var api, order, err_2, detail;
64
+ return __generator(this, function (_c) {
65
+ switch (_c.label) {
66
+ case 0:
67
+ _c.trys.push([0, 2, , 3]);
68
+ api = getState().config.api;
69
+ return [4 /*yield*/, api.patchOrder(orderId, data)];
70
+ case 1:
71
+ order = _c.sent();
72
+ dispatch(updateKdsOrder(order));
73
+ return [3 /*break*/, 3];
74
+ case 2:
75
+ err_2 = _c.sent();
76
+ detail = err_2.detail;
77
+ dispatch(addAlert(detail));
78
+ return [3 /*break*/, 3];
79
+ case 3: return [2 /*return*/];
80
+ }
81
+ });
82
+ });
83
+ });
84
+ export var printReceipt = createAsyncThunk(KdsActionType.PrintReceipt, function (orderId, _a) {
85
+ var getState = _a.getState, dispatch = _a.dispatch;
86
+ return __awaiter(void 0, void 0, void 0, function () {
87
+ var api, order, err_3, detail;
88
+ return __generator(this, function (_b) {
89
+ switch (_b.label) {
90
+ case 0:
91
+ _b.trys.push([0, 2, , 3]);
92
+ api = getState().config.api;
93
+ return [4 /*yield*/, api.postReceipt(orderId)];
94
+ case 1:
95
+ order = _b.sent();
96
+ dispatch(updateKdsOrder(order));
97
+ return [3 /*break*/, 3];
98
+ case 2:
99
+ err_3 = _b.sent();
100
+ detail = err_3.detail;
101
+ dispatch(addAlert(detail));
102
+ return [3 /*break*/, 3];
103
+ case 3: return [2 /*return*/];
104
+ }
105
+ });
106
+ });
107
+ });
108
+ export var printTickets = createAsyncThunk(KdsActionType.PrintTickets, function (_a, _b) {
109
+ var orderId = _a.orderId, data = _a.data;
110
+ var getState = _b.getState, dispatch = _b.dispatch;
111
+ return __awaiter(void 0, void 0, void 0, function () {
112
+ var api, order, err_4, detail;
113
+ return __generator(this, function (_c) {
114
+ switch (_c.label) {
115
+ case 0:
116
+ _c.trys.push([0, 2, , 3]);
117
+ api = getState().config.api;
118
+ return [4 /*yield*/, api.postTicketsPrint(orderId, data)];
119
+ case 1:
120
+ order = _c.sent();
121
+ dispatch(updateKdsOrder(order));
122
+ return [3 /*break*/, 3];
123
+ case 2:
124
+ err_4 = _c.sent();
125
+ detail = err_4.detail;
126
+ dispatch(addAlert(detail));
127
+ return [3 /*break*/, 3];
128
+ case 3: return [2 /*return*/];
129
+ }
130
+ });
131
+ });
132
+ });
133
+ export var resetTickets = createAsyncThunk(KdsActionType.ResetTickets, function (orderId, _a) {
134
+ var getState = _a.getState, dispatch = _a.dispatch;
135
+ return __awaiter(void 0, void 0, void 0, function () {
136
+ var api, order, err_5, detail;
137
+ return __generator(this, function (_b) {
138
+ switch (_b.label) {
139
+ case 0:
140
+ _b.trys.push([0, 2, , 3]);
141
+ api = getState().config.api;
142
+ return [4 /*yield*/, api.postTicketsReset(orderId)];
143
+ case 1:
144
+ order = _b.sent();
145
+ dispatch(updateKdsOrder(order));
146
+ return [3 /*break*/, 3];
147
+ case 2:
148
+ err_5 = _b.sent();
149
+ detail = err_5.detail;
150
+ dispatch(addAlert(detail));
151
+ return [3 /*break*/, 3];
152
+ case 3: return [2 /*return*/];
153
+ }
154
+ });
155
+ });
156
+ });
157
+ export var printTicket = createAsyncThunk(KdsActionType.PrintTicket, function (_a, _b) {
158
+ var orderId = _a.orderId, ticketNo = _a.ticketNo, status = _a.status;
159
+ var getState = _b.getState, dispatch = _b.dispatch;
160
+ return __awaiter(void 0, void 0, void 0, function () {
161
+ var api, data, order, err_6, detail;
162
+ return __generator(this, function (_c) {
163
+ switch (_c.label) {
164
+ case 0:
165
+ _c.trys.push([0, 2, , 3]);
166
+ api = getState().config.api;
167
+ data = status ? { ticket_status: status } : {};
168
+ return [4 /*yield*/, api.postTicketPrint(orderId, ticketNo, data)];
169
+ case 1:
170
+ order = _c.sent();
171
+ dispatch(updateKdsOrder(order));
172
+ return [3 /*break*/, 3];
173
+ case 2:
174
+ err_6 = _c.sent();
175
+ detail = err_6.detail;
176
+ dispatch(addAlert(detail));
177
+ return [3 /*break*/, 3];
178
+ case 3: return [2 /*return*/];
179
+ }
180
+ });
181
+ });
182
+ });
183
+ export var updateTicket = createAsyncThunk(KdsActionType.UpdateTicket, function (_a, _b) {
184
+ var orderId = _a.orderId, ticketNo = _a.ticketNo, status = _a.status;
185
+ var getState = _b.getState, dispatch = _b.dispatch;
186
+ return __awaiter(void 0, void 0, void 0, function () {
187
+ var api, order, err_7, detail;
188
+ return __generator(this, function (_c) {
189
+ switch (_c.label) {
190
+ case 0:
191
+ _c.trys.push([0, 2, , 3]);
192
+ api = getState().config.api;
193
+ return [4 /*yield*/, api.postTicketStatus(orderId, ticketNo, status)];
194
+ case 1:
195
+ order = _c.sent();
196
+ dispatch(updateKdsOrder(order));
197
+ return [3 /*break*/, 3];
198
+ case 2:
199
+ err_7 = _c.sent();
200
+ detail = err_7.detail;
201
+ dispatch(addAlert(detail));
202
+ return [3 /*break*/, 3];
203
+ case 3: return [2 /*return*/];
204
+ }
205
+ });
206
+ });
207
+ });
12
208
  export var kdsSlice = createSlice({
13
209
  name: ReducerType.Kds,
14
210
  initialState: initialState,
15
211
  reducers: {
16
212
  resetkds: function () { return initialState; },
17
- toggleKdsSummary: function (state) {
18
- state.summary = !state.summary;
213
+ setKdsItemTypes: function (state, action) {
214
+ state.itemTypes = action.payload;
215
+ },
216
+ setKdsColumns: function (state, action) {
217
+ state.columns = action.payload;
218
+ },
219
+ setKdsBoxes: function (state, action) {
220
+ state.boxes = action.payload;
221
+ },
222
+ setKdsCardWidth: function (state, action) {
223
+ state.cardWidth = action.payload;
224
+ },
225
+ setKdsFontSize: function (state, action) {
226
+ state.fontSize = action.payload;
19
227
  },
20
228
  setKdsPage: function (state, action) {
21
229
  state.page = action.payload;
@@ -23,22 +231,142 @@ export var kdsSlice = createSlice({
23
231
  setKdsView: function (state, action) {
24
232
  state.view = action.payload;
25
233
  },
26
- setKdsOrder: function (state, action) {
27
- state.order = action.payload;
28
- },
29
234
  setKdsBusinessDate: function (state, action) {
30
235
  state.businessDate = action.payload;
31
236
  },
32
- setKdsAlarm: function (state, action) {
33
- state.alarm = action.payload;
237
+ setKdsSearch: function (state, action) {
238
+ state.search = action.payload;
239
+ },
240
+ toggleKdsSummary: function (state) {
241
+ state.summary = !state.summary;
242
+ },
243
+ setKdsOrder: function (state, action) {
244
+ state.order = action.payload;
245
+ },
246
+ updateKdsOrder: function (state, action) {
247
+ var updated = action.payload;
248
+ var tz = timezoneMap[updated.timezone];
249
+ var updatedOrders = state.orders
250
+ .map(function (i) {
251
+ return i.order_uuid === updated.order_uuid ? updated : i;
252
+ })
253
+ .filter(function (i) { return i.fire_at; });
254
+ var orders = updatedOrders
255
+ .map(function (i) { return (__assign(__assign({}, i), { fireAt: isoToDate(i.fire_at, tz) })); })
256
+ .sort(function (a, b) { return a.fireAt.getTime() - b.fireAt.getTime(); });
257
+ var counts = makeKdsCounts(state.itemTypes, orders);
258
+ var order = state.order ? updated : null;
259
+ return __assign(__assign({}, state), { orders: orders, order: order, counts: counts });
34
260
  }
261
+ },
262
+ extraReducers: function (builder) {
263
+ builder
264
+ .addCase(fetchKdsOrders.fulfilled, function (state, action) {
265
+ var _a = action.payload, orders = _a.orders, counts = _a.counts;
266
+ state.orders = orders;
267
+ state.counts = counts;
268
+ state.loading = 'idle';
269
+ state.error = null;
270
+ })
271
+ .addCase(fetchKdsOrders.pending, function (state) {
272
+ state.loading = 'pending';
273
+ })
274
+ .addCase(fetchKdsOrders.rejected, function (state, action) {
275
+ state.error = action.payload;
276
+ state.loading = 'idle';
277
+ })
278
+ .addCase(updateOrder.fulfilled, function (state) {
279
+ state.loading = 'idle';
280
+ state.error = null;
281
+ })
282
+ .addCase(updateOrder.pending, function (state) {
283
+ state.loading = 'pending';
284
+ })
285
+ .addCase(updateOrder.rejected, function (state) {
286
+ state.loading = 'idle';
287
+ })
288
+ .addCase(printReceipt.fulfilled, function (state) {
289
+ state.loading = 'idle';
290
+ state.error = null;
291
+ })
292
+ .addCase(printReceipt.pending, function (state) {
293
+ state.loading = 'pending';
294
+ })
295
+ .addCase(printReceipt.rejected, function (state) {
296
+ state.loading = 'idle';
297
+ })
298
+ .addCase(printTickets.fulfilled, function (state) {
299
+ state.loading = 'idle';
300
+ state.error = null;
301
+ })
302
+ .addCase(printTickets.pending, function (state) {
303
+ state.loading = 'pending';
304
+ })
305
+ .addCase(printTickets.rejected, function (state) {
306
+ state.loading = 'idle';
307
+ })
308
+ .addCase(resetTickets.fulfilled, function (state) {
309
+ state.loading = 'idle';
310
+ state.error = null;
311
+ })
312
+ .addCase(resetTickets.pending, function (state) {
313
+ state.loading = 'pending';
314
+ })
315
+ .addCase(resetTickets.rejected, function (state) {
316
+ state.loading = 'idle';
317
+ })
318
+ .addCase(printTicket.fulfilled, function (state) {
319
+ state.loading = 'idle';
320
+ state.error = null;
321
+ })
322
+ .addCase(printTicket.pending, function (state) {
323
+ state.loading = 'pending';
324
+ })
325
+ .addCase(printTicket.rejected, function (state) {
326
+ state.loading = 'idle';
327
+ })
328
+ .addCase(updateTicket.fulfilled, function (state) {
329
+ state.loading = 'idle';
330
+ state.error = null;
331
+ })
332
+ .addCase(updateTicket.pending, function (state) {
333
+ state.loading = 'pending';
334
+ })
335
+ .addCase(updateTicket.rejected, function (state) {
336
+ state.loading = 'idle';
337
+ });
35
338
  }
36
339
  });
37
- export var resetkds = (_a = kdsSlice.actions, _a.resetkds), toggleKdsSummary = _a.toggleKdsSummary, setKdsPage = _a.setKdsPage, setKdsView = _a.setKdsView, setKdsOrder = _a.setKdsOrder, setKdsBusinessDate = _a.setKdsBusinessDate, setKdsAlarm = _a.setKdsAlarm;
340
+ export var resetkds = (_a = kdsSlice.actions, _a.resetkds), setKdsItemTypes = _a.setKdsItemTypes, setKdsPage = _a.setKdsPage, setKdsView = _a.setKdsView, setKdsBusinessDate = _a.setKdsBusinessDate, setKdsSearch = _a.setKdsSearch, toggleKdsSummary = _a.toggleKdsSummary, setKdsOrder = _a.setKdsOrder, updateKdsOrder = _a.updateKdsOrder;
341
+ export var selectKdsItemTypes = function (state) { return state.kds.itemTypes; };
38
342
  export var selectKdsSummary = function (state) { return state.kds.summary; };
39
343
  export var selectKdsPage = function (state) { return state.kds.page; };
40
344
  export var selectKdsView = function (state) { return state.kds.view; };
41
- export var selectKdsOrder = function (state) { return state.kds.order; };
42
345
  export var selectKdsBusinessDate = function (state) { return state.kds.businessDate; };
43
- export var selectKdsAlarm = function (state) { return state.kds.alarm; };
346
+ export var selectKdsOrders = function (state) { return state.kds.orders; };
347
+ export var selectKdsOrder = function (state) { return state.kds.order; };
348
+ export var selectKdsCurrentOrders = function (state) {
349
+ var _a = state.kds, orders = _a.orders, loading = _a.loading, error = _a.error;
350
+ var filtered = orders.filter(function (i) {
351
+ var tz = timezoneMap[i.timezone];
352
+ var fireDate = i.fire_at ? isoToDate(i.fire_at, tz) : null;
353
+ var currentDate = currentLocalDate(tz);
354
+ return notDone(i.prep_status) && fireDate && fireDate < currentDate;
355
+ });
356
+ return { orders: filtered, loading: loading, error: error };
357
+ };
358
+ export var selectKdsFutureOrders = function (state) {
359
+ var _a = state.kds, orders = _a.orders, loading = _a.loading, error = _a.error;
360
+ var filtered = orders.filter(function (i) {
361
+ var tz = timezoneMap[i.timezone];
362
+ var fireDate = i.fire_at ? isoToDate(i.fire_at, tz) : null;
363
+ var currentDate = currentLocalDate(tz);
364
+ return notDone(i.prep_status) && fireDate && fireDate > currentDate;
365
+ });
366
+ return { orders: filtered, loading: loading, error: error };
367
+ };
368
+ export var selectKdsOrdersCounts = function (state) {
369
+ var _a = state.kds.counts, current = _a.current, future = _a.future, qa = _a.qa;
370
+ return { current: current, future: future, qa: qa };
371
+ };
44
372
  export var kdsReducer = kdsSlice.reducer;
@@ -1,4 +1,4 @@
1
- import { FetchOrdersArgs, ItemTypes, Order, OrderCounts, Orders, OrdersAndCounts, OrderUpdate, RequestError, RequestStatus, TicketStatus, TicketStatusUpdate } from '../types';
1
+ import { FetchOrdersArgs, Orders, RequestError, RequestStatus } from '../types';
2
2
  import { AppState } from '../app';
3
3
  export interface OrdersState {
4
4
  entities: Orders;
@@ -6,73 +6,16 @@ export interface OrdersState {
6
6
  error: RequestError;
7
7
  current: any;
8
8
  refund: any;
9
- counts: OrderCounts;
10
- itemTypes: ItemTypes | null;
11
9
  }
12
10
  export declare enum OrdersActionType {
13
- FetchOrders = "orders/fetchOrders",
14
- RefreshOrders = "orders/refreshOrders",
15
- UpdateOrder = "orders/updateOrder",
16
- PrintTickets = "orders/printTickets",
17
- ResetTickets = "orders/resetTickets",
18
- PrintReceipt = "orders/printReceipt",
19
- PrintTicket = "orders/printTicket",
20
- UpdateTicket = "orders/updateTicket"
11
+ FetchOrders = "orders/fetchOrders"
21
12
  }
22
- export declare const fetchOrders: import("@reduxjs/toolkit").AsyncThunk<OrdersAndCounts, FetchOrdersArgs, {
13
+ export declare const fetchOrders: import("@reduxjs/toolkit").AsyncThunk<Orders, FetchOrdersArgs, {
23
14
  state: AppState;
24
15
  rejectValue: RequestError;
25
16
  }>;
26
- export declare const updateOrder: import("@reduxjs/toolkit").AsyncThunk<void, {
27
- orderId: string;
28
- data: OrderUpdate;
29
- }, {
30
- state: AppState;
31
- }>;
32
- export declare const printReceipt: import("@reduxjs/toolkit").AsyncThunk<void, string, {
33
- state: AppState;
34
- }>;
35
- export declare const printTickets: import("@reduxjs/toolkit").AsyncThunk<void, {
36
- orderId: string;
37
- data?: OrderUpdate | undefined;
38
- }, {
39
- state: AppState;
40
- }>;
41
- export declare const resetTickets: import("@reduxjs/toolkit").AsyncThunk<void, string, {
42
- state: AppState;
43
- }>;
44
- export declare const printTicket: import("@reduxjs/toolkit").AsyncThunk<void, {
45
- orderId: string;
46
- ticketNo: number;
47
- status?: TicketStatus | undefined;
48
- }, {
49
- state: AppState;
50
- }>;
51
- export declare const updateTicket: import("@reduxjs/toolkit").AsyncThunk<void, {
52
- orderId: string;
53
- ticketNo: number;
54
- status: TicketStatusUpdate;
55
- }, {
56
- state: AppState;
57
- }>;
58
- export declare const resetOrders: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setOrdersItemTypes: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setOrdersCurrent: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setOrdersRefund: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, updateOrdersOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
59
- export declare const selectItemTypes: (state: AppState) => ItemTypes | null;
17
+ export declare const resetOrders: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setOrdersCurrent: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setOrdersRefund: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
60
18
  export declare const selectOrders: (state: AppState) => OrdersState;
61
19
  export declare const selectOrdersCurrent: (state: AppState) => any;
62
20
  export declare const selectOrdersRefund: (state: AppState) => any;
63
- export declare const selectCurrentOrders: (state: AppState) => {
64
- orders: Order[];
65
- loading: RequestStatus;
66
- error: RequestError;
67
- };
68
- export declare const selectFutureOrders: (state: AppState) => {
69
- orders: Order[];
70
- loading: RequestStatus;
71
- error: RequestError;
72
- };
73
- export declare const selectOrdersCounts: (state: AppState) => {
74
- current: Record<string, number> | null;
75
- future: Record<string, number> | null;
76
- qa: Record<string, number> | null;
77
- };
78
21
  export declare const ordersReducer: import("redux").Reducer<OrdersState, import("redux").AnyAction>;