@zeniai/client-epic-state 5.0.61-betaML1 → 5.0.61-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 +9 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +1 -8
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +79 -78
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +20 -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.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +8 -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 +15 -0
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +2 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +10 -23
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +80 -79
- package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +2 -1
- package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +15 -4
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +0 -2
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +20 -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 +32 -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,44 @@ export const initialTransactionTabViewState = {
|
|
|
42
41
|
selectedTransactionLineId: undefined,
|
|
43
42
|
};
|
|
44
43
|
export const initialState = {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
autoCategorizedSubTabCache: {},
|
|
45
|
+
parentTotalCountByTab: {
|
|
46
|
+
review: {},
|
|
47
|
+
autoCategorized: {},
|
|
49
48
|
},
|
|
50
|
-
lastTransferEntryReplacement: undefined,
|
|
51
49
|
selectedTransactionCategorizationTab: 'review',
|
|
50
|
+
selectedTransactionCategorizationCompletedSubTab: 'all',
|
|
52
51
|
transactionCategorizationView: {
|
|
53
52
|
review: { ...initialTransactionTabViewState },
|
|
54
53
|
autoCategorized: { ...initialTransactionTabViewState },
|
|
55
54
|
},
|
|
56
|
-
transferAccounts: {
|
|
57
|
-
accountIds: [],
|
|
58
|
-
fetchState: 'Not-Started',
|
|
59
|
-
},
|
|
60
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* Capture the autoCategorized tab's current paginated dataset for a sub-tab.
|
|
58
|
+
* The mid-flight `'In-Progress'` state is normalised to `'Completed'` because
|
|
59
|
+
* the in-flight request is cancelled by `switchMap` in the fetch epic when the
|
|
60
|
+
* sub-tab changes — restoring `'In-Progress'` later would leave the UI stuck
|
|
61
|
+
* showing a phantom loading state with no fetch actually running. Length-zero
|
|
62
|
+
* datasets degrade to `'Not-Started'` so the next visit triggers a fresh
|
|
63
|
+
* fetch from page 1 instead of short-circuiting on stale empty caches.
|
|
64
|
+
*/
|
|
65
|
+
function snapshotAutoCategorizedTab(autoCat) {
|
|
66
|
+
const transactionIdsBySelectedPeriod = {
|
|
67
|
+
...autoCat.transactionIdsBySelectedPeriod,
|
|
68
|
+
};
|
|
69
|
+
const hasAnyLoadedRows = Object.values(transactionIdsBySelectedPeriod).some((ids) => ids.length > 0);
|
|
70
|
+
let normalisedFetchState = autoCat.fetchState;
|
|
71
|
+
if (normalisedFetchState === 'In-Progress') {
|
|
72
|
+
normalisedFetchState = hasAnyLoadedRows ? 'Completed' : 'Not-Started';
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
error: autoCat.error,
|
|
76
|
+
fetchState: normalisedFetchState,
|
|
77
|
+
pageToken: autoCat.uiState.pageToken,
|
|
78
|
+
totalCount: { ...autoCat.uiState.totalCount },
|
|
79
|
+
transactionIdsBySelectedPeriod,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
61
82
|
const expenseAutomationTransactionsView = createSlice({
|
|
62
83
|
name: 'expenseAutomationTransactionsView',
|
|
63
84
|
initialState,
|
|
@@ -271,6 +292,48 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
271
292
|
return { payload: { newSelectedTab } };
|
|
272
293
|
},
|
|
273
294
|
},
|
|
295
|
+
updateTransactionCategorizationCompletedSubTab: {
|
|
296
|
+
reducer(draft, action) {
|
|
297
|
+
const { newSubTab } = action.payload;
|
|
298
|
+
const previousSubTab = draft.selectedTransactionCategorizationCompletedSubTab;
|
|
299
|
+
if (previousSubTab === newSubTab) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const autoCat = draft.transactionCategorizationView.autoCategorized;
|
|
303
|
+
// Snapshot the outgoing sub-tab so a future revisit can short-circuit
|
|
304
|
+
// the fetch epic (mirrors the parent-tab "don't refetch what's
|
|
305
|
+
// already cached" behaviour). Period-scoped data is preserved as-is
|
|
306
|
+
// because the snapshot itself is keyed only by sub-tab; the active
|
|
307
|
+
// tab's per-period maps remain the source of truth while live.
|
|
308
|
+
draft.autoCategorizedSubTabCache[previousSubTab] =
|
|
309
|
+
snapshotAutoCategorizedTab(autoCat);
|
|
310
|
+
const cached = draft.autoCategorizedSubTabCache[newSubTab];
|
|
311
|
+
if (cached != null) {
|
|
312
|
+
autoCat.uiState.pageToken = cached.pageToken;
|
|
313
|
+
autoCat.uiState.totalCount = { ...cached.totalCount };
|
|
314
|
+
autoCat.transactionIdsBySelectedPeriod = {
|
|
315
|
+
...cached.transactionIdsBySelectedPeriod,
|
|
316
|
+
};
|
|
317
|
+
autoCat.fetchState = cached.fetchState;
|
|
318
|
+
autoCat.error = cached.error;
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
// Sub-tab has never been visited — clear the active slot so the
|
|
322
|
+
// view-epic's `fetchState === 'Not-Started' || transactionIds.length
|
|
323
|
+
// === 0` cache check falls through and triggers a fresh page-1
|
|
324
|
+
// fetch for the new dataset.
|
|
325
|
+
autoCat.uiState.pageToken = null;
|
|
326
|
+
autoCat.uiState.totalCount = {};
|
|
327
|
+
autoCat.transactionIdsBySelectedPeriod = {};
|
|
328
|
+
autoCat.fetchState = 'Not-Started';
|
|
329
|
+
autoCat.error = undefined;
|
|
330
|
+
}
|
|
331
|
+
draft.selectedTransactionCategorizationCompletedSubTab = newSubTab;
|
|
332
|
+
},
|
|
333
|
+
prepare(newSubTab) {
|
|
334
|
+
return { payload: { newSubTab } };
|
|
335
|
+
},
|
|
336
|
+
},
|
|
274
337
|
updateTransactionCategorization: {
|
|
275
338
|
reducer(draft, action) {
|
|
276
339
|
const selectedTab = action.payload.selectedTab;
|
|
@@ -708,6 +771,10 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
708
771
|
const { selectedTab, selectedPeriod, totalCount } = action.payload;
|
|
709
772
|
draft.transactionCategorizationView[selectedTab].uiState.totalCount[toMonthYearPeriodId(selectedPeriod)] = totalCount;
|
|
710
773
|
},
|
|
774
|
+
updateParentTotalCountForTab(draft, action) {
|
|
775
|
+
const { selectedTab, selectedPeriod, parentTotalCount } = action.payload;
|
|
776
|
+
draft.parentTotalCountByTab[selectedTab][toMonthYearPeriodId(selectedPeriod)] = parentTotalCount;
|
|
777
|
+
},
|
|
711
778
|
updateSelectedCheckboxTransactionIds(draft, action) {
|
|
712
779
|
const selectedTab = action.payload.selectedTab;
|
|
713
780
|
const transactionIds = action.payload.transactionIds;
|
|
@@ -718,6 +785,7 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
718
785
|
draft.transactionCategorizationView[selectedTab] = {
|
|
719
786
|
...initialTransactionTabViewState,
|
|
720
787
|
};
|
|
788
|
+
draft.parentTotalCountByTab[selectedTab] = {};
|
|
721
789
|
},
|
|
722
790
|
clearExpenseAutomationTransactionsView(draft) {
|
|
723
791
|
Object.assign(draft, initialState);
|
|
@@ -812,74 +880,7 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
812
880
|
};
|
|
813
881
|
},
|
|
814
882
|
},
|
|
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
883
|
},
|
|
883
884
|
});
|
|
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,
|
|
885
|
+
export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, updateParentTotalCountForTab, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } = expenseAutomationTransactionsView.actions;
|
|
885
886
|
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');
|
|
@@ -67,10 +63,27 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
67
63
|
.uiState.totalCount;
|
|
68
64
|
const totalCountByAutoCat = expenseAutomationTransactionsViewState.transactionCategorizationView
|
|
69
65
|
.autoCategorized.uiState.totalCount;
|
|
66
|
+
// Per-(sub-)tab counts powering pagination, in-list "showing X of Y", and
|
|
67
|
+
// any save/refresh round-trips. Sourced from `uiState.totalCount` which
|
|
68
|
+
// mirrors the response's `total_count` for whatever tab/sub-tab the user is
|
|
69
|
+
// viewing (e.g. only the Manual sub-tab rows for Completed → Manual).
|
|
70
70
|
const totalCountByTab = {
|
|
71
71
|
review: monthYearPeriodId != null ? totalCountByReview[monthYearPeriodId] : 0,
|
|
72
72
|
autoCategorized: monthYearPeriodId != null ? totalCountByAutoCat[monthYearPeriodId] : 0,
|
|
73
73
|
};
|
|
74
|
+
// Parent-tab badge counts. Sourced from `parent_tab_total_count` in the
|
|
75
|
+
// listing response and used exclusively by the navbar / tab strip badges.
|
|
76
|
+
// Independent of which Completed sub-tab is active so the badge stays
|
|
77
|
+
// stable across sub-tab switches.
|
|
78
|
+
const parentTotalCountByTab = expenseAutomationTransactionsViewState.parentTotalCountByTab;
|
|
79
|
+
const parentTabTotalCountByTab = {
|
|
80
|
+
review: monthYearPeriodId != null
|
|
81
|
+
? (parentTotalCountByTab.review[monthYearPeriodId] ?? 0)
|
|
82
|
+
: 0,
|
|
83
|
+
autoCategorized: monthYearPeriodId != null
|
|
84
|
+
? (parentTotalCountByTab.autoCategorized[monthYearPeriodId] ?? 0)
|
|
85
|
+
: 0,
|
|
86
|
+
};
|
|
74
87
|
const fetchStateByTab = {
|
|
75
88
|
review: {
|
|
76
89
|
fetchState: expenseAutomationTransactionsViewState.transactionCategorizationView
|
|
@@ -90,29 +103,6 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
90
103
|
: [];
|
|
91
104
|
const transactionCompletionStatus = allSteps.find((step) => step.step === 'transaction_categorization')?.completionStatus;
|
|
92
105
|
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
106
|
return {
|
|
117
107
|
version: 0,
|
|
118
108
|
fetchState: fetchStatus.fetchState,
|
|
@@ -133,14 +123,13 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
133
123
|
refreshStatus,
|
|
134
124
|
saveStatus,
|
|
135
125
|
markAsNotMiscategorizedStatus,
|
|
136
|
-
createTransferEntryStatus: expenseAutomationTransactionsViewState.createTransferEntryStatus,
|
|
137
126
|
completionStatus,
|
|
138
127
|
totalCountByTab,
|
|
128
|
+
parentTabTotalCountByTab,
|
|
139
129
|
fetchStateByTransactionTabs: fetchStateByTab,
|
|
140
130
|
uploadReceiptStatusById,
|
|
141
131
|
selectedTransactionId,
|
|
142
132
|
selectedTransactionLineId,
|
|
143
|
-
|
|
144
|
-
transferAccounts: transferAccountsList,
|
|
133
|
+
selectedTransactionCategorizationCompletedSubTab,
|
|
145
134
|
};
|
|
146
135
|
}
|
|
@@ -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';
|