@zeniai/client-epic-state 4.19.37-betaVR15 → 4.19.37-betaVR17
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/esm/index.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchMoreBatchDetailsEpic.js +2 -1
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchMultipleBatchDetailsEpic.js +3 -2
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js +32 -28
- package/lib/esm/view/expenseAutomationView/payload/missingReceiptsPayload.js +4 -0
- package/lib/esm/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +9 -1
- package/lib/esm/view/expenseAutomationView/selectors/missingReceiptsSelector.js +58 -7
- package/lib/index.d.ts +2 -2
- package/lib/index.js +33 -31
- package/lib/view/expenseAutomationView/epics/missingReceipts/fetchMoreBatchDetailsEpic.js +2 -1
- package/lib/view/expenseAutomationView/epics/missingReceipts/fetchMultipleBatchDetailsEpic.js +2 -1
- package/lib/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.d.ts +6 -2
- package/lib/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js +30 -26
- package/lib/view/expenseAutomationView/payload/missingReceiptsPayload.d.ts +2 -0
- package/lib/view/expenseAutomationView/payload/missingReceiptsPayload.js +5 -0
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +3 -1
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +10 -2
- package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +2 -0
- package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.js +58 -7
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +5 -0
- package/package.json +1 -1
package/lib/esm/index.js
CHANGED
|
@@ -161,7 +161,7 @@ import { isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType
|
|
|
161
161
|
import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, } from './view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper';
|
|
162
162
|
import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview, } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
|
|
163
163
|
import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryJeSchedule as retryExpenseAutomationJESchedule, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
|
|
164
|
-
import { bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess, } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
164
|
+
import { bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess, } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
165
165
|
import { deleteAccountStatement, fetchReconciliation as fetchReconciliationView, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateStatementUploadChosen, uploadAccountStatement, } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
|
|
166
166
|
import { clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
167
167
|
import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
|
|
@@ -409,7 +409,7 @@ export { stringToUnion, stringToUnionStrict };
|
|
|
409
409
|
export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, getMonthEndCloseChecksViewByTenantId, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, };
|
|
410
410
|
export { getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts,
|
|
411
411
|
// Bulk Upload Actions
|
|
412
|
-
bulkUploadReceipts, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, updateBulkUploadProgress, pusherBatchStatusUpdate, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, getExpenseAutomationFluxAnalysisView, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, updateFluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, getExpenseAutomationReconciliationView, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, getAccountReconByAccountIdAndSelectedPeriod, toReconciliationTabsType, isAccountReconReport, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, toReconciliationAccountSource, deleteAccountStatement, uploadAccountStatement, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
|
|
412
|
+
bulkUploadReceipts, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, getExpenseAutomationFluxAnalysisView, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, updateFluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, getExpenseAutomationReconciliationView, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, getAccountReconByAccountIdAndSelectedPeriod, toReconciliationTabsType, isAccountReconReport, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, toReconciliationAccountSource, deleteAccountStatement, uploadAccountStatement, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
|
|
413
413
|
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, clearExpenseAutomationTransactionsView, toTransactionsSortKey, };
|
|
414
414
|
export { TOP_EX_TIME_PERIODS };
|
|
415
415
|
export { toTimeframeTick, mapTimePeriodtoTimeframeTick, toTimePeriod, toAbsoluteDay, toMonthYearPeriodId, convertToPeriod, };
|
package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchMoreBatchDetailsEpic.js
CHANGED
|
@@ -3,6 +3,7 @@ import { catchError, filter, mergeMap } from 'rxjs/operators';
|
|
|
3
3
|
import { toMonthYearPeriodId } from '../../../../commonStateTypes/timePeriod';
|
|
4
4
|
import { getCurrentTenant } from '../../../../entity/tenant/tenantSelector';
|
|
5
5
|
import { createZeniAPIStatus } from '../../../../responsePayload';
|
|
6
|
+
import { isBatchListStatusCompleted } from '../../payload/missingReceiptsPayload';
|
|
6
7
|
import { fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, } from '../../reducers/missingReceiptsViewReducer';
|
|
7
8
|
import { fetchBatchDetailsByIds } from './fetchMultipleBatchDetailsEpic';
|
|
8
9
|
const MORE_BATCH_PAGE_SIZE = 4;
|
|
@@ -18,7 +19,7 @@ export const fetchMoreBatchDetailsEpic = (actions$, state$, zeniAPI) => actions$
|
|
|
18
19
|
const batchList = bulkUpload.batchListByPeriod[periodId] ?? [];
|
|
19
20
|
const failedIds = new Set(bulkUpload.failedBatchDetailIds);
|
|
20
21
|
const unfetchedBatchIds = batchList
|
|
21
|
-
.filter((batch) => batch.status
|
|
22
|
+
.filter((batch) => isBatchListStatusCompleted(batch.status) &&
|
|
22
23
|
bulkUpload.batchDetailsById[batch.batchId] == null &&
|
|
23
24
|
!failedIds.has(batch.batchId))
|
|
24
25
|
.map((batch) => batch.batchId);
|
package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchMultipleBatchDetailsEpic.js
CHANGED
|
@@ -2,13 +2,14 @@ import { EMPTY, concat, from, of } from 'rxjs';
|
|
|
2
2
|
import { catchError, filter, mergeMap } from 'rxjs/operators';
|
|
3
3
|
import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
|
|
4
4
|
import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
|
|
5
|
-
import { extractTransactionPayloadsFromBatchFiles, toBatchDetails, } from '../../payload/missingReceiptsPayload';
|
|
5
|
+
import { extractTransactionPayloadsFromBatchFiles, isBatchListStatusCompleted, toBatchDetails, } from '../../payload/missingReceiptsPayload';
|
|
6
6
|
import { batchDetailFetchFailed, fetchBulkUploadBatchesSuccess, fetchMoreBatchDetailsComplete, setInitialBatchDetailsLoading, storeBatchDetails, } from '../../reducers/missingReceiptsViewReducer';
|
|
7
7
|
const INITIAL_BATCH_PAGE_SIZE = 4;
|
|
8
8
|
export function fetchBatchDetailsByIds(batchIds, zeniAPI) {
|
|
9
9
|
if (batchIds.length === 0) {
|
|
10
10
|
return EMPTY;
|
|
11
11
|
}
|
|
12
|
+
console.log('fetchBatchDetailsByIds', batchIds);
|
|
12
13
|
return from(batchIds).pipe(mergeMap((batchId) => zeniAPI
|
|
13
14
|
.getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/batches/${batchId}`)
|
|
14
15
|
.pipe(mergeMap((response) => {
|
|
@@ -32,7 +33,7 @@ export const fetchMultipleBatchDetailsEpic = (actions$, state$, zeniAPI) => acti
|
|
|
32
33
|
const batchList = action.payload.batchList;
|
|
33
34
|
const { batchDetailsById } = state$.value.expenseAutomationMissingReceiptsViewState.bulkUpload;
|
|
34
35
|
const completedBatchIds = batchList
|
|
35
|
-
.filter((batch) => batch.status
|
|
36
|
+
.filter((batch) => isBatchListStatusCompleted(batch.status) &&
|
|
36
37
|
batchDetailsById[batch.batchId] == null)
|
|
37
38
|
.map((batch) => batch.batchId);
|
|
38
39
|
const batchIdsToFetch = completedBatchIds.slice(0, INITIAL_BATCH_PAGE_SIZE);
|
package/lib/esm/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js
CHANGED
|
@@ -1,37 +1,41 @@
|
|
|
1
|
-
import { from, of, timer } from 'rxjs';
|
|
2
|
-
import { catchError, filter, mergeMap, switchMap, takeUntil,
|
|
1
|
+
import { EMPTY, from, merge, of, timer } from 'rxjs';
|
|
2
|
+
import { catchError, debounceTime, filter, mergeMap, switchMap, takeUntil, } from 'rxjs/operators';
|
|
3
3
|
import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
|
|
4
4
|
import { isSuccessResponse } from '../../../../responsePayload';
|
|
5
5
|
import { extractTransactionPayloadsFromBatchFiles, toBatchDetails, } from '../../payload/missingReceiptsPayload';
|
|
6
|
-
import { bulkUploadReceiptsSuccess, clearBulkUpload,
|
|
7
|
-
|
|
6
|
+
import { bulkUploadReceiptsSuccess, clearBulkUpload, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatches, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, } from '../../reducers/missingReceiptsViewReducer';
|
|
7
|
+
/** First poll after upload; then interval while batch not resolved via Pusher or API. */
|
|
8
|
+
const FALLBACK_FIRST_DELAY_MS = 30000;
|
|
8
9
|
const FALLBACK_POLL_INTERVAL_MS = 10000;
|
|
9
|
-
|
|
10
|
+
function isBatchDetailsCompletedStatus(status) {
|
|
11
|
+
return status.toLowerCase() === 'completed';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* On Pusher batch completion: refresh batch list (then fetchMultipleBatchDetailsEpic runs),
|
|
15
|
+
* and request switching to the Unmatched tab. Debounced to reduce duplicate refreshes.
|
|
16
|
+
*/
|
|
17
|
+
export const pusherBatchStatusCompletionEpic = (actions$) => actions$.pipe(filter(pusherBatchStatusUpdate.match), filter((action) => action.payload.status === 'completed'), debounceTime(300), mergeMap(() => from([
|
|
18
|
+
fetchBulkUploadBatches(true),
|
|
19
|
+
requestMissingReceiptsTabNavigation({ tab: 'unmatched' }),
|
|
20
|
+
])));
|
|
21
|
+
export const pollBulkUploadBatchStatusEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(bulkUploadReceiptsSuccess.match), mergeMap((action) => {
|
|
10
22
|
const { batchId } = action.payload;
|
|
11
|
-
return timer(
|
|
12
|
-
(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
const transactionPayloads = extractTransactionPayloadsFromBatchFiles(response.data.files);
|
|
21
|
-
if (transactionPayloads.length > 0) {
|
|
22
|
-
actions.push(updateTransactions(transactionPayloads, (value) => value.transaction_id));
|
|
23
|
-
}
|
|
24
|
-
actions.push(fetchBulkUploadBatchDetailsSuccess(toBatchDetails(response.data, zeniAPI.apiEndPoints.fileMicroServiceBaseUrl)));
|
|
25
|
-
actions.push(fetchBulkUploadBatches(true));
|
|
26
|
-
return from(actions);
|
|
23
|
+
return timer(FALLBACK_FIRST_DELAY_MS, FALLBACK_POLL_INTERVAL_MS).pipe(takeUntil(merge(actions$.pipe(filter(clearBulkUpload.match)), actions$.pipe(filter(pusherBatchStatusUpdate.match), filter((a) => a.payload.batchId === batchId)), actions$.pipe(filter(fetchBulkUploadBatchDetailsSuccess.match), filter((a) => a.payload.batchId === batchId)))), switchMap(() => zeniAPI
|
|
24
|
+
.getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/batches/${batchId}`)
|
|
25
|
+
.pipe(mergeMap((response) => {
|
|
26
|
+
if (isSuccessResponse(response) && response.data != null) {
|
|
27
|
+
if (isBatchDetailsCompletedStatus(response.data.status)) {
|
|
28
|
+
const actions = [];
|
|
29
|
+
const transactionPayloads = extractTransactionPayloadsFromBatchFiles(response.data.files);
|
|
30
|
+
if (transactionPayloads.length > 0) {
|
|
31
|
+
actions.push(updateTransactions(transactionPayloads, (value) => value.transaction_id));
|
|
27
32
|
}
|
|
33
|
+
actions.push(fetchBulkUploadBatchDetailsSuccess(toBatchDetails(response.data, zeniAPI.apiEndPoints.fileMicroServiceBaseUrl)));
|
|
34
|
+
actions.push(fetchBulkUploadBatches(true));
|
|
35
|
+
actions.push(requestMissingReceiptsTabNavigation({ tab: 'unmatched' }));
|
|
36
|
+
return from(actions);
|
|
28
37
|
}
|
|
29
|
-
return [];
|
|
30
|
-
}), catchError(() => of()));
|
|
31
|
-
}), takeWhile((emittedAction) => {
|
|
32
|
-
if (fetchBulkUploadBatchDetailsSuccess.match(emittedAction)) {
|
|
33
|
-
return false;
|
|
34
38
|
}
|
|
35
|
-
return
|
|
36
|
-
},
|
|
39
|
+
return EMPTY;
|
|
40
|
+
}), catchError(() => of()))));
|
|
37
41
|
}));
|
|
@@ -70,6 +70,10 @@ export function toBatchDetails(payload, filesEndPoint) {
|
|
|
70
70
|
summary: toBatchSummary(payload.summary),
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
+
/** Batch list `status` is a string from the API — compare case-insensitively. */
|
|
74
|
+
export function isBatchListStatusCompleted(status) {
|
|
75
|
+
return status.toLowerCase() === 'completed';
|
|
76
|
+
}
|
|
73
77
|
export function toBatchListItem(payload) {
|
|
74
78
|
return {
|
|
75
79
|
batchId: payload.batch_id,
|
|
@@ -26,6 +26,7 @@ export const initialBulkUploadState = {
|
|
|
26
26
|
};
|
|
27
27
|
export const initialState = {
|
|
28
28
|
bulkUpload: initialBulkUploadState,
|
|
29
|
+
pendingMissingReceiptsTabNavigation: null,
|
|
29
30
|
uploadReceiptStatusById: {},
|
|
30
31
|
refreshStatus: {
|
|
31
32
|
fetchState: 'Not-Started',
|
|
@@ -182,6 +183,12 @@ const expenseAutomationMissingReceiptsView = createSlice({
|
|
|
182
183
|
const batchStatus = action.payload;
|
|
183
184
|
draft.bulkUpload.batchStatusById[batchStatus.batchId] = batchStatus;
|
|
184
185
|
},
|
|
186
|
+
requestMissingReceiptsTabNavigation(draft, action) {
|
|
187
|
+
draft.pendingMissingReceiptsTabNavigation = action.payload.tab;
|
|
188
|
+
},
|
|
189
|
+
clearMissingReceiptsTabNavigation(draft) {
|
|
190
|
+
draft.pendingMissingReceiptsTabNavigation = null;
|
|
191
|
+
},
|
|
185
192
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
186
193
|
fetchBulkUploadBatchDetails(_draft) {
|
|
187
194
|
// trigger epic, no state change needed
|
|
@@ -309,6 +316,7 @@ const expenseAutomationMissingReceiptsView = createSlice({
|
|
|
309
316
|
},
|
|
310
317
|
clearBulkUpload(draft) {
|
|
311
318
|
Object.assign(draft.bulkUpload, initialBulkUploadState);
|
|
319
|
+
draft.pendingMissingReceiptsTabNavigation = null;
|
|
312
320
|
},
|
|
313
321
|
searchTransactionsForManualMatch: {
|
|
314
322
|
reducer(draft, action) {
|
|
@@ -413,7 +421,7 @@ const expenseAutomationMissingReceiptsView = createSlice({
|
|
|
413
421
|
});
|
|
414
422
|
export const { fetchMissingReceipts, fetchMissingReceiptsSuccess, fetchMissingReceiptsFailure, uploadMissingReceiptSuccess, updateMissingReceiptUploadState, updateMissingReceiptsUIState, markMissingReceiptAsDone, clearExpenseAutomationMissingReceiptsView,
|
|
415
423
|
// Bulk Upload
|
|
416
|
-
bulkUploadReceipts, updateBulkUploadProgress, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, pusherBatchStatusUpdate, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, batchDetailFetchFailed, setInitialBatchDetailsLoading, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults,
|
|
424
|
+
bulkUploadReceipts, updateBulkUploadProgress, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, batchDetailFetchFailed, setInitialBatchDetailsLoading, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults,
|
|
417
425
|
// Completed Transactions
|
|
418
426
|
fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, } = expenseAutomationMissingReceiptsView.actions;
|
|
419
427
|
export default expenseAutomationMissingReceiptsView.reducer;
|
|
@@ -3,6 +3,7 @@ import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
|
3
3
|
import { getCurrentTenant } from '../../../entity/tenant/tenantSelector';
|
|
4
4
|
import { getSupportedTransactionById, getSupportedTransactionsByIds, } from '../../../entity/transaction/transactionSelector';
|
|
5
5
|
import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
|
|
6
|
+
import { isBatchListStatusCompleted } from '../payload/missingReceiptsPayload';
|
|
6
7
|
import { getCompletedTransactionsCacheKey } from '../reducers/missingReceiptsViewReducer';
|
|
7
8
|
export function getExpenseAutomationMissingReceiptsView(state) {
|
|
8
9
|
const { expenseAutomationMissingReceiptsViewState, expenseAutomationViewState, transactionState, monthEndCloseChecksState, } = state;
|
|
@@ -48,20 +49,27 @@ export function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
48
49
|
const completionStatus = missingReceiptsCompletionStatus != null
|
|
49
50
|
? missingReceiptsCompletionStatus
|
|
50
51
|
: 'incomplete';
|
|
51
|
-
const { bulkUpload } = expenseAutomationMissingReceiptsViewState;
|
|
52
|
+
const { bulkUpload, pendingMissingReceiptsTabNavigation, } = expenseAutomationMissingReceiptsViewState;
|
|
52
53
|
const currentBatchStatus = bulkUpload.currentBatchId != null
|
|
53
54
|
? bulkUpload.batchStatusById[bulkUpload.currentBatchId]
|
|
54
55
|
: undefined;
|
|
55
56
|
const batchList = monthYearPeriodId != null
|
|
56
57
|
? bulkUpload.batchListByPeriod[monthYearPeriodId] ?? []
|
|
57
58
|
: [];
|
|
58
|
-
/**
|
|
59
|
-
const
|
|
60
|
-
|
|
59
|
+
/** API returns newest-first (`sort_order: desc`); primary batch uses oldest-first order. */
|
|
60
|
+
const batchListChronological = orderBy(batchList, (b) => new Date(b.createdAt).valueOf(), 'asc');
|
|
61
|
+
/**
|
|
62
|
+
* Primary "Unmatched" batch = first completed batch in chronological order, preferring the
|
|
63
|
+
* first batch that still has un_matched/no_match work when any completed batch has such work
|
|
64
|
+
* (so a newer fully-matched batch does not hide older unmatched receipts). If an earlier batch
|
|
65
|
+
* in that order has no details yet (still loading), we return undefined until it resolves.
|
|
66
|
+
*/
|
|
67
|
+
const primaryBatchIdFromDetailsOrder = getPrimaryBatchIdFromBatchListOrder(batchListChronological, bulkUpload.batchDetailsById, bulkUpload.failedBatchDetailIds);
|
|
61
68
|
/** During upload/matching, the in-flight batch may not appear in batchList yet — prefer currentBatchId. */
|
|
62
69
|
const unmatchedSectionBatchId = bulkUpload.phase === 'matching' || bulkUpload.phase === 'uploading'
|
|
63
|
-
? bulkUpload.currentBatchId ??
|
|
64
|
-
:
|
|
70
|
+
? bulkUpload.currentBatchId ?? primaryBatchIdFromDetailsOrder
|
|
71
|
+
: primaryBatchIdFromDetailsOrder;
|
|
72
|
+
const completedBatchesInApiOrder = batchList.filter((b) => isBatchListStatusCompleted(b.status));
|
|
65
73
|
const currentBatchDetails = unmatchedSectionBatchId != null
|
|
66
74
|
? bulkUpload.batchDetailsById[unmatchedSectionBatchId]
|
|
67
75
|
: undefined;
|
|
@@ -107,7 +115,9 @@ export function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
107
115
|
}
|
|
108
116
|
: { total: 0, processed: 0, percentage: 0 };
|
|
109
117
|
const batchListFetchState = bulkUpload.batchListFetchState;
|
|
110
|
-
const pastBatches =
|
|
118
|
+
const pastBatches = unmatchedSectionBatchId != null
|
|
119
|
+
? batchList.filter((b) => b.batchId !== unmatchedSectionBatchId)
|
|
120
|
+
: [];
|
|
111
121
|
const pastUnmatchedFiles = pastBatches.flatMap((b) => {
|
|
112
122
|
const details = bulkUpload.batchDetailsById[b.batchId];
|
|
113
123
|
if (details == null) {
|
|
@@ -142,6 +152,7 @@ export function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
142
152
|
refreshStatus,
|
|
143
153
|
transactions: sortedTransactions,
|
|
144
154
|
completionStatus,
|
|
155
|
+
pendingMissingReceiptsTabNavigation: pendingMissingReceiptsTabNavigation ?? null,
|
|
145
156
|
bulkUpload: {
|
|
146
157
|
phase: bulkUpload.phase,
|
|
147
158
|
uploadStatus: bulkUpload.uploadStatus,
|
|
@@ -175,6 +186,46 @@ export function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
175
186
|
},
|
|
176
187
|
};
|
|
177
188
|
}
|
|
189
|
+
function batchDetailsHasUnmatchedWork(details) {
|
|
190
|
+
return details.files.some((f) => f.status === 'un_matched' || f.status === 'no_match');
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* `batchList` must be in chronological order (oldest first). Picks the primary batch for the
|
|
194
|
+
* top "Unmatched" section. Skips failed detail fetches. Stops at the first batch with no details
|
|
195
|
+
* yet (still loading) so we do not choose a later batch until earlier chronological rows resolve.
|
|
196
|
+
*/
|
|
197
|
+
function getPrimaryBatchIdFromBatchListOrder(batchListChronological, batchDetailsById, failedBatchDetailIds) {
|
|
198
|
+
const failedIds = new Set(failedBatchDetailIds);
|
|
199
|
+
const anyCompletedBatchHasUnmatchedWork = batchListChronological.some((b) => {
|
|
200
|
+
if (failedIds.has(b.batchId)) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
const d = batchDetailsById[b.batchId];
|
|
204
|
+
return (d != null &&
|
|
205
|
+
d.status === 'completed' &&
|
|
206
|
+
batchDetailsHasUnmatchedWork(d));
|
|
207
|
+
});
|
|
208
|
+
for (const batch of batchListChronological) {
|
|
209
|
+
if (failedIds.has(batch.batchId)) {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const details = batchDetailsById[batch.batchId];
|
|
213
|
+
if (details == null) {
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
if (details.status !== 'completed') {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
if (anyCompletedBatchHasUnmatchedWork) {
|
|
220
|
+
if (batchDetailsHasUnmatchedWork(details)) {
|
|
221
|
+
return batch.batchId;
|
|
222
|
+
}
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
return batch.batchId;
|
|
226
|
+
}
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
178
229
|
function resolveBatchFile(file, batchId, transactionState) {
|
|
179
230
|
const matchedTransaction = file.matchedTransactionId != null
|
|
180
231
|
? getSupportedTransactionById(transactionState, file.matchedTransactionId)
|
package/lib/index.d.ts
CHANGED
|
@@ -263,7 +263,7 @@ import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLine
|
|
|
263
263
|
import { UploadStatementDocumentAIPayload, UploadStatementDocumentAIResponse } from './view/expenseAutomationView/payload/reconciliationPayload';
|
|
264
264
|
import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
|
|
265
265
|
import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryJeSchedule as retryExpenseAutomationJESchedule, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
|
|
266
|
-
import { bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
266
|
+
import { bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
267
267
|
import { deleteAccountStatement, fetchReconciliation as fetchReconciliationView, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
|
|
268
268
|
import { clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
269
269
|
import { ExpenseAutomationStepDetails, ExpenseAutomationViewSelector } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
|
|
@@ -615,7 +615,7 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
|
|
|
615
615
|
export { ClassesViewSelectorReportV2 };
|
|
616
616
|
export { BalancesTimeseries, TrendTimeseries, BalanceKind };
|
|
617
617
|
export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
|
|
618
|
-
export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, MatchCandidate, MatchSource, MissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, updateBulkUploadProgress, pusherBatchStatusUpdate, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
|
|
618
|
+
export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, MatchCandidate, MatchSource, MissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
|
|
619
619
|
export { JEScheduleLocalData };
|
|
620
620
|
export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, JEScheduledTransactionWithFailedEntries, };
|
|
621
621
|
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, clearExpenseAutomationTransactionsView, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };
|
package/lib/index.js
CHANGED
|
@@ -37,37 +37,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.newBalancesFilterForDateRange = exports.newBalancesFilter = exports.toCOABalancesOrderStrict = exports.toCOABalanceTimeframe = exports.isFluxAnalysisOpExReport = exports.isOpExByVendorReport = exports.isAgingReport = exports.isPAndLClassesViewReport = exports.isPAndLReport = exports.isDashboardClassesViewReport = exports.isDashboardReport = exports.isCashFlowOrBalanceSheetReport = exports.toReportFormatStrict = exports.toReportID = exports.toAmount = exports.getMinDate = exports.dateFromYearMonthDate = exports.getMonthIndex = exports.getLastMonthOfFYYear = exports.getLastMonthOfFYQuarter = exports.isIncompleteMonthPresentInTimeframeTick = exports.getTimeframeTickTag = exports.initializeWithNewStore = exports.injectFeatureModules = exports.injectFeatureEpics = exports.zeniAPIClientConfig = exports.updateZeniAPIClientConfig = exports.toZeniUrlWithoutBaseURL = exports.toZeniUrl = exports.updateZeniDateLocaleID = exports.setLocalTimezone = exports.subtractPeriod = exports.addPeriod = exports.getLocalTimezone = exports.getActualPeriodOfFY = exports.getActualPeriodOfFYQtr = exports.getStartOfAndEndOfTimeframeForFY = exports.getFYQuarterAndYear = exports.getFYMonths = exports.formatZeniDate = exports.getBusinessDayOfDate = exports.dateNow = exports.dateLocal = exports.zeniDate = exports.zeniDateInLocal = exports.Dayjs = exports.disconnectPusher = exports.initializePusher = exports.saveJeAccountSettingsLocalData = exports.saveJeAccountSettings = void 0;
|
|
40
|
-
exports.
|
|
41
|
-
exports.
|
|
42
|
-
exports.
|
|
43
|
-
exports.
|
|
44
|
-
exports.
|
|
45
|
-
exports.
|
|
46
|
-
exports.
|
|
47
|
-
exports.
|
|
48
|
-
exports.
|
|
49
|
-
exports.
|
|
50
|
-
exports.
|
|
51
|
-
exports.
|
|
52
|
-
exports.
|
|
53
|
-
exports.
|
|
54
|
-
exports.
|
|
55
|
-
exports.
|
|
56
|
-
exports.
|
|
57
|
-
exports.
|
|
58
|
-
exports.
|
|
59
|
-
exports.
|
|
60
|
-
exports.
|
|
61
|
-
exports.
|
|
62
|
-
exports.
|
|
63
|
-
exports.
|
|
64
|
-
exports.
|
|
65
|
-
exports.
|
|
66
|
-
exports.
|
|
67
|
-
exports.
|
|
68
|
-
exports.
|
|
69
|
-
exports.
|
|
70
|
-
exports.getTreasuryTaxLetters = exports.fetchTreasuryTaxLetterList = exports.getTreasuryStatements = exports.fetchTreasuryStatementList = exports.getTreasuryTransferMoney = exports.clearTreasuryTransferMoney = exports.updateTreasuryTransferMoneyLocalData = exports.executeTreasuryTransferMoney = exports.getTreasuryDetail = exports.updateTreasuryTransactionListUIState = exports.fetchTreasuryTransactionList = exports.fetchTreasuryOverviewDetail = exports.toMessageType = exports.toMessageSender = exports.toAiCfoAnswerResponseTypeStrict = exports.toAiCfoAnswerResponseType = exports.toAiCfoAnswerStateTypeStrict = exports.toAiCfoAnswerStateType = exports.toAiCfoChartTypeStrict = exports.toAiCfoChartType = exports.toAiCfoVisualizationTypeStrict = exports.toAiCfoVisualizationType = exports.ALL_AI_CFO_ANSWER_RESPONSE_TYPES = void 0;
|
|
40
|
+
exports.fetchCompletedTransactionsSuccess = exports.fetchCompletedTransactions = exports.clearManualSearchResults = exports.searchTransactionsForManualMatchFailure = exports.searchTransactionsForManualMatchSuccess = exports.searchTransactionsForManualMatch = exports.clearBulkUpload = exports.setBulkUploadSortConfig = exports.setBulkUploadCompletedSubTab = exports.setBulkUploadResultsTab = exports.confirmBulkUploadMatchFailure = exports.confirmBulkUploadMatchSuccess = exports.confirmBulkUploadMatch = exports.fetchBulkUploadBatchesFailure = exports.fetchBulkUploadBatchesSuccess = exports.fetchBulkUploadBatches = exports.fetchMoreBatchDetailsFailure = exports.fetchMoreBatchDetailsComplete = exports.fetchMoreBatchDetails = exports.storeBatchDetails = exports.fetchBulkUploadBatchDetailsFailure = exports.fetchBulkUploadBatchDetailsSuccess = exports.fetchBulkUploadBatchDetails = exports.clearMissingReceiptsTabNavigation = exports.requestMissingReceiptsTabNavigation = exports.pusherBatchStatusUpdate = exports.updateBulkUploadProgress = exports.bulkUploadReceiptsFailure = exports.bulkUploadReceiptsSuccess = exports.bulkUploadReceipts = exports.fetchExpenseAutomationMissingReceipts = exports.updateCurrentSelectedTransactionCategorizationTab = exports.refreshExpenseAutomationCurrentTab = exports.fetchAllExpenseAutomationTabs = exports.markExpenseAutomationMissingReceiptAsDone = exports.uploadExpenseAutomationMissingReceiptSuccess = exports.toExpenseAutomationViewType = exports.toExpenseAutomationTransactionsTabKey = exports.toExpenseAutomationMissingReceiptsSortKey = exports.getExpenseAutomationView = exports.ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY = exports.getMonthEndCloseChecksViewByTenantId = exports.fetchMonthClosePerformanceTrend = exports.fetchMonthEndCloseChecks = exports.stringToUnionStrict = exports.stringToUnion = exports.isCalculatedBalanceType = exports.toCOABlanaceType = exports.toCOABalanceTypeStrict = exports.newBalancesFilterClassesView = void 0;
|
|
41
|
+
exports.fetchTransactionCategorizationView = exports.fetchTransactionCategorization = exports.setStatementParseInProgress = exports.isReviewTransactionCreditCardCreditType = exports.isReviewTransactionExpenseType = exports.isReviewTransactionDepositType = exports.isReviewTransactionCreditCardPaymentType = exports.isReviewTransactionBillPaymentType = exports.isReviewTransactionBankTransferType = exports.updateStatementUploadChosen = exports.uploadAccountStatement = exports.deleteAccountStatement = exports.toReconciliationAccountSource = exports.updateExpenseAutomationAccountReconciliationLocalData = exports.saveExpenseAutomationReconciliationReview = exports.updateExpenseAutomationSelectedDrawerAccountId = exports.updateExpenseAutomationReconReviewTabLocalData = exports.isAccountReconReport = exports.toReconciliationTabsType = exports.getAccountReconByAccountIdAndSelectedPeriod = exports.setConnectionInProgressForAccountReconciliation = exports.updateExpenseAutomationReconListScrollPosition = exports.uploadAccountStatementIntoDocumentAI = exports.fetchReconciliationView = exports.getExpenseAutomationReconciliationView = exports.updateExpenseAutomationAccountReconciliationSelectedAccountId = exports.updateExpenseAutomationAccountReconciliationSelectedTab = exports.updateExpenseAutomationReconcileTabLocalData = exports.updateExpenseAutomationReconcileTabListSortState = exports.updateExpenseAutomationReconReviewTabListSortState = exports.updateExpenseAutomationReconcileTabListScrollState = exports.saveExpenseAutomationReconciliationDetail = exports.isAnyItemWithUncategorizedExpenseAccount = exports.getLineItemsByTransactionIdsFromLocalData = exports.checkIfAllLineItemsAreCategoryClassFilled = exports.MAX_SELECTION_LIMIT = exports.updateFluxAnalysisViewPageMetaData = exports.updateFluxAnalysisViewUIState = exports.getExpenseAutomationTransactionView = exports.updateCurrentSelectedPeriod = exports.updateCurrentSelectedView = exports.getExpenseAutomationFluxAnalysisView = exports.updateExpenseAutomationMissingReceiptsUIState = exports.updateExpenseAutomationMissingReceiptUploadState = exports.reviewFluxAnalysisView = exports.updateFluxAnalysisSelectedSectionIdsForReview = exports.updateFluxOperatingExpensesIdsForReview = exports.clearExpenseAutomationFluxAnalysisView = exports.fetchFluxAnalysisView = exports.fetchCompletedTransactionsFailure = void 0;
|
|
42
|
+
exports.doSignIn = exports.sendEmailMagicLinkToUser = exports.resendVerifyDeviceOTP = exports.verifyDeviceWithTwoFA = exports.doMagicLinkSignIn = exports.clearAll = exports.updateCurrentTenant = exports.fetchAllTenants = exports.fetchActiveTenant = exports.isTenantUsingZeniCOA = exports.isZeniDomainTenant = exports.getTenantBaseViewForTenantId = exports.getTenantBaseViewForTenantView = exports.toTenantCoreDetailsView = exports.getTenantsCoreDetailsByCheckInDateSelector = exports.getTenantsBaseByCheckInDateSelector = exports.getTenantsByCheckInDateSelector = exports.getCurrentTenant = exports.getTenantBaseById = exports.toQuarterStrict = exports.toQuarter = exports.toMonthStrict = exports.toMonth = exports.toScheduleDaysOfMonth = exports.SCHEDULE_DAYS_OF_MONTH = exports.getNumberOfPeriods = exports.toVendorSpendTrendFilterTabsTypeStrict = exports.convertToPeriod = exports.toMonthYearPeriodId = exports.toAbsoluteDay = exports.toTimePeriod = exports.mapTimePeriodtoTimeframeTick = exports.toTimeframeTick = exports.TOP_EX_TIME_PERIODS = exports.toTransactionsSortKey = exports.clearExpenseAutomationTransactionsView = exports.updateSelectedTransactionId = exports.updateSelectedCustomerForTransaction = exports.updateSelectedVendorForTransaction = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.initializeTransactionCategorizationViewLocalData = exports.setEntityRecommendationForLineIdsForCategorization = exports.updateSelectedCheckboxTransactionIds = exports.updateTransactionCategorizationUIState = void 0;
|
|
43
|
+
exports.hasReimbursementAdminLevelAccess = exports.hasReimbursementAccess = exports.hasBillPayAccess = exports.hasTreasuryAdminLevelAccess = exports.hasTreasuryAccess = exports.hasZeniAccountsAccess = exports.hasChargeCardAccess = exports.getUserRoleByUserIds = exports.getUserRoleByUserId = exports.isZeniSignedInUser = exports.hasOnlyZeniAccountsAccess = exports.hasOnlyChargeCardAccess = exports.hasOnlyReimbursementAccess = exports.hasRemiFallbackAdminLevelAccess = exports.hasBillPayFallbackAdminLevelAccess = exports.hasSuperAdminLevelAccess = exports.hasZeniRoleOrCompanyOfficerAccess = exports.hasOnlyBillPayAccess = exports.getUserRoleMap = exports.hasInvestorBankerLevelAccess = exports.isNonZeniRole = exports.hasBookKeepingUserLevelAccess = exports.hasBookKeepingAdminLevelAccess = exports.hasEmployeeLevelAccess = exports.hasReimbursementUserAccess = exports.hasFullOrAdminLevelAccess = exports.hasAdminLevelAccess = exports.isFinOpsUserRoleType = exports.toUserRoleTypeStrict = exports.toUserRoleType = exports.getAllZeniUsersFromState = exports.getUsersByUserIds = exports.getUserByUserId = exports.getUserName = exports.getForecast = exports.getClassById = exports.getAccountGroupKey = exports.toAccountGroupType = exports.toAccountType = exports.isOtherProductsEnabledForTenant = exports.isTenantBookkeepingEnabled = exports.isTenantCardsOnly = exports.isTenantBankingOnly = exports.fetchSubscriptionSummaryForTenant = exports.saveExternalConnectionForTenant = exports.fetchExternalConnectionsForTenant = exports.fetchExcludedResourcesForTenant = exports.resetSignInState = exports.doSignOut = exports.updateSignInState = void 0;
|
|
44
|
+
exports.updateOpExClassesToFilterOut = exports.updateOpExAccountViewMode = exports.fetchOpExClassesView = exports.isOpexByVendorIDNotSpecifiedVendor = exports.getOpexVendorTimeframeKey = exports.toOpexByVendorSortKeyType = exports.updateOpExByVendorPageLimit = exports.clearOpExByVendorSearch = exports.updateOpExByVendorDownloadState = exports.updateOpExByVendorSortOrSearchInProgress = exports.updateOpExByVendorPageFetchInProgress = exports.updateOpExByVendorSort = exports.updateOpExByVendorSearchString = exports.updateOpExByVendorAdditionalBalancesSelection = exports.getOpExByVendorUIState = exports.getOpExByVendorReport = exports.updateOpExByVendorUIState = exports.updateOpExByVendorTimeFrame = exports.fetchOpExByVendorReportForTimeframe = exports.fetchOpExByVendor = exports.fetchOpExWithForecast = exports.getOperatingExpensesForHighlightedRange = exports.getOperatingExpensesForSelectedRange = exports.getOperatingExpensesUIState = exports.getOperatingExpensesReport = exports.getOperatingExpensesReportFetchState = exports.updateOpExUIState = exports.updateOpExDownloadState = exports.updateOpExCOABalancesRange = exports.fetchOpEx = exports.fetchReimbursementCard = exports.fetchBillPayCard = exports.fetchCashBalance = exports.getCashBalance = exports.updateStatementCloseDay = exports.fetchCardBalance = exports.getCardBalance = exports.hasAICFOAccess = exports.hasTreasuryAccessible = exports.hasChargeCardAccessible = exports.hasZeniAccountsAccessible = exports.hasReimbursementAccessible = exports.hasBillPayAccessible = exports.hasAnyFinOpRole = exports.hasAnyCompanyRole = exports.hasZeniAccountsAdminLevelAccess = exports.hasSpendManagementAdminLevelAccess = exports.hasSpendManagementAccess = exports.hasChargeCardAdminLevelAccess = exports.hasBillPayAdminLevelAccess = void 0;
|
|
45
|
+
exports.getRevenueClassesViewForSelectedRange = exports.getRevenueClassesViewForHighlightedRange = exports.getRevenueClassesView = exports.updateRevenueClassesViewUIState = exports.updateRevenueClassesToFilterOut = exports.updateRevenueAccountViewMode = exports.fetchRevenueClassesView = exports.isRevenueSectionID = exports.isRevenueCalculatedSectionID = exports.updateRevenueUIState = exports.updateRevenueDownloadState = exports.updateRevenueCOABalancesRange = exports.getRevenueForHighlightedRange = exports.getRevenueForSelectedRange = exports.getRevenueUIState = exports.getRevenueReportFetchState = exports.getRevenueReport = exports.fetchRevenueWithForecast = exports.fetchRevenue = exports.toAverageMonthsCount = exports.getNetBurnOrIncomeStoryCardReport = exports.updateNetBurnOrIncomeStoryCardSettings = exports.fetchNetBurnOrIncomeStoryCard = exports.isNetBurnOrIncomeReportViewSectionID = exports.isNetBurnOrIncomeReportViewCalculatedSectionID = exports.getNetBurnOrIncomeReportFetchState = exports.getNetBurnOrIncomeUIState = exports.getNetBurnOrIncomeForHighlightedRange = exports.getNetBurnOrIncomeForSelectedRange = exports.getNetBurnOrIncomeReport = exports.updateNetBurnOrIncomeDownloadState = exports.updateNetBurnOrIncomeCOABalancesRange = exports.fetchNetBurnOrIncomeWithForecast = exports.updateNetBurnOrIncomeUIState = exports.fetchNetBurnOrIncome = exports.isNetBurnOrIncomeClassesViewCalculatedSectionID = exports.isNetBurnOrIncomeClassesViewSectionID = exports.getNetBurnOrIncomeClassesViewForSelectedRange = exports.getNetBurnOrIncomeClassesViewForHighlightedRange = exports.getNetBurnOrIncomeClassesView = exports.updateNetBurnOrIncomeClassesViewUIState = exports.updateNetBurnOrIncomeClassesToFilterOut = exports.updateNetBurnOrIncomeAccountViewMode = exports.fetchNetBurnOrIncomeClassesView = exports.isOpExClassesViewCalculatedSectionID = exports.isOpExClassesViewSectionID = exports.getOpExClassesViewForSelectedRange = exports.getOpExClassesViewForHighlightedRange = exports.getOpExClassesView = exports.updateOpExClassesViewUIState = void 0;
|
|
46
|
+
exports.deletePerson = exports.fetchPeople = exports.fetchPeoplePage = exports.fetchAllPeopleRequiredViews = exports.getUserList = exports.fetchUserListByType = exports.getAccountingProviderAttachment = exports.isPandLReportViewSectionID = exports.isPandLReportViewCalculatedSectionID = exports.getProfitAndLossClassesView = exports.updateProfitAndLossAccountViewMode = exports.updateProfitAndLossClassesViewUIState = exports.resetProfitAndLossClassesNodeCollapseState = exports.updateProfitAndLossClassesToFilterOut = exports.fetchProfitAndLossClassesView = exports.fetchProfitAndLossForTimeframe = exports.getPandLReportFetchState = exports.getProfitAndLossReport = exports.updateProfitAndLossUIState = exports.resetProfitAndLossNodeCollapseState = exports.fetchProfitAndLoss = exports.getPandLWithForecast = exports.updateDashboardLayout = exports.updateTreasuryVideoClosed = exports.getDashboard = exports.fetchDashboard = exports.getAllTopExpenses = exports.getTop6Expenses = exports.getTopExpenses = exports.updateTopExDownloadState = exports.updateTopExTimeFrame = exports.fetchTopEx = exports.updateCashInCashOutUIState = exports.updateCashInCashOutDownloadState = exports.updateCashInCashOutCOABalancesRange = exports.getCashInCashOutForHighlightedRange = exports.getCashInCashOutForSelectedRange = exports.getCashInCashOutUIState = exports.getCashInCashOut = exports.fetchCashInCashOut = exports.getCashPositionForHighlightedRange = exports.getCashPositionForSelectedRange = exports.getCashPositionUIState = exports.getCashPosition = exports.updateCashPositionUIState = exports.updateCashPositionDownloadState = exports.updateCashPositionCOABalancesRange = exports.fetchCashPosition = exports.isRevenueClassesViewCalculatedSectionID = exports.isRevenueClassesViewSectionID = void 0;
|
|
47
|
+
exports.initializeMyProfileLocalData = exports.updateMyProfileLocalData = exports.updateMyProfile = exports.isRemindersSectionVisibleOnSettingsPage = exports.isPerformanceTabVisible = exports.isNotificationsTabVisible = exports.isMyBankConnectionsTabVisible = exports.isSettingsVisible = exports.isIntegrationsTabVisible = exports.isCompanyDetailsTabVisible = exports.isBusinessVerificationTabVisible = exports.isBillingTabVisible = exports.isBankConnectionsTabVisible = exports.isApprovalRulesTabVisible = exports.isAccountingTabVisible = exports.getMyBankConnectionsDetails = exports.getMyProfileView = exports.getBillingAccountsViewDetails = exports.getNotificationSettings = exports.getNotificationSettingsView = exports.isMonthEndNotificationsSectionVisibleOnSettingsPage = exports.updateSettingsViewUIState = exports.refreshQBOData = exports.resetNotificationSettingsUpdateStatus = exports.resetNotificationSettingsLocalData = exports.fetchNotificationSettingsView = exports.updateNotificationSettingsLocalData = exports.saveNotificationSettings = exports.fetchNotificationSettings = exports.saveCompanyBillingAddress = exports.fetchCompanyBillingAddress = exports.fetchBillingAccountsView = exports.fetchBankConnectionsView = exports.fetchMyProfile = exports.fetchMyProfileView = exports.clearSettingsView = exports.NOTIFICATION_MODES = exports.REMINDER_NOTIFICATION_TYPES = exports.initializeEditPerson = exports.getPeopleLocalData = exports.getPeople = exports.peopleClearDataInLocalStore = exports.peopleSaveDataInLocalStore = exports.resetUpdateErrorMessage = exports.peopleSaveUpdates = exports.updatePeopleUIState = exports.inviteZeniPeople = exports.invitePeople = exports.changeZeniPersonRoles = exports.resendInvite = void 0;
|
|
48
|
+
exports.clearTransactionList = exports.isTransferTransaction = exports.isVendorTransactionWithCustomer = exports.isVendorTransaction = exports.updateVendors = exports.defaultVendorCurrency = exports.toTransactionCategory = exports.toTransactionTypeStrict = exports.toTransactionType = exports.toPlatformLineDetailType = exports.toTransactionID = exports.isCustomerTransaction = exports.defaultCustomerCurrency = exports.toAttachment = exports.mapFileEntityToAttachment = exports.toContentType = exports.toContentTypeStrict = exports.clearReportsResync = exports.reportsResyncFailure = exports.reportsResyncSuccess = exports.initiateReportsResync = exports.updateFinanceStatementFormat = exports.updateFinanceStatementDisplayOrder = exports.updateFinanceStatementAdditionalBalancesSelection = exports.updateDownloadState = exports.updateSelectedReportId = exports.updateCOABalancesRange = exports.fetchFinanceStatement = exports.getReportsResyncView = exports.getFinanceStatement = exports.fetchCashFlowForTimeframe = exports.isCashFlowReportViewCalculatedSectionType1ID = exports.isCashFlowReportViewSectionID = exports.isCashFlowReportViewCalculatedSectionID = exports.typeOfCashFlowRootSection = exports.updateCashFlowUIState = exports.resetCashFlowNodeCollapseState = exports.getCashFlowReportFetchState = exports.getCashFlow = exports.fetchCashFlow = exports.fetchBalanceSheetForTimeframe = exports.isBalanceSheetReportViewCalculatedSectionID = exports.isBalanceSheetReportViewSectionID = exports.typeOfBalanceSheetRootSection = exports.updateBalanceSheetUIState = exports.resetBalanceSheetNodeCollapseState = exports.getBalanceSheetForFullDataAvailableRange = exports.getBalanceSheetFetchState = exports.getBalanceSheet = exports.fetchBalanceSheet = void 0;
|
|
49
|
+
exports.getUpdatablePeriodsForTransactionRecommendations = exports.getTransactionDetailForTransaction = exports.getTransactionDetail = exports.getTransactionListByEntityForSinglePeriod = exports.getTransactionListUIStateByClassKey = exports.getTransactionListByClass = exports.getTransactionListByEntity = exports.getThirdPartyIdFromTransactionId = exports.deleteTransactionAttachment = exports.uploadMissingAttachmentSuccess = exports.updateTransactionDetail = exports.fetchTransactionDetail = exports.downloadAccountingProviderAttachmentFailure = exports.downloadAccountingProviderAttachmentSuccess = exports.downloadAccountingProviderAttachment = exports.setIsVendorUpdateAllChecked = exports.updateVendorBulkRecommendationsFetchStatus = exports.updateLatestSelectedEntity = exports.resetAllLineItemsToVendor = exports.updateVendorToAllLineItems = exports.updateLocalDataWithTransactionsUpdateWithVendorCheckbox = exports.resetVendor = exports.resetSelectedCustomer = exports.updateSelectedCustomer = exports.updateSelectedVendor = exports.removeEntityRecommendationForLineIdForTransactionDetail = exports.initializeTransactionDetailLocalData = exports.setAllLineItemsLocalDataIsUpdateAllChecked = exports.saveTransactionDetail = exports.setAllLineItemsToCategoryClassInLocalData = exports.resetLineItemsCategoryClassInLocalData = exports.updateTransactionListByEntityFailure = exports.clearTransactionDetailSaveStatus = exports.saveTransactionDetailLocalData = exports.updateTransactionListByEntity = exports.fetchEntityTransactionList = exports.getTransactionListUIStateByAccountKey = exports.getTransactionListByAccount = exports.parallelFetchTransactionListByCategoryType = exports.updateTransactionListUIStateByCategoryType = exports.updateTransactionListByClass = exports.updateTransactionListByClassUIState = exports.parallelFetchClassTransactionList = exports.updateTransactionListByAccountUIState = exports.updateTransactionListByAccountFailure = exports.updateTransactionListByAccount = exports.fetchAccountTransactionList = exports.parallelFetchEntityTransactionList = exports.parallelFetchAccountTransactionList = exports.updateLatestTransactionId = void 0;
|
|
50
|
+
exports.companyManagementSaveUpdates = exports.getParentSubsidiaryManagementView = exports.getAddonListZeniSku = exports.getPlanListZeniSku = exports.getCompanyManagementView = exports.getControllersName = exports.getFirstControllerId = exports.getFirstControllerEmail = exports.getCompanyInfoForAllCockpitCompaniesInState = exports.getControllersForCompany = exports.getCompanyByCompanyId = exports.isCompanyEligibleForTreasury = exports.ALL_ACCOUNTING_CONNECTION_CREATION_MODES = exports.getAddressByAddressId = exports.getEntityByEntityIDs = exports.clearAllEntities = exports.updateEntities = exports.getEntityAutoCompleteResults = exports.fetchEntityAutoCompleteResults = exports.clearAllEntityAutoCompleteResults = exports.clearEntityAutoCompleteResults = exports.fetchEntityAutoCompleteEpic = exports.toEntityType = exports.VendorExpenseTrend = exports.CustomerIncomeTrend = exports.getCurrentFiscalQuarterDateRange = exports.getTrendForEntity = exports.clearTrendData = exports.fetchExpenseTrend = exports.fetchIncomeTrend = exports.getEntityDetailUIStateByEntity = exports.getLatestTimeFrameWithTransactionsForEntity = exports.getTrendWithTransactions = exports.trendWithTransactionsUpdateSelectedTimeperiod = exports.clearTrendWithTransactions = exports.fetchTransactionsForEntity = exports.fetchTrendForEntity = exports.updateReportUIOptionCOABalancesRange = exports.updateReportUIOptionThisPeriod = exports.toggleReportUIOptionForecastMode = exports.updateReportUIOptionIsCompareModeOn = exports.updateReportUIOptionCompareMode = exports.updateReportUIOptionIsForecastVsActualOn = exports.updateReportUIOptionSelectedForecast = exports.updateReportUIOptionTimeframe = exports.getForecastList = exports.fetchForecastList = exports.updateSelectedInsightIndex = exports.fetchInsightsCard = exports.getInsights = void 0;
|
|
51
|
+
exports.toCockpitTabsIDStrict = exports.ALL_COCKPIT_TABS_IDS = exports.ALL_COCKPIT_TABS_FILE_TYPES = exports.toTaskManagerSortKeyType = exports.toHealthSortKeyType = exports.toPortfolioSortKeyType = exports.toOnboardingSortKeyType = exports.toManagementSortKeyType = exports.removeNewAddressDataInLocalStore = exports.createAddress = exports.clearAddressView = exports.fetchAddress = exports.getFormattedAddress = exports.getAllNewAddresses = exports.getNewAddress = exports.getAddress = exports.newAddressInLocalStore = exports.getCompanyMonthEndReportHistoricData = exports.fetchCompanyMonthEndReportTemplates = exports.fetchCompanyMonthEndReportHistoricData = exports.fetchCompanyMonthEndReportHistoricDates = exports.getCompanyMonthEndReportSelectorView = exports.resetSendCompanyMonthEndReportFetchStatus = exports.resetCompanyMonthEndReportFetchStatus = exports.saveCompanyMonthEndReport = exports.sendCompanyMonthEndReport = exports.fetchCompanyMonthEndReportView = exports.fetchImproveUsingZeniGPT = exports.getAllCockpitTabsFilterView = exports.isInfiniteRunway = exports.getCompanyPortfolioView = exports.getAuditWarningsCount = exports.retryBankAccountConnection = exports.toReviewColumnKeyType = exports.getReviewCompanyListCount = exports.getReviewCompanySelectorView = exports.updateReviewCompanyListUIState = exports.fetchReviewCompanyView = exports.updateCompanyDownloadState = exports.fetchZeniUsers = exports.fetchSubscriptionView = exports.fetchPortfolioView = exports.fetchManagementView = exports.fetchOnboardingView = exports.fetchParentSubsidiaryManagementView = exports.updateCompanyManagementUIState = exports.updateCompanyPortfolioUIState = exports.fetchCompanyPortfolioView = exports.fetchCompanyManagementView = exports.fetchAllCockpitViews = void 0;
|
|
52
|
+
exports.fetchFileListSuccess = exports.fetchFileListFailure = exports.fetchFileList = exports.toSupportedTransactionLineAttachmentFileType = exports.toSupportedAttachmentFileType = exports.toSupportedAttachmentFileFormatType = exports.toSupportedFileTypeStrict = exports.removeAttachmentFiles = exports.updateAttachmentFiles = exports.updateFiles = exports.SUPPORTED_TRANSACTION_LINE_ATTACHMENT_FILE_TYPES = exports.SUPPORTED_ATTACHMENT_FILE_TYPES = exports.getSubscriptionEstimationData = exports.getSubscriptionLocalStoreDataView = exports.getSubscriptionsDetailView = exports.clearSubscriptionLocalData = exports.clearSubscriptionUpdateViewDataByTenantId = exports.saveSubscriptionLocalData = exports.initializeSubscriptionLocalData = exports.clearSubscriptionView = exports.fetchSubscriptionUpdateEstimate = exports.fetchSubscriptionCreateEstimate = exports.saveSubscriptionNotesUpdates = exports.saveSubscriptionUpdates = exports.fetchSubscriptionDetails = exports.fetchSubscriptionCoupons = exports.fetchSubscriptionAddOns = exports.fetchSubscriptionPlans = exports.fetchSubscriptionList = exports.updateCompanySubscriptionUIState = exports.getCompanySubscriptionView = exports.toSubscriptionSortKeyType = exports.getBankAccount = exports.getNestedAccountListHierarchy = exports.getUncategorizedAccounts = exports.toCompanyPassportLocalData = exports.clearCompanyView = exports.saveCompanyPassportDetails = exports.updateCompanyPassportLocalStoreData = exports.companyPassportClearDataInLocalStore = exports.deleteCompanyOfficerInLocalStore = exports.saveIndustryAndIncDateInCompanyPassportLocalStore = exports.companyPassportSaveDataInLocalStore = exports.isCompanyPassportDataToBeSaved = exports.getCompanyPassportLocalStoreData = exports.getCompanyPassportView = exports.fetchCompanyPassportView = exports.isAllowedValueWithID = exports.isAllowedValueWithCode = exports.toCockpitTabsFileTypeStrict = void 0;
|
|
53
|
+
exports.updateSelectedVendorForCreateFlow = exports.removeBankAccountsInVendorView = exports.saveVendor = exports.fetchVendor = exports.updateFiling1099SearchUIState = exports.updateFiling1099SortUIState = exports.updateFiling1099ScrollYOffset = exports.fetchVendorsFiling1099List = exports.fetchVendorsFiling1099All = exports.updateScrollYOffset = exports.fetchVendorsList = exports.vendorsTabResetVendorDetailLocalData = exports.vendorsTabUpdateVendorDetailLocalData = exports.vendorsTabSaveVendorSuccessOrFailure = exports.vendorsTabSaveVendor = exports.getVendorsTabDetailPageView = exports.toVendorDetailTabsType = exports.getVendorAllTransactionsDefaultTimePeriod = exports.resetVendorsTabVendorAllTransactionsTabData = exports.resetSelectedTabType = exports.updateVendorsTabVendorAllTransactionsTabData = exports.updateVendorSpendTrendFilterTabValue = exports.updateSelectedTabType = exports.fetchVendorsTabVendorDetailPageView = exports.getVendorDetailPageView = exports.getVendorView = exports.getAnalyticsDataOnVendorSave = exports.fetchTasksCard = exports.downloadFile = exports.getAttachmentFileIdByFileName = exports.mapAttachmentFileToAttachmentFilePayload = exports.mapAttachmentFilePayloadToFile = exports.mapFilePayloadToFile = exports.uploadFile = exports.getFileDeleteStatusById = exports.getFileUpdateNameStatusById = exports.getDeleteFileListWithStatus = exports.getFileListWithStatus = exports.clearFileViewList = exports.deleteFileSuccess = exports.deleteFileFailure = exports.deleteFile = exports.deleteFileListSuccess = exports.deleteFileListFailure = exports.deleteFileList = exports.updateFilesMetadata = exports.updateFileNameSuccess = exports.updateFileNameFailure = exports.updateFileName = exports.fetchFile = void 0;
|
|
54
|
+
exports.clearAllBillsFromBulkActionList = exports.removeBillFromBulkActionList = exports.updateBillsBulkActionList = exports.updateBillListDownloadUIState = exports.updateRemiListDownloadUIState = exports.REIMBURSEMENT_FILTER_CATEGORIES_RESTRICTED = exports.REIMBURSEMENT_FILTER_CATEGORIES = exports.updateRemiListFilterResult = exports.updateBillListFilterResult = exports.updateRemiListSearchResult = exports.updateRemiListUIState = exports.updateRemiDetailSaveRemiCode = exports.updateRemiListSubTab = exports.updateRemiListTab = exports.fetchRemiListPerTab = exports.fetchRemiList = exports.getRemiDownloadList = exports.getRemiList = exports.toReimbursementTypeCode = exports.toRemiTabTypeStrict = exports.toRemiTabType = exports.toRemiSubTabTypeStrict = exports.toRemiSubTabType = exports.checkShowMarkAsPaidButton = exports.toOutsideZeniPaymentModeType = exports.updateW9FormOCRDataToLocalData = exports.updateVendor1099DetailsLocalData = exports.initializeVendorFiling1099UploadDetailsLocalState = exports.vendorFiling1099UploadDetailsResetLocalData = exports.vendorFiling1099UploadDetailsResetFormStatus = exports.vendorFiling1099UploadDetailsSave = exports.getVendorUploadDetailsByVendorId = exports.updateW9FormUploadFile = exports.updateW9FormUploadFetchState = exports.deleteUserBankAccount = exports.createUserBankAccount = exports.resetCreateBankAccountDetails = exports.createInternationalBankAccount = exports.createBankAccount = exports.deleteBankAccount = exports.fetchBankCountryNameByIban = exports.fetchBankNameBySwift = exports.fetchBankNameByRouting = exports.fetchVendorDetailPageView = exports.fetchVendorDetails = exports.updateStatusForCreateBankAccountFlow = exports.clearBankAccountView = exports.updateInternationalBankAccountViewLocalStoreData = exports.updateBankAccountViewLocalStoreData = exports.initializeVendorAddress = void 0;
|
|
55
|
+
exports.fetchAndUpdateVendorRecommendations = exports.fetchEditBillDetailPage = exports.fetchBillDetail = exports.getBillTransactionDetailKey = exports.checkApproveRejectBtnShowForBill = exports.getBillDetailView = exports.getBillDownloadList = exports.getBillList = exports.retryOrRefundBill = exports.cancelAndDeleteBill = exports.deleteBill = exports.updateApprovalStatusOnSuccess = exports.approveOrRejectBill = exports.saveBillDetail = exports.discardBillUpdatesInLocalStore = exports.saveBillUpdatesToLocalStore = exports.fetchVendorByNameAndParseInvoice = exports.updateBillDetailSaveBillCode = exports.updateSelectedBillId = exports.updateSubTab = exports.updateTab = exports.fetchBillListPerTab = exports.fetchBillList = exports.fetchClassList = exports.getClassList = exports.checkIfCreatorIsApprover = exports.discardOutsideZeniPaymentLocalData = exports.updateOutsideZeniPaymentLocalData = exports.incrementRemiBulkActionProcessedCount = exports.clearRemiBulkActionView = exports.autoReviewPendingApprovalRemis = exports.submitDraftRemisBulkAction = exports.cancelOrDeleteRemisBulkAction = exports.approveOrRejectRemisBulkAction = exports.reviewDraftRemisBulkAction = exports.clearAllRemisFromBulkActionList = exports.removeRemiFromBulkActionList = exports.updateRemisBulkActionList = exports.getRemisBulkOperationProgress = exports.getRemisBulkReviewView = exports.isBillConditionallyValid = exports.clearBillPayBulkActionView = exports.getBillsBulkOperationProgress = exports.incrementBulkActionProcessedCount = exports.autoReviewPendingApprovalBills = exports.submitDraftBillsBulkAction = exports.cancelOrDeleteBillsBulkAction = exports.approveOrRejectBillsBulkAction = exports.validateBillsBulkAction = exports.getBillsBulkReviewView = void 0;
|
|
56
|
+
exports.saveTreasuryAdditionalDocumentsInLocalStore = exports.saveCompnayOfficerAdditionalDocumentsInLocalStore = exports.saveCompnayOfficerPhoneInLocalStore = exports.saveSetupViewDataInLocalStore = exports.acceptBillPayUpdatedTerms = exports.acceptZeniAccountTerms = exports.acceptBillPayTerms = exports.updatePrimaryFundingAccount = exports.updateMappedCashAccount = exports.establishPlaidConnection = exports.updatePaymentAccountStatus = exports.updatePaymentAccountLoginStatus = exports.updatePaymentAccount = exports.updateBusinessVerificationDetails = exports.updateSetupViewLocalStoreData = exports.updateSelectedCompanyOfficer = exports.getPlaidLinkToken = exports.getPaymentAccounts = exports.enableSetup = exports.fetchZeniAccountSetupView = exports.fetchBillPaySetupView = exports.hideCreatedByFilter = exports.updateShouldReplaceBillData = exports.replaceBillFileInLocalStore = exports.removeBillFileFromLocalStore = exports.updateWithdrawFromAccountId = exports.markBillForRetry = exports.fetchVendorAndUpdateBillLocalData = exports.convertAmountToHomeCurrency = exports.toPaymentToOption = exports.updateVendorContact = exports.verifyUser = exports.fetchUserDetails = exports.updateBillListSearchResult = exports.updateBillUploadFetchState = exports.updateContactsInVendorTabDetailLocalData = exports.updateVendorTabDetailUIState = exports.updateContactsInVendorDetailLocalData = exports.resetVendorSaveStatus = exports.resetVendorDetailLocalData = exports.updateVendorDetailLocalData = exports.BILL_PAY_FILTER_CATEGORIES = exports.updateBillListUIState = exports.saveVendorSuccessOrFailure = exports.updateShowAutofill = exports.fetchBillAndInitializeLocalStore = exports.getReviewPageBillDetail = exports.getEditBillDetail = exports.clearBillPayReview = exports.fetchDuplicateBill = void 0;
|
|
57
|
+
exports.getRemiSetupApproverView = exports.clearBillPaySetupApproverView = exports.clearBillPaySetupApproverViewUpdateData = exports.initializeBillPaySetupApproverViewUpdateData = exports.saveBillPaySetupApproverViewUpdates = exports.saveBillPaySetupApproverViewUpdateData = exports.deleteBillPayApprovalRule = exports.fetchBillPayApproversList = exports.fetchBillPayApproversDetails = exports.fetchBillPaySetupApproverView = exports.getBillPaySetupApproverUpdateDataView = exports.getBillPaySetupApproverView = exports.toRoleTypeStrict = exports.toAttributeOrRoleTypeStrict = exports.toAttributeTypeStrict = exports.isAccessDeniedError = exports.isInvalidSessionError = exports.isSuccessResponse = exports.VERIFIED_PAYMENT_ACCOUNT_PROVIDER_VERIFICATION_STATUS = exports.getRemiBusinessVerificationDetails = exports.getRemiSetupViewDetails = exports.clearRemiSetupView = exports.acceptEmployeeRemiTerms = exports.acceptRemiTerms = exports.saveRemiSetupViewDataInLocalStore = exports.updateMileageDetails = exports.fetchRemiSetupView = exports.getUserFinancialAccount = exports.fetchUserFinancialAccount = exports.getIntegrationsView = exports.getBankConnectionsSetupViewDetails = exports.getApprovalRuleViewDetails = exports.getTwoFactorAuthenticationViewForChargeCardHolder = exports.getTwoFactorAuthenticationViewForCardUserOnboarding = exports.getTwoFactorAuthenticationView = exports.getCommonSetupViewDetails = exports.getTreasuryBusinessVerificationDetails = exports.getZeniAccountBusinessVerificationDetails = exports.getBillPayBusinessVerificationDetails = exports.getBusinessVerificationDetails = exports.getZeniAccountSetupViewDetails = exports.getPlaidAccountDetails = exports.getBillPaySetupViewDetails = exports.verifyOtp = exports.resendOtp = exports.sendOtp = exports.clearZeniAccountSetupView = exports.clearBillPaySetupView = exports.clearSetupViewDataInLocalStore = exports.saveIndustryAndIncDateInLocalStore = void 0;
|
|
58
|
+
exports.toFileTypeStrict = exports.ALL_FILE_TYPES = exports.isAllFetchCompleted = exports.isAnyFetchInProgress = exports.reduceAnyCompletedFetchState = exports.reduceAllFetchState = exports.reduceAnyFetchState = exports.reduceFetchState = exports.clearAddRemiAutoFields = exports.updateHomeCurrencyConversion = exports.updateReimbursementType = exports.clearTentativeMerchantName = exports.updateTentativeMerchantNames = exports.updateUploadFetchState = exports.updateAddRemiAutoFields = exports.clearEditRemiViewDetail = exports.parseReceiptsToRemi = exports.saveRemiSuccessOrFailure = exports.saveRemiDetail = exports.removeFileFromRemiUpdatesInLocalStore = exports.discardRemiUpdatesInLocalStore = exports.fetchCurrencyConversionValue = exports.saveRemiUpdatesToLocalStore = exports.initializeRemiToLocalStore = exports.fetchRemiAndInitializeLocalStore = exports.fetchRecommendationsAndUpdateMerchantRecommendations = exports.fetchEditRemiDetailPage = exports.getEditRemiDetail = exports.removeDuplicateReimbursementByLineId = exports.clearDuplicateReimbursementDetail = exports.fetchDuplicateReimbursement = exports.clearRemiDetailView = exports.approveOrRejectRemi = exports.cancelAndDeleteRemi = exports.fetchRemiDetail = exports.deleteRemi = exports.updateIsEditModeRealTimeApprovals = exports.saveRealTimeApproval = exports.checkApproveRejectBtnShowForRemi = exports.getRemiDetailView = exports.clearRemiSetupApproverView = exports.clearRemiSetupApproverViewUpdateData = exports.initializeRemiSetupApproverViewUpdateData = exports.saveRemiSetupApproverViewUpdates = exports.saveRemiSetupApproverViewUpdateData = exports.deleteRemiApprovalRule = exports.fetchRemiApproversDetails = exports.fetchRemiApproversList = exports.fetchRemiSetupApproverView = exports.getRemiSetupApproverUpdateDataView = void 0;
|
|
59
|
+
exports.toAccountsPromoConfig = exports.getBulkOperationSuffix = exports.getRemiListUniqueType = exports.getBillListUniqueType = exports.isBulkProcessing = exports.isVerifiedPaymentAccountProviderStatusCode = exports.isVerifiedStatusCode = exports.getActualPaymentDate = exports.showReimbursementPromoPage = exports.showBillPayPromoPage = exports.getSelectedCompanyOfficer = exports.getSpendManagementEffectiveListPeriod = exports.getSnackbar = exports.closeSnackbar = exports.openSnackbar = exports.isAccountUncategorized = exports.getChangedLineItemCountFromLocalData = exports.getTransactionListUIStateByCategoryType = exports.getTransactionsListByCategoryType = exports.retryBankAccountConnectionForOnboarding = exports.sendOnboardingCustomerViewInvite = exports.resetNewOnboardedCustomerId = exports.updateOnboardingCustomerDataInLocalStore = exports.saveOnboardingCustomerDataInLocalStore = exports.saveOnboardingCustomerNotes = exports.saveOnboardingCustomerViewUpdates = exports.updateStatusAfterOnboardingCompleted = exports.updateCustomerCreationStatus = exports.updateOnboardingCustomerListUIState = exports.saveOnboardingCustomerViewUpdateData = exports.clearOnboardingCustomerViewUpdateData = exports.initializeOnboardingCustomerViewUpdateData = exports.getOnboardingEmailGroup = exports.getNewOnboardingCustomerView = exports.getOnboardingCockpitView = exports.toProductTypeStrict = exports.toProductType = exports.saveOnboardingCustomerCompletedStatus = exports.fetchOnboardingCompletedCompanies = exports.updateQBOConnectionPoolExternalConnection = exports.fetchQBOConnectionPool = exports.fetchCompanyOnboardingView = exports.PAYMENT_BUSINESS_DAYS = exports.holidaysFormatted = exports.isHoliday = exports.getYearsList = exports.filterDays = exports.isHolidayToday = exports.getPreviousNthWorkingDay = exports.getNextNthWorkingDay = void 0;
|
|
60
|
+
exports.updateDepositAccount = exports.getCheckDepositDetail = exports.clearCheckDeposit = exports.updateCheckDepositLocalData = exports.depositCheck = exports.fetchDepositAccountDetail = exports.fetchReviewTransferDetail = exports.clearReviewTransferDetail = exports.clearTransferDetail = exports.getTransferDetail = exports.transferMoney = exports.updateDepositToLocalData = exports.updateTransferToLocalData = exports.updateTransferMoneyLocalData = exports.fetchZeniAccountsConfig = exports.fetchDepositAccount = exports.getDepositAccountDetailForPDF = exports.getAllDepositAccounts = exports.getDepositAccountDetail = exports.unlinkPaymentAccount = exports.fetchPaymentAccountList = exports.createCheckingAccount = exports.fetchAccountList = exports.fetchZeniAccountList = exports.getZeniAccountList = exports.getZeniAccountsConfigDetail = exports.fetchOwnerList = exports.fetchRecommendationByEntityName = exports.fetchRecommendationByEntityId = exports.fetchEntityRecommendationsByTransactionId = exports.fetchVendorsFiling1099Download = exports.getVendorFiling1099List = exports.toVendorReportIDType = exports.isVendorsTabVisible = exports.isColumnYTDSpend = exports.updateYTDSelectionUIState = exports.updatePageToken = exports.updateSortUiState = exports.getVendorList = exports.LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT = exports.SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT = exports.NEW_INTERNATIONAL_METHOD_SUBTEXT = exports.BILL_NEW_PAYMENT_METHODS = exports.getInternationalSubConfigCodeKey = exports.shouldEnableCalendarPickerForLastReportSent = exports.canSendMonthEndEmailReport = exports.checkIfLowBalance = exports.isAwaitingMarkAsPaid = exports.isPaymentMethodOutsideZeni = exports.toSameDayAchDisablementConfig = void 0;
|
|
61
|
+
exports.fetchMagicLinkBankNameBySwift = exports.fetchMagicLinkBankNameByRouting = exports.updateMagicLinkInternationalBankAccountLocalStoreData = exports.updateMagicLinkBankAccountLocalStoreData = exports.saveBankAccount = exports.fetchBillAttachment = exports.fetchMagicLinkTenant = exports.getMagicLinkCurrentAddressState = exports.getMagicLinkBankAccountView = exports.getMagicLinkView = exports.initializeAccountMappingView = exports.getAccountMappingView = exports.clearAccountMappingLocalData = exports.saveAccountMappingLocalData = exports.saveAccountMapping = exports.getProductSettingsString = exports.getOnboardingCustomerView = exports.clearOnboardingCustomerViewDataInLocalStore = exports.clearOnboardingCustomerView = exports.saveOnboardingCustomerViewDataInLocalStore = exports.saveOnboardingCompnayOfficerPhoneInLocalStore = exports.updateOnboardingCustomerViewUIState = exports.updateCurrentStep = exports.updateOnboardingCustomerViewLocalStoreData = exports.updateOnboardingCustomerView = exports.updateOnboardingPaymentAccountStatus = exports.updateOnboardingPaymentAccountLoginStatus = exports.updateOnboardingCustomerViewCompleteStatus = exports.updateOnboardingCustomerViewAccountDetails = exports.establishOnboardingPlaidConnection = exports.getOnboardingPlaidLinkToken = exports.fetchOnboardingCustomerSetupView = exports.fetchOnboardingCustomerView = exports.isZeniClearingAccount = exports.ZENI_CLEARING_ACCOUNT = exports.isZeniClearingAccountReport = exports.getCompanyConfig = exports.fetchCompanyConfig = exports.clearTransactionVendorSaveStatus = exports.resetTransactionVendorLocalData = exports.updateTransactionVendorLocalData = exports.saveTransactionVendorSuccessOrFailure = exports.saveTransactionVendor = exports.getTransactionVendorView = exports.getDepositAccountTransactionList = exports.fetchDepositAccountTransactionList = exports.getZeniAccStatements = exports.fetchZeniAccStatementPage = exports.fetchDepositAccountHistoryFailure = exports.fetchDepositAccountHistorySuccess = void 0;
|
|
62
|
+
exports.fetchChargeCardDetail = exports.fetchChargeCardDetailPage = exports.getCreditAccountDetails = exports.getChargeCardRepaymentDetail = exports.updateChargeCardRepaymentLocalStore = exports.initiateChargeCardRepayment = exports.fetchChargeCardRepaymentDetail = exports.clearChargeCardRepaymentDetail = exports.getMyRequestOnHoldChargeCardListWithShippingAddress = exports.getMyPendingActivationChargeCardListView = exports.getChargeCardListView = exports.fetchCreditAccountRepayment = exports.fetchCreditAccount = exports.fetchChargeCardConfig = exports.fetchChargeCardListPage = exports.fetchChargeCardList = exports.fetchDebitCardSummary = exports.getChargeCardBusinessVerificationDetails = exports.companyHealthMetricDropDownOptions = exports.hasCompanyHealthMetricFormFieldChanged = exports.getCompanyHealthMetricView = exports.isCompanyRunwayInfinite = exports.updateChargeCardTransactionAttachments = exports.updateCompanyHealthViewUIState = exports.updateCompanyHealthMetricViewSuccessStatus = exports.updateCompanyHealthMetricViewErrorStatus = exports.updateCompanyHealthMetricLocalStore = exports.saveCompanyHealthMetricById = exports.removeSelectedCompanyId = exports.initializeCompanyHealthMetricViewLocalData = exports.fetchCompanyHealthMetricView = exports.clearCompanyHealthMetricView = exports.updateCompanyHealth = exports.updateCompaniesHealth = exports.fetchCompanyHealthMetricConfig = exports.getCompanyHealthMetricConfig = exports.getUserRoleConfig = exports.fetchUserRoleConfig = exports.clearInternationalWire = exports.deletePaymentInstrument = exports.createPaymentInstrumentUpdateStatus = exports.createPaymentInstrument = exports.fetchInternationalWireDynamicForm = exports.initializeDynamicForm = exports.updateInternationalWireLocalStoreData = exports.initializeInternationalWireLocalData = exports.getInternationalWireView = exports.fetchWiseRedirectStatus = exports.getWiseRedirect = exports.saveMagicLinkAddressInLocalStore = void 0;
|
|
63
|
+
exports.getCardUserOnboardingView = exports.updateChargeCardName = exports.closeChargeCard = exports.unlockChargeCard = exports.lockChargeCard = exports.updatePhysicalChargeCardAttempt = exports.updateChargeCardDetail = exports.updateCashbackDetailUIState = exports.updateChargeCardListUIState = exports.updateChargeCardListSearchText = exports.updateBulkActionCardIds = exports.resetIssueChargeCardForm = exports.updateChargeCardsLocalStore = exports.updateCustomAddressId = exports.getDebitCardSummary = exports.getDebitCardList = exports.fetchDepositAccountListForCards = exports.fetchIssueCardPage = exports.issueChargeCards = exports.toCardType = exports.toShippingAddressType = exports.toCardAddressType = exports.getDepositAccountLimitForChargeCardByDepositAccountId = exports.expressInterestInChargeCard = exports.acceptChargeCardTerms = exports.enableChargeCardAutoPay = exports.fetchChargeCardSetupView = exports.getChargeCardStatements = exports.fetchChargeCardStatementList = exports.getChargeCardSetupViewDetails = exports.getIssueChargeCardView = exports.getDepositAccountListWithDebitCardIssued = exports.toCreditLimitFrequencyCodeType = exports.getZeniDateFromPeriod = exports.getCashbackDetail = exports.toChargeCardSortKeyType = exports.fetchCashbackDetail = exports.fetchChargeCardTransactionList = exports.getChargeCardCVVActivateView = exports.getChargeCardBulkActionView = exports.getChargeCardRowActionView = exports.getChargeCardRecurringExpensesView = exports.getChargeCardRecurringExpensesByCardIds = exports.getDebitCardSetPinView = exports.getChargeCardTransactionAttachmentView = exports.getDepositAccountLimitFetchStateByDepositAccountId = exports.getChargeCardControlDetailView = exports.getChargeCardDetailView = exports.fetchDepositAccountLimit = exports.fetchChargeCardTransactionStatistics = void 0;
|
|
64
|
+
exports.updateJeScheduleLocalDataById = exports.retryExpenseAutomationJESchedule = exports.removeJeScheduleTransactionKey = exports.initializeJeScheduleLocalData = exports.initializeJeAccountSettingsView = exports.ignoreExpenseAutomationJESchedule = exports.fetchExpenseAutomationJESchedulesPage = exports.clearExpenseAutomationJESchedulesView = exports.clearExpenseAutomationJEScheduleLocalData = exports.updateApAgingDetailUIState = exports.getApAgingDetailForVendor = exports.fetchApAgingDetail = exports.updateApAgingUIState = exports.getApAgingReport = exports.fetchApAging = exports.aggregatedReportView = exports.fetchAggregatedReport = exports.toTimeSeriesDuration = exports.convertToTimeSeriesSelectionRange = exports.TIME_SERIES_DURATIONS = exports.anyCardOnHold = exports.getChargeCardById = exports.setCurrentDisplayedCardId = exports.setFirstViewCompleteAfterActivation = exports.setFirstViewAfterActivation = exports.completeCardUserOnboardingActivationWait = exports.startCardUserOnboardingActivationWait = exports.fetchChargeCardsRecurringExpenses = exports.updateChargeCardsSpendLimit = exports.closeChargeCards = exports.unlockChargeCards = exports.lockChargeCards = exports.revokeChargeCardsInvite = exports.updateRowActionCardId = exports.revokeCardInvite = exports.resendCardInvite = exports.updateChargeCardSpendLimitSuccessOrFailure = exports.updateChargeCardSpendLimit = exports.startCVVActivationWait = exports.completeCVVActivationWait = exports.fetchChargeCardTransactionAttachments = exports.updateChargeCardTransactionIsViewReceiptClicked = exports.updateChargeCardTransactionReceiptsShowTickFetchStatus = exports.updateDebitCardPinAttempt = exports.startDebitCardSetPinWait = exports.completeDebitCardSetPinWait = exports.updateChargeCardTransactionUploadReceiptsFetchStatus = exports.saveCardOnboardingUserDetails = exports.updateCardUserOnboardingLocalData = exports.initializeCardUserOnboardingLocalData = void 0;
|
|
65
|
+
exports.updatedJELinkInLocalData = exports.getThirdPartyIDFromQBOURL = exports.getQBOUrlForLink = exports.updatedSelectedJELinkRowIndex = exports.updateAccruedJEScheduleAccruedByListKey = exports.updateScheduleListDownloadState = exports.updateScheduleDetailsLocalData = exports.createNewSchedules = exports.deleteScheduleDetail = exports.saveScheduleDetails = exports.fetchScheduleDetailsPage = exports.getAccruedScheduleDetailsView = exports.getScheduleDetailsView = exports.fetchScheduleDetails = exports.updateSelectedJEScheduleKey = exports.updateScheduleListSortState = exports.updateScheduleListScrollState = exports.updateScheduleListSearchText = exports.updateScheduleListSubTab = exports.toScheduleSubTabType = exports.toScheduleListTabsFileTypeStrict = exports.toScheduleTypesTypeStrict = exports.toScheduleTypesType = exports.getFetchStateForScheduleAccountList = exports.updateScheduleListLocalData = exports.fetchSchedulesAccount = exports.fetchDownloadSchedules = exports.fetchAccruedScheduleList = exports.fetchScheduleList = exports.getAccruedScheduleListReport = exports.getScheduleListReport = exports.ALL_SCHEDULES_TYPES = exports.resetAccruedDetailNewScheduleState = exports.resetSelectedJEAccruedScheduleKey = exports.updateSelectedJEAccruedScheduleKey = exports.updateScheduleAccruedDetailsLocalData = exports.updateLinkBillExpenseLocalData = exports.clearSelectedJELinkRowIndex = exports.fetchRecommendedTransactionRowIndex = exports.updatedJELinkInLocalDataAccruedExpenses = exports.updatedJEAccruedLinkWithRecommendedLocalData = exports.updateAmountsInScheduleAccruedDetail = exports.saveScheduleAccruedDetails = exports.resetJEAccruedLinkInLocalData = exports.fetchScheduleAccruedDetailsPage = exports.fetchScheduleAccruedDetails = exports.cancelScheduleAccruedJournalEntry = exports.deleteScheduleAccruedDetail = exports.createNewSchedulesAccrued = exports.updateJeScheduleTransactionKeys = void 0;
|
|
66
|
+
exports.toRecurringBillFrequency = exports.updateArAgingNodeCollapseState = exports.getArAgingDetailForCustomer = exports.getArAgingReport = exports.updateArAgingDetailUIState = exports.fetchArAgingDetail = exports.updateArAgingUIState = exports.fetchArAging = exports.updateVendorGlobalReviewViewLocalData = exports.toVendorGlobalReviewColumnSortKeyType = exports.getTenantMerchantByMerchantId = exports.getVendorGlobalReviewView = exports.updateVendorGlobalReviewViewUIState = exports.updateSelectedGlobalMerchant = exports.fetchVendorGlobalReviewView = exports.rejectVendorGlobalReview = exports.approveVendorGlobalReview = exports.getGlobalMerchantView = exports.clearGlobalMerchantView = exports.updateCreateGlobalMerchantLocalData = exports.createGlobalMerchant = exports.fetchGlobalMerchantRecommendation = exports.getVendorDetailSelectorView = exports.saveVendorDetailsView = exports.updateReviewVendorDetailLocalData = exports.clearGlobalMerchantAutoCompleteResults = exports.fetchGlobalMerchantAutoCompleteView = exports.updateVendorFirstReviewSortUiState = exports.updateVendorFirstReviewViewLocalData = exports.saveVendorFirstReviewView = exports.clearRecentlySavedErroredVendorData = exports.updateVendorFirstReviewViewPageToken = exports.resetVendorFirstReviewLocalData = exports.updateVendorFirstReviewViewScrollYOffset = exports.fetchVendorFirstReviewAttachments = exports.fetchVendorFirstReviewView = exports.getVendorFirstReviewAttachmentView = exports.getVendorFirstReviewView = exports.getGlobalMerchantAutoCompleteResults = exports.toVendorFirstReviewViewColumnKeyType = exports.getVendorTabView = exports.updateVendorTabViewTab = exports.fetchVendorTabView = exports.resetMarkAsCompleteStatus = exports.markAsCompleteScheduleDetail = exports.getDefaultSelectedTimeframeForScheduleType = exports.getFetchStateForScheduleListByType = exports.updatedJELinkWithRecommendedLocalData = exports.resetJELinkInLocalData = exports.updateAmountsInScheduleDetail = void 0;
|
|
67
|
+
exports.getAuditRuleGroupViewSelectorView = exports.getAuditReportGroupViewSelectorView = exports.clearCardPaymentView = exports.resetCardPaymentErrorStatuses = exports.fetchPaymentSources = exports.addCardPaymentSource = exports.confirmCardSetupIntent = exports.createCardSetupIntent = exports.getAllCardsAndBankPaymentMethods = exports.deleteTag = exports.createTag = exports.fetchTagList = exports.getAllTags = exports.initialTaskDetailLocalData = exports.convertHHMMStrToMinutes = exports.updateTaskFromListView = exports.toDueDateGroupKeyType = exports.toTaskStatusCodeType = exports.toPriorityCodeType = exports.getDueDateValueFromDueDateGroupId = exports.initialTaskDetail = exports.fetchAllTaskGroups = exports.getTaskUpdates = exports.toTaskListGroupByKeyTypeStrict = exports.toTaskListGroupByKeyType = exports.updateTaskGroupName = exports.dragNDropTasks = exports.updateTaskListLocalData = exports.deleteTaskGroup = exports.initiateTaskListLocalData = exports.createNewTaskGroup = exports.bulkUpdateTaskList = exports.discardTaskUpdatesInLocalStore = exports.deleteTask = exports.TASK_LIST_GROUP_BY_CATEGORIES = exports.TASK_LIST_FILTER_CATEGORIES = exports.updateTaskFilters = exports.allTaskPriority = exports.allTaskStatus = exports.updateTaskListUIState = exports.updateTaskListSearchText = exports.archiveTask = exports.saveTaskDetail = exports.saveTaskUpdatesToLocalStore = exports.fetchTaskDetailPage = exports.getTaskDetail = exports.fetchTaskListPage = exports.getAllTasks = exports.getTaskGroupById = exports.toRecurringBillFrequencyStrict = void 0;
|
|
68
|
+
exports.fetchInternationalVerificationForm = exports.createTaskFromTaskGroupTemplate = exports.getCompanyTaskManagerView = exports.fetchCompanyTaskManagerView = exports.getMinAllowedEndDate = exports.toRecurringFrequency = exports.getRecurringEndDateFromCount = exports.updateReferViewed = exports.getRewardsPlanCard = exports.fetchRewardsPlan = exports.resendReferralInvite = exports.updateReferralListSortUiState = exports.saveReferralFormDataInLocalStore = exports.clearReferrals = exports.sendReferralInvite = exports.fetchReferrals = exports.AmountStatusTypes = exports.StatusTypes = exports.toReferralListViewSortKeyType = exports.getInviteFormView = exports.getReferralListView = exports.getNotifications = exports.getLastNotificationTime = exports.pushToastNotification = exports.getNotificationsForSelectedSubTab = exports.getExternalNotificationsForSelectedSubTab = exports.getNotificationView = exports.updateNotificationViewUIState = exports.updateNotificationViewSubTab = exports.updateNotificationViewCurrentTabAndSubTab = exports.updateNotificationViewTabState = exports.updateNotificationViewNotificationStatus = exports.updateNotificationViewAllNotificationsStatus = exports.fetchNotificationUnreadCountSuccess = exports.fetchNotificationUnreadCount = exports.fetchNotificationView = exports.toNotificationTabTypeStrict = exports.toNotificationSubTabTypeStrict = exports.updateCommentsNotificationsStatuses = exports.updateCommentsNotifications = exports.toNotificationModeStrict = exports.fetchZeniAccountsPromoCard = exports.getZeniAccountsPromoCard = exports.getAuthenticationView = exports.fetchCollaborationAuthToken = exports.clearAuditReportGroupViewByCompanyId = exports.saveReasonForAuditRule = exports.fetchAuditReportGroupView = exports.fetchAuditRuleGroupView = exports.getUserFromAllUsers = void 0;
|
|
69
|
+
exports.ALL_AI_CFO_CHARTS_TYPES = exports.getAiCfoSelectorView = exports.getAllQuestionsForChatSession = exports.getQuestionAnswerByIdForChatSession = exports.getAllQuestionAnswersForChatSession = exports.toAiCfoVisualization = exports.clearAiCfo = exports.clearSession = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.setSessions = exports.setNewSession = exports.getAiCfoView = exports.updateResponseState = exports.deleteChatSession = exports.acceptMasterTOS = exports.fetchChatHistory = exports.stopSubmitQuestion = exports.stopSubmit = exports.createSessionAndSubmit = exports.clearLastContextMessage = exports.clearCurrentSessionId = exports.clearAiCfoView = exports.setSession = exports.clearInput = exports.updateCotCollapsedState = exports.updateCurrentInput = exports.updateAiCfoViewScrollPosition = exports.submitQuestion = exports.createSession = exports.fetchChatSessionsForUser = exports.getTreasuryFundsMaximumYield = exports.getTreasurySetupViewDetails = exports.updateTreasuryVideoViewed = exports.updateFundAllocationLocalData = exports.fetchPortfolioAllocation = exports.updatePortfolioAllocation = exports.fetchTreasuryFunds = exports.clearTreasurySetupView = exports.fetchTreasurySetupView = exports.acceptTreasuryTerms = exports.getExpressPayView = exports.resetExpressPayLocalData = exports.submitExpressPay = exports.updateExpressPayFormLocalData = exports.fetchExpressPayInitialDetails = exports.getIntlWireVerificationView = exports.updateVerificationFormLocalData = exports.submitInternationalVerificationForm = void 0;
|
|
70
|
+
exports.getTreasuryTaxLetters = exports.fetchTreasuryTaxLetterList = exports.getTreasuryStatements = exports.fetchTreasuryStatementList = exports.getTreasuryTransferMoney = exports.clearTreasuryTransferMoney = exports.updateTreasuryTransferMoneyLocalData = exports.executeTreasuryTransferMoney = exports.getTreasuryDetail = exports.updateTreasuryTransactionListUIState = exports.fetchTreasuryTransactionList = exports.fetchTreasuryOverviewDetail = exports.toMessageType = exports.toMessageSender = exports.toAiCfoAnswerResponseTypeStrict = exports.toAiCfoAnswerResponseType = exports.toAiCfoAnswerStateTypeStrict = exports.toAiCfoAnswerStateType = exports.toAiCfoChartTypeStrict = exports.toAiCfoChartType = exports.toAiCfoVisualizationTypeStrict = exports.toAiCfoVisualizationType = exports.ALL_AI_CFO_ANSWER_RESPONSE_TYPES = exports.ALL_AI_CFO_ANSWER_STATE_TYPES = exports.ALL_AI_CFO_VISUALIZATION_TYPES = void 0;
|
|
71
71
|
const allowedValue_1 = require("./commonStateTypes/allowedValue");
|
|
72
72
|
Object.defineProperty(exports, "isAllowedValueWithCode", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithCode; } });
|
|
73
73
|
Object.defineProperty(exports, "isAllowedValueWithID", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithID; } });
|
|
@@ -753,6 +753,8 @@ Object.defineProperty(exports, "fetchBulkUploadBatchesSuccess", { enumerable: tr
|
|
|
753
753
|
Object.defineProperty(exports, "fetchExpenseAutomationMissingReceipts", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.fetchMissingReceipts; } });
|
|
754
754
|
Object.defineProperty(exports, "markExpenseAutomationMissingReceiptAsDone", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.markMissingReceiptAsDone; } });
|
|
755
755
|
Object.defineProperty(exports, "pusherBatchStatusUpdate", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.pusherBatchStatusUpdate; } });
|
|
756
|
+
Object.defineProperty(exports, "requestMissingReceiptsTabNavigation", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.requestMissingReceiptsTabNavigation; } });
|
|
757
|
+
Object.defineProperty(exports, "clearMissingReceiptsTabNavigation", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.clearMissingReceiptsTabNavigation; } });
|
|
756
758
|
Object.defineProperty(exports, "setBulkUploadResultsTab", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.setBulkUploadResultsTab; } });
|
|
757
759
|
Object.defineProperty(exports, "setBulkUploadCompletedSubTab", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.setBulkUploadCompletedSubTab; } });
|
|
758
760
|
Object.defineProperty(exports, "setBulkUploadSortConfig", { enumerable: true, get: function () { return missingReceiptsViewReducer_1.setBulkUploadSortConfig; } });
|
|
@@ -6,6 +6,7 @@ const operators_1 = require("rxjs/operators");
|
|
|
6
6
|
const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
|
|
7
7
|
const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
|
|
8
8
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
9
|
+
const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
|
|
9
10
|
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
10
11
|
const fetchMultipleBatchDetailsEpic_1 = require("./fetchMultipleBatchDetailsEpic");
|
|
11
12
|
const MORE_BATCH_PAGE_SIZE = 4;
|
|
@@ -21,7 +22,7 @@ const fetchMoreBatchDetailsEpic = (actions$, state$, zeniAPI) => actions$.pipe((
|
|
|
21
22
|
const batchList = bulkUpload.batchListByPeriod[periodId] ?? [];
|
|
22
23
|
const failedIds = new Set(bulkUpload.failedBatchDetailIds);
|
|
23
24
|
const unfetchedBatchIds = batchList
|
|
24
|
-
.filter((batch) => batch.status
|
|
25
|
+
.filter((batch) => (0, missingReceiptsPayload_1.isBatchListStatusCompleted)(batch.status) &&
|
|
25
26
|
bulkUpload.batchDetailsById[batch.batchId] == null &&
|
|
26
27
|
!failedIds.has(batch.batchId))
|
|
27
28
|
.map((batch) => batch.batchId);
|
package/lib/view/expenseAutomationView/epics/missingReceipts/fetchMultipleBatchDetailsEpic.js
CHANGED
|
@@ -13,6 +13,7 @@ function fetchBatchDetailsByIds(batchIds, zeniAPI) {
|
|
|
13
13
|
if (batchIds.length === 0) {
|
|
14
14
|
return rxjs_1.EMPTY;
|
|
15
15
|
}
|
|
16
|
+
console.log('fetchBatchDetailsByIds', batchIds);
|
|
16
17
|
return (0, rxjs_1.from)(batchIds).pipe((0, operators_1.mergeMap)((batchId) => zeniAPI
|
|
17
18
|
.getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/batches/${batchId}`)
|
|
18
19
|
.pipe((0, operators_1.mergeMap)((response) => {
|
|
@@ -36,7 +37,7 @@ const fetchMultipleBatchDetailsEpic = (actions$, state$, zeniAPI) => actions$.pi
|
|
|
36
37
|
const batchList = action.payload.batchList;
|
|
37
38
|
const { batchDetailsById } = state$.value.expenseAutomationMissingReceiptsViewState.bulkUpload;
|
|
38
39
|
const completedBatchIds = batchList
|
|
39
|
-
.filter((batch) => batch.status
|
|
40
|
+
.filter((batch) => (0, missingReceiptsPayload_1.isBatchListStatusCompleted)(batch.status) &&
|
|
40
41
|
batchDetailsById[batch.batchId] == null)
|
|
41
42
|
.map((batch) => batch.batchId);
|
|
42
43
|
const batchIdsToFetch = completedBatchIds.slice(0, INITIAL_BATCH_PAGE_SIZE);
|
package/lib/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.d.ts
CHANGED
|
@@ -3,7 +3,11 @@ import { Observable } from 'rxjs';
|
|
|
3
3
|
import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
|
|
4
4
|
import { RootState } from '../../../../reducer';
|
|
5
5
|
import { ZeniAPI } from '../../../../zeniAPI';
|
|
6
|
-
import { bulkUploadReceiptsSuccess, clearBulkUpload,
|
|
7
|
-
export type ActionType = ReturnType<typeof bulkUploadReceiptsSuccess> | ReturnType<typeof pusherBatchStatusUpdate> | ReturnType<typeof
|
|
6
|
+
import { bulkUploadReceiptsSuccess, clearBulkUpload, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatches, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation } from '../../reducers/missingReceiptsViewReducer';
|
|
7
|
+
export type ActionType = ReturnType<typeof bulkUploadReceiptsSuccess> | ReturnType<typeof pusherBatchStatusUpdate> | ReturnType<typeof fetchBulkUploadBatchDetailsSuccess> | ReturnType<typeof fetchBulkUploadBatches> | ReturnType<typeof requestMissingReceiptsTabNavigation> | ReturnType<typeof updateTransactions> | ReturnType<typeof clearBulkUpload>;
|
|
8
|
+
/**
|
|
9
|
+
* On Pusher batch completion: refresh batch list (then fetchMultipleBatchDetailsEpic runs),
|
|
10
|
+
* and request switching to the Unmatched tab. Debounced to reduce duplicate refreshes.
|
|
11
|
+
*/
|
|
8
12
|
export declare const pusherBatchStatusCompletionEpic: (actions$: ActionsObservable<ActionType>) => Observable<ActionType>;
|
|
9
13
|
export declare const pollBulkUploadBatchStatusEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
package/lib/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js
CHANGED
|
@@ -7,36 +7,40 @@ const transactionReducer_1 = require("../../../../entity/transaction/transaction
|
|
|
7
7
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
8
8
|
const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
|
|
9
9
|
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/** First poll after upload; then interval while batch not resolved via Pusher or API. */
|
|
11
|
+
const FALLBACK_FIRST_DELAY_MS = 30000;
|
|
12
12
|
const FALLBACK_POLL_INTERVAL_MS = 10000;
|
|
13
|
-
|
|
13
|
+
function isBatchDetailsCompletedStatus(status) {
|
|
14
|
+
return status.toLowerCase() === 'completed';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* On Pusher batch completion: refresh batch list (then fetchMultipleBatchDetailsEpic runs),
|
|
18
|
+
* and request switching to the Unmatched tab. Debounced to reduce duplicate refreshes.
|
|
19
|
+
*/
|
|
20
|
+
const pusherBatchStatusCompletionEpic = (actions$) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.pusherBatchStatusUpdate.match), (0, operators_1.filter)((action) => action.payload.status === 'completed'), (0, operators_1.debounceTime)(300), (0, operators_1.mergeMap)(() => (0, rxjs_1.from)([
|
|
21
|
+
(0, missingReceiptsViewReducer_1.fetchBulkUploadBatches)(true),
|
|
22
|
+
(0, missingReceiptsViewReducer_1.requestMissingReceiptsTabNavigation)({ tab: 'unmatched' }),
|
|
23
|
+
])));
|
|
24
|
+
exports.pusherBatchStatusCompletionEpic = pusherBatchStatusCompletionEpic;
|
|
25
|
+
const pollBulkUploadBatchStatusEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.bulkUploadReceiptsSuccess.match), (0, operators_1.mergeMap)((action) => {
|
|
14
26
|
const { batchId } = action.payload;
|
|
15
|
-
return (0, rxjs_1.timer)(
|
|
16
|
-
(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
const transactionPayloads = (0, missingReceiptsPayload_1.extractTransactionPayloadsFromBatchFiles)(response.data.files);
|
|
25
|
-
if (transactionPayloads.length > 0) {
|
|
26
|
-
actions.push((0, transactionReducer_1.updateTransactions)(transactionPayloads, (value) => value.transaction_id));
|
|
27
|
-
}
|
|
28
|
-
actions.push((0, missingReceiptsViewReducer_1.fetchBulkUploadBatchDetailsSuccess)((0, missingReceiptsPayload_1.toBatchDetails)(response.data, zeniAPI.apiEndPoints.fileMicroServiceBaseUrl)));
|
|
29
|
-
actions.push((0, missingReceiptsViewReducer_1.fetchBulkUploadBatches)(true));
|
|
30
|
-
return (0, rxjs_1.from)(actions);
|
|
27
|
+
return (0, rxjs_1.timer)(FALLBACK_FIRST_DELAY_MS, FALLBACK_POLL_INTERVAL_MS).pipe((0, operators_1.takeUntil)((0, rxjs_1.merge)(actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.clearBulkUpload.match)), actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.pusherBatchStatusUpdate.match), (0, operators_1.filter)((a) => a.payload.batchId === batchId)), actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.fetchBulkUploadBatchDetailsSuccess.match), (0, operators_1.filter)((a) => a.payload.batchId === batchId)))), (0, operators_1.switchMap)(() => zeniAPI
|
|
28
|
+
.getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/batches/${batchId}`)
|
|
29
|
+
.pipe((0, operators_1.mergeMap)((response) => {
|
|
30
|
+
if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
|
|
31
|
+
if (isBatchDetailsCompletedStatus(response.data.status)) {
|
|
32
|
+
const actions = [];
|
|
33
|
+
const transactionPayloads = (0, missingReceiptsPayload_1.extractTransactionPayloadsFromBatchFiles)(response.data.files);
|
|
34
|
+
if (transactionPayloads.length > 0) {
|
|
35
|
+
actions.push((0, transactionReducer_1.updateTransactions)(transactionPayloads, (value) => value.transaction_id));
|
|
31
36
|
}
|
|
37
|
+
actions.push((0, missingReceiptsViewReducer_1.fetchBulkUploadBatchDetailsSuccess)((0, missingReceiptsPayload_1.toBatchDetails)(response.data, zeniAPI.apiEndPoints.fileMicroServiceBaseUrl)));
|
|
38
|
+
actions.push((0, missingReceiptsViewReducer_1.fetchBulkUploadBatches)(true));
|
|
39
|
+
actions.push((0, missingReceiptsViewReducer_1.requestMissingReceiptsTabNavigation)({ tab: 'unmatched' }));
|
|
40
|
+
return (0, rxjs_1.from)(actions);
|
|
32
41
|
}
|
|
33
|
-
return [];
|
|
34
|
-
}), (0, operators_1.catchError)(() => (0, rxjs_1.of)()));
|
|
35
|
-
}), (0, operators_1.takeWhile)((emittedAction) => {
|
|
36
|
-
if (missingReceiptsViewReducer_1.fetchBulkUploadBatchDetailsSuccess.match(emittedAction)) {
|
|
37
|
-
return false;
|
|
38
42
|
}
|
|
39
|
-
return
|
|
40
|
-
},
|
|
43
|
+
return rxjs_1.EMPTY;
|
|
44
|
+
}), (0, operators_1.catchError)(() => (0, rxjs_1.of)()))));
|
|
41
45
|
}));
|
|
42
46
|
exports.pollBulkUploadBatchStatusEpic = pollBulkUploadBatchStatusEpic;
|
|
@@ -81,6 +81,8 @@ export declare function toBatchFile(payload: BatchFilePayload, filesEndPoint?: s
|
|
|
81
81
|
export declare function extractTransactionPayloadsFromBatchFiles(files: BatchFilePayload[]): SupportedTransactionPayload[];
|
|
82
82
|
export declare function toBatchSummary(payload: BatchDetailsResponsePayload['summary']): BatchSummary;
|
|
83
83
|
export declare function toBatchDetails(payload: BatchDetailsResponsePayload, filesEndPoint?: string): BatchDetails;
|
|
84
|
+
/** Batch list `status` is a string from the API — compare case-insensitively. */
|
|
85
|
+
export declare function isBatchListStatusCompleted(status: string): boolean;
|
|
84
86
|
export declare function toBatchListItem(payload: BatchListItemPayload): BatchListItem;
|
|
85
87
|
export interface TransactionSearchQueryPayload {
|
|
86
88
|
search_text: string;
|
|
@@ -4,6 +4,7 @@ exports.toBatchFile = toBatchFile;
|
|
|
4
4
|
exports.extractTransactionPayloadsFromBatchFiles = extractTransactionPayloadsFromBatchFiles;
|
|
5
5
|
exports.toBatchSummary = toBatchSummary;
|
|
6
6
|
exports.toBatchDetails = toBatchDetails;
|
|
7
|
+
exports.isBatchListStatusCompleted = isBatchListStatusCompleted;
|
|
7
8
|
exports.toBatchListItem = toBatchListItem;
|
|
8
9
|
exports.toManualSearchResult = toManualSearchResult;
|
|
9
10
|
const urlPayload_1 = require("../../../commonPayloadTypes/urlPayload");
|
|
@@ -78,6 +79,10 @@ function toBatchDetails(payload, filesEndPoint) {
|
|
|
78
79
|
summary: toBatchSummary(payload.summary),
|
|
79
80
|
};
|
|
80
81
|
}
|
|
82
|
+
/** Batch list `status` is a string from the API — compare case-insensitively. */
|
|
83
|
+
function isBatchListStatusCompleted(status) {
|
|
84
|
+
return status.toLowerCase() === 'completed';
|
|
85
|
+
}
|
|
81
86
|
function toBatchListItem(payload) {
|
|
82
87
|
return {
|
|
83
88
|
batchId: payload.batch_id,
|
|
@@ -36,7 +36,9 @@ export declare const fetchMissingReceipts: import("@reduxjs/toolkit").ActionCrea
|
|
|
36
36
|
batchId: ID;
|
|
37
37
|
}, "expenseAutomationMissingReceiptsView/bulkUploadReceiptsSuccess">, bulkUploadReceiptsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
38
38
|
error: ZeniAPIStatus;
|
|
39
|
-
}, "expenseAutomationMissingReceiptsView/bulkUploadReceiptsFailure">, pusherBatchStatusUpdate: import("@reduxjs/toolkit").ActionCreatorWithPayload<BatchStatus, "expenseAutomationMissingReceiptsView/pusherBatchStatusUpdate">,
|
|
39
|
+
}, "expenseAutomationMissingReceiptsView/bulkUploadReceiptsFailure">, pusherBatchStatusUpdate: import("@reduxjs/toolkit").ActionCreatorWithPayload<BatchStatus, "expenseAutomationMissingReceiptsView/pusherBatchStatusUpdate">, requestMissingReceiptsTabNavigation: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
40
|
+
tab: BulkUploadResultsTab;
|
|
41
|
+
}, "expenseAutomationMissingReceiptsView/requestMissingReceiptsTabNavigation">, clearMissingReceiptsTabNavigation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/clearMissingReceiptsTabNavigation">, fetchBulkUploadBatchDetails: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationMissingReceiptsView/fetchBulkUploadBatchDetails">, fetchBulkUploadBatchDetailsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<BatchDetails, "expenseAutomationMissingReceiptsView/fetchBulkUploadBatchDetailsSuccess">, fetchBulkUploadBatchDetailsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
40
42
|
error: ZeniAPIStatus;
|
|
41
43
|
}, "expenseAutomationMissingReceiptsView/fetchBulkUploadBatchDetailsFailure">, storeBatchDetails: import("@reduxjs/toolkit").ActionCreatorWithPayload<BatchDetails, "expenseAutomationMissingReceiptsView/storeBatchDetails">, batchDetailFetchFailed: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
42
44
|
batchId: ID;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.fetchCompletedTransactionsFailure = exports.fetchCompletedTransactionsSuccess = exports.fetchCompletedTransactions = exports.clearManualSearchResults = exports.searchTransactionsForManualMatchFailure = exports.searchTransactionsForManualMatchSuccess = exports.searchTransactionsForManualMatch = exports.clearBulkUpload = exports.setBulkUploadSortConfig = exports.setBulkUploadCompletedSubTab = exports.setBulkUploadResultsTab = exports.confirmBulkUploadMatchFailure = exports.confirmBulkUploadMatchSuccess = exports.confirmBulkUploadMatch = exports.fetchBulkUploadBatchesFailure = exports.fetchBulkUploadBatchesSuccess = exports.fetchBulkUploadBatches = exports.fetchMoreBatchDetailsFailure = exports.fetchMoreBatchDetailsComplete = exports.fetchMoreBatchDetails = exports.setInitialBatchDetailsLoading = exports.batchDetailFetchFailed = exports.storeBatchDetails = exports.fetchBulkUploadBatchDetailsFailure = exports.fetchBulkUploadBatchDetailsSuccess = exports.fetchBulkUploadBatchDetails = exports.pusherBatchStatusUpdate = exports.bulkUploadReceiptsFailure = exports.bulkUploadReceiptsSuccess = exports.updateBulkUploadProgress = exports.bulkUploadReceipts = exports.clearExpenseAutomationMissingReceiptsView = exports.markMissingReceiptAsDone = exports.updateMissingReceiptsUIState = exports.updateMissingReceiptUploadState = exports.uploadMissingReceiptSuccess = exports.fetchMissingReceiptsFailure = exports.fetchMissingReceiptsSuccess = exports.fetchMissingReceipts = exports.initialState = exports.initialBulkUploadState = exports.getCompletedTransactionsCacheKey = void 0;
|
|
4
|
+
exports.fetchCompletedTransactionsFailure = exports.fetchCompletedTransactionsSuccess = exports.fetchCompletedTransactions = exports.clearManualSearchResults = exports.searchTransactionsForManualMatchFailure = exports.searchTransactionsForManualMatchSuccess = exports.searchTransactionsForManualMatch = exports.clearBulkUpload = exports.setBulkUploadSortConfig = exports.setBulkUploadCompletedSubTab = exports.setBulkUploadResultsTab = exports.confirmBulkUploadMatchFailure = exports.confirmBulkUploadMatchSuccess = exports.confirmBulkUploadMatch = exports.fetchBulkUploadBatchesFailure = exports.fetchBulkUploadBatchesSuccess = exports.fetchBulkUploadBatches = exports.fetchMoreBatchDetailsFailure = exports.fetchMoreBatchDetailsComplete = exports.fetchMoreBatchDetails = exports.setInitialBatchDetailsLoading = exports.batchDetailFetchFailed = exports.storeBatchDetails = exports.fetchBulkUploadBatchDetailsFailure = exports.fetchBulkUploadBatchDetailsSuccess = exports.fetchBulkUploadBatchDetails = exports.clearMissingReceiptsTabNavigation = exports.requestMissingReceiptsTabNavigation = exports.pusherBatchStatusUpdate = exports.bulkUploadReceiptsFailure = exports.bulkUploadReceiptsSuccess = exports.updateBulkUploadProgress = exports.bulkUploadReceipts = exports.clearExpenseAutomationMissingReceiptsView = exports.markMissingReceiptAsDone = exports.updateMissingReceiptsUIState = exports.updateMissingReceiptUploadState = exports.uploadMissingReceiptSuccess = exports.fetchMissingReceiptsFailure = exports.fetchMissingReceiptsSuccess = exports.fetchMissingReceipts = exports.initialState = exports.initialBulkUploadState = exports.getCompletedTransactionsCacheKey = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
7
7
|
const getCompletedTransactionsCacheKey = (periodId, sortKey, sortOrder, subTab) => `completed-${subTab}-${sortKey}-${sortOrder === 'ascending' ? 'asc' : 'desc'}-${periodId}`;
|
|
@@ -31,6 +31,7 @@ exports.initialBulkUploadState = {
|
|
|
31
31
|
};
|
|
32
32
|
exports.initialState = {
|
|
33
33
|
bulkUpload: exports.initialBulkUploadState,
|
|
34
|
+
pendingMissingReceiptsTabNavigation: null,
|
|
34
35
|
uploadReceiptStatusById: {},
|
|
35
36
|
refreshStatus: {
|
|
36
37
|
fetchState: 'Not-Started',
|
|
@@ -187,6 +188,12 @@ const expenseAutomationMissingReceiptsView = (0, toolkit_1.createSlice)({
|
|
|
187
188
|
const batchStatus = action.payload;
|
|
188
189
|
draft.bulkUpload.batchStatusById[batchStatus.batchId] = batchStatus;
|
|
189
190
|
},
|
|
191
|
+
requestMissingReceiptsTabNavigation(draft, action) {
|
|
192
|
+
draft.pendingMissingReceiptsTabNavigation = action.payload.tab;
|
|
193
|
+
},
|
|
194
|
+
clearMissingReceiptsTabNavigation(draft) {
|
|
195
|
+
draft.pendingMissingReceiptsTabNavigation = null;
|
|
196
|
+
},
|
|
190
197
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
191
198
|
fetchBulkUploadBatchDetails(_draft) {
|
|
192
199
|
// trigger epic, no state change needed
|
|
@@ -314,6 +321,7 @@ const expenseAutomationMissingReceiptsView = (0, toolkit_1.createSlice)({
|
|
|
314
321
|
},
|
|
315
322
|
clearBulkUpload(draft) {
|
|
316
323
|
Object.assign(draft.bulkUpload, exports.initialBulkUploadState);
|
|
324
|
+
draft.pendingMissingReceiptsTabNavigation = null;
|
|
317
325
|
},
|
|
318
326
|
searchTransactionsForManualMatch: {
|
|
319
327
|
reducer(draft, action) {
|
|
@@ -418,7 +426,7 @@ const expenseAutomationMissingReceiptsView = (0, toolkit_1.createSlice)({
|
|
|
418
426
|
});
|
|
419
427
|
_a = expenseAutomationMissingReceiptsView.actions, exports.fetchMissingReceipts = _a.fetchMissingReceipts, exports.fetchMissingReceiptsSuccess = _a.fetchMissingReceiptsSuccess, exports.fetchMissingReceiptsFailure = _a.fetchMissingReceiptsFailure, exports.uploadMissingReceiptSuccess = _a.uploadMissingReceiptSuccess, exports.updateMissingReceiptUploadState = _a.updateMissingReceiptUploadState, exports.updateMissingReceiptsUIState = _a.updateMissingReceiptsUIState, exports.markMissingReceiptAsDone = _a.markMissingReceiptAsDone, exports.clearExpenseAutomationMissingReceiptsView = _a.clearExpenseAutomationMissingReceiptsView,
|
|
420
428
|
// Bulk Upload
|
|
421
|
-
exports.bulkUploadReceipts = _a.bulkUploadReceipts, exports.updateBulkUploadProgress = _a.updateBulkUploadProgress, exports.bulkUploadReceiptsSuccess = _a.bulkUploadReceiptsSuccess, exports.bulkUploadReceiptsFailure = _a.bulkUploadReceiptsFailure, exports.pusherBatchStatusUpdate = _a.pusherBatchStatusUpdate, exports.fetchBulkUploadBatchDetails = _a.fetchBulkUploadBatchDetails, exports.fetchBulkUploadBatchDetailsSuccess = _a.fetchBulkUploadBatchDetailsSuccess, exports.fetchBulkUploadBatchDetailsFailure = _a.fetchBulkUploadBatchDetailsFailure, exports.storeBatchDetails = _a.storeBatchDetails, exports.batchDetailFetchFailed = _a.batchDetailFetchFailed, exports.setInitialBatchDetailsLoading = _a.setInitialBatchDetailsLoading, exports.fetchMoreBatchDetails = _a.fetchMoreBatchDetails, exports.fetchMoreBatchDetailsComplete = _a.fetchMoreBatchDetailsComplete, exports.fetchMoreBatchDetailsFailure = _a.fetchMoreBatchDetailsFailure, exports.fetchBulkUploadBatches = _a.fetchBulkUploadBatches, exports.fetchBulkUploadBatchesSuccess = _a.fetchBulkUploadBatchesSuccess, exports.fetchBulkUploadBatchesFailure = _a.fetchBulkUploadBatchesFailure, exports.confirmBulkUploadMatch = _a.confirmBulkUploadMatch, exports.confirmBulkUploadMatchSuccess = _a.confirmBulkUploadMatchSuccess, exports.confirmBulkUploadMatchFailure = _a.confirmBulkUploadMatchFailure, exports.setBulkUploadResultsTab = _a.setBulkUploadResultsTab, exports.setBulkUploadCompletedSubTab = _a.setBulkUploadCompletedSubTab, exports.setBulkUploadSortConfig = _a.setBulkUploadSortConfig, exports.clearBulkUpload = _a.clearBulkUpload, exports.searchTransactionsForManualMatch = _a.searchTransactionsForManualMatch, exports.searchTransactionsForManualMatchSuccess = _a.searchTransactionsForManualMatchSuccess, exports.searchTransactionsForManualMatchFailure = _a.searchTransactionsForManualMatchFailure, exports.clearManualSearchResults = _a.clearManualSearchResults,
|
|
429
|
+
exports.bulkUploadReceipts = _a.bulkUploadReceipts, exports.updateBulkUploadProgress = _a.updateBulkUploadProgress, exports.bulkUploadReceiptsSuccess = _a.bulkUploadReceiptsSuccess, exports.bulkUploadReceiptsFailure = _a.bulkUploadReceiptsFailure, exports.pusherBatchStatusUpdate = _a.pusherBatchStatusUpdate, exports.requestMissingReceiptsTabNavigation = _a.requestMissingReceiptsTabNavigation, exports.clearMissingReceiptsTabNavigation = _a.clearMissingReceiptsTabNavigation, exports.fetchBulkUploadBatchDetails = _a.fetchBulkUploadBatchDetails, exports.fetchBulkUploadBatchDetailsSuccess = _a.fetchBulkUploadBatchDetailsSuccess, exports.fetchBulkUploadBatchDetailsFailure = _a.fetchBulkUploadBatchDetailsFailure, exports.storeBatchDetails = _a.storeBatchDetails, exports.batchDetailFetchFailed = _a.batchDetailFetchFailed, exports.setInitialBatchDetailsLoading = _a.setInitialBatchDetailsLoading, exports.fetchMoreBatchDetails = _a.fetchMoreBatchDetails, exports.fetchMoreBatchDetailsComplete = _a.fetchMoreBatchDetailsComplete, exports.fetchMoreBatchDetailsFailure = _a.fetchMoreBatchDetailsFailure, exports.fetchBulkUploadBatches = _a.fetchBulkUploadBatches, exports.fetchBulkUploadBatchesSuccess = _a.fetchBulkUploadBatchesSuccess, exports.fetchBulkUploadBatchesFailure = _a.fetchBulkUploadBatchesFailure, exports.confirmBulkUploadMatch = _a.confirmBulkUploadMatch, exports.confirmBulkUploadMatchSuccess = _a.confirmBulkUploadMatchSuccess, exports.confirmBulkUploadMatchFailure = _a.confirmBulkUploadMatchFailure, exports.setBulkUploadResultsTab = _a.setBulkUploadResultsTab, exports.setBulkUploadCompletedSubTab = _a.setBulkUploadCompletedSubTab, exports.setBulkUploadSortConfig = _a.setBulkUploadSortConfig, exports.clearBulkUpload = _a.clearBulkUpload, exports.searchTransactionsForManualMatch = _a.searchTransactionsForManualMatch, exports.searchTransactionsForManualMatchSuccess = _a.searchTransactionsForManualMatchSuccess, exports.searchTransactionsForManualMatchFailure = _a.searchTransactionsForManualMatchFailure, exports.clearManualSearchResults = _a.clearManualSearchResults,
|
|
422
430
|
// Completed Transactions
|
|
423
431
|
exports.fetchCompletedTransactions = _a.fetchCompletedTransactions, exports.fetchCompletedTransactionsSuccess = _a.fetchCompletedTransactionsSuccess, exports.fetchCompletedTransactionsFailure = _a.fetchCompletedTransactionsFailure;
|
|
424
432
|
exports.default = expenseAutomationMissingReceiptsView.reducer;
|
|
@@ -68,6 +68,8 @@ export interface ResolvedBatchDetails {
|
|
|
68
68
|
export interface ExpenseAutomationMissingReceiptsViewSelector extends SelectorView {
|
|
69
69
|
bulkUpload: BulkUploadSelectorData;
|
|
70
70
|
completionStatus: CompletionStatusType;
|
|
71
|
+
/** When set, UI should switch bulk-upload sub-tab once (e.g. Unmatched on batch completion). */
|
|
72
|
+
pendingMissingReceiptsTabNavigation: BulkUploadResultsTab | null;
|
|
71
73
|
refreshStatus: FetchStateAndError;
|
|
72
74
|
transactions: SupportedTransaction[];
|
|
73
75
|
uiState: MissingReceiptsViewUIState;
|
|
@@ -9,6 +9,7 @@ const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
|
9
9
|
const tenantSelector_1 = require("../../../entity/tenant/tenantSelector");
|
|
10
10
|
const transactionSelector_1 = require("../../../entity/transaction/transactionSelector");
|
|
11
11
|
const expenseAutomationViewSelectorTypes_1 = require("../selectorTypes/expenseAutomationViewSelectorTypes");
|
|
12
|
+
const missingReceiptsPayload_1 = require("../payload/missingReceiptsPayload");
|
|
12
13
|
const missingReceiptsViewReducer_1 = require("../reducers/missingReceiptsViewReducer");
|
|
13
14
|
function getExpenseAutomationMissingReceiptsView(state) {
|
|
14
15
|
const { expenseAutomationMissingReceiptsViewState, expenseAutomationViewState, transactionState, monthEndCloseChecksState, } = state;
|
|
@@ -54,20 +55,27 @@ function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
54
55
|
const completionStatus = missingReceiptsCompletionStatus != null
|
|
55
56
|
? missingReceiptsCompletionStatus
|
|
56
57
|
: 'incomplete';
|
|
57
|
-
const { bulkUpload } = expenseAutomationMissingReceiptsViewState;
|
|
58
|
+
const { bulkUpload, pendingMissingReceiptsTabNavigation, } = expenseAutomationMissingReceiptsViewState;
|
|
58
59
|
const currentBatchStatus = bulkUpload.currentBatchId != null
|
|
59
60
|
? bulkUpload.batchStatusById[bulkUpload.currentBatchId]
|
|
60
61
|
: undefined;
|
|
61
62
|
const batchList = monthYearPeriodId != null
|
|
62
63
|
? bulkUpload.batchListByPeriod[monthYearPeriodId] ?? []
|
|
63
64
|
: [];
|
|
64
|
-
/**
|
|
65
|
-
const
|
|
66
|
-
|
|
65
|
+
/** API returns newest-first (`sort_order: desc`); primary batch uses oldest-first order. */
|
|
66
|
+
const batchListChronological = (0, orderBy_1.default)(batchList, (b) => new Date(b.createdAt).valueOf(), 'asc');
|
|
67
|
+
/**
|
|
68
|
+
* Primary "Unmatched" batch = first completed batch in chronological order, preferring the
|
|
69
|
+
* first batch that still has un_matched/no_match work when any completed batch has such work
|
|
70
|
+
* (so a newer fully-matched batch does not hide older unmatched receipts). If an earlier batch
|
|
71
|
+
* in that order has no details yet (still loading), we return undefined until it resolves.
|
|
72
|
+
*/
|
|
73
|
+
const primaryBatchIdFromDetailsOrder = getPrimaryBatchIdFromBatchListOrder(batchListChronological, bulkUpload.batchDetailsById, bulkUpload.failedBatchDetailIds);
|
|
67
74
|
/** During upload/matching, the in-flight batch may not appear in batchList yet — prefer currentBatchId. */
|
|
68
75
|
const unmatchedSectionBatchId = bulkUpload.phase === 'matching' || bulkUpload.phase === 'uploading'
|
|
69
|
-
? bulkUpload.currentBatchId ??
|
|
70
|
-
:
|
|
76
|
+
? bulkUpload.currentBatchId ?? primaryBatchIdFromDetailsOrder
|
|
77
|
+
: primaryBatchIdFromDetailsOrder;
|
|
78
|
+
const completedBatchesInApiOrder = batchList.filter((b) => (0, missingReceiptsPayload_1.isBatchListStatusCompleted)(b.status));
|
|
71
79
|
const currentBatchDetails = unmatchedSectionBatchId != null
|
|
72
80
|
? bulkUpload.batchDetailsById[unmatchedSectionBatchId]
|
|
73
81
|
: undefined;
|
|
@@ -113,7 +121,9 @@ function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
113
121
|
}
|
|
114
122
|
: { total: 0, processed: 0, percentage: 0 };
|
|
115
123
|
const batchListFetchState = bulkUpload.batchListFetchState;
|
|
116
|
-
const pastBatches =
|
|
124
|
+
const pastBatches = unmatchedSectionBatchId != null
|
|
125
|
+
? batchList.filter((b) => b.batchId !== unmatchedSectionBatchId)
|
|
126
|
+
: [];
|
|
117
127
|
const pastUnmatchedFiles = pastBatches.flatMap((b) => {
|
|
118
128
|
const details = bulkUpload.batchDetailsById[b.batchId];
|
|
119
129
|
if (details == null) {
|
|
@@ -148,6 +158,7 @@ function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
148
158
|
refreshStatus,
|
|
149
159
|
transactions: sortedTransactions,
|
|
150
160
|
completionStatus,
|
|
161
|
+
pendingMissingReceiptsTabNavigation: pendingMissingReceiptsTabNavigation ?? null,
|
|
151
162
|
bulkUpload: {
|
|
152
163
|
phase: bulkUpload.phase,
|
|
153
164
|
uploadStatus: bulkUpload.uploadStatus,
|
|
@@ -181,6 +192,46 @@ function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
181
192
|
},
|
|
182
193
|
};
|
|
183
194
|
}
|
|
195
|
+
function batchDetailsHasUnmatchedWork(details) {
|
|
196
|
+
return details.files.some((f) => f.status === 'un_matched' || f.status === 'no_match');
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* `batchList` must be in chronological order (oldest first). Picks the primary batch for the
|
|
200
|
+
* top "Unmatched" section. Skips failed detail fetches. Stops at the first batch with no details
|
|
201
|
+
* yet (still loading) so we do not choose a later batch until earlier chronological rows resolve.
|
|
202
|
+
*/
|
|
203
|
+
function getPrimaryBatchIdFromBatchListOrder(batchListChronological, batchDetailsById, failedBatchDetailIds) {
|
|
204
|
+
const failedIds = new Set(failedBatchDetailIds);
|
|
205
|
+
const anyCompletedBatchHasUnmatchedWork = batchListChronological.some((b) => {
|
|
206
|
+
if (failedIds.has(b.batchId)) {
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
const d = batchDetailsById[b.batchId];
|
|
210
|
+
return (d != null &&
|
|
211
|
+
d.status === 'completed' &&
|
|
212
|
+
batchDetailsHasUnmatchedWork(d));
|
|
213
|
+
});
|
|
214
|
+
for (const batch of batchListChronological) {
|
|
215
|
+
if (failedIds.has(batch.batchId)) {
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
const details = batchDetailsById[batch.batchId];
|
|
219
|
+
if (details == null) {
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
if (details.status !== 'completed') {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (anyCompletedBatchHasUnmatchedWork) {
|
|
226
|
+
if (batchDetailsHasUnmatchedWork(details)) {
|
|
227
|
+
return batch.batchId;
|
|
228
|
+
}
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
return batch.batchId;
|
|
232
|
+
}
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
184
235
|
function resolveBatchFile(file, batchId, transactionState) {
|
|
185
236
|
const matchedTransaction = file.matchedTransactionId != null
|
|
186
237
|
? (0, transactionSelector_1.getSupportedTransactionById)(transactionState, file.matchedTransactionId)
|
|
@@ -120,6 +120,11 @@ export interface BulkUploadState {
|
|
|
120
120
|
}
|
|
121
121
|
export interface MissingReceiptsViewState extends FetchedState {
|
|
122
122
|
bulkUpload: BulkUploadState;
|
|
123
|
+
/**
|
|
124
|
+
* When set, the app shell should switch the Missing Receipts sub-tab (e.g. to Unmatched)
|
|
125
|
+
* once, then clear via `clearMissingReceiptsTabNavigation`.
|
|
126
|
+
*/
|
|
127
|
+
pendingMissingReceiptsTabNavigation: BulkUploadResultsTab | null;
|
|
123
128
|
refreshStatus: FetchStateAndError;
|
|
124
129
|
transactionIdsBySelectedPeriod: Record<MonthYearPeriodId, ID[]>;
|
|
125
130
|
uiState: MissingReceiptsViewUIState;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "4.19.37-
|
|
3
|
+
"version": "4.19.37-betaVR17",
|
|
4
4
|
"description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/esm/index.js",
|