@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.
Files changed (34) hide show
  1. package/lib/entity/account/accountState.d.ts +1 -0
  2. package/lib/entity/account/accountState.js +4 -4
  3. package/lib/epic.d.ts +2 -1
  4. package/lib/epic.js +2 -1
  5. package/lib/esm/entity/account/accountState.js +1 -1
  6. package/lib/esm/epic.js +2 -1
  7. package/lib/esm/index.js +7 -7
  8. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/accountSettings/fetchAccountSettingsListForAccountTypesEpic.js +2 -1
  9. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/accountSettings/saveAccountSettingsViewEpic.js +2 -1
  10. package/lib/esm/view/expenseAutomationView/expenseAutomationViewSelector.js +1 -1
  11. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +11 -1
  12. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +57 -8
  13. package/lib/esm/view/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewDashboardLoadedEpic.js +28 -0
  14. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewReducer.js +31 -1
  15. package/lib/esm/view/spendManagement/spendManagementFilterHelpers.js +137 -1
  16. package/lib/index.d.ts +9 -9
  17. package/lib/index.js +35 -30
  18. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  19. package/lib/view/expenseAutomationView/epics/jeSchedule/accountSettings/fetchAccountSettingsListForAccountTypesEpic.js +2 -1
  20. package/lib/view/expenseAutomationView/epics/jeSchedule/accountSettings/saveAccountSettingsViewEpic.js +2 -1
  21. package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +1 -1
  22. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +5 -1
  23. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +12 -2
  24. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +4 -1
  25. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +59 -8
  26. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +2 -0
  27. package/lib/view/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewDashboardLoadedEpic.d.ts +8 -0
  28. package/lib/view/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewDashboardLoadedEpic.js +32 -0
  29. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.d.ts +3 -1
  30. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.js +32 -2
  31. package/lib/view/onboardingView/customerView/onboardingCustomerViewState.d.ts +1 -0
  32. package/lib/view/spendManagement/spendManagementFilterHelpers.d.ts +43 -4
  33. package/lib/view/spendManagement/spendManagementFilterHelpers.js +138 -2
  34. 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 transactionLocalData = transactionIds
31
- .map((transactionId) => {
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((transaction) => transaction != null);
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: transactionsWithCOT,
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
- : getCategoryValueForTaskList(key, item);
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, backgroundRefetchReviewTab, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState } from './view/expenseAutomationView/reducers/transactionsViewReducer';
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, };