@zeniai/client-epic-state 4.19.42 → 4.19.43-betaAR2
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/entity/account/accountState.d.ts +1 -0
- package/lib/entity/account/accountState.js +4 -4
- package/lib/epic.d.ts +2 -1
- package/lib/epic.js +2 -1
- package/lib/esm/entity/account/accountState.js +1 -1
- package/lib/esm/epic.js +2 -1
- package/lib/esm/index.js +7 -7
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/accountSettings/fetchAccountSettingsListForAccountTypesEpic.js +2 -1
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/accountSettings/saveAccountSettingsViewEpic.js +2 -1
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewSelector.js +1 -1
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +11 -1
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +57 -8
- package/lib/esm/view/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewDashboardLoadedEpic.js +28 -0
- package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewReducer.js +31 -1
- package/lib/esm/view/spendManagement/spendManagementFilterHelpers.js +137 -1
- package/lib/index.d.ts +9 -9
- package/lib/index.js +35 -30
- package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
- package/lib/view/expenseAutomationView/epics/jeSchedule/accountSettings/fetchAccountSettingsListForAccountTypesEpic.js +2 -1
- package/lib/view/expenseAutomationView/epics/jeSchedule/accountSettings/saveAccountSettingsViewEpic.js +2 -1
- package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +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/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewDashboardLoadedEpic.d.ts +8 -0
- package/lib/view/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewDashboardLoadedEpic.js +32 -0
- package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.d.ts +3 -1
- package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.js +32 -2
- package/lib/view/onboardingView/customerView/onboardingCustomerViewState.d.ts +1 -0
- package/lib/view/spendManagement/spendManagementFilterHelpers.d.ts +43 -4
- package/lib/view/spendManagement/spendManagementFilterHelpers.js +138 -2
- package/package.json +2 -1
|
@@ -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,
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { from, of } from 'rxjs';
|
|
2
|
+
import { catchError, filter, mergeMap } from 'rxjs/operators';
|
|
3
|
+
import { updateCompanies } from '../../../../../entity/company/companyReducer';
|
|
4
|
+
import { createZeniAPIStatus, isSuccessStatus, } from '../../../../../responsePayload';
|
|
5
|
+
import { updateOnboardingCustomerViewDashboardLoaded, updateOnboardingCustomerViewDashboardLoadedFailure, updateOnboardingCustomerViewDashboardLoadedSuccess, } from '../../onboardingCustomerViewReducer';
|
|
6
|
+
export const updateOnboardingCustomerViewDashboardLoadedEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(updateOnboardingCustomerViewDashboardLoaded.match), mergeMap((action) => {
|
|
7
|
+
const { companyId } = action.payload;
|
|
8
|
+
return zeniAPI
|
|
9
|
+
.putAndGetJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/companies/${companyId}`, { is_dashboard_loaded: true })
|
|
10
|
+
.pipe(mergeMap((response) => {
|
|
11
|
+
if (isSuccessStatus(response)) {
|
|
12
|
+
const actionsToDispatch = [
|
|
13
|
+
updateOnboardingCustomerViewDashboardLoadedSuccess(),
|
|
14
|
+
];
|
|
15
|
+
if (response.data?.companies != null) {
|
|
16
|
+
actionsToDispatch.unshift(updateCompanies({
|
|
17
|
+
payload: response.data.companies,
|
|
18
|
+
schema: {},
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
return from(actionsToDispatch);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return of(updateOnboardingCustomerViewDashboardLoadedFailure(response.status));
|
|
25
|
+
}
|
|
26
|
+
}), catchError((error) => of(updateOnboardingCustomerViewDashboardLoadedFailure(createZeniAPIStatus('Unexpected Error', 'Update - Onboarding Customer View Dashboard Loaded errored out' +
|
|
27
|
+
JSON.stringify(error))))));
|
|
28
|
+
}));
|
|
@@ -7,6 +7,7 @@ const initialStatus = {
|
|
|
7
7
|
export const initialState = {
|
|
8
8
|
updateStatus: initialStatus,
|
|
9
9
|
saveStatus: initialStatus,
|
|
10
|
+
dashboardLoadedStatus: initialStatus,
|
|
10
11
|
currentStep: 'link_payment_account',
|
|
11
12
|
companyDetails: {
|
|
12
13
|
localData: undefined,
|
|
@@ -179,6 +180,35 @@ const onboardingCustomerView = createSlice({
|
|
|
179
180
|
};
|
|
180
181
|
},
|
|
181
182
|
},
|
|
183
|
+
updateOnboardingCustomerViewDashboardLoaded: {
|
|
184
|
+
reducer(draft) {
|
|
185
|
+
draft.dashboardLoadedStatus = {
|
|
186
|
+
fetchState: 'In-Progress',
|
|
187
|
+
error: undefined,
|
|
188
|
+
};
|
|
189
|
+
},
|
|
190
|
+
prepare(companyId) {
|
|
191
|
+
return {
|
|
192
|
+
payload: { companyId },
|
|
193
|
+
};
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
updateOnboardingCustomerViewDashboardLoadedSuccess(draft) {
|
|
197
|
+
draft.dashboardLoadedStatus = { fetchState: 'Completed', error: undefined };
|
|
198
|
+
},
|
|
199
|
+
updateOnboardingCustomerViewDashboardLoadedFailure: {
|
|
200
|
+
reducer(draft, action) {
|
|
201
|
+
draft.dashboardLoadedStatus = {
|
|
202
|
+
fetchState: 'Error',
|
|
203
|
+
error: action.payload,
|
|
204
|
+
};
|
|
205
|
+
},
|
|
206
|
+
prepare(error) {
|
|
207
|
+
return {
|
|
208
|
+
payload: error,
|
|
209
|
+
};
|
|
210
|
+
},
|
|
211
|
+
},
|
|
182
212
|
updateOnboardingPaymentAccountStatus: {
|
|
183
213
|
reducer(draft, action) {
|
|
184
214
|
const { linkTokenType } = action.payload;
|
|
@@ -564,5 +594,5 @@ const onboardingCustomerView = createSlice({
|
|
|
564
594
|
},
|
|
565
595
|
},
|
|
566
596
|
});
|
|
567
|
-
export const { fetchOnboardingCustomerView, fetchOnboardingCustomerSetupView, fetchOnboardingCustomerSetupViewSuccess, fetchOnboardingCustomerSetupViewFailure, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewCompleteStatusSuccess, updateOnboardingCustomerViewCompleteStatusFailure, updateOnboardingCustomerView, updateOnboardingCustomerViewSuccess, updateOnboardingCustomerViewFailure, updateOnboardingPaymentAccountStatus, updateOnboardingPaymentAccountStatusSuccess, updateOnboardingPaymentAccountStatusFailure, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountLoginStatusSuccess, updateOnboardingPaymentAccountLoginStatusFailure, establishOnboardingPlaidConnection, establishOnboardingPlaidConnectionSuccess, establishOnboardingPlaidConnectionFailure, getOnboardingPlaidLinkToken, getOnboardingPlaidLinkTokenSuccess, getOnboardingPlaidLinkTokenFailure, updateCurrentStep, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewLocalStoreData, saveOnboardingCustomerViewDataInLocalStore, saveOnboardingCompnayOfficerPhoneInLocalStore, updateOnboardingCustomerViewUIState, sendOnboardingOfficerOtp, sendOnboardingOfficerOtpSuccess, sendOnboardingOfficerOtpFailure, resendOnboardingOfficerOtp, verifyOnboardingOfficerOtp, verifyOnboardingOfficerOtpSuccess, verifyOnboardingOfficerOtpFailure, clearOnboardingCustomerViewDataInLocalStore, clearOnboardingCustomerView, } = onboardingCustomerView.actions;
|
|
597
|
+
export const { fetchOnboardingCustomerView, fetchOnboardingCustomerSetupView, fetchOnboardingCustomerSetupViewSuccess, fetchOnboardingCustomerSetupViewFailure, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewCompleteStatusSuccess, updateOnboardingCustomerViewCompleteStatusFailure, updateOnboardingCustomerViewDashboardLoaded, updateOnboardingCustomerViewDashboardLoadedSuccess, updateOnboardingCustomerViewDashboardLoadedFailure, updateOnboardingCustomerView, updateOnboardingCustomerViewSuccess, updateOnboardingCustomerViewFailure, updateOnboardingPaymentAccountStatus, updateOnboardingPaymentAccountStatusSuccess, updateOnboardingPaymentAccountStatusFailure, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountLoginStatusSuccess, updateOnboardingPaymentAccountLoginStatusFailure, establishOnboardingPlaidConnection, establishOnboardingPlaidConnectionSuccess, establishOnboardingPlaidConnectionFailure, getOnboardingPlaidLinkToken, getOnboardingPlaidLinkTokenSuccess, getOnboardingPlaidLinkTokenFailure, updateCurrentStep, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewLocalStoreData, saveOnboardingCustomerViewDataInLocalStore, saveOnboardingCompnayOfficerPhoneInLocalStore, updateOnboardingCustomerViewUIState, sendOnboardingOfficerOtp, sendOnboardingOfficerOtpSuccess, sendOnboardingOfficerOtpFailure, resendOnboardingOfficerOtp, verifyOnboardingOfficerOtp, verifyOnboardingOfficerOtpSuccess, verifyOnboardingOfficerOtpFailure, clearOnboardingCustomerViewDataInLocalStore, clearOnboardingCustomerView, } = onboardingCustomerView.actions;
|
|
568
598
|
export default onboardingCustomerView.reducer;
|
|
@@ -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
|
@@ -38,7 +38,7 @@ import { isAgingReport, isCashFlowOrBalanceSheetReport, isDashboardClassesViewRe
|
|
|
38
38
|
import { PageToken, Report, ReportFormat, ReportID, ReportIDPlusForecastID, SelectorReport, SelectorView, View, toReportFormatStrict, toReportID } from './commonStateTypes/viewAndReport/viewAndReport';
|
|
39
39
|
import { PAYMENT_BUSINESS_DAYS, filterDays, getNextNthWorkingDay, getPreviousNthWorkingDay, getYearsList, holidaysFormatted, isHoliday, isHolidayToday } from './commonStateTypes/workingDayHelper';
|
|
40
40
|
import { AccountReport, AccountWithBalanceReport } from './entity/account/accountSelector';
|
|
41
|
-
import { Account, AccountBase, AccountType, RecommendedAccountBase, ReconciliationAccountSourceType, StatementCloseDay, toAccountType, toReconciliationAccountSource } from './entity/account/accountState';
|
|
41
|
+
import { Account, AccountBase, ALL_ACCOUNT_TYPES, AccountType, RecommendedAccountBase, ReconciliationAccountSourceType, StatementCloseDay, toAccountType, toReconciliationAccountSource } from './entity/account/accountState';
|
|
42
42
|
import { NestedAccountReport } from './entity/account/subAccountSelector';
|
|
43
43
|
import { AccountGroupReport } from './entity/accountGroup/accountGroupSelector';
|
|
44
44
|
import { AccountGroup, AccountGroupKey, AccountGroupType, getAccountGroupKey, toAccountGroupType } from './entity/accountGroup/accountGroupState';
|
|
@@ -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,
|
|
268
|
+
import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, 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';
|
|
@@ -320,7 +320,7 @@ import { clearOnboardingCustomerViewUpdateData, fetchCompanyOnboardingView, fetc
|
|
|
320
320
|
import { NewOnboardingCustomerLocalData, NewOnboardingCustomerView, OnboardingCockpitView, ProductInfo, getNewOnboardingCustomerView, getOnboardingCockpitView } from './view/onboardingView/cockpitView/onboardingCockpitViewSelector';
|
|
321
321
|
import { OnboardingCustomerListUIState, QBOConnectionPool } from './view/onboardingView/cockpitView/onboardingCockpitViewState';
|
|
322
322
|
import { CustomerCreationStatus, NewOnboardingCustomer, OnboardingCompanyDetails, OnboardingCustomer, OnboardingCustomerCompletedStatus, ProductGroupType, ProductType, toProductType, toProductTypeStrict } from './view/onboardingView/cockpitView/types/onboardingCockpitViewTypes';
|
|
323
|
-
import { clearOnboardingCustomerView, clearOnboardingCustomerViewDataInLocalStore, establishOnboardingPlaidConnection, fetchOnboardingCustomerSetupView, fetchOnboardingCustomerView, getOnboardingPlaidLinkToken, saveOnboardingCompnayOfficerPhoneInLocalStore, saveOnboardingCustomerViewDataInLocalStore, updateCurrentStep, updateOnboardingCustomerView, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewLocalStoreData, updateOnboardingCustomerViewUIState, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountStatus } from './view/onboardingView/customerView/onboardingCustomerViewReducer';
|
|
323
|
+
import { clearOnboardingCustomerView, clearOnboardingCustomerViewDataInLocalStore, establishOnboardingPlaidConnection, fetchOnboardingCustomerSetupView, fetchOnboardingCustomerView, getOnboardingPlaidLinkToken, saveOnboardingCompnayOfficerPhoneInLocalStore, saveOnboardingCustomerViewDataInLocalStore, updateCurrentStep, updateOnboardingCustomerView, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewDashboardLoaded, updateOnboardingCustomerViewLocalStoreData, updateOnboardingCustomerViewUIState, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountStatus } from './view/onboardingView/customerView/onboardingCustomerViewReducer';
|
|
324
324
|
import { OnboardingCustomerView, getOnboardingCustomerView, getProductSettingsString } from './view/onboardingView/customerView/onboardingCustomerViewSelector';
|
|
325
325
|
import { OnboardingCustomerViewLocalData, OnboardingCustomerViewUIState, OnboardingStep } from './view/onboardingView/customerView/onboardingCustomerViewState';
|
|
326
326
|
import { fetchOpEx, fetchOpExWithForecast, updateOpExCOABalancesRange, updateOpExDownloadState, updateOpExUIState } from './view/opEx/opExReducer';
|
|
@@ -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,14 +616,14 @@ 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';
|
|
623
623
|
export { getNumberOfPeriods };
|
|
624
624
|
export { SCHEDULE_DAYS_OF_MONTH, ScheduleDaysOfMonth, toScheduleDaysOfMonth, Day, Month, toMonth, toMonthStrict, Quarter, toQuarter, toQuarterStrict, AbsoluteDay, TimePeriod, };
|
|
625
625
|
export { Tenant, TenantView, LoggedInUser, TenantBaseView, CurrentTenant, TenantProductSettings, getTenantBaseById, getCurrentTenant, getTenantsByCheckInDateSelector, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, toTenantCoreDetailsView, getTenantBaseViewForTenantView, getTenantBaseViewForTenantId, isZeniDomainTenant, isTenantUsingZeniCOA, TenantsBaseOrdered, TenantsOrdered, TenantCoreDetailsView, fetchActiveTenant, fetchAllTenants, updateCurrentTenant, clearAll, doMagicLinkSignIn, verifyDeviceWithTwoFA, resendVerifyDeviceOTP, sendEmailMagicLinkToUser, doSignIn, updateSignInState, DoSignInPayload, doSignOut, resetSignInState, RoleResource, Connection, fetchExcludedResourcesForTenant, fetchExternalConnectionsForTenant, saveExternalConnectionForTenant, fetchSubscriptionSummaryForTenant, isTenantBankingOnly, isTenantCardsOnly, isTenantBookkeepingEnabled, isOtherProductsEnabledForTenant, };
|
|
626
|
-
export { Account, AccountType, AccountBase, StatementCloseDay, toAccountType, AccountReport, NestedAccountReport, AccountWithBalanceReport, AccountGroup, AccountGroupReportV2, AccountGroupType, toAccountGroupType, AccountGroupReport, getAccountGroupKey, AccountGroupKey, RecommendedAccountBase, };
|
|
626
|
+
export { Account, ALL_ACCOUNT_TYPES, AccountType, AccountBase, StatementCloseDay, toAccountType, AccountReport, NestedAccountReport, AccountWithBalanceReport, AccountGroup, AccountGroupReportV2, AccountGroupType, toAccountGroupType, AccountGroupReport, getAccountGroupKey, AccountGroupKey, RecommendedAccountBase, };
|
|
627
627
|
export { Class, ClassBase, RecommendedClassBase, } from './entity/class/classState';
|
|
628
628
|
export { getClassById } from './entity/class/classSelector';
|
|
629
629
|
export { ClassReport } from './entity/class/classSelectorTypes';
|
|
@@ -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 };
|
|
@@ -798,7 +798,7 @@ export { CountryWithCurrency };
|
|
|
798
798
|
export { fetchCompanyConfig };
|
|
799
799
|
export { getCompanyConfig };
|
|
800
800
|
export { isZeniClearingAccountReport, ZENI_CLEARING_ACCOUNT, isZeniClearingAccount, };
|
|
801
|
-
export { fetchOnboardingCustomerView, fetchOnboardingCustomerSetupView, getOnboardingPlaidLinkToken, establishOnboardingPlaidConnection, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewCompleteStatus, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountStatus, updateOnboardingCustomerView, updateOnboardingCustomerViewLocalStoreData, updateCurrentStep, updateOnboardingCustomerViewUIState, saveOnboardingCompnayOfficerPhoneInLocalStore, saveOnboardingCustomerViewDataInLocalStore, clearOnboardingCustomerView, clearOnboardingCustomerViewDataInLocalStore, getOnboardingCustomerView, getProductSettingsString, OnboardingCustomerView, OnboardingStep, OnboardingCustomerViewUIState, OnboardingCustomerViewLocalData, };
|
|
801
|
+
export { fetchOnboardingCustomerView, fetchOnboardingCustomerSetupView, getOnboardingPlaidLinkToken, establishOnboardingPlaidConnection, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewDashboardLoaded, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountStatus, updateOnboardingCustomerView, updateOnboardingCustomerViewLocalStoreData, updateCurrentStep, updateOnboardingCustomerViewUIState, saveOnboardingCompnayOfficerPhoneInLocalStore, saveOnboardingCustomerViewDataInLocalStore, clearOnboardingCustomerView, clearOnboardingCustomerViewDataInLocalStore, getOnboardingCustomerView, getProductSettingsString, OnboardingCustomerView, OnboardingStep, OnboardingCustomerViewUIState, OnboardingCustomerViewLocalData, };
|
|
802
802
|
export { saveAccountMapping, saveAccountMappingLocalData, clearAccountMappingLocalData, AccountMappingLocalData, AccountMappingView, VendorAccountMappingView, getAccountMappingView, initializeAccountMappingView, ExpenseCategory1099Filing, };
|
|
803
803
|
export { MagicLinkView, getMagicLinkView, getMagicLinkBankAccountView, getMagicLinkCurrentAddressState, };
|
|
804
804
|
export { fetchMagicLinkTenant, fetchBillAttachment, saveBankAccount, updateMagicLinkBankAccountLocalStoreData, updateMagicLinkInternationalBankAccountLocalStoreData, fetchMagicLinkBankNameByRouting, fetchMagicLinkBankNameBySwift, saveMagicLinkAddressInLocalStore, };
|