@zeniai/client-epic-state 5.0.67-beta0ND → 5.0.67

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 (105) hide show
  1. package/lib/entity/chargeCard/chargeCardReducer.d.ts +2 -19
  2. package/lib/entity/chargeCard/chargeCardReducer.js +2 -35
  3. package/lib/entity/chargeCardRepayment/chargeCardRepayment.d.ts +1 -1
  4. package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.d.ts +1 -14
  5. package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.js +2 -36
  6. package/lib/entity/creditAgent/creditAgentState.d.ts +1 -1
  7. package/lib/epic.d.ts +10 -11
  8. package/lib/epic.js +11 -12
  9. package/lib/esm/entity/chargeCard/chargeCardReducer.js +1 -34
  10. package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionReducer.js +1 -35
  11. package/lib/esm/epic.js +11 -12
  12. package/lib/esm/index.js +13 -19
  13. package/lib/esm/reducer.js +2 -8
  14. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +1 -2
  15. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +0 -6
  16. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +1 -11
  17. package/lib/esm/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +1 -2
  18. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +1 -127
  19. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -20
  20. package/lib/esm/view/expenseAutomationView/types/missingReceiptsViewState.js +2 -0
  21. package/lib/esm/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +0 -4
  22. package/lib/esm/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +2 -3
  23. package/lib/esm/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +2 -3
  24. package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +18 -55
  25. package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +2 -16
  26. package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +4 -5
  27. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +9 -28
  28. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +6 -9
  29. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +2 -3
  30. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
  31. package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +3 -7
  32. package/lib/index.d.ts +15 -22
  33. package/lib/index.js +58 -77
  34. package/lib/reducer.d.ts +2 -8
  35. package/lib/reducer.js +2 -8
  36. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +1 -2
  37. package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +0 -6
  38. package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.d.ts +2 -2
  39. package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +0 -10
  40. package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +0 -21
  41. package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +1 -2
  42. package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +1 -2
  43. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -8
  44. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +2 -128
  45. package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +1 -2
  46. package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +0 -14
  47. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -20
  48. package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +2 -1
  49. package/lib/view/expenseAutomationView/types/missingReceiptsViewState.js +4 -1
  50. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +1 -40
  51. package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.d.ts +1 -2
  52. package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +0 -4
  53. package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.d.ts +1 -3
  54. package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +2 -3
  55. package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.d.ts +1 -3
  56. package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +2 -3
  57. package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +18 -55
  58. package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +2 -16
  59. package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +4 -5
  60. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.d.ts +3 -18
  61. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +10 -29
  62. package/lib/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +6 -9
  63. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.d.ts +1 -3
  64. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +2 -3
  65. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
  66. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.d.ts +1 -3
  67. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +3 -7
  68. package/package.json +1 -1
  69. package/lib/commonStateTypes/cacheOverrideFetchReducer.d.ts +0 -17
  70. package/lib/commonStateTypes/cacheOverrideFetchReducer.js +0 -20
  71. package/lib/commonStateTypes/pusherActions.d.ts +0 -11
  72. package/lib/commonStateTypes/pusherActions.js +0 -6
  73. package/lib/entity/scheduleActivityLog/scheduleActivityLogPayload.d.ts +0 -36
  74. package/lib/entity/scheduleActivityLog/scheduleActivityLogPayload.js +0 -55
  75. package/lib/entity/scheduleActivityLog/scheduleActivityLogReducer.d.ts +0 -6
  76. package/lib/entity/scheduleActivityLog/scheduleActivityLogReducer.js +0 -27
  77. package/lib/entity/scheduleActivityLog/scheduleActivityLogSelector.d.ts +0 -4
  78. package/lib/entity/scheduleActivityLog/scheduleActivityLogSelector.js +0 -17
  79. package/lib/entity/scheduleActivityLog/scheduleActivityLogState.d.ts +0 -51
  80. package/lib/entity/scheduleActivityLog/scheduleActivityLogState.js +0 -23
  81. package/lib/esm/commonStateTypes/cacheOverrideFetchReducer.js +0 -16
  82. package/lib/esm/commonStateTypes/pusherActions.js +0 -3
  83. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogPayload.js +0 -49
  84. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogReducer.js +0 -23
  85. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogSelector.js +0 -10
  86. package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogState.js +0 -19
  87. package/lib/esm/view/expenseAutomationView/types/completedSubTab.js +0 -17
  88. package/lib/esm/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.js +0 -43
  89. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewPayload.js +0 -1
  90. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewReducer.js +0 -47
  91. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewSelector.js +0 -33
  92. package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewState.js +0 -1
  93. package/lib/tsconfig.typecheck.tsbuildinfo +0 -1
  94. package/lib/view/expenseAutomationView/types/completedSubTab.d.ts +0 -10
  95. package/lib/view/expenseAutomationView/types/completedSubTab.js +0 -21
  96. package/lib/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.d.ts +0 -9
  97. package/lib/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.js +0 -47
  98. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewPayload.d.ts +0 -8
  99. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewPayload.js +0 -2
  100. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewReducer.d.ts +0 -17
  101. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewReducer.js +0 -51
  102. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewSelector.d.ts +0 -8
  103. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewSelector.js +0 -36
  104. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewState.d.ts +0 -5
  105. package/lib/view/scheduleActivityLogView/scheduleActivityLogViewState.js +0 -2
package/lib/esm/index.js CHANGED
@@ -15,7 +15,6 @@ import { getActualPeriodOfFY, getActualPeriodOfFYQtr, } from './commonStateTypes
15
15
  import { getFYMonths } from './commonStateTypes/fiscalYearHelpers/getFYMonths';
16
16
  import { getFYQuarterAndYear, getLastMonthOfFYQuarter, getLastMonthOfFYYear, } from './commonStateTypes/fiscalYearHelpers/getFYQuarterAndYear';
17
17
  import { getStartOfAndEndOfTimeframeForFY } from './commonStateTypes/fiscalYearHelpers/getStartOfAndEndOfTimeframeFY';
18
- import { addChargeCardTransactionFromPusher, addDeclinedChargeCardTransactionFromPusher, } from './commonStateTypes/pusherActions';
19
18
  import { isAllFetchCompleted, isAnyFetchInProgress, reduceAllFetchState, reduceAnyCompletedFetchState, reduceAnyFetchState, reduceFetchState, reduceFetchStateParallelTimeframes, } from './commonStateTypes/reduceFetchState';
20
19
  import { toReimbursementTypeCode } from './commonStateTypes/reimbursementTypeCode';
21
20
  import { stringToUnion, stringToUnionStrict, } from './commonStateTypes/stringToUnion';
@@ -35,11 +34,9 @@ import { toAttributeOrRoleTypeStrict, toAttributeTypeStrict, toRoleTypeStrict, }
35
34
  import { toOutsideZeniPaymentModeType, } from './entity/billPay/billTransaction/billTransactionState';
36
35
  import { toRecurringBillFrequency, toRecurringBillFrequencyStrict, } from './entity/billPay/recurringBills/recurringBillsState';
37
36
  import { toCardAddressType, toCardType, toCreditLimitFrequencyCodeType, toShippingAddressType, } from './entity/chargeCard/chargeCard';
38
- import { updateChargeCardSpendingFromPusher, updateChargeCardStatusFromPusher, } from './entity/chargeCard/chargeCardReducer';
39
37
  import { getChargeCardById } from './entity/chargeCard/chargeCardSelector';
40
38
  import { attachmentFilePathToAttachment, } from './entity/chargeCardTransaction/chargeCardTransactionPayload';
41
39
  import { updateChargeCardTransactionAttachments } from './entity/chargeCardTransaction/chargeCardTransactionReducer';
42
- import { updateChargeCardTransactionFromPusher, updateChargeCardTransactionReceiptFromPusher, updateChargeCardTransactionStatusFromPusher, } from './entity/chargeCardTransaction/chargeCardTransactionReducer';
43
40
  import { getControllersName, getFirstControllerEmail, getFirstControllerId, } from './entity/company/companyHelper';
44
41
  import { getCompanyByCompanyId, getCompanyInfoForAllCockpitCompaniesInState, getControllersForCompany, } from './entity/company/companySelector';
45
42
  import { ALL_ACCOUNTING_CONNECTION_CREATION_MODES, isCompanyEligibleForTreasury, } from './entity/company/companyStateTypes';
@@ -62,7 +59,7 @@ import { closeSnackbar, openSnackbar } from './entity/snackbar/snackbarReducer';
62
59
  import { getSnackbar } from './entity/snackbar/snackbarSelector';
63
60
  import { ALL_WEEK_DAYS, toDayOfWeek, toPriorityCodeType, toTaskStatusCodeType, } from './entity/task/taskState';
64
61
  import { getTaskGroupById } from './entity/taskGroup/taskGroupSelector';
65
- import { clearAll, deleteConnection, doMagicLinkSignIn, doSignIn, doSignOut, fetchActiveTenant, fetchAllTenants, fetchExcludedResources as fetchExcludedResourcesForTenant, fetchExternalConnections as fetchExternalConnectionsForTenant, fetchSubscriptionSummaryForTenant, resendVerifyDeviceOTP, resetSignInState, saveAPIKeyConnection, saveConnectorCredentials, saveExternalConnection as saveExternalConnectionForTenant, saveOAuthConnection, sendEmailMagicLinkToUser, sendSessionHeartbeat, toExternalIntegrationType, toExternalSupportedTool, updateCurrentTenant, updateSignInState, verifyDeviceWithTwoFA, } from './entity/tenant/tenantReducer';
62
+ import { clearAll, doMagicLinkSignIn, doSignIn, doSignOut, fetchActiveTenant, fetchAllTenants, fetchExcludedResources as fetchExcludedResourcesForTenant, fetchExternalConnections as fetchExternalConnectionsForTenant, fetchSubscriptionSummaryForTenant, resendVerifyDeviceOTP, resetSignInState, deleteConnection, saveAPIKeyConnection, saveConnectorCredentials, saveExternalConnection as saveExternalConnectionForTenant, saveOAuthConnection, sendEmailMagicLinkToUser, sendSessionHeartbeat, toExternalIntegrationType, toExternalSupportedTool, updateCurrentTenant, updateSignInState, verifyDeviceWithTwoFA, } from './entity/tenant/tenantReducer';
66
63
  import { getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView, } from './entity/tenant/tenantSelector';
67
64
  import { pushToastNotification } from './entity/toastNotification/toastNotificationReducer';
68
65
  import { getLastNotificationTime, getNotifications, } from './entity/toastNotification/toastNotificationSelector';
@@ -126,6 +123,8 @@ import { fetchCashPosition, updateCashPositionCOABalancesRange, updateCashPositi
126
123
  import { getCashPosition, getCashPositionForHighlightedRange, getCashPositionForSelectedRange, getCashPositionUIState, } from './view/cashPosition/cashPositionSelector';
127
124
  import { fetchClassList } from './view/classList/classListReducer';
128
125
  import { getClassList, } from './view/classList/classListSelector';
126
+ import { fetchProjectList } from './view/projectList/projectListReducer';
127
+ import { getProjectList, } from './view/projectList/projectListSelector';
129
128
  import { SEMI_WEEKLY_REQUIRED_DAYS_COUNT, getMinAllowedEndDate, getRecurringEndDateFromCount, toRecurringFrequency, } from './view/common/recurringViewHelper';
130
129
  import { ZENI_CLEARING_ACCOUNT, isZeniClearingAccount, isZeniClearingAccountReport, } from './view/common/zeniClearingAccountHelper';
131
130
  import { clearTransactionVendorSaveStatus, resetTransactionVendorLocalData, saveTransactionVendor, saveTransactionVendorSuccessOrFailure, updateTransactionVendorLocalData, } from './view/commonVendorView/transactionVendorView/transactionVendorViewReducer';
@@ -168,18 +167,15 @@ import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFl
168
167
  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';
169
168
  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';
170
169
  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';
171
- import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } from './view/expenseAutomationView/reducers/transactionsViewReducer';
170
+ import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } from './view/expenseAutomationView/reducers/transactionsViewReducer';
172
171
  import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
173
172
  import { getExpenseAutomationReconciliationView, isAccountReconReport, } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
174
173
  import { getExpenseAutomationTransactionView } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
175
- import { DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab, } from './view/expenseAutomationView/types/completedSubTab';
176
174
  import { toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey, } from './view/expenseAutomationView/types/jeSchedulesViewState';
177
- import { BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toMatchSource, toMissingReceiptsTab, } from './view/expenseAutomationView/types/missingReceiptsViewState';
175
+ import { BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, } from './view/expenseAutomationView/types/missingReceiptsViewState';
178
176
  import { toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey, } from './view/expenseAutomationView/types/missingReceiptsViewState';
179
177
  import { toReconciliationTabsType, } from './view/expenseAutomationView/types/reconciliationViewState';
180
178
  import { toTransactionsTabKey as toExpenseAutomationTransactionsTabKey, toTransactionsSortKey, } from './view/expenseAutomationView/types/transactionsViewState';
181
- import { clearFeatureNotificationView, fetchRegisteredInterests, notifyMeForFeature, } from './view/featureNotificationView/featureNotificationViewReducer';
182
- import { getFeatureNotificationView, getRegisteredInterests, getRegisteredInterestsByFeature, isFeatureInterestRegistered, } from './view/featureNotificationView/featureNotificationViewSelector';
183
179
  import downloadFile from './view/fileView/fileDownloadHelpers';
184
180
  import uploadFile from './view/fileView/fileUploadHelpers';
185
181
  import { clearFileViewList, deleteFile, deleteFileFailure, deleteFileList, deleteFileListFailure, deleteFileListSuccess, deleteFileSuccess, fetchFile, fetchFileList, fetchFileListFailure, fetchFileListSuccess, updateFileName, updateFileNameFailure, updateFileNameSuccess, updateFilesMetadata, } from './view/fileView/fileViewReducer';
@@ -206,6 +202,8 @@ import { getNetBurnOrIncomeStoryCardReport } from './view/netBurnOrIncomeStoryCa
206
202
  import { fetchNotificationUnreadCount, fetchNotificationUnreadCountSuccess, fetchNotificationView, updateNotificationViewAllNotificationsStatus, updateNotificationViewCurrentTabAndSubTab, updateNotificationViewNotificationStatus, updateNotificationViewSubTab, updateNotificationViewTabState, updateNotificationViewUIState, } from './view/notificationView/notificationViewReducer';
207
203
  import { getExternalNotificationsForSelectedSubTab, getNotificationView, getNotificationsForSelectedSubTab, } from './view/notificationView/notificationViewSelector';
208
204
  import { toNotificationSubTabTypeStrict, toNotificationTabTypeStrict, } from './view/notificationView/notificationViewState';
205
+ import { clearFeatureNotificationView, fetchRegisteredInterests, notifyMeForFeature, } from './view/featureNotificationView/featureNotificationViewReducer';
206
+ import { getFeatureNotificationView, getRegisteredInterests, getRegisteredInterestsByFeature, isFeatureInterestRegistered, } from './view/featureNotificationView/featureNotificationViewSelector';
209
207
  import { clearOnboardingCustomerViewUpdateData, fetchCompanyOnboardingView, fetchOnboardingCompletedCompanies, fetchQBOConnectionPool, getOnboardingEmailGroup, initializeOnboardingCustomerViewUpdateData, resetNewOnboardedCustomerId, retryBankAccountConnectionForOnboarding, saveOnboardingCustomerCompletedStatus, saveOnboardingCustomerDataInLocalStore, saveOnboardingCustomerNotes, saveOnboardingCustomerViewUpdateData, saveOnboardingCustomerViewUpdates, sendOnboardingCustomerViewInvite, updateCustomerCreationStatus, updateOnboardingCustomerDataInLocalStore, updateOnboardingCustomerListUIState, updateQBOConnectionPoolExternalConnection, updateStatusAfterOnboardingCompleted, } from './view/onboardingView/cockpitView/onboardingCockpitViewReducer';
210
208
  import { getNewOnboardingCustomerView, getOnboardingCockpitView, } from './view/onboardingView/cockpitView/onboardingCockpitViewSelector';
211
209
  import { toProductType, toProductTypeStrict, } from './view/onboardingView/cockpitView/types/onboardingCockpitViewTypes';
@@ -226,15 +224,13 @@ import { fetchProfitAndLoss, fetchProfitAndLossForTimeframe, resetProfitAndLossN
226
224
  import { getPandLReportFetchState, getProfitAndLossReport, } from './view/profitAndLoss/profitAndLossSelector';
227
225
  import { getEmptyHorizontalSectionBalancesSlice } from './view/profitAndLossClassesView/horizontalSectionEmptyBalancesSlice';
228
226
  import { getProfitAndLossClassesHorizontalView } from './view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector';
227
+ import { aggregateHorizontalDescendantBalances } from './view/profitAndLossClassesView/profitAndLossHorizontalEnrichment';
229
228
  import { HORIZONTAL_CLASS_TOTAL_BALANCE_ID, isHorizontalAccountReportData, } from './view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelectorTypes';
230
229
  import { fetchProfitAndLossClassesView, resetProfitAndLossClassesNodeCollapseState, updateClassViewLayout, updateAccountViewMode as updateProfitAndLossAccountViewMode, updateClassesToFilterOut as updateProfitAndLossClassesToFilterOut, updateProfitAndLossClassesViewUIState, } from './view/profitAndLossClassesView/profitAndLossClassesViewReducer';
231
230
  import { getProfitAndLossClassesView } from './view/profitAndLossClassesView/profitAndLossClassesViewSelector';
232
231
  import { isPandLReportViewCalculatedSectionID, isPandLReportViewSectionID, } from './view/profitAndLossClassesView/profitAndLossClassesViewSelectorTypes';
233
- import { aggregateHorizontalDescendantBalances } from './view/profitAndLossClassesView/profitAndLossHorizontalEnrichment';
234
232
  import { clearProfitAndLossProjectView, fetchProfitAndLossForTimeframeProjectView, fetchProfitAndLossProjectView, resetProfitAndLossProjectNodeCollapseState, updateProfitAndLossProjectViewUIState, updateProjectViewAccountViewMode, updateProjectsToFilterOut, } from './view/profitAndLossProjectView/profitAndLossProjectViewReducer';
235
233
  import { getProfitAndLossProjectView } from './view/profitAndLossProjectView/profitAndLossProjectViewSelector';
236
- import { fetchProjectList } from './view/projectList/projectListReducer';
237
- import { getProjectList, } from './view/projectList/projectListSelector';
238
234
  import { fetchEntityRecommendationsByTransactionId, fetchRecommendationByEntityId, fetchRecommendationByEntityName, } from './view/recommendation/recommendationReducer';
239
235
  import { clearReferrals, fetchReferrals, fetchRewardsPlan, resendReferralInvite, saveReferralFormDataInLocalStore, sendReferralInvite, updateReferViewed, updateReferralListSortUiState, } from './view/referralView/referralReducer';
240
236
  import { getInviteFormView, getReferralListView, getRewardsPlanCard, } from './view/referralView/referralSelector';
@@ -299,7 +295,7 @@ import { fetchChargeCardConfig } from './view/spendManagement/chargeCards/charge
299
295
  import { closeChargeCard, completeCVVActivationWait, completeDebitCardSetPinWait, fetchChargeCardDetail, fetchChargeCardDetailPage, fetchChargeCardTransactionAttachments, fetchChargeCardTransactionList, fetchChargeCardTransactionStatistics, fetchChargeCardsRecurringExpenses, fetchDepositAccountLimit, lockChargeCard, startCVVActivationWait, startDebitCardSetPinWait, unlockChargeCard, updateChargeCardDetail, updateChargeCardName, updateChargeCardSpendLimit, updateChargeCardSpendLimitSuccessOrFailure, updateChargeCardTransactionIsViewReceiptClicked, updateChargeCardTransactionReceiptsShowTickFetchStatus, updateChargeCardTransactionUploadReceiptsFetchStatus, updateDebitCardPinAttempt, updatePhysicalChargeCardAttempt, } from './view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer';
300
296
  import { getChargeCardCVVActivateView, getChargeCardControlDetailView, getChargeCardDetailView, getChargeCardRecurringExpensesView, getChargeCardTransactionAttachmentView, getDebitCardSetPinView, getDepositAccountLimitFetchStateByDepositAccountId, } from './view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailSelector';
301
297
  import { toChargeCardSortKeyType, } from './view/spendManagement/chargeCards/chargeCardList/chargeCardList';
302
- import { closeChargeCards, fetchChargeCardList, fetchChargeCardListPage, fetchCreditAccount, fetchCreditAccountRepayment, fetchDebitCardSummary, lockChargeCards, resendCardInvite, revokeCardInvite, revokeChargeCardsInvite, unlockChargeCards, updateBulkActionCardIds, updateSearchText as updateChargeCardListSearchText, updateChargeCardListUIState, updateChargeCardsSpendLimit, updateCreditAccountBalanceFromPusher, updateRowActionCardId, } from './view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer';
298
+ import { closeChargeCards, fetchChargeCardList, fetchChargeCardListPage, fetchCreditAccount, fetchCreditAccountRepayment, fetchDebitCardSummary, lockChargeCards, resendCardInvite, revokeCardInvite, revokeChargeCardsInvite, unlockChargeCards, updateBulkActionCardIds, updateSearchText as updateChargeCardListSearchText, updateChargeCardListUIState, updateChargeCardsSpendLimit, updateRowActionCardId, } from './view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer';
303
299
  import { anyCardOnHold, getChargeCardBulkActionView, getChargeCardListView, getChargeCardRecurringExpensesByCardIds, getChargeCardRowActionView, getCreditAccountDetails, getDebitCardList, getDebitCardSummary, getDepositAccountListWithDebitCardIssued, getMyPendingActivationChargeCardListView, getMyRequestOnHoldChargeCardListWithShippingAddress, } from './view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector';
304
300
  import { PAYMENT_HISTORY_FILTER_CATEGORIES, } from './view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory';
305
301
  import { getChargeCardPaymentHistoryDownloadReport, } from './view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryDownloadSelector';
@@ -388,9 +384,9 @@ import { getThirdPartyIdFromTransactionId, } from './view/transactionDetail/tran
388
384
  import { getTransactionListByAccount, getTransactionListUIStateByAccountKey, } from './view/transactionList/transactionListByAccountSelector';
389
385
  import { getTransactionListUIStateByCategoryType, getTransactionsListByCategoryType, } from './view/transactionList/transactionListByCategoryTypeSelector';
390
386
  import { getTransactionListByClass, getTransactionListUIStateByClassKey, } from './view/transactionList/transactionListByClassSelector';
391
- import { getTransactionListByEntity, getTransactionListByEntityForSinglePeriod, } from './view/transactionList/transactionListByEntitySelector';
392
387
  import { getTransactionListByProject, getTransactionListUIStateByProjectKey, } from './view/transactionList/transactionListByProjectSelector';
393
- import { clearTransactionList, fetchAccountTransactionList, fetchEntityTransactionList, parallelFetchAccountTransactionList, parallelFetchClassTransactionList, parallelFetchEntityTransactionList, parallelFetchProjectTransactionList, parallelFetchTransactionListByCategoryType, updateLatestTransactionId, updateTransactionListByAccount, updateTransactionListByAccountFailure, updateTransactionListByAccountUIState, updateTransactionListByClass, updateTransactionListByClassUIState, updateTransactionListByEntity, updateTransactionListByEntityFailure, updateTransactionListByProject, updateTransactionListByProjectUIState, updateTransactionListUIStateByCategoryType, } from './view/transactionList/transactionListReducer';
388
+ import { getTransactionListByEntity, getTransactionListByEntityForSinglePeriod, } from './view/transactionList/transactionListByEntitySelector';
389
+ import { clearTransactionList, fetchAccountTransactionList, fetchEntityTransactionList, parallelFetchAccountTransactionList, parallelFetchClassTransactionList, parallelFetchProjectTransactionList, parallelFetchEntityTransactionList, parallelFetchTransactionListByCategoryType, updateLatestTransactionId, updateTransactionListByAccount, updateTransactionListByAccountFailure, updateTransactionListByAccountUIState, updateTransactionListByClass, updateTransactionListByClassUIState, updateTransactionListByProject, updateTransactionListByProjectUIState, updateTransactionListByEntity, updateTransactionListByEntityFailure, updateTransactionListUIStateByCategoryType, } from './view/transactionList/transactionListReducer';
394
390
  import { clearTrendData, fetchExpenseTrend, fetchIncomeTrend, } from './view/trend/trendReducer';
395
391
  import { getCurrentFiscalQuarterDateRange, getTrendForEntity, } from './view/trend/trendSelector';
396
392
  import { clearTrendWithTransactions, fetchTransactionsForEntity, fetchTrendForEntity, updateSelectedTimeperiod, } from './view/trendWithTransactions/trendWithTransactionsReducer';
@@ -445,7 +441,7 @@ export { stringToUnion, stringToUnionStrict };
445
441
  export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, getMonthEndCloseChecksViewByTenantId, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, };
446
442
  export {
447
443
  // Bulk Upload Types
448
- BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, DEFAULT_COMPLETED_SUB_TAB, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, fetchExpenseAutomationMissingReceipts,
444
+ BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts,
449
445
  // Bulk Upload Actions
450
446
  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, getExpenseAutomationFluxAnalysisView, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, updateFluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, getExpenseAutomationReconciliationView, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, getAccountReconByAccountIdAndSelectedPeriod, toReconciliationTabsType, isAccountReconReport, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, toReconciliationAccountSource, deleteAccountStatement, uploadAccountStatement, updateNodeCollapseState, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
451
447
  export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, toTransactionsSortKey, };
@@ -600,7 +596,7 @@ export { fetchUserRoleConfig, getUserRoleConfig };
600
596
  export { getCompanyHealthMetricConfig, fetchCompanyHealthMetricConfig, };
601
597
  export { updateCompaniesHealth, updateCompanyHealth, };
602
598
  export { clearCompanyHealthMetricView, fetchCompanyHealthMetricView, initializeCompanyHealthMetricViewLocalData, removeSelectedCompanyId, saveCompanyHealthMetricById, updateCompanyHealthMetricLocalStore, updateCompanyHealthMetricViewErrorStatus, updateCompanyHealthMetricViewSuccessStatus, updateCompanyHealthViewUIState, };
603
- export { updateChargeCardTransactionAttachments, updateChargeCardStatusFromPusher, updateChargeCardSpendingFromPusher, updateChargeCardTransactionStatusFromPusher, updateChargeCardTransactionFromPusher, updateChargeCardTransactionReceiptFromPusher, updateCreditAccountBalanceFromPusher, addChargeCardTransactionFromPusher, addDeclinedChargeCardTransactionFromPusher, attachmentFilePathToAttachment, isCompanyRunwayInfinite, getCompanyHealthMetricView, hasCompanyHealthMetricFormFieldChanged, companyHealthMetricDropDownOptions, getChargeCardBusinessVerificationDetails, fetchDebitCardSummary, fetchChargeCardList, fetchChargeCardListPage, fetchChargeCardConfig, fetchCreditAccount, fetchCreditAccountRepayment, getChargeCardListView, getMyPendingActivationChargeCardListView, getMyRequestOnHoldChargeCardListWithShippingAddress, clearChargeCardRepaymentDetail, fetchChargeCardRepaymentDetail, initiateChargeCardRepayment, updateChargeCardRepaymentLocalStore, getChargeCardRepaymentDetail, fetchChargeCardPaymentPage, fetchChargeCardPaymentHistory, updatePaymentHistoryDownloadUIState, updatePaymentHistoryFilters, updatePaymentHistorySearchText, updatePaymentHistoryUIState, getChargeCardPaymentHistoryDownloadReport, getChargeCardPaymentHistoryView, getPaymentHistorySourceAccountName, getPaymentStatusDisplayText, PAYMENT_HISTORY_FILTER_CATEGORIES, getCreditAccountDetails, fetchChargeCardDetailPage, fetchChargeCardDetail, fetchChargeCardTransactionStatistics, fetchDepositAccountLimit, getChargeCardDetailView, getChargeCardControlDetailView, getDepositAccountLimitFetchStateByDepositAccountId, getChargeCardTransactionAttachmentView, getDebitCardSetPinView, getChargeCardRecurringExpensesByCardIds, getChargeCardRecurringExpensesView, getChargeCardRowActionView, getChargeCardBulkActionView, getChargeCardCVVActivateView, fetchChargeCardTransactionList, fetchCashbackDetail, toChargeCardSortKeyType, getCashbackDetail, getZeniDateFromPeriod, toCreditLimitFrequencyCodeType, getDepositAccountListWithDebitCardIssued, getIssueChargeCardView, getChargeCardSetupViewDetails, fetchChargeCardStatementList, getChargeCardStatements, fetchChargeCardSetupView, enableChargeCardAutoPay, acceptChargeCardTerms, expressInterestInChargeCard, getDepositAccountLimitForChargeCardByDepositAccountId, toCardAddressType, toShippingAddressType, toCardType, issueChargeCards, fetchIssueCardPage, fetchDepositAccountListForCards, getDebitCardList, getDebitCardSummary, updateCustomAddressId, updateChargeCardsLocalStore, resetIssueChargeCardForm, updateBulkActionCardIds, updateChargeCardListSearchText, updateChargeCardListUIState, updateCashbackDetailUIState, updateChargeCardDetail, updatePhysicalChargeCardAttempt, lockChargeCard, unlockChargeCard, closeChargeCard, updateChargeCardName, getCardUserOnboardingView, initializeCardUserOnboardingLocalData, updateCardUserOnboardingLocalData, saveCardOnboardingUserDetails, updateChargeCardTransactionUploadReceiptsFetchStatus, completeDebitCardSetPinWait, startDebitCardSetPinWait, updateDebitCardPinAttempt, updateChargeCardTransactionReceiptsShowTickFetchStatus, updateChargeCardTransactionIsViewReceiptClicked, fetchChargeCardTransactionAttachments, completeCVVActivationWait, startCVVActivationWait, updateChargeCardSpendLimit, updateChargeCardSpendLimitSuccessOrFailure, resendCardInvite, revokeCardInvite, updateRowActionCardId, revokeChargeCardsInvite, lockChargeCards, unlockChargeCards, closeChargeCards, updateChargeCardsSpendLimit, fetchChargeCardsRecurringExpenses, startCardUserOnboardingActivationWait, completeCardUserOnboardingActivationWait, setFirstViewAfterActivation, setFirstViewCompleteAfterActivation, setCurrentDisplayedCardId, getChargeCardById, anyCardOnHold, };
599
+ export { updateChargeCardTransactionAttachments, attachmentFilePathToAttachment, isCompanyRunwayInfinite, getCompanyHealthMetricView, hasCompanyHealthMetricFormFieldChanged, companyHealthMetricDropDownOptions, getChargeCardBusinessVerificationDetails, fetchDebitCardSummary, fetchChargeCardList, fetchChargeCardListPage, fetchChargeCardConfig, fetchCreditAccount, fetchCreditAccountRepayment, getChargeCardListView, getMyPendingActivationChargeCardListView, getMyRequestOnHoldChargeCardListWithShippingAddress, clearChargeCardRepaymentDetail, fetchChargeCardRepaymentDetail, initiateChargeCardRepayment, updateChargeCardRepaymentLocalStore, getChargeCardRepaymentDetail, fetchChargeCardPaymentPage, fetchChargeCardPaymentHistory, updatePaymentHistoryDownloadUIState, updatePaymentHistoryFilters, updatePaymentHistorySearchText, updatePaymentHistoryUIState, getChargeCardPaymentHistoryDownloadReport, getChargeCardPaymentHistoryView, getPaymentHistorySourceAccountName, getPaymentStatusDisplayText, PAYMENT_HISTORY_FILTER_CATEGORIES, getCreditAccountDetails, fetchChargeCardDetailPage, fetchChargeCardDetail, fetchChargeCardTransactionStatistics, fetchDepositAccountLimit, getChargeCardDetailView, getChargeCardControlDetailView, getDepositAccountLimitFetchStateByDepositAccountId, getChargeCardTransactionAttachmentView, getDebitCardSetPinView, getChargeCardRecurringExpensesByCardIds, getChargeCardRecurringExpensesView, getChargeCardRowActionView, getChargeCardBulkActionView, getChargeCardCVVActivateView, fetchChargeCardTransactionList, fetchCashbackDetail, toChargeCardSortKeyType, getCashbackDetail, getZeniDateFromPeriod, toCreditLimitFrequencyCodeType, getDepositAccountListWithDebitCardIssued, getIssueChargeCardView, getChargeCardSetupViewDetails, fetchChargeCardStatementList, getChargeCardStatements, fetchChargeCardSetupView, enableChargeCardAutoPay, acceptChargeCardTerms, expressInterestInChargeCard, getDepositAccountLimitForChargeCardByDepositAccountId, toCardAddressType, toShippingAddressType, toCardType, issueChargeCards, fetchIssueCardPage, fetchDepositAccountListForCards, getDebitCardList, getDebitCardSummary, updateCustomAddressId, updateChargeCardsLocalStore, resetIssueChargeCardForm, updateBulkActionCardIds, updateChargeCardListSearchText, updateChargeCardListUIState, updateCashbackDetailUIState, updateChargeCardDetail, updatePhysicalChargeCardAttempt, lockChargeCard, unlockChargeCard, closeChargeCard, updateChargeCardName, getCardUserOnboardingView, initializeCardUserOnboardingLocalData, updateCardUserOnboardingLocalData, saveCardOnboardingUserDetails, updateChargeCardTransactionUploadReceiptsFetchStatus, completeDebitCardSetPinWait, startDebitCardSetPinWait, updateDebitCardPinAttempt, updateChargeCardTransactionReceiptsShowTickFetchStatus, updateChargeCardTransactionIsViewReceiptClicked, fetchChargeCardTransactionAttachments, completeCVVActivationWait, startCVVActivationWait, updateChargeCardSpendLimit, updateChargeCardSpendLimitSuccessOrFailure, resendCardInvite, revokeCardInvite, updateRowActionCardId, revokeChargeCardsInvite, lockChargeCards, unlockChargeCards, closeChargeCards, updateChargeCardsSpendLimit, fetchChargeCardsRecurringExpenses, startCardUserOnboardingActivationWait, completeCardUserOnboardingActivationWait, setFirstViewAfterActivation, setFirstViewCompleteAfterActivation, setCurrentDisplayedCardId, getChargeCardById, anyCardOnHold, };
604
600
  export { TIME_SERIES_DURATIONS, convertToTimeSeriesSelectionRange, toTimeSeriesDuration, fetchAggregatedReport, aggregatedReportView, };
605
601
  export { fetchApAging, getApAgingReport, updateApAgingUIState, };
606
602
  export { fetchApAgingDetail, getApAgingDetailForVendor, updateApAgingDetailUIState, };
@@ -654,8 +650,6 @@ export { getAutoTransferRules, getAutoTransferRuleById, getAutoTransferRuleHisto
654
650
  export { BULK_UPLOAD_AUTOMATCHING_TIMEOUT_MS, BULK_UPLOAD_BAR_COMPLETE_HOLD_MS, } from './view/expenseAutomationView/helpers/bulkUploadTiming';
655
651
  export { fetchTransactionActivityLog } from './view/transactionActivityLogView/transactionActivityLogViewReducer';
656
652
  export { getTransactionActivityLogView, } from './view/transactionActivityLogView/transactionActivityLogViewSelector';
657
- export { fetchScheduleActivityLog, clearScheduleActivityLogView, } from './view/scheduleActivityLogView/scheduleActivityLogViewReducer';
658
- export { getScheduleActivityLogView, } from './view/scheduleActivityLogView/scheduleActivityLogViewSelector';
659
653
  // ── Session Management ──────────────────────────────────────────────
660
654
  export { SessionManager } from './entity/tenant/SessionManager';
661
655
  export { DEFAULT_SESSION_CONFIG } from './entity/tenant/sessionTypes';
@@ -4,6 +4,7 @@ import accountGroup, { initialState as initialAccountGroupState, } from './entit
4
4
  import accountRecon, { initialState as initialAccountReconState, } from './entity/accountRecon/accountReconReducer';
5
5
  import address, { initialState as initialAddressState, } from './entity/address/addressReducer';
6
6
  import aiAccountantCustomer, { initialAiAccountantCustomerState, } from './entity/aiAccountantCustomer/aiAccountantCustomerReducer';
7
+ import creditAgentEntity, { initialCreditAgentEntityState, } from './entity/creditAgent/creditAgentReducer';
7
8
  import aiCfo, { initialAiCfoState } from './entity/aiCfo/aiCfoReducer';
8
9
  import approvalRule, { initialState as initialApprovalRuleState, } from './entity/approvalRule/approvalRuleReducer';
9
10
  import bankAccount, { initialState as initialBankAccountState, } from './entity/bankAccount/bankAccountReducer';
@@ -19,7 +20,6 @@ import company, { initialState as initialCompanyState, } from './entity/company/
19
20
  import companyHealthMetric, { initialState as initialCompanyHealthMetricState, } from './entity/companyHealthMetric/companyHealthMetricReducer';
20
21
  import connectedAccount, { initialState as initialConnectedAccountState, } from './entity/connectedAccount/connectedAccountReducer';
21
22
  import countryList, { initialState as initialCountryListState, } from './entity/countryList/countryListReducer';
22
- import creditAgentEntity, { initialCreditAgentEntityState, } from './entity/creditAgent/creditAgentReducer';
23
23
  import currency, { initialState as initialCurrencyState, } from './entity/currency/currencyReducer';
24
24
  import customer, { initialState as initialCustomerState, } from './entity/customer/customerReducer';
25
25
  import customerIncome, { initialState as initialCustomerIncomeState, } from './entity/customerIncome/customerIncomeTrendReducer';
@@ -42,7 +42,6 @@ import paymentInstrument, { initialState as initialPaymentInstrumentState, } fro
42
42
  import accountingSummary, { initialState as initialAccountingSummaryState, } from './entity/portfolio/accountingSummary/accountingSummaryReducer';
43
43
  import project, { initialState as initialProjectState, } from './entity/project/projectReducer';
44
44
  import reimbursement, { initialState as initialReimbursementState, } from './entity/reimbursement/reimbursementReducer';
45
- import scheduleActivityLog, { initialState as initialScheduleActivityLogState, } from './entity/scheduleActivityLog/scheduleActivityLogReducer';
46
45
  import sectionAccountsView, { initialState as initialSectionAccountsViewState, } from './entity/sectionAccountsView/sectionAccountsViewReducer';
47
46
  import sectionClassesViewV2, { initialState as initialSectionClassesViewStateV2, } from './entity/sectionClassesViewV2/sectionClassesViewReducer';
48
47
  import sectionProjectView, { initialState as initialSectionProjectViewState, } from './entity/sectionProjectView/sectionProjectViewReducer';
@@ -108,9 +107,9 @@ import expenseAutomationJESchedulesView, { initialState as initialExpenseAutomat
108
107
  import expenseAutomationMissingReceiptsView, { initialState as initialExpenseAutomationMissingReceiptsViewState, } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
109
108
  import expenseAutomationReconciliationView, { initialState as initialExpenseAutomationReconciliationViewState, } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
110
109
  import expenseAutomationTransactionsView, { initialState as initialExpenseAutomationTransactionsViewState, } from './view/expenseAutomationView/reducers/transactionsViewReducer';
111
- import featureNotificationView, { initialState as initialFeatureNotificationViewState, } from './view/featureNotificationView/featureNotificationViewReducer';
112
110
  import fileView from './view/fileView/fileViewReducer';
113
111
  import { initialFileViewState, } from './view/fileView/fileViewState';
112
+ import featureNotificationView, { initialState as initialFeatureNotificationViewState, } from './view/featureNotificationView/featureNotificationViewReducer';
114
113
  import financeStatement, { initialFinanceStatementState, } from './view/financeStatement/financeStatementReducer';
115
114
  import forecastList, { initialState as initialForecastListState, } from './view/forecastList/forecastListReducer';
116
115
  import globalMerchantAutoComplete, { initialState as initialGlobalMerchantAutoCompleteState, } from './view/globalMerchantView/globalMerchantAutoCompleteView/globalMerchantAutoCompleteViewReducer';
@@ -140,7 +139,6 @@ import reportsResync, { initialReportsResyncState, } from './view/reportsResync/
140
139
  import revenue, { initialState as initialRevenueWithForecastState, } from './view/revenue/revenueReducer';
141
140
  import revenueClassesView, { initialState as initialRevenueClassesViewState, } from './view/revenueClassesView/revenueClassesViewReducer';
142
141
  import reviewCompanyView, { initialState as initialReviewCompanyViewState, } from './view/reviewCompanyView/reviewCompanyViewReducer';
143
- import scheduleActivityLogView, { initialState as initialScheduleActivityLogViewState, } from './view/scheduleActivityLogView/scheduleActivityLogViewReducer';
144
142
  import scheduleAccruedDetailView, { initialState as initialScheduleAccruedDetailViewState, } from './view/scheduleView/scheduleAccruedDetailView/scheduleAccruedDetailReducer';
145
143
  import scheduleDetailView, { initialState as initialScheduleDetailViewState, } from './view/scheduleView/scheduleDetailView/scheduleDetailReducer';
146
144
  import scheduleListView, { initialState as initialScheduleListViewState, } from './view/scheduleView/scheduleListView/scheduleListReducer';
@@ -270,7 +268,6 @@ const initialEntitiesState = {
270
268
  recurringBillState: initialRecurringBillState,
271
269
  reimbursementConfigState: initialReimbursementConfigState,
272
270
  reimbursementState: initialReimbursementState,
273
- scheduleActivityLogState: initialScheduleActivityLogState,
274
271
  sectionAccountsViewState: initialSectionAccountsViewState,
275
272
  sectionClassesViewStateV2: initialSectionClassesViewStateV2,
276
273
  sectionProjectViewState: initialSectionProjectViewState,
@@ -409,7 +406,6 @@ const initialViewsState = {
409
406
  revenueClassesViewState: initialRevenueClassesViewState,
410
407
  revenueState: initialRevenueWithForecastState,
411
408
  reviewCompanyViewState: initialReviewCompanyViewState,
412
- scheduleActivityLogViewState: initialScheduleActivityLogViewState,
413
409
  scheduleAccruedDetailState: initialScheduleAccruedDetailViewState,
414
410
  scheduleDetailState: initialScheduleDetailViewState,
415
411
  scheduleListState: initialScheduleListViewState,
@@ -508,7 +504,6 @@ const entityReducers = {
508
504
  recurringBillState: recurringBill,
509
505
  reimbursementConfigState: reimbursementConfig,
510
506
  reimbursementState: reimbursement,
511
- scheduleActivityLogState: scheduleActivityLog,
512
507
  sectionAccountsViewState: sectionAccountsView,
513
508
  sectionClassesViewStateV2: sectionClassesViewV2,
514
509
  sectionProjectViewState: sectionProjectView,
@@ -647,7 +642,6 @@ const viewReducers = {
647
642
  revenueClassesViewState: revenueClassesView,
648
643
  revenueState: revenue,
649
644
  reviewCompanyViewState: reviewCompanyView,
650
- scheduleActivityLogViewState: scheduleActivityLogView,
651
645
  scheduleAccruedDetailState: scheduleAccruedDetailView,
652
646
  scheduleDetailState: scheduleDetailView,
653
647
  scheduleListState: scheduleListView,
@@ -5,7 +5,6 @@ import { getCurrentTenant } from '../../../../entity/tenant/tenantSelector';
5
5
  import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
6
6
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
7
7
  import { fetchCompletedTransactions, fetchCompletedTransactionsFailure, fetchCompletedTransactionsSuccess, getCompletedTransactionsCacheKey, } from '../../reducers/missingReceiptsViewReducer';
8
- import { DEFAULT_COMPLETED_SUB_TAB } from '../../types/completedSubTab';
9
8
  export const fetchCompletedTransactionsEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(fetchCompletedTransactions.match), switchMap((action) => {
10
9
  const state = state$.value;
11
10
  const { expenseAutomationViewState: { selectedPeriodByTenantId }, expenseAutomationMissingReceiptsViewState: { bulkUpload }, } = state;
@@ -40,7 +39,7 @@ export const fetchCompletedTransactionsEpic = (actions$, state$, zeniAPI) => act
40
39
  if (sortOrder != null) {
41
40
  queryPayload.sort_order = sortOrder === 'ascending' ? 'asc' : 'desc';
42
41
  }
43
- if (completedSubTab !== DEFAULT_COMPLETED_SUB_TAB) {
42
+ if (completedSubTab !== 'all') {
44
43
  queryPayload.match_type = completedSubTab;
45
44
  }
46
45
  const encodedQuery = encodeURIComponent(JSON.stringify(queryPayload));
@@ -4,7 +4,6 @@ import { updateTransactions } from '../../../../entity/transaction/transactionRe
4
4
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
5
5
  import { supportedTransactionPayloadToManualSearchResult } from '../../payload/missingReceiptsPayload';
6
6
  import { searchTransactionsForManualMatch, searchTransactionsForManualMatchFailure, searchTransactionsForManualMatchSuccess, } from '../../reducers/missingReceiptsViewReducer';
7
- import { DEFAULT_COMPLETED_SUB_TAB } from '../../types/completedSubTab';
8
7
  import { toTransactionsSortKey } from '../../types/transactionsViewState';
9
8
  import { rollingCalendarDateRangeInclusive } from '../../helpers/rollingCalendarDateRangeInclusive';
10
9
  /**
@@ -47,11 +46,6 @@ export const searchTransactionsForManualMatchEpic = (actions$, state$, zeniAPI)
47
46
  page_token: pageToken ?? null,
48
47
  page_size: manualSearch.pageSize,
49
48
  search_text: query,
50
- // Manual search ignores the Completed sub-tab axis — always span the
51
- // default sentinel so the receipt-matching UX returns results
52
- // regardless of where the transaction would otherwise be bucketed on
53
- // the Completed tab.
54
- sub_tab: DEFAULT_COMPLETED_SUB_TAB,
55
49
  };
56
50
  return zeniAPI
57
51
  .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
@@ -5,8 +5,7 @@ import { getCurrentTenant } from '../../../../entity/tenant/tenantSelector';
5
5
  import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
6
6
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
7
7
  import { getLineItemsByTransactionsIdsFromResponse } from '../../helpers/transactionCategorizationLocalDataHelper';
8
- import { fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationSuccess, initializeTransactionCategorizationViewLocalData, resetOtherTabsFetchState, updateParentTotalCountForTab, updateTotalCountForTransactionCategorization, updateTransactionCategorizationUIState, } from '../../reducers/transactionsViewReducer';
9
- import { DEFAULT_COMPLETED_SUB_TAB } from '../../types/completedSubTab';
8
+ import { fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationSuccess, initializeTransactionCategorizationViewLocalData, resetOtherTabsFetchState, updateTotalCountForTransactionCategorization, updateTransactionCategorizationUIState, } from '../../reducers/transactionsViewReducer';
10
9
  import { TRANSACTIONS_TABS, toTransactionsSortKey, } from '../../types/transactionsViewState';
11
10
  export const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(fetchTransactionCategorization.match), switchMap((action) => {
12
11
  const { expenseAutomationViewState: { selectedPeriodByTenantId }, expenseAutomationTransactionsViewState, } = state$.value;
@@ -24,9 +23,6 @@ export const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) =>
24
23
  page_token: pageToken,
25
24
  page_size: 25,
26
25
  search_text: uiState.searchString,
27
- sub_tab: selectedTab === 'autoCategorized'
28
- ? expenseAutomationTransactionsViewState.selectedTransactionCategorizationCompletedSubTab
29
- : DEFAULT_COMPLETED_SUB_TAB,
30
26
  };
31
27
  return zeniAPI
32
28
  .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
@@ -49,12 +45,6 @@ export const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) =>
49
45
  selectedTab,
50
46
  totalCount: response.data.total_count,
51
47
  }));
52
- updateActions.push(updateParentTotalCountForTab({
53
- selectedPeriod,
54
- selectedTab,
55
- parentTotalCount: response.data.parent_tab_total_count ??
56
- response.data.total_count,
57
- }));
58
48
  updateActions.push(resetOtherTabsFetchState({
59
49
  refreshViewInBackground,
60
50
  tabs: TRANSACTIONS_TABS.filter((tab) => selectedTab !== tab),
@@ -1,6 +1,5 @@
1
1
  import { createAction, createSlice } from '@reduxjs/toolkit';
2
2
  import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
3
- import { DEFAULT_COMPLETED_SUB_TAB, } from '../types/completedSubTab';
4
3
  import { MIN_MANUAL_TRANSACTION_SEARCH_LENGTH, } from '../types/missingReceiptsViewState';
5
4
  export const getCompletedTransactionsCacheKey = (periodId, sortKey, sortOrder, subTab) => {
6
5
  const sortKeyPart = sortKey ?? 'none';
@@ -13,7 +12,7 @@ export const initialBulkUploadState = {
13
12
  batchListByPeriod: {},
14
13
  batchListFetchState: { fetchState: 'Not-Started', error: undefined },
15
14
  batchStatusById: {},
16
- completedSubTab: DEFAULT_COMPLETED_SUB_TAB,
15
+ completedSubTab: 'all',
17
16
  completedTransactionsByPeriod: {},
18
17
  confirmMatchStatus: { fetchState: 'Not-Started', error: undefined },
19
18
  currentBatchId: undefined,
@@ -4,7 +4,6 @@ import uniq from 'lodash/uniq';
4
4
  import { toMonthYearPeriodId, } from '../../../commonStateTypes/timePeriod';
5
5
  import { isVendorTransaction } from '../../../entity/transaction/stateTypes/vendorTransaction';
6
6
  import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, filterAutoTabLineItems, mergeTabSpecificLineItems, removeTransactionFromTabView, setEntityRecommendationForLineIdInLocalData, toSetAllLineItemsToCategoryClass, toTransactionDetailLocalData, } from '../helpers/transactionCategorizationLocalDataHelper';
7
- import { DEFAULT_COMPLETED_SUB_TAB, } from '../types/completedSubTab';
8
7
  export const initialTransactionTabViewState = {
9
8
  saveStatus: {
10
9
  fetchState: 'Not-Started',
@@ -42,74 +41,12 @@ export const initialTransactionTabViewState = {
42
41
  selectedTransactionLineId: undefined,
43
42
  };
44
43
  export const initialState = {
45
- autoCategorizedSubTabCache: {},
46
- parentTotalCountByTab: {
47
- review: {},
48
- autoCategorized: {},
49
- },
50
44
  selectedTransactionCategorizationTab: 'review',
51
- selectedTransactionCategorizationCompletedSubTab: DEFAULT_COMPLETED_SUB_TAB,
52
45
  transactionCategorizationView: {
53
46
  review: { ...initialTransactionTabViewState },
54
47
  autoCategorized: { ...initialTransactionTabViewState },
55
48
  },
56
49
  };
57
- /**
58
- * Capture the autoCategorized tab's current paginated dataset for a sub-tab.
59
- * The mid-flight `'In-Progress'` state is normalised to `'Completed'` because
60
- * the in-flight request is cancelled by `switchMap` in the fetch epic when the
61
- * sub-tab changes — restoring `'In-Progress'` later would leave the UI stuck
62
- * showing a phantom loading state with no fetch actually running. Length-zero
63
- * datasets degrade to `'Not-Started'` so the next visit triggers a fresh
64
- * fetch from page 1 instead of short-circuiting on stale empty caches.
65
- *
66
- * Snapshot scope (deliberately narrow):
67
- * - Captured: `pageToken`, `totalCount`, `transactionIdsBySelectedPeriod`,
68
- * `fetchState`, `error`, `scrollPosition`. The first five are the keys the
69
- * fetch epic's cache check reads to decide whether to short-circuit a
70
- * sub-tab revisit; `scrollPosition` is captured per sub-tab so revisiting
71
- * restores the user's last offset and switching to a never-visited sub-tab
72
- * starts at the top instead of inheriting the outgoing sub-tab's offset
73
- * (which would land the user at a meaningless row index against a
74
- * completely different list).
75
- * - Intentionally NOT captured (left in place on `autoCat` and inherited by
76
- * the incoming sub-tab):
77
- * - `uiState.searchString`, `uiState.sortKey`, `uiState.sortOrder`,
78
- * `uiState.nodeCollapseState`, `uiState.limit` — search and sort are
79
- * user-applied preferences that persist across sub-tabs by design (a
80
- * search query stays active when the user toggles between Manual / AI
81
- * Accountant).
82
- * - `selectedCheckBoxTransactionIds` — selection state is intentionally
83
- * cleared at the action source (the fetch epic / save flow), not
84
- * by the snapshot path. Carrying selection across sub-tabs is safe
85
- * because every sub-tab change goes through a fetch round-trip that
86
- * reconciles selection against the new row IDs.
87
- * - `transactionReviewLocalDataById`, `transactionIdsWithUnsavedData`,
88
- * `uploadReceiptStatusById`, `saveStatus`, `refreshStatus`,
89
- * `markAsNotMiscategorizedStatus` — these are per-row / per-flight
90
- * caches that are write-through global state, not sub-tab-scoped.
91
- *
92
- * If the contract changes (e.g. selection should reset on every sub-tab
93
- * switch), update both this comment and the snapshot return shape together.
94
- */
95
- function snapshotAutoCategorizedTab(autoCat) {
96
- const transactionIdsBySelectedPeriod = {
97
- ...autoCat.transactionIdsBySelectedPeriod,
98
- };
99
- const hasAnyLoadedRows = Object.values(transactionIdsBySelectedPeriod).some((ids) => ids.length > 0);
100
- let normalisedFetchState = autoCat.fetchState;
101
- if (normalisedFetchState === 'In-Progress') {
102
- normalisedFetchState = hasAnyLoadedRows ? 'Completed' : 'Not-Started';
103
- }
104
- return {
105
- error: autoCat.error,
106
- fetchState: normalisedFetchState,
107
- pageToken: autoCat.uiState.pageToken,
108
- scrollPosition: autoCat.uiState.scrollPosition,
109
- totalCount: { ...autoCat.uiState.totalCount },
110
- transactionIdsBySelectedPeriod,
111
- };
112
- }
113
50
  const expenseAutomationTransactionsView = createSlice({
114
51
  name: 'expenseAutomationTransactionsView',
115
52
  initialState,
@@ -323,55 +260,6 @@ const expenseAutomationTransactionsView = createSlice({
323
260
  return { payload: { newSelectedTab } };
324
261
  },
325
262
  },
326
- updateTransactionCategorizationCompletedSubTab: {
327
- reducer(draft, action) {
328
- const { newSubTab } = action.payload;
329
- const previousSubTab = draft.selectedTransactionCategorizationCompletedSubTab;
330
- if (previousSubTab === newSubTab) {
331
- return;
332
- }
333
- const autoCat = draft.transactionCategorizationView.autoCategorized;
334
- // Snapshot the outgoing sub-tab so a future revisit can short-circuit
335
- // the fetch epic (mirrors the parent-tab "don't refetch what's
336
- // already cached" behaviour). Period-scoped data is preserved as-is
337
- // because the snapshot itself is keyed only by sub-tab; the active
338
- // tab's per-period maps remain the source of truth while live.
339
- draft.autoCategorizedSubTabCache[previousSubTab] =
340
- snapshotAutoCategorizedTab(autoCat);
341
- const cached = draft.autoCategorizedSubTabCache[newSubTab];
342
- if (cached != null) {
343
- autoCat.uiState.pageToken = cached.pageToken;
344
- autoCat.uiState.totalCount = { ...cached.totalCount };
345
- autoCat.uiState.scrollPosition = cached.scrollPosition;
346
- autoCat.transactionIdsBySelectedPeriod = {
347
- ...cached.transactionIdsBySelectedPeriod,
348
- };
349
- autoCat.fetchState = cached.fetchState;
350
- autoCat.error = cached.error;
351
- }
352
- else {
353
- // Sub-tab has never been visited — clear the active slot so the
354
- // view-epic's `fetchState === 'Not-Started' || transactionIds.length
355
- // === 0` cache check falls through and triggers a fresh page-1
356
- // fetch for the new dataset. `scrollPosition` is reset to the top
357
- // so the incoming list isn't anchored to the outgoing sub-tab's
358
- // offset (different rows → previous offset is meaningless).
359
- autoCat.uiState.pageToken = null;
360
- autoCat.uiState.totalCount = {};
361
- autoCat.uiState.scrollPosition = {
362
- scrollTop: 0,
363
- scrollLeft: undefined,
364
- };
365
- autoCat.transactionIdsBySelectedPeriod = {};
366
- autoCat.fetchState = 'Not-Started';
367
- autoCat.error = undefined;
368
- }
369
- draft.selectedTransactionCategorizationCompletedSubTab = newSubTab;
370
- },
371
- prepare(newSubTab) {
372
- return { payload: { newSubTab } };
373
- },
374
- },
375
263
  updateTransactionCategorization: {
376
264
  reducer(draft, action) {
377
265
  const selectedTab = action.payload.selectedTab;
@@ -809,10 +697,6 @@ const expenseAutomationTransactionsView = createSlice({
809
697
  const { selectedTab, selectedPeriod, totalCount } = action.payload;
810
698
  draft.transactionCategorizationView[selectedTab].uiState.totalCount[toMonthYearPeriodId(selectedPeriod)] = totalCount;
811
699
  },
812
- updateParentTotalCountForTab(draft, action) {
813
- const { selectedTab, selectedPeriod, parentTotalCount } = action.payload;
814
- draft.parentTotalCountByTab[selectedTab][toMonthYearPeriodId(selectedPeriod)] = parentTotalCount;
815
- },
816
700
  updateSelectedCheckboxTransactionIds(draft, action) {
817
701
  const selectedTab = action.payload.selectedTab;
818
702
  const transactionIds = action.payload.transactionIds;
@@ -823,16 +707,6 @@ const expenseAutomationTransactionsView = createSlice({
823
707
  draft.transactionCategorizationView[selectedTab] = {
824
708
  ...initialTransactionTabViewState,
825
709
  };
826
- draft.parentTotalCountByTab[selectedTab] = {};
827
- // The per-sub-tab snapshot cache lives at the slice root and is
828
- // exclusively populated by the autoCategorized tab's sub-tab switching
829
- // (see updateTransactionCategorizationCompletedSubTab). When that tab
830
- // is reset, leaving stale snapshots behind would short-circuit the
831
- // next sub-tab visit with phantom row IDs / page tokens that no longer
832
- // correspond to anything in state — drop them in lockstep.
833
- if (selectedTab === 'autoCategorized') {
834
- draft.autoCategorizedSubTabCache = {};
835
- }
836
710
  },
837
711
  clearExpenseAutomationTransactionsView(draft) {
838
712
  Object.assign(draft, initialState);
@@ -929,5 +803,5 @@ const expenseAutomationTransactionsView = createSlice({
929
803
  },
930
804
  },
931
805
  });
932
- export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, updateParentTotalCountForTab, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } = expenseAutomationTransactionsView.actions;
806
+ export const { fetchTransactionCategorization, updateTransactionCategorizationUIState, initializeTransactionCategorizationViewLocalData, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateStatusForTransactionNotMiscategorizedUpdateForCategorization, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, setAllItemsToCategoryClassInLocalDataForCategorization, updateTotalCountForTransactionCategorization, fetchTransactionCategorizationSuccess, resetOtherTabsFetchState, fetchTransactionCategorizationView, updateSelectedCheckboxTransactionIds, clearExpenseAutomationTransactionsViewPerTabView, clearExpenseAutomationTransactionsView, setEntityRecommendationForLineIdsForCategorization, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, } = expenseAutomationTransactionsView.actions;
933
807
  export default expenseAutomationTransactionsView.reducer;
@@ -10,7 +10,7 @@ import { getProjectList } from '../../projectList/projectListSelector';
10
10
  import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
11
11
  export function getExpenseAutomationTransactionView(state) {
12
12
  const { accountState, classState, classListState, accountListState, expenseAutomationTransactionsViewState, expenseAutomationViewState, projectState, projectListState, transactionState, monthEndCloseChecksState, monthEndCloseChecksViewState, } = state;
13
- const { selectedTransactionCategorizationCompletedSubTab, selectedTransactionCategorizationTab, } = expenseAutomationTransactionsViewState;
13
+ const { selectedTransactionCategorizationTab } = expenseAutomationTransactionsViewState;
14
14
  const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, uploadReceiptStatusById, selectedTransactionId, selectedTransactionLineId, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
15
15
  const uncategorizedIncomeExpense = getUncategorizedAccounts(accountState, accountListState, 'accountList');
16
16
  const accountList = getAccountList(accountState, accountListState, 'accountList');
@@ -63,27 +63,10 @@ export function getExpenseAutomationTransactionView(state) {
63
63
  .uiState.totalCount;
64
64
  const totalCountByAutoCat = expenseAutomationTransactionsViewState.transactionCategorizationView
65
65
  .autoCategorized.uiState.totalCount;
66
- // Per-(sub-)tab counts powering pagination, in-list "showing X of Y", and
67
- // any save/refresh round-trips. Sourced from `uiState.totalCount` which
68
- // mirrors the response's `total_count` for whatever tab/sub-tab the user is
69
- // viewing (e.g. only the Manual sub-tab rows for Completed → Manual).
70
66
  const totalCountByTab = {
71
67
  review: monthYearPeriodId != null ? totalCountByReview[monthYearPeriodId] : 0,
72
68
  autoCategorized: monthYearPeriodId != null ? totalCountByAutoCat[monthYearPeriodId] : 0,
73
69
  };
74
- // Parent-tab badge counts. Sourced from `parent_tab_total_count` in the
75
- // listing response and used exclusively by the navbar / tab strip badges.
76
- // Independent of which Completed sub-tab is active so the badge stays
77
- // stable across sub-tab switches.
78
- const parentTotalCountByTab = expenseAutomationTransactionsViewState.parentTotalCountByTab;
79
- const parentTabTotalCountByTab = {
80
- review: monthYearPeriodId != null
81
- ? (parentTotalCountByTab.review[monthYearPeriodId] ?? 0)
82
- : 0,
83
- autoCategorized: monthYearPeriodId != null
84
- ? (parentTotalCountByTab.autoCategorized[monthYearPeriodId] ?? 0)
85
- : 0,
86
- };
87
70
  const fetchStateByTab = {
88
71
  review: {
89
72
  fetchState: expenseAutomationTransactionsViewState.transactionCategorizationView
@@ -125,11 +108,9 @@ export function getExpenseAutomationTransactionView(state) {
125
108
  markAsNotMiscategorizedStatus,
126
109
  completionStatus,
127
110
  totalCountByTab,
128
- parentTabTotalCountByTab,
129
111
  fetchStateByTransactionTabs: fetchStateByTab,
130
112
  uploadReceiptStatusById,
131
113
  selectedTransactionId,
132
114
  selectedTransactionLineId,
133
- selectedTransactionCategorizationCompletedSubTab,
134
115
  };
135
116
  }
@@ -39,6 +39,8 @@ const BULK_UPLOAD_RESULTS_TABS = ['completed', 'unmatched'];
39
39
  export const toBulkUploadResultsTab = (v) => stringToUnion(v.trim().toLowerCase(), BULK_UPLOAD_RESULTS_TABS);
40
40
  const MISSING_RECEIPTS_TABS = ['missing', 'completed', 'unmatched'];
41
41
  export const toMissingReceiptsTab = (v) => stringToUnion(v.trim().toLowerCase(), MISSING_RECEIPTS_TABS);
42
+ const COMPLETED_SUB_TABS = ['all', 'ai_accountant', 'manual'];
43
+ export const toCompletedSubTab = (v) => stringToUnion(v.trim().toLowerCase(), COMPLETED_SUB_TABS);
42
44
  const MATCH_SOURCES = ['ai', 'manual'];
43
45
  export const toMatchSource = (v) => stringToUnion(v.trim().toLowerCase(), MATCH_SOURCES);
44
46
  const BULK_UPLOAD_SORT_KEYS = [
@@ -2,7 +2,6 @@ import { concat, from } from 'rxjs';
2
2
  import { filter, mergeMap } from 'rxjs/operators';
3
3
  import { fetchAccountList } from '../../../accountList/accountListReducer';
4
4
  import { fetchClassList } from '../../../classList/classListReducer';
5
- import { fetchScheduleActivityLog } from '../../../scheduleActivityLogView/scheduleActivityLogViewReducer';
6
5
  import { getAccountsTypesForScheduleEpics } from '../../scheduleListView/scheduleListHelper';
7
6
  import { fetchScheduleDetails, fetchScheduleDetailsPage, } from '../scheduleDetailReducer';
8
7
  export const fetchScheduleDetailsPageEpic = (actions$, state$) => actions$.pipe(filter(fetchScheduleDetailsPage.match), mergeMap((action) => {
@@ -20,9 +19,6 @@ export const fetchScheduleDetailsPageEpic = (actions$, state$) => actions$.pipe(
20
19
  }
21
20
  if (action.payload.selectedJeScheduleDetailId != null) {
22
21
  scheduleDetailsActions.push(fetchScheduleDetails(action.payload.scheduleType, action.payload.selectedJeScheduleDetailId, action.payload.cacheOverride));
23
- // Prefetch the schedule activity log alongside the detail page so the
24
- // side panel renders instantly when the user taps the navbar icon.
25
- scheduleDetailsActions.push(fetchScheduleActivityLog(action.payload.selectedJeScheduleDetailId));
26
22
  }
27
23
  return concat(from(scheduleDetailsActions));
28
24
  }));