@zeniai/client-epic-state 5.3.10 → 5.3.12-beta0DI
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/lib/entity/task/taskPayload.d.ts +1 -0
- package/lib/entity/task/taskPayload.js +1 -0
- package/lib/entity/task/taskReducer.d.ts +4 -1
- package/lib/entity/task/taskReducer.js +19 -2
- package/lib/entity/task/taskState.d.ts +3 -0
- package/lib/entity/timeEntry/timeEntryPayload.d.ts +26 -0
- package/lib/entity/timeEntry/timeEntryPayload.js +2 -0
- package/lib/entity/timeEntry/timeEntryReducer.d.ts +8 -0
- package/lib/entity/timeEntry/timeEntryReducer.js +76 -0
- package/lib/entity/timeEntry/timeEntrySelector.d.ts +10 -0
- package/lib/entity/timeEntry/timeEntrySelector.js +32 -0
- package/lib/entity/timeEntry/timeEntryState.d.ts +43 -0
- package/lib/entity/timeEntry/timeEntryState.js +13 -0
- package/lib/epic.d.ts +4 -1
- package/lib/epic.js +9 -0
- package/lib/esm/entity/task/taskPayload.js +1 -0
- package/lib/esm/entity/task/taskReducer.js +18 -1
- package/lib/esm/entity/timeEntry/timeEntryPayload.js +1 -0
- package/lib/esm/entity/timeEntry/timeEntryReducer.js +70 -0
- package/lib/esm/entity/timeEntry/timeEntrySelector.js +23 -0
- package/lib/esm/entity/timeEntry/timeEntryState.js +8 -0
- package/lib/esm/epic.js +9 -0
- package/lib/esm/index.js +4 -1
- package/lib/esm/reducer.js +6 -0
- package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +3 -0
- package/lib/esm/view/taskManager/taskListView/taskList.js +6 -0
- package/lib/esm/view/taskManager/taskListView/taskListFilterHelpers.js +7 -0
- package/lib/esm/view/taskManager/taskListView/taskListSelector.js +27 -11
- package/lib/esm/view/taskManager/taskListView/taskListViewHelpers.js +37 -0
- package/lib/esm/view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic.js +24 -0
- package/lib/esm/view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic.js +73 -0
- package/lib/esm/view/taskManager/timeEntryView/epic/writeTimeEntryEpic.js +77 -0
- package/lib/esm/view/taskManager/timeEntryView/timeEntryViewPayload.js +1 -0
- package/lib/esm/view/taskManager/timeEntryView/timeEntryViewReducer.js +160 -0
- package/lib/esm/view/taskManager/timeEntryView/timeEntryViewSelector.js +41 -0
- package/lib/esm/view/taskManager/timeEntryView/timeEntryViewState.js +1 -0
- package/lib/index.d.ts +5 -1
- package/lib/index.js +31 -16
- package/lib/reducer.d.ts +2 -0
- package/lib/reducer.js +6 -0
- package/lib/rootStateTypes.d.ts +4 -0
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +4 -0
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +3 -0
- package/lib/view/taskManager/taskListView/taskList.d.ts +1 -1
- package/lib/view/taskManager/taskListView/taskList.js +6 -0
- package/lib/view/taskManager/taskListView/taskListFilterHelpers.d.ts +4 -0
- package/lib/view/taskManager/taskListView/taskListFilterHelpers.js +9 -1
- package/lib/view/taskManager/taskListView/taskListSelector.d.ts +6 -3
- package/lib/view/taskManager/taskListView/taskListSelector.js +26 -10
- package/lib/view/taskManager/taskListView/taskListViewHelpers.d.ts +1 -1
- package/lib/view/taskManager/taskListView/taskListViewHelpers.js +37 -0
- package/lib/view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic.d.ts +18 -0
- package/lib/view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic.js +28 -0
- package/lib/view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic.d.ts +23 -0
- package/lib/view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic.js +78 -0
- package/lib/view/taskManager/timeEntryView/epic/writeTimeEntryEpic.d.ts +23 -0
- package/lib/view/taskManager/timeEntryView/epic/writeTimeEntryEpic.js +83 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewPayload.d.ts +27 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewPayload.js +2 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewReducer.d.ts +48 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewReducer.js +164 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewSelector.d.ts +24 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewSelector.js +46 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewState.d.ts +21 -0
- package/lib/view/taskManager/timeEntryView/timeEntryViewState.js +5 -0
- package/package.json +1 -1
|
@@ -66,6 +66,7 @@ const mapTaskPayloadToTask = (payload, previousTask) => ({
|
|
|
66
66
|
: undefined,
|
|
67
67
|
snoozedUntil: payload.snoozed_until != null ? (0, zeniDayJS_1.date)(payload.snoozed_until) : undefined,
|
|
68
68
|
taskGroupIds: payload.task_group_ids != null ? payload.task_group_ids : [],
|
|
69
|
+
taskCategoryId: payload.task_category_id ?? undefined,
|
|
69
70
|
timeSpent: payload.time_spent != null
|
|
70
71
|
? (0, formatMinutesToFromHHMM_1.convertMinutesToHHMM)(payload.time_spent)
|
|
71
72
|
: (0, formatMinutesToFromHHMM_1.convertMinutesToHHMM)(0),
|
|
@@ -2,7 +2,10 @@ import { ID } from '../../commonStateTypes/common';
|
|
|
2
2
|
import { TaskPayload } from './taskPayload';
|
|
3
3
|
import { TaskState } from './taskState';
|
|
4
4
|
export declare const initialState: TaskState;
|
|
5
|
-
export declare const updateTasks: import("@reduxjs/toolkit").ActionCreatorWithPayload<TaskPayload[], "task/updateTasks">, updateTask: import("@reduxjs/toolkit").ActionCreatorWithPayload<TaskPayload, "task/updateTask">, removeTask: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "task/removeTask">,
|
|
5
|
+
export declare const updateTasks: import("@reduxjs/toolkit").ActionCreatorWithPayload<TaskPayload[], "task/updateTasks">, updateTask: import("@reduxjs/toolkit").ActionCreatorWithPayload<TaskPayload, "task/updateTask">, removeTask: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "task/removeTask">, updateTaskTimeSpentMinutes: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
6
|
+
minutes: number;
|
|
7
|
+
taskId: ID;
|
|
8
|
+
}, "task/updateTaskTimeSpentMinutes">, appendSubTaskId: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
6
9
|
parentTaskId: ID;
|
|
7
10
|
subTaskId: ID;
|
|
8
11
|
}, "task/appendSubTaskId">, setSubTaskIds: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.setSubTaskIds = exports.appendSubTaskId = exports.removeTask = exports.updateTask = exports.updateTasks = exports.initialState = void 0;
|
|
4
|
+
exports.setSubTaskIds = exports.appendSubTaskId = exports.updateTaskTimeSpentMinutes = exports.removeTask = exports.updateTask = exports.updateTasks = exports.initialState = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
+
const formatMinutesToFromHHMM_1 = require("../../commonStateTypes/fiscalYearHelpers/formatMinutesToFromHHMM");
|
|
6
7
|
const rootActions_1 = require("../../rootActions");
|
|
7
8
|
const taskPayload_1 = require("./taskPayload");
|
|
8
9
|
exports.initialState = {
|
|
@@ -27,6 +28,22 @@ const task = (0, toolkit_1.createSlice)({
|
|
|
27
28
|
removeTask(draft, action) {
|
|
28
29
|
delete draft.taskByID[action.payload];
|
|
29
30
|
},
|
|
31
|
+
/**
|
|
32
|
+
* Set one task's rolled-up total from the minutes the time-entry API
|
|
33
|
+
* returns. A whole-task update is not available on that path -- the write
|
|
34
|
+
* response carries the recomputed minutes, not a TaskPayload -- and
|
|
35
|
+
* refetching the task just to learn one number would put a round trip on
|
|
36
|
+
* the keystroke that logged the time.
|
|
37
|
+
*
|
|
38
|
+
* No-op when the task is absent: the ancestors the server recomputed can
|
|
39
|
+
* include a parent that is not on screen and so not in the store.
|
|
40
|
+
*/
|
|
41
|
+
updateTaskTimeSpentMinutes(draft, action) {
|
|
42
|
+
const taskInStore = draft.taskByID[action.payload.taskId];
|
|
43
|
+
if (taskInStore != null) {
|
|
44
|
+
taskInStore.timeSpent = (0, formatMinutesToFromHHMM_1.convertMinutesToHHMM)(action.payload.minutes);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
30
47
|
appendSubTaskId(draft, action) {
|
|
31
48
|
const parentTask = draft.taskByID[action.payload.parentTaskId];
|
|
32
49
|
if (parentTask != null) {
|
|
@@ -57,5 +74,5 @@ const task = (0, toolkit_1.createSlice)({
|
|
|
57
74
|
});
|
|
58
75
|
},
|
|
59
76
|
});
|
|
60
|
-
_a = task.actions, exports.updateTasks = _a.updateTasks, exports.updateTask = _a.updateTask, exports.removeTask = _a.removeTask, exports.appendSubTaskId = _a.appendSubTaskId, exports.setSubTaskIds = _a.setSubTaskIds;
|
|
77
|
+
_a = task.actions, exports.updateTasks = _a.updateTasks, exports.updateTask = _a.updateTask, exports.removeTask = _a.removeTask, exports.updateTaskTimeSpentMinutes = _a.updateTaskTimeSpentMinutes, exports.appendSubTaskId = _a.appendSubTaskId, exports.setSubTaskIds = _a.setSubTaskIds;
|
|
61
78
|
exports.default = task.reducer;
|
|
@@ -32,6 +32,9 @@ export interface Task {
|
|
|
32
32
|
recurringSourceTaskId?: ID;
|
|
33
33
|
recurringStartDate?: ZeniDate;
|
|
34
34
|
snoozedUntil?: ZeniDate | null;
|
|
35
|
+
/** The fixed classification this task's hours book against (B3/D15).
|
|
36
|
+
* Absent on a task nobody has classified. */
|
|
37
|
+
taskCategoryId?: ID;
|
|
35
38
|
updateTime?: ZeniDate;
|
|
36
39
|
}
|
|
37
40
|
export interface TaskState {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ID } from '../../commonStateTypes/common';
|
|
2
|
+
/** Exactly what `task-manager` returns. snake_case, API-nullable. */
|
|
3
|
+
export interface TimeEntryPayload {
|
|
4
|
+
create_time: string;
|
|
5
|
+
entry_date: string;
|
|
6
|
+
minutes: number;
|
|
7
|
+
source: string;
|
|
8
|
+
task_id: ID;
|
|
9
|
+
time_entry_id: ID;
|
|
10
|
+
update_time: string;
|
|
11
|
+
user_id: ID;
|
|
12
|
+
/** Derived from the category server-side (D15/D22) and READ-ONLY. Null when
|
|
13
|
+
* the task has no category, or the category is not yet classified. */
|
|
14
|
+
billing_type?: string | null;
|
|
15
|
+
created_by?: ID | null;
|
|
16
|
+
department?: string | null;
|
|
17
|
+
task_category_id?: ID | null;
|
|
18
|
+
}
|
|
19
|
+
export interface TaskCategoryPayload {
|
|
20
|
+
is_active: boolean;
|
|
21
|
+
name: string;
|
|
22
|
+
task_category_id: ID;
|
|
23
|
+
billing_type?: string | null;
|
|
24
|
+
service?: string | null;
|
|
25
|
+
vertical?: string | null;
|
|
26
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TaskCategoryPayload, TimeEntryPayload } from './timeEntryPayload';
|
|
2
|
+
import { TaskCategory, TimeEntry, TimeEntryState } from './timeEntryState';
|
|
3
|
+
export declare const initialState: TimeEntryState;
|
|
4
|
+
export declare const updateTimeEntries: import("@reduxjs/toolkit").ActionCreatorWithPayload<TimeEntryPayload[], "timeEntry/updateTimeEntries">, removeTimeEntry: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "timeEntry/removeTimeEntry">, updateTaskCategories: import("@reduxjs/toolkit").ActionCreatorWithPayload<TaskCategoryPayload[], "timeEntry/updateTaskCategories">;
|
|
5
|
+
declare const _default: import("redux").Reducer<TimeEntryState>;
|
|
6
|
+
export default _default;
|
|
7
|
+
export declare function mapTimeEntryPayloadToTimeEntry(payload: TimeEntryPayload): TimeEntry;
|
|
8
|
+
export declare function mapTaskCategoryPayloadToTaskCategory(payload: TaskCategoryPayload): TaskCategory;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.updateTaskCategories = exports.removeTimeEntry = exports.updateTimeEntries = exports.initialState = void 0;
|
|
5
|
+
exports.mapTimeEntryPayloadToTimeEntry = mapTimeEntryPayloadToTimeEntry;
|
|
6
|
+
exports.mapTaskCategoryPayloadToTaskCategory = mapTaskCategoryPayloadToTaskCategory;
|
|
7
|
+
const toolkit_1 = require("@reduxjs/toolkit");
|
|
8
|
+
const rootActions_1 = require("../../rootActions");
|
|
9
|
+
const zeniDayJS_1 = require("../../zeniDayJS");
|
|
10
|
+
const timeEntryState_1 = require("./timeEntryState");
|
|
11
|
+
exports.initialState = {
|
|
12
|
+
timeEntriesById: {},
|
|
13
|
+
taskCategoriesById: {},
|
|
14
|
+
};
|
|
15
|
+
const timeEntry = (0, toolkit_1.createSlice)({
|
|
16
|
+
name: 'timeEntry',
|
|
17
|
+
initialState: exports.initialState,
|
|
18
|
+
reducers: {
|
|
19
|
+
updateTimeEntries(draft, action) {
|
|
20
|
+
action.payload.forEach((payload) => {
|
|
21
|
+
const latest = mapTimeEntryPayloadToTimeEntry(payload);
|
|
22
|
+
const inStore = draft.timeEntriesById[latest.timeEntryId];
|
|
23
|
+
// Last-write-wins by updateTime, same as `address`. A weekly fetch and
|
|
24
|
+
// a single-entry edit can land in either order.
|
|
25
|
+
if (inStore == null || latest.updateTime.isAfter(inStore.updateTime)) {
|
|
26
|
+
draft.timeEntriesById[latest.timeEntryId] = latest;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
/** A soft delete comes back as a normal entry; the server has already
|
|
31
|
+
* dropped it from the totals, so the client drops it from the store
|
|
32
|
+
* rather than keeping a row it must then remember to filter. */
|
|
33
|
+
removeTimeEntry(draft, action) {
|
|
34
|
+
delete draft.timeEntriesById[action.payload];
|
|
35
|
+
},
|
|
36
|
+
updateTaskCategories(draft, action) {
|
|
37
|
+
action.payload.forEach((payload) => {
|
|
38
|
+
const category = mapTaskCategoryPayloadToTaskCategory(payload);
|
|
39
|
+
draft.taskCategoriesById[category.taskCategoryId] = category;
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
extraReducers: (builder) => {
|
|
44
|
+
builder.addCase(rootActions_1.clearAll, (draft) => {
|
|
45
|
+
Object.assign(draft, exports.initialState);
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
_a = timeEntry.actions, exports.updateTimeEntries = _a.updateTimeEntries, exports.removeTimeEntry = _a.removeTimeEntry, exports.updateTaskCategories = _a.updateTaskCategories;
|
|
50
|
+
exports.default = timeEntry.reducer;
|
|
51
|
+
function mapTimeEntryPayloadToTimeEntry(payload) {
|
|
52
|
+
return {
|
|
53
|
+
timeEntryId: payload.time_entry_id,
|
|
54
|
+
taskId: payload.task_id,
|
|
55
|
+
userId: payload.user_id,
|
|
56
|
+
minutes: payload.minutes,
|
|
57
|
+
entryDate: (0, zeniDayJS_1.date)(payload.entry_date),
|
|
58
|
+
source: (0, timeEntryState_1.toTimeEntrySource)(payload.source),
|
|
59
|
+
createTime: (0, zeniDayJS_1.date)(payload.create_time),
|
|
60
|
+
updateTime: (0, zeniDayJS_1.date)(payload.update_time),
|
|
61
|
+
billingType: (0, timeEntryState_1.toBillingType)(payload.billing_type),
|
|
62
|
+
createdBy: payload.created_by ?? undefined,
|
|
63
|
+
department: payload.department ?? undefined,
|
|
64
|
+
taskCategoryId: payload.task_category_id ?? undefined,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function mapTaskCategoryPayloadToTaskCategory(payload) {
|
|
68
|
+
return {
|
|
69
|
+
taskCategoryId: payload.task_category_id,
|
|
70
|
+
name: payload.name,
|
|
71
|
+
isActive: payload.is_active,
|
|
72
|
+
billingType: (0, timeEntryState_1.toBillingType)(payload.billing_type),
|
|
73
|
+
service: payload.service ?? undefined,
|
|
74
|
+
vertical: payload.vertical ?? undefined,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ID } from '../../commonStateTypes/common';
|
|
2
|
+
import { TaskCategory, TimeEntry, TimeEntryState } from './timeEntryState';
|
|
3
|
+
export declare function getTimeEntryById(timeEntryState: TimeEntryState, timeEntryId: ID): TimeEntry | undefined;
|
|
4
|
+
export declare function getTimeEntriesByIds(timeEntryState: TimeEntryState, timeEntryIds: ID[]): TimeEntry[];
|
|
5
|
+
export declare function getTaskCategoryById(timeEntryState: TimeEntryState, taskCategoryId: ID): TaskCategory | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* The catalog, ordered service → vertical → name, matching the order the
|
|
8
|
+
* server sends so the dropdown reads the same on both sides.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getTaskCategories(timeEntryState: TimeEntryState, includeInactive?: boolean): TaskCategory[];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getTimeEntryById = getTimeEntryById;
|
|
7
|
+
exports.getTimeEntriesByIds = getTimeEntriesByIds;
|
|
8
|
+
exports.getTaskCategoryById = getTaskCategoryById;
|
|
9
|
+
exports.getTaskCategories = getTaskCategories;
|
|
10
|
+
const get_1 = __importDefault(require("lodash/get"));
|
|
11
|
+
function getTimeEntryById(timeEntryState, timeEntryId) {
|
|
12
|
+
return (0, get_1.default)(timeEntryState.timeEntriesById, timeEntryId, undefined);
|
|
13
|
+
}
|
|
14
|
+
function getTimeEntriesByIds(timeEntryState, timeEntryIds) {
|
|
15
|
+
return timeEntryIds
|
|
16
|
+
.map((timeEntryId) => getTimeEntryById(timeEntryState, timeEntryId))
|
|
17
|
+
.filter((entry) => entry != null);
|
|
18
|
+
}
|
|
19
|
+
function getTaskCategoryById(timeEntryState, taskCategoryId) {
|
|
20
|
+
return (0, get_1.default)(timeEntryState.taskCategoriesById, taskCategoryId, undefined);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The catalog, ordered service → vertical → name, matching the order the
|
|
24
|
+
* server sends so the dropdown reads the same on both sides.
|
|
25
|
+
*/
|
|
26
|
+
function getTaskCategories(timeEntryState, includeInactive = false) {
|
|
27
|
+
return Object.values(timeEntryState.taskCategoriesById)
|
|
28
|
+
.filter((category) => includeInactive || category.isActive)
|
|
29
|
+
.sort((left, right) => (left.service ?? '').localeCompare(right.service ?? '') ||
|
|
30
|
+
(left.vertical ?? '').localeCompare(right.vertical ?? '') ||
|
|
31
|
+
left.name.localeCompare(right.name));
|
|
32
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ID } from '../../commonStateTypes/common';
|
|
2
|
+
import { ZeniDate } from '../../zeniDayJS';
|
|
3
|
+
export declare const ALL_TIME_ENTRY_SOURCES: readonly ["timer", "manual", "migration"];
|
|
4
|
+
export type TimeEntrySource = (typeof ALL_TIME_ENTRY_SOURCES)[number];
|
|
5
|
+
export declare const ALL_BILLING_TYPES: readonly ["billable", "non_billable"];
|
|
6
|
+
export type BillingType = (typeof ALL_BILLING_TYPES)[number];
|
|
7
|
+
/** Unknown values become `undefined` rather than being cast through.
|
|
8
|
+
* A server that gains a source we do not know about must not land an
|
|
9
|
+
* unmatched string in a union the UI switches on. */
|
|
10
|
+
export declare const toTimeEntrySource: (raw: string | null | undefined) => "manual" | "timer" | "migration" | undefined;
|
|
11
|
+
export declare const toBillingType: (raw: string | null | undefined) => "billable" | "non_billable" | undefined;
|
|
12
|
+
export interface TimeEntry {
|
|
13
|
+
createTime: ZeniDate;
|
|
14
|
+
/** The day the work happened, not the day the row was written. The grain is
|
|
15
|
+
* a DAY: one row per user per task per day. */
|
|
16
|
+
entryDate: ZeniDate;
|
|
17
|
+
minutes: number;
|
|
18
|
+
taskId: ID;
|
|
19
|
+
timeEntryId: ID;
|
|
20
|
+
updateTime: ZeniDate;
|
|
21
|
+
userId: ID;
|
|
22
|
+
/** Snapshotted at write time, never refreshed — reclassifying a category
|
|
23
|
+
* must not rewrite an approved week. Read-only to the client. */
|
|
24
|
+
billingType?: BillingType;
|
|
25
|
+
createdBy?: ID;
|
|
26
|
+
department?: string;
|
|
27
|
+
source?: TimeEntrySource;
|
|
28
|
+
taskCategoryId?: ID;
|
|
29
|
+
}
|
|
30
|
+
export interface TaskCategory {
|
|
31
|
+
isActive: boolean;
|
|
32
|
+
name: string;
|
|
33
|
+
taskCategoryId: ID;
|
|
34
|
+
billingType?: BillingType;
|
|
35
|
+
service?: string;
|
|
36
|
+
vertical?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface TimeEntryState {
|
|
39
|
+
taskCategoriesById: Record<ID, TaskCategory>;
|
|
40
|
+
/** Keyed by id, like every other entity slice. The per-task and per-user
|
|
41
|
+
* groupings live in the VIEW slice, because they are queries over this. */
|
|
42
|
+
timeEntriesById: Record<ID, TimeEntry>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toBillingType = exports.toTimeEntrySource = exports.ALL_BILLING_TYPES = exports.ALL_TIME_ENTRY_SOURCES = void 0;
|
|
4
|
+
const stringToUnion_1 = require("../../commonStateTypes/stringToUnion");
|
|
5
|
+
exports.ALL_TIME_ENTRY_SOURCES = ['timer', 'manual', 'migration'];
|
|
6
|
+
exports.ALL_BILLING_TYPES = ['billable', 'non_billable'];
|
|
7
|
+
/** Unknown values become `undefined` rather than being cast through.
|
|
8
|
+
* A server that gains a source we do not know about must not land an
|
|
9
|
+
* unmatched string in a union the UI switches on. */
|
|
10
|
+
const toTimeEntrySource = (raw) => raw == null ? undefined : (0, stringToUnion_1.stringToUnionStrict)(raw, exports.ALL_TIME_ENTRY_SOURCES);
|
|
11
|
+
exports.toTimeEntrySource = toTimeEntrySource;
|
|
12
|
+
const toBillingType = (raw) => raw == null ? undefined : (0, stringToUnion_1.stringToUnionStrict)(raw, exports.ALL_BILLING_TYPES);
|
|
13
|
+
exports.toBillingType = toBillingType;
|
package/lib/epic.d.ts
CHANGED
|
@@ -662,6 +662,9 @@ import { ActionType as DragNDropTasksActionType } from './view/taskManager/taskL
|
|
|
662
662
|
import { ActionType as FetchTaskListActionType } from './view/taskManager/taskListView/epics/fetchTaskListEpic';
|
|
663
663
|
import { ActionType as FetchTaskListPageActionType } from './view/taskManager/taskListView/epics/fetchTaskListPageEpic';
|
|
664
664
|
import { ActionType as UpdateTaskFromListViewActionType } from './view/taskManager/taskListView/epics/updateTaskFromListViewEpic';
|
|
665
|
+
import { ActionType as FetchTaskCategoriesActionType } from './view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic';
|
|
666
|
+
import { ActionType as FetchTimeEntriesActionType } from './view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic';
|
|
667
|
+
import { ActionType as WriteTimeEntryActionType } from './view/taskManager/timeEntryView/epic/writeTimeEntryEpic';
|
|
665
668
|
import { ActionType as FetchTasksCardActionType } from './view/tasksCard/fetchTasksCardEpic';
|
|
666
669
|
import { ActionType as TopExActionType } from './view/topEx/topExEpic';
|
|
667
670
|
import { ActionType as FetchTransactionActivityLogActionType } from './view/transactionActivityLogView/fetchTransactionActivityLogEpic';
|
|
@@ -716,5 +719,5 @@ import { ActionType as FetchDepositAccStatementListActionType } from './view/zen
|
|
|
716
719
|
import { ActionType as FetchZeniAccStatePageActionType } from './view/zeniAccStatementList/fetchZeniAccStatementPageEpic';
|
|
717
720
|
import { ActionType as ApproveOAuthConsentActionType } from './view/zeniOAuthView/epics/approveOAuthConsentEpic';
|
|
718
721
|
/** Root action type is union of all the epic action type */
|
|
719
|
-
export type RootActionType = AcceptBillPayTermsActionType | AcceptBillPayUpdatedTermsActionType | AcceptChargeCardTermsActionType | AcceptEmployeeRemiTermsActionType | AcceptMasterTOSEpicActionType | AcceptRemiTermsActionType | AcceptTreasuryTermsActionType | AcceptZeniAccountTermsActionType | AcknowledgeOnboardingAiActivationViewedActionType | AcknowledgeOnboardingAiFinanceTeamActionType | AddCardPaymentSourceActionType | ApplyBillRecommendationsToLocalStoreActionType | ApplyExtractedPolicyToDraftActionType | ApproveOAuthConsentActionType | ApproveOrRejectBillActionType | ApproveOrRejectBillsBulkActionActionType | ApproveOrRejectRemiActionType | ApproveOrRejectRemisBulkActionActionType | ApproveVendorGlobalReviewActionType | ArchiveCardPolicyActionType | ArchiveTaskActionType | BackgroundRefetchReviewTabActionType | BalanceSheetActionType | BalanceSheetClassesViewActionType | BalanceSheetForTimeframeActionType | BalanceSheetForTimeframeClassesViewActionType | BalanceSheetForTimeframeProjectViewActionType | BalanceSheetProjectViewActionType | BulkUpdateTasksListActionType | BulkUploadMatchResultToastActionType | BulkUploadReceiptsActionType | CancelAiAccountantOnboardingActionType | CancelAndDeleteBillActionType | CancelAndDeleteRemiActionType | CancelOrDeleteBillsBulkActionActionType | CancelOrDeleteRemisBulkActionActionType | CancelScheduleAccruedJournalEntryActionType | CardBalanceActionType | CashBalanceActionType | CashFlowActionType | CashFlowClassesViewActionType | CashFlowForTimeframeActionType | CashFlowForTimeframeClassesViewActionType | CashFlowForTimeframeProjectViewActionType | CashFlowProjectViewActionType | CashInCashOutActionType | CashPositionActionType | ChangeZeniPersonRolesActionType | CheckDepositActionType | CloseChargeCardActionType | CloseChargeCardsActionType | CombinedStatementActionType | CompanyManagementSavePendingUpdatesActionType | CompanyManagementSaveUpdatesActionType | ConfirmBulkUploadMatchActionType | ConfirmCardSetupIntentActionType | ConfirmStatementMappingActionType | CreateAddressActionType | CreateAutoTransferRuleActionType | CreateBankAccountActionType | CreateCardPolicyTemplateActionType | CreateCardSetupIntentActionType | CreateCheckingAccountActionType | CreateCompanyAddressActionType | CreateCompanyOfficersActionType | CreateCompanyUserAddressActionType | CreateGlobalMerchantActionType | CreateInternationalBankAccountActionType | CreateInvoiceActionType | CreateNewSchedulesAccruedActionType | CreateNewSchedulesActionType | CreateNewTaskGroupActionType | CreateOneTimeAccrualActionType | CreatePaymentInstrumentActionType | CreateSessionActionType | CreateSessionAndSubmitActionType | CreateSubTaskActionType | CreateTagActionType | CreateTaskFromTaskGroupTemplateActionType | CreateTransactionActionType | CreateTransactionAttachmentUploadFailureActionType | CreateTransferEntryActionType | CreateUserBankAccountActionType | CurrencyConversionActionType | DeleteAccountStatementActionType | DeleteAutoTransferRuleActionType | DeleteBankAccountActionType | DeleteBillActionType | DeleteBillPayApprovalRuleActionType | DeleteCannedResponseActionType | DeleteChatSessionActionType | DeleteCombinedStatementActionType | DeleteFileActionType | DeleteFileListActionType | DeleteInternationalBankAccountActionType | DeletePaymentInstrumentActionType | DeletePersonActionType | DeleteRemiActionType | DeleteRemiApprovalRuleActionType | DeleteScheduleAccruedDetailActionType | DeleteScheduleDetailActionType | DeleteTagActionType | DeleteTaskActionType | DeleteTaskGroupActionType | DeleteTransactionAttachmentActionType | DeleteUserBankAccountActionType | DepositAccountTransactionListActionType | DisableAccountingProjectsActionType | DismissCapitalizationOnboardingActionType | DoMagicLinkSignInActionType | DownloadAccountingProviderAttachmentActionType | DragNDropTasksActionType | EditInvoicingCatalogItemDetailViewActionType | EditInvoicingCouponDetailViewActionType | EditInvoicingCustomerDetailViewActionType | EditInvoicingSubscriptionDetailViewActionType | EnableAccountingProjectsActionType | EnableChargeCardAutoPayActionType | EnableSetupActionType | EstablishOnboardingPlaidConnectionActionType | EstablishPlaidConnectionActionType | ExcludeAccountFromReconciliationActionType | ExpressInterestChargeCardActionType | ExpressPayActionType | ExtractPolicyDocumentActionType | FetchAccountHistoryActionType | FetchAccountListActionType | FetchAccountListForAccountTypesActionType | FetchAccountSettingsListForAccountTypesActionType | FetchAccruedScheduleListActionType | FetchActiveTenantActionType | FetchAddressActionType | FetchAggregatedReportActionType | FetchAiAccountantCustomersActionType | FetchAiAccountantJobsActionType | FetchAiAgentsActivationStatusActionType | FetchAllCockpitViewsActionType | FetchAllExpenseAutomationTabsActionType | FetchAllPeopleRequiredActionType | FetchAllTagsActionType | FetchAllTaskGroupsActionType | FetchAllTenantsActionType | FetchApAgingActionType | FetchApAgingDetailActionType | FetchArAgingActionType | FetchArAgingDetailActionType | FetchAuditReportGroupViewActionType | FetchAuditRuleGroupViewActionType | FetchAutoTransferReviewDetailActionType | FetchAutoTransferRuleHistoryActionType | FetchAutoTransferRulesActionType | FetchBankAccountsListActionType | FetchBankConnectionsViewActionType | FetchBankCountryNameByIbanActionType | FetchBankNameByRoutingActionType | FetchBankNameBySwiftActionType | FetchBillAndInitializeLocalStoreActionType | FetchBillDetailActionType | FetchBillingAccountsListActionType | FetchBillListActionType | FetchBillListPerTabActionType | FetchBillPayApproversDetailsActionType | FetchBillPayApproversListActionType | FetchBillPayCardActionType | FetchBillPayConfigActionType | FetchBillPaySetupApproverViewActionType | FetchBillPaySetupViewActionType | FetchBillRecommendationsActionType | FetchBulkUploadBatchDetailsActionType | FetchBulkUploadBatchesActionType | FetchCannedResponsesActionType | FetchCardPolicyDetailActionType | FetchCardPolicyListActionType | FetchCardPolicyMccCategoriesActionType | FetchCardPolicyVendorOptionsActionType | FetchCardProfilesActionType | FetchCashbackDetailActionType | FetchChargeCardConfigActionType | FetchChargeCardDetailActionType | FetchChargeCardDetailPageActionType | FetchChargeCardListActionType | FetchChargeCardListPageActionType | FetchChargeCardPaymentHistoryActionType | FetchChargeCardPaymentPageActionType | FetchChargeCardRepaymentDetailActionType | FetchChargeCardSetupViewActionType | FetchChargeCardsRecurringExpensesActionType | FetchChargeCardStatementListActionType | FetchChargeCardTransactionAttachmentsActionType | FetchChargeCardTransactionListActionType | FetchChargeCardTransactionStatisticsActionType | FetchChatHistoryActionType | FetchChatSessionsForUserActionType | FetchClassListActionType | FetchCoachmarkPreferencesActionType | FetchCockpitContextActionType | FetchCollaborationAuthTokenActionType | FetchCompanyBillingAddressActionType | FetchCompanyConfigActionType | FetchCompanyHealthMetricConfigViewEpicActionType | FetchCompanyHealthMetricViewEpicActionType | FetchCompanyManagementActionType | FetchCompanyMetaDataActionType | FetchCompanyMonthEndReportHistoricDataActionType | FetchCompanyMonthEndReportHistoricDatesActionType | FetchCompanyMonthEndReportTemplatesActionType | FetchCompanyMonthEndReportViewActionType | FetchCompanyOnboardingViewActionType | FetchCompanyPassportViewActionType | FetchCompanyPortfolioActionType | FetchCompanyTaskManagerViewActionType | FetchCompletedTransactionsActionType | FetchCreateInvoiceFormPageActionType | FetchCreditAccountActionType | FetchCreditAccountRepaymentActionType | FetchCreditAgentMacroActionType | FetchCurrencyConversionValueActionType | FetchCustomerSummaryDetailActionType | FetchCustomerSummaryListActionType | FetchDashboardActionType | FetchDashboardLayoutActionType | FetchDebitCardSummaryActionType | FetchDepositAccountActionType | FetchDepositAccountDetailActionType | FetchDepositAccountLimitActionType | FetchDepositAccountListActionType | FetchDepositAccountListForCardsActionType | FetchDepositAccStatementListActionType | FetchDownloadSchedulesActionType | FetchDuplicateBillActionType | FetchDuplicateReimbursementEpicActionType | FetchEditBillDetailPageActionType | FetchEditRemiDetailPageActionType | FetchEligibleActionsForBillActionType | FetchEntityAutoCompleteActionType | FetchEntityHistoryActionType | FetchEntityRecommendationsByTransactionIdActionType | FetchEntityRecommendationsForLineUpdateActionType | FetchExcludedResourcesActionType | FetchExpenseAutomationActualMatchingActionType | FetchExpenseAutomationActualMatchingMatchActionType | FetchExpenseAutomationActualMatchingPageActionType | FetchExpenseAutomationFailedJePostingsActionType | FetchExpenseAutomationFluxAnalysisActionType | FetchExpenseAutomationInitializeTransactionCategorizationViewLocalDataActionType | FetchExpenseAutomationJEScheduleActionType | FetchExpenseAutomationJESchedulePageActionType | FetchExpenseAutomationMarkTransactionAsNotMiscategorizedActionType | FetchExpenseAutomationMissingReceiptsActionType | FetchExpenseAutomationReconciliationsViewActionType | FetchExpenseAutomationSaveTransactionCategorizationActionType | FetchExpenseAutomationTransactionCategorizationActionType | FetchExpenseAutomationTransactionCategorizationViewActionType | FetchExpenseAutomationUpdateTransactionCategorizationEpicActionType | FetchExpenseTrendActionType | FetchExternalConnectionsActionType | FetchFileActionType | FetchFileListActionType | FetchForecastListActionType | FetchGlobalMerchantAutoCompleteActionType | FetchGlobalMerchantRecommendationActionType | FetchIncomeTrendActionType | FetchInternationalWireDynamicFormActionType | FetchIntlVerificationFormActionType | FetchInvoiceCountsActionType | FetchInvoiceDetailActionType | FetchInvoiceKPIsActionType | FetchInvoiceListActionType | FetchInvoiceListPageActionType | FetchIssueCardPageActionType | FetchMagicLinkBankNameByRoutingActionType | FetchMagicLinkBankNameBySwiftActionType | FetchMagicLinkBillActionType | FetchMagicLinkTenantActionType | FetchManagementActionType | FetchMerchantListActionType | FetchMonthClosePerformanceTrendActionType | FetchMonthEndCloseChecksActionType | FetchMoreBatchDetailsActionType | FetchMultipleBatchDetailsActionType | FetchMyProfileActionType | FetchMyProfileViewActionType | FetchNetBurnOrIncomeStoryCardActionType | FetchNetBurnOrIncomeWithForecastActionType | FetchNotificationSettingsActionType | FetchNotificationSettingsViewActionType | FetchNotificationUnreadCountActionType | FetchNotificationViewActionType | FetchOnboardingActionType | FetchOnboardingCompletedCompaniesActionType | FetchOnboardingCustomerSetupViewActionType | FetchOnboardingCustomerViewActionType | FetchOneTimeAccrualActionType | FetchOpExWithForecastActionType | FetchOwnerListActionType | FetchParentSubsidiaryManagementActionType | FetchPaymentAccountBalanceActionType | FetchPaymentAccountListActionType | FetchPaymentSourcesActionType | FetchPortfolioActionType | FetchPortfolioAllocationActionType | FetchPreviousBillsActionType | FetchProjectListActionType | FetchQBOConnectionPoolActionType | FetchRecommendationByEntityIdActionType | FetchRecommendationByEntityNameActionType | FetchRecommendationsAndUpdateMerchantRecommendationsActionType | FetchRecommendationsAndUpdateVendorRecommendationsActionType | FetchRecommendedBillExpenseActionType | FetchReconciliationReportActionType | FetchReferralsActionType | FetchRegisteredInterestsActionType | FetchReimbursementCardActionType | FetchReimbursementConfigActionType | FetchRemiAndInitializeLocalStoreActionType | FetchRemiApproversDetailsActionType | FetchRemiApproversListActionType | FetchRemiDetailActionType | FetchRemiListActionType | FetchRemiListPerTabActionType | FetchRemiSetupApproverViewActionType | FetchRemiSetupViewActionType | FetchRevenueWithForecastActionType | FetchReviewCompanyActionType | FetchReviewTransferDetailActionType | FetchRewardsPlanActionType | FetchScheduleAccruedDetailsActionType | FetchScheduleAccruedDetailsPageActionType | FetchScheduleDetailsActionType | FetchScheduleDetailsPageActionType | FetchScheduleListActionType | FetchSchedulesListActionType | FetchSkillsActionType | FetchSubscriptionActionType | FetchSubscriptionAddOnsActionType | FetchSubscriptionCouponsActionType | FetchSubscriptionCreateEstimateActionType | FetchSubscriptionDetailsActionType | FetchSubscriptionListActionType | FetchSubscriptionPlansActionType | FetchSubscriptionSummaryForTenantActionType | FetchSubscriptionUpdateEstimateActionType | FetchSubTasksActionType | FetchSuggestedQuestionsActionType | FetchTaskDetailActionType | FetchTaskDetailPageActionType | FetchTaskGroupTemplatesActionType | FetchTaskHistoryActionType | FetchTaskListActionType | FetchTaskListPageActionType | FetchTaskManagerMetricsActionType | FetchTasksCardActionType | FetchTransactionActivityLogActionType | FetchTransactionDetailActionType | FetchTransactionListByAccountActionType | FetchTransactionListByClassActionType | FetchTransactionListByEntityActionType | FetchTransactionListByProjectActionType | FetchTransactionsForEntityActionType | FetchTransactionsListByCategoryTypeActionType | FetchTransferAccountsActionType | FetchTreasuryDetailActionType | FetchTreasuryFundsActionType | FetchTreasuryHistoryActionType | FetchTreasurySetupViewActionType | FetchTreasuryStatementListActionType | FetchTreasuryTaxLetterListActionType | FetchTreasuryTransactionListActionType | FetchTrendForEntityActionType | FetchUserDetailActionType | FetchUserFinancialAccountActionType | FetchUserListByTypeActionType | FetchUserRoleConfigActionType | FetchVendor1099TypeListActionType | FetchVendorActionType | FetchVendorAndUpdateBillLocalDataActionType | FetchVendorByNameAndParseInvoiceActionType | FetchVendorDetailsActionType | FetchVendorFirstReviewAttachmentsActionType | FetchVendorFirstReviewViewActionType | FetchVendorGlobalReviewViewActionType | FetchVendorRecommendationsForCreateTransactionActionType | FetchVendorsActionType | FetchVendorsFiling1099ActionType | FetchVendorsFiling1099AllActionType | FetchVendorsFiling1099DownloadActionType | FetchVendorTabViewActionType | FetchVendorTypeListActionType | FetchZeniAccountListPageActionType | FetchZeniAccountsConfigActionType | FetchZeniAccountSetupViewActionType | FetchZeniAccStatePageActionType | FetchZeniUsersActionType | GetOnboardingEmailGroupActionType | GetOnboardingPlaidLinkTokenActionType | GetPaymentAccountsActionType | GetPlaidLinkTokenActionType | IgnoreActualMatchingSuggestionActionType | IgnoreExpenseAutomationJEScheduleActionType | ImproveUsingZeniGPTActionType | IncludeAccountInReconciliationActionType | InitialiseExpenseAutomationLocalDataForSelectedAccountIdActionType | InitializeAccountMappingViewActionType | InitializeAccountSettingsViewEpicActionType | InitializeBillPaySetupApproverViewUpdateDataActionType | InitializeBillToLocalStoreActionType | InitializeCardUserOnboardingLocalDataActionType | InitializeCompanyHealthMetricViewLocalDataEpicActionType | InitializeCreateTransactionLocalDataActionType | InitializeEditPersonActionType | InitializeExpenseAutomationJeScheduleLocalDataActionType | InitializeInternationalWireLocalDataActionType | InitializeIntlVerificationFormEpicActionType | InitializeMyProfileLocalDataActionType | InitializeNewScheduleActionType | InitializeOnboardingCustomerViewUpdateDataActionType | InitializeRemiSetupApproverViewUpdateDataActionType | InitializeRemiToLocalStoreActionType | InitializeScheduleAccruedDetailLocalDataActionType | InitializeScheduleDetailLocalDataActionType | InitializeSubscriptionLocalDataActionType | InitializeTaskToLocalStoreActionType | InitializeTransactionDetailLocalDataActionType | InitializeVendorAddressActionType | InitiateChargeCardRepaymentActionType | InitiateReportsClassViewRefetchingActionType | InitiateReportsProjectViewRefetchingActionType | InsightsCardActionType | InvitePeopleActionType | InviteZeniPeopleActionType | InvoiceDetailPageActionType | InvoicingAuditViewActionType | InvoicingCatalogItemDetailFetchActionType | InvoicingCatalogItemDetailPageActionType | InvoicingCatalogItemFormDraftSeedActionType | InvoicingCatalogListViewActionType | InvoicingCatalogPlanActionActionType | InvoicingCatalogProductActionActionType | InvoicingConfigViewActionType | InvoicingCouponDetailFetchActionType | InvoicingCouponDetailPageActionType | InvoicingCouponFormDraftSeedActionType | InvoicingCouponViewActionType | InvoicingCreditNoteDetailViewActionType | InvoicingCreditNoteListViewActionType | InvoicingCustomerDetailPageActionType | InvoicingCustomerFormDraftSeedActionType | InvoicingCustomerListViewActionType | InvoicingCustomerPaymentMethodActionType | InvoicingCustomerRecordViewActionType | InvoicingDataImportViewActionType | InvoicingDiscountActionActionType | InvoicingDunningActionActionType | InvoicingDunningCaseDetailPageActionType | InvoicingDunningCaseDetailViewActionType | InvoicingDunningCaseListViewActionType | InvoicingInvoiceActionActionType | InvoicingOverviewActionType | InvoicingPaymentActionActionType | InvoicingPaymentLinkEmailPreviewActionType | InvoicingPaymentLinkEmailPreviewPageActionType | InvoicingPromotionalCreditActionActionType | InvoicingQboViewActionType | InvoicingSettingsViewActionType | InvoicingSubscriptionActionActionType | InvoicingSubscriptionDetailFetchActionType | InvoicingSubscriptionDetailPageActionType | InvoicingSubscriptionEstimateActionType | InvoicingSubscriptionFormDraftSeedActionType | InvoicingSubscriptionFormPageActionType | InvoicingSubscriptionListViewActionType | InvoicingTransactionDetailViewActionType | InvoicingTransactionListViewActionType | IssueChargeCardActionType | LockChargeCardActionType | LockChargeCardsActionType | MarkAsCompleteScheduleDetailActionType | MarkCoachmarkDismissedActionType | MarkTransactionAsNotMiscategorizedActionType | MatchAndReverseAccrualsActionType | NetBurnOrIncomeActionType | NetBurnOrIncomeClassesViewActionType | NetBurnOrIncomeForTimeframeActionType | NetBurnOrIncomeForTimeframeClassesViewActionType | NetBurnOrIncomeForTimeframeProjectViewActionType | NetBurnOrIncomeProjectViewActionType | NotifyMeForFeatureActionType | OneTimeAccrualActionsActionType | OpExActionType | OpExByVendorReportActionType | OpExByVendorReportForTimeframeActionType | OpExByVendorReportSummaryActionType | OpExClassesViewActionType | OpExForTimeframeClassesViewActionType | OpExForTimeframeProjectViewActionType | OpExForTimeframeViewActionType | OpExProjectViewActionType | ParallelFetchAccountTransactionListActionType | ParallelFetchClassTransactionListActionType | ParallelFetchEntityTransactionListActionType | ParallelFetchProjectTransactionListActionType | ParallelFetchTransactionListByCategoryTypeActionType | ParseCombinedStatementActionType | ParseInvoiceToBillActionType | ParseReceiptsToRemiActionType | ParseStatementActionType | ParseUploadedKybDocumentActionType | ParseUploadedKycDocumentActionType | PeopleActionType | PeoplePageActionType | PeopleSaveUpdatesActionType | PolicyDocumentExtractionToRecommendationBridgeActionType | PolicyRecommendationFromUploadActionType | PrefetchOtherJeSchedulesTabActionType | ProfitAndLossActionType | ProfitAndLossClassesViewActionType | ProfitAndLossForTimeframeActionType | ProfitAndLossForTimeframeClassesViewActionType | ProfitAndLossForTimeframeProjectViewActionType | ProfitAndLossProjectViewActionType | PushToastNotificationActionType | RecommendationForAccountSettingsActionType | RecommendationForAccountTypeActionType | RecordPaymentActionType | RefetchCompletedTransactionsOnBulkUploadSortActionType | RefreshBatchDetailsForBatchIdActionType | RefreshExpenseAutomationCurrentTabActionType | RefreshIntegrationsDataActionType | RefreshOpExByVendorReportActionType | RejectVendorGlobalReviewActionType | ReorderBillPayApprovalRulesActionType | ReorderRemiApprovalRulesActionType | ReparseStatementActionType | ReportsResyncActionType | ResendCardInviteActionType | ResendInviteActionType | ResendOtpActionType | ResendReferralInviteActionType | ResendVerifyDeviceOTPActionType | ResetKycKybActionType | ResetTransactionVendorLocalDataActionType | ResetVendorDetailLocalDataActionType | RestoreAutomatchingActionType | ResumeEnableAccountingProjectsActionType | RetryBankAccountConnectionActionType | RetryBankAccountConnectionForOnboardingActionType | RetryExpenseAutomationJEScheduleActionType | RetryOrRefundBillActionType | RevenueActionType | RevenueClassesViewActionType | RevenueForTimeframeClassesViewActionType | RevenueForTimeframeProjectViewActionType | RevenueForTimeframeViewActionType | RevenueProjectViewActionType | RevertJeScheduleActionType | ReviewDraftRemisBulkActionActionTye | ReviewExpenseAutomationFluxAnalysisActionType | RevokeCardInviteActionType | RevokeChargeCardsInviteActionType | SaveAccountMappingViewActionType | SaveAccountSettingsViewEpicActionType | SaveAddressActionType | SaveBillDetailActionType | SaveBillPaySetupApproverViewUpdatesActionType | SaveCannedResponseActionType | saveCardOnboardingUserDetailsActionType | SaveCompanyBillingAddressActionType | SaveCompanyHealthMetricByIdEpicActionType | SaveCompanyMonthEndReportActionType | SaveCompanyPassportDetailsActionType | SaveCreditAgentMacroActionType | SaveCustomerSummaryDetailActionType | SaveExpenseAutomationReconciliationDetailActionType | SaveExternalConnectionActionType | SaveMagicLinkBankAccountActionType | SaveNewScheduleActionType | SaveNotificationPreferencesActionType | SaveNotificationSettingsEpicActionType | SaveOnboardingCustomerCompletedStatusActionType | SaveOnboardingCustomerNotesActionType | SaveOnboardingCustomerViewUpdatesActionType | SaveRealTimeApprovalActionType | SaveReasonForAuditRuleActionType | SaveReconciliationReviewActionType | SaveRemiDetailActionType | SaveRemiSetupApproverViewUpdatesActionType | SaveScheduleAccruedDetailsActionType | SaveScheduleDetailsActionType | SaveSubscriptionNotesUpdatesActionType | SaveSubscriptionUpdatesActionType | SaveTaskDetailActionType | SaveTranactionVendorActionType | SaveTransactionDetailActionType | SaveVendorActionType | SaveVendorDetailsViewActionType | SaveVendorFirstReviewViewActionType | ScheduleTenantCreditScoreCronActionType | SearchMatchAccrualsActionType | SearchMatchTransactionsActionType | SearchTransactionsForManualMatchActionType | SearchTransactionsForNewScheduleActionType | SeedAiCardCreationFormDraftActionType | SeedAiCardPolicyFormDraftActionType | SendCompanyMonthEndReportActionType | SendEmailMagicLinkToUserActionType | SendOnboardingCustomerViewInviteActionType | SendOtpActionType | SendReferralInviteActionType | SessionHeartbeatActionType | SignInActionType | SignOutActionType | SnoozeTaskActionType | StatementCloseDayActionType | StopSubmitActionType | StopSubmitQuestionActionType | SubmitDraftBillsBulkActionActionType | SubmitDraftRemisBulkActionActionType | SubmitExpressPayActionType | SubmitFeedbackActionType | SubmitIntlVerificationActionType | SubmitQuestionActionType | SubmitRecommendationFeedbackActionType | SwitchExpenseAutomationJESchedulesTabActionType | SyncInvoicingSubscriptionCouponsActionType | SyncTabsAfterAutomatchActionType | ToggleReportUIOptionForecastModeActionType | TopExActionType | TransferMoneyActionType | TreasuryTransferMoneyActionType | TriggerAiAccountantJobActionType | TriggerReviewTabRefetchActionType | UndoReversalAccrualsActionType | UnlinkPaymentAccountActionType | UnlockChargeCardActionType | UnlockChargeCardsActionType | UnsnoozeTaskActionType | UpdateAccountingClassesEnabledActionType | UpdateAccruedJESchedulesActionType | UpdateAddressActionType | UpdateAmountsInScheduleAccruedDetailActionType | UpdateAmountsInScheduleDetailActionType | UpdateAutoReviewIncomeWithoutCustomerActionType | UpdateAutoTransferRuleActionType | UpdateBusinessVerificationDetailsActionType | UpdateCapitalizationAccountThresholdActionType | UpdateCardPolicyActionType | UpdateCardProfileActionType | UpdateChargeCardDetailActionType | UpdateChargeCardLimitActionType | UpdateChargeCardNameActionType | UpdateChargeCardsLimitActionType | UpdateCombinedStatementInfoActionType | UpdateCompanyDetailsActionType | UpdateCompanyOfficerActionType | UpdateCompanyPassportLocalStoreDataActionType | UpdateCompanyProductServicesActionType | UpdateCompanyQboRealmIdActionType | UpdateCompanyTaskManagerViewFiltersActionType | UpdateDashboardLayoutActionType | UpdateDebitCardPinAttemptActionType | UpdateDepositAccountActionType | UpdateDynamicFormActionType | UpdateExpenseAutomationReconciliationBalanceLocalDataActionType | UpdateFileNameActionType | UpdateFilesMetadataActionType | UpdateJESchedulesActionType | UpdateMappedCashAccountActionType | UpdateMileageDetailsActionType | UpdateMyProfileActionType | UpdateNetBurnOrIncomeStoryCardSettingsActionType | UpdateNotificationViewAllNotificationsStatusActionType | UpdateNotificationViewNotificationStatusActionType | UpdateOnboardingCustomerViewActionType | UpdateOnboardingCustomerViewCompleteStatusActionType | UpdateOnboardingCustomerViewDashboardLoadedActionType | UpdateOnboardingCustomerViewLocalStoreDataActionType | UpdateOnboardingPaymentAccountLoginStatusActionType | UpdateOnboardingPaymentAccountStatusActionType | UpdatePaymentAccountActionType | UpdatePaymentAccountLoginStatusActionType | UpdatePaymentAccountStatusActionType | UpdatePhysicalChargeCardAttemptActionType | UpdatePortfolioAllocationActionType | UpdatePrimaryContactActionType | UpdatePrimaryFundingAccountActionType | UpdateQBOConnectionPoolExternalConnectionActionType | UpdateReferViewedActionType | UpdateRemiSetupViewLocalStoreDataActionType | UpdateReportUIOptionCOABalancesRangeActionType | UpdateReportUIOptionIsCompareModeActionType | UpdateReportUIOptionIsCompareModeOnActionType | UpdateReportUIOptionThisPeriodActionType | UpdateReportUIOptionTimeFrameActionType | UpdateSectionAccountsViewActionType | UpdateSectionClassesViewV2ActionType | UpdateSectionProjectViewActionType | UpdateSelectedVendorForCreateFlowActionType | UpdateSetupViewLocalStoreDataActionType | UpdateStatementInfoActionType | UpdateTaskFromListViewActionType | UpdateTaskGroupNameActionType | UpdateTransactionDetailActionType | UpdateTransactionOnUploadSuccessActionType | UpdateVendorContactActionType | UploadAccountStatementActionType | UploadMissingReceiptSuccessEpicActionType | UploadTransactionReceiptSuccessEpicActionType | ValidateBillsBulkActionActionType | VendorFiling1099UploadDetailsSaveActionType | VendorsTabFetchVendorActionType | VendorsTabFetchVendorDetailPageViewActionType | VendorsTabFetchVendorDetailsActionType | VendorsTabResetVendorDetailLocalDataActionType | VendorsTabSaveVendorActionType | VerifyDeviceWithTwoFAActionType | VerifyOtpActionType | VerifyUserActionType | WatchBulkUploadBatchStatusActionType | WiseRedirectActionType;
|
|
722
|
+
export type RootActionType = AcceptBillPayTermsActionType | AcceptBillPayUpdatedTermsActionType | AcceptChargeCardTermsActionType | AcceptEmployeeRemiTermsActionType | AcceptMasterTOSEpicActionType | AcceptRemiTermsActionType | AcceptTreasuryTermsActionType | AcceptZeniAccountTermsActionType | AcknowledgeOnboardingAiActivationViewedActionType | AcknowledgeOnboardingAiFinanceTeamActionType | AddCardPaymentSourceActionType | ApplyBillRecommendationsToLocalStoreActionType | ApplyExtractedPolicyToDraftActionType | ApproveOAuthConsentActionType | ApproveOrRejectBillActionType | ApproveOrRejectBillsBulkActionActionType | ApproveOrRejectRemiActionType | ApproveOrRejectRemisBulkActionActionType | ApproveVendorGlobalReviewActionType | ArchiveCardPolicyActionType | ArchiveTaskActionType | BackgroundRefetchReviewTabActionType | BalanceSheetActionType | BalanceSheetClassesViewActionType | BalanceSheetForTimeframeActionType | BalanceSheetForTimeframeClassesViewActionType | BalanceSheetForTimeframeProjectViewActionType | BalanceSheetProjectViewActionType | BulkUpdateTasksListActionType | BulkUploadMatchResultToastActionType | BulkUploadReceiptsActionType | CancelAiAccountantOnboardingActionType | CancelAndDeleteBillActionType | CancelAndDeleteRemiActionType | CancelOrDeleteBillsBulkActionActionType | CancelOrDeleteRemisBulkActionActionType | CancelScheduleAccruedJournalEntryActionType | CardBalanceActionType | CashBalanceActionType | CashFlowActionType | CashFlowClassesViewActionType | CashFlowForTimeframeActionType | CashFlowForTimeframeClassesViewActionType | CashFlowForTimeframeProjectViewActionType | CashFlowProjectViewActionType | CashInCashOutActionType | CashPositionActionType | ChangeZeniPersonRolesActionType | CheckDepositActionType | CloseChargeCardActionType | CloseChargeCardsActionType | CombinedStatementActionType | CompanyManagementSavePendingUpdatesActionType | CompanyManagementSaveUpdatesActionType | ConfirmBulkUploadMatchActionType | ConfirmCardSetupIntentActionType | ConfirmStatementMappingActionType | CreateAddressActionType | CreateAutoTransferRuleActionType | CreateBankAccountActionType | CreateCardPolicyTemplateActionType | CreateCardSetupIntentActionType | CreateCheckingAccountActionType | CreateCompanyAddressActionType | CreateCompanyOfficersActionType | CreateCompanyUserAddressActionType | CreateGlobalMerchantActionType | CreateInternationalBankAccountActionType | CreateInvoiceActionType | CreateNewSchedulesAccruedActionType | CreateNewSchedulesActionType | CreateNewTaskGroupActionType | CreateOneTimeAccrualActionType | CreatePaymentInstrumentActionType | CreateSessionActionType | CreateSessionAndSubmitActionType | CreateSubTaskActionType | CreateTagActionType | CreateTaskFromTaskGroupTemplateActionType | CreateTransactionActionType | CreateTransactionAttachmentUploadFailureActionType | CreateTransferEntryActionType | CreateUserBankAccountActionType | CurrencyConversionActionType | DeleteAccountStatementActionType | DeleteAutoTransferRuleActionType | DeleteBankAccountActionType | DeleteBillActionType | DeleteBillPayApprovalRuleActionType | DeleteCannedResponseActionType | DeleteChatSessionActionType | DeleteCombinedStatementActionType | DeleteFileActionType | DeleteFileListActionType | DeleteInternationalBankAccountActionType | DeletePaymentInstrumentActionType | DeletePersonActionType | DeleteRemiActionType | DeleteRemiApprovalRuleActionType | DeleteScheduleAccruedDetailActionType | DeleteScheduleDetailActionType | DeleteTagActionType | DeleteTaskActionType | DeleteTaskGroupActionType | DeleteTransactionAttachmentActionType | DeleteUserBankAccountActionType | DepositAccountTransactionListActionType | DisableAccountingProjectsActionType | DismissCapitalizationOnboardingActionType | DoMagicLinkSignInActionType | DownloadAccountingProviderAttachmentActionType | DragNDropTasksActionType | EditInvoicingCatalogItemDetailViewActionType | EditInvoicingCouponDetailViewActionType | EditInvoicingCustomerDetailViewActionType | EditInvoicingSubscriptionDetailViewActionType | EnableAccountingProjectsActionType | EnableChargeCardAutoPayActionType | EnableSetupActionType | EstablishOnboardingPlaidConnectionActionType | EstablishPlaidConnectionActionType | ExcludeAccountFromReconciliationActionType | ExpressInterestChargeCardActionType | ExpressPayActionType | ExtractPolicyDocumentActionType | FetchAccountHistoryActionType | FetchAccountListActionType | FetchAccountListForAccountTypesActionType | FetchAccountSettingsListForAccountTypesActionType | FetchAccruedScheduleListActionType | FetchActiveTenantActionType | FetchAddressActionType | FetchAggregatedReportActionType | FetchAiAccountantCustomersActionType | FetchAiAccountantJobsActionType | FetchAiAgentsActivationStatusActionType | FetchAllCockpitViewsActionType | FetchAllExpenseAutomationTabsActionType | FetchAllPeopleRequiredActionType | FetchAllTagsActionType | FetchAllTaskGroupsActionType | FetchAllTenantsActionType | FetchApAgingActionType | FetchApAgingDetailActionType | FetchArAgingActionType | FetchArAgingDetailActionType | FetchAuditReportGroupViewActionType | FetchAuditRuleGroupViewActionType | FetchAutoTransferReviewDetailActionType | FetchAutoTransferRuleHistoryActionType | FetchAutoTransferRulesActionType | FetchBankAccountsListActionType | FetchBankConnectionsViewActionType | FetchBankCountryNameByIbanActionType | FetchBankNameByRoutingActionType | FetchBankNameBySwiftActionType | FetchBillAndInitializeLocalStoreActionType | FetchBillDetailActionType | FetchBillingAccountsListActionType | FetchBillListActionType | FetchBillListPerTabActionType | FetchBillPayApproversDetailsActionType | FetchBillPayApproversListActionType | FetchBillPayCardActionType | FetchBillPayConfigActionType | FetchBillPaySetupApproverViewActionType | FetchBillPaySetupViewActionType | FetchBillRecommendationsActionType | FetchBulkUploadBatchDetailsActionType | FetchBulkUploadBatchesActionType | FetchCannedResponsesActionType | FetchCardPolicyDetailActionType | FetchCardPolicyListActionType | FetchCardPolicyMccCategoriesActionType | FetchCardPolicyVendorOptionsActionType | FetchCardProfilesActionType | FetchCashbackDetailActionType | FetchChargeCardConfigActionType | FetchChargeCardDetailActionType | FetchChargeCardDetailPageActionType | FetchChargeCardListActionType | FetchChargeCardListPageActionType | FetchChargeCardPaymentHistoryActionType | FetchChargeCardPaymentPageActionType | FetchChargeCardRepaymentDetailActionType | FetchChargeCardSetupViewActionType | FetchChargeCardsRecurringExpensesActionType | FetchChargeCardStatementListActionType | FetchChargeCardTransactionAttachmentsActionType | FetchChargeCardTransactionListActionType | FetchChargeCardTransactionStatisticsActionType | FetchChatHistoryActionType | FetchChatSessionsForUserActionType | FetchClassListActionType | FetchCoachmarkPreferencesActionType | FetchCockpitContextActionType | FetchCollaborationAuthTokenActionType | FetchCompanyBillingAddressActionType | FetchCompanyConfigActionType | FetchCompanyHealthMetricConfigViewEpicActionType | FetchCompanyHealthMetricViewEpicActionType | FetchCompanyManagementActionType | FetchCompanyMetaDataActionType | FetchCompanyMonthEndReportHistoricDataActionType | FetchCompanyMonthEndReportHistoricDatesActionType | FetchCompanyMonthEndReportTemplatesActionType | FetchCompanyMonthEndReportViewActionType | FetchCompanyOnboardingViewActionType | FetchCompanyPassportViewActionType | FetchCompanyPortfolioActionType | FetchCompanyTaskManagerViewActionType | FetchCompletedTransactionsActionType | FetchCreateInvoiceFormPageActionType | FetchCreditAccountActionType | FetchCreditAccountRepaymentActionType | FetchCreditAgentMacroActionType | FetchCurrencyConversionValueActionType | FetchCustomerSummaryDetailActionType | FetchCustomerSummaryListActionType | FetchDashboardActionType | FetchDashboardLayoutActionType | FetchDebitCardSummaryActionType | FetchDepositAccountActionType | FetchDepositAccountDetailActionType | FetchDepositAccountLimitActionType | FetchDepositAccountListActionType | FetchDepositAccountListForCardsActionType | FetchDepositAccStatementListActionType | FetchDownloadSchedulesActionType | FetchDuplicateBillActionType | FetchDuplicateReimbursementEpicActionType | FetchEditBillDetailPageActionType | FetchEditRemiDetailPageActionType | FetchEligibleActionsForBillActionType | FetchEntityAutoCompleteActionType | FetchEntityHistoryActionType | FetchEntityRecommendationsByTransactionIdActionType | FetchEntityRecommendationsForLineUpdateActionType | FetchExcludedResourcesActionType | FetchExpenseAutomationActualMatchingActionType | FetchExpenseAutomationActualMatchingMatchActionType | FetchExpenseAutomationActualMatchingPageActionType | FetchExpenseAutomationFailedJePostingsActionType | FetchExpenseAutomationFluxAnalysisActionType | FetchExpenseAutomationInitializeTransactionCategorizationViewLocalDataActionType | FetchExpenseAutomationJEScheduleActionType | FetchExpenseAutomationJESchedulePageActionType | FetchExpenseAutomationMarkTransactionAsNotMiscategorizedActionType | FetchExpenseAutomationMissingReceiptsActionType | FetchExpenseAutomationReconciliationsViewActionType | FetchExpenseAutomationSaveTransactionCategorizationActionType | FetchExpenseAutomationTransactionCategorizationActionType | FetchExpenseAutomationTransactionCategorizationViewActionType | FetchExpenseAutomationUpdateTransactionCategorizationEpicActionType | FetchExpenseTrendActionType | FetchExternalConnectionsActionType | FetchFileActionType | FetchFileListActionType | FetchForecastListActionType | FetchGlobalMerchantAutoCompleteActionType | FetchGlobalMerchantRecommendationActionType | FetchIncomeTrendActionType | FetchInternationalWireDynamicFormActionType | FetchIntlVerificationFormActionType | FetchInvoiceCountsActionType | FetchInvoiceDetailActionType | FetchInvoiceKPIsActionType | FetchInvoiceListActionType | FetchInvoiceListPageActionType | FetchIssueCardPageActionType | FetchMagicLinkBankNameByRoutingActionType | FetchMagicLinkBankNameBySwiftActionType | FetchMagicLinkBillActionType | FetchMagicLinkTenantActionType | FetchManagementActionType | FetchMerchantListActionType | FetchMonthClosePerformanceTrendActionType | FetchMonthEndCloseChecksActionType | FetchMoreBatchDetailsActionType | FetchMultipleBatchDetailsActionType | FetchMyProfileActionType | FetchMyProfileViewActionType | FetchNetBurnOrIncomeStoryCardActionType | FetchNetBurnOrIncomeWithForecastActionType | FetchNotificationSettingsActionType | FetchNotificationSettingsViewActionType | FetchNotificationUnreadCountActionType | FetchNotificationViewActionType | FetchOnboardingActionType | FetchOnboardingCompletedCompaniesActionType | FetchOnboardingCustomerSetupViewActionType | FetchOnboardingCustomerViewActionType | FetchOneTimeAccrualActionType | FetchOpExWithForecastActionType | FetchOwnerListActionType | FetchParentSubsidiaryManagementActionType | FetchPaymentAccountBalanceActionType | FetchPaymentAccountListActionType | FetchPaymentSourcesActionType | FetchPortfolioActionType | FetchPortfolioAllocationActionType | FetchPreviousBillsActionType | FetchProjectListActionType | FetchQBOConnectionPoolActionType | FetchRecommendationByEntityIdActionType | FetchRecommendationByEntityNameActionType | FetchRecommendationsAndUpdateMerchantRecommendationsActionType | FetchRecommendationsAndUpdateVendorRecommendationsActionType | FetchRecommendedBillExpenseActionType | FetchReconciliationReportActionType | FetchReferralsActionType | FetchRegisteredInterestsActionType | FetchReimbursementCardActionType | FetchReimbursementConfigActionType | FetchRemiAndInitializeLocalStoreActionType | FetchRemiApproversDetailsActionType | FetchRemiApproversListActionType | FetchRemiDetailActionType | FetchRemiListActionType | FetchRemiListPerTabActionType | FetchRemiSetupApproverViewActionType | FetchRemiSetupViewActionType | FetchRevenueWithForecastActionType | FetchReviewCompanyActionType | FetchReviewTransferDetailActionType | FetchRewardsPlanActionType | FetchScheduleAccruedDetailsActionType | FetchScheduleAccruedDetailsPageActionType | FetchScheduleDetailsActionType | FetchScheduleDetailsPageActionType | FetchScheduleListActionType | FetchSchedulesListActionType | FetchSkillsActionType | FetchSubscriptionActionType | FetchSubscriptionAddOnsActionType | FetchSubscriptionCouponsActionType | FetchSubscriptionCreateEstimateActionType | FetchSubscriptionDetailsActionType | FetchSubscriptionListActionType | FetchSubscriptionPlansActionType | FetchSubscriptionSummaryForTenantActionType | FetchSubscriptionUpdateEstimateActionType | FetchSubTasksActionType | FetchSuggestedQuestionsActionType | FetchTaskCategoriesActionType | FetchTaskDetailActionType | FetchTaskDetailPageActionType | FetchTaskGroupTemplatesActionType | FetchTaskHistoryActionType | FetchTaskListActionType | FetchTaskListPageActionType | FetchTaskManagerMetricsActionType | FetchTasksCardActionType | FetchTimeEntriesActionType | FetchTransactionActivityLogActionType | FetchTransactionDetailActionType | FetchTransactionListByAccountActionType | FetchTransactionListByClassActionType | FetchTransactionListByEntityActionType | FetchTransactionListByProjectActionType | FetchTransactionsForEntityActionType | FetchTransactionsListByCategoryTypeActionType | FetchTransferAccountsActionType | FetchTreasuryDetailActionType | FetchTreasuryFundsActionType | FetchTreasuryHistoryActionType | FetchTreasurySetupViewActionType | FetchTreasuryStatementListActionType | FetchTreasuryTaxLetterListActionType | FetchTreasuryTransactionListActionType | FetchTrendForEntityActionType | FetchUserDetailActionType | FetchUserFinancialAccountActionType | FetchUserListByTypeActionType | FetchUserRoleConfigActionType | FetchVendor1099TypeListActionType | FetchVendorActionType | FetchVendorAndUpdateBillLocalDataActionType | FetchVendorByNameAndParseInvoiceActionType | FetchVendorDetailsActionType | FetchVendorFirstReviewAttachmentsActionType | FetchVendorFirstReviewViewActionType | FetchVendorGlobalReviewViewActionType | FetchVendorRecommendationsForCreateTransactionActionType | FetchVendorsActionType | FetchVendorsFiling1099ActionType | FetchVendorsFiling1099AllActionType | FetchVendorsFiling1099DownloadActionType | FetchVendorTabViewActionType | FetchVendorTypeListActionType | FetchZeniAccountListPageActionType | FetchZeniAccountsConfigActionType | FetchZeniAccountSetupViewActionType | FetchZeniAccStatePageActionType | FetchZeniUsersActionType | GetOnboardingEmailGroupActionType | GetOnboardingPlaidLinkTokenActionType | GetPaymentAccountsActionType | GetPlaidLinkTokenActionType | IgnoreActualMatchingSuggestionActionType | IgnoreExpenseAutomationJEScheduleActionType | ImproveUsingZeniGPTActionType | IncludeAccountInReconciliationActionType | InitialiseExpenseAutomationLocalDataForSelectedAccountIdActionType | InitializeAccountMappingViewActionType | InitializeAccountSettingsViewEpicActionType | InitializeBillPaySetupApproverViewUpdateDataActionType | InitializeBillToLocalStoreActionType | InitializeCardUserOnboardingLocalDataActionType | InitializeCompanyHealthMetricViewLocalDataEpicActionType | InitializeCreateTransactionLocalDataActionType | InitializeEditPersonActionType | InitializeExpenseAutomationJeScheduleLocalDataActionType | InitializeInternationalWireLocalDataActionType | InitializeIntlVerificationFormEpicActionType | InitializeMyProfileLocalDataActionType | InitializeNewScheduleActionType | InitializeOnboardingCustomerViewUpdateDataActionType | InitializeRemiSetupApproverViewUpdateDataActionType | InitializeRemiToLocalStoreActionType | InitializeScheduleAccruedDetailLocalDataActionType | InitializeScheduleDetailLocalDataActionType | InitializeSubscriptionLocalDataActionType | InitializeTaskToLocalStoreActionType | InitializeTransactionDetailLocalDataActionType | InitializeVendorAddressActionType | InitiateChargeCardRepaymentActionType | InitiateReportsClassViewRefetchingActionType | InitiateReportsProjectViewRefetchingActionType | InsightsCardActionType | InvitePeopleActionType | InviteZeniPeopleActionType | InvoiceDetailPageActionType | InvoicingAuditViewActionType | InvoicingCatalogItemDetailFetchActionType | InvoicingCatalogItemDetailPageActionType | InvoicingCatalogItemFormDraftSeedActionType | InvoicingCatalogListViewActionType | InvoicingCatalogPlanActionActionType | InvoicingCatalogProductActionActionType | InvoicingConfigViewActionType | InvoicingCouponDetailFetchActionType | InvoicingCouponDetailPageActionType | InvoicingCouponFormDraftSeedActionType | InvoicingCouponViewActionType | InvoicingCreditNoteDetailViewActionType | InvoicingCreditNoteListViewActionType | InvoicingCustomerDetailPageActionType | InvoicingCustomerFormDraftSeedActionType | InvoicingCustomerListViewActionType | InvoicingCustomerPaymentMethodActionType | InvoicingCustomerRecordViewActionType | InvoicingDataImportViewActionType | InvoicingDiscountActionActionType | InvoicingDunningActionActionType | InvoicingDunningCaseDetailPageActionType | InvoicingDunningCaseDetailViewActionType | InvoicingDunningCaseListViewActionType | InvoicingInvoiceActionActionType | InvoicingOverviewActionType | InvoicingPaymentActionActionType | InvoicingPaymentLinkEmailPreviewActionType | InvoicingPaymentLinkEmailPreviewPageActionType | InvoicingPromotionalCreditActionActionType | InvoicingQboViewActionType | InvoicingSettingsViewActionType | InvoicingSubscriptionActionActionType | InvoicingSubscriptionDetailFetchActionType | InvoicingSubscriptionDetailPageActionType | InvoicingSubscriptionEstimateActionType | InvoicingSubscriptionFormDraftSeedActionType | InvoicingSubscriptionFormPageActionType | InvoicingSubscriptionListViewActionType | InvoicingTransactionDetailViewActionType | InvoicingTransactionListViewActionType | IssueChargeCardActionType | LockChargeCardActionType | LockChargeCardsActionType | MarkAsCompleteScheduleDetailActionType | MarkCoachmarkDismissedActionType | MarkTransactionAsNotMiscategorizedActionType | MatchAndReverseAccrualsActionType | NetBurnOrIncomeActionType | NetBurnOrIncomeClassesViewActionType | NetBurnOrIncomeForTimeframeActionType | NetBurnOrIncomeForTimeframeClassesViewActionType | NetBurnOrIncomeForTimeframeProjectViewActionType | NetBurnOrIncomeProjectViewActionType | NotifyMeForFeatureActionType | OneTimeAccrualActionsActionType | OpExActionType | OpExByVendorReportActionType | OpExByVendorReportForTimeframeActionType | OpExByVendorReportSummaryActionType | OpExClassesViewActionType | OpExForTimeframeClassesViewActionType | OpExForTimeframeProjectViewActionType | OpExForTimeframeViewActionType | OpExProjectViewActionType | ParallelFetchAccountTransactionListActionType | ParallelFetchClassTransactionListActionType | ParallelFetchEntityTransactionListActionType | ParallelFetchProjectTransactionListActionType | ParallelFetchTransactionListByCategoryTypeActionType | ParseCombinedStatementActionType | ParseInvoiceToBillActionType | ParseReceiptsToRemiActionType | ParseStatementActionType | ParseUploadedKybDocumentActionType | ParseUploadedKycDocumentActionType | PeopleActionType | PeoplePageActionType | PeopleSaveUpdatesActionType | PolicyDocumentExtractionToRecommendationBridgeActionType | PolicyRecommendationFromUploadActionType | PrefetchOtherJeSchedulesTabActionType | ProfitAndLossActionType | ProfitAndLossClassesViewActionType | ProfitAndLossForTimeframeActionType | ProfitAndLossForTimeframeClassesViewActionType | ProfitAndLossForTimeframeProjectViewActionType | ProfitAndLossProjectViewActionType | PushToastNotificationActionType | RecommendationForAccountSettingsActionType | RecommendationForAccountTypeActionType | RecordPaymentActionType | RefetchCompletedTransactionsOnBulkUploadSortActionType | RefreshBatchDetailsForBatchIdActionType | RefreshExpenseAutomationCurrentTabActionType | RefreshIntegrationsDataActionType | RefreshOpExByVendorReportActionType | RejectVendorGlobalReviewActionType | ReorderBillPayApprovalRulesActionType | ReorderRemiApprovalRulesActionType | ReparseStatementActionType | ReportsResyncActionType | ResendCardInviteActionType | ResendInviteActionType | ResendOtpActionType | ResendReferralInviteActionType | ResendVerifyDeviceOTPActionType | ResetKycKybActionType | ResetTransactionVendorLocalDataActionType | ResetVendorDetailLocalDataActionType | RestoreAutomatchingActionType | ResumeEnableAccountingProjectsActionType | RetryBankAccountConnectionActionType | RetryBankAccountConnectionForOnboardingActionType | RetryExpenseAutomationJEScheduleActionType | RetryOrRefundBillActionType | RevenueActionType | RevenueClassesViewActionType | RevenueForTimeframeClassesViewActionType | RevenueForTimeframeProjectViewActionType | RevenueForTimeframeViewActionType | RevenueProjectViewActionType | RevertJeScheduleActionType | ReviewDraftRemisBulkActionActionTye | ReviewExpenseAutomationFluxAnalysisActionType | RevokeCardInviteActionType | RevokeChargeCardsInviteActionType | SaveAccountMappingViewActionType | SaveAccountSettingsViewEpicActionType | SaveAddressActionType | SaveBillDetailActionType | SaveBillPaySetupApproverViewUpdatesActionType | SaveCannedResponseActionType | saveCardOnboardingUserDetailsActionType | SaveCompanyBillingAddressActionType | SaveCompanyHealthMetricByIdEpicActionType | SaveCompanyMonthEndReportActionType | SaveCompanyPassportDetailsActionType | SaveCreditAgentMacroActionType | SaveCustomerSummaryDetailActionType | SaveExpenseAutomationReconciliationDetailActionType | SaveExternalConnectionActionType | SaveMagicLinkBankAccountActionType | SaveNewScheduleActionType | SaveNotificationPreferencesActionType | SaveNotificationSettingsEpicActionType | SaveOnboardingCustomerCompletedStatusActionType | SaveOnboardingCustomerNotesActionType | SaveOnboardingCustomerViewUpdatesActionType | SaveRealTimeApprovalActionType | SaveReasonForAuditRuleActionType | SaveReconciliationReviewActionType | SaveRemiDetailActionType | SaveRemiSetupApproverViewUpdatesActionType | SaveScheduleAccruedDetailsActionType | SaveScheduleDetailsActionType | SaveSubscriptionNotesUpdatesActionType | SaveSubscriptionUpdatesActionType | SaveTaskDetailActionType | SaveTranactionVendorActionType | SaveTransactionDetailActionType | SaveVendorActionType | SaveVendorDetailsViewActionType | SaveVendorFirstReviewViewActionType | ScheduleTenantCreditScoreCronActionType | SearchMatchAccrualsActionType | SearchMatchTransactionsActionType | SearchTransactionsForManualMatchActionType | SearchTransactionsForNewScheduleActionType | SeedAiCardCreationFormDraftActionType | SeedAiCardPolicyFormDraftActionType | SendCompanyMonthEndReportActionType | SendEmailMagicLinkToUserActionType | SendOnboardingCustomerViewInviteActionType | SendOtpActionType | SendReferralInviteActionType | SessionHeartbeatActionType | SignInActionType | SignOutActionType | SnoozeTaskActionType | StatementCloseDayActionType | StopSubmitActionType | StopSubmitQuestionActionType | SubmitDraftBillsBulkActionActionType | SubmitDraftRemisBulkActionActionType | SubmitExpressPayActionType | SubmitFeedbackActionType | SubmitIntlVerificationActionType | SubmitQuestionActionType | SubmitRecommendationFeedbackActionType | SwitchExpenseAutomationJESchedulesTabActionType | SyncInvoicingSubscriptionCouponsActionType | SyncTabsAfterAutomatchActionType | ToggleReportUIOptionForecastModeActionType | TopExActionType | TransferMoneyActionType | TreasuryTransferMoneyActionType | TriggerAiAccountantJobActionType | TriggerReviewTabRefetchActionType | UndoReversalAccrualsActionType | UnlinkPaymentAccountActionType | UnlockChargeCardActionType | UnlockChargeCardsActionType | UnsnoozeTaskActionType | UpdateAccountingClassesEnabledActionType | UpdateAccruedJESchedulesActionType | UpdateAddressActionType | UpdateAmountsInScheduleAccruedDetailActionType | UpdateAmountsInScheduleDetailActionType | UpdateAutoReviewIncomeWithoutCustomerActionType | UpdateAutoTransferRuleActionType | UpdateBusinessVerificationDetailsActionType | UpdateCapitalizationAccountThresholdActionType | UpdateCardPolicyActionType | UpdateCardProfileActionType | UpdateChargeCardDetailActionType | UpdateChargeCardLimitActionType | UpdateChargeCardNameActionType | UpdateChargeCardsLimitActionType | UpdateCombinedStatementInfoActionType | UpdateCompanyDetailsActionType | UpdateCompanyOfficerActionType | UpdateCompanyPassportLocalStoreDataActionType | UpdateCompanyProductServicesActionType | UpdateCompanyQboRealmIdActionType | UpdateCompanyTaskManagerViewFiltersActionType | UpdateDashboardLayoutActionType | UpdateDebitCardPinAttemptActionType | UpdateDepositAccountActionType | UpdateDynamicFormActionType | UpdateExpenseAutomationReconciliationBalanceLocalDataActionType | UpdateFileNameActionType | UpdateFilesMetadataActionType | UpdateJESchedulesActionType | UpdateMappedCashAccountActionType | UpdateMileageDetailsActionType | UpdateMyProfileActionType | UpdateNetBurnOrIncomeStoryCardSettingsActionType | UpdateNotificationViewAllNotificationsStatusActionType | UpdateNotificationViewNotificationStatusActionType | UpdateOnboardingCustomerViewActionType | UpdateOnboardingCustomerViewCompleteStatusActionType | UpdateOnboardingCustomerViewDashboardLoadedActionType | UpdateOnboardingCustomerViewLocalStoreDataActionType | UpdateOnboardingPaymentAccountLoginStatusActionType | UpdateOnboardingPaymentAccountStatusActionType | UpdatePaymentAccountActionType | UpdatePaymentAccountLoginStatusActionType | UpdatePaymentAccountStatusActionType | UpdatePhysicalChargeCardAttemptActionType | UpdatePortfolioAllocationActionType | UpdatePrimaryContactActionType | UpdatePrimaryFundingAccountActionType | UpdateQBOConnectionPoolExternalConnectionActionType | UpdateReferViewedActionType | UpdateRemiSetupViewLocalStoreDataActionType | UpdateReportUIOptionCOABalancesRangeActionType | UpdateReportUIOptionIsCompareModeActionType | UpdateReportUIOptionIsCompareModeOnActionType | UpdateReportUIOptionThisPeriodActionType | UpdateReportUIOptionTimeFrameActionType | UpdateSectionAccountsViewActionType | UpdateSectionClassesViewV2ActionType | UpdateSectionProjectViewActionType | UpdateSelectedVendorForCreateFlowActionType | UpdateSetupViewLocalStoreDataActionType | UpdateStatementInfoActionType | UpdateTaskFromListViewActionType | UpdateTaskGroupNameActionType | UpdateTransactionDetailActionType | UpdateTransactionOnUploadSuccessActionType | UpdateVendorContactActionType | UploadAccountStatementActionType | UploadMissingReceiptSuccessEpicActionType | UploadTransactionReceiptSuccessEpicActionType | ValidateBillsBulkActionActionType | VendorFiling1099UploadDetailsSaveActionType | VendorsTabFetchVendorActionType | VendorsTabFetchVendorDetailPageViewActionType | VendorsTabFetchVendorDetailsActionType | VendorsTabResetVendorDetailLocalDataActionType | VendorsTabSaveVendorActionType | VerifyDeviceWithTwoFAActionType | VerifyOtpActionType | VerifyUserActionType | WatchBulkUploadBatchStatusActionType | WiseRedirectActionType | WriteTimeEntryActionType;
|
|
720
723
|
export declare const featureRootEpic: Epic<RootActionType>;
|
package/lib/epic.js
CHANGED
|
@@ -734,6 +734,9 @@ const dragNDropTasksEpic_1 = require("./view/taskManager/taskListView/epics/drag
|
|
|
734
734
|
const fetchTaskListEpic_1 = require("./view/taskManager/taskListView/epics/fetchTaskListEpic");
|
|
735
735
|
const fetchTaskListPageEpic_1 = require("./view/taskManager/taskListView/epics/fetchTaskListPageEpic");
|
|
736
736
|
const updateTaskFromListViewEpic_1 = require("./view/taskManager/taskListView/epics/updateTaskFromListViewEpic");
|
|
737
|
+
const fetchTaskCategoriesEpic_1 = require("./view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic");
|
|
738
|
+
const fetchTimeEntriesEpic_1 = require("./view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic");
|
|
739
|
+
const writeTimeEntryEpic_1 = require("./view/taskManager/timeEntryView/epic/writeTimeEntryEpic");
|
|
737
740
|
const fetchTasksCardEpic_1 = require("./view/tasksCard/fetchTasksCardEpic");
|
|
738
741
|
const topExEpic_1 = require("./view/topEx/topExEpic");
|
|
739
742
|
const fetchTransactionActivityLogEpic_1 = require("./view/transactionActivityLogView/fetchTransactionActivityLogEpic");
|
|
@@ -885,6 +888,7 @@ const ALL_EPICS = [
|
|
|
885
888
|
deleteTagEpic_1.deleteTagEpic,
|
|
886
889
|
deleteTaskEpic_1.deleteTaskEpic,
|
|
887
890
|
deleteTaskGroupEpic_1.deleteTaskGroupEpic,
|
|
891
|
+
writeTimeEntryEpic_1.deleteTimeEntryEpic,
|
|
888
892
|
deleteTransactionAttachmentEpic_1.deleteTransactionAttachmentEpic,
|
|
889
893
|
deleteUserBankAccountEpic_1.deleteUserBankAccountEpic,
|
|
890
894
|
disableAccountingProjectsEpic_1.disableAccountingProjectsEpic,
|
|
@@ -1236,6 +1240,7 @@ const ALL_EPICS = [
|
|
|
1236
1240
|
fetchSubscriptionViewEpic_1.fetchSubscriptionViewEpic,
|
|
1237
1241
|
fetchSubTasksEpic_1.fetchSubTasksEpic,
|
|
1238
1242
|
fetchSuggestedQuestionsEpic_1.fetchSuggestedQuestionsEpic,
|
|
1243
|
+
fetchTaskCategoriesEpic_1.fetchTaskCategoriesEpic,
|
|
1239
1244
|
fetchTaskDetailEpic_1.fetchTaskDetailEpic,
|
|
1240
1245
|
fetchTaskDetailPageEpic_1.fetchTaskDetailPageEpic,
|
|
1241
1246
|
fetchTaskGroupTemplatesEpic_1.fetchTaskGroupTemplatesEpic,
|
|
@@ -1244,6 +1249,8 @@ const ALL_EPICS = [
|
|
|
1244
1249
|
fetchTaskListPageEpic_1.fetchTaskListPageEpic,
|
|
1245
1250
|
fetchTaskManagerMetricsEpic_1.fetchTaskManagerMetricsEpic,
|
|
1246
1251
|
fetchTasksCardEpic_1.fetchTasksCardEpic,
|
|
1252
|
+
fetchTimeEntriesEpic_1.fetchTimeEntriesForRangeEpic,
|
|
1253
|
+
fetchTimeEntriesEpic_1.fetchTimeEntriesForTaskEpic,
|
|
1247
1254
|
topExEpic_1.fetchTopExEpic,
|
|
1248
1255
|
fetchTransactionActivityLogEpic_1.fetchTransactionActivityLogEpic,
|
|
1249
1256
|
transactionDetailEpic_1.fetchTransactionDetailEpic,
|
|
@@ -1336,6 +1343,7 @@ const ALL_EPICS = [
|
|
|
1336
1343
|
issueCreditNoteEpic_1.issueCreditNoteEpic,
|
|
1337
1344
|
lockChargeCardEpic_1.lockChargeCardEpic,
|
|
1338
1345
|
lockChargeCardsEpic_1.lockChargeCardsEpic,
|
|
1346
|
+
writeTimeEntryEpic_1.logTimeEpic,
|
|
1339
1347
|
markAsCompleteScheduleDetailEpic_1.markAsCompleteScheduleDetailEpic,
|
|
1340
1348
|
markCoachmarkDismissedEpic_1.markCoachmarkDismissedEpic,
|
|
1341
1349
|
markTransactionAsNotMiscategorizedEpic_2.markTransactionAsNotMiscategorizedEpic,
|
|
@@ -1561,6 +1569,7 @@ const ALL_EPICS = [
|
|
|
1561
1569
|
updateStatementInfoEpic_1.updateStatementInfoEpic,
|
|
1562
1570
|
updateTaskFromListViewEpic_1.updateTaskFromListViewEpic,
|
|
1563
1571
|
updateTaskGroupNameEpic_1.updateTaskGroupNameEpic,
|
|
1572
|
+
writeTimeEntryEpic_1.updateTimeEntryEpic,
|
|
1564
1573
|
updateTransactionDetailEpic_1.updateTransactionDetailEpic,
|
|
1565
1574
|
updateVendorContactEpic_1.updateVendorContactEpic,
|
|
1566
1575
|
uploadAccountStatementEpic_1.uploadAccountStatementEpic,
|
|
@@ -63,6 +63,7 @@ export const mapTaskPayloadToTask = (payload, previousTask) => ({
|
|
|
63
63
|
: undefined,
|
|
64
64
|
snoozedUntil: payload.snoozed_until != null ? date(payload.snoozed_until) : undefined,
|
|
65
65
|
taskGroupIds: payload.task_group_ids != null ? payload.task_group_ids : [],
|
|
66
|
+
taskCategoryId: payload.task_category_id ?? undefined,
|
|
66
67
|
timeSpent: payload.time_spent != null
|
|
67
68
|
? convertMinutesToHHMM(payload.time_spent)
|
|
68
69
|
: convertMinutesToHHMM(0),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
import { convertMinutesToHHMM } from '../../commonStateTypes/fiscalYearHelpers/formatMinutesToFromHHMM';
|
|
2
3
|
import { clearAll } from '../../rootActions';
|
|
3
4
|
import { mapTaskPayloadToTask } from './taskPayload';
|
|
4
5
|
export const initialState = {
|
|
@@ -23,6 +24,22 @@ const task = createSlice({
|
|
|
23
24
|
removeTask(draft, action) {
|
|
24
25
|
delete draft.taskByID[action.payload];
|
|
25
26
|
},
|
|
27
|
+
/**
|
|
28
|
+
* Set one task's rolled-up total from the minutes the time-entry API
|
|
29
|
+
* returns. A whole-task update is not available on that path -- the write
|
|
30
|
+
* response carries the recomputed minutes, not a TaskPayload -- and
|
|
31
|
+
* refetching the task just to learn one number would put a round trip on
|
|
32
|
+
* the keystroke that logged the time.
|
|
33
|
+
*
|
|
34
|
+
* No-op when the task is absent: the ancestors the server recomputed can
|
|
35
|
+
* include a parent that is not on screen and so not in the store.
|
|
36
|
+
*/
|
|
37
|
+
updateTaskTimeSpentMinutes(draft, action) {
|
|
38
|
+
const taskInStore = draft.taskByID[action.payload.taskId];
|
|
39
|
+
if (taskInStore != null) {
|
|
40
|
+
taskInStore.timeSpent = convertMinutesToHHMM(action.payload.minutes);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
26
43
|
appendSubTaskId(draft, action) {
|
|
27
44
|
const parentTask = draft.taskByID[action.payload.parentTaskId];
|
|
28
45
|
if (parentTask != null) {
|
|
@@ -53,5 +70,5 @@ const task = createSlice({
|
|
|
53
70
|
});
|
|
54
71
|
},
|
|
55
72
|
});
|
|
56
|
-
export const { updateTasks, updateTask, removeTask, appendSubTaskId, setSubTaskIds, } = task.actions;
|
|
73
|
+
export const { updateTasks, updateTask, removeTask, updateTaskTimeSpentMinutes, appendSubTaskId, setSubTaskIds, } = task.actions;
|
|
57
74
|
export default task.reducer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
import { clearAll } from '../../rootActions';
|
|
3
|
+
import { date } from '../../zeniDayJS';
|
|
4
|
+
import { toBillingType, toTimeEntrySource, } from './timeEntryState';
|
|
5
|
+
export const initialState = {
|
|
6
|
+
timeEntriesById: {},
|
|
7
|
+
taskCategoriesById: {},
|
|
8
|
+
};
|
|
9
|
+
const timeEntry = createSlice({
|
|
10
|
+
name: 'timeEntry',
|
|
11
|
+
initialState,
|
|
12
|
+
reducers: {
|
|
13
|
+
updateTimeEntries(draft, action) {
|
|
14
|
+
action.payload.forEach((payload) => {
|
|
15
|
+
const latest = mapTimeEntryPayloadToTimeEntry(payload);
|
|
16
|
+
const inStore = draft.timeEntriesById[latest.timeEntryId];
|
|
17
|
+
// Last-write-wins by updateTime, same as `address`. A weekly fetch and
|
|
18
|
+
// a single-entry edit can land in either order.
|
|
19
|
+
if (inStore == null || latest.updateTime.isAfter(inStore.updateTime)) {
|
|
20
|
+
draft.timeEntriesById[latest.timeEntryId] = latest;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
/** A soft delete comes back as a normal entry; the server has already
|
|
25
|
+
* dropped it from the totals, so the client drops it from the store
|
|
26
|
+
* rather than keeping a row it must then remember to filter. */
|
|
27
|
+
removeTimeEntry(draft, action) {
|
|
28
|
+
delete draft.timeEntriesById[action.payload];
|
|
29
|
+
},
|
|
30
|
+
updateTaskCategories(draft, action) {
|
|
31
|
+
action.payload.forEach((payload) => {
|
|
32
|
+
const category = mapTaskCategoryPayloadToTaskCategory(payload);
|
|
33
|
+
draft.taskCategoriesById[category.taskCategoryId] = category;
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
extraReducers: (builder) => {
|
|
38
|
+
builder.addCase(clearAll, (draft) => {
|
|
39
|
+
Object.assign(draft, initialState);
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
export const { updateTimeEntries, removeTimeEntry, updateTaskCategories } = timeEntry.actions;
|
|
44
|
+
export default timeEntry.reducer;
|
|
45
|
+
export function mapTimeEntryPayloadToTimeEntry(payload) {
|
|
46
|
+
return {
|
|
47
|
+
timeEntryId: payload.time_entry_id,
|
|
48
|
+
taskId: payload.task_id,
|
|
49
|
+
userId: payload.user_id,
|
|
50
|
+
minutes: payload.minutes,
|
|
51
|
+
entryDate: date(payload.entry_date),
|
|
52
|
+
source: toTimeEntrySource(payload.source),
|
|
53
|
+
createTime: date(payload.create_time),
|
|
54
|
+
updateTime: date(payload.update_time),
|
|
55
|
+
billingType: toBillingType(payload.billing_type),
|
|
56
|
+
createdBy: payload.created_by ?? undefined,
|
|
57
|
+
department: payload.department ?? undefined,
|
|
58
|
+
taskCategoryId: payload.task_category_id ?? undefined,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function mapTaskCategoryPayloadToTaskCategory(payload) {
|
|
62
|
+
return {
|
|
63
|
+
taskCategoryId: payload.task_category_id,
|
|
64
|
+
name: payload.name,
|
|
65
|
+
isActive: payload.is_active,
|
|
66
|
+
billingType: toBillingType(payload.billing_type),
|
|
67
|
+
service: payload.service ?? undefined,
|
|
68
|
+
vertical: payload.vertical ?? undefined,
|
|
69
|
+
};
|
|
70
|
+
}
|