@zeniai/client-epic-state 4.19.41-betaML4 → 4.19.42-betaAR1
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/esm/index.js +3 -3
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +11 -1
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +57 -8
- package/lib/esm/view/spendManagement/spendManagementFilterHelpers.js +137 -1
- package/lib/index.d.ts +5 -5
- package/lib/index.js +31 -29
- package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +5 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +12 -2
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +4 -1
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +59 -8
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +2 -0
- package/lib/view/spendManagement/spendManagementFilterHelpers.d.ts +43 -4
- package/lib/view/spendManagement/spendManagementFilterHelpers.js +138 -2
- package/package.json +1 -1
package/lib/esm/index.js
CHANGED
|
@@ -163,7 +163,7 @@ import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFl
|
|
|
163
163
|
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, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
|
|
164
164
|
import { fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess, } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
165
165
|
import { deleteAccountStatement, fetchReconciliation as fetchReconciliationView, 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, updateStatementUploadChosen, uploadAccountStatement, } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
|
|
166
|
-
import { clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
166
|
+
import { clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionFilters, } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
167
167
|
import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
|
|
168
168
|
import { getExpenseAutomationReconciliationView, isAccountReconReport, } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
|
|
169
169
|
import { getExpenseAutomationTransactionView } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
|
|
@@ -311,7 +311,7 @@ import { acceptEmployeeRemiTerms, acceptRemiTerms, clearRemiSetupView, fetchRemi
|
|
|
311
311
|
import { getRemiBusinessVerificationDetails, getRemiSetupViewDetails, } from './view/spendManagement/reimbursement/remiSetupView/remiSetupViewSelector';
|
|
312
312
|
import { approveOrRejectRemisBulkAction, autoReviewPendingApprovalRemis, cancelOrDeleteRemisBulkAction, clearAllRemisFromBulkActionList, clearRemiBulkActionView, incrementRemiBulkActionProcessedCount, removeRemiFromBulkActionList, reviewDraftRemisBulkAction, submitDraftRemisBulkAction, updateRemisBulkActionList, } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewReducer';
|
|
313
313
|
import { getRemisBulkOperationProgress, getRemisBulkReviewView, } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewSelector';
|
|
314
|
-
import { hideCreatedByFilter, } from './view/spendManagement/spendManagementFilterHelpers';
|
|
314
|
+
import { TRANSACTION_FILTER_CATEGORIES, hideCreatedByFilter, } from './view/spendManagement/spendManagementFilterHelpers';
|
|
315
315
|
import { acceptTreasuryTerms, clearTreasurySetupView, fetchPortfolioAllocation, fetchTreasuryFunds, fetchTreasurySetupView, updateFundAllocationLocalData, updatePortfolioAllocation, updateTreasuryVideoViewed, } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer';
|
|
316
316
|
import { getTreasuryBusinessVerificationDetails, getTreasurySetupViewDetails, } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewSelector';
|
|
317
317
|
import { getTreasuryFundsMaximumYield, } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewState';
|
|
@@ -408,7 +408,7 @@ export { toCOABalanceTypeStrict, toCOABalanceType as toCOABlanaceType, isCalcula
|
|
|
408
408
|
export { stringToUnion, stringToUnionStrict };
|
|
409
409
|
export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, getMonthEndCloseChecksViewByTenantId, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, };
|
|
410
410
|
export { getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, getExpenseAutomationFluxAnalysisView, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, updateFluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, getExpenseAutomationReconciliationView, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, getAccountReconByAccountIdAndSelectedPeriod, toReconciliationTabsType, isAccountReconReport, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, toReconciliationAccountSource, deleteAccountStatement, uploadAccountStatement, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
|
|
411
|
-
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, toTransactionsSortKey, };
|
|
411
|
+
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateTransactionFilters, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, toTransactionsSortKey, TRANSACTION_FILTER_CATEGORIES, };
|
|
412
412
|
export { TOP_EX_TIME_PERIODS };
|
|
413
413
|
export { toTimeframeTick, mapTimePeriodtoTimeframeTick, toTimePeriod, toAbsoluteDay, toMonthYearPeriodId, convertToPeriod, };
|
|
414
414
|
export { toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorExpenseSelector';
|
|
@@ -27,6 +27,10 @@ export const initialTransactionTabViewState = {
|
|
|
27
27
|
totalCount: {},
|
|
28
28
|
limit: 10,
|
|
29
29
|
},
|
|
30
|
+
filters: {
|
|
31
|
+
categoryCombinationOperator: 'AND',
|
|
32
|
+
categories: [],
|
|
33
|
+
},
|
|
30
34
|
fetchState: 'Not-Started',
|
|
31
35
|
error: undefined,
|
|
32
36
|
hasValidState() {
|
|
@@ -235,6 +239,12 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
235
239
|
uiState.totalCount;
|
|
236
240
|
}
|
|
237
241
|
},
|
|
242
|
+
updateTransactionFilters(draft, action) {
|
|
243
|
+
const { selectedTab, filters } = action.payload;
|
|
244
|
+
if (filters != null) {
|
|
245
|
+
draft.transactionCategorizationView[selectedTab].filters = filters;
|
|
246
|
+
}
|
|
247
|
+
},
|
|
238
248
|
saveTransactionCategorization: {
|
|
239
249
|
prepare(selectedTab, transactionIds, cotTrackingByTransactionId, isUncategorizedExpenseCategoryEnabled) {
|
|
240
250
|
return {
|
|
@@ -780,5 +790,5 @@ const expenseAutomationTransactionsView = createSlice({
|
|
|
780
790
|
},
|
|
781
791
|
},
|
|
782
792
|
});
|
|
783
|
-
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, } = expenseAutomationTransactionsView.actions;
|
|
793
|
+
export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, updateTransactionFilters, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, } = expenseAutomationTransactionsView.actions;
|
|
784
794
|
export default expenseAutomationTransactionsView.reducer;
|
|
@@ -4,13 +4,32 @@ import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
|
4
4
|
import { getCurrentTenant } from '../../../entity/tenant/tenantSelector';
|
|
5
5
|
import { getTransactionWithCOT } from '../../../entity/transaction/transactionHelper';
|
|
6
6
|
import { getSupportedTransactionsByIds } from '../../../entity/transaction/transactionSelector';
|
|
7
|
+
import { applyAdvancedFiltersOnList, } from '../../spendManagement/spendManagementFilterHelpers';
|
|
7
8
|
import { getAccountList, getNestedAccountListHierarchy, getUncategorizedAccounts, } from '../../accountList/accountListSelector';
|
|
8
9
|
import { getClassList, getNestedClassListHierarchy, } from '../../classList/classListSelector';
|
|
9
10
|
import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
|
|
11
|
+
export const toTransactionView = (transaction, transactionLocalData) => {
|
|
12
|
+
return {
|
|
13
|
+
id: transaction.id,
|
|
14
|
+
date: transaction.date,
|
|
15
|
+
amount: transaction.amount,
|
|
16
|
+
vendorName: transaction.vendorName,
|
|
17
|
+
customerName: transaction.customerName,
|
|
18
|
+
vendorId: transaction.vendorId,
|
|
19
|
+
customerId: transaction.customerId,
|
|
20
|
+
description: transaction.description,
|
|
21
|
+
memo: transaction.memo,
|
|
22
|
+
type: transaction.type,
|
|
23
|
+
typeName: transaction.typeName,
|
|
24
|
+
createTime: transaction.createTime,
|
|
25
|
+
transaction: transaction,
|
|
26
|
+
transactionLocalData,
|
|
27
|
+
};
|
|
28
|
+
};
|
|
10
29
|
export function getExpenseAutomationTransactionView(state) {
|
|
11
30
|
const { accountState, classState, classListState, accountListState, expenseAutomationTransactionsViewState, expenseAutomationViewState, transactionState, monthEndCloseChecksState, } = state;
|
|
12
31
|
const { selectedTransactionCategorizationTab } = expenseAutomationTransactionsViewState;
|
|
13
|
-
const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, selectedTransactionId, selectedTransactionLineId, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
|
|
32
|
+
const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, selectedTransactionId, selectedTransactionLineId, filters, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
|
|
14
33
|
const uncategorizedIncomeExpense = getUncategorizedAccounts(accountState, accountListState, 'accountList');
|
|
15
34
|
const accountList = getAccountList(accountState, accountListState, 'accountList');
|
|
16
35
|
const classList = getClassList(classState, classListState);
|
|
@@ -27,10 +46,42 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
27
46
|
? transactionIdsBySelectedPeriod[monthYearPeriodId]
|
|
28
47
|
: null;
|
|
29
48
|
const transactionIds = transactionIdsForSelectedPeriod ?? [];
|
|
30
|
-
const
|
|
31
|
-
|
|
49
|
+
const transactions = getSupportedTransactionsByIds(transactionState, transactionIds);
|
|
50
|
+
const transactionsWithCOT = transactions.map((transaction) => getTransactionWithCOT(transaction));
|
|
51
|
+
const transactionLocalDataMap = new Map();
|
|
52
|
+
transactionIds.forEach((transactionId) => {
|
|
32
53
|
const transactionData = transactionReviewLocalDataById[transactionId];
|
|
33
54
|
if (transactionData != null) {
|
|
55
|
+
transactionLocalDataMap.set(transactionId, {
|
|
56
|
+
transactionId,
|
|
57
|
+
transactionReviewLocalData: transactionData.transactionReviewLocalData,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
// Step 2: Convert to TransactionView and apply advanced filters
|
|
62
|
+
const transactionViews = transactionsWithCOT.map((transaction) => {
|
|
63
|
+
const localData = transactionLocalDataMap.get(transaction.id);
|
|
64
|
+
return toTransactionView(transaction, localData);
|
|
65
|
+
});
|
|
66
|
+
// Apply advanced filters if they exist
|
|
67
|
+
const filteredTransactionViews = applyAdvancedFiltersOnList('transaction_categorization', transactionViews, filters);
|
|
68
|
+
// Convert back to TransactionWithCOT for return
|
|
69
|
+
const filteredTransactionsWithCOT = filteredTransactionViews.map((view) => view.transaction);
|
|
70
|
+
// Get transactionLocalData for filtered transactions
|
|
71
|
+
// Also include transactionLocalData for transactions that don't exist in transactionState
|
|
72
|
+
// but have local data (to match original behavior)
|
|
73
|
+
const filteredTransactionIds = new Set(filteredTransactionViews.map((view) => view.id));
|
|
74
|
+
const filteredTransactionLocalData = transactionIds
|
|
75
|
+
.map((transactionId) => {
|
|
76
|
+
const transactionData = transactionReviewLocalDataById[transactionId];
|
|
77
|
+
if (transactionData == null) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
// Include if transaction is in filtered results, or if transaction doesn't exist in state
|
|
81
|
+
// (to maintain backward compatibility with tests)
|
|
82
|
+
const transactionExists = transactions.some((t) => t.id === transactionId);
|
|
83
|
+
if (filteredTransactionIds.has(transactionId) ||
|
|
84
|
+
!transactionExists) {
|
|
34
85
|
return {
|
|
35
86
|
transactionId,
|
|
36
87
|
transactionReviewLocalData: transactionData.transactionReviewLocalData,
|
|
@@ -38,9 +89,7 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
38
89
|
}
|
|
39
90
|
return null;
|
|
40
91
|
})
|
|
41
|
-
.filter((
|
|
42
|
-
const transactions = getSupportedTransactionsByIds(transactionState, transactionIds);
|
|
43
|
-
const transactionsWithCOT = transactions.map((transaction) => getTransactionWithCOT(transaction));
|
|
92
|
+
.filter((data) => data != null);
|
|
44
93
|
const fetchStatus = reduceAllFetchState([
|
|
45
94
|
accountList,
|
|
46
95
|
classList,
|
|
@@ -77,7 +126,7 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
77
126
|
version: 0,
|
|
78
127
|
fetchState: fetchStatus.fetchState,
|
|
79
128
|
error: fetchStatus.error,
|
|
80
|
-
transactions:
|
|
129
|
+
transactions: filteredTransactionsWithCOT,
|
|
81
130
|
selectedCheckBoxTransactionIds,
|
|
82
131
|
transactionIdsWithUnsavedData,
|
|
83
132
|
uncategorizedAccounts: uncategorizedIncomeExpense,
|
|
@@ -86,7 +135,7 @@ export function getExpenseAutomationTransactionView(state) {
|
|
|
86
135
|
classList: allClasses,
|
|
87
136
|
accountsHierarchyList,
|
|
88
137
|
classHierarchyList,
|
|
89
|
-
transactionLocalData,
|
|
138
|
+
transactionLocalData: filteredTransactionLocalData,
|
|
90
139
|
uiState,
|
|
91
140
|
refreshStatus,
|
|
92
141
|
saveStatus,
|
|
@@ -7,6 +7,14 @@ import { ALL_BILL_TABS, getBillListKey, } from './billPay/billList/billListState
|
|
|
7
7
|
import { getActualPaymentDate } from './helpers';
|
|
8
8
|
import { getApproversOrRejectors as getApproversOrRejectorsForReimbursement, } from './reimbursement/remiListView/remiListSelector';
|
|
9
9
|
import { ALL_REMI_TABS, getRemiListKey, } from './reimbursement/remiListView/remiListState';
|
|
10
|
+
export const TRANSACTION_FILTER_CATEGORIES = [
|
|
11
|
+
{ value: 'payment_account_name', type: 'searchAutocomplete' },
|
|
12
|
+
{ value: 'payment_account_type', type: 'dropdown' },
|
|
13
|
+
{ value: 'payee', type: 'searchAutocomplete' },
|
|
14
|
+
{ value: 'category', type: 'dropdown' },
|
|
15
|
+
{ value: 'class', type: 'dropdown' },
|
|
16
|
+
{ value: 'amount', type: 'numberRange' },
|
|
17
|
+
];
|
|
10
18
|
//filters items against filter values representing a range. ex: date (from-to), amount(1k<-->5k)
|
|
11
19
|
const filterItemOnRangeCategoryType = (valueForItem, currentFilter) => {
|
|
12
20
|
let doesItemFallInValueRange = false;
|
|
@@ -104,7 +112,11 @@ export const applyAdvancedFiltersOnList = (entity, allItems, filters, filteredIt
|
|
|
104
112
|
? getCategoryValueForBill(key, item)
|
|
105
113
|
: entity === 'reimbursement'
|
|
106
114
|
? getCategoryValueForReimbursement(key, item)
|
|
107
|
-
:
|
|
115
|
+
: entity === 'task_management'
|
|
116
|
+
? getCategoryValueForTaskList(key, item)
|
|
117
|
+
: entity === 'transaction_categorization'
|
|
118
|
+
? getCategoryValueForTransaction(key, item)
|
|
119
|
+
: undefined;
|
|
108
120
|
if (categoryValue == null) {
|
|
109
121
|
if (currentFilter.matchingOperator === 'not-equal') {
|
|
110
122
|
return true;
|
|
@@ -224,6 +236,130 @@ const getCategoryValueForReimbursement = (key, reimbursement) => {
|
|
|
224
236
|
return undefined;
|
|
225
237
|
}
|
|
226
238
|
};
|
|
239
|
+
const getCategoryValueForTransaction = (key, transaction) => {
|
|
240
|
+
switch (key) {
|
|
241
|
+
case 'amount': {
|
|
242
|
+
// Get from transactionLocalData line items (preferred) - sum all line item amounts
|
|
243
|
+
const localDataForAmount = transaction.transactionLocalData?.transactionReviewLocalData;
|
|
244
|
+
if (localDataForAmount?.lineItemById) {
|
|
245
|
+
const lineItems = Object.values(localDataForAmount.lineItemById);
|
|
246
|
+
if (lineItems.length > 0) {
|
|
247
|
+
// Sum all line item amounts
|
|
248
|
+
const totalAmount = lineItems.reduce((sum, lineItem) => sum + (lineItem.amount?.amount ?? 0), 0);
|
|
249
|
+
return totalAmount;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// Fallback to transaction-level amount or sum from transaction lines
|
|
253
|
+
if (transaction.transaction.lines && transaction.transaction.lines.length > 0) {
|
|
254
|
+
const totalAmount = transaction.transaction.lines.reduce((sum, line) => sum + (line.amount?.amount ?? 0), 0);
|
|
255
|
+
return totalAmount;
|
|
256
|
+
}
|
|
257
|
+
// Final fallback to transaction amount
|
|
258
|
+
return transaction.amount.amount;
|
|
259
|
+
}
|
|
260
|
+
case 'payee': {
|
|
261
|
+
// Priority: vendorName > customerName > from transactionLocalData
|
|
262
|
+
if (transaction.vendorName) {
|
|
263
|
+
return transaction.vendorName;
|
|
264
|
+
}
|
|
265
|
+
if (transaction.customerName) {
|
|
266
|
+
return transaction.customerName;
|
|
267
|
+
}
|
|
268
|
+
// Check transactionLocalData for vendor/customer
|
|
269
|
+
const localData = transaction.transactionLocalData?.transactionReviewLocalData;
|
|
270
|
+
if (localData?.vendor?.name) {
|
|
271
|
+
return localData.vendor.name;
|
|
272
|
+
}
|
|
273
|
+
if (localData?.customer?.name) {
|
|
274
|
+
return localData.customer.name;
|
|
275
|
+
}
|
|
276
|
+
return undefined;
|
|
277
|
+
}
|
|
278
|
+
case 'payment_account_name': {
|
|
279
|
+
// Get from transaction.account or from lines
|
|
280
|
+
if (transaction.transaction.account?.accountName) {
|
|
281
|
+
return transaction.transaction.account.accountName;
|
|
282
|
+
}
|
|
283
|
+
// Get from first line's account
|
|
284
|
+
const firstLine = transaction.transaction.lines?.[0];
|
|
285
|
+
if (firstLine?.type === 'transaction_with_account_and_class_line' ||
|
|
286
|
+
firstLine?.type === 'transaction_with_product_or_service_line' ||
|
|
287
|
+
firstLine?.type === 'journal_entry_transaction_line') {
|
|
288
|
+
const accountLine = firstLine;
|
|
289
|
+
return accountLine.account?.accountName;
|
|
290
|
+
}
|
|
291
|
+
return undefined;
|
|
292
|
+
}
|
|
293
|
+
case 'payment_account_type': {
|
|
294
|
+
// Similar to payment_account_name but for type
|
|
295
|
+
if (transaction.transaction.account?.accountType) {
|
|
296
|
+
return transaction.transaction.account.accountType;
|
|
297
|
+
}
|
|
298
|
+
const firstLineForType = transaction.transaction.lines?.[0];
|
|
299
|
+
if (firstLineForType?.type === 'transaction_with_account_and_class_line' ||
|
|
300
|
+
firstLineForType?.type === 'transaction_with_product_or_service_line' ||
|
|
301
|
+
firstLineForType?.type === 'journal_entry_transaction_line') {
|
|
302
|
+
const accountLineForType = firstLineForType;
|
|
303
|
+
return accountLineForType.account?.accountType;
|
|
304
|
+
}
|
|
305
|
+
return undefined;
|
|
306
|
+
}
|
|
307
|
+
case 'category': {
|
|
308
|
+
// Get from transactionLocalData (preferred) or from transaction lines
|
|
309
|
+
const localDataForCategory = transaction.transactionLocalData?.transactionReviewLocalData;
|
|
310
|
+
if (localDataForCategory) {
|
|
311
|
+
// Get category from first line item or most common
|
|
312
|
+
const firstLineItem = Object.values(localDataForCategory.lineItemById)[0];
|
|
313
|
+
if (firstLineItem?.account?.accountId) {
|
|
314
|
+
return firstLineItem.account.accountId;
|
|
315
|
+
}
|
|
316
|
+
if (firstLineItem?.account?.qboId) {
|
|
317
|
+
return firstLineItem.account.qboId;
|
|
318
|
+
}
|
|
319
|
+
if (firstLineItem?.account?.accountName) {
|
|
320
|
+
return firstLineItem.account.accountName;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Fallback to transaction lines
|
|
324
|
+
const firstLineForCategory = transaction.transaction.lines?.[0];
|
|
325
|
+
if (firstLineForCategory?.type === 'transaction_with_account_and_class_line' ||
|
|
326
|
+
firstLineForCategory?.type === 'transaction_with_product_or_service_line' ||
|
|
327
|
+
firstLineForCategory?.type === 'journal_entry_transaction_line') {
|
|
328
|
+
const account = firstLineForCategory
|
|
329
|
+
.account;
|
|
330
|
+
return account?.accountId ?? account?.qboId ?? account?.accountName;
|
|
331
|
+
}
|
|
332
|
+
return undefined;
|
|
333
|
+
}
|
|
334
|
+
case 'class': {
|
|
335
|
+
// Similar to category but for class
|
|
336
|
+
const localDataForClass = transaction.transactionLocalData?.transactionReviewLocalData;
|
|
337
|
+
if (localDataForClass) {
|
|
338
|
+
const firstLineItemForClass = Object.values(localDataForClass.lineItemById)[0];
|
|
339
|
+
if (firstLineItemForClass?.class?.classId) {
|
|
340
|
+
return firstLineItemForClass.class.classId;
|
|
341
|
+
}
|
|
342
|
+
if (firstLineItemForClass?.class?.qboId) {
|
|
343
|
+
return firstLineItemForClass.class.qboId;
|
|
344
|
+
}
|
|
345
|
+
if (firstLineItemForClass?.class?.className) {
|
|
346
|
+
return firstLineItemForClass.class.className;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
const firstLineForClass = transaction.transaction.lines?.[0];
|
|
350
|
+
if (firstLineForClass?.type === 'transaction_with_account_and_class_line' ||
|
|
351
|
+
firstLineForClass?.type === 'transaction_with_product_or_service_line' ||
|
|
352
|
+
firstLineForClass?.type === 'journal_entry_transaction_line') {
|
|
353
|
+
const classData = firstLineForClass
|
|
354
|
+
.class;
|
|
355
|
+
return classData?.classId ?? classData?.qboId ?? classData?.className;
|
|
356
|
+
}
|
|
357
|
+
return undefined;
|
|
358
|
+
}
|
|
359
|
+
default:
|
|
360
|
+
return undefined;
|
|
361
|
+
}
|
|
362
|
+
};
|
|
227
363
|
export const isBillListDownloadable = (state, currentTimePeriod) => {
|
|
228
364
|
const { billListState, billTransactionState, entityApprovalStatusState, userState, } = state;
|
|
229
365
|
const keys = ALL_BILL_TABS.filter((tab) => tab !== 'draft').map((tab) => getBillListKey(currentTimePeriod, tab));
|
package/lib/index.d.ts
CHANGED
|
@@ -265,7 +265,7 @@ import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFl
|
|
|
265
265
|
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, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
|
|
266
266
|
import { fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
267
267
|
import { deleteAccountStatement, fetchReconciliation as fetchReconciliationView, 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, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
|
|
268
|
-
import { clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
268
|
+
import { clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionFilters } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
269
269
|
import { ExpenseAutomationStepDetails, ExpenseAutomationViewSelector } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
|
|
270
270
|
import { ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView } from './view/expenseAutomationView/selectorTypes/fluxAnalysisViewSelectorTypes';
|
|
271
271
|
import { JEAccountSettingsView } from './view/expenseAutomationView/selectorTypes/jeAccountSettingsViewSelectorTypes';
|
|
@@ -476,7 +476,7 @@ import { RemiBusinessVerificationDetails, RemiSetupView, getRemiBusinessVerifica
|
|
|
476
476
|
import { MileageDenomination, MileageDetailsLocalData, RemiSetupViewLocalData, RemiSetupViewState } from './view/spendManagement/reimbursement/remiSetupView/remiSetupViewState';
|
|
477
477
|
import { approveOrRejectRemisBulkAction, autoReviewPendingApprovalRemis, cancelOrDeleteRemisBulkAction, clearAllRemisFromBulkActionList, clearRemiBulkActionView, incrementRemiBulkActionProcessedCount, removeRemiFromBulkActionList, reviewDraftRemisBulkAction, submitDraftRemisBulkAction, updateRemisBulkActionList } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewReducer';
|
|
478
478
|
import { RemisBulkReviewView, getRemisBulkOperationProgress, getRemisBulkReviewView } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewSelector';
|
|
479
|
-
import { BillPayFilterCategoryDropdownOption, CategoryCombinationOperator, FilterCategoryType, MatchingOperatorDropdownOption, ReimbursementFilterCategoryDropdownOption, SpendManagementFilterCategoryDropdownOption, SpendManagementFilterEntityType, SpendManagementFiltersType, TaskFilterCategoryDropdownOption, hideCreatedByFilter } from './view/spendManagement/spendManagementFilterHelpers';
|
|
479
|
+
import { BillPayFilterCategoryDropdownOption, CategoryCombinationOperator, FilterCategoryType, MatchingOperatorDropdownOption, ReimbursementFilterCategoryDropdownOption, SpendManagementFilterCategoryDropdownOption, SpendManagementFilterEntityType, SpendManagementFiltersType, TaskFilterCategoryDropdownOption, TRANSACTION_FILTER_CATEGORIES, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters, hideCreatedByFilter } from './view/spendManagement/spendManagementFilterHelpers';
|
|
480
480
|
import { acceptTreasuryTerms, clearTreasurySetupView, fetchPortfolioAllocation, fetchTreasuryFunds, fetchTreasurySetupView, updateFundAllocationLocalData, updatePortfolioAllocation, updateTreasuryVideoViewed } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer';
|
|
481
481
|
import { TreasuryBusinessVerificationDetails, TreasurySetupView, getTreasuryBusinessVerificationDetails, getTreasurySetupViewDetails } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewSelector';
|
|
482
482
|
import { FundAllocationOption, FundComposition, FundData, getTreasuryFundsMaximumYield } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewState';
|
|
@@ -616,7 +616,7 @@ export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePe
|
|
|
616
616
|
export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, 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, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
|
|
617
617
|
export { JEScheduleLocalData };
|
|
618
618
|
export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, JEScheduledTransactionWithFailedEntries, };
|
|
619
|
-
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, };
|
|
619
|
+
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateTransactionFilters, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionFilterCategoryField, TRANSACTION_FILTER_CATEGORIES, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };
|
|
620
620
|
export { TopExpense, TopExTimePeriod, TOP_EX_TIME_PERIODS };
|
|
621
621
|
export { TimeframeTick, TimeframeTickWithMetaData, toTimeframeTick, mapTimePeriodtoTimeframeTick, toTimePeriod, toAbsoluteDay, toMonthYearPeriodId, convertToPeriod, MonthYearPeriod, };
|
|
622
622
|
export { VendorSpendTrendFilterTabType, toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorExpenseSelector';
|
|
@@ -694,7 +694,7 @@ export { fetchIncomeTrend, fetchExpenseTrend, clearTrendData };
|
|
|
694
694
|
export { getTrendForEntity, TrendView, getCurrentFiscalQuarterDateRange };
|
|
695
695
|
export { CustomerIncomeTrend };
|
|
696
696
|
export { VendorExpenseTrend, VendorExpenseState, VendorSpend };
|
|
697
|
-
export { Entity, toEntityType, TransactionEntityType };
|
|
697
|
+
export { Entity, toEntityType, TransactionEntityType, TransactionFilterEntityType };
|
|
698
698
|
export { fetchEntityAutoCompleteEpic };
|
|
699
699
|
export { clearEntityAutoCompleteResults, clearAllEntityAutoCompleteResults, fetchEntityAutoCompleteResults, };
|
|
700
700
|
export { EntityAutoCompleteView, getEntityAutoCompleteResults };
|
|
@@ -746,7 +746,7 @@ export { BillTransaction, BillPayInfo, BillStage, BillStageCodeType, BillTransac
|
|
|
746
746
|
export { MilageReimbursementLine, OutofPocketReimbursementLine, ReimbursementLine, ReimbursementTypeCode, Reimbursement, RemiTabType, toRemiSubTabType, toRemiSubTabTypeStrict, toRemiTabType, toRemiTabTypeStrict, toReimbursementTypeCode, RemiSubTabType, ReimbursementViewSortKey, RemiListUIState, RemiListReport, RemiListDownloadReport, ReimbursementView, ReimbursementFilters, ReimbursementFilterCategory, RemiListViewFilterCategoryField, getRemiList, getRemiDownloadList, fetchRemiList, fetchRemiListPerTab, updateRemiListTab, updateRemiListSubTab, updateRemiDetailSaveRemiCode, updateRemiListUIState, updateRemiListSearchResult, updateBillListFilterResult, updateRemiListFilterResult, REIMBURSEMENT_FILTER_CATEGORIES, REIMBURSEMENT_FILTER_CATEGORIES_RESTRICTED, updateRemiListDownloadUIState, updateBillListDownloadUIState, updateBillsBulkActionList, removeBillFromBulkActionList, clearAllBillsFromBulkActionList, getBillsBulkReviewView, BillsBulkReviewView, validateBillsBulkAction, approveOrRejectBillsBulkAction, cancelOrDeleteBillsBulkAction, submitDraftBillsBulkAction, autoReviewPendingApprovalBills, incrementBulkActionProcessedCount, getBillsBulkOperationProgress, BulkOperationProgress, clearBillPayBulkActionView, isBillConditionallyValid, getRemisBulkReviewView, RemisBulkReviewView, getRemisBulkOperationProgress, updateRemisBulkActionList, removeRemiFromBulkActionList, clearAllRemisFromBulkActionList, reviewDraftRemisBulkAction, approveOrRejectRemisBulkAction, cancelOrDeleteRemisBulkAction, submitDraftRemisBulkAction, autoReviewPendingApprovalRemis, clearRemiBulkActionView, incrementRemiBulkActionProcessedCount, RemiBulkSelectExceptionInfoType, OutsideZeniPaymentLocalData, updateOutsideZeniPaymentLocalData, discardOutsideZeniPaymentLocalData, checkIfCreatorIsApprover, };
|
|
747
747
|
export { AccountListSelectorView, ClassListSelectorView, getClassList, fetchClassList, };
|
|
748
748
|
export { BillTab, BillsSubTabType, SaveBillStageCode, BillPayReviewSelectorView, DuplicateBillsSelectorView, EditBillDetailSelectorView, LineItemRecommendationsLocalData, EditBillInitialDetails, BillableStatus, PaymentDetailsSection, BillListReport, BillListDownloadReport, WhatForSection, fetchBillList, fetchBillListPerTab, updateTab, updateSubTab, updateSelectedBillId, updateBillDetailSaveBillCode, fetchVendorByNameAndParseInvoice, saveBillUpdatesToLocalStore, discardBillUpdatesInLocalStore, saveBillDetail, approveOrRejectBill, updateApprovalStatusOnSuccess, deleteBill, cancelAndDeleteBill, retryOrRefundBill, getBillList, getBillDownloadList, BillDetailViewSelector, ActorActivityWithUser, BillActivity, StepWithStatus, getBillDetailView, checkApproveRejectBtnShowForBill, BillDetailView, getBillTransactionDetailKey, fetchBillDetail, fetchEditBillDetailPage, fetchAndUpdateVendorRecommendations, fetchDuplicateBill, clearBillPayReview, EditBillDetail, EditBillDetailViewState, getEditBillDetail, getReviewPageBillDetail, BillDetailLocalData, PaymentDetailsSectionView, fetchBillAndInitializeLocalStore, updateShowAutofill, saveVendorSuccessOrFailure, BillPaymentStatus, BillPaymentStatusCodeType, BillPaymentRefundStatus, BillPaymentRefundStatusCodeType, BillStatus, BillStatusCodeType, BillApprovalType, updateBillListUIState, BillListUIState, BillPayViewSortKey, BillPayFilters, BillPayFilterCategory, BillListViewFilterCategoryField, BILL_PAY_FILTER_CATEGORIES, updateVendorDetailLocalData, resetVendorDetailLocalData, resetVendorSaveStatus, updateContactsInVendorDetailLocalData, updateVendorTabDetailUIState, updateContactsInVendorTabDetailLocalData, updateBillUploadFetchState, updateBillListSearchResult, fetchUserDetails, verifyUser, updateVendorContact, PaymentToOption, toPaymentToOption, convertAmountToHomeCurrency, RecurringBillInstance, RecurringBillConfigLocalData, EditRecurringBillType, fetchVendorAndUpdateBillLocalData, markBillForRetry, updateWithdrawFromAccountId, removeBillFileFromLocalStore, replaceBillFileInLocalStore, updateShouldReplaceBillData, };
|
|
749
|
-
export { SpendManagementFiltersType, SpendManagementFilterEntityType, FilterCategoryType, BillPayFilterCategoryDropdownOption, ReimbursementFilterCategoryDropdownOption, TaskFilterCategoryDropdownOption, SpendManagementFilterCategoryDropdownOption, MatchingOperatorDropdownOption, CategoryCombinationOperator, hideCreatedByFilter, };
|
|
749
|
+
export { SpendManagementFiltersType, SpendManagementFilterEntityType, FilterCategoryType, BillPayFilterCategoryDropdownOption, ReimbursementFilterCategoryDropdownOption, TaskFilterCategoryDropdownOption, SpendManagementFilterCategoryDropdownOption, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilters, MatchingOperatorDropdownOption, CategoryCombinationOperator, hideCreatedByFilter, };
|
|
750
750
|
export { BillPaySetupViewState, ZeniAccountSetupViewState, BillPaySetupViewLocalData, ZeniAccountSetupViewLocalData, PlaidAccountState, fetchBillPaySetupView, fetchZeniAccountSetupView, enableSetup, getPaymentAccounts, getPlaidLinkToken, updateSelectedCompanyOfficer, updateSetupViewLocalStoreData, updateBusinessVerificationDetails, updatePaymentAccount, updatePaymentAccountLoginStatus, updatePaymentAccountStatus, establishPlaidConnection, updateMappedCashAccount, updatePrimaryFundingAccount, acceptBillPayTerms, acceptZeniAccountTerms, acceptBillPayUpdatedTerms, saveSetupViewDataInLocalStore, saveCompnayOfficerPhoneInLocalStore, saveCompnayOfficerAdditionalDocumentsInLocalStore, saveTreasuryAdditionalDocumentsInLocalStore, saveIndustryAndIncDateInLocalStore, clearSetupViewDataInLocalStore, clearBillPaySetupView, clearZeniAccountSetupView, sendOtp, resendOtp, verifyOtp, CompanyDetails, CompanyOfficersDetails, BillPaySetupView, ZeniAccountSetupView, BillPayBusinessVerificationDetails, ZeniAccountBusinessVerificationDetails, TreasuryBusinessVerificationDetails, SetupViewState, SetupViewLocalData, SetupView, BusinessVerificationDetails, getBillPaySetupViewDetails, getPlaidAccountDetails, getZeniAccountSetupViewDetails, getBusinessVerificationDetails, getBillPayBusinessVerificationDetails, getZeniAccountBusinessVerificationDetails, getTreasuryBusinessVerificationDetails, getCommonSetupViewDetails, PlaidConnectionDetails, PlaidLinkTokenType, PlaidAccountKeyType, Token, FundingAccount, getTwoFactorAuthenticationView, getTwoFactorAuthenticationViewForCardUserOnboarding, getTwoFactorAuthenticationViewForChargeCardHolder, TwoFactorAuthenticationView, };
|
|
751
751
|
export { BankConnectionsSetupView, IntegrationsView, getApprovalRuleViewDetails, getBankConnectionsSetupViewDetails, getIntegrationsView, };
|
|
752
752
|
export { fetchUserFinancialAccount };
|