@zeniai/client-epic-state 5.0.69-betaML1 → 5.0.69-betaML12

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 (95) hide show
  1. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
  2. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +2 -0
  3. package/lib/entity/account/accountSelector.d.ts +9 -0
  4. package/lib/entity/account/accountSelector.js +14 -1
  5. package/lib/entity/account/accountState.d.ts +1 -1
  6. package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
  7. package/lib/entity/class/classReducer.d.ts +4 -4
  8. package/lib/entity/class/classState.d.ts +1 -1
  9. package/lib/entity/forecast/forecastState.d.ts +1 -1
  10. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  11. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  12. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  13. package/lib/entity/sectionProjectView/sectionProjectView.d.ts +1 -1
  14. package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +2 -2
  15. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  16. package/lib/entity/snackbar/snackbarTypes.js +1 -0
  17. package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +4 -0
  18. package/lib/entity/transaction/payloadTypes/transactionPayload.js +18 -10
  19. package/lib/entity/transaction/stateTypes/transaction.d.ts +3 -0
  20. package/lib/epic.d.ts +3 -2
  21. package/lib/epic.js +3 -2
  22. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +2 -0
  23. package/lib/esm/entity/account/accountSelector.js +11 -0
  24. package/lib/esm/entity/snackbar/snackbarTypes.js +1 -0
  25. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +18 -10
  26. package/lib/esm/epic.js +3 -2
  27. package/lib/esm/index.js +9 -8
  28. package/lib/esm/reducer.js +3 -0
  29. package/lib/esm/view/createTransferEntry/createTransferEntryReducer.js +64 -0
  30. package/lib/esm/view/createTransferEntry/createTransferEntrySelector.js +64 -0
  31. package/lib/esm/view/createTransferEntry/createTransferEntryState.js +17 -0
  32. package/lib/esm/view/createTransferEntry/epics/createTransferEntryEpic.js +130 -0
  33. package/lib/esm/view/createTransferEntry/epics/fetchTransferAccountsEpic.js +36 -0
  34. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +8 -0
  35. package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +1 -21
  36. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +26 -117
  37. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +9 -29
  38. package/lib/esm/view/recommendation/recommendationHelper.js +0 -29
  39. package/lib/esm/view/recommendation/recommendationReducer.js +1 -36
  40. package/lib/esm/view/transactionDetail/epics/transactionDetailEpic.js +14 -2
  41. package/lib/esm/view/transactionDetail/transactionDetailReducer.js +3 -110
  42. package/lib/esm/view/transactionDetail/transactionDetailSelector.js +6 -23
  43. package/lib/index.d.ts +9 -9
  44. package/lib/index.js +43 -36
  45. package/lib/reducer.d.ts +3 -0
  46. package/lib/reducer.js +3 -0
  47. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  48. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  49. package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
  50. package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
  51. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  52. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  53. package/lib/view/createTransferEntry/createTransferEntryReducer.d.ts +32 -0
  54. package/lib/view/createTransferEntry/createTransferEntryReducer.js +68 -0
  55. package/lib/view/createTransferEntry/createTransferEntrySelector.d.ts +39 -0
  56. package/lib/view/createTransferEntry/createTransferEntrySelector.js +69 -0
  57. package/lib/view/createTransferEntry/createTransferEntryState.d.ts +30 -0
  58. package/lib/view/createTransferEntry/createTransferEntryState.js +20 -0
  59. package/lib/view/createTransferEntry/epics/createTransferEntryEpic.d.ts +11 -0
  60. package/lib/view/createTransferEntry/epics/createTransferEntryEpic.js +134 -0
  61. package/lib/view/createTransferEntry/epics/fetchTransferAccountsEpic.d.ts +14 -0
  62. package/lib/view/createTransferEntry/epics/fetchTransferAccountsEpic.js +40 -0
  63. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  64. package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.d.ts +2 -1
  65. package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +8 -0
  66. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -2
  67. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -23
  68. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +4 -15
  69. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +26 -117
  70. package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +4 -3
  71. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +1 -3
  72. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +11 -30
  73. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +0 -1
  74. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  75. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  76. package/lib/view/recommendation/recommendationHelper.d.ts +0 -9
  77. package/lib/view/recommendation/recommendationHelper.js +1 -31
  78. package/lib/view/recommendation/recommendationReducer.d.ts +1 -18
  79. package/lib/view/recommendation/recommendationReducer.js +2 -37
  80. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  81. package/lib/view/reportsResync/reportsResyncReducer.d.ts +2 -2
  82. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  83. package/lib/view/topEx/topExSelector.d.ts +1 -1
  84. package/lib/view/transactionDetail/epics/transactionDetailEpic.d.ts +2 -1
  85. package/lib/view/transactionDetail/epics/transactionDetailEpic.js +14 -2
  86. package/lib/view/transactionDetail/transactionDetailPayload.d.ts +1 -1
  87. package/lib/view/transactionDetail/transactionDetailReducer.d.ts +3 -12
  88. package/lib/view/transactionDetail/transactionDetailReducer.js +4 -111
  89. package/lib/view/transactionDetail/transactionDetailSelector.d.ts +6 -3
  90. package/lib/view/transactionDetail/transactionDetailSelector.js +7 -25
  91. package/lib/view/transactionDetail/transactionDetailTypes.d.ts +0 -1
  92. package/package.json +1 -1
  93. package/lib/esm/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +0 -87
  94. package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.d.ts +0 -9
  95. package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +0 -91
@@ -33,41 +33,6 @@ const recommendation = createSlice({
33
33
  };
34
34
  },
35
35
  },
36
- // Targeted recommendations fetch fired when the user changes the
37
- // payee/customer on a single transaction line (or the JE sibling set
38
- // for that change). Routed by `fetchEntityRecommendationsForLineUpdateEpic`
39
- // which uses groupBy + switchMap to keep fetches for distinct targets
40
- // running in parallel while same-target re-fetches still cancel each
41
- // other. The flowType discriminator selects the categorization vs
42
- // detail slice for the per-line In-Progress / Completed / Error state.
43
- fetchEntityRecommendationsForLineUpdate: {
44
- reducer(draft, action) {
45
- const { entity } = action.payload;
46
- const key = getEntityRecommendationKey(entity.type, entity.id);
47
- // Unconditional flip to In-Progress; the previous variant only
48
- // seeded when missing, which left stale fetchStates when a prior
49
- // fetch had already populated the entity entry.
50
- draft.recommendationByEntity[key] = {
51
- ...(draft.recommendationByEntity[key] ??
52
- initialEntityRecommendationState),
53
- fetchState: 'In-Progress',
54
- error: undefined,
55
- };
56
- },
57
- prepare(entity, amount, transactionDetails, flowType, selectedTab, isFetchCOT = false, isUncategorizedExpenseCategoryEnabled) {
58
- return {
59
- payload: {
60
- entity,
61
- amount,
62
- transactionDetails,
63
- flowType,
64
- selectedTab,
65
- isFetchCOT,
66
- isUncategorizedExpenseCategoryEnabled,
67
- },
68
- };
69
- },
70
- },
71
36
  fetchRecommendationByEntityName: {
72
37
  reducer(draft, action) {
73
38
  const { entityName, entityType } = action.payload;
@@ -146,7 +111,7 @@ const recommendation = createSlice({
146
111
  },
147
112
  },
148
113
  });
149
- export const { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityName, fetchRecommendationByEntityId, updateRecommendationForEntity, updateRecommendationForEntityFailure, indicateReadyToInitializeRecommendation, clearRecommendation, } = recommendation.actions;
114
+ export const { fetchEntityRecommendationsByTransactionId, fetchRecommendationByEntityName, fetchRecommendationByEntityId, updateRecommendationForEntity, updateRecommendationForEntityFailure, indicateReadyToInitializeRecommendation, clearRecommendation, } = recommendation.actions;
150
115
  export default recommendation.reducer;
151
116
  const doUpdateRecommendationForEntity = (draft, entityId, entityType, payload) => {
152
117
  const key = getEntityRecommendationKey(entityType, entityId);
@@ -13,12 +13,13 @@ import { fetchAccountList } from '../../accountList/accountListReducer';
13
13
  import { fetchClassList } from '../../classList/classListReducer';
14
14
  import { getInitializedTransactionVendorLocalData } from '../../commonVendorView/transactionVendorView/transactionVendorLocalDataHelper';
15
15
  import { updateTransactionVendorLocalData } from '../../commonVendorView/transactionVendorView/transactionVendorViewReducer';
16
+ import { fetchAccountsForTransferFlow } from '../../createTransferEntry/createTransferEntryReducer';
16
17
  import { fetchOwnerList } from '../../ownerList/ownerListReducer';
17
18
  import { fetchProjectList } from '../../projectList/projectListReducer';
18
19
  import { fetchTransactionDetail, initializeTransactionDetailLocalData, removeTransactionDetail, updateTransactionDetailFetchState, } from '../transactionDetailReducer';
19
20
  import { getAllLinkedTransactions, getTransactionDetailKey, } from '../transactionDetailState';
20
21
  export const fetchTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(fetchTransactionDetail.match), mergeMap((action) => {
21
- const { transactionId, cacheOverride } = action.payload;
22
+ const { transactionId, cacheOverride, isCreateTransferEntryFromExpenseEnabled, } = action.payload;
22
23
  const detailKey = getTransactionDetailKey(transactionId);
23
24
  const transactionActions = [];
24
25
  if (cacheOverride === true) {
@@ -35,6 +36,17 @@ export const fetchTransactionDetailEpic = (actions$, state$, zeniAPI) => actions
35
36
  accountList.fetchState !== 'In-Progress') {
36
37
  transactionActions.push(fetchAccountList('accountList'));
37
38
  }
39
+ if (isCreateTransferEntryFromExpenseEnabled === true) {
40
+ const { transferEntryEligible, creditCardOnlyEligible } = state$.value.createTransferEntryState.transferAccountsByType;
41
+ if (transferEntryEligible.fetchState !== 'In-Progress' &&
42
+ transferEntryEligible.fetchState !== 'Completed') {
43
+ transactionActions.push(fetchAccountsForTransferFlow({ kind: 'transferEntryEligible' }));
44
+ }
45
+ if (creditCardOnlyEligible.fetchState !== 'In-Progress' &&
46
+ creditCardOnlyEligible.fetchState !== 'Completed') {
47
+ transactionActions.push(fetchAccountsForTransferFlow({ kind: 'creditCardOnlyEligible' }));
48
+ }
49
+ }
38
50
  const classList = state$.value.classListState;
39
51
  if (classList.hasValidState() === false &&
40
52
  classList.fetchState !== 'In-Progress') {
@@ -48,7 +60,7 @@ export const fetchTransactionDetailEpic = (actions$, state$, zeniAPI) => actions
48
60
  transactionActions.push(updateTransactionDetailFetchState(transactionId, 'In-Progress'));
49
61
  const query = { transaction_type: transactionId.type };
50
62
  const getTransactionDetail$ = zeniAPI
51
- .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${transactionId.id}?query=${encodeURIComponent(JSON.stringify(query))}`)
63
+ .getJSON(`https://dev.api.zeni.ai/version/accounting/mohanrajoria/1.0/transactions/${transactionId.id}?query=${encodeURIComponent(JSON.stringify(query))}`)
52
64
  .pipe(mergeMap((response) => {
53
65
  if (isSuccessResponse(response) &&
54
66
  response.data?.transaction?.transaction_id != null) {
@@ -50,11 +50,12 @@ const transactionDetail = createSlice({
50
50
  };
51
51
  }
52
52
  },
53
- prepare(transactionId, cacheOverride = false) {
53
+ prepare(transactionId, cacheOverride = false, isCreateTransferEntryFromExpenseEnabled = false) {
54
54
  return {
55
55
  payload: {
56
56
  transactionId,
57
57
  cacheOverride,
58
+ isCreateTransferEntryFromExpenseEnabled,
58
59
  },
59
60
  };
60
61
  },
@@ -365,21 +366,6 @@ const transactionDetail = createSlice({
365
366
  const detail = recordGet(draft.transactionDetailById, key, undefined);
366
367
  if (detail != null) {
367
368
  const newLocalData = setEntityRecommendationForLineIdInLocalData(transaction, detail.transactionDetailLocalData, action.payload.entity, lineIds, uncategorizedIncomeExpense, recommendationWithCOTByLineId);
368
- // Release the per-line fetch flag for every line this fetch
369
- // covered so the inline skeleton resolves and the page-level
370
- // Save button can re-enable.
371
- lineIds.forEach((lineId) => {
372
- const lineItem = newLocalData.lineItemById[lineId];
373
- if (lineItem != null) {
374
- newLocalData.lineItemById[lineId] = {
375
- ...lineItem,
376
- categoryClassRecommendationsFetchState: {
377
- fetchState: 'Completed',
378
- error: undefined,
379
- },
380
- };
381
- }
382
- });
383
369
  draft.transactionDetailById[key] = {
384
370
  ...detail,
385
371
  transactionDetailLocalData: newLocalData,
@@ -400,99 +386,6 @@ const transactionDetail = createSlice({
400
386
  };
401
387
  },
402
388
  },
403
- // Start arm of the line-update recommendations fetch for the detail
404
- // page. Flips covered lines to In-Progress; detail page has no
405
- // checkbox, so no auto-uncheck side effect.
406
- markCategoryClassRecommendationsInProgressForTransactionDetail: {
407
- reducer(draft, action) {
408
- const { transactionId, lineIds } = action.payload;
409
- const key = getTransactionDetailKey(transactionId);
410
- const detail = recordGet(draft.transactionDetailById, key, undefined);
411
- // TEMP-LOG[JE-skeleton]: reducer entry — confirms the action reached
412
- // the slice and shows whether incoming lineIds match the redux keys.
413
- console.log('[JE-skeleton][reducer] markInProgress detail', {
414
- transactionId,
415
- incomingLineIds: lineIds,
416
- existingLineItemKeys: detail != null
417
- ? Object.keys(detail.transactionDetailLocalData.lineItemById)
418
- : null,
419
- matched: detail != null
420
- ? lineIds.filter((id) => detail.transactionDetailLocalData.lineItemById[id] != null)
421
- : [],
422
- missed: detail != null
423
- ? lineIds.filter((id) => detail.transactionDetailLocalData.lineItemById[id] == null)
424
- : lineIds,
425
- });
426
- if (detail != null) {
427
- lineIds.forEach((lineId) => {
428
- const lineItem = detail.transactionDetailLocalData.lineItemById[lineId];
429
- if (lineItem != null) {
430
- detail.transactionDetailLocalData.lineItemById[lineId] = {
431
- ...lineItem,
432
- categoryClassRecommendationsFetchState: {
433
- fetchState: 'In-Progress',
434
- error: undefined,
435
- },
436
- };
437
- }
438
- });
439
- }
440
- },
441
- prepare(transactionId, lineIds) {
442
- return { payload: { transactionId, lineIds } };
443
- },
444
- },
445
- // Completed arm. Used when the HTTP call succeeded but the server
446
- // returned no per-line recommendations — still need to release the
447
- // In-Progress flag.
448
- markCategoryClassRecommendationsCompletedForTransactionDetail: {
449
- reducer(draft, action) {
450
- const { transactionId, lineIds } = action.payload;
451
- const key = getTransactionDetailKey(transactionId);
452
- const detail = recordGet(draft.transactionDetailById, key, undefined);
453
- if (detail != null) {
454
- lineIds.forEach((lineId) => {
455
- const lineItem = detail.transactionDetailLocalData.lineItemById[lineId];
456
- if (lineItem != null) {
457
- detail.transactionDetailLocalData.lineItemById[lineId] = {
458
- ...lineItem,
459
- categoryClassRecommendationsFetchState: {
460
- fetchState: 'Completed',
461
- error: undefined,
462
- },
463
- };
464
- }
465
- });
466
- }
467
- },
468
- prepare(transactionId, lineIds) {
469
- return { payload: { transactionId, lineIds } };
470
- },
471
- },
472
- markCategoryClassRecommendationsFailureForTransactionDetail: {
473
- reducer(draft, action) {
474
- const { transactionId, lineIds, error } = action.payload;
475
- const key = getTransactionDetailKey(transactionId);
476
- const detail = recordGet(draft.transactionDetailById, key, undefined);
477
- if (detail != null) {
478
- lineIds.forEach((lineId) => {
479
- const lineItem = detail.transactionDetailLocalData.lineItemById[lineId];
480
- if (lineItem != null) {
481
- detail.transactionDetailLocalData.lineItemById[lineId] = {
482
- ...lineItem,
483
- categoryClassRecommendationsFetchState: {
484
- fetchState: 'Error',
485
- error,
486
- },
487
- };
488
- }
489
- });
490
- }
491
- },
492
- prepare(transactionId, lineIds, error) {
493
- return { payload: { transactionId, lineIds, error } };
494
- },
495
- },
496
389
  removeEntityRecommendationForLineIdForTransactionDetail: {
497
390
  reducer(draft, action) {
498
391
  const { transaction, lineId } = action.payload;
@@ -764,7 +657,7 @@ const transactionDetail = createSlice({
764
657
  },
765
658
  },
766
659
  });
767
- export const { downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentSuccess, downloadAccountingProviderAttachmentFailure, fetchTransactionDetail, updateTransactionDetailFetchState, removeTransactionDetail, clearTransactionDetail, uploadMissingAttachmentSuccess, updateTransactionDetail, updateTransactionDetailSaveStatus, clearTransactionDetailSaveStatus, markTransactionAsNotMiscategorized, deleteTransactionAttachment, deleteTransactionAttachmentFailure, deleteTransactionAttachmentSuccess, updateStatusForTransactionNotMiscategorizedUpdate, updateStatusConsolidatedSaveTransactionDetail, updateTransactionStateIfUpdateActionNotAllowed, saveTransactionDetail, initializeTransactionDetailLocalData, saveTransactionDetailLocalData, clearTransactionDetailLocalData, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setEntityRecommendationForLineIdsForTransactionDetail, markCategoryClassRecommendationsInProgressForTransactionDetail, markCategoryClassRecommendationsCompletedForTransactionDetail, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetVendor, resetSelectedCustomer, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, } = transactionDetail.actions;
660
+ export const { downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentSuccess, downloadAccountingProviderAttachmentFailure, fetchTransactionDetail, updateTransactionDetailFetchState, removeTransactionDetail, clearTransactionDetail, uploadMissingAttachmentSuccess, updateTransactionDetail, updateTransactionDetailSaveStatus, clearTransactionDetailSaveStatus, markTransactionAsNotMiscategorized, deleteTransactionAttachment, deleteTransactionAttachmentFailure, deleteTransactionAttachmentSuccess, updateStatusForTransactionNotMiscategorizedUpdate, updateStatusConsolidatedSaveTransactionDetail, updateTransactionStateIfUpdateActionNotAllowed, saveTransactionDetail, initializeTransactionDetailLocalData, saveTransactionDetailLocalData, clearTransactionDetailLocalData, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setEntityRecommendationForLineIdsForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetVendor, resetSelectedCustomer, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, } = transactionDetail.actions;
768
661
  export default transactionDetail.reducer;
769
662
  function getUpdatedEntityLocalData(detail, updates, entity, resetRecommendations, type) {
770
663
  const key = type === 'customer' ? 'customerUpdates' : 'vendorUpdates';
@@ -8,30 +8,11 @@ import { getVendorsByVendorIds } from '../../entity/vendor/vendorSelector';
8
8
  import { dateNow } from '../../zeniDayJS';
9
9
  import { getAccountList, getNestedAccountListHierarchy, } from '../accountList/accountListSelector';
10
10
  import { getClassList, getNestedClassListHierarchy, } from '../classList/classListSelector';
11
+ import { getResolvedTransferAccounts } from '../createTransferEntry/createTransferEntrySelector';
11
12
  import { getProjectList, } from '../projectList/projectListSelector';
12
13
  import { getAllLinkedTransactions, getTransactionDetailKey, initialSupportedTransactionDetail, } from './transactionDetailState';
13
- // "Any line on this transaction is fetching category/class recommendations?"
14
- // Inlined as a plain function because the upstream selector
15
- // `getTransactionDetail` is also un-memoized and the iteration is O(lines)
16
- // — typically <10. Exported standalone so consumers that only need the
17
- // flag (e.g. footer save-disable) can avoid materializing the whole
18
- // detail report.
19
- export const getDetailInFlightRecommendations = (state, transactionId) => {
20
- const detailKey = getTransactionDetailKey(transactionId);
21
- const detail = recordGet(state.transactionDetailState.transactionDetailById, detailKey, undefined);
22
- if (detail == null) {
23
- return false;
24
- }
25
- for (const lineItem of Object.values(detail.transactionDetailLocalData.lineItemById)) {
26
- if (lineItem.categoryClassRecommendationsFetchState?.fetchState ===
27
- 'In-Progress') {
28
- return true;
29
- }
30
- }
31
- return false;
32
- };
33
14
  export const getTransactionDetail = (state, transactionId, fetchLinkedTransactions = true) => {
34
- const { transactionDetailState, transactionState, vendorState, vendorListState, accountState, classState, classListState, accountListState, projectState, projectListState, } = state;
15
+ const { transactionDetailState, transactionState, vendorState, vendorListState, accountState, classState, classListState, accountListState, createTransferEntryState, projectState, projectListState, } = state;
35
16
  const detailKey = getTransactionDetailKey(transactionId);
36
17
  const transactionDetail = recordGet(transactionDetailState.transactionDetailById, detailKey);
37
18
  let fetchState = {
@@ -98,7 +79,7 @@ export const getTransactionDetail = (state, transactionId, fetchLinkedTransactio
98
79
  : [];
99
80
  const transactionDetailAnyUpdateStatus = reduceUpdateFetchStates(transactionDetail);
100
81
  const vendors = getVendorsByVendorIds(vendorState, vendorListState.vendorIds);
101
- const hasInFlightCategoryClassRecommendations = getDetailInFlightRecommendations(state, transactionId);
82
+ const { transferAccountsList, creditCardTransferAccountsList } = getResolvedTransferAccounts(state);
102
83
  return {
103
84
  reportId: 'transaction_detail',
104
85
  reportTitle: 'Transaction Detail',
@@ -114,8 +95,10 @@ export const getTransactionDetail = (state, transactionId, fetchLinkedTransactio
114
95
  classHierarchyList,
115
96
  accountsHierarchyList,
116
97
  classList: classList,
117
- hasInFlightCategoryClassRecommendations,
118
98
  isAccountingClassesEnabled,
99
+ createTransferEntryStatus: createTransferEntryState.createTransferEntryStatus,
100
+ creditCardTransferAccountsList,
101
+ transferAccounts: transferAccountsList,
119
102
  isAccountingProjectsEnabled,
120
103
  projectList,
121
104
  isUpdateNotAllowed: transactionDetail?.isUpdateNotAllowed,
package/lib/index.d.ts CHANGED
@@ -260,6 +260,7 @@ import { CompanyOfficerLocalData, CompanyOfficerType, PrimaryContactLocalData }
260
260
  import { PortfolioUIState } from './view/companyView/types/companyPortfolioViewState';
261
261
  import { CompanyView } from './view/companyView/types/companyView';
262
262
  import { UserAndRole } from './view/companyView/types/userAndRole';
263
+ import { clearTransferEntryRouteReplacement, createTransferEntry, createTransferEntryFailure, createTransferEntryReplacedTransaction, createTransferEntrySuccess, fetchAccountsForTransferFlow, resetCreateTransferEntryStatus } from './view/createTransferEntry/createTransferEntryReducer';
263
264
  import { fetchDashboard, updateTreasuryVideoClosed } from './view/dashboard/dashboardReducer';
264
265
  import { DashboardReport, getDashboard } from './view/dashboard/dashboardSelector';
265
266
  import { updateDashboardLayout } from './view/dashboardLayout/dashboardLayoutReducer';
@@ -274,7 +275,7 @@ import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFl
274
275
  import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryJeSchedule as retryExpenseAutomationJESchedule, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, updateJESchedulesUIState as updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
275
276
  import { acknowledgeBulkUploadConfirmMatchComplete, bulkUploadAutomatchingTimedOut, bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, clearManualSearchResults, clearMissingReceiptsTabNavigation, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchCompletedTransactions, fetchCompletedTransactionsFailure, fetchCompletedTransactionsSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, searchTransactionsForManualMatch, searchTransactionsForManualMatchFailure, searchTransactionsForManualMatchSuccess, setBulkUploadCompletedSubTab, setBulkUploadResultsTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, storeBatchDetails, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
276
277
  import { deleteAccountStatement, excludeAccountFromReconciliation, fetchReconciliation as fetchReconciliationView, includeAccountInReconciliation, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateNodeCollapseState, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
277
- import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markCategoryClassRecommendationsFailureForCategorization, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess } from './view/expenseAutomationView/reducers/transactionsViewReducer';
278
+ import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, removeTransactionFromAllTabs, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess } from './view/expenseAutomationView/reducers/transactionsViewReducer';
278
279
  import { ExpenseAutomationStepDetails, ExpenseAutomationViewSelector } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
279
280
  import { ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView } from './view/expenseAutomationView/selectorTypes/fluxAnalysisViewSelectorTypes';
280
281
  import { JEAccountSettingsView } from './view/expenseAutomationView/selectorTypes/jeAccountSettingsViewSelectorTypes';
@@ -286,7 +287,7 @@ import { ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSel
286
287
  import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
287
288
  import { JEScheduledTransactionWithFailedEntries } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
288
289
  import { getExpenseAutomationReconciliationView, isAccountReconReport } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
289
- import { getExpenseAutomationTransactionView } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
290
+ import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
290
291
  import { CompletedSubTab, DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab } from './view/expenseAutomationView/types/completedSubTab';
291
292
  import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
292
293
  import { AccountSettingsLocalData, JEScheduleMainTab as ExpenseAutomationJEScheduleMainTab, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
@@ -371,7 +372,7 @@ import { ProfitAndLossProjectViewReport } from './view/profitAndLossProjectView/
371
372
  import { ProfitAndLossProjectViewUIState } from './view/profitAndLossProjectView/profitAndLossProjectViewState';
372
373
  import { fetchProjectList } from './view/projectList/projectListReducer';
373
374
  import { ProjectListSelectorView, getProjectList } from './view/projectList/projectListSelector';
374
- import { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityId, fetchRecommendationByEntityName } from './view/recommendation/recommendationReducer';
375
+ import { fetchEntityRecommendationsByTransactionId, fetchRecommendationByEntityId, fetchRecommendationByEntityName } from './view/recommendation/recommendationReducer';
375
376
  import { clearReferrals, fetchReferrals, fetchRewardsPlan, resendReferralInvite, saveReferralFormDataInLocalStore, sendReferralInvite, updateReferViewed, updateReferralListSortUiState } from './view/referralView/referralReducer';
376
377
  import { ReferralListSelectorView, RewardsPlanCardReport, getInviteFormView, getReferralListView, getRewardsPlanCard } from './view/referralView/referralSelector';
377
378
  import { AmountStatusTypes, InviteCompanyLocalData, ReferralAmountStatus, ReferralInvitation, ReferralListViewSortKey, ReferralStatus, ReferralViewState, ReferralViewUIState, RewardsPlanData, StatusTypes, toReferralListViewSortKeyType } from './view/referralView/referralState';
@@ -569,7 +570,7 @@ import { TopExAccount, TopExReport, TopExTimePeriodWithMetaData, TopExpenses } f
569
570
  import { TOP_EX_TIME_PERIODS, TopExTimePeriod, TopExpense } from './view/topEx/topExState';
570
571
  import { AccountingProviderAttachmentSelector, getAccountingProviderAttachment } from './view/transactionDetail/getAccountingProviderAttachmentSelector';
571
572
  import { getChangedLineItemCountFromLocalData, isAccountUncategorized } from './view/transactionDetail/transactionDetailLocalDataHelper';
572
- import { clearTransactionDetailSaveStatus, deleteTransactionAttachment, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentFailure, downloadAccountingProviderAttachmentSuccess, fetchTransactionDetail, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, resetAllLineItemsToVendor, resetLineItemsCategoryClassInLocalData, resetSelectedCustomer, resetVendor, saveTransactionDetail, saveTransactionDetailLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setAllLineItemsToCategoryClassInLocalData, setIsVendorUpdateAllChecked, updateLatestSelectedEntity, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateSelectedCustomer, updateSelectedVendor, updateTransactionDetail, updateVendorBulkRecommendationsFetchStatus, updateVendorToAllLineItems, uploadMissingAttachmentSuccess } from './view/transactionDetail/transactionDetailReducer';
573
+ import { clearTransactionDetailSaveStatus, deleteTransactionAttachment, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentFailure, downloadAccountingProviderAttachmentSuccess, fetchTransactionDetail, initializeTransactionDetailLocalData, removeEntityRecommendationForLineIdForTransactionDetail, resetAllLineItemsToVendor, resetLineItemsCategoryClassInLocalData, resetSelectedCustomer, resetVendor, saveTransactionDetail, saveTransactionDetailLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setAllLineItemsToCategoryClassInLocalData, setIsVendorUpdateAllChecked, updateLatestSelectedEntity, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateSelectedCustomer, updateSelectedVendor, updateTransactionDetail, updateVendorBulkRecommendationsFetchStatus, updateVendorToAllLineItems, uploadMissingAttachmentSuccess } from './view/transactionDetail/transactionDetailReducer';
573
574
  import { TransactionDetailReport, VendorDetailsView, getInitialUpdatablePeriodsForTransactionRecommendations, getTransactionDetail, getTransactionDetailForTransaction } from './view/transactionDetail/transactionDetailSelector';
574
575
  import { TransactionUpdates, getThirdPartyIdFromTransactionId } from './view/transactionDetail/transactionDetailState';
575
576
  import { TransactionDetailLineItemData, TransactionDetailLocalData, TransactionVendorUpdates } from './view/transactionDetail/transactionDetailTypes';
@@ -660,10 +661,10 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
660
661
  export { ClassesViewSelectorReportV2 };
661
662
  export { BalancesTimeseries, TrendTimeseries, BalanceKind };
662
663
  export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
663
- export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, DEFAULT_COMPLETED_SUB_TAB, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleMainTab, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
664
+ export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, DEFAULT_COMPLETED_SUB_TAB, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleMainTab, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, getLastTransferEntryReplacement, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
664
665
  export { JEScheduleLocalData };
665
666
  export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, JEScheduledTransactionWithFailedEntries, };
666
- export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, markCategoryClassRecommendationsFailureForCategorization, 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, };
667
+ export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, createTransferEntry, createTransferEntryFailure, createTransferEntryReplacedTransaction, createTransferEntrySuccess, resetCreateTransferEntryStatus, clearTransferEntryRouteReplacement, fetchAccountsForTransferFlow, removeTransactionFromAllTabs, clearExpenseAutomationTransactionsView, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };
667
668
  export { TopExpense, TopExTimePeriod, TOP_EX_TIME_PERIODS };
668
669
  export { TimeframeTick, TimeframeTickWithMetaData, toTimeframeTick, mapTimePeriodtoTimeframeTick, toTimePeriod, toAbsoluteDay, toMonthYearPeriodId, convertToPeriod, MonthYearPeriod, };
669
670
  export { VendorSpendTrendFilterTabType, toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorExpenseSelector';
@@ -728,7 +729,7 @@ export { MatchedTransaction };
728
729
  export { SupportedTransaction, SupportedTransactionWithCOT, SupportedTransactionPayload, getSupportedTransactionById, };
729
730
  export { clearTransactionList, updateLatestTransactionId, parallelFetchAccountTransactionList, parallelFetchEntityTransactionList, fetchAccountTransactionList, updateTransactionListByAccount, updateTransactionListByAccountFailure, updateTransactionListByAccountUIState, parallelFetchClassTransactionList, updateTransactionListByClassUIState, updateTransactionListByClass, parallelFetchProjectTransactionList, updateTransactionListByProjectUIState, updateTransactionListByProject, updateTransactionListUIStateByCategoryType, parallelFetchTransactionListByCategoryType, };
730
731
  export { TransactionListByAccountReport, getTransactionListByAccount, getTransactionListUIStateByAccountKey, };
731
- export { fetchEntityTransactionList, updateTransactionListByEntity, saveTransactionDetailLocalData, clearTransactionDetailSaveStatus, updateTransactionListByEntityFailure, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, saveTransactionDetail, setAllLineItemsLocalDataIsUpdateAllChecked, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetSelectedCustomer, resetVendor, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, };
732
+ export { fetchEntityTransactionList, updateTransactionListByEntity, saveTransactionDetailLocalData, clearTransactionDetailSaveStatus, updateTransactionListByEntityFailure, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, saveTransactionDetail, setAllLineItemsLocalDataIsUpdateAllChecked, initializeTransactionDetailLocalData, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetSelectedCustomer, resetVendor, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, };
732
733
  export { TransactionUpdates, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentSuccess, downloadAccountingProviderAttachmentFailure, fetchTransactionDetail, updateTransactionDetail, uploadMissingAttachmentSuccess, deleteTransactionAttachment, getThirdPartyIdFromTransactionId, };
733
734
  export { TransactionListByEntityView, getTransactionListByEntity };
734
735
  export { TransactionListByClassReport, getTransactionListByClass, getTransactionListUIStateByClassKey, TransactionListByProjectReport, getTransactionListByProject, getTransactionListUIStateByProjectKey, getTransactionListByEntityForSinglePeriod, };
@@ -836,8 +837,7 @@ export { Filing1099TinType };
836
837
  export { BillPayCardReport };
837
838
  export { ReimbursementCardReport };
838
839
  export { VendorListViewSortKey, VendorViewUIState, VendorListSelectorView, VendorListQuery, getVendorList, VendorListView, updateSortUiState, updatePageToken, updateYTDSelectionUIState, VendorListViewYTDSpendSortKey, isColumnYTDSpend, isVendorsTabVisible, VendorViewType, VendorReportIDType, toVendorReportIDType, VendorFiling1099ListSelectorView, getVendorFiling1099List, VendorFiling1099ListViewSortKey, VendorFiling1099ViewUIState, VendorFiling1099DownloadData, fetchVendorsFiling1099Download, Type1099Download, VendorFiling1099DownloadDataForType, };
839
- export { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityId, fetchRecommendationByEntityName, };
840
- export type { RecommendationLineUpdateFlowType } from './view/recommendation/recommendationReducer';
840
+ export { fetchEntityRecommendationsByTransactionId, fetchRecommendationByEntityId, fetchRecommendationByEntityName, };
841
841
  export { fetchOwnerList };
842
842
  export { ZeniAccountsConfigSelectorView, getZeniAccountsConfigDetail, ZeniAccountListSelectorView, getZeniAccountList, fetchZeniAccountList, fetchAccountList, DepositAccount, createCheckingAccount, fetchPaymentAccountList, unlinkPaymentAccount, getDepositAccountDetail, DepositAccountDetailSelectorView, DepositAccountListSelectorView, getAllDepositAccounts, getDepositAccountDetailForPDF, DepositAccountDetailForPDF, fetchDepositAccount, fetchZeniAccountsConfig, AccountHistoryWithBalances, TransferDetailLocalData, ReviewTransferDetail, updateTransferMoneyLocalData, updateTransferToLocalData, updateDepositToLocalData, transferMoney, getTransferDetail, TransferDetailSelectorView, clearTransferDetail, clearReviewTransferDetail, fetchReviewTransferDetail, fetchDepositAccountDetail, DepositAccountTransaction, DepositAccountWithAutoTransferRules, DepositTransactionStatusCode, DepositTransactionStatus, CheckDepositLocalData, depositCheck, updateCheckDepositLocalData, clearCheckDeposit, CheckDepositSelectorView, getCheckDepositDetail, updateDepositAccount, fetchDepositAccountHistorySuccess, fetchDepositAccountHistoryFailure, DepositAccountUpdateType, ZeniAccountSummaryWithBalance, fetchZeniAccStatementPage, getZeniAccStatements, ZeniAccStatementsSelectorView, ZeniAccountPaymentMethod, };
843
843
  export { CommonHistoryView, HistoricEvent, HistoricEventUpdate, ActivityHistorySelectorView, };