@open-tender/store 0.3.96 → 0.4.1
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/app/hooks.d.ts +0 -1
- package/dist/cjs/app/store.d.ts +0 -3
- package/dist/cjs/app/store.js +0 -1
- package/dist/cjs/hooks/index.d.ts +8 -1
- package/dist/cjs/hooks/index.js +15 -1
- package/dist/cjs/hooks/useBarcode.d.ts +7 -0
- package/dist/cjs/hooks/useBarcode.js +62 -0
- package/dist/cjs/hooks/useCardSwipe.d.ts +7 -0
- package/dist/cjs/hooks/useCardSwipe.js +78 -0
- package/dist/cjs/hooks/useEmployee.d.ts +8 -0
- package/dist/cjs/hooks/useEmployee.js +60 -0
- package/dist/cjs/hooks/useGiftCardBalance.d.ts +9 -0
- package/dist/cjs/hooks/useGiftCardBalance.js +52 -0
- package/dist/cjs/hooks/usePrevious.d.ts +2 -0
- package/dist/cjs/hooks/usePrevious.js +11 -0
- package/dist/cjs/hooks/usePunch.d.ts +12 -0
- package/dist/cjs/hooks/usePunch.js +123 -0
- package/dist/cjs/hooks/useRefund.d.ts +17 -0
- package/dist/cjs/hooks/useRefund.js +90 -0
- package/dist/cjs/slices/index.d.ts +0 -1
- package/dist/cjs/slices/index.js +0 -1
- package/dist/esm/app/hooks.d.ts +0 -1
- package/dist/esm/app/store.d.ts +0 -3
- package/dist/esm/app/store.js +1 -2
- package/dist/esm/hooks/index.d.ts +8 -1
- package/dist/esm/hooks/index.js +8 -1
- package/dist/esm/hooks/useBarcode.d.ts +7 -0
- package/dist/esm/hooks/useBarcode.js +60 -0
- package/dist/esm/hooks/useCardSwipe.d.ts +7 -0
- package/dist/esm/hooks/useCardSwipe.js +76 -0
- package/dist/esm/hooks/useEmployee.d.ts +8 -0
- package/dist/esm/hooks/useEmployee.js +58 -0
- package/dist/esm/hooks/useGiftCardBalance.d.ts +9 -0
- package/dist/esm/hooks/useGiftCardBalance.js +50 -0
- package/dist/esm/hooks/usePrevious.d.ts +2 -0
- package/dist/esm/hooks/usePrevious.js +9 -0
- package/dist/esm/hooks/usePunch.d.ts +12 -0
- package/dist/esm/hooks/usePunch.js +121 -0
- package/dist/esm/hooks/useRefund.d.ts +17 -0
- package/dist/esm/hooks/useRefund.js +88 -0
- package/dist/esm/slices/index.d.ts +0 -1
- package/dist/esm/slices/index.js +0 -1
- package/package.json +1 -1
- package/dist/cjs/slices/orders.d.ts +0 -21
- package/dist/cjs/slices/orders.js +0 -75
- package/dist/esm/slices/orders.d.ts +0 -21
- package/dist/esm/slices/orders.js +0 -69
package/dist/esm/app/store.d.ts
CHANGED
|
@@ -14,7 +14,6 @@ export declare const appReducer: import("redux").Reducer<import("redux").Combine
|
|
|
14
14
|
notifications: import("..").Notifications;
|
|
15
15
|
offlineAuths: import("../slices").OfflineAuthsState;
|
|
16
16
|
order: import("../slices").OrderState;
|
|
17
|
-
orders: import("../slices").OrdersState;
|
|
18
17
|
pos: import("../slices").PosState;
|
|
19
18
|
punches: import("../slices").PunchesState;
|
|
20
19
|
refund: import("../slices").RefundState;
|
|
@@ -39,7 +38,6 @@ declare const store: import("@reduxjs/toolkit").EnhancedStore<import("redux").Co
|
|
|
39
38
|
notifications: import("..").Notifications;
|
|
40
39
|
offlineAuths: import("../slices").OfflineAuthsState;
|
|
41
40
|
order: import("../slices").OrderState;
|
|
42
|
-
orders: import("../slices").OrdersState;
|
|
43
41
|
pos: import("../slices").PosState;
|
|
44
42
|
punches: import("../slices").PunchesState;
|
|
45
43
|
refund: import("../slices").RefundState;
|
|
@@ -62,7 +60,6 @@ declare const store: import("@reduxjs/toolkit").EnhancedStore<import("redux").Co
|
|
|
62
60
|
notifications: import("..").Notifications;
|
|
63
61
|
offlineAuths: import("../slices").OfflineAuthsState;
|
|
64
62
|
order: import("../slices").OrderState;
|
|
65
|
-
orders: import("../slices").OrdersState;
|
|
66
63
|
pos: import("../slices").PosState;
|
|
67
64
|
punches: import("../slices").PunchesState;
|
|
68
65
|
refund: import("../slices").RefundState;
|
package/dist/esm/app/store.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
|
2
|
-
import { alertsReducer, arrivalsReducer, checkoutReducer, completedOrdersReducer, configReducer, discountsReducer, errorAlertsReducer, kdsReducer, menuReducer, menuPagesReducer, modalReducer, notificationsReducer, offlineAuthsReducer, orderReducer,
|
|
2
|
+
import { alertsReducer, arrivalsReducer, checkoutReducer, completedOrdersReducer, configReducer, discountsReducer, errorAlertsReducer, kdsReducer, menuReducer, menuPagesReducer, modalReducer, notificationsReducer, offlineAuthsReducer, orderReducer, posReducer, punchesReducer, refundReducer, settingsReducer, sidebarReducer, surchargesReducer, taxesReducer } from '../slices';
|
|
3
3
|
export var appReducer = combineReducers({
|
|
4
4
|
alerts: alertsReducer,
|
|
5
5
|
arrivals: arrivalsReducer,
|
|
@@ -15,7 +15,6 @@ export var appReducer = combineReducers({
|
|
|
15
15
|
notifications: notificationsReducer,
|
|
16
16
|
offlineAuths: offlineAuthsReducer,
|
|
17
17
|
order: orderReducer,
|
|
18
|
-
orders: ordersReducer,
|
|
19
18
|
pos: posReducer,
|
|
20
19
|
punches: punchesReducer,
|
|
21
20
|
refund: refundReducer,
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
import useBarcode from './useBarcode';
|
|
1
2
|
import useBuilder from './useBuilder';
|
|
2
|
-
|
|
3
|
+
import useCardSwipe from './useCardSwipe';
|
|
4
|
+
import useEmployee from './useEmployee';
|
|
5
|
+
import useGiftCardBalance from './useGiftCardBalance';
|
|
6
|
+
import usePrevious from './usePrevious';
|
|
7
|
+
import usePunch from './usePunch';
|
|
8
|
+
import useRefund from './useRefund';
|
|
9
|
+
export { useBarcode, useBuilder, useCardSwipe, useEmployee, useGiftCardBalance, usePrevious, usePunch, useRefund };
|
package/dist/esm/hooks/index.js
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
import useBarcode from './useBarcode';
|
|
1
2
|
import useBuilder from './useBuilder';
|
|
2
|
-
|
|
3
|
+
import useCardSwipe from './useCardSwipe';
|
|
4
|
+
import useEmployee from './useEmployee';
|
|
5
|
+
import useGiftCardBalance from './useGiftCardBalance';
|
|
6
|
+
import usePrevious from './usePrevious';
|
|
7
|
+
import usePunch from './usePunch';
|
|
8
|
+
import useRefund from './useRefund';
|
|
9
|
+
export { useBarcode, useBuilder, useCardSwipe, useEmployee, useGiftCardBalance, usePrevious, usePunch, useRefund };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
+
import { handleRespError } from '../utils';
|
|
4
|
+
var useBarcode = function (api) {
|
|
5
|
+
var isAborted = useRef(false);
|
|
6
|
+
var _a = useState(null), code = _a[0], setCode = _a[1];
|
|
7
|
+
var _b = useState(null), error = _b[0], setError = _b[1];
|
|
8
|
+
useEffect(function () {
|
|
9
|
+
return function () {
|
|
10
|
+
isAborted.current = true;
|
|
11
|
+
};
|
|
12
|
+
}, []);
|
|
13
|
+
var read = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
14
|
+
var data, err_1, detail;
|
|
15
|
+
return __generator(this, function (_a) {
|
|
16
|
+
switch (_a.label) {
|
|
17
|
+
case 0:
|
|
18
|
+
_a.trys.push([0, 2, , 3]);
|
|
19
|
+
return [4 /*yield*/, api.getBarcodeRead()];
|
|
20
|
+
case 1:
|
|
21
|
+
data = (_a.sent()).data;
|
|
22
|
+
if (!isAborted.current) {
|
|
23
|
+
setCode(data);
|
|
24
|
+
}
|
|
25
|
+
return [3 /*break*/, 3];
|
|
26
|
+
case 2:
|
|
27
|
+
err_1 = _a.sent();
|
|
28
|
+
if (!isAborted.current) {
|
|
29
|
+
detail = handleRespError(err_1).detail;
|
|
30
|
+
setError(detail);
|
|
31
|
+
}
|
|
32
|
+
return [3 /*break*/, 3];
|
|
33
|
+
case 3: return [2 /*return*/];
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}); }, [api]);
|
|
37
|
+
var cancel = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
38
|
+
var err_2, detail;
|
|
39
|
+
return __generator(this, function (_a) {
|
|
40
|
+
switch (_a.label) {
|
|
41
|
+
case 0:
|
|
42
|
+
_a.trys.push([0, 2, , 3]);
|
|
43
|
+
return [4 /*yield*/, api.postBarcodeCancel()];
|
|
44
|
+
case 1:
|
|
45
|
+
_a.sent();
|
|
46
|
+
return [3 /*break*/, 3];
|
|
47
|
+
case 2:
|
|
48
|
+
err_2 = _a.sent();
|
|
49
|
+
if (!isAborted.current) {
|
|
50
|
+
detail = handleRespError(err_2).detail;
|
|
51
|
+
setError(detail);
|
|
52
|
+
}
|
|
53
|
+
return [3 /*break*/, 3];
|
|
54
|
+
case 3: return [2 /*return*/];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}); }, [api]);
|
|
58
|
+
return useMemo(function () { return ({ code: code, error: error, read: read, cancel: cancel }); }, [code, error, read, cancel]);
|
|
59
|
+
};
|
|
60
|
+
export default useBarcode;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { useState, useEffect, useCallback, useRef, useMemo } from 'react';
|
|
3
|
+
import { handleRespError } from '../utils';
|
|
4
|
+
var parseSwipeCard = function (data) {
|
|
5
|
+
try {
|
|
6
|
+
var parts = data.split('?');
|
|
7
|
+
var code = parts[0].slice(1);
|
|
8
|
+
return code.length > 36 ? null : code;
|
|
9
|
+
}
|
|
10
|
+
catch (err) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
var useCardSwipe = function (api, parse) {
|
|
15
|
+
if (parse === void 0) { parse = true; }
|
|
16
|
+
var isAborted = useRef(false);
|
|
17
|
+
var _a = useState(null), code = _a[0], setCode = _a[1];
|
|
18
|
+
var _b = useState(null), error = _b[0], setError = _b[1];
|
|
19
|
+
useEffect(function () {
|
|
20
|
+
return function () {
|
|
21
|
+
isAborted.current = true;
|
|
22
|
+
};
|
|
23
|
+
}, []);
|
|
24
|
+
var read = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
25
|
+
var data, err_1, detail;
|
|
26
|
+
return __generator(this, function (_a) {
|
|
27
|
+
switch (_a.label) {
|
|
28
|
+
case 0:
|
|
29
|
+
_a.trys.push([0, 2, , 3]);
|
|
30
|
+
return [4 /*yield*/, api.getCardRead()];
|
|
31
|
+
case 1:
|
|
32
|
+
data = (_a.sent()).data;
|
|
33
|
+
if (parse)
|
|
34
|
+
data = parseSwipeCard(data);
|
|
35
|
+
data ? setCode(data) : setError('Could not read card. Please try again.');
|
|
36
|
+
if (!isAborted.current) {
|
|
37
|
+
data
|
|
38
|
+
? setCode(data)
|
|
39
|
+
: setError('Could not read card. Please try again.');
|
|
40
|
+
}
|
|
41
|
+
return [3 /*break*/, 3];
|
|
42
|
+
case 2:
|
|
43
|
+
err_1 = _a.sent();
|
|
44
|
+
if (!isAborted.current) {
|
|
45
|
+
detail = handleRespError(err_1).detail;
|
|
46
|
+
setError(detail);
|
|
47
|
+
}
|
|
48
|
+
return [3 /*break*/, 3];
|
|
49
|
+
case 3: return [2 /*return*/];
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}); }, [api, parse]);
|
|
53
|
+
var cancel = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
54
|
+
var err_2, detail;
|
|
55
|
+
return __generator(this, function (_a) {
|
|
56
|
+
switch (_a.label) {
|
|
57
|
+
case 0:
|
|
58
|
+
_a.trys.push([0, 2, , 3]);
|
|
59
|
+
return [4 /*yield*/, api.postCardCancel()];
|
|
60
|
+
case 1:
|
|
61
|
+
_a.sent();
|
|
62
|
+
return [3 /*break*/, 3];
|
|
63
|
+
case 2:
|
|
64
|
+
err_2 = _a.sent();
|
|
65
|
+
if (!isAborted.current) {
|
|
66
|
+
detail = handleRespError(err_2).detail;
|
|
67
|
+
setError(detail);
|
|
68
|
+
}
|
|
69
|
+
return [3 /*break*/, 3];
|
|
70
|
+
case 3: return [2 /*return*/];
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}); }, [api]);
|
|
74
|
+
return useMemo(function () { return ({ code: code, error: error, read: read, cancel: cancel }); }, [code, error, read, cancel]);
|
|
75
|
+
};
|
|
76
|
+
export default useCardSwipe;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Employee } from '../types';
|
|
2
|
+
declare const useEmployee: (api: any) => {
|
|
3
|
+
employee: Employee | null;
|
|
4
|
+
error: string | null;
|
|
5
|
+
fetch: (identifier: string | number, withPunches?: boolean) => Promise<void>;
|
|
6
|
+
reset: () => void;
|
|
7
|
+
};
|
|
8
|
+
export default useEmployee;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { useState, useEffect, useRef, useCallback, useMemo } from 'react';
|
|
3
|
+
import { handleRespError } from '../utils';
|
|
4
|
+
var useEmployee = function (api) {
|
|
5
|
+
var isAborted = useRef(false);
|
|
6
|
+
var _a = useState(null), employee = _a[0], setEmployee = _a[1];
|
|
7
|
+
var _b = useState(null), error = _b[0], setError = _b[1];
|
|
8
|
+
useEffect(function () {
|
|
9
|
+
return function () {
|
|
10
|
+
isAborted.current = true;
|
|
11
|
+
};
|
|
12
|
+
}, []);
|
|
13
|
+
var fetch = useCallback(function (identifier, withPunches) {
|
|
14
|
+
if (withPunches === void 0) { withPunches = false; }
|
|
15
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
16
|
+
var employee_1, employee_id, response, err_1, detail;
|
|
17
|
+
return __generator(this, function (_a) {
|
|
18
|
+
switch (_a.label) {
|
|
19
|
+
case 0:
|
|
20
|
+
_a.trys.push([0, 4, , 5]);
|
|
21
|
+
return [4 /*yield*/, api.getEmployee(identifier)];
|
|
22
|
+
case 1:
|
|
23
|
+
employee_1 = _a.sent();
|
|
24
|
+
if (!withPunches) return [3 /*break*/, 3];
|
|
25
|
+
employee_id = employee_1.employee_id;
|
|
26
|
+
return [4 /*yield*/, api.getTimePunchesReport(null, employee_id)];
|
|
27
|
+
case 2:
|
|
28
|
+
response = _a.sent();
|
|
29
|
+
if (response.length)
|
|
30
|
+
employee_1 = response[0];
|
|
31
|
+
_a.label = 3;
|
|
32
|
+
case 3:
|
|
33
|
+
if (!isAborted.current) {
|
|
34
|
+
setEmployee(employee_1);
|
|
35
|
+
}
|
|
36
|
+
return [3 /*break*/, 5];
|
|
37
|
+
case 4:
|
|
38
|
+
err_1 = _a.sent();
|
|
39
|
+
if (!isAborted.current) {
|
|
40
|
+
detail = handleRespError(err_1).detail;
|
|
41
|
+
if (detail.includes('does not exist')) {
|
|
42
|
+
detail = 'Employee not found. Please try again.';
|
|
43
|
+
}
|
|
44
|
+
setError(detail);
|
|
45
|
+
}
|
|
46
|
+
return [3 /*break*/, 5];
|
|
47
|
+
case 5: return [2 /*return*/];
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}, [api]);
|
|
52
|
+
var reset = useCallback(function () {
|
|
53
|
+
setEmployee(null);
|
|
54
|
+
setError(null);
|
|
55
|
+
}, []);
|
|
56
|
+
return useMemo(function () { return ({ employee: employee, error: error, fetch: fetch, reset: reset }); }, [employee, error, fetch, reset]);
|
|
57
|
+
};
|
|
58
|
+
export default useEmployee;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { GiftCardBalance } from '../types';
|
|
2
|
+
declare const useGiftCardBalance: (api: any) => {
|
|
3
|
+
giftCard: GiftCardBalance | null;
|
|
4
|
+
loading: string;
|
|
5
|
+
error: string | null;
|
|
6
|
+
fetch: (code: string) => Promise<void>;
|
|
7
|
+
reset: () => void;
|
|
8
|
+
};
|
|
9
|
+
export default useGiftCardBalance;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { useState, useEffect, useRef, useCallback, useMemo } from 'react';
|
|
3
|
+
import { handleRespError } from '../utils';
|
|
4
|
+
var useGiftCardBalance = function (api) {
|
|
5
|
+
var isAborted = useRef(false);
|
|
6
|
+
var _a = useState(null), giftCard = _a[0], setGiftCard = _a[1];
|
|
7
|
+
var _b = useState('idle'), loading = _b[0], setLoading = _b[1];
|
|
8
|
+
var _c = useState(null), error = _c[0], setError = _c[1];
|
|
9
|
+
useEffect(function () {
|
|
10
|
+
return function () {
|
|
11
|
+
isAborted.current = true;
|
|
12
|
+
};
|
|
13
|
+
}, []);
|
|
14
|
+
var fetch = useCallback(function (code) { return __awaiter(void 0, void 0, void 0, function () {
|
|
15
|
+
var giftCard_1, err_1, detail;
|
|
16
|
+
return __generator(this, function (_a) {
|
|
17
|
+
switch (_a.label) {
|
|
18
|
+
case 0:
|
|
19
|
+
setLoading('pending');
|
|
20
|
+
_a.label = 1;
|
|
21
|
+
case 1:
|
|
22
|
+
_a.trys.push([1, 3, , 4]);
|
|
23
|
+
return [4 /*yield*/, api.getGiftCardBalance(code)];
|
|
24
|
+
case 2:
|
|
25
|
+
giftCard_1 = _a.sent();
|
|
26
|
+
if (!isAborted.current) {
|
|
27
|
+
setGiftCard(giftCard_1);
|
|
28
|
+
}
|
|
29
|
+
return [3 /*break*/, 4];
|
|
30
|
+
case 3:
|
|
31
|
+
err_1 = _a.sent();
|
|
32
|
+
if (!isAborted.current) {
|
|
33
|
+
detail = handleRespError(err_1).detail;
|
|
34
|
+
setError(detail);
|
|
35
|
+
}
|
|
36
|
+
return [3 /*break*/, 4];
|
|
37
|
+
case 4:
|
|
38
|
+
setLoading('idle');
|
|
39
|
+
return [2 /*return*/];
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}); }, [api]);
|
|
43
|
+
var reset = useCallback(function () {
|
|
44
|
+
setGiftCard(null);
|
|
45
|
+
setLoading('idle');
|
|
46
|
+
setError(null);
|
|
47
|
+
}, []);
|
|
48
|
+
return useMemo(function () { return ({ giftCard: giftCard, loading: loading, error: error, fetch: fetch, reset: reset }); }, [giftCard, loading, error, fetch, reset]);
|
|
49
|
+
};
|
|
50
|
+
export default useGiftCardBalance;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ModalState } from '../slices';
|
|
2
|
+
import { Employee, Punch } from '../types';
|
|
3
|
+
declare const usePunch: (api: any) => {
|
|
4
|
+
submit: (employee: Employee, blockPin: boolean) => void;
|
|
5
|
+
send: (data: Punch, employee: Employee) => Promise<void>;
|
|
6
|
+
print: (employeeId: number) => Promise<void>;
|
|
7
|
+
error: string | null;
|
|
8
|
+
msg: string | null;
|
|
9
|
+
modal: ModalState | null;
|
|
10
|
+
reset: () => void;
|
|
11
|
+
};
|
|
12
|
+
export default usePunch;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
import { useState, useEffect, useRef, useCallback, useMemo } from 'react';
|
|
3
|
+
import { handleRespError, makePunchMessage } from '../utils';
|
|
4
|
+
var codeErrMsg = 'Employee has been assigned a swipe card. Please use card to punch in / out.';
|
|
5
|
+
var deptErrMsg = "This employee doesn't have any departments. Please contact HR.";
|
|
6
|
+
var usePunch = function (api) {
|
|
7
|
+
var isAborted = useRef(false);
|
|
8
|
+
var _a = useState(null), error = _a[0], setError = _a[1];
|
|
9
|
+
var _b = useState(null), msg = _b[0], setMsg = _b[1];
|
|
10
|
+
var _c = useState(null), modal = _c[0], setModal = _c[1];
|
|
11
|
+
useEffect(function () {
|
|
12
|
+
return function () {
|
|
13
|
+
isAborted.current = true;
|
|
14
|
+
};
|
|
15
|
+
}, []);
|
|
16
|
+
var reset = useCallback(function () {
|
|
17
|
+
setError(null);
|
|
18
|
+
setModal(null);
|
|
19
|
+
setMsg(null);
|
|
20
|
+
}, []);
|
|
21
|
+
var print = useCallback(function (employeeId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
22
|
+
var err_1, detail;
|
|
23
|
+
return __generator(this, function (_a) {
|
|
24
|
+
switch (_a.label) {
|
|
25
|
+
case 0:
|
|
26
|
+
_a.trys.push([0, 2, , 3]);
|
|
27
|
+
return [4 /*yield*/, api.postPrintShiftSummary(employeeId)];
|
|
28
|
+
case 1:
|
|
29
|
+
_a.sent();
|
|
30
|
+
return [3 /*break*/, 3];
|
|
31
|
+
case 2:
|
|
32
|
+
err_1 = _a.sent();
|
|
33
|
+
if (!isAborted.current) {
|
|
34
|
+
detail = handleRespError(err_1).detail;
|
|
35
|
+
setError(detail);
|
|
36
|
+
}
|
|
37
|
+
return [3 /*break*/, 3];
|
|
38
|
+
case 3: return [2 /*return*/];
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}); }, [api]);
|
|
42
|
+
var send = useCallback(function (data, employee) { return __awaiter(void 0, void 0, void 0, function () {
|
|
43
|
+
var err_2, detail;
|
|
44
|
+
return __generator(this, function (_a) {
|
|
45
|
+
switch (_a.label) {
|
|
46
|
+
case 0:
|
|
47
|
+
_a.trys.push([0, 2, , 3]);
|
|
48
|
+
return [4 /*yield*/, api.postTimePunch(data)];
|
|
49
|
+
case 1:
|
|
50
|
+
_a.sent();
|
|
51
|
+
if (!isAborted.current) {
|
|
52
|
+
setMsg(makePunchMessage(employee, data.punch_type));
|
|
53
|
+
}
|
|
54
|
+
return [3 /*break*/, 3];
|
|
55
|
+
case 2:
|
|
56
|
+
err_2 = _a.sent();
|
|
57
|
+
if (!isAborted.current) {
|
|
58
|
+
detail = handleRespError(err_2).detail;
|
|
59
|
+
setError(detail);
|
|
60
|
+
}
|
|
61
|
+
return [3 /*break*/, 3];
|
|
62
|
+
case 3: return [2 /*return*/];
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}); }, [api]);
|
|
66
|
+
var submit = useCallback(function (employee, blockPin) {
|
|
67
|
+
if (employee && employee.code && blockPin) {
|
|
68
|
+
setError(codeErrMsg);
|
|
69
|
+
}
|
|
70
|
+
else if (!employee.punches) {
|
|
71
|
+
if (!employee.departments.length) {
|
|
72
|
+
setError(deptErrMsg);
|
|
73
|
+
}
|
|
74
|
+
else if (employee.departments.length > 1) {
|
|
75
|
+
setModal({ type: 'punchDept', args: { employee: employee } });
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
var employee_id = employee.employee_id, departments = employee.departments;
|
|
79
|
+
var data = {
|
|
80
|
+
employee_id: employee_id,
|
|
81
|
+
department_id: departments[0].id,
|
|
82
|
+
punch_type: 'PUNCH_IN',
|
|
83
|
+
tips: '0.00'
|
|
84
|
+
};
|
|
85
|
+
send(data, employee);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
var lastPunch = employee.punches[employee.punches.length - 1];
|
|
90
|
+
var employee_id = lastPunch.employee_id, department_id = lastPunch.department_id, punch_type = lastPunch.punch_type;
|
|
91
|
+
if (punch_type === 'BREAK_OUT') {
|
|
92
|
+
var data = {
|
|
93
|
+
employee_id: employee_id,
|
|
94
|
+
department_id: department_id,
|
|
95
|
+
punch_type: 'BREAK_IN',
|
|
96
|
+
tips: '0.00'
|
|
97
|
+
};
|
|
98
|
+
send(data, employee);
|
|
99
|
+
}
|
|
100
|
+
else if (punch_type === 'PUNCH_OUT') {
|
|
101
|
+
if (employee.departments.length > 1) {
|
|
102
|
+
setModal({ type: 'punchDept', args: { employee: employee } });
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
var data = {
|
|
106
|
+
employee_id: employee_id,
|
|
107
|
+
department_id: employee.departments[0].id,
|
|
108
|
+
punch_type: 'PUNCH_IN',
|
|
109
|
+
tips: '0.00'
|
|
110
|
+
};
|
|
111
|
+
send(data, employee);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
setModal({ type: 'punchType', args: { employee: employee } });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}, [send]);
|
|
119
|
+
return useMemo(function () { return ({ submit: submit, send: send, print: print, error: error, msg: msg, modal: modal, reset: reset }); }, [submit, send, print, error, msg, modal, reset]);
|
|
120
|
+
};
|
|
121
|
+
export default usePunch;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Money, OrderSurcharge, Refund, RefundItem } from '../types';
|
|
2
|
+
declare const useRefund: (initialState?: {}) => {
|
|
3
|
+
refund: Refund;
|
|
4
|
+
resetRefund: () => void;
|
|
5
|
+
incrementItem: (item: RefundItem) => void;
|
|
6
|
+
decrementItem: (item: RefundItem) => void;
|
|
7
|
+
removeSurcharge: (surcharge: OrderSurcharge) => void;
|
|
8
|
+
addBackSurcharge: (surcharge: OrderSurcharge) => void;
|
|
9
|
+
removeTip: (tip: Money) => void;
|
|
10
|
+
addBackTip: () => void;
|
|
11
|
+
removeShipping: (shipping: Money) => void;
|
|
12
|
+
addBackShipping: () => void;
|
|
13
|
+
removeTax: () => void;
|
|
14
|
+
addBackTax: () => void;
|
|
15
|
+
refundInFull: () => void;
|
|
16
|
+
};
|
|
17
|
+
export default useRefund;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { __assign, __spreadArray } from "tslib";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
var emptyState = {
|
|
4
|
+
full_refund: false,
|
|
5
|
+
all_taxes: false,
|
|
6
|
+
items: [],
|
|
7
|
+
surcharges: [],
|
|
8
|
+
tip: '0.00',
|
|
9
|
+
shipping: '0.00'
|
|
10
|
+
};
|
|
11
|
+
var useRefund = function (initialState) {
|
|
12
|
+
if (initialState === void 0) { initialState = {}; }
|
|
13
|
+
var _a = useState(__assign(__assign({}, emptyState), initialState)), refund = _a[0], setRefund = _a[1];
|
|
14
|
+
var resetRefund = function () {
|
|
15
|
+
setRefund(emptyState);
|
|
16
|
+
};
|
|
17
|
+
var refundInFull = function () {
|
|
18
|
+
setRefund(__assign(__assign({}, emptyState), { full_refund: true }));
|
|
19
|
+
};
|
|
20
|
+
var updateItems = function (refundItem) {
|
|
21
|
+
var otherItems = refund.items.filter(function (i) { return i.item_no !== refundItem.item_no; });
|
|
22
|
+
var items = refundItem.quantity ? __spreadArray(__spreadArray([], otherItems, true), [refundItem], false) : otherItems;
|
|
23
|
+
setRefund(__assign(__assign({}, refund), { items: items }));
|
|
24
|
+
};
|
|
25
|
+
var incrementItem = function (item) {
|
|
26
|
+
var quantity = item.quantity, item_no = item.item_no;
|
|
27
|
+
var currentItem = refund.items.find(function (i) { return i.item_no === item_no; });
|
|
28
|
+
var newQuantity = currentItem ? currentItem.quantity + 1 : 1;
|
|
29
|
+
var updatedQuantity = Math.min(newQuantity, quantity);
|
|
30
|
+
var refundItem = { item_no: item_no, quantity: updatedQuantity };
|
|
31
|
+
updateItems(refundItem);
|
|
32
|
+
};
|
|
33
|
+
var decrementItem = function (item) {
|
|
34
|
+
var item_no = item.item_no;
|
|
35
|
+
var currentItem = refund.items.find(function (i) { return i.item_no === item_no; });
|
|
36
|
+
var newQuantity = currentItem ? currentItem.quantity - 1 : 0;
|
|
37
|
+
var updatedQuantity = Math.max(newQuantity, 0);
|
|
38
|
+
var refundItem = { item_no: item_no, quantity: updatedQuantity };
|
|
39
|
+
updateItems(refundItem);
|
|
40
|
+
};
|
|
41
|
+
var removeSurcharge = function (surcharge) {
|
|
42
|
+
var current = refund.surcharges.find(function (i) { return i.surcharge_id === surcharge.id; });
|
|
43
|
+
if (current)
|
|
44
|
+
return;
|
|
45
|
+
var surcharges = __spreadArray(__spreadArray([], (refund.surcharges || []), true), [
|
|
46
|
+
{ surcharge_id: surcharge.id }
|
|
47
|
+
], false);
|
|
48
|
+
setRefund(__assign(__assign({}, refund), { surcharges: surcharges }));
|
|
49
|
+
};
|
|
50
|
+
var addBackSurcharge = function (surcharge) {
|
|
51
|
+
var surcharges = refund.surcharges.filter(function (i) { return i.surcharge_id !== surcharge.id; });
|
|
52
|
+
setRefund(__assign(__assign({}, refund), { surcharges: surcharges }));
|
|
53
|
+
};
|
|
54
|
+
var removeTip = function (tip) {
|
|
55
|
+
setRefund(__assign(__assign({}, refund), { tip: tip }));
|
|
56
|
+
};
|
|
57
|
+
var addBackTip = function () {
|
|
58
|
+
setRefund(__assign(__assign({}, refund), { tip: '0.00' }));
|
|
59
|
+
};
|
|
60
|
+
var removeShipping = function (shipping) {
|
|
61
|
+
setRefund(__assign(__assign({}, refund), { shipping: shipping }));
|
|
62
|
+
};
|
|
63
|
+
var addBackShipping = function () {
|
|
64
|
+
setRefund(__assign(__assign({}, refund), { shipping: '0.00' }));
|
|
65
|
+
};
|
|
66
|
+
var removeTax = function () {
|
|
67
|
+
setRefund(__assign(__assign({}, refund), { all_taxes: true }));
|
|
68
|
+
};
|
|
69
|
+
var addBackTax = function () {
|
|
70
|
+
setRefund(__assign(__assign({}, refund), { all_taxes: false }));
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
refund: refund,
|
|
74
|
+
resetRefund: resetRefund,
|
|
75
|
+
incrementItem: incrementItem,
|
|
76
|
+
decrementItem: decrementItem,
|
|
77
|
+
removeSurcharge: removeSurcharge,
|
|
78
|
+
addBackSurcharge: addBackSurcharge,
|
|
79
|
+
removeTip: removeTip,
|
|
80
|
+
addBackTip: addBackTip,
|
|
81
|
+
removeShipping: removeShipping,
|
|
82
|
+
addBackShipping: addBackShipping,
|
|
83
|
+
removeTax: removeTax,
|
|
84
|
+
addBackTax: addBackTax,
|
|
85
|
+
refundInFull: refundInFull
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
export default useRefund;
|
package/dist/esm/slices/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-tender/store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
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",
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { FetchOrdersArgs, Orders, RequestError, RequestStatus } from '../types';
|
|
2
|
-
import { AppState } from '../app';
|
|
3
|
-
export interface OrdersState {
|
|
4
|
-
entities: Orders;
|
|
5
|
-
loading: RequestStatus;
|
|
6
|
-
error: RequestError;
|
|
7
|
-
current: any;
|
|
8
|
-
refund: any;
|
|
9
|
-
}
|
|
10
|
-
export declare enum OrdersActionType {
|
|
11
|
-
FetchOrders = "orders/fetchOrders"
|
|
12
|
-
}
|
|
13
|
-
export declare const fetchOrders: import("@reduxjs/toolkit").AsyncThunk<Orders, FetchOrdersArgs, {
|
|
14
|
-
state: AppState;
|
|
15
|
-
rejectValue: RequestError;
|
|
16
|
-
}>;
|
|
17
|
-
export declare const resetOrders: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setOrdersCurrent: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, setOrdersRefund: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
|
|
18
|
-
export declare const selectOrders: (state: AppState) => OrdersState;
|
|
19
|
-
export declare const selectOrdersCurrent: (state: AppState) => any;
|
|
20
|
-
export declare const selectOrdersRefund: (state: AppState) => any;
|
|
21
|
-
export declare const ordersReducer: import("redux").Reducer<OrdersState, import("redux").AnyAction>;
|