@zeniai/client-epic-state 4.14.5 → 4.14.6

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 (21) hide show
  1. package/lib/index.d.ts +2 -2
  2. package/lib/index.js +1 -1
  3. package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +7 -4
  4. package/lib/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +2 -1
  5. package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +1 -1
  6. package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +1 -1
  7. package/lib/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.js +3 -3
  8. package/lib/view/expenseAutomationView/epics/transactionCategorization/markTransactionAsNotMiscatgorizedEpic.js +1 -1
  9. package/lib/view/expenseAutomationView/epics/transactionCategorization/saveTransactionCategorizationEpic.js +1 -2
  10. package/lib/view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic.js +2 -1
  11. package/lib/view/expenseAutomationView/expenseAutomationViewReducer.d.ts +1 -3
  12. package/lib/view/expenseAutomationView/expenseAutomationViewReducer.js +2 -12
  13. package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +13 -12
  14. package/lib/view/expenseAutomationView/expenseAutomationViewState.d.ts +0 -2
  15. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -0
  16. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +102 -65
  17. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +1 -2
  18. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +20 -11
  19. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +4 -1
  20. package/lib/view/recommendation/fetchEntityRecommendationsByTransactionIdEpic.js +1 -1
  21. package/package.json +1 -1
package/lib/index.d.ts CHANGED
@@ -59,14 +59,14 @@ export { BalancesTimeseries, TrendTimeseries, BalanceKind };
59
59
  import { ExpenseAutomationFluxAnalysisViewSelector } from './view/expenseAutomationView/selectorTypes/fluxAnalysisViewSelectorTypes';
60
60
  import { MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState, MissingReceiptsViewUIState as ExpenseAutomationMissingReceiptsViewUIState } from './view/expenseAutomationView/types/missingReceiptsViewState';
61
61
  import { ExpenseAutomationMissingReceiptsViewSelector } from './view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes';
62
- import { fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateCurrentSelectedView, updateCurrentSelectedPeriod } from './view/expenseAutomationView/expenseAutomationViewReducer';
62
+ import { fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedView, updateCurrentSelectedPeriod } from './view/expenseAutomationView/expenseAutomationViewReducer';
63
63
  import { fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
64
64
  import { MissingReceiptsSortKey as ExpenseAutomationMissingReceiptsSortKey, toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey } from './view/expenseAutomationView/types/missingReceiptsViewState';
65
65
  import { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
66
66
  import { getExpenseAutomationView } from './view/expenseAutomationView/expenseAutomationViewSelector';
67
67
  import { TransactionsTab as ExpenseAutomationTransactionsTab, toTransactionsTabKey as toExpenseAutomationTransactionsTabKey } from './view/expenseAutomationView/types/transactionsViewState';
68
68
  import { TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, TransactionsViewState as ExpenseAutomationTransactionsViewState, TransactionsViewUIState as ExpenseAutomationTransactionsViewUIState } from './view/expenseAutomationView/types/transactionsViewState';
69
- import { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdate, updateSelectedVendorForTransaction, clearExpenseAutomationTransactionsView } from './view/expenseAutomationView/reducers/transactionsViewReducer';
69
+ import { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdate, updateSelectedVendorForTransaction, clearExpenseAutomationTransactionsView, updateCurrentSelectedTransactionCategorizationTab } from './view/expenseAutomationView/reducers/transactionsViewReducer';
70
70
  import { ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView } from './view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes';
71
71
  import { getExpenseAutomationTransactionView } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
72
72
  import { EXPENSE_QBOID, INCOME_QBOID, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled } from './view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper';
package/lib/index.js CHANGED
@@ -128,7 +128,6 @@ Object.defineProperty(exports, "stringToUnionStrict", { enumerable: true, get: f
128
128
  const expenseAutomationViewReducer_1 = require("./view/expenseAutomationView/expenseAutomationViewReducer");
129
129
  Object.defineProperty(exports, "fetchAllExpenseAutomationTabs", { enumerable: true, get: function () { return expenseAutomationViewReducer_1.fetchAllExpenseAutomationTabs; } });
130
130
  Object.defineProperty(exports, "refreshExpenseAutomationCurrentTab", { enumerable: true, get: function () { return expenseAutomationViewReducer_1.refreshExpenseAutomationCurrentTab; } });
131
- Object.defineProperty(exports, "updateCurrentSelectedTransactionCategorizationTab", { enumerable: true, get: function () { return expenseAutomationViewReducer_1.updateCurrentSelectedTransactionCategorizationTab; } });
132
131
  Object.defineProperty(exports, "updateCurrentSelectedView", { enumerable: true, get: function () { return expenseAutomationViewReducer_1.updateCurrentSelectedView; } });
133
132
  Object.defineProperty(exports, "updateCurrentSelectedPeriod", { enumerable: true, get: function () { return expenseAutomationViewReducer_1.updateCurrentSelectedPeriod; } });
134
133
  const missingReceiptsViewReducer_1 = require("./view/expenseAutomationView/reducers/missingReceiptsViewReducer");
@@ -162,6 +161,7 @@ Object.defineProperty(exports, "markTransactionAsNotMiscategorized", { enumerabl
162
161
  Object.defineProperty(exports, "updateStatusForTransactionNotMiscategorizedUpdate", { enumerable: true, get: function () { return transactionsViewReducer_1.updateStatusForTransactionNotMiscategorizedUpdate; } });
163
162
  Object.defineProperty(exports, "updateSelectedVendorForTransaction", { enumerable: true, get: function () { return transactionsViewReducer_1.updateSelectedVendorForTransaction; } });
164
163
  Object.defineProperty(exports, "clearExpenseAutomationTransactionsView", { enumerable: true, get: function () { return transactionsViewReducer_1.clearExpenseAutomationTransactionsView; } });
164
+ Object.defineProperty(exports, "updateCurrentSelectedTransactionCategorizationTab", { enumerable: true, get: function () { return transactionsViewReducer_1.updateCurrentSelectedTransactionCategorizationTab; } });
165
165
  const transactionCategorizationSelector_1 = require("./view/expenseAutomationView/selectors/transactionCategorizationSelector");
166
166
  Object.defineProperty(exports, "getExpenseAutomationTransactionView", { enumerable: true, get: function () { return transactionCategorizationSelector_1.getExpenseAutomationTransactionView; } });
167
167
  const transactionCategorizationLocalDataHelper_1 = require("./view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper");
@@ -16,7 +16,7 @@ const fetchAllExpenseAutomationTabsEpic = (actions$, state$) => actions$.pipe((0
16
16
  const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
17
17
  const companyId = currentTenant.companyId;
18
18
  const selectedPeriod = state.expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
19
- const { selectedTransactionCategorizationTab } = state.expenseAutomationViewState;
19
+ const { selectedTransactionCategorizationTab } = state.expenseAutomationTransactionsViewState;
20
20
  const period = (0, timePeriod_1.convertToPeriod)(selectedPeriod);
21
21
  const timePeriodStart = (0, timePeriod_1.toAbsoluteDay)(period.start);
22
22
  const timePeriodEnd = (0, timePeriod_1.toAbsoluteDay)(period.end);
@@ -68,9 +68,12 @@ const fetchAllExpenseAutomationTabsEpic = (actions$, state$) => actions$.pipe((0
68
68
  null)) {
69
69
  fetchActions.push((0, jeSchedulesViewReducer_1.fetchJeSchedulesPage)({ start: timePeriodStart, end: timePeriodEnd }, cacheOverride));
70
70
  }
71
- if (state.expenseAutomationTransactionsViewState[selectedTransactionCategorizationTab].fetchState !== 'In-Progress' &&
72
- (state.expenseAutomationTransactionsViewState[selectedTransactionCategorizationTab].hasValidState() === false ||
73
- state.expenseAutomationTransactionsViewState[selectedTransactionCategorizationTab].transactionIdsBySelectedPeriod[monthYearPeriodId] == null)) {
71
+ if (state.expenseAutomationTransactionsViewState
72
+ .transactionCategorizationView[selectedTransactionCategorizationTab]
73
+ .fetchState !== 'In-Progress' &&
74
+ (state.expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab].hasValidState() === false ||
75
+ state.expenseAutomationTransactionsViewState
76
+ .transactionCategorizationView[selectedTransactionCategorizationTab].transactionIdsBySelectedPeriod[monthYearPeriodId] == null)) {
74
77
  fetchActions.push((0, transactionsViewReducer_1.fetchTransactionCategorizationView)(selectedTransactionCategorizationTab, { start: timePeriodStart, end: timePeriodEnd }, cacheOverride, false, undefined, undefined, refreshViewInBackground));
75
78
  }
76
79
  return (0, rxjs_1.from)(fetchActions);
@@ -15,7 +15,8 @@ const refreshExpenseAutomationCurrentTabEpic = (actions$, state$) => actions$.pi
15
15
  const state = state$.value;
16
16
  const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
17
17
  const companyId = currentTenant.companyId;
18
- const { selectedPeriodByTenantId, currentSelectedView, selectedTransactionCategorizationTab, } = state.expenseAutomationViewState;
18
+ const { selectedTransactionCategorizationTab } = state.expenseAutomationTransactionsViewState;
19
+ const { selectedPeriodByTenantId, currentSelectedView } = state.expenseAutomationViewState;
19
20
  const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
20
21
  const period = (0, timePeriod_1.convertToPeriod)(selectedPeriod);
21
22
  const timePeriodStart = (0, timePeriod_1.toAbsoluteDay)(period.start);
@@ -12,7 +12,7 @@ const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
12
12
  const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.fetchTransactionCategorization.match), (0, operators_1.switchMap)((action) => {
13
13
  const { expenseAutomationViewState: { selectedPeriodByTenantId }, expenseAutomationTransactionsViewState, } = state$.value;
14
14
  const { period, keepExistingListItems, selectedTab, refreshViewInBackground, } = action.payload;
15
- const uiState = expenseAutomationTransactionsViewState[selectedTab].uiState;
15
+ const uiState = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTab].uiState;
16
16
  const { pageToken, sortOrder, sortKey } = uiState;
17
17
  const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state$.value);
18
18
  const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
@@ -12,7 +12,7 @@ const fetchTransactionCategorizationViewEpic = (actions$, state$) => actions$.pi
12
12
  const { selectedTab, cacheOverride, keepExistingListItems, pageToken, period, refreshViewInBackground, searchString, resetListItems, } = action.payload;
13
13
  const updateActions = [];
14
14
  const { expenseAutomationTransactionsViewState } = state$.value;
15
- const { fetchState, transactionIdsBySelectedPeriod } = expenseAutomationTransactionsViewState[selectedTab];
15
+ const { fetchState, transactionIdsBySelectedPeriod } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTab];
16
16
  const monthYearPeriod = {
17
17
  month: period.start.month,
18
18
  year: period.start.year,
@@ -10,9 +10,9 @@ const transactionCategorizationLocalDataHelper_1 = require("../../helpers/transa
10
10
  const initializeTransactionCategorizationViewLocalDataEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.initializeTransactionCategorizationViewLocalData.match), (0, operators_1.mergeMap)((action) => {
11
11
  const { transactionIds, selectedPeriod, keepExistingListItems, selectedTab, pageToken, totalCount, refreshViewInBackground, } = action.payload;
12
12
  const fetchActions = [];
13
- const { transactionState, expenseAutomationTransactionsViewState, expenseAutomationViewState, } = state$.value;
14
- const { selectedTransactionCategorizationTab } = expenseAutomationViewState;
15
- const { transactionReviewLocalDataById } = expenseAutomationTransactionsViewState[selectedTransactionCategorizationTab];
13
+ const { transactionState, expenseAutomationTransactionsViewState } = state$.value;
14
+ const { selectedTransactionCategorizationTab } = expenseAutomationTransactionsViewState;
15
+ const { transactionReviewLocalDataById } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
16
16
  const transactionLocalData = Object.assign({}, transactionReviewLocalDataById);
17
17
  const transactions = (0, transactionSelector_1.getSupportedTransactionsByIds)(transactionState, transactionIds);
18
18
  transactions.forEach((transaction) => {
@@ -17,7 +17,7 @@ const markTransactionAsNotMiscategorizedEpic = (actions$, state$, zeniAPI) => ac
17
17
  const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state$.value);
18
18
  const selectedPeriod = expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
19
19
  const { selectedTab } = action.payload;
20
- const { uiState } = expenseAutomationTransactionsViewState[selectedTab];
20
+ const { uiState } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTab];
21
21
  if (transactionsInReview.length > 0) {
22
22
  return zeniAPI
23
23
  .putAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/mark-as-reviewed`, { transactions_reviewed: transactionsInReview })
@@ -18,8 +18,7 @@ const saveTransactionCategorizationEpic = (actions$, state$) => actions$.pipe((0
18
18
  const transactionSaveUpdates = [];
19
19
  const transactions = (0, transactionSelector_1.getSupportedTransactionsByIds)(transactionState, transactionIds);
20
20
  transactions.forEach((transaction) => {
21
- const detail = (0, get_1.default)(expenseAutomationTransactionsViewState[selectedTab]
22
- .transactionReviewLocalDataById, transaction.id, undefined);
21
+ const detail = (0, get_1.default)(expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTab].transactionReviewLocalDataById, transaction.id, undefined);
23
22
  const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(state$.value.accountState, state$.value.accountListState, 'accountList');
24
23
  const localData = detail === null || detail === void 0 ? void 0 : detail.transactionReviewLocalData;
25
24
  if (localData != null) {
@@ -42,7 +42,8 @@ exports.updateTransactionCategorizationEpic = updateTransactionCategorizationEpi
42
42
  function prepareTransactionPayload(selectedTab, transactionState, vendorState, transactionsViewState, transactionId, saveUpdates) {
43
43
  var _a;
44
44
  const detail = (0, transactionSelector_1.getSupportedTransactionById)(transactionState, transactionId);
45
- const tranDetail = (0, get_1.default)(transactionsViewState[selectedTab].transactionReviewLocalDataById, transactionId, undefined);
45
+ const tranDetail = (0, get_1.default)(transactionsViewState.transactionCategorizationView[selectedTab]
46
+ .transactionReviewLocalDataById, transactionId, undefined);
46
47
  const tranVendorUpdates = (_a = tranDetail === null || tranDetail === void 0 ? void 0 : tranDetail.transactionReviewLocalData) === null || _a === void 0 ? void 0 : _a.vendorUpdates;
47
48
  let vendorUpdates = undefined;
48
49
  if ((tranVendorUpdates === null || tranVendorUpdates === void 0 ? void 0 : tranVendorUpdates.qboId) != null) {
@@ -12,8 +12,6 @@ export declare const fetchAllExpenseAutomationTabs: import("@reduxjs/toolkit").A
12
12
  newSelectedView: "transaction_categorization" | "je_schedules" | "account_recon" | "missing_receipts" | "flux_analysis" | "month_end_insights";
13
13
  }, string, never, never>, clearExpenseAutomationView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, initializeSelectedPeriodForTenants: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
14
14
  selectedPeriodByTenantId: Record<ID, MonthYearPeriod>;
15
- }, string>, refreshExpenseAutomationCurrentTab: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, updateCurrentSelectedTransactionCategorizationTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newSelectedTab: "review" | "autoCategorized"], {
16
- newSelectedTab: "review" | "autoCategorized";
17
- }, string, never, never>;
15
+ }, string>, refreshExpenseAutomationCurrentTab: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
18
16
  declare const _default: import("@reduxjs/toolkit").Reducer<ExpenseAutomationViewState, import("@reduxjs/toolkit").AnyAction>;
19
17
  export default _default;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.updateCurrentSelectedTransactionCategorizationTab = exports.refreshExpenseAutomationCurrentTab = exports.initializeSelectedPeriodForTenants = exports.clearExpenseAutomationView = exports.updateCurrentSelectedView = exports.updateCurrentSelectedPeriod = exports.fetchAllExpenseAutomationTabs = exports.initialState = void 0;
4
+ exports.refreshExpenseAutomationCurrentTab = exports.initializeSelectedPeriodForTenants = exports.clearExpenseAutomationView = exports.updateCurrentSelectedView = exports.updateCurrentSelectedPeriod = exports.fetchAllExpenseAutomationTabs = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  exports.initialState = {
7
7
  saveStatus: { fetchState: 'Not-Started', error: undefined },
@@ -13,7 +13,6 @@ exports.initialState = {
13
13
  hasValidState() {
14
14
  return this.fetchState == 'Completed';
15
15
  },
16
- selectedTransactionCategorizationTab: 'review',
17
16
  };
18
17
  const expenseAutomationView = (0, toolkit_1.createSlice)({
19
18
  name: 'expenseAutomationView',
@@ -63,19 +62,10 @@ const expenseAutomationView = (0, toolkit_1.createSlice)({
63
62
  return { payload: { newSelectedPeriod, tenantId } };
64
63
  },
65
64
  },
66
- updateCurrentSelectedTransactionCategorizationTab: {
67
- reducer(draft, action) {
68
- draft.selectedTransactionCategorizationTab =
69
- action.payload.newSelectedTab;
70
- },
71
- prepare(newSelectedTab) {
72
- return { payload: { newSelectedTab } };
73
- },
74
- },
75
65
  clearExpenseAutomationView(draft) {
76
66
  Object.assign(draft, exports.initialState);
77
67
  },
78
68
  },
79
69
  });
80
- _a = expenseAutomationView.actions, exports.fetchAllExpenseAutomationTabs = _a.fetchAllExpenseAutomationTabs, exports.updateCurrentSelectedPeriod = _a.updateCurrentSelectedPeriod, exports.updateCurrentSelectedView = _a.updateCurrentSelectedView, exports.clearExpenseAutomationView = _a.clearExpenseAutomationView, exports.initializeSelectedPeriodForTenants = _a.initializeSelectedPeriodForTenants, exports.refreshExpenseAutomationCurrentTab = _a.refreshExpenseAutomationCurrentTab, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab;
70
+ _a = expenseAutomationView.actions, exports.fetchAllExpenseAutomationTabs = _a.fetchAllExpenseAutomationTabs, exports.updateCurrentSelectedPeriod = _a.updateCurrentSelectedPeriod, exports.updateCurrentSelectedView = _a.updateCurrentSelectedView, exports.clearExpenseAutomationView = _a.clearExpenseAutomationView, exports.initializeSelectedPeriodForTenants = _a.initializeSelectedPeriodForTenants, exports.refreshExpenseAutomationCurrentTab = _a.refreshExpenseAutomationCurrentTab;
81
71
  exports.default = expenseAutomationView.reducer;
@@ -24,10 +24,11 @@ const isPreviousStepDisabled = (selectedTransactionCategorizationTab, allSteps,
24
24
  };
25
25
  function getExpenseAutomationView(state) {
26
26
  var _a, _b, _c;
27
- const { expenseAutomationViewState, tenantState, expenseAutomationMissingReceiptsViewState, expenseAutomationJESchedulesViewState, monthEndCloseChecksState, companyState, } = state;
27
+ const { expenseAutomationViewState, tenantState, expenseAutomationMissingReceiptsViewState, expenseAutomationJESchedulesViewState, expenseAutomationTransactionsViewState, monthEndCloseChecksState, companyState, } = state;
28
28
  const { loggedInUser, currentTenantId } = tenantState;
29
29
  const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
30
- const { currentSelectedView, selectedPeriodByTenantId, selectedTransactionCategorizationTab, } = expenseAutomationViewState;
30
+ const { currentSelectedView, selectedPeriodByTenantId } = expenseAutomationViewState;
31
+ const { selectedTransactionCategorizationTab } = expenseAutomationTransactionsViewState;
31
32
  const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
32
33
  let currentSelectedViewFetchState = {
33
34
  fetchState: 'Not-Started',
@@ -41,7 +42,7 @@ function getExpenseAutomationView(state) {
41
42
  const missingReceipts = (0, missingReceiptsSelector_1.getExpenseAutomationMissingReceiptsView)(state);
42
43
  const fluxAnalysis = (0, fluxAnalysisViewSelector_1.getExpenseAutomationFluxAnalysisView)(state);
43
44
  const monthEndInsights = (0, companyMonthEndReportViewSelector_1.getCompanyMonthEndReportSelectorView)(state, currentTenant.companyId, loggedInUser);
44
- const expenseAutomationTransactionsViewState = (0, transactionCategorizationSelector_1.getExpenseAutomationTransactionView)(state, selectedTransactionCategorizationTab);
45
+ const expenseAutomationTransactionsView = (0, transactionCategorizationSelector_1.getExpenseAutomationTransactionView)(state);
45
46
  const jeSchedules = (0, jeSchedulesViewSelector_1.getExpenseAutomationJESchedulesView)(state);
46
47
  switch (currentSelectedView) {
47
48
  case 'flux_analysis':
@@ -67,11 +68,11 @@ function getExpenseAutomationView(state) {
67
68
  break;
68
69
  case 'transaction_categorization':
69
70
  currentSelectedViewFetchState = {
70
- fetchState: expenseAutomationTransactionsViewState.fetchState,
71
- error: expenseAutomationTransactionsViewState.error,
71
+ fetchState: expenseAutomationTransactionsView.fetchState,
72
+ error: expenseAutomationTransactionsView.error,
72
73
  };
73
74
  currentSelectedViewBackgroundRefreshFetchState =
74
- expenseAutomationTransactionsViewState.refreshStatus;
75
+ expenseAutomationTransactionsView.refreshStatus;
75
76
  break;
76
77
  case 'month_end_insights':
77
78
  currentSelectedViewFetchState = {
@@ -88,7 +89,7 @@ function getExpenseAutomationView(state) {
88
89
  expenseAutomationMissingReceiptsViewState,
89
90
  expenseAutomationJESchedulesViewState,
90
91
  monthEndCloseChecksView,
91
- expenseAutomationTransactionsViewState,
92
+ expenseAutomationTransactionsView,
92
93
  ];
93
94
  let allSteps = [];
94
95
  let auditSummary = undefined;
@@ -108,7 +109,7 @@ function getExpenseAutomationView(state) {
108
109
  allSteps.forEach((stepDetail, index, allStepsOriginal) => {
109
110
  switch (stepDetail.step) {
110
111
  case 'transaction_categorization':
111
- allStepsOriginal[index] = Object.assign(Object.assign({}, stepDetail), { completionStatus: expenseAutomationTransactionsViewState.completionStatus });
112
+ allStepsOriginal[index] = Object.assign(Object.assign({}, stepDetail), { completionStatus: expenseAutomationTransactionsView.completionStatus });
112
113
  return;
113
114
  case 'je_schedules':
114
115
  allStepsOriginal[index] = Object.assign(Object.assign({}, stepDetail), { completionStatus: jeSchedules.completionStatus });
@@ -135,15 +136,15 @@ function getExpenseAutomationView(state) {
135
136
  }
136
137
  const reducedFetchStatus = (0, reduceFetchState_1.reduceAnyFetchState)(fetchStateVariables); // Add more states
137
138
  const reducedSaveStatus = (0, reduceFetchState_1.reduceAllFetchState)([
138
- expenseAutomationTransactionsViewState.saveStatus,
139
- expenseAutomationTransactionsViewState.markAsNotMiscategorizedStatus,
139
+ expenseAutomationTransactionsView.saveStatus,
140
+ expenseAutomationTransactionsView.markAsNotMiscategorizedStatus,
140
141
  ]);
141
142
  const reducedUpdateStatus = (0, reduceFetchState_1.reduceAllFetchState)([
142
- expenseAutomationTransactionsViewState.saveStatus, // TODO - Anjali add more states
143
+ expenseAutomationTransactionsView.saveStatus, // TODO - Anjali add more states
143
144
  ]);
144
145
  return {
145
146
  jeSchedules,
146
- transactionView: expenseAutomationTransactionsViewState,
147
+ transactionView: expenseAutomationTransactionsView,
147
148
  missingReceipts,
148
149
  currentSelectedViewFetchState,
149
150
  currentSelectedViewBackgroundRefreshFetchState,
@@ -1,6 +1,5 @@
1
1
  import { FetchedState, FetchStateAndError, ID } from '../../commonStateTypes/common';
2
2
  import { MonthYearPeriod } from '../../commonStateTypes/timePeriod';
3
- import { TransactionsTab } from './types/transactionsViewState';
4
3
  export declare const EXPENSE_AUTOMATION_VIEW_TYPES: readonly ["transaction_categorization", "je_schedules", "account_recon", "missing_receipts", "flux_analysis", "month_end_insights"];
5
4
  export declare const toExpenseAutomationViewType: (v: string) => "transaction_categorization" | "je_schedules" | "account_recon" | "missing_receipts" | "flux_analysis" | "month_end_insights";
6
5
  export declare type ExpenseAutomationViewType = ReturnType<typeof toExpenseAutomationViewType>;
@@ -9,5 +8,4 @@ export interface ExpenseAutomationViewState extends FetchedState {
9
8
  updateStatus: FetchStateAndError;
10
9
  currentSelectedView: ExpenseAutomationViewType;
11
10
  selectedPeriodByTenantId: Record<ID, MonthYearPeriod>;
12
- selectedTransactionCategorizationTab: TransactionsTab;
13
11
  }
@@ -53,6 +53,8 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
53
53
  selectedTab: "review" | "autoCategorized";
54
54
  transactionIds: string[];
55
55
  transactionSaveUpdates: TransactionSaveUpdates[];
56
+ }, string, never, never>, updateCurrentSelectedTransactionCategorizationTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newSelectedTab: "review" | "autoCategorized"], {
57
+ newSelectedTab: "review" | "autoCategorized";
56
58
  }, string, never, never>, updateTransactionCategorizationSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
57
59
  selectedTab: "review" | "autoCategorized";
58
60
  fetchState: FetchState;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  var _a;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.setEntityRecommendationForLineIdsForCategorization = exports.clearExpenseAutomationTransactionsView = exports.clearExpenseAutomationTransactionsViewPerTabView = exports.updateSelectedCheckboxTransactionIds = exports.fetchTransactionCategorizationView = exports.fetchTransactionCategorizationSuccess = exports.updateTotalCountForTransactionCategorization = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.updateSelectedVendorForTransaction = exports.updateStatusForTransactionNotMiscategorizedUpdate = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.initializeTransactionCategorizationViewLocalData = exports.updateTransactionCategorizationUIState = exports.fetchTransactionCategorization = exports.initialState = exports.initialTransactionTabViewState = void 0;
7
+ exports.setEntityRecommendationForLineIdsForCategorization = exports.clearExpenseAutomationTransactionsView = exports.clearExpenseAutomationTransactionsViewPerTabView = exports.updateSelectedCheckboxTransactionIds = exports.fetchTransactionCategorizationView = exports.fetchTransactionCategorizationSuccess = exports.updateTotalCountForTransactionCategorization = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.updateSelectedVendorForTransaction = exports.updateStatusForTransactionNotMiscategorizedUpdate = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateCurrentSelectedTransactionCategorizationTab = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.initializeTransactionCategorizationViewLocalData = exports.updateTransactionCategorizationUIState = exports.fetchTransactionCategorization = exports.initialState = exports.initialTransactionTabViewState = void 0;
8
8
  const toolkit_1 = require("@reduxjs/toolkit");
9
9
  const get_1 = __importDefault(require("lodash/get"));
10
10
  const uniq_1 = __importDefault(require("lodash/uniq"));
@@ -44,8 +44,11 @@ exports.initialTransactionTabViewState = {
44
44
  selectedCheckBoxTransactionIds: [],
45
45
  };
46
46
  exports.initialState = {
47
- review: Object.assign({}, exports.initialTransactionTabViewState),
48
- autoCategorized: Object.assign({}, exports.initialTransactionTabViewState),
47
+ selectedTransactionCategorizationTab: 'review',
48
+ transactionCategorizationView: {
49
+ review: Object.assign({}, exports.initialTransactionTabViewState),
50
+ autoCategorized: Object.assign({}, exports.initialTransactionTabViewState),
51
+ },
49
52
  };
50
53
  const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
51
54
  name: 'expenseAutomationTransactionsView',
@@ -75,39 +78,44 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
75
78
  reducer(draft, action) {
76
79
  const { refreshViewInBackground, resetListItems, selectedTab, pageToken, searchString, period, } = action.payload;
77
80
  if (refreshViewInBackground === true) {
78
- draft[selectedTab].refreshStatus = {
81
+ draft.transactionCategorizationView[selectedTab].refreshStatus = {
79
82
  fetchState: 'In-Progress',
80
83
  error: undefined,
81
84
  };
82
85
  }
83
86
  else {
84
- draft[selectedTab].fetchState = 'In-Progress';
85
- draft[selectedTab].error = undefined;
87
+ draft.transactionCategorizationView[selectedTab].fetchState =
88
+ 'In-Progress';
89
+ draft.transactionCategorizationView[selectedTab].error = undefined;
86
90
  }
87
91
  // Note: Need to reset scroll position whenever a new fetch happens, except when fetching through scroll
88
92
  if (pageToken == null) {
89
93
  // Page Token is null in each fetch except when fetching through scroll
90
- draft[selectedTab].uiState.scrollPosition = {
94
+ draft.transactionCategorizationView[selectedTab].uiState.scrollPosition = {
91
95
  scrollTop: 0,
92
96
  scrollLeft: undefined,
93
97
  };
94
98
  }
95
- draft[selectedTab].uiState.pageToken = pageToken !== null && pageToken !== void 0 ? pageToken : null;
96
- draft[selectedTab].uiState.searchString = searchString !== null && searchString !== void 0 ? searchString : '';
97
- draft[selectedTab].error = undefined;
99
+ draft.transactionCategorizationView[selectedTab].uiState.pageToken =
100
+ pageToken !== null && pageToken !== void 0 ? pageToken : null;
101
+ draft.transactionCategorizationView[selectedTab].uiState.searchString =
102
+ searchString !== null && searchString !== void 0 ? searchString : '';
103
+ draft.transactionCategorizationView[selectedTab].error = undefined;
98
104
  // Reset list when we change the sort order and fetch list again
99
105
  if (resetListItems === true) {
100
106
  const monthYearPeriod = {
101
107
  month: period.start.month,
102
108
  year: period.start.year,
103
109
  };
104
- const transactionIdsBySelectedPeriod = draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(monthYearPeriod)];
110
+ const transactionIdsBySelectedPeriod = draft.transactionCategorizationView[selectedTab]
111
+ .transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(monthYearPeriod)];
105
112
  transactionIdsBySelectedPeriod.forEach((transactionId) => {
106
- delete draft[selectedTab].transactionReviewLocalDataById[transactionId];
113
+ delete draft.transactionCategorizationView[selectedTab]
114
+ .transactionReviewLocalDataById[transactionId];
107
115
  });
108
- draft[selectedTab].selectedCheckBoxTransactionIds = draft[selectedTab].selectedCheckBoxTransactionIds.filter((selectedCheckBoxTransactionId) => transactionIdsBySelectedPeriod.includes(selectedCheckBoxTransactionId));
109
- draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(monthYearPeriod)] = [];
110
- draft[selectedTab].refreshStatus = {
116
+ draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds.filter((selectedCheckBoxTransactionId) => transactionIdsBySelectedPeriod.includes(selectedCheckBoxTransactionId));
117
+ draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(monthYearPeriod)] = [];
118
+ draft.transactionCategorizationView[selectedTab].refreshStatus = {
111
119
  fetchState: 'Not-Started',
112
120
  error: undefined,
113
121
  };
@@ -150,53 +158,62 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
150
158
  saveTransactionCategorizationLocalData(draft, action) {
151
159
  const { keepExistingListItems, transactionIds, transactionLocalData, selectedPeriod, selectedTab, pageToken, totalCount, } = action.payload;
152
160
  if (keepExistingListItems === false) {
153
- draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = transactionIds;
154
- draft[selectedTab].selectedCheckBoxTransactionIds = [];
161
+ draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] =
162
+ transactionIds;
163
+ draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [];
155
164
  }
156
165
  else {
157
- const previousData = draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)];
166
+ const previousData = draft.transactionCategorizationView[selectedTab]
167
+ .transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)];
158
168
  if (previousData == null) {
159
- draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = transactionIds;
169
+ draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = transactionIds;
160
170
  }
161
171
  else {
162
172
  const combinedData = (0, uniq_1.default)([...previousData, ...transactionIds]);
163
- draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = [...combinedData];
173
+ draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = [...combinedData];
164
174
  }
165
175
  }
166
- draft[selectedTab].transactionReviewLocalDataById = Object.assign(Object.assign({}, draft[selectedTab].transactionReviewLocalDataById), transactionLocalData);
176
+ draft.transactionCategorizationView[selectedTab].transactionReviewLocalDataById = Object.assign(Object.assign({}, draft.transactionCategorizationView[selectedTab]
177
+ .transactionReviewLocalDataById), transactionLocalData);
167
178
  if (action.payload.refreshViewInBackground === true) {
168
- draft[selectedTab].refreshStatus = {
179
+ draft.transactionCategorizationView[selectedTab].refreshStatus = {
169
180
  fetchState: 'Completed',
170
181
  error: undefined,
171
182
  };
172
183
  }
173
184
  else {
174
- draft[selectedTab].fetchState = 'Completed';
175
- draft[selectedTab].error = undefined;
185
+ draft.transactionCategorizationView[selectedTab].fetchState =
186
+ 'Completed';
187
+ draft.transactionCategorizationView[selectedTab].error = undefined;
176
188
  }
177
- draft[selectedTab].uiState = Object.assign(Object.assign({}, draft[selectedTab].uiState), { pageToken: pageToken !== null && pageToken !== void 0 ? pageToken : null });
178
- draft[selectedTab].uiState.totalCount[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = totalCount;
189
+ draft.transactionCategorizationView[selectedTab].uiState = Object.assign(Object.assign({}, draft.transactionCategorizationView[selectedTab].uiState), { pageToken: pageToken !== null && pageToken !== void 0 ? pageToken : null });
190
+ draft.transactionCategorizationView[selectedTab].uiState.totalCount[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = totalCount;
179
191
  },
180
192
  updateTransactionCategorizationUIState(draft, action) {
181
193
  const selectedTab = action.payload.selectedTab;
182
194
  const uiState = action.payload.uiState;
183
195
  if (uiState.sortKey != null) {
184
- draft[selectedTab].uiState.sortKey = uiState.sortKey;
196
+ draft.transactionCategorizationView[selectedTab].uiState.sortKey =
197
+ uiState.sortKey;
185
198
  }
186
199
  if (uiState.sortOrder != null) {
187
- draft[selectedTab].uiState.sortOrder = uiState.sortOrder;
200
+ draft.transactionCategorizationView[selectedTab].uiState.sortOrder =
201
+ uiState.sortOrder;
188
202
  }
189
203
  if (uiState.searchString != null) {
190
- draft[selectedTab].uiState.searchString = uiState.searchString;
204
+ draft.transactionCategorizationView[selectedTab].uiState.searchString =
205
+ uiState.searchString;
191
206
  }
192
207
  if (uiState.scrollPosition != null) {
193
- draft[selectedTab].uiState.scrollPosition = uiState.scrollPosition;
208
+ draft.transactionCategorizationView[selectedTab].uiState.scrollPosition = uiState.scrollPosition;
194
209
  }
195
210
  if (uiState.pageToken != null) {
196
- draft[selectedTab].uiState.pageToken = uiState.pageToken;
211
+ draft.transactionCategorizationView[selectedTab].uiState.pageToken =
212
+ uiState.pageToken;
197
213
  }
198
214
  if (uiState.totalCount != null) {
199
- draft[selectedTab].uiState.totalCount = uiState.totalCount;
215
+ draft.transactionCategorizationView[selectedTab].uiState.totalCount =
216
+ uiState.totalCount;
200
217
  }
201
218
  },
202
219
  saveTransactionCategorization: {
@@ -212,10 +229,19 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
212
229
  // do nothing
213
230
  },
214
231
  },
232
+ updateCurrentSelectedTransactionCategorizationTab: {
233
+ reducer(draft, action) {
234
+ draft.selectedTransactionCategorizationTab =
235
+ action.payload.newSelectedTab;
236
+ },
237
+ prepare(newSelectedTab) {
238
+ return { payload: { newSelectedTab } };
239
+ },
240
+ },
215
241
  updateTransactionCategorization: {
216
242
  reducer(draft, action) {
217
243
  const selectedTab = action.payload.selectedTab;
218
- draft[selectedTab].saveStatus = {
244
+ draft.transactionCategorizationView[selectedTab].saveStatus = {
219
245
  error: undefined,
220
246
  fetchState: 'In-Progress',
221
247
  };
@@ -233,33 +259,37 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
233
259
  setAllItemsToCategoryClassInLocalDataForCategorization: {
234
260
  reducer(draft, action) {
235
261
  const { vendorId, selectedAccount, selectedClassBase, transactions, transactionId, lineId, selectedTab, } = action.payload;
236
- const transactionLocalData = (0, get_1.default)(draft[selectedTab].transactionReviewLocalDataById, transactionId, undefined);
262
+ const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
263
+ .transactionReviewLocalDataById, transactionId, undefined);
237
264
  const existingAccount = transactionLocalData === null || transactionLocalData === void 0 ? void 0 : transactionLocalData.transactionReviewLocalData.lineItemById[lineId].account;
238
265
  if (transactionLocalData != null) {
239
266
  const newTransactionLocalData = Object.assign(Object.assign({}, transactionLocalData.transactionReviewLocalData), { lineItemById: Object.assign(Object.assign({}, transactionLocalData.transactionReviewLocalData.lineItemById), { [lineId]: Object.assign(Object.assign({}, transactionLocalData.transactionReviewLocalData.lineItemById[lineId]), { account: selectedAccount, class: selectedClassBase }) }) });
240
- draft[selectedTab].transactionReviewLocalDataById[transactionId] = {
267
+ draft.transactionCategorizationView[selectedTab].transactionReviewLocalDataById[transactionId] = {
241
268
  transactionReviewLocalData: newTransactionLocalData,
242
269
  transactionId,
243
270
  };
244
271
  const selectedTransaction = transactions.find((transaction) => transaction.id === transactionId);
245
- const selectedCheckBoxTransactionIds = draft[selectedTab].selectedCheckBoxTransactionIds;
272
+ const selectedCheckBoxTransactionIds = draft.transactionCategorizationView[selectedTab]
273
+ .selectedCheckBoxTransactionIds;
246
274
  if (selectedTransaction != null &&
247
275
  (0, transactionCategorizationLocalDataHelper_1.checkIfAllLineItemsAreCategoryClassFilled)(selectedTransaction, newTransactionLocalData) === true && // check if all line items are filled
248
276
  selectedCheckBoxTransactionIds.length < transactionCategorizationLocalDataHelper_1.MAX_SELECTION_LIMIT &&
249
277
  selectedCheckBoxTransactionIds.includes(transactionId) === false) {
250
- draft[selectedTab].selectedCheckBoxTransactionIds = [
251
- ...draft[selectedTab].selectedCheckBoxTransactionIds,
278
+ draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [
279
+ ...draft.transactionCategorizationView[selectedTab]
280
+ .selectedCheckBoxTransactionIds,
252
281
  transactionId,
253
282
  ];
254
283
  }
255
284
  }
256
285
  if (vendorId != null) {
257
286
  transactions.forEach((transaction) => {
258
- const transactionLocalData = (0, get_1.default)(draft[selectedTab].transactionReviewLocalDataById, transaction.id, undefined);
287
+ const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
288
+ .transactionReviewLocalDataById, transaction.id, undefined);
259
289
  if (transactionLocalData != null) {
260
- draft[selectedTab].transactionReviewLocalDataById[transaction.id] = {
290
+ draft.transactionCategorizationView[selectedTab].transactionReviewLocalDataById[transaction.id] = {
261
291
  transactionId: transaction.id,
262
- transactionReviewLocalData: (0, transactionCategorizationLocalDataHelper_1.toSetAllLineItemsToCategoryClass)(draft[selectedTab], transaction, transactionId, lineId, transactionLocalData.transactionReviewLocalData, (existingAccount === null || existingAccount === void 0 ? void 0 : existingAccount.accountId) !== (selectedAccount === null || selectedAccount === void 0 ? void 0 : selectedAccount.accountId)
292
+ transactionReviewLocalData: (0, transactionCategorizationLocalDataHelper_1.toSetAllLineItemsToCategoryClass)(draft.transactionCategorizationView[selectedTab], transaction, transactionId, lineId, transactionLocalData.transactionReviewLocalData, (existingAccount === null || existingAccount === void 0 ? void 0 : existingAccount.accountId) !== (selectedAccount === null || selectedAccount === void 0 ? void 0 : selectedAccount.accountId)
263
293
  ? 'category'
264
294
  : 'class', vendorId, selectedAccount, selectedClassBase),
265
295
  };
@@ -299,11 +329,12 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
299
329
  },
300
330
  reducer(draft, action) {
301
331
  const { entity, transaction, transactionId, selectedTab, lineIds } = action.payload;
302
- const transactionLocalData = (0, get_1.default)(draft[selectedTab].transactionReviewLocalDataById, transactionId.id, undefined);
332
+ const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
333
+ .transactionReviewLocalDataById, transactionId.id, undefined);
303
334
  if (transactionLocalData != null) {
304
- draft[selectedTab].transactionReviewLocalDataById[transaction.id] = {
335
+ draft.transactionCategorizationView[selectedTab].transactionReviewLocalDataById[transaction.id] = {
305
336
  transactionId: transaction.id,
306
- transactionReviewLocalData: (0, transactionCategorizationLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(draft[selectedTab], transaction, transactionLocalData.transactionReviewLocalData, entity, lineIds, action.payload.recommendationByLineId),
337
+ transactionReviewLocalData: (0, transactionCategorizationLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(draft.transactionCategorizationView[selectedTab], transaction, transactionLocalData.transactionReviewLocalData, entity, lineIds, action.payload.recommendationByLineId),
307
338
  };
308
339
  }
309
340
  },
@@ -311,25 +342,29 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
311
342
  fetchTransactionCategorizationSuccess(draft, action) {
312
343
  const { selectedTab } = action.payload;
313
344
  if (action.payload.refreshViewInBackground === true) {
314
- draft[selectedTab].refreshStatus = {
345
+ draft.transactionCategorizationView[selectedTab].refreshStatus = {
315
346
  fetchState: 'Completed',
316
347
  error: undefined,
317
348
  };
318
349
  }
319
350
  else {
320
- draft[selectedTab].fetchState = 'Completed';
321
- draft[selectedTab].error = undefined;
351
+ draft.transactionCategorizationView[selectedTab].fetchState =
352
+ 'Completed';
353
+ draft.transactionCategorizationView[selectedTab].error = undefined;
322
354
  }
323
355
  },
324
356
  fetchTransactionCategorizationFailure(draft, action) {
325
357
  const { selectedTab, selectedPeriod } = action.payload;
326
- draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = [];
327
- draft[selectedTab].fetchState = 'Error';
328
- draft[selectedTab].error = action.payload.status;
358
+ draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] =
359
+ [];
360
+ draft.transactionCategorizationView[selectedTab].fetchState = 'Error';
361
+ draft.transactionCategorizationView[selectedTab].error =
362
+ action.payload.status;
329
363
  },
330
364
  updateSelectedVendorForTransaction(draft, action) {
331
365
  const { transactionId, lineId, updatedVendor, selectedTransaction, selectedTab, } = action.payload;
332
- const transactionLocalData = (0, get_1.default)(draft[selectedTab].transactionReviewLocalDataById, transactionId, undefined);
366
+ const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
367
+ .transactionReviewLocalDataById, transactionId, undefined);
333
368
  if (transactionLocalData != null) {
334
369
  let newTransactionLocalData = Object.assign({}, transactionLocalData.transactionReviewLocalData);
335
370
  if (!(0, vendorTransaction_1.isVendorTransaction)(selectedTransaction) &&
@@ -354,17 +389,18 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
354
389
  }
355
390
  : undefined;
356
391
  }
357
- draft[selectedTab].transactionReviewLocalDataById[transactionId] = {
392
+ draft.transactionCategorizationView[selectedTab].transactionReviewLocalDataById[transactionId] = {
358
393
  transactionReviewLocalData: newTransactionLocalData,
359
394
  transactionId,
360
395
  };
361
- const selectedCheckBoxTransactionIds = draft[selectedTab].selectedCheckBoxTransactionIds;
396
+ const selectedCheckBoxTransactionIds = draft.transactionCategorizationView[selectedTab]
397
+ .selectedCheckBoxTransactionIds;
362
398
  if (newTransactionLocalData.vendor != null &&
363
399
  newTransactionLocalData.vendor.id != null &&
364
400
  (0, transactionCategorizationLocalDataHelper_1.checkIfAllLineItemsAreCategoryClassFilled)(selectedTransaction, newTransactionLocalData) === true && // check if all line items are filled
365
401
  selectedCheckBoxTransactionIds.length < transactionCategorizationLocalDataHelper_1.MAX_SELECTION_LIMIT &&
366
402
  selectedCheckBoxTransactionIds.includes(transactionId) === false) {
367
- draft[selectedTab].selectedCheckBoxTransactionIds = [
403
+ draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [
368
404
  ...selectedCheckBoxTransactionIds,
369
405
  transactionId,
370
406
  ];
@@ -374,7 +410,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
374
410
  updateTransactionCategorizationSaveStatus: {
375
411
  reducer(draft, action) {
376
412
  const selectedTab = action.payload.selectedTab;
377
- draft[selectedTab].saveStatus = {
413
+ draft.transactionCategorizationView[selectedTab].saveStatus = {
378
414
  fetchState: action.payload.fetchState,
379
415
  error: action.payload.error,
380
416
  };
@@ -392,7 +428,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
392
428
  markTransactionAsNotMiscategorized: {
393
429
  reducer(draft, action) {
394
430
  const selectedTab = action.payload.selectedTab;
395
- draft[selectedTab].markAsNotMiscategorizedStatus = {
431
+ draft.transactionCategorizationView[selectedTab].markAsNotMiscategorizedStatus = {
396
432
  fetchState: 'In-Progress',
397
433
  error: undefined,
398
434
  };
@@ -410,16 +446,17 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
410
446
  reducer(draft, action) {
411
447
  const { selectedTab, selectedPeriod, transactionIds } = action.payload;
412
448
  if (action.payload.fetchState === 'Completed') {
413
- const selectedCheckBoxTransactionIds = draft[selectedTab].selectedCheckBoxTransactionIds.filter((id) => !transactionIds.includes(id));
414
- draft[selectedTab].selectedCheckBoxTransactionIds = [
449
+ const selectedCheckBoxTransactionIds = draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds.filter((id) => !transactionIds.includes(id));
450
+ draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [
415
451
  ...selectedCheckBoxTransactionIds,
416
452
  ];
417
- const transactionIdsBySelectedPeriod = draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)];
453
+ const transactionIdsBySelectedPeriod = draft.transactionCategorizationView[selectedTab]
454
+ .transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)];
418
455
  if (transactionIdsBySelectedPeriod != null) {
419
- draft[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = transactionIdsBySelectedPeriod.filter((id) => !transactionIds.includes(id));
456
+ draft.transactionCategorizationView[selectedTab].transactionIdsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = transactionIdsBySelectedPeriod.filter((id) => !transactionIds.includes(id));
420
457
  }
421
458
  }
422
- draft[selectedTab].markAsNotMiscategorizedStatus = {
459
+ draft.transactionCategorizationView[selectedTab].markAsNotMiscategorizedStatus = {
423
460
  fetchState: action.payload.fetchState,
424
461
  error: action.payload.error,
425
462
  };
@@ -438,21 +475,21 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
438
475
  },
439
476
  updateTotalCountForTransactionCategorization(draft, action) {
440
477
  const { selectedTab, selectedPeriod, totalCount } = action.payload;
441
- draft[selectedTab].uiState.totalCount[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = totalCount;
478
+ draft.transactionCategorizationView[selectedTab].uiState.totalCount[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = totalCount;
442
479
  },
443
480
  updateSelectedCheckboxTransactionIds(draft, action) {
444
481
  const selectedTab = action.payload.selectedTab;
445
482
  const transactionIds = action.payload.transactionIds;
446
- draft[selectedTab].selectedCheckBoxTransactionIds = [...transactionIds];
483
+ draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [...transactionIds];
447
484
  },
448
485
  clearExpenseAutomationTransactionsViewPerTabView(draft, action) {
449
486
  const selectedTab = action.payload;
450
- draft[selectedTab] = Object.assign({}, exports.initialTransactionTabViewState);
487
+ draft.transactionCategorizationView[selectedTab] = Object.assign({}, exports.initialTransactionTabViewState);
451
488
  },
452
489
  clearExpenseAutomationTransactionsView(draft) {
453
490
  Object.assign(draft, exports.initialState);
454
491
  },
455
492
  },
456
493
  });
457
- _a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdate = _a.updateStatusForTransactionNotMiscategorizedUpdate, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization;
494
+ _a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdate = _a.updateStatusForTransactionNotMiscategorizedUpdate, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization;
458
495
  exports.default = expenseAutomationTransactionsView.reducer;
@@ -1,4 +1,3 @@
1
1
  import { ExpenseAutomationTransactionViewSelector } from '../selectorTypes/transactionsViewSelectorTypes';
2
2
  import { RootState } from '../../../reducer';
3
- import { TransactionsTab } from '../types/transactionsViewState';
4
- export declare function getExpenseAutomationTransactionView(state: RootState, selectedTab: TransactionsTab): ExpenseAutomationTransactionViewSelector;
3
+ export declare function getExpenseAutomationTransactionView(state: RootState): ExpenseAutomationTransactionViewSelector;
@@ -12,10 +12,11 @@ const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
12
12
  const tenantSelector_1 = require("../../../entity/tenant/tenantSelector");
13
13
  const reduceFetchState_1 = require("../../../commonStateTypes/reduceFetchState");
14
14
  const expenseAutomationViewSelectorTypes_1 = require("../selectorTypes/expenseAutomationViewSelectorTypes");
15
- function getExpenseAutomationTransactionView(state, selectedTab) {
15
+ function getExpenseAutomationTransactionView(state) {
16
16
  var _a;
17
17
  const { accountState, classState, classListState, accountListState, expenseAutomationTransactionsViewState, expenseAutomationViewState, transactionState, monthEndCloseChecksState, } = state;
18
- const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, } = expenseAutomationTransactionsViewState[selectedTab];
18
+ const { selectedTransactionCategorizationTab } = expenseAutomationTransactionsViewState;
19
+ const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
19
20
  const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(accountState, accountListState, 'accountList');
20
21
  const accountList = (0, accountListSelector_1.getAccountList)(accountState, accountListState, 'accountList');
21
22
  const classList = (0, classListSelector_1.getClassList)(classState, classListState);
@@ -52,21 +53,29 @@ function getExpenseAutomationTransactionView(state, selectedTab) {
52
53
  fetchStatus = (0, reduceFetchState_1.reduceAllFetchState)([
53
54
  accountList,
54
55
  classList,
55
- expenseAutomationTransactionsViewState[selectedTab],
56
+ expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab],
56
57
  ]);
57
- const totalCountByReview = expenseAutomationTransactionsViewState.review.uiState.totalCount;
58
- const totalCountByAutoCat = expenseAutomationTransactionsViewState.autoCategorized.uiState.totalCount;
58
+ const totalCountByReview = expenseAutomationTransactionsViewState.transactionCategorizationView.review
59
+ .uiState.totalCount;
60
+ const totalCountByAutoCat = expenseAutomationTransactionsViewState.transactionCategorizationView
61
+ .autoCategorized.uiState.totalCount;
59
62
  const totalCountByTab = {
60
63
  review: monthYearPeriodId != null ? totalCountByReview[monthYearPeriodId] : 0,
61
64
  autoCategorized: monthYearPeriodId != null ? totalCountByAutoCat[monthYearPeriodId] : 0,
62
65
  };
63
66
  const fetchStateByTab = {
64
- review: (0, reduceFetchState_1.reduceAllFetchState)([
65
- expenseAutomationTransactionsViewState.review,
66
- ]),
67
- autoCategorized: (0, reduceFetchState_1.reduceAllFetchState)([
68
- expenseAutomationTransactionsViewState.autoCategorized,
69
- ]),
67
+ review: {
68
+ fetchState: expenseAutomationTransactionsViewState.transactionCategorizationView
69
+ .review.fetchState,
70
+ error: expenseAutomationTransactionsViewState.transactionCategorizationView
71
+ .review.error,
72
+ },
73
+ autoCategorized: {
74
+ fetchState: expenseAutomationTransactionsViewState.transactionCategorizationView
75
+ .autoCategorized.fetchState,
76
+ error: expenseAutomationTransactionsViewState.transactionCategorizationView
77
+ .autoCategorized.error,
78
+ },
70
79
  };
71
80
  const allSteps = monthYearPeriodId != null
72
81
  ? (0, expenseAutomationViewSelectorTypes_1.getAllSteps)(monthEndCloseChecksState, monthYearPeriodId, currentTenant.tenantId)
@@ -85,7 +85,10 @@ export interface TransactionsTabViewState extends FetchedState {
85
85
  refreshStatus: FetchStateAndError;
86
86
  uiState: TransactionsViewUIState;
87
87
  }
88
- export declare type TransactionsViewState = Record<TransactionsTab, TransactionsTabViewState>;
88
+ export declare type TransactionsViewState = {
89
+ selectedTransactionCategorizationTab: TransactionsTab;
90
+ transactionCategorizationView: Record<TransactionsTab, TransactionsTabViewState>;
91
+ };
89
92
  export interface TransactionLineUpdates {
90
93
  class?: ClassBase;
91
94
  account?: AccountBase;
@@ -12,7 +12,7 @@ const accountListSelector_1 = require("../accountList/accountListSelector");
12
12
  const transactionDetailState_1 = require("../transactionDetail/transactionDetailState");
13
13
  const fetchEntityRecommendationsByTransactionIdEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(recommendationReducer_1.fetchEntityRecommendationsByTransactionId.match), (0, operators_1.switchMap)((action) => {
14
14
  const { entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow, } = action.payload;
15
- const { expenseAutomationViewState: { selectedTransactionCategorizationTab }, } = state$.value;
15
+ const { expenseAutomationTransactionsViewState: { selectedTransactionCategorizationTab, }, } = state$.value;
16
16
  const query = {
17
17
  amount,
18
18
  transaction_id: (0, transactionDetailState_1.getActualTransactionID)(transactionDetails.transactionId.id),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "4.14.5",
3
+ "version": "4.14.6",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",