@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.
Files changed (66) hide show
  1. package/lib/entity/task/taskPayload.d.ts +1 -0
  2. package/lib/entity/task/taskPayload.js +1 -0
  3. package/lib/entity/task/taskReducer.d.ts +4 -1
  4. package/lib/entity/task/taskReducer.js +19 -2
  5. package/lib/entity/task/taskState.d.ts +3 -0
  6. package/lib/entity/timeEntry/timeEntryPayload.d.ts +26 -0
  7. package/lib/entity/timeEntry/timeEntryPayload.js +2 -0
  8. package/lib/entity/timeEntry/timeEntryReducer.d.ts +8 -0
  9. package/lib/entity/timeEntry/timeEntryReducer.js +76 -0
  10. package/lib/entity/timeEntry/timeEntrySelector.d.ts +10 -0
  11. package/lib/entity/timeEntry/timeEntrySelector.js +32 -0
  12. package/lib/entity/timeEntry/timeEntryState.d.ts +43 -0
  13. package/lib/entity/timeEntry/timeEntryState.js +13 -0
  14. package/lib/epic.d.ts +4 -1
  15. package/lib/epic.js +9 -0
  16. package/lib/esm/entity/task/taskPayload.js +1 -0
  17. package/lib/esm/entity/task/taskReducer.js +18 -1
  18. package/lib/esm/entity/timeEntry/timeEntryPayload.js +1 -0
  19. package/lib/esm/entity/timeEntry/timeEntryReducer.js +70 -0
  20. package/lib/esm/entity/timeEntry/timeEntrySelector.js +23 -0
  21. package/lib/esm/entity/timeEntry/timeEntryState.js +8 -0
  22. package/lib/esm/epic.js +9 -0
  23. package/lib/esm/index.js +4 -1
  24. package/lib/esm/reducer.js +6 -0
  25. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +3 -0
  26. package/lib/esm/view/taskManager/taskListView/taskList.js +6 -0
  27. package/lib/esm/view/taskManager/taskListView/taskListFilterHelpers.js +7 -0
  28. package/lib/esm/view/taskManager/taskListView/taskListSelector.js +27 -11
  29. package/lib/esm/view/taskManager/taskListView/taskListViewHelpers.js +37 -0
  30. package/lib/esm/view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic.js +24 -0
  31. package/lib/esm/view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic.js +73 -0
  32. package/lib/esm/view/taskManager/timeEntryView/epic/writeTimeEntryEpic.js +77 -0
  33. package/lib/esm/view/taskManager/timeEntryView/timeEntryViewPayload.js +1 -0
  34. package/lib/esm/view/taskManager/timeEntryView/timeEntryViewReducer.js +160 -0
  35. package/lib/esm/view/taskManager/timeEntryView/timeEntryViewSelector.js +41 -0
  36. package/lib/esm/view/taskManager/timeEntryView/timeEntryViewState.js +1 -0
  37. package/lib/index.d.ts +5 -1
  38. package/lib/index.js +31 -16
  39. package/lib/reducer.d.ts +2 -0
  40. package/lib/reducer.js +6 -0
  41. package/lib/rootStateTypes.d.ts +4 -0
  42. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +4 -0
  43. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +3 -0
  44. package/lib/view/taskManager/taskListView/taskList.d.ts +1 -1
  45. package/lib/view/taskManager/taskListView/taskList.js +6 -0
  46. package/lib/view/taskManager/taskListView/taskListFilterHelpers.d.ts +4 -0
  47. package/lib/view/taskManager/taskListView/taskListFilterHelpers.js +9 -1
  48. package/lib/view/taskManager/taskListView/taskListSelector.d.ts +6 -3
  49. package/lib/view/taskManager/taskListView/taskListSelector.js +26 -10
  50. package/lib/view/taskManager/taskListView/taskListViewHelpers.d.ts +1 -1
  51. package/lib/view/taskManager/taskListView/taskListViewHelpers.js +37 -0
  52. package/lib/view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic.d.ts +18 -0
  53. package/lib/view/taskManager/timeEntryView/epic/fetchTaskCategoriesEpic.js +28 -0
  54. package/lib/view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic.d.ts +23 -0
  55. package/lib/view/taskManager/timeEntryView/epic/fetchTimeEntriesEpic.js +78 -0
  56. package/lib/view/taskManager/timeEntryView/epic/writeTimeEntryEpic.d.ts +23 -0
  57. package/lib/view/taskManager/timeEntryView/epic/writeTimeEntryEpic.js +83 -0
  58. package/lib/view/taskManager/timeEntryView/timeEntryViewPayload.d.ts +27 -0
  59. package/lib/view/taskManager/timeEntryView/timeEntryViewPayload.js +2 -0
  60. package/lib/view/taskManager/timeEntryView/timeEntryViewReducer.d.ts +48 -0
  61. package/lib/view/taskManager/timeEntryView/timeEntryViewReducer.js +164 -0
  62. package/lib/view/taskManager/timeEntryView/timeEntryViewSelector.d.ts +24 -0
  63. package/lib/view/taskManager/timeEntryView/timeEntryViewSelector.js +46 -0
  64. package/lib/view/taskManager/timeEntryView/timeEntryViewState.d.ts +21 -0
  65. package/lib/view/taskManager/timeEntryView/timeEntryViewState.js +5 -0
  66. package/package.json +1 -1
@@ -30,6 +30,7 @@ export interface TaskPayload {
30
30
  snoozed_until?: string | null;
31
31
  subtasks?: string[] | null;
32
32
  sync_token?: string | null;
33
+ task_category_id?: string | null;
33
34
  task_group_ids?: string[] | null;
34
35
  time_spent?: number;
35
36
  }
@@ -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">, appendSubTaskId: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
+ }