@zeniai/client-epic-state 5.1.68-betaDI2 → 5.1.68-betaNB1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/entity/accountRecon/accountReconReducer.js +4 -0
- package/lib/entity/accountRecon/accountReconState.d.ts +4 -1
- package/lib/entity/accountRecon/accountReconState.js +1 -0
- package/lib/epic.d.ts +2 -1
- package/lib/epic.js +2 -1
- package/lib/esm/entity/accountRecon/accountReconReducer.js +4 -0
- package/lib/esm/entity/accountRecon/accountReconState.js +1 -0
- package/lib/esm/epic.js +2 -1
- package/lib/esm/index.js +5 -5
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.js +37 -0
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +74 -5
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +12 -4
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementEpic.js +10 -2
- package/lib/esm/view/expenseAutomationView/helpers/mapStatementUpdateLocalDataToRequestBody.js +29 -5
- package/lib/esm/view/expenseAutomationView/payload/reconciliationPayload.js +106 -0
- package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +86 -13
- package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +29 -6
- package/lib/esm/view/expenseAutomationView/selectors/statementParseViewSelector.js +51 -10
- package/lib/esm/view/expenseAutomationView/types/reconciliationViewState.js +15 -1
- package/lib/esm/view/notificationPreferencesView/epics/saveNotificationPreferencesEpic.js +12 -9
- package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewPayload.js +2 -7
- package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewReducer.js +2 -47
- package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewSelector.js +0 -9
- package/lib/esm/view/notificationPreferencesView/notificationPreferencesViewState.js +0 -1
- package/lib/index.d.ts +5 -5
- package/lib/index.js +54 -47
- package/lib/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.d.ts +21 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.js +41 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +73 -4
- package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +12 -4
- package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementEpic.js +9 -1
- package/lib/view/expenseAutomationView/helpers/mapStatementUpdateLocalDataToRequestBody.d.ts +2 -0
- package/lib/view/expenseAutomationView/helpers/mapStatementUpdateLocalDataToRequestBody.js +30 -4
- package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +98 -4
- package/lib/view/expenseAutomationView/payload/reconciliationPayload.js +113 -0
- package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +31 -4
- package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +87 -14
- package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +4 -1
- package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +29 -6
- package/lib/view/expenseAutomationView/selectors/statementParseViewSelector.d.ts +4 -2
- package/lib/view/expenseAutomationView/selectors/statementParseViewSelector.js +53 -10
- package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +66 -0
- package/lib/view/expenseAutomationView/types/reconciliationViewState.js +19 -1
- package/lib/view/notificationPreferencesView/epics/saveNotificationPreferencesEpic.d.ts +8 -2
- package/lib/view/notificationPreferencesView/epics/saveNotificationPreferencesEpic.js +9 -6
- package/lib/view/notificationPreferencesView/notificationPreferencesViewPayload.d.ts +0 -1
- package/lib/view/notificationPreferencesView/notificationPreferencesViewPayload.js +2 -7
- package/lib/view/notificationPreferencesView/notificationPreferencesViewReducer.d.ts +1 -6
- package/lib/view/notificationPreferencesView/notificationPreferencesViewReducer.js +3 -48
- package/lib/view/notificationPreferencesView/notificationPreferencesViewSelector.js +0 -9
- package/lib/view/notificationPreferencesView/notificationPreferencesViewState.d.ts +0 -1
- package/lib/view/notificationPreferencesView/notificationPreferencesViewState.js +0 -1
- package/package.json +1 -1
|
@@ -429,7 +429,7 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
429
429
|
}
|
|
430
430
|
},
|
|
431
431
|
uploadAccountStatement: (draft, action) => {
|
|
432
|
-
const { accountId, selectedPeriod } = action.payload;
|
|
432
|
+
const { accountId, selectedPeriod, statementAccountScope } = action.payload;
|
|
433
433
|
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
434
434
|
if (accountRecon != null) {
|
|
435
435
|
accountRecon.statementUploadStatus = {
|
|
@@ -454,6 +454,12 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
454
454
|
fetchState: 'Not-Started',
|
|
455
455
|
error: undefined,
|
|
456
456
|
};
|
|
457
|
+
if (statementAccountScope != null) {
|
|
458
|
+
accountRecon.localData = {
|
|
459
|
+
...accountRecon.localData,
|
|
460
|
+
statementAccountScope,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
457
463
|
}
|
|
458
464
|
},
|
|
459
465
|
uploadAccountStatementSuccess: (draft, action) => {
|
|
@@ -518,6 +524,7 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
518
524
|
};
|
|
519
525
|
if (accountRecon.localData != null) {
|
|
520
526
|
accountRecon.localData.statementUpdateLocalData = undefined;
|
|
527
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = undefined;
|
|
521
528
|
}
|
|
522
529
|
}
|
|
523
530
|
},
|
|
@@ -598,6 +605,7 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
598
605
|
accountRecon.statementParseInProgress = true;
|
|
599
606
|
if (accountRecon.localData != null) {
|
|
600
607
|
accountRecon.localData.statementUpdateLocalData = undefined;
|
|
608
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = undefined;
|
|
601
609
|
}
|
|
602
610
|
}
|
|
603
611
|
},
|
|
@@ -642,20 +650,29 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
642
650
|
draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].parsedStatementData =
|
|
643
651
|
parsedStatementData;
|
|
644
652
|
},
|
|
645
|
-
updateStatementUpdateLocalData:
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
653
|
+
updateStatementUpdateLocalData: {
|
|
654
|
+
prepare(payload) {
|
|
655
|
+
return { payload };
|
|
656
|
+
},
|
|
657
|
+
reducer(draft, action) {
|
|
658
|
+
const { accountId, selectedPeriod, statementUpdateLocalData, statementUploadId, } = action.payload;
|
|
659
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
660
|
+
if (accountRecon == null) {
|
|
661
|
+
return;
|
|
662
|
+
}
|
|
649
663
|
if (accountRecon.localData == null) {
|
|
650
|
-
accountRecon.localData = {
|
|
651
|
-
statementUpdateLocalData,
|
|
652
|
-
};
|
|
664
|
+
accountRecon.localData = {};
|
|
653
665
|
}
|
|
654
|
-
|
|
655
|
-
accountRecon.localData.
|
|
656
|
-
|
|
666
|
+
if (statementUploadId != null && statementUploadId !== '') {
|
|
667
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = {
|
|
668
|
+
...accountRecon.localData.statementUpdateLocalDataByUploadId,
|
|
669
|
+
[statementUploadId]: statementUpdateLocalData,
|
|
670
|
+
};
|
|
671
|
+
return;
|
|
657
672
|
}
|
|
658
|
-
|
|
673
|
+
accountRecon.localData.statementUpdateLocalData =
|
|
674
|
+
statementUpdateLocalData;
|
|
675
|
+
},
|
|
659
676
|
},
|
|
660
677
|
submitStatementUpdate: (draft, action) => {
|
|
661
678
|
const { accountId, selectedPeriod } = action.payload;
|
|
@@ -684,6 +701,7 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
684
701
|
accountRecon.statementProcessingTotalDurationSeconds = undefined;
|
|
685
702
|
if (accountRecon.localData != null) {
|
|
686
703
|
accountRecon.localData.statementUpdateLocalData = undefined;
|
|
704
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = undefined;
|
|
687
705
|
}
|
|
688
706
|
}
|
|
689
707
|
},
|
|
@@ -705,6 +723,52 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
705
723
|
accountRecon.statementDateConflict = null;
|
|
706
724
|
}
|
|
707
725
|
},
|
|
726
|
+
confirmStatementMapping: (draft, action) => {
|
|
727
|
+
const { accountId, selectedPeriod } = action.payload;
|
|
728
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
729
|
+
if (accountRecon != null) {
|
|
730
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
731
|
+
fetchState: 'In-Progress',
|
|
732
|
+
error: undefined,
|
|
733
|
+
};
|
|
734
|
+
accountRecon.confirmStatementMappingConflict = null;
|
|
735
|
+
}
|
|
736
|
+
},
|
|
737
|
+
confirmStatementMappingSuccess: (draft, action) => {
|
|
738
|
+
const { accountId, selectedPeriod, statementUploads } = action.payload;
|
|
739
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
740
|
+
if (accountRecon != null) {
|
|
741
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
742
|
+
fetchState: 'Completed',
|
|
743
|
+
error: undefined,
|
|
744
|
+
};
|
|
745
|
+
accountRecon.confirmStatementMappingConflict = null;
|
|
746
|
+
accountRecon.confirmedCombinedStatementUploads = statementUploads;
|
|
747
|
+
const combinedStatementDetails = accountRecon.parsedStatementData?.statementUpload
|
|
748
|
+
.combinedStatementDetails;
|
|
749
|
+
if (combinedStatementDetails != null) {
|
|
750
|
+
combinedStatementDetails.isMappingConfirmed = true;
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
},
|
|
754
|
+
confirmStatementMappingFailure: (draft, action) => {
|
|
755
|
+
const { accountId, selectedPeriod, mappingConflict } = action.payload;
|
|
756
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
757
|
+
if (accountRecon != null) {
|
|
758
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
759
|
+
fetchState: 'Error',
|
|
760
|
+
error: action.payload.error,
|
|
761
|
+
};
|
|
762
|
+
accountRecon.confirmStatementMappingConflict = mappingConflict ?? null;
|
|
763
|
+
}
|
|
764
|
+
},
|
|
765
|
+
clearConfirmStatementMappingConflict: (draft, action) => {
|
|
766
|
+
const { accountId, selectedPeriod } = action.payload;
|
|
767
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
768
|
+
if (accountRecon != null) {
|
|
769
|
+
accountRecon.confirmStatementMappingConflict = null;
|
|
770
|
+
}
|
|
771
|
+
},
|
|
708
772
|
updateAccountReconciliationLocalData: (draft, action) => {
|
|
709
773
|
const { accountId, selectedPeriod, localData } = action.payload;
|
|
710
774
|
const oldLocalData = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].localData;
|
|
@@ -810,7 +874,7 @@ const expenseAutomationReconciliationView = createSlice({
|
|
|
810
874
|
},
|
|
811
875
|
});
|
|
812
876
|
// Export actions
|
|
813
|
-
export const { fetchReconciliation, fetchReconciliationFailure, fetchReconciliationSuccess, saveReconciliationDetail, saveReconciliationDetailFailure, updateSelectedAccountId, setConnectionInProgressForAccount, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, updateReconcileTabLocalData, updateReconcileTabListSortState, updateReconcileTabListScrollState, saveReconciliationDetailSuccess, updateSelectedTab, updateBalancesLocalData, initialiseLocalDataForSelectedAccountId, clearExpenseAutomationReconciliationView, updateSelectedDrawerAccountId, updateStatementProcessingFailed, updateReviewTabSortState, initializeReconciliationReviewTabLocalData, updateReviewTabLocalData, saveReconciliationReview, updateSaveReconciliationReviewFetchStatus, updateReconListScrollPosition, updateAccountReconciliationLocalData, deleteAccountStatement, deleteAccountStatementSuccess, deleteAccountStatementFailure, excludeAccountFromReconciliation, excludeAccountFromReconciliationSuccess, excludeAccountFromReconciliationFailure, includeAccountInReconciliation, includeAccountInReconciliationSuccess, includeAccountInReconciliationFailure, uploadAccountStatement, uploadAccountStatementSuccess, uploadAccountStatementFailure, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateStatementUpdateLocalData, submitStatementUpdate, submitStatementUpdateSuccess, submitStatementUpdateFailure, clearStatementDateConflict, updateStatementUploadChosen, updateNodeCollapseState, } = expenseAutomationReconciliationView.actions;
|
|
877
|
+
export const { fetchReconciliation, fetchReconciliationFailure, fetchReconciliationSuccess, saveReconciliationDetail, saveReconciliationDetailFailure, updateSelectedAccountId, setConnectionInProgressForAccount, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, updateReconcileTabLocalData, updateReconcileTabListSortState, updateReconcileTabListScrollState, saveReconciliationDetailSuccess, updateSelectedTab, updateBalancesLocalData, initialiseLocalDataForSelectedAccountId, clearExpenseAutomationReconciliationView, updateSelectedDrawerAccountId, updateStatementProcessingFailed, updateReviewTabSortState, initializeReconciliationReviewTabLocalData, updateReviewTabLocalData, saveReconciliationReview, updateSaveReconciliationReviewFetchStatus, updateReconListScrollPosition, updateAccountReconciliationLocalData, deleteAccountStatement, deleteAccountStatementSuccess, deleteAccountStatementFailure, excludeAccountFromReconciliation, excludeAccountFromReconciliationSuccess, excludeAccountFromReconciliationFailure, includeAccountInReconciliation, includeAccountInReconciliationSuccess, includeAccountInReconciliationFailure, uploadAccountStatement, uploadAccountStatementSuccess, uploadAccountStatementFailure, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateStatementUpdateLocalData, submitStatementUpdate, submitStatementUpdateSuccess, submitStatementUpdateFailure, clearStatementDateConflict, confirmStatementMapping, confirmStatementMappingSuccess, confirmStatementMappingFailure, clearConfirmStatementMappingConflict, updateStatementUploadChosen, updateNodeCollapseState, } = expenseAutomationReconciliationView.actions;
|
|
814
878
|
// Export reducer
|
|
815
879
|
export default expenseAutomationReconciliationView.reducer;
|
|
816
880
|
function isEntityStatementParsing(reconciliation) {
|
|
@@ -824,6 +888,7 @@ function isEntityStatementParseTerminal(reconciliation) {
|
|
|
824
888
|
statusCode === 'parsing_failed' ||
|
|
825
889
|
statusCode === 'validation_failed' ||
|
|
826
890
|
statusCode === 'processing_failed' ||
|
|
891
|
+
statusCode === 'parsed_awaiting_mapping' ||
|
|
827
892
|
statusCode === 'deleting' ||
|
|
828
893
|
statusCode === 'deleted');
|
|
829
894
|
}
|
|
@@ -959,6 +1024,12 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
|
|
|
959
1024
|
error: undefined,
|
|
960
1025
|
},
|
|
961
1026
|
statementDateConflict: oldRecord?.statementDateConflict ?? null,
|
|
1027
|
+
confirmStatementMappingStatus: oldRecord?.confirmStatementMappingStatus ?? {
|
|
1028
|
+
fetchState: 'Not-Started',
|
|
1029
|
+
error: undefined,
|
|
1030
|
+
},
|
|
1031
|
+
confirmStatementMappingConflict: oldRecord?.confirmStatementMappingConflict ?? null,
|
|
1032
|
+
confirmedCombinedStatementUploads: oldRecord?.confirmedCombinedStatementUploads,
|
|
962
1033
|
localData: {
|
|
963
1034
|
...oldRecord?.localData,
|
|
964
1035
|
accountSource: account?.reconciliation_source != null
|
|
@@ -1057,6 +1128,8 @@ const updateReconciliationByAccountIDOnIncludeAccount = (draft, accountId, recon
|
|
|
1057
1128
|
statementParseStatus: { fetchState: 'Not-Started', error: undefined },
|
|
1058
1129
|
reparseStatementStatus: { fetchState: 'Not-Started', error: undefined },
|
|
1059
1130
|
statementDateConflict: null,
|
|
1131
|
+
confirmStatementMappingStatus: { fetchState: 'Not-Started', error: undefined },
|
|
1132
|
+
confirmStatementMappingConflict: null,
|
|
1060
1133
|
localData: {},
|
|
1061
1134
|
accountDetectionReason: undefined,
|
|
1062
1135
|
};
|
|
@@ -246,7 +246,28 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
|
|
|
246
246
|
const accountReconState = accountReconForMonthYearPeriod.reconciliationByAccountID[accountID];
|
|
247
247
|
const rawParsedStatementData = accountReconState.parsedStatementData;
|
|
248
248
|
const statementUpdateLocalData = accountReconState.localData?.statementUpdateLocalData;
|
|
249
|
-
const
|
|
249
|
+
const statementUpdateLocalDataByUploadId = accountReconState.localData?.statementUpdateLocalDataByUploadId;
|
|
250
|
+
const parsedStatementDataForView = getParsedStatementDataForView(rawParsedStatementData, statementUpdateLocalData, statementUpdateLocalDataByUploadId);
|
|
251
|
+
const rawStatementUploads = rawParsedStatementData?.statementUploads != null &&
|
|
252
|
+
rawParsedStatementData.statementUploads.length > 0
|
|
253
|
+
? rawParsedStatementData.statementUploads
|
|
254
|
+
: rawParsedStatementData?.statementUpload != null
|
|
255
|
+
? [rawParsedStatementData.statementUpload]
|
|
256
|
+
: [];
|
|
257
|
+
const allCitationTransactions = rawStatementUploads.flatMap((statementUpload) => statementUpload.statementTransactions);
|
|
258
|
+
const statementTransactionPeriodById = rawStatementUploads.length > 0
|
|
259
|
+
? Object.assign({}, ...rawStatementUploads.map((statementUpload) => {
|
|
260
|
+
const uploadId = statementUpload.statementMeta.statementUploadId;
|
|
261
|
+
const localMeta = statementUpdateLocalDataByUploadId?.[uploadId]
|
|
262
|
+
?.statementMeta ??
|
|
263
|
+
(uploadId ===
|
|
264
|
+
rawParsedStatementData?.statementUpload.statementMeta
|
|
265
|
+
.statementUploadId
|
|
266
|
+
? statementUpdateLocalData?.statementMeta
|
|
267
|
+
: undefined);
|
|
268
|
+
return getStatementTransactionPeriodById(statementUpload.statementTransactions, statementUpload.statementMeta, localMeta);
|
|
269
|
+
}))
|
|
270
|
+
: undefined;
|
|
250
271
|
reconList[accountID] = {
|
|
251
272
|
accountConnectionStatus: accountConnectionStatus.status,
|
|
252
273
|
paymentAccountId: accountConnectionStatus.paymentAccountId,
|
|
@@ -257,6 +278,9 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
|
|
|
257
278
|
statementParseStatus: accountReconState.statementParseStatus,
|
|
258
279
|
reparseStatementStatus: accountReconState.reparseStatementStatus,
|
|
259
280
|
statementDateConflict: accountReconState.statementDateConflict,
|
|
281
|
+
confirmStatementMappingStatus: accountReconState.confirmStatementMappingStatus,
|
|
282
|
+
confirmStatementMappingConflict: accountReconState.confirmStatementMappingConflict,
|
|
283
|
+
confirmedCombinedStatementUploads: accountReconState.confirmedCombinedStatementUploads,
|
|
260
284
|
statementUpdateStatus: accountReconState.statementUpdateStatus,
|
|
261
285
|
statementUploadStatus: accountReconState.statementUploadStatus,
|
|
262
286
|
localData: accountReconState.localData,
|
|
@@ -267,11 +291,8 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
|
|
|
267
291
|
statementProcessingTotalDurationSeconds: accountReconState.statementProcessingTotalDurationSeconds,
|
|
268
292
|
statementProcessingFailed: accountReconState.statementProcessingFailed,
|
|
269
293
|
parsedStatementData: parsedStatementDataForView,
|
|
270
|
-
allCitationTransactions
|
|
271
|
-
statementTransactionPeriodById
|
|
272
|
-
? getStatementTransactionPeriodById(rawParsedStatementData.statementUpload.statementTransactions, rawParsedStatementData.statementUpload.statementMeta, accountReconState.localData?.statementUpdateLocalData
|
|
273
|
-
?.statementMeta)
|
|
274
|
-
: undefined,
|
|
294
|
+
allCitationTransactions,
|
|
295
|
+
statementTransactionPeriodById,
|
|
275
296
|
transactionFetchState: reduceAnyFetchState([
|
|
276
297
|
accountReconState.transactionFetchState,
|
|
277
298
|
accountListState.byReportId.accountList,
|
|
@@ -341,6 +362,8 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
|
|
|
341
362
|
statementParseStatus: { fetchState: 'Not-Started' },
|
|
342
363
|
reparseStatementStatus: { fetchState: 'Not-Started' },
|
|
343
364
|
statementDateConflict: null,
|
|
365
|
+
confirmStatementMappingStatus: { fetchState: 'Not-Started' },
|
|
366
|
+
confirmStatementMappingConflict: null,
|
|
344
367
|
localData: {},
|
|
345
368
|
connectionInProgress: false,
|
|
346
369
|
statementParseInProgress: false,
|
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import { date } from '../../../zeniDayJS';
|
|
2
|
+
export function getStatementUploadsFromParsedData(parsedStatementData) {
|
|
3
|
+
if (parsedStatementData == null) {
|
|
4
|
+
return [];
|
|
5
|
+
}
|
|
6
|
+
if (parsedStatementData.statementUploads != null &&
|
|
7
|
+
parsedStatementData.statementUploads.length > 0) {
|
|
8
|
+
return parsedStatementData.statementUploads;
|
|
9
|
+
}
|
|
10
|
+
if (parsedStatementData.statementUpload != null) {
|
|
11
|
+
return [parsedStatementData.statementUpload];
|
|
12
|
+
}
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
export function isCombinedParsedStatementData(parsedStatementData) {
|
|
16
|
+
return (parsedStatementData?.statementUploads != null &&
|
|
17
|
+
parsedStatementData.statementUploads.length > 1);
|
|
18
|
+
}
|
|
2
19
|
export const getEffectiveStatementPeriod = (parsedMeta, localMeta) => ({
|
|
3
20
|
statementStartDate: localMeta?.statementStartDate != null && localMeta.statementStartDate !== ''
|
|
4
21
|
? localMeta.statementStartDate
|
|
@@ -25,24 +42,48 @@ export const filterStatementTransactionsByPeriod = (transactions, statementPerio
|
|
|
25
42
|
}
|
|
26
43
|
return transactions.filter((transaction) => isStatementTransactionInPeriod(transaction.transactionDate, statementStartDate, statementEndDate));
|
|
27
44
|
};
|
|
28
|
-
|
|
45
|
+
const getStatementUploadForView = (statementUpload, statementUpdateLocalData) => {
|
|
46
|
+
const parsedMeta = statementUpload.statementMeta;
|
|
47
|
+
const localMeta = statementUpdateLocalData?.statementMeta;
|
|
48
|
+
const effectiveMeta = localMeta ?? parsedMeta;
|
|
49
|
+
const statementPeriod = getEffectiveStatementPeriod(parsedMeta, localMeta);
|
|
50
|
+
return {
|
|
51
|
+
...statementUpload,
|
|
52
|
+
statementMeta: effectiveMeta,
|
|
53
|
+
statementTransactions: filterStatementTransactionsByPeriod(statementUpload.statementTransactions, statementPeriod),
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export const getParsedStatementDataForView = (parsedStatementData, statementUpdateLocalData, statementUpdateLocalDataByUploadId) => {
|
|
29
57
|
if (parsedStatementData == null) {
|
|
30
58
|
return undefined;
|
|
31
59
|
}
|
|
60
|
+
const statementUploads = getStatementUploadsFromParsedData(parsedStatementData);
|
|
61
|
+
if (statementUploads.length === 0) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
if (isCombinedParsedStatementData(parsedStatementData) === true) {
|
|
65
|
+
const viewedUploads = statementUploads.map((statementUpload) => {
|
|
66
|
+
const uploadId = statementUpload.statementMeta.statementUploadId;
|
|
67
|
+
const localDataForUpload = statementUpdateLocalDataByUploadId?.[uploadId] ??
|
|
68
|
+
(uploadId ===
|
|
69
|
+
parsedStatementData.statementUpload.statementMeta.statementUploadId
|
|
70
|
+
? statementUpdateLocalData
|
|
71
|
+
: undefined);
|
|
72
|
+
return getStatementUploadForView(statementUpload, localDataForUpload);
|
|
73
|
+
});
|
|
74
|
+
const anchorUploadId = parsedStatementData.statementUpload.statementMeta.statementUploadId;
|
|
75
|
+
const viewedAnchor = viewedUploads.find((upload) => upload.statementMeta.statementUploadId === anchorUploadId) ?? viewedUploads[0];
|
|
76
|
+
return {
|
|
77
|
+
statementUpload: viewedAnchor,
|
|
78
|
+
statementUploads: viewedUploads,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
32
81
|
const statementUpload = parsedStatementData.statementUpload;
|
|
33
82
|
if (statementUpload == null) {
|
|
34
83
|
return undefined;
|
|
35
84
|
}
|
|
36
|
-
const parsedMeta = statementUpload.statementMeta;
|
|
37
|
-
const localMeta = statementUpdateLocalData?.statementMeta;
|
|
38
|
-
const effectiveMeta = localMeta ?? parsedMeta;
|
|
39
|
-
const statementPeriod = getEffectiveStatementPeriod(parsedMeta, localMeta);
|
|
40
85
|
return {
|
|
41
|
-
statementUpload:
|
|
42
|
-
...statementUpload,
|
|
43
|
-
statementMeta: effectiveMeta,
|
|
44
|
-
statementTransactions: filterStatementTransactionsByPeriod(statementUpload.statementTransactions, statementPeriod),
|
|
45
|
-
},
|
|
86
|
+
statementUpload: getStatementUploadForView(statementUpload, statementUpdateLocalData),
|
|
46
87
|
};
|
|
47
88
|
};
|
|
48
89
|
export const getStatementTransactionPeriodById = (allParsedTransactions, parsedMeta, localMeta) => {
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import { stringToUnion } from '../../../commonStateTypes/stringToUnion';
|
|
1
|
+
import { stringToUnion, stringToUnionStrict, } from '../../../commonStateTypes/stringToUnion';
|
|
2
|
+
const ALL_STATEMENT_BALANCE_SOURCES = [
|
|
3
|
+
'ocr',
|
|
4
|
+
'prior_recon',
|
|
5
|
+
'default_zero',
|
|
6
|
+
];
|
|
7
|
+
export const toStatementBalanceSource = (v) => stringToUnion(v, ALL_STATEMENT_BALANCE_SOURCES);
|
|
8
|
+
export const toStatementBalanceSourceStrict = (v) => stringToUnionStrict(v ?? '', ALL_STATEMENT_BALANCE_SOURCES);
|
|
2
9
|
export function toReconciliationViewSummary(payload) {
|
|
3
10
|
return {
|
|
4
11
|
accounts: {
|
|
@@ -59,3 +66,10 @@ const RECON_REVIEW_SORT_KEYS = [
|
|
|
59
66
|
];
|
|
60
67
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
61
68
|
const toReconReviewSortKey = (v) => stringToUnion(v, RECON_REVIEW_SORT_KEYS);
|
|
69
|
+
const ALL_STATEMENT_ACCOUNT_SCOPES = [
|
|
70
|
+
'single_account',
|
|
71
|
+
'multi_account',
|
|
72
|
+
];
|
|
73
|
+
export const toStatementAccountScope = (v) => stringToUnion(v, ALL_STATEMENT_ACCOUNT_SCOPES);
|
|
74
|
+
export const toStatementAccountScopeStrict = (v) => stringToUnionStrict(v ?? '', ALL_STATEMENT_ACCOUNT_SCOPES);
|
|
75
|
+
export const STATEMENT_ACCOUNT_SCOPES = ALL_STATEMENT_ACCOUNT_SCOPES;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { EMPTY, of } from 'rxjs';
|
|
2
|
-
import { catchError, filter, finalize, mergeMap, switchMap, takeUntil, withLatestFrom, } from 'rxjs/operators';
|
|
1
|
+
import { EMPTY, concat, of } from 'rxjs';
|
|
2
|
+
import { catchError, debounceTime, filter, finalize, mergeMap, switchMap, takeUntil, withLatestFrom, } from 'rxjs/operators';
|
|
3
3
|
import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
|
|
4
4
|
import { createZeniAPIStatus, isSuccessResponse, } from '../../../responsePayload';
|
|
5
5
|
import { notificationPreferencesUrl } from '../notificationPreferencesEndpoint';
|
|
6
6
|
import { mapPreferencesToPayload, } from '../notificationPreferencesViewPayload';
|
|
7
|
-
import { clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides, saveNotificationPreferences, saveNotificationPreferencesFailure, saveNotificationPreferencesSuccess, } from '../notificationPreferencesViewReducer';
|
|
7
|
+
import { clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides, saveNotificationPreferences, saveNotificationPreferencesFailure, saveNotificationPreferencesSuccess, setGroupFrequency, toggleEventChannel, } from '../notificationPreferencesViewReducer';
|
|
8
8
|
import { getNotificationLocalOverrides } from '../notificationPreferencesViewSelector';
|
|
9
|
-
|
|
9
|
+
const DEBOUNCE_MS = 300;
|
|
10
|
+
export const saveNotificationPreferencesEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter((action) => toggleEventChannel.match(action) || setGroupFrequency.match(action)),
|
|
11
|
+
// Coalesce bursts of toggles into a single PUT. Trade-off: rapid clickers
|
|
12
|
+
// defer saves until they pause. Consider a max-wait wrapper if this
|
|
13
|
+
// becomes a UX problem.
|
|
14
|
+
debounceTime(DEBOUNCE_MS), withLatestFrom(state$),
|
|
10
15
|
// `switchMap` unsubscribes from any in-flight PUT observable when a new
|
|
11
16
|
// debounced batch fires. The prior HTTP request has already left the
|
|
12
17
|
// client — the network call is NOT cancelled — but its response is
|
|
@@ -105,9 +110,7 @@ switchMap(([, state]) => {
|
|
|
105
110
|
// under patch-semantic LWW. Cursor Bugbot 3637969823 + 3641372002.
|
|
106
111
|
takeUntil(actions$.pipe(filter((action) => clearNotificationPreferencesLocalOverrides.match(action) ||
|
|
107
112
|
clearAllNotificationPreferencesView.match(action)))));
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
// loop the epic on itself.
|
|
112
|
-
return request$;
|
|
113
|
+
// Flip savePreferencesState to In-Progress BEFORE the network call so
|
|
114
|
+
// any "saving…" UI can render.
|
|
115
|
+
return concat(of(saveNotificationPreferences()), request$);
|
|
113
116
|
}));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { toNotificationChannel, toNotificationFrequency, } from '../../entity/notificationRegistry/notificationRegistryState';
|
|
2
|
-
const
|
|
2
|
+
const mapEventEnabledByChannel = (raw) => {
|
|
3
3
|
if (raw == null) {
|
|
4
4
|
return {};
|
|
5
5
|
}
|
|
@@ -20,8 +20,7 @@ export const mapPayloadToPreferences = (payload) => {
|
|
|
20
20
|
toNotificationFrequency(frequency),
|
|
21
21
|
]));
|
|
22
22
|
return {
|
|
23
|
-
eventEnabledByChannel:
|
|
24
|
-
groupChannelEnabledByGroupId: mapChannelEnabledMap(payload?.group_channel_enabled_by_group_id),
|
|
23
|
+
eventEnabledByChannel: mapEventEnabledByChannel(payload?.event_enabled_by_channel),
|
|
25
24
|
groupFrequencyByGroupId,
|
|
26
25
|
};
|
|
27
26
|
};
|
|
@@ -30,10 +29,6 @@ export const mapPreferencesToPayload = (preferences) => {
|
|
|
30
29
|
if (Object.keys(preferences.eventEnabledByChannel).length > 0) {
|
|
31
30
|
payload.event_enabled_by_channel = preferences.eventEnabledByChannel;
|
|
32
31
|
}
|
|
33
|
-
if (Object.keys(preferences.groupChannelEnabledByGroupId).length > 0) {
|
|
34
|
-
payload.group_channel_enabled_by_group_id =
|
|
35
|
-
preferences.groupChannelEnabledByGroupId;
|
|
36
|
-
}
|
|
37
32
|
if (Object.keys(preferences.groupFrequencyByGroupId).length > 0) {
|
|
38
33
|
payload.group_frequency_by_group_id = preferences.groupFrequencyByGroupId;
|
|
39
34
|
}
|
|
@@ -18,18 +18,8 @@ const mergePreferences = (base, patch) => {
|
|
|
18
18
|
...channels,
|
|
19
19
|
};
|
|
20
20
|
});
|
|
21
|
-
const groupChannelEnabledByGroupId = {
|
|
22
|
-
...base.groupChannelEnabledByGroupId,
|
|
23
|
-
};
|
|
24
|
-
Object.entries(patch.groupChannelEnabledByGroupId).forEach(([groupId, channels]) => {
|
|
25
|
-
groupChannelEnabledByGroupId[groupId] = {
|
|
26
|
-
...(base.groupChannelEnabledByGroupId[groupId] ?? {}),
|
|
27
|
-
...channels,
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
21
|
return {
|
|
31
22
|
eventEnabledByChannel,
|
|
32
|
-
groupChannelEnabledByGroupId,
|
|
33
23
|
groupFrequencyByGroupId: {
|
|
34
24
|
...base.groupFrequencyByGroupId,
|
|
35
25
|
...patch.groupFrequencyByGroupId,
|
|
@@ -71,38 +61,13 @@ const subtractSavedOverrides = (current, saved) => {
|
|
|
71
61
|
eventEnabledByChannel[eventId] = remainingChannels;
|
|
72
62
|
}
|
|
73
63
|
});
|
|
74
|
-
// Same value-equality subtraction as eventEnabledByChannel above — a
|
|
75
|
-
// group-channel master the user re-flipped while a PUT was in flight must
|
|
76
|
-
// survive so the next debounce cycle re-sends it.
|
|
77
|
-
const groupChannelEnabledByGroupId = {};
|
|
78
|
-
Object.entries(current.groupChannelEnabledByGroupId).forEach(([groupId, channels]) => {
|
|
79
|
-
const savedChannels = saved.groupChannelEnabledByGroupId[groupId];
|
|
80
|
-
if (savedChannels == null) {
|
|
81
|
-
groupChannelEnabledByGroupId[groupId] = channels;
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const remainingChannels = {};
|
|
85
|
-
Object.keys(channels).forEach((channel) => {
|
|
86
|
-
if (!(channel in savedChannels) ||
|
|
87
|
-
channels[channel] !== savedChannels[channel]) {
|
|
88
|
-
remainingChannels[channel] = channels[channel];
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
if (Object.keys(remainingChannels).length > 0) {
|
|
92
|
-
groupChannelEnabledByGroupId[groupId] = remainingChannels;
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
64
|
const groupFrequencyByGroupId = {};
|
|
96
65
|
Object.entries(current.groupFrequencyByGroupId).forEach(([groupId, frequency]) => {
|
|
97
66
|
if (saved.groupFrequencyByGroupId[groupId] !== frequency) {
|
|
98
67
|
groupFrequencyByGroupId[groupId] = frequency;
|
|
99
68
|
}
|
|
100
69
|
});
|
|
101
|
-
return {
|
|
102
|
-
eventEnabledByChannel,
|
|
103
|
-
groupChannelEnabledByGroupId,
|
|
104
|
-
groupFrequencyByGroupId,
|
|
105
|
-
};
|
|
70
|
+
return { eventEnabledByChannel, groupFrequencyByGroupId };
|
|
106
71
|
};
|
|
107
72
|
const notificationPreferencesView = createSlice({
|
|
108
73
|
name: 'notificationPreferencesView',
|
|
@@ -239,16 +204,6 @@ const notificationPreferencesView = createSlice({
|
|
|
239
204
|
draft.preferences = mergePreferences(draft.preferences, patch);
|
|
240
205
|
draft.localOverrides = subtractSavedOverrides(draft.localOverrides, action.payload.savedOverrides);
|
|
241
206
|
},
|
|
242
|
-
setGroupChannelMaster(draft, action) {
|
|
243
|
-
// Mirror of `toggleEventChannel` but scoped to the group-channel master
|
|
244
|
-
// held under `groupChannelEnabledByGroupId[groupId][channel]`.
|
|
245
|
-
const { channel, enabled, groupId } = action.payload;
|
|
246
|
-
const groupMap = {
|
|
247
|
-
...(draft.localOverrides.groupChannelEnabledByGroupId[groupId] ?? {}),
|
|
248
|
-
};
|
|
249
|
-
groupMap[channel] = enabled;
|
|
250
|
-
draft.localOverrides.groupChannelEnabledByGroupId[groupId] = groupMap;
|
|
251
|
-
},
|
|
252
207
|
setGroupFrequency(draft, action) {
|
|
253
208
|
draft.localOverrides.groupFrequencyByGroupId[action.payload.groupId] =
|
|
254
209
|
action.payload.frequency;
|
|
@@ -263,5 +218,5 @@ const notificationPreferencesView = createSlice({
|
|
|
263
218
|
},
|
|
264
219
|
},
|
|
265
220
|
});
|
|
266
|
-
export const { clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides, fetchNotificationPreferencesSuccess, saveNotificationPreferences, saveNotificationPreferencesFailure, saveNotificationPreferencesSuccess,
|
|
221
|
+
export const { clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides, fetchNotificationPreferencesSuccess, saveNotificationPreferences, saveNotificationPreferencesFailure, saveNotificationPreferencesSuccess, setGroupFrequency, toggleEventChannel, } = notificationPreferencesView.actions;
|
|
267
222
|
export default notificationPreferencesView.reducer;
|
|
@@ -9,16 +9,8 @@ export const getEffectiveNotificationPreferences = (state) => {
|
|
|
9
9
|
...channels,
|
|
10
10
|
};
|
|
11
11
|
});
|
|
12
|
-
const mergedGroupChannelEnabledByGroupId = { ...view.preferences.groupChannelEnabledByGroupId };
|
|
13
|
-
Object.entries(view.localOverrides.groupChannelEnabledByGroupId).forEach(([groupId, channels]) => {
|
|
14
|
-
mergedGroupChannelEnabledByGroupId[groupId] = {
|
|
15
|
-
...(view.preferences.groupChannelEnabledByGroupId[groupId] ?? {}),
|
|
16
|
-
...channels,
|
|
17
|
-
};
|
|
18
|
-
});
|
|
19
12
|
return {
|
|
20
13
|
eventEnabledByChannel: mergedEventEnabledByChannel,
|
|
21
|
-
groupChannelEnabledByGroupId: mergedGroupChannelEnabledByGroupId,
|
|
22
14
|
groupFrequencyByGroupId: {
|
|
23
15
|
...view.preferences.groupFrequencyByGroupId,
|
|
24
16
|
...view.localOverrides.groupFrequencyByGroupId,
|
|
@@ -29,6 +21,5 @@ export const getNotificationLocalOverrides = (state) => getView(state).localOver
|
|
|
29
21
|
export const hasUnsavedNotificationPreferences = (state) => {
|
|
30
22
|
const overrides = getView(state).localOverrides;
|
|
31
23
|
return (Object.keys(overrides.eventEnabledByChannel).length > 0 ||
|
|
32
|
-
Object.keys(overrides.groupChannelEnabledByGroupId).length > 0 ||
|
|
33
24
|
Object.keys(overrides.groupFrequencyByGroupId).length > 0);
|
|
34
25
|
};
|
package/lib/index.d.ts
CHANGED
|
@@ -281,7 +281,7 @@ import { UploadStatementDocumentAIPayload, UploadStatementDocumentAIResponse } f
|
|
|
281
281
|
import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
|
|
282
282
|
import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryJeSchedule as retryExpenseAutomationJESchedule, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, updateJESchedulesUIState as updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
|
|
283
283
|
import { acknowledgeBulkUploadConfirmMatchComplete, bulkUploadAutomatchingTimedOut, bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, clearBulkUploadBatchDetailsForScopeChange, clearManualSearchResults, clearMissingReceiptsTabNavigation, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchCompletedTransactions, fetchCompletedTransactionsFailure, fetchCompletedTransactionsSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, markBatchDetailRefreshAttempted, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, refreshBatchDetailsForBatchId, requestMissingReceiptsTabNavigation, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, searchTransactionsForManualMatch, searchTransactionsForManualMatchFailure, searchTransactionsForManualMatchSuccess, setBulkUploadCompletedSubTab, setBulkUploadResultsTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, storeBatchDetails, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
|
|
284
|
-
import { clearStatementDateConflict, deleteAccountStatement, excludeAccountFromReconciliation, fetchReconciliation as fetchReconciliationView, includeAccountInReconciliation, parseStatement, parseStatementFailure, parseStatementSuccess, reparseStatement, reparseStatementFailure, reparseStatementSuccess, resetReparseStatementStatus, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, setStatementProcessingDismissedToBackground, submitStatementUpdate, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateNodeCollapseState, updateParsedStatementData, updateStatementProcessingBackgroundCompletedSteps, updateStatementProcessingFailed, updateStatementUpdateLocalData, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
|
|
284
|
+
import { clearConfirmStatementMappingConflict, clearStatementDateConflict, confirmStatementMapping, confirmStatementMappingFailure, confirmStatementMappingSuccess, deleteAccountStatement, excludeAccountFromReconciliation, fetchReconciliation as fetchReconciliationView, includeAccountInReconciliation, parseStatement, parseStatementFailure, parseStatementSuccess, reparseStatement, reparseStatementFailure, reparseStatementSuccess, resetReparseStatementStatus, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, setStatementProcessingDismissedToBackground, submitStatementUpdate, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateNodeCollapseState, updateParsedStatementData, updateStatementProcessingBackgroundCompletedSteps, updateStatementProcessingFailed, updateStatementUpdateLocalData, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
|
|
285
285
|
import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markCategoryClassRecommendationsFailureForCategorization, markTransactionAsNotMiscategorized, removeTransactionFromAllTabs, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, updateTransactionFilters, uploadTransactionCategorizationReceiptSuccess } from './view/expenseAutomationView/reducers/transactionsViewReducer';
|
|
286
286
|
import { ExpenseAutomationStepDetails, ExpenseAutomationViewSelector } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
|
|
287
287
|
import { ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView } from './view/expenseAutomationView/selectorTypes/fluxAnalysisViewSelectorTypes';
|
|
@@ -301,7 +301,7 @@ import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSortKey,
|
|
|
301
301
|
import { AccountSettingsLocalData, JEScheduleMainTab as ExpenseAutomationJEScheduleMainTab, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
|
|
302
302
|
import { BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, MatchCandidate, MatchSource, MissingReceiptsTab, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toMatchSource, toMissingReceiptsTab } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
303
303
|
import { MissingReceiptsSortKey as ExpenseAutomationMissingReceiptsSortKey, MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState, MissingReceiptsViewUIState as ExpenseAutomationMissingReceiptsViewUIState, toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
304
|
-
import { AccountReconciliationLocalData, ExcludeAccountFromReconciliationPayload, ReconciliationViewTabType as ExpenseAutomationReconciliationViewTab, ParsedStatementData, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReconcileTabLocalData, ReconciliationReviewTabLocalData, SaveReconcileDetailActionPayload as SaveExpenseAutomationReconciliationActionType, StatementDateConflict, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, StatementUpdateLocalData, toReconciliationTabsType } from './view/expenseAutomationView/types/reconciliationViewState';
|
|
304
|
+
import { AccountReconciliationLocalData, CombinedStatementAccount, CombinedStatementAccountSuggestion, CombinedStatementDetails, ConfirmStatementMappingConflict, ConfirmedCombinedStatementUpload, ExcludeAccountFromReconciliationPayload, ReconciliationViewTabType as ExpenseAutomationReconciliationViewTab, ParsedStatementData, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReconcileTabLocalData, ReconciliationReviewTabLocalData, SaveReconcileDetailActionPayload as SaveExpenseAutomationReconciliationActionType, STATEMENT_ACCOUNT_SCOPES, StatementAccountScope, StatementBalanceSource, StatementDateConflict, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, StatementUpdateLocalData, toReconciliationTabsType, toStatementAccountScope, toStatementAccountScopeStrict, toStatementBalanceSource, toStatementBalanceSourceStrict } from './view/expenseAutomationView/types/reconciliationViewState';
|
|
305
305
|
import { TransactionsTab as ExpenseAutomationTransactionsTab, TransactionsViewState as ExpenseAutomationTransactionsViewState, TransactionsViewUIState as ExpenseAutomationTransactionsViewUIState, SupportedTransactionCategorization, TransactionCategorizationLineItemData, TransactionReviewLocalData, TransactionsSortKey, TransactionsTab, toTransactionsTabKey as toExpenseAutomationTransactionsTabKey, toTransactionsSortKey } from './view/expenseAutomationView/types/transactionsViewState';
|
|
306
306
|
import { clearFeatureNotificationView, fetchRegisteredInterests, notifyMeForFeature } from './view/featureNotificationView/featureNotificationViewReducer';
|
|
307
307
|
import { getFeatureNotificationView, getRegisteredInterests, getRegisteredInterestsByFeature, isFeatureInterestRegistered } from './view/featureNotificationView/featureNotificationViewSelector';
|
|
@@ -337,7 +337,7 @@ import { fetchNetBurnOrIncomeStoryCard, updateNetBurnOrIncomeStoryCardSettings }
|
|
|
337
337
|
import { getNetBurnOrIncomeStoryCardReport } from './view/netBurnOrIncomeStoryCard/netBurnOrIncomeStoryCardSelector';
|
|
338
338
|
import { AccountingMethod, NetBurnOrIncomeStoryCardReport } from './view/netBurnOrIncomeStoryCard/netBurnOrIncomeStoryCardSelectorTypes';
|
|
339
339
|
import { AverageMonthsCount, NetBurnOrIncomeRunway, NetBurnOrIncomeStoryCardState, TimeSpanIdForAverage } from './view/netBurnOrIncomeStoryCard/netBurnOrIncomeStoryCardState';
|
|
340
|
-
import { clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides,
|
|
340
|
+
import { clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides, setGroupFrequency, toggleEventChannel } from './view/notificationPreferencesView/notificationPreferencesViewReducer';
|
|
341
341
|
import { getEffectiveNotificationPreferences, getNotificationLocalOverrides, getNotificationPreferencesSaveState, hasUnsavedNotificationPreferences } from './view/notificationPreferencesView/notificationPreferencesViewSelector';
|
|
342
342
|
import { NotificationPreferences } from './view/notificationPreferencesView/notificationPreferencesViewState';
|
|
343
343
|
import { fetchNotificationUnreadCount, fetchNotificationUnreadCountSuccess, fetchNotificationView, updateNotificationViewAllNotificationsStatus, updateNotificationViewCurrentTabAndSubTab, updateNotificationViewNotificationStatus, updateNotificationViewSubTab, updateNotificationViewTabState, updateNotificationViewUIState } from './view/notificationView/notificationViewReducer';
|
|
@@ -679,7 +679,7 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
|
|
|
679
679
|
export { ClassesViewSelectorReportV2 };
|
|
680
680
|
export { BalancesTimeseries, TrendTimeseries, BalanceKind };
|
|
681
681
|
export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, MonthCloseCheckProgressJson, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
|
|
682
|
-
export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, DEFAULT_COMPLETED_SUB_TAB, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleMainTab, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, clearBulkUploadBatchDetailsForScopeChange, markBatchDetailRefreshAttempted, refreshBatchDetailsForBatchId, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, getLastTransferEntryReplacement, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, getReparseStatementStatusByAccountId, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, updateStatementProcessingFailed, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, submitStatementUpdate, clearStatementDateConflict, StatementDateConflict, updateStatementUpdateLocalData, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, ParsedStatementData, StatementUpdateLocalData, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, };
|
|
682
|
+
export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, DEFAULT_COMPLETED_SUB_TAB, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleMainTab, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, clearBulkUploadBatchDetailsForScopeChange, markBatchDetailRefreshAttempted, refreshBatchDetailsForBatchId, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, getLastTransferEntryReplacement, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, getReparseStatementStatusByAccountId, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, updateStatementProcessingFailed, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, CombinedStatementAccount, CombinedStatementAccountSuggestion, CombinedStatementDetails, ConfirmStatementMappingConflict, ConfirmedCombinedStatementUpload, STATEMENT_ACCOUNT_SCOPES, StatementAccountScope, StatementBalanceSource, toStatementAccountScope, toStatementAccountScopeStrict, toStatementBalanceSource, toStatementBalanceSourceStrict, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, submitStatementUpdate, clearStatementDateConflict, confirmStatementMapping, confirmStatementMappingSuccess, confirmStatementMappingFailure, clearConfirmStatementMappingConflict, StatementDateConflict, updateStatementUpdateLocalData, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, ParsedStatementData, StatementUpdateLocalData, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, };
|
|
683
683
|
export { JEScheduleLocalData };
|
|
684
684
|
export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, JEScheduledTransactionWithFailedEntries, };
|
|
685
685
|
export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateTransactionFilters, updateSelectedCheckboxTransactionIds, markCategoryClassRecommendationsFailureForCategorization, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, createTransferEntry, createTransferEntryFailure, createTransferEntryReplacedTransaction, createTransferEntrySuccess, resetCreateTransferEntryStatus, clearTransferEntryRouteReplacement, fetchAccountsForTransferFlow, removeTransactionFromAllTabs, clearExpenseAutomationTransactionsView, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };
|
|
@@ -908,7 +908,7 @@ export { ExternalNotificationData, NotificationGroup, NotificationActivityType,
|
|
|
908
908
|
export { NotificationView, NotificationViewUIState, NotificationTabState, NotificationTabType, NotificationSubTabType, toNotificationSubTabTypeStrict, toNotificationTabTypeStrict, fetchNotificationView, fetchNotificationUnreadCount, fetchNotificationUnreadCountSuccess, updateNotificationViewAllNotificationsStatus, updateNotificationViewNotificationStatus, updateNotificationViewTabState, updateNotificationViewCurrentTabAndSubTab, updateNotificationViewSubTab, updateNotificationViewUIState, getNotificationView, getExternalNotificationsForSelectedSubTab, getNotificationsForSelectedSubTab, };
|
|
909
909
|
export { clearFeatureNotificationView, fetchRegisteredInterests, notifyMeForFeature, getFeatureNotificationView, getRegisteredInterests, getRegisteredInterestsByFeature, isFeatureInterestRegistered, FeatureInterest, FeatureNotificationViewState, };
|
|
910
910
|
export { pushToastNotification, ToastNotification, ToastNotificationPayload, getLastNotificationTime, getNotifications, };
|
|
911
|
-
export { getEffectiveNotificationPreferences, getNotificationLocalOverrides, getNotificationPreferencesSaveState, getNotificationRegistry, hasUnsavedNotificationPreferences, NotificationChannel, NotificationFrequency, NotificationPreferences, NotificationRegistry, RegistryNotificationEvent, RegistryNotificationGroup, clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides,
|
|
911
|
+
export { getEffectiveNotificationPreferences, getNotificationLocalOverrides, getNotificationPreferencesSaveState, getNotificationRegistry, hasUnsavedNotificationPreferences, NotificationChannel, NotificationFrequency, NotificationPreferences, NotificationRegistry, RegistryNotificationEvent, RegistryNotificationGroup, clearAllNotificationPreferencesView, clearNotificationPreferencesLocalOverrides, setGroupFrequency, toggleEventChannel, toNotificationChannel, toNotificationFrequency, };
|
|
912
912
|
export { getReferralListView, getInviteFormView, ReferralListSelectorView, ReferralViewState, InviteCompanyLocalData, ReferralInvitation, ReferralListViewSortKey, ReferralViewUIState, toReferralListViewSortKeyType, ReferralStatus, ReferralAmountStatus, StatusTypes, AmountStatusTypes, DEFAULT_REFERRER_AMOUNT, fetchReferrals, sendReferralInvite, clearReferrals, saveReferralFormDataInLocalStore, updateReferralListSortUiState, resendReferralInvite, fetchRewardsPlan, RewardsPlanCardReport, getRewardsPlanCard, updateReferViewed, RewardsPlanData, };
|
|
913
913
|
export { ALL_WEEK_DAYS, DayOfWeek, RecurringDatePickerOptions, RecurringFrequencyType, SEMI_WEEKLY_REQUIRED_DAYS_COUNT, getMinAllowedEndDate, getRecurringEndDateFromCount, toDayOfWeek, toRecurringFrequency, };
|
|
914
914
|
export { fetchCockpitContext, fetchCompanyTaskManagerView, fetchTaskManagerMetrics, CompanyTaskManagerSelectorView, CompanyTaskManagerViewUIState, TaskManagerMetrics, getCompanyTaskManagerView, TaskWithCompanyDetail, createTaskFromTaskGroupTemplate, TaskGroupTemplate, };
|