@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.
- package/lib/entity/chargeCard/chargeCardReducer.d.ts +2 -19
- package/lib/entity/chargeCard/chargeCardReducer.js +2 -35
- package/lib/entity/chargeCardRepayment/chargeCardRepayment.d.ts +1 -1
- package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.d.ts +1 -14
- package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.js +2 -36
- package/lib/entity/creditAgent/creditAgentState.d.ts +1 -1
- package/lib/epic.d.ts +10 -11
- package/lib/epic.js +11 -12
- package/lib/esm/entity/chargeCard/chargeCardReducer.js +1 -34
- package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionReducer.js +1 -35
- package/lib/esm/epic.js +11 -12
- package/lib/esm/index.js +13 -19
- package/lib/esm/reducer.js +2 -8
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +1 -2
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +0 -6
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +1 -11
- package/lib/esm/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +1 -2
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +1 -127
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -20
- package/lib/esm/view/expenseAutomationView/types/missingReceiptsViewState.js +2 -0
- package/lib/esm/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +0 -4
- package/lib/esm/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +2 -3
- package/lib/esm/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +2 -3
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +18 -55
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +2 -16
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +4 -5
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +9 -28
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +6 -9
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +2 -3
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
- package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +3 -7
- package/lib/index.d.ts +15 -22
- package/lib/index.js +58 -77
- package/lib/reducer.d.ts +2 -8
- package/lib/reducer.js +2 -8
- package/lib/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +1 -2
- package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +0 -6
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +0 -10
- package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +0 -21
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +1 -2
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +1 -2
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -8
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +2 -128
- package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +1 -2
- package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +0 -14
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -20
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +2 -1
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.js +4 -1
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +1 -40
- package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.d.ts +1 -2
- package/lib/view/scheduleView/scheduleDetailView/epics/fetchScheduleDetailsPageEpic.js +0 -4
- package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.d.ts +1 -3
- package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +2 -3
- package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.d.ts +1 -3
- package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +2 -3
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +18 -55
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +2 -16
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +4 -5
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.d.ts +3 -18
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +10 -29
- package/lib/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +6 -9
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.d.ts +1 -3
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +2 -3
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.d.ts +1 -3
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +3 -7
- package/package.json +1 -1
- package/lib/commonStateTypes/cacheOverrideFetchReducer.d.ts +0 -17
- package/lib/commonStateTypes/cacheOverrideFetchReducer.js +0 -20
- package/lib/commonStateTypes/pusherActions.d.ts +0 -11
- package/lib/commonStateTypes/pusherActions.js +0 -6
- package/lib/entity/scheduleActivityLog/scheduleActivityLogPayload.d.ts +0 -36
- package/lib/entity/scheduleActivityLog/scheduleActivityLogPayload.js +0 -55
- package/lib/entity/scheduleActivityLog/scheduleActivityLogReducer.d.ts +0 -6
- package/lib/entity/scheduleActivityLog/scheduleActivityLogReducer.js +0 -27
- package/lib/entity/scheduleActivityLog/scheduleActivityLogSelector.d.ts +0 -4
- package/lib/entity/scheduleActivityLog/scheduleActivityLogSelector.js +0 -17
- package/lib/entity/scheduleActivityLog/scheduleActivityLogState.d.ts +0 -51
- package/lib/entity/scheduleActivityLog/scheduleActivityLogState.js +0 -23
- package/lib/esm/commonStateTypes/cacheOverrideFetchReducer.js +0 -16
- package/lib/esm/commonStateTypes/pusherActions.js +0 -3
- package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogPayload.js +0 -49
- package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogReducer.js +0 -23
- package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogSelector.js +0 -10
- package/lib/esm/entity/scheduleActivityLog/scheduleActivityLogState.js +0 -19
- package/lib/esm/view/expenseAutomationView/types/completedSubTab.js +0 -17
- package/lib/esm/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.js +0 -43
- package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewPayload.js +0 -1
- package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewReducer.js +0 -47
- package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewSelector.js +0 -33
- package/lib/esm/view/scheduleActivityLogView/scheduleActivityLogViewState.js +0 -1
- package/lib/tsconfig.typecheck.tsbuildinfo +0 -1
- package/lib/view/expenseAutomationView/types/completedSubTab.d.ts +0 -10
- package/lib/view/expenseAutomationView/types/completedSubTab.js +0 -21
- package/lib/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.d.ts +0 -9
- package/lib/view/scheduleActivityLogView/fetchScheduleActivityLogEpic.js +0 -47
- package/lib/view/scheduleActivityLogView/scheduleActivityLogViewPayload.d.ts +0 -8
- package/lib/view/scheduleActivityLogView/scheduleActivityLogViewPayload.js +0 -2
- package/lib/view/scheduleActivityLogView/scheduleActivityLogViewReducer.d.ts +0 -17
- package/lib/view/scheduleActivityLogView/scheduleActivityLogViewReducer.js +0 -51
- package/lib/view/scheduleActivityLogView/scheduleActivityLogViewSelector.d.ts +0 -8
- package/lib/view/scheduleActivityLogView/scheduleActivityLogViewSelector.js +0 -36
- package/lib/view/scheduleActivityLogView/scheduleActivityLogViewState.d.ts +0 -5
- 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,
|
|
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,
|
|
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,
|
|
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 {
|
|
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,
|
|
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,
|
|
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';
|
package/lib/esm/reducer.js
CHANGED
|
@@ -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,
|
package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js
CHANGED
|
@@ -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 !==
|
|
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,
|
|
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:
|
|
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,
|
|
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 {
|
|
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
|
}));
|