@zeniai/client-epic-state 5.2.14-betaRD1 → 5.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/lib/entity/accountRecon/accountReconReducer.d.ts +2 -1
  2. package/lib/entity/accountRecon/accountReconReducer.js +22 -10
  3. package/lib/entity/accountRecon/accountReconSelector.d.ts +1 -0
  4. package/lib/entity/accountRecon/accountReconSelector.js +1 -0
  5. package/lib/epic.d.ts +2 -1
  6. package/lib/epic.js +2 -0
  7. package/lib/esm/entity/accountRecon/accountReconReducer.js +22 -10
  8. package/lib/esm/entity/accountRecon/accountReconSelector.js +1 -0
  9. package/lib/esm/epic.js +2 -0
  10. package/lib/esm/index.js +2 -2
  11. package/lib/esm/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.js +2 -2
  12. package/lib/esm/view/expenseAutomationView/epics/accountRecon/deleteCombinedStatementEpic.js +54 -0
  13. package/lib/esm/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +1 -1
  14. package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateCombinedStatementInfoEpic.js +3 -6
  15. package/lib/esm/view/expenseAutomationView/helpers/reconciliationHelpers.js +12 -0
  16. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +20 -2
  17. package/lib/index.d.ts +2 -2
  18. package/lib/index.js +46 -45
  19. package/lib/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.d.ts +10 -2
  20. package/lib/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.js +1 -1
  21. package/lib/view/expenseAutomationView/epics/accountRecon/deleteCombinedStatementEpic.d.ts +9 -0
  22. package/lib/view/expenseAutomationView/epics/accountRecon/deleteCombinedStatementEpic.js +58 -0
  23. package/lib/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +1 -1
  24. package/lib/view/expenseAutomationView/epics/accountRecon/updateCombinedStatementInfoEpic.js +3 -6
  25. package/lib/view/expenseAutomationView/helpers/reconciliationHelpers.d.ts +6 -0
  26. package/lib/view/expenseAutomationView/helpers/reconciliationHelpers.js +13 -0
  27. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +4 -0
  28. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +6 -1
  29. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +22 -4
  30. package/package.json +1 -1
@@ -42,7 +42,7 @@ const confirmStatementMappingEpic = (actions$, _state$, zeniAPI) => actions$.pip
42
42
  accountId,
43
43
  selectedPeriod,
44
44
  statementUploads: (0, reconciliationPayload_1.transformConfirmStatementMappingPayloadToState)(response.data),
45
- }));
45
+ }), (0, reconciliationViewReducer_1.fetchReconciliation)(selectedPeriod, undefined, true, true));
46
46
  }
47
47
  const mappingConflict = (0, reconciliationPayload_1.isConfirmStatementMappingConflictResponse)(response)
48
48
  ? (0, reconciliationPayload_1.transformConfirmStatementMappingConflictToState)(response)
@@ -0,0 +1,9 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { updateAccountReconDeleteStatement } from '../../../../entity/accountRecon/accountReconReducer';
4
+ import { removeFiles } from '../../../../entity/file/fileReducer';
5
+ import { RootState } from '../../../../rootStateTypes';
6
+ import { ZeniAPI } from '../../../../zeniAPI';
7
+ import { deleteAccountStatementFailure, deleteAccountStatementSuccess, deleteCombinedStatement, fetchReconciliation } from '../../reducers/reconciliationViewReducer';
8
+ export type ActionType = ReturnType<typeof deleteCombinedStatement> | ReturnType<typeof removeFiles> | ReturnType<typeof updateAccountReconDeleteStatement> | ReturnType<typeof deleteAccountStatementFailure> | ReturnType<typeof deleteAccountStatementSuccess> | ReturnType<typeof fetchReconciliation>;
9
+ export declare const deleteCombinedStatementEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteCombinedStatementEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
7
+ const accountReconReducer_1 = require("../../../../entity/accountRecon/accountReconReducer");
8
+ const accountReconState_1 = require("../../../../entity/accountRecon/accountReconState");
9
+ const fileReducer_1 = require("../../../../entity/file/fileReducer");
10
+ const responsePayload_1 = require("../../../../responsePayload");
11
+ const reconciliationHelpers_1 = require("../../helpers/reconciliationHelpers");
12
+ const reconciliationViewReducer_1 = require("../../reducers/reconciliationViewReducer");
13
+ const deleteCombinedStatementEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(reconciliationViewReducer_1.deleteCombinedStatement.match), (0, operators_1.switchMap)((action) => {
14
+ const { accountId, selectedPeriod, fileId } = action.payload;
15
+ let combinedStatementGroupId = action.payload.combinedStatementGroupId;
16
+ if (combinedStatementGroupId === '') {
17
+ const accountRecon = state$.value.expenseAutomationReconciliationViewState
18
+ .accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
19
+ combinedStatementGroupId =
20
+ (0, reconciliationHelpers_1.resolveCombinedStatementGroupId)(accountRecon);
21
+ }
22
+ if (combinedStatementGroupId === '') {
23
+ return (0, rxjs_1.of)((0, reconciliationViewReducer_1.deleteAccountStatementFailure)({
24
+ accountId,
25
+ selectedPeriod,
26
+ error: (0, responsePayload_1.createZeniAPIStatus)('Missing Data', 'No combined statement group id found for delete'),
27
+ }));
28
+ }
29
+ const deleteUrl = `${zeniAPI.apiEndPoints.reconciliationMicroServiceBaseUrl}/2.0/statement-uploads/combined-statement-groups/${combinedStatementGroupId}`;
30
+ return zeniAPI
31
+ .deleteAndGetJSON(deleteUrl)
32
+ .pipe((0, operators_1.mergeMap)((response) => {
33
+ if ((0, responsePayload_1.isSuccessResponse)(response) === true) {
34
+ const actions = [];
35
+ if (fileId != null && fileId !== '') {
36
+ actions.push((0, fileReducer_1.removeFiles)([fileId]));
37
+ }
38
+ if (response.data != null) {
39
+ actions.push((0, accountReconReducer_1.updateAccountReconDeleteStatement)((0, accountReconState_1.toAccountReconKey)(accountId, selectedPeriod), {
40
+ statement_upload: response.data.statement_upload,
41
+ }));
42
+ }
43
+ actions.push((0, reconciliationViewReducer_1.deleteAccountStatementSuccess)({ accountId, selectedPeriod }), (0, reconciliationViewReducer_1.fetchReconciliation)(selectedPeriod, undefined, true, true));
44
+ return (0, rxjs_1.of)(...actions);
45
+ }
46
+ return (0, rxjs_1.of)((0, reconciliationViewReducer_1.deleteAccountStatementFailure)({
47
+ accountId,
48
+ selectedPeriod,
49
+ error: response.status,
50
+ }));
51
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, reconciliationViewReducer_1.deleteAccountStatementFailure)({
52
+ accountId,
53
+ selectedPeriod,
54
+ error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Delete Combined Statement REST API call errored out ' +
55
+ (error instanceof Error ? error.message : String(error))),
56
+ }))));
57
+ }));
58
+ exports.deleteCombinedStatementEpic = deleteCombinedStatementEpic;
@@ -60,7 +60,7 @@ const fetchReconciliationViewEpic = (actions$, state$, zeniAPI) => actions$.pipe
60
60
  updateActions.push((0, accountReducer_1.updateAccounts)(response.data.accounts, 'account_reconciliation'), (0, accountReducer_1.updateAccounts)(response.data.excluded_accounts ?? [], 'excluded_account_reconciliation'), (0, userReducer_1.updateAllUsers)({
61
61
  users: response.data.users ?? [],
62
62
  updateType: 'merge',
63
- }), (0, fileReducer_1.updateFiles)({ files: response.data.files ?? [] }), (0, transactionReducer_1.updateMultipleReconcileTransactions)(allTransactionsPerRecon, 'merge'), (0, accountReconReducer_1.updateAccountRecon)(selectedPeriod, response.data.reconciliation));
63
+ }), (0, fileReducer_1.updateFiles)({ files: response.data.files ?? [] }), (0, transactionReducer_1.updateMultipleReconcileTransactions)(allTransactionsPerRecon, 'merge'), (0, accountReconReducer_1.updateAccountRecon)(selectedPeriod, response.data.reconciliation, accountId == null));
64
64
  const reviewTabLocalData = (0, exports.prepareReviewTabLocalData)(response.data.reconciliation[0]?.transactions?.review ?? []);
65
65
  if (accountId != null) {
66
66
  const selectedTransactionIds = (0, saveReconciliationDetailEpic_1.getTransactionIdFromCheckedMatchedTransactionPayload)(response.data.reconciliation[0].transactions.reconcile);
@@ -6,6 +6,7 @@ const operators_1 = require("rxjs/operators");
6
6
  const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
7
7
  const responsePayload_1 = require("../../../../responsePayload");
8
8
  const mapStatementUpdateLocalDataToRequestBody_1 = require("../../helpers/mapStatementUpdateLocalDataToRequestBody");
9
+ const reconciliationHelpers_1 = require("../../helpers/reconciliationHelpers");
9
10
  const reconciliationPayload_1 = require("../../payload/reconciliationPayload");
10
11
  const reconciliationViewReducer_1 = require("../../reducers/reconciliationViewReducer");
11
12
  const statementParseViewSelector_1 = require("../../selectors/statementParseViewSelector");
@@ -26,12 +27,8 @@ const updateCombinedStatementInfoEpic = (actions$, state$, zeniAPI) => actions$.
26
27
  error: (0, responsePayload_1.createZeniAPIStatus)('Missing Data', 'No statement update data found for combined accounts'),
27
28
  }));
28
29
  }
29
- const combinedStatementGroupId = accountRecon?.combinedStatementGroupId ??
30
- parsedStatementData.statementUpload.statementMeta
31
- .combinedStatementGroupId ??
32
- parsedStatementData.statementUpload.combinedStatementDetails
33
- ?.combinedStatementGroupId;
34
- if (combinedStatementGroupId == null || combinedStatementGroupId === '') {
30
+ const combinedStatementGroupId = (0, reconciliationHelpers_1.resolveCombinedStatementGroupId)(accountRecon);
31
+ if (combinedStatementGroupId === '') {
35
32
  return (0, rxjs_1.of)((0, reconciliationViewReducer_1.submitStatementUpdateFailure)({
36
33
  accountId,
37
34
  selectedPeriod,
@@ -3,10 +3,16 @@ import { AccountType } from '../../../entity/account/accountState';
3
3
  import { ReconciliationDataPayload } from '../../../entity/accountRecon/accountReconPayload';
4
4
  import { TransactionsToReview } from '../../../entity/accountRecon/accountReconState';
5
5
  import { MatchedTransactionPayload } from '../../../entity/transaction/payloadTypes/reconciliationTransactionPayloads';
6
+ import { AccountReconciliationDataWithTransactionFetchState } from '../types/reconciliationViewState';
6
7
  export declare const getAllReviewTransactionsFromReconcilePayload: (reconcilePayload: ReconciliationDataPayload[]) => {
7
8
  allReconciledTransactions: MatchedTransactionPayload[];
8
9
  currencyPayload: CurrencyPayload;
9
10
  }[];
11
+ /**
12
+ * Resolves combined group id from view record fields that may hold it after
13
+ * parse / mapping confirm (top-level, statement meta, or combined details).
14
+ */
15
+ export declare function resolveCombinedStatementGroupId(accountRecon: Pick<AccountReconciliationDataWithTransactionFetchState, 'combinedStatementGroupId' | 'parsedStatementData'> | undefined): string;
10
16
  export declare const isReviewTransactionBillPaymentType: (transaction: TransactionsToReview) => boolean;
11
17
  export declare const isReviewTransactionExpenseType: (transaction: TransactionsToReview) => boolean;
12
18
  export declare const isReviewTransactionDepositType: (transaction: TransactionsToReview) => boolean;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isReviewTransactionCreditCardCreditType = exports.isReviewTransactionCreditCardPaymentType = exports.isReviewTransactionBankTransferType = exports.isReviewTransactionDepositType = exports.isReviewTransactionExpenseType = exports.isReviewTransactionBillPaymentType = exports.getAllReviewTransactionsFromReconcilePayload = void 0;
4
+ exports.resolveCombinedStatementGroupId = resolveCombinedStatementGroupId;
4
5
  const getAllReviewTransactionsFromReconcilePayload = (reconcilePayload) => {
5
6
  const transactionsPerRecon = reconcilePayload.map((reconcile) => {
6
7
  const allReconciledTransactions = [];
@@ -16,6 +17,18 @@ const getAllReviewTransactionsFromReconcilePayload = (reconcilePayload) => {
16
17
  return transactionsPerRecon;
17
18
  };
18
19
  exports.getAllReviewTransactionsFromReconcilePayload = getAllReviewTransactionsFromReconcilePayload;
20
+ /**
21
+ * Resolves combined group id from view record fields that may hold it after
22
+ * parse / mapping confirm (top-level, statement meta, or combined details).
23
+ */
24
+ function resolveCombinedStatementGroupId(accountRecon) {
25
+ return (accountRecon?.combinedStatementGroupId ??
26
+ accountRecon?.parsedStatementData?.statementUpload.statementMeta
27
+ .combinedStatementGroupId ??
28
+ accountRecon?.parsedStatementData?.statementUpload
29
+ .combinedStatementDetails?.combinedStatementGroupId ??
30
+ '');
31
+ }
19
32
  const isReviewTransactionBillPaymentType = (transaction) => {
20
33
  return transaction.recommendedAction.action === 'record_bill_payment';
21
34
  };
@@ -99,6 +99,10 @@ export interface DeleteStatementResponsePayload {
99
99
  };
100
100
  }
101
101
  export type DeleteStatementResponse = ZeniAPIResponse<DeleteStatementResponsePayload>;
102
+ export interface DeleteCombinedStatementResponsePayload extends DeleteStatementResponsePayload {
103
+ deleted_statement_upload_ids: ID[];
104
+ }
105
+ export type DeleteCombinedStatementResponse = ZeniAPIResponse<DeleteCombinedStatementResponsePayload>;
102
106
  export interface UploadStatementDocumentAIPayload {
103
107
  files: FilePayload[];
104
108
  processor_run_id: string;
@@ -95,7 +95,12 @@ export declare const fetchReconciliation: import("@reduxjs/toolkit").ActionCreat
95
95
  fileId: ID;
96
96
  selectedPeriod: MonthYearPeriod;
97
97
  statementUploadId: ID;
98
- }, "expenseAutomationReconciliationView/deleteAccountStatement">, deleteAccountStatementSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
98
+ }, "expenseAutomationReconciliationView/deleteAccountStatement">, deleteCombinedStatement: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
99
+ accountId: ID;
100
+ combinedStatementGroupId: string;
101
+ selectedPeriod: MonthYearPeriod;
102
+ fileId?: ID;
103
+ }, "expenseAutomationReconciliationView/deleteCombinedStatement">, deleteAccountStatementSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
99
104
  accountId: ID;
100
105
  selectedPeriod: MonthYearPeriod;
101
106
  }, "expenseAutomationReconciliationView/deleteAccountStatementSuccess">, deleteAccountStatementFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.resetReparseStatementStatus = exports.reparseStatementFailure = exports.reparseStatementSuccess = exports.reparseStatement = exports.parseStatementFailure = exports.parseStatementSuccess = exports.parseCombinedStatement = exports.parseStatement = exports.uploadAccountStatementFailure = exports.uploadAccountStatementSuccess = exports.uploadAccountStatement = exports.includeAccountInReconciliationFailure = exports.includeAccountInReconciliationSuccess = exports.includeAccountInReconciliation = exports.excludeAccountFromReconciliationFailure = exports.excludeAccountFromReconciliationSuccess = exports.excludeAccountFromReconciliation = exports.deleteAccountStatementFailure = exports.deleteAccountStatementSuccess = exports.deleteAccountStatement = exports.updateAccountReconciliationLocalData = exports.updateReconListScrollPosition = exports.updateSaveReconciliationReviewFetchStatus = exports.saveReconciliationReview = exports.updateReviewTabLocalData = exports.initializeReconciliationReviewTabLocalData = exports.updateReviewTabSortState = exports.updateStatementProcessingFailed = exports.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.updateStatementProcessingBackgroundCompletedSteps = exports.setStatementProcessingDismissedToBackground = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
5
- exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.confirmStatementMappingFailure = exports.confirmStatementMappingSuccess = exports.confirmStatementMapping = exports.clearStatementDateConflict = exports.submitStatementUpdateFailure = exports.submitStatementUpdateSuccess = exports.submitCombinedStatementUpdate = exports.submitStatementUpdate = exports.updateStatementUpdateLocalData = exports.updateParsedStatementData = void 0;
4
+ exports.reparseStatementFailure = exports.reparseStatementSuccess = exports.reparseStatement = exports.parseStatementFailure = exports.parseStatementSuccess = exports.parseCombinedStatement = exports.parseStatement = exports.uploadAccountStatementFailure = exports.uploadAccountStatementSuccess = exports.uploadAccountStatement = exports.includeAccountInReconciliationFailure = exports.includeAccountInReconciliationSuccess = exports.includeAccountInReconciliation = exports.excludeAccountFromReconciliationFailure = exports.excludeAccountFromReconciliationSuccess = exports.excludeAccountFromReconciliation = exports.deleteAccountStatementFailure = exports.deleteAccountStatementSuccess = exports.deleteCombinedStatement = exports.deleteAccountStatement = exports.updateAccountReconciliationLocalData = exports.updateReconListScrollPosition = exports.updateSaveReconciliationReviewFetchStatus = exports.saveReconciliationReview = exports.updateReviewTabLocalData = exports.initializeReconciliationReviewTabLocalData = exports.updateReviewTabSortState = exports.updateStatementProcessingFailed = exports.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.updateStatementProcessingBackgroundCompletedSteps = exports.setStatementProcessingDismissedToBackground = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
5
+ exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.confirmStatementMappingFailure = exports.confirmStatementMappingSuccess = exports.confirmStatementMapping = exports.clearStatementDateConflict = exports.submitStatementUpdateFailure = exports.submitStatementUpdateSuccess = exports.submitCombinedStatementUpdate = exports.submitStatementUpdate = exports.updateStatementUpdateLocalData = exports.updateParsedStatementData = exports.resetReparseStatementStatus = void 0;
6
6
  const toolkit_1 = require("@reduxjs/toolkit");
7
7
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
8
8
  const accountState_1 = require("../../../entity/account/accountState");
@@ -507,6 +507,18 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
507
507
  // Drop sticky parse latch on discard so the drawer shows empty upload UI.
508
508
  accountRecon.statementParseInProgress = false;
509
509
  },
510
+ deleteCombinedStatement: (draft, action) => {
511
+ const { accountId, selectedPeriod } = action.payload;
512
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
513
+ if (accountRecon == null) {
514
+ return;
515
+ }
516
+ accountRecon.statementDeleteStatus = {
517
+ fetchState: 'In-Progress',
518
+ error: undefined,
519
+ };
520
+ accountRecon.statementParseInProgress = false;
521
+ },
510
522
  deleteAccountStatementSuccess: (draft, action) => {
511
523
  const { accountId, selectedPeriod } = action.payload;
512
524
  const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
@@ -917,7 +929,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
917
929
  },
918
930
  });
919
931
  // Export actions
920
- _a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.setStatementProcessingDismissedToBackground = _a.setStatementProcessingDismissedToBackground, exports.updateStatementProcessingBackgroundCompletedSteps = _a.updateStatementProcessingBackgroundCompletedSteps, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateStatementProcessingFailed = _a.updateStatementProcessingFailed, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.parseStatement = _a.parseStatement, exports.parseCombinedStatement = _a.parseCombinedStatement, exports.parseStatementSuccess = _a.parseStatementSuccess, exports.parseStatementFailure = _a.parseStatementFailure, exports.reparseStatement = _a.reparseStatement, exports.reparseStatementSuccess = _a.reparseStatementSuccess, exports.reparseStatementFailure = _a.reparseStatementFailure, exports.resetReparseStatementStatus = _a.resetReparseStatementStatus, exports.updateParsedStatementData = _a.updateParsedStatementData, exports.updateStatementUpdateLocalData = _a.updateStatementUpdateLocalData, exports.submitStatementUpdate = _a.submitStatementUpdate, exports.submitCombinedStatementUpdate = _a.submitCombinedStatementUpdate, exports.submitStatementUpdateSuccess = _a.submitStatementUpdateSuccess, exports.submitStatementUpdateFailure = _a.submitStatementUpdateFailure, exports.clearStatementDateConflict = _a.clearStatementDateConflict, exports.confirmStatementMapping = _a.confirmStatementMapping, exports.confirmStatementMappingSuccess = _a.confirmStatementMappingSuccess, exports.confirmStatementMappingFailure = _a.confirmStatementMappingFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
932
+ _a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.setStatementProcessingDismissedToBackground = _a.setStatementProcessingDismissedToBackground, exports.updateStatementProcessingBackgroundCompletedSteps = _a.updateStatementProcessingBackgroundCompletedSteps, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateStatementProcessingFailed = _a.updateStatementProcessingFailed, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteCombinedStatement = _a.deleteCombinedStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.parseStatement = _a.parseStatement, exports.parseCombinedStatement = _a.parseCombinedStatement, exports.parseStatementSuccess = _a.parseStatementSuccess, exports.parseStatementFailure = _a.parseStatementFailure, exports.reparseStatement = _a.reparseStatement, exports.reparseStatementSuccess = _a.reparseStatementSuccess, exports.reparseStatementFailure = _a.reparseStatementFailure, exports.resetReparseStatementStatus = _a.resetReparseStatementStatus, exports.updateParsedStatementData = _a.updateParsedStatementData, exports.updateStatementUpdateLocalData = _a.updateStatementUpdateLocalData, exports.submitStatementUpdate = _a.submitStatementUpdate, exports.submitCombinedStatementUpdate = _a.submitCombinedStatementUpdate, exports.submitStatementUpdateSuccess = _a.submitStatementUpdateSuccess, exports.submitStatementUpdateFailure = _a.submitStatementUpdateFailure, exports.clearStatementDateConflict = _a.clearStatementDateConflict, exports.confirmStatementMapping = _a.confirmStatementMapping, exports.confirmStatementMappingSuccess = _a.confirmStatementMappingSuccess, exports.confirmStatementMappingFailure = _a.confirmStatementMappingFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
921
933
  // Export reducer
922
934
  exports.default = expenseAutomationReconciliationView.reducer;
923
935
  function isEntityStatementParsing(reconciliation) {
@@ -1044,7 +1056,13 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
1044
1056
  accountReconciliationRecords.reconciliationByAccountID[reconciliation.account_id] = {
1045
1057
  accountId: reconciliation.account_id,
1046
1058
  reconciliationId: reconciliation.reconciliation_id ?? undefined,
1047
- transactionFetchState: { fetchState: 'Not-Started', error: undefined },
1059
+ // Full list fetch does not load transactions; keep per-account detail
1060
+ // fetch status so an in-flight/completed review load is not reset to
1061
+ // Not-Started (review UI treats that as loading).
1062
+ transactionFetchState: oldRecord?.transactionFetchState ?? {
1063
+ fetchState: 'Not-Started',
1064
+ error: undefined,
1065
+ },
1048
1066
  refreshStatus: { fetchState: 'Not-Started', error: undefined },
1049
1067
  statementDeleteStatus: { fetchState: 'Not-Started', error: undefined },
1050
1068
  statementUploadStatus: preserveStatementUploadStatusAfterFetch(oldRecord),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.2.14-betaRD1",
3
+ "version": "5.2.15",
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",