@zeniai/client-epic-state 5.0.55-betaML5 → 5.0.55-betaSS1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
- package/lib/commonStateTypes/viewAndReport/viewAndReport.js +0 -2
- package/lib/entity/account/accountSelector.d.ts +0 -9
- package/lib/entity/account/accountSelector.js +1 -14
- package/lib/entity/account/accountState.d.ts +1 -1
- package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
- package/lib/entity/class/classReducer.d.ts +4 -4
- package/lib/entity/class/classState.d.ts +1 -1
- package/lib/entity/forecast/forecastState.d.ts +1 -1
- package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
- package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
- package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
- package/lib/entity/sectionProjectView/sectionProjectView.d.ts +1 -1
- package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +2 -2
- package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +0 -2
- package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +0 -4
- package/lib/entity/transaction/payloadTypes/transactionPayload.js +0 -10
- package/lib/entity/transaction/stateTypes/transaction.d.ts +0 -3
- package/lib/epic.d.ts +1 -3
- package/lib/epic.js +1 -3
- package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +0 -2
- package/lib/esm/entity/account/accountSelector.js +0 -11
- package/lib/esm/entity/snackbar/snackbarTypes.js +0 -2
- package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +0 -10
- package/lib/esm/epic.js +1 -3
- package/lib/esm/index.js +7 -6
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +4 -0
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +3 -0
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +1 -8
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +71 -79
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +2 -31
- package/lib/esm/view/expenseAutomationView/types/completedSubTab.js +9 -0
- package/lib/esm/view/expenseAutomationView/types/missingReceiptsViewState.js +0 -2
- package/lib/esm/view/expenseAutomationView/types/transactionsViewState.js +0 -5
- package/lib/esm/view/transactionDetail/epics/transactionDetailEpic.js +0 -10
- package/lib/esm/view/transactionDetail/transactionDetailSelector.js +2 -24
- package/lib/index.d.ts +6 -5
- package/lib/index.js +37 -44
- package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
- package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
- package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
- package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
- package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
- package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
- package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +4 -0
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +3 -0
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +0 -7
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +8 -0
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +2 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +5 -22
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +72 -80
- package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +2 -1
- package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +3 -4
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +0 -2
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +2 -32
- package/lib/view/expenseAutomationView/types/completedSubTab.d.ts +2 -0
- package/lib/view/expenseAutomationView/types/completedSubTab.js +13 -0
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +1 -2
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.js +1 -4
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +24 -15
- package/lib/view/expenseAutomationView/types/transactionsViewState.js +1 -6
- package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
- package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
- package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
- package/lib/view/reportsResync/reportsResyncReducer.d.ts +2 -2
- package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
- package/lib/view/topEx/topExSelector.d.ts +1 -1
- package/lib/view/transactionDetail/epics/transactionDetailEpic.d.ts +1 -2
- package/lib/view/transactionDetail/epics/transactionDetailEpic.js +0 -10
- package/lib/view/transactionDetail/transactionDetailPayload.d.ts +1 -1
- package/lib/view/transactionDetail/transactionDetailSelector.d.ts +1 -6
- package/lib/view/transactionDetail/transactionDetailSelector.js +1 -23
- package/package.json +1 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/createTransferEntryEpic.js +0 -81
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransferAccountsEpic.js +0 -30
- package/lib/tsconfig.typecheck.tsbuildinfo +0 -1
- package/lib/view/expenseAutomationView/epics/transactionCategorization/createTransferEntryEpic.d.ts +0 -9
- package/lib/view/expenseAutomationView/epics/transactionCategorization/createTransferEntryEpic.js +0 -85
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransferAccountsEpic.d.ts +0 -8
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransferAccountsEpic.js +0 -34
|
@@ -4,7 +4,6 @@ import uniq from 'lodash/uniq';
|
|
|
4
4
|
import { toMonthYearPeriodId, } from '../../../commonStateTypes/timePeriod';
|
|
5
5
|
import { isVendorTransaction } from '../../../entity/transaction/stateTypes/vendorTransaction';
|
|
6
6
|
import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, filterAutoTabLineItems, mergeTabSpecificLineItems, removeTransactionFromTabView, setEntityRecommendationForLineIdInLocalData, toSetAllLineItemsToCategoryClass, toTransactionDetailLocalData, } from '../helpers/transactionCategorizationLocalDataHelper';
|
|
7
|
-
import { TRANSACTIONS_TABS, } from '../types/transactionsViewState';
|
|
8
7
|
export const initialTransactionTabViewState = {
|
|
9
8
|
saveStatus: {
|
|
10
9
|
fetchState: 'Not-Started',
|
|
@@ -42,22 +41,40 @@ export const initialTransactionTabViewState = {
|
|
|
42
41
|
selectedTransactionLineId: undefined,
|
|
43
42
|
};
|
|
44
43
|
export const initialState = {
|
|
45
|
-
|
|
46
|
-
creditCardAccountsForTransfer: {
|
|
47
|
-
accountIds: [],
|
|
48
|
-
fetchState: 'Not-Started',
|
|
49
|
-
},
|
|
50
|
-
lastTransferEntryReplacement: undefined,
|
|
44
|
+
autoCategorizedSubTabCache: {},
|
|
51
45
|
selectedTransactionCategorizationTab: 'review',
|
|
46
|
+
selectedTransactionCategorizationCompletedSubTab: 'all',
|
|
52
47
|
transactionCategorizationView: {
|
|
53
48
|
review: { ...initialTransactionTabViewState },
|
|
54
49
|
autoCategorized: { ...initialTransactionTabViewState },
|
|
55
50
|
},
|
|
56
|
-
transferAccounts: {
|
|
57
|
-
accountIds: [],
|
|
58
|
-
fetchState: 'Not-Started',
|
|
59
|
-
},
|
|
60
51
|
};
|
|
52
|
+
/**
|
|
53
|
+
* Capture the autoCategorized tab's current paginated dataset for a sub-tab.
|
|
54
|
+
* The mid-flight `'In-Progress'` state is normalised to `'Completed'` because
|
|
55
|
+
* the in-flight request is cancelled by `switchMap` in the fetch epic when the
|
|
56
|
+
* sub-tab changes — restoring `'In-Progress'` later would leave the UI stuck
|
|
57
|
+
* showing a phantom loading state with no fetch actually running. Length-zero
|
|
58
|
+
* datasets degrade to `'Not-Started'` so the next visit triggers a fresh
|
|
59
|
+
* fetch from page 1 instead of short-circuiting on stale empty caches.
|
|
60
|
+
*/
|
|
61
|
+
function snapshotAutoCategorizedTab(autoCat) {
|
|
62
|
+
const transactionIdsBySelectedPeriod = {
|
|
63
|
+
...autoCat.transactionIdsBySelectedPeriod,
|
|
64
|
+
};
|
|
65
|
+
const hasAnyLoadedRows = Object.values(transactionIdsBySelectedPeriod).some((ids) => ids.length > 0);
|
|
66
|
+
let normalisedFetchState = autoCat.fetchState;
|
|
67
|
+
if (normalisedFetchState === 'In-Progress') {
|
|
68
|
+
normalisedFetchState = hasAnyLoadedRows ? 'Completed' : 'Not-Started';
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
error: autoCat.error,
|
|
72
|
+
fetchState: normalisedFetchState,
|
|
73
|
+
pageToken: autoCat.uiState.pageToken,
|
|
74
|
+
totalCount: { ...autoCat.uiState.totalCount },
|
|
75
|
+
transactionIdsBySelectedPeriod,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
61
78
|
const expenseAutomationTransactionsView = createSlice({
|
|
62
79
|
name: 'expenseAutomationTransactionsView',
|
|
63
80
|
initialState,
|
|
@@ -271,6 +288,48 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
271
288
|
return { payload: { newSelectedTab } };
|
|
272
289
|
},
|
|
273
290
|
},
|
|
291
|
+
updateTransactionCategorizationCompletedSubTab: {
|
|
292
|
+
reducer(draft, action) {
|
|
293
|
+
const { newSubTab } = action.payload;
|
|
294
|
+
const previousSubTab = draft.selectedTransactionCategorizationCompletedSubTab;
|
|
295
|
+
if (previousSubTab === newSubTab) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
const autoCat = draft.transactionCategorizationView.autoCategorized;
|
|
299
|
+
// Snapshot the outgoing sub-tab so a future revisit can short-circuit
|
|
300
|
+
// the fetch epic (mirrors the parent-tab "don't refetch what's
|
|
301
|
+
// already cached" behaviour). Period-scoped data is preserved as-is
|
|
302
|
+
// because the snapshot itself is keyed only by sub-tab; the active
|
|
303
|
+
// tab's per-period maps remain the source of truth while live.
|
|
304
|
+
draft.autoCategorizedSubTabCache[previousSubTab] =
|
|
305
|
+
snapshotAutoCategorizedTab(autoCat);
|
|
306
|
+
const cached = draft.autoCategorizedSubTabCache[newSubTab];
|
|
307
|
+
if (cached != null) {
|
|
308
|
+
autoCat.uiState.pageToken = cached.pageToken;
|
|
309
|
+
autoCat.uiState.totalCount = { ...cached.totalCount };
|
|
310
|
+
autoCat.transactionIdsBySelectedPeriod = {
|
|
311
|
+
...cached.transactionIdsBySelectedPeriod,
|
|
312
|
+
};
|
|
313
|
+
autoCat.fetchState = cached.fetchState;
|
|
314
|
+
autoCat.error = cached.error;
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
// Sub-tab has never been visited — clear the active slot so the
|
|
318
|
+
// view-epic's `fetchState === 'Not-Started' || transactionIds.length
|
|
319
|
+
// === 0` cache check falls through and triggers a fresh page-1
|
|
320
|
+
// fetch for the new dataset.
|
|
321
|
+
autoCat.uiState.pageToken = null;
|
|
322
|
+
autoCat.uiState.totalCount = {};
|
|
323
|
+
autoCat.transactionIdsBySelectedPeriod = {};
|
|
324
|
+
autoCat.fetchState = 'Not-Started';
|
|
325
|
+
autoCat.error = undefined;
|
|
326
|
+
}
|
|
327
|
+
draft.selectedTransactionCategorizationCompletedSubTab = newSubTab;
|
|
328
|
+
},
|
|
329
|
+
prepare(newSubTab) {
|
|
330
|
+
return { payload: { newSubTab } };
|
|
331
|
+
},
|
|
332
|
+
},
|
|
274
333
|
updateTransactionCategorization: {
|
|
275
334
|
reducer(draft, action) {
|
|
276
335
|
const selectedTab = action.payload.selectedTab;
|
|
@@ -812,74 +871,7 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
812
871
|
};
|
|
813
872
|
},
|
|
814
873
|
},
|
|
815
|
-
fetchAccountsForTransferFlow(draft, action) {
|
|
816
|
-
const slice = action.payload.kind === 'credit_card_only'
|
|
817
|
-
? draft.creditCardAccountsForTransfer
|
|
818
|
-
: draft.transferAccounts;
|
|
819
|
-
slice.fetchState = 'In-Progress';
|
|
820
|
-
},
|
|
821
|
-
updateAccountsForTransferFlow(draft, action) {
|
|
822
|
-
const slice = action.payload.kind === 'credit_card_only'
|
|
823
|
-
? draft.creditCardAccountsForTransfer
|
|
824
|
-
: draft.transferAccounts;
|
|
825
|
-
slice.fetchState = 'Completed';
|
|
826
|
-
slice.accountIds = action.payload.accountIds;
|
|
827
|
-
},
|
|
828
|
-
updateAccountsForTransferFlowFailure(draft, action) {
|
|
829
|
-
const slice = action.payload.kind === 'credit_card_only'
|
|
830
|
-
? draft.creditCardAccountsForTransfer
|
|
831
|
-
: draft.transferAccounts;
|
|
832
|
-
slice.fetchState = 'Error';
|
|
833
|
-
},
|
|
834
|
-
createTransferEntry: {
|
|
835
|
-
prepare(transactionId, creditAccountIntegrationId, debitAccountIntegrationId, memo, transactionType, sourceTransactionType) {
|
|
836
|
-
return {
|
|
837
|
-
payload: {
|
|
838
|
-
transactionId,
|
|
839
|
-
creditAccountIntegrationId,
|
|
840
|
-
debitAccountIntegrationId,
|
|
841
|
-
memo,
|
|
842
|
-
transactionType,
|
|
843
|
-
sourceTransactionType,
|
|
844
|
-
},
|
|
845
|
-
};
|
|
846
|
-
},
|
|
847
|
-
reducer(draft) {
|
|
848
|
-
draft.createTransferEntryStatus = 'In-Progress';
|
|
849
|
-
},
|
|
850
|
-
},
|
|
851
|
-
createTransferEntrySuccess(draft) {
|
|
852
|
-
draft.createTransferEntryStatus = 'Completed';
|
|
853
|
-
},
|
|
854
|
-
createTransferEntryFailure(draft) {
|
|
855
|
-
draft.createTransferEntryStatus = 'Error';
|
|
856
|
-
},
|
|
857
|
-
resetCreateTransferEntryStatus(draft) {
|
|
858
|
-
draft.createTransferEntryStatus = 'Not-Started';
|
|
859
|
-
},
|
|
860
|
-
createTransferEntryReplacedTransaction: {
|
|
861
|
-
prepare(previousTransactionId, newTransactionId) {
|
|
862
|
-
return { payload: { newTransactionId, previousTransactionId } };
|
|
863
|
-
},
|
|
864
|
-
reducer(draft, action) {
|
|
865
|
-
draft.lastTransferEntryReplacement = action.payload;
|
|
866
|
-
},
|
|
867
|
-
},
|
|
868
|
-
acknowledgeTransferEntryRouteReplacement(draft) {
|
|
869
|
-
draft.lastTransferEntryReplacement = undefined;
|
|
870
|
-
},
|
|
871
|
-
removeTransactionFromAllTabs: {
|
|
872
|
-
prepare(transactionId) {
|
|
873
|
-
return { payload: { transactionId } };
|
|
874
|
-
},
|
|
875
|
-
reducer(draft, action) {
|
|
876
|
-
const { transactionId } = action.payload;
|
|
877
|
-
for (const tab of TRANSACTIONS_TABS) {
|
|
878
|
-
removeTransactionFromTabView(draft.transactionCategorizationView[tab], transactionId);
|
|
879
|
-
}
|
|
880
|
-
},
|
|
881
|
-
},
|
|
882
874
|
},
|
|
883
875
|
});
|
|
884
|
-
export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab,
|
|
876
|
+
export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } = expenseAutomationTransactionsView.actions;
|
|
885
877
|
export default expenseAutomationTransactionsView.reducer;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import omit from 'lodash/omit';
|
|
2
2
|
import { reduceAllFetchState, reduceAnyFetchState, } from '../../../commonStateTypes/reduceFetchState';
|
|
3
3
|
import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
4
|
-
import { getAccountBase, getAccountBaseForCreditCardTransferAccounts, getAccountBaseForTransferAccounts, } from '../../../entity/account/accountSelector';
|
|
5
4
|
import { getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, } from '../../../entity/tenant/tenantSelector';
|
|
6
5
|
import { getTransactionWithCOT } from '../../../entity/transaction/transactionHelper';
|
|
7
6
|
import { getSupportedTransactionsByIds } from '../../../entity/transaction/transactionSelector';
|
|
@@ -9,12 +8,9 @@ import { getAccountList, getNestedAccountListHierarchy, getUncategorizedAccounts
|
|
|
9
8
|
import { getClassList, getNestedClassListHierarchy, } from '../../classList/classListSelector';
|
|
10
9
|
import { getProjectList } from '../../projectList/projectListSelector';
|
|
11
10
|
import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
|
|
12
|
-
export function getLastTransferEntryReplacement(state) {
|
|
13
|
-
return state.expenseAutomationTransactionsViewState.lastTransferEntryReplacement;
|
|
14
|
-
}
|
|
15
11
|
export function getExpenseAutomationTransactionView(state) {
|
|
16
12
|
const { accountState, classState, classListState, accountListState, expenseAutomationTransactionsViewState, expenseAutomationViewState, projectState, projectListState, transactionState, monthEndCloseChecksState, monthEndCloseChecksViewState, } = state;
|
|
17
|
-
const { selectedTransactionCategorizationTab } = expenseAutomationTransactionsViewState;
|
|
13
|
+
const { selectedTransactionCategorizationCompletedSubTab, selectedTransactionCategorizationTab, } = expenseAutomationTransactionsViewState;
|
|
18
14
|
const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, uploadReceiptStatusById, selectedTransactionId, selectedTransactionLineId, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
|
|
19
15
|
const uncategorizedIncomeExpense = getUncategorizedAccounts(accountState, accountListState, 'accountList');
|
|
20
16
|
const accountList = getAccountList(accountState, accountListState, 'accountList');
|
|
@@ -90,29 +86,6 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
90
86
|
: [];
|
|
91
87
|
const transactionCompletionStatus = allSteps.find((step) => step.step === 'transaction_categorization')?.completionStatus;
|
|
92
88
|
const completionStatus = transactionCompletionStatus ?? 'incomplete';
|
|
93
|
-
const transferAccountsFromApi = expenseAutomationTransactionsViewState.transferAccounts.accountIds
|
|
94
|
-
.map((id) => getAccountBaseForTransferAccounts(accountState, id))
|
|
95
|
-
.filter((account) => account != null);
|
|
96
|
-
/**
|
|
97
|
-
* Credit transfer picker uses transfer-account ids from a dedicated fetch. If that list
|
|
98
|
-
* resolves to nothing while the COA list is loaded, fall back to the full COA list so the
|
|
99
|
-
* credit dropdown is not empty.
|
|
100
|
-
*/
|
|
101
|
-
const transferAccountsList = transferAccountsFromApi.length > 0
|
|
102
|
-
? transferAccountsFromApi
|
|
103
|
-
: accountList.accounts
|
|
104
|
-
.map((a) => getAccountBase(accountState, a.accountId, 'account_list'))
|
|
105
|
-
.filter((account) => account != null);
|
|
106
|
-
const creditCardAccountsFromApi = expenseAutomationTransactionsViewState.creditCardAccountsForTransfer.accountIds
|
|
107
|
-
.map((id) => getAccountBaseForCreditCardTransferAccounts(accountState, id))
|
|
108
|
-
.filter((account) => account != null);
|
|
109
|
-
const coaCreditCardsFallback = accountList.accounts
|
|
110
|
-
.map((a) => getAccountBase(accountState, a.accountId, 'account_list'))
|
|
111
|
-
.filter((account) => account != null)
|
|
112
|
-
.filter((a) => a.accountType === 'credit_card');
|
|
113
|
-
const creditCardAccountsForTransferList = creditCardAccountsFromApi.length > 0
|
|
114
|
-
? creditCardAccountsFromApi
|
|
115
|
-
: coaCreditCardsFallback;
|
|
116
89
|
return {
|
|
117
90
|
version: 0,
|
|
118
91
|
fetchState: fetchStatus.fetchState,
|
|
@@ -133,14 +106,12 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
133
106
|
refreshStatus,
|
|
134
107
|
saveStatus,
|
|
135
108
|
markAsNotMiscategorizedStatus,
|
|
136
|
-
createTransferEntryStatus: expenseAutomationTransactionsViewState.createTransferEntryStatus,
|
|
137
109
|
completionStatus,
|
|
138
110
|
totalCountByTab,
|
|
139
111
|
fetchStateByTransactionTabs: fetchStateByTab,
|
|
140
112
|
uploadReceiptStatusById,
|
|
141
113
|
selectedTransactionId,
|
|
142
114
|
selectedTransactionLineId,
|
|
143
|
-
|
|
144
|
-
transferAccounts: transferAccountsList,
|
|
115
|
+
selectedTransactionCategorizationCompletedSubTab,
|
|
145
116
|
};
|
|
146
117
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { stringToUnion } from '../../../commonStateTypes/stringToUnion';
|
|
2
|
+
/**
|
|
3
|
+
* Sub-tabs that can appear under any "Completed" tab in the Expense Automation
|
|
4
|
+
* surface (Transaction Categorization Completed and Missing Receipts Completed
|
|
5
|
+
* both use this exact union). Forwarded verbatim to listing APIs as `sub_tab`
|
|
6
|
+
* / `match_type`. `'all'` preserves parent-tab semantics on the backend.
|
|
7
|
+
*/
|
|
8
|
+
const COMPLETED_SUB_TABS = ['all', 'ai_accountant', 'manual'];
|
|
9
|
+
export const toCompletedSubTab = (v) => stringToUnion(v.trim().toLowerCase(), COMPLETED_SUB_TABS);
|
|
@@ -39,8 +39,6 @@ const BULK_UPLOAD_RESULTS_TABS = ['completed', 'unmatched'];
|
|
|
39
39
|
export const toBulkUploadResultsTab = (v) => stringToUnion(v.trim().toLowerCase(), BULK_UPLOAD_RESULTS_TABS);
|
|
40
40
|
const MISSING_RECEIPTS_TABS = ['missing', 'completed', 'unmatched'];
|
|
41
41
|
export const toMissingReceiptsTab = (v) => stringToUnion(v.trim().toLowerCase(), MISSING_RECEIPTS_TABS);
|
|
42
|
-
const COMPLETED_SUB_TABS = ['all', 'ai_accountant', 'manual'];
|
|
43
|
-
export const toCompletedSubTab = (v) => stringToUnion(v.trim().toLowerCase(), COMPLETED_SUB_TABS);
|
|
44
42
|
const MATCH_SOURCES = ['ai', 'manual'];
|
|
45
43
|
export const toMatchSource = (v) => stringToUnion(v.trim().toLowerCase(), MATCH_SOURCES);
|
|
46
44
|
const BULK_UPLOAD_SORT_KEYS = [
|
|
@@ -25,8 +25,3 @@ export const initialSupportedTransactionCategorization = {
|
|
|
25
25
|
tabSpecificLineItems: {},
|
|
26
26
|
},
|
|
27
27
|
};
|
|
28
|
-
/** Which pool `fetchAccountsForTransferFlow` / transfer-flow epic should load. */
|
|
29
|
-
export const TRANSFER_ACCOUNTS_FETCH_KIND = [
|
|
30
|
-
'transfer_eligible',
|
|
31
|
-
'credit_card_only',
|
|
32
|
-
];
|
|
@@ -13,7 +13,6 @@ import { fetchAccountList } from '../../accountList/accountListReducer';
|
|
|
13
13
|
import { fetchClassList } from '../../classList/classListReducer';
|
|
14
14
|
import { getInitializedTransactionVendorLocalData } from '../../commonVendorView/transactionVendorView/transactionVendorLocalDataHelper';
|
|
15
15
|
import { updateTransactionVendorLocalData } from '../../commonVendorView/transactionVendorView/transactionVendorViewReducer';
|
|
16
|
-
import { fetchAccountsForTransferFlow } from '../../expenseAutomationView/reducers/transactionsViewReducer';
|
|
17
16
|
import { fetchOwnerList } from '../../ownerList/ownerListReducer';
|
|
18
17
|
import { fetchProjectList } from '../../projectList/projectListReducer';
|
|
19
18
|
import { fetchTransactionDetail, initializeTransactionDetailLocalData, removeTransactionDetail, updateTransactionDetailFetchState, } from '../transactionDetailReducer';
|
|
@@ -36,15 +35,6 @@ export const fetchTransactionDetailEpic = (actions$, state$, zeniAPI) => actions
|
|
|
36
35
|
accountList.fetchState !== 'In-Progress') {
|
|
37
36
|
transactionActions.push(fetchAccountList('accountList'));
|
|
38
37
|
}
|
|
39
|
-
const { transferAccounts, creditCardAccountsForTransfer, } = state$.value.expenseAutomationTransactionsViewState;
|
|
40
|
-
if (transferAccounts.fetchState !== 'In-Progress' &&
|
|
41
|
-
transferAccounts.fetchState !== 'Completed') {
|
|
42
|
-
transactionActions.push(fetchAccountsForTransferFlow({ kind: 'transfer_eligible' }));
|
|
43
|
-
}
|
|
44
|
-
if (creditCardAccountsForTransfer.fetchState !== 'In-Progress' &&
|
|
45
|
-
creditCardAccountsForTransfer.fetchState !== 'Completed') {
|
|
46
|
-
transactionActions.push(fetchAccountsForTransferFlow({ kind: 'credit_card_only' }));
|
|
47
|
-
}
|
|
48
38
|
const classList = state$.value.classListState;
|
|
49
39
|
if (classList.hasValidState() === false &&
|
|
50
40
|
classList.fetchState !== 'In-Progress') {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import recordGet from 'lodash/get';
|
|
2
2
|
import { reduceFetchState } from '../../commonStateTypes/reduceFetchState';
|
|
3
|
-
import {
|
|
4
|
-
import { getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled } from '../../entity/tenant/tenantSelector';
|
|
3
|
+
import { getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, } from '../../entity/tenant/tenantSelector';
|
|
5
4
|
import { toTransactionTypeStrict } from '../../entity/transaction/stateTypes/transactionType';
|
|
6
5
|
import { getTransactionWithCOT } from '../../entity/transaction/transactionHelper';
|
|
7
6
|
import { getSupportedTransactionById } from '../../entity/transaction/transactionSelector';
|
|
@@ -12,7 +11,7 @@ import { getClassList, getNestedClassListHierarchy, } from '../classList/classLi
|
|
|
12
11
|
import { getProjectList, } from '../projectList/projectListSelector';
|
|
13
12
|
import { getAllLinkedTransactions, getTransactionDetailKey, initialSupportedTransactionDetail, } from './transactionDetailState';
|
|
14
13
|
export const getTransactionDetail = (state, transactionId, fetchLinkedTransactions = true) => {
|
|
15
|
-
const { transactionDetailState, transactionState, vendorState, vendorListState, accountState, classState, classListState, accountListState,
|
|
14
|
+
const { transactionDetailState, transactionState, vendorState, vendorListState, accountState, classState, classListState, accountListState, projectState, projectListState, } = state;
|
|
16
15
|
const detailKey = getTransactionDetailKey(transactionId);
|
|
17
16
|
const transactionDetail = recordGet(transactionDetailState.transactionDetailById, detailKey);
|
|
18
17
|
let fetchState = {
|
|
@@ -73,24 +72,6 @@ export const getTransactionDetail = (state, transactionId, fetchLinkedTransactio
|
|
|
73
72
|
: [];
|
|
74
73
|
const transactionDetailAnyUpdateStatus = reduceUpdateFetchStates(transactionDetail);
|
|
75
74
|
const vendors = getVendorsByVendorIds(vendorState, vendorListState.vendorIds);
|
|
76
|
-
const transferAccountsFromApi = expenseAutomationTransactionsViewState.transferAccounts.accountIds
|
|
77
|
-
.map((id) => getAccountBaseForTransferAccounts(accountState, id))
|
|
78
|
-
.filter((account) => account != null);
|
|
79
|
-
const transferAccountsList = transferAccountsFromApi.length > 0
|
|
80
|
-
? transferAccountsFromApi
|
|
81
|
-
: accountsList.accounts
|
|
82
|
-
.map((a) => getAccountBase(accountState, a.accountId, 'account_list'))
|
|
83
|
-
.filter((account) => account != null);
|
|
84
|
-
const creditCardAccountsFromApi = expenseAutomationTransactionsViewState.creditCardAccountsForTransfer.accountIds
|
|
85
|
-
.map((id) => getAccountBaseForCreditCardTransferAccounts(accountState, id))
|
|
86
|
-
.filter((account) => account != null);
|
|
87
|
-
const coaCreditCardsFallback = accountsList.accounts
|
|
88
|
-
.map((a) => getAccountBase(accountState, a.accountId, 'account_list'))
|
|
89
|
-
.filter((account) => account != null)
|
|
90
|
-
.filter((a) => a.accountType === 'credit_card');
|
|
91
|
-
const creditCardAccountsForTransferList = creditCardAccountsFromApi.length > 0
|
|
92
|
-
? creditCardAccountsFromApi
|
|
93
|
-
: coaCreditCardsFallback;
|
|
94
75
|
return {
|
|
95
76
|
reportId: 'transaction_detail',
|
|
96
77
|
reportTitle: 'Transaction Detail',
|
|
@@ -107,9 +88,6 @@ export const getTransactionDetail = (state, transactionId, fetchLinkedTransactio
|
|
|
107
88
|
accountsHierarchyList,
|
|
108
89
|
classList: classList,
|
|
109
90
|
isAccountingClassesEnabled,
|
|
110
|
-
createTransferEntryStatus: expenseAutomationTransactionsViewState.createTransferEntryStatus,
|
|
111
|
-
creditCardAccountsForTransferList,
|
|
112
|
-
transferAccounts: transferAccountsList,
|
|
113
91
|
isAccountingProjectsEnabled,
|
|
114
92
|
projectList,
|
|
115
93
|
isUpdateNotAllowed: transactionDetail?.isUpdateNotAllowed,
|
package/lib/index.d.ts
CHANGED
|
@@ -273,7 +273,7 @@ import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFl
|
|
|
273
273
|
import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryJeSchedule as retryExpenseAutomationJESchedule, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, updateJESchedulesUIState as updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
|
|
274
274
|
import { acknowledgeBulkUploadConfirmMatchComplete, bulkUploadAutomatchingTimedOut, bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, clearManualSearchResults, clearMissingReceiptsTabNavigation, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchCompletedTransactions, fetchCompletedTransactionsFailure, fetchCompletedTransactionsSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, searchTransactionsForManualMatch, searchTransactionsForManualMatchFailure, searchTransactionsForManualMatchSuccess, setBulkUploadCompletedSubTab, setBulkUploadResultsTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, storeBatchDetails, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
275
275
|
import { deleteAccountStatement, excludeAccountFromReconciliation, fetchReconciliation as fetchReconciliationView, includeAccountInReconciliation, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateNodeCollapseState, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
|
|
276
|
-
import {
|
|
276
|
+
import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
277
277
|
import { ExpenseAutomationStepDetails, ExpenseAutomationViewSelector } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
|
|
278
278
|
import { ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView } from './view/expenseAutomationView/selectorTypes/fluxAnalysisViewSelectorTypes';
|
|
279
279
|
import { JEAccountSettingsView } from './view/expenseAutomationView/selectorTypes/jeAccountSettingsViewSelectorTypes';
|
|
@@ -285,10 +285,11 @@ import { ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSel
|
|
|
285
285
|
import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
|
|
286
286
|
import { JEScheduledTransactionWithFailedEntries } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
|
|
287
287
|
import { getExpenseAutomationReconciliationView, isAccountReconReport } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
|
|
288
|
-
import { getExpenseAutomationTransactionView
|
|
288
|
+
import { getExpenseAutomationTransactionView } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
|
|
289
289
|
import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
|
|
290
290
|
import { AccountSettingsLocalData, JEScheduleMainTab as ExpenseAutomationJEScheduleMainTab, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
|
|
291
|
-
import { BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef,
|
|
291
|
+
import { BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, MatchCandidate, MatchSource, MissingReceiptsTab, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toMatchSource, toMissingReceiptsTab } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
292
|
+
import { CompletedSubTab, toCompletedSubTab } from './view/expenseAutomationView/types/completedSubTab';
|
|
292
293
|
import { MissingReceiptsSortKey as ExpenseAutomationMissingReceiptsSortKey, MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState, MissingReceiptsViewUIState as ExpenseAutomationMissingReceiptsViewUIState, toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
293
294
|
import { AccountReconciliationLocalData, ExcludeAccountFromReconciliationPayload, ReconciliationViewTabType as ExpenseAutomationReconciliationViewTab, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReconcileTabLocalData, ReconciliationReviewTabLocalData, SaveReconcileDetailActionPayload as SaveExpenseAutomationReconciliationActionType, toReconciliationTabsType } from './view/expenseAutomationView/types/reconciliationViewState';
|
|
294
295
|
import { TransactionsTab as ExpenseAutomationTransactionsTab, TransactionsViewState as ExpenseAutomationTransactionsViewState, TransactionsViewUIState as ExpenseAutomationTransactionsViewUIState, SupportedTransactionCategorization, TransactionCategorizationLineItemData, TransactionReviewLocalData, TransactionsSortKey, TransactionsTab, toTransactionsTabKey as toExpenseAutomationTransactionsTabKey, toTransactionsSortKey } from './view/expenseAutomationView/types/transactionsViewState';
|
|
@@ -656,10 +657,10 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
|
|
|
656
657
|
export { ClassesViewSelectorReportV2 };
|
|
657
658
|
export { BalancesTimeseries, TrendTimeseries, BalanceKind };
|
|
658
659
|
export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
|
|
659
|
-
export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleMainTab, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView,
|
|
660
|
+
export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleMainTab, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
|
|
660
661
|
export { JEScheduleLocalData };
|
|
661
662
|
export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, JEScheduledTransactionWithFailedEntries, };
|
|
662
|
-
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab,
|
|
663
|
+
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };
|
|
663
664
|
export { TopExpense, TopExTimePeriod, TOP_EX_TIME_PERIODS };
|
|
664
665
|
export { TimeframeTick, TimeframeTickWithMetaData, toTimeframeTick, mapTimePeriodtoTimeframeTick, toTimePeriod, toAbsoluteDay, toMonthYearPeriodId, convertToPeriod, MonthYearPeriod, };
|
|
665
666
|
export { VendorSpendTrendFilterTabType, toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorExpenseSelector';
|