@zeniai/client-epic-state 5.0.92-beta0ND → 5.0.92-betaNB2

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 (107) hide show
  1. package/lib/commonStateTypes/animations.d.ts +1 -1
  2. package/lib/commonStateTypes/animations.js +0 -1
  3. package/lib/commonStateTypes/viewAndReport/agingReportStateTypes.d.ts +1 -1
  4. package/lib/entity/accountRecon/accountReconPayload.d.ts +20 -1
  5. package/lib/entity/accountRecon/accountReconPayload.js +23 -1
  6. package/lib/entity/accountRecon/accountReconSelector.d.ts +6 -1
  7. package/lib/entity/accountRecon/accountReconSelector.js +5 -0
  8. package/lib/entity/accountRecon/accountReconState.d.ts +19 -0
  9. package/lib/entity/company/companyPayload.d.ts +0 -4
  10. package/lib/entity/company/companyPayload.js +0 -4
  11. package/lib/entity/company/companyStateTypes.d.ts +0 -4
  12. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.d.ts +7 -0
  13. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +9 -0
  14. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +7 -0
  15. package/lib/entity/paymentAccount/paymentAccountSelector.d.ts +0 -1
  16. package/lib/entity/paymentAccount/paymentAccountSelector.js +0 -4
  17. package/lib/entity/tenant/epic/deleteConnectionEpic.d.ts +1 -1
  18. package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.d.ts +1 -1
  19. package/lib/entity/tenant/epic/saveConnectorCredentialsEpic.d.ts +3 -3
  20. package/lib/entity/tenant/epic/saveOAuthConnectionEpic.d.ts +1 -1
  21. package/lib/entity/tenant/tenantPayload.d.ts +0 -1
  22. package/lib/entity/tenant/tenantReducer.d.ts +25 -38
  23. package/lib/entity/tenant/tenantReducer.js +5 -65
  24. package/lib/entity/tenant/tenantState.d.ts +0 -1
  25. package/lib/epic.d.ts +3 -6
  26. package/lib/epic.js +3 -7
  27. package/lib/esm/commonStateTypes/animations.js +0 -1
  28. package/lib/esm/entity/accountRecon/accountReconPayload.js +23 -1
  29. package/lib/esm/entity/accountRecon/accountReconSelector.js +5 -0
  30. package/lib/esm/entity/company/companyPayload.js +0 -4
  31. package/lib/esm/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +9 -0
  32. package/lib/esm/entity/paymentAccount/paymentAccountSelector.js +0 -3
  33. package/lib/esm/entity/tenant/tenantReducer.js +3 -63
  34. package/lib/esm/epic.js +3 -7
  35. package/lib/esm/index.js +8 -11
  36. package/lib/esm/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +34 -0
  37. package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +42 -0
  38. package/lib/esm/view/expenseAutomationView/payload/reconciliationPayload.js +73 -0
  39. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +98 -4
  40. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +20 -0
  41. package/lib/esm/view/expenseAutomationView/types/reconciliationViewState.js +20 -0
  42. package/lib/esm/view/fileView/epic/deleteFileEpic.js +2 -2
  43. package/lib/esm/view/fileView/epic/deleteFileListEpic.js +2 -2
  44. package/lib/esm/view/fileView/epic/updateFileNameEpic.js +2 -2
  45. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewReducer.js +50 -217
  46. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewSelector.js +1 -7
  47. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewState.js +0 -12
  48. package/lib/esm/view/spendManagement/commonSetup/setupViewReducer.js +52 -105
  49. package/lib/esm/view/spendManagement/commonSetup/setupViewSelector.js +1 -6
  50. package/lib/index.d.ts +12 -16
  51. package/lib/index.js +37 -49
  52. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.d.ts +6 -0
  53. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +38 -0
  54. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.d.ts +19 -0
  55. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +46 -0
  56. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +83 -1
  57. package/lib/view/expenseAutomationView/payload/reconciliationPayload.js +75 -0
  58. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +35 -3
  59. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +99 -5
  60. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +5 -1
  61. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +20 -0
  62. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +128 -0
  63. package/lib/view/expenseAutomationView/types/reconciliationViewState.js +21 -0
  64. package/lib/view/fileView/epic/deleteFileEpic.js +1 -1
  65. package/lib/view/fileView/epic/deleteFileListEpic.js +1 -1
  66. package/lib/view/fileView/epic/updateFileNameEpic.js +1 -1
  67. package/lib/view/onboardingView/customerView/onboardingCustomerViewPayload.d.ts +0 -3
  68. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.d.ts +4 -41
  69. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.js +51 -219
  70. package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.d.ts +1 -5
  71. package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.js +2 -11
  72. package/lib/view/onboardingView/customerView/onboardingCustomerViewState.d.ts +0 -40
  73. package/lib/view/onboardingView/customerView/onboardingCustomerViewState.js +1 -13
  74. package/lib/view/spendManagement/commonSetup/setupViewReducer.d.ts +2 -28
  75. package/lib/view/spendManagement/commonSetup/setupViewReducer.js +53 -106
  76. package/lib/view/spendManagement/commonSetup/setupViewSelector.d.ts +2 -7
  77. package/lib/view/spendManagement/commonSetup/setupViewSelector.js +1 -6
  78. package/lib/view/spendManagement/commonSetup/setupViewState.d.ts +0 -19
  79. package/lib/view/vendorFiling1099/vendorFiling1099List/vendorFiling1099ListState.d.ts +1 -1
  80. package/package.json +1 -1
  81. package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.d.ts +0 -21
  82. package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.js +0 -54
  83. package/lib/esm/entity/tenant/epic/initEmailConnectOAuthEpic.js +0 -50
  84. package/lib/esm/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +0 -42
  85. package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +0 -29
  86. package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +0 -40
  87. package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +0 -52
  88. package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +0 -59
  89. package/lib/esm/view/spendManagement/commonSetup/kycKybAutofillActions.js +0 -14
  90. package/lib/esm/view/spendManagement/commonSetup/kycKybParseMapper.js +0 -205
  91. package/lib/esm/view/spendManagement/commonSetup/types/kycKybAutofill.js +0 -28
  92. package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.d.ts +0 -7
  93. package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +0 -46
  94. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.d.ts +0 -8
  95. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +0 -33
  96. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.d.ts +0 -9
  97. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +0 -44
  98. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.d.ts +0 -28
  99. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +0 -56
  100. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.d.ts +0 -30
  101. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +0 -63
  102. package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.d.ts +0 -33
  103. package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.js +0 -17
  104. package/lib/view/spendManagement/commonSetup/kycKybParseMapper.d.ts +0 -24
  105. package/lib/view/spendManagement/commonSetup/kycKybParseMapper.js +0 -213
  106. package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.d.ts +0 -125
  107. package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.js +0 -32
@@ -9,7 +9,7 @@ import { MatchedTransactionPayload } from '../../../entity/transaction/payloadTy
9
9
  import { UserPayload } from '../../../entity/user/userPayload';
10
10
  import { RootState } from '../../../reducer';
11
11
  import { ZeniAPIResponse } from '../../../responsePayload';
12
- import { BalancesLocalData, SaveReconcileDetailActionPayload } from '../types/reconciliationViewState';
12
+ import { BalancesLocalData, ParsedStatementData, SaveReconcileDetailActionPayload, StatementUpdateLocalData, StatementUpdateLocalDataPayload } from '../types/reconciliationViewState';
13
13
  export interface DetectionInfoPayload {
14
14
  account_id: string;
15
15
  bank_balance: number | null;
@@ -31,6 +31,24 @@ interface ExclusionInfoPayload {
31
31
  export interface ExcludedAccountPayload extends AccountAndPaymentAccountPayload {
32
32
  exclusion_info: ExclusionInfoPayload;
33
33
  }
34
+ export interface ReconciliationSummaryPayload {
35
+ accounts: {
36
+ done: number;
37
+ failed: number;
38
+ in_progress: number;
39
+ total: number;
40
+ };
41
+ accounts_to_connect_count: number;
42
+ auto_matched: {
43
+ matched_txns: number;
44
+ total_txns: number;
45
+ };
46
+ needs_review: {
47
+ account_count: number;
48
+ txn_count: number;
49
+ };
50
+ time_saved_percentage: number;
51
+ }
34
52
  export interface ReconciliationPayload {
35
53
  accounts: AccountAndPaymentAccountPayload[];
36
54
  files: FilePayload[];
@@ -39,6 +57,7 @@ export interface ReconciliationPayload {
39
57
  detection_info?: DetectionInfoPayload;
40
58
  detection_reason?: string;
41
59
  excluded_accounts?: ExcludedAccountPayload[];
60
+ summary?: ReconciliationSummaryPayload;
42
61
  }
43
62
  export type ReconciliationResponse = ZeniAPIResponse<ReconciliationPayload>;
44
63
  export interface SaveReconciliationReviewPayload {
@@ -98,4 +117,67 @@ export interface UploadStatementResponsePayload {
98
117
  };
99
118
  }
100
119
  export type UploadStatementResponse = ZeniAPIResponse<UploadStatementResponsePayload>;
120
+ export interface BoundingBoxPayload {
121
+ bottom: number;
122
+ left: number;
123
+ right: number;
124
+ top: number;
125
+ }
126
+ export interface CitationPayload {
127
+ bounding_boxes: BoundingBoxPayload[];
128
+ page: number;
129
+ reference_text: string;
130
+ }
131
+ export interface StatementTransactionPayload {
132
+ amount: number;
133
+ citation: CitationPayload[];
134
+ is_user_added: boolean;
135
+ is_user_edited: boolean;
136
+ statement_transaction_id: string;
137
+ transaction_date: string;
138
+ transaction_direction: 'debit' | 'credit';
139
+ transaction_memo: string;
140
+ }
141
+ export interface ReconciliationMetaPayload {
142
+ end_date: string;
143
+ reconciliation_id: string;
144
+ start_date: string;
145
+ status: string;
146
+ }
147
+ export interface StatementMetaPayload {
148
+ closing_balance: number;
149
+ opening_balance: number;
150
+ statement_data_status: StatusCodeWithLabelPayload;
151
+ statement_end_date: string;
152
+ statement_start_date: string;
153
+ statement_status: StatusCodeWithLabelPayload;
154
+ statement_upload_id: string;
155
+ total_deposits: number;
156
+ total_payments: number;
157
+ }
158
+ export interface AccountInfoPayload {
159
+ account_id: string;
160
+ account_name: string;
161
+ account_type: string;
162
+ currency_code: string;
163
+ last_4_digits: string | null;
164
+ }
165
+ export interface FileInfoPayload {
166
+ file_id: string;
167
+ file_name: string;
168
+ signed_url: string;
169
+ }
170
+ export interface StatementUploadPayload {
171
+ account: AccountInfoPayload;
172
+ file: FileInfoPayload;
173
+ statement_meta: StatementMetaPayload;
174
+ statement_transactions: StatementTransactionPayload[];
175
+ }
176
+ export interface ParseStatementResponsePayload {
177
+ reconciliation: ReconciliationMetaPayload;
178
+ statement_upload: StatementUploadPayload;
179
+ }
180
+ export type ParseStatementResponse = ZeniAPIResponse<ParseStatementResponsePayload>;
181
+ export declare function transformParseStatementPayloadToState(payload: ParseStatementResponsePayload): ParsedStatementData;
182
+ export declare function transformStatementUpdateStateToPayload(localData: StatementUpdateLocalData): StatementUpdateLocalDataPayload;
101
183
  export {};
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createSaveReconciliationPayloadBasedOnActionAndMethod = createSaveReconciliationPayloadBasedOnActionAndMethod;
4
+ exports.transformParseStatementPayloadToState = transformParseStatementPayloadToState;
5
+ exports.transformStatementUpdateStateToPayload = transformStatementUpdateStateToPayload;
4
6
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
5
7
  const accountReconPayload_1 = require("../../../entity/accountRecon/accountReconPayload");
6
8
  const reconciliationTransactionPayloads_1 = require("../../../entity/transaction/payloadTypes/reconciliationTransactionPayloads");
@@ -70,3 +72,76 @@ function createReviewTransactionPayload(accountReconciliationEntity) {
70
72
  });
71
73
  return reviewTransactionsPayload;
72
74
  }
75
+ function transformParseStatementPayloadToState(payload) {
76
+ return {
77
+ statementUpload: {
78
+ account: {
79
+ accountId: payload.statement_upload.account.account_id,
80
+ accountName: payload.statement_upload.account.account_name,
81
+ accountType: payload.statement_upload.account.account_type,
82
+ currencyCode: payload.statement_upload.account.currency_code,
83
+ last4Digits: payload.statement_upload.account.last_4_digits,
84
+ },
85
+ file: {
86
+ fileId: payload.statement_upload.file.file_id,
87
+ fileName: payload.statement_upload.file.file_name,
88
+ signedUrl: payload.statement_upload.file.signed_url,
89
+ },
90
+ statementMeta: {
91
+ closingBalance: payload.statement_upload.statement_meta.closing_balance,
92
+ openingBalance: payload.statement_upload.statement_meta.opening_balance,
93
+ statementDataStatus: payload.statement_upload.statement_meta.statement_data_status,
94
+ statementEndDate: payload.statement_upload.statement_meta.statement_end_date,
95
+ statementStartDate: payload.statement_upload.statement_meta.statement_start_date,
96
+ statementStatus: payload.statement_upload.statement_meta.statement_status,
97
+ statementUploadId: payload.statement_upload.statement_meta.statement_upload_id,
98
+ totalDeposits: payload.statement_upload.statement_meta.total_deposits,
99
+ totalPayments: payload.statement_upload.statement_meta.total_payments,
100
+ },
101
+ statementTransactions: payload.statement_upload.statement_transactions.map((txn) => ({
102
+ amount: txn.amount,
103
+ citations: txn.citation.map((c) => ({
104
+ boundingBoxes: c.bounding_boxes,
105
+ page: c.page,
106
+ referenceText: c.reference_text,
107
+ })),
108
+ isUserAdded: txn.is_user_added,
109
+ isUserEdited: txn.is_user_edited,
110
+ statementTransactionId: txn.statement_transaction_id,
111
+ transactionDate: txn.transaction_date,
112
+ transactionDirection: txn.transaction_direction,
113
+ transactionMemo: txn.transaction_memo,
114
+ })),
115
+ },
116
+ };
117
+ }
118
+ function transformStatementUpdateStateToPayload(localData) {
119
+ const { statementMeta, statementTransactions } = localData;
120
+ return {
121
+ statement_meta: {
122
+ opening_balance: statementMeta.openingBalance,
123
+ statement_end_date: statementMeta.statementEndDate,
124
+ statement_start_date: statementMeta.statementStartDate,
125
+ total_deposits: statementMeta.totalDeposits,
126
+ total_payments: statementMeta.totalPayments,
127
+ },
128
+ statement_transactions: {
129
+ added: statementTransactions.added.map((txn) => ({
130
+ amount: txn.amount,
131
+ transaction_date: txn.transactionDate,
132
+ transaction_direction: txn.transactionDirection,
133
+ transaction_memo: txn.transactionMemo,
134
+ })),
135
+ deleted_ids: statementTransactions.deletedIds,
136
+ updated: statementTransactions.updated
137
+ .filter((txn) => txn.statementTransactionId != null)
138
+ .map((txn) => ({
139
+ amount: txn.amount,
140
+ statement_transaction_id: txn.statementTransactionId,
141
+ transaction_date: txn.transactionDate,
142
+ transaction_direction: txn.transactionDirection,
143
+ transaction_memo: txn.transactionMemo,
144
+ })),
145
+ },
146
+ };
147
+ }
@@ -5,7 +5,7 @@ import { MonthYearPeriod } from '../../../commonStateTypes/timePeriod';
5
5
  import { ReconciliationDataPayload } from '../../../entity/accountRecon/accountReconPayload';
6
6
  import { ZeniAPIStatus } from '../../../responsePayload';
7
7
  import { ExcludedAccountFromReconciliationPayload, ReconciliationPayload, UploadStatementDocumentAIPayload } from '../payload/reconciliationPayload';
8
- import { AccountReconciliationLocalData, ActionFetchStates, ExcludeAccountFromReconciliationPayload, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReviewTabLocalData, ReconciliationTabsState, ReconciliationViewState, ReconciliationViewTabType, SaveReconcileDetailActionPayload, SaveReconciliationDetailFailurePayload, TransactionSummary } from '../types/reconciliationViewState';
8
+ import { AccountReconciliationLocalData, ActionFetchStates, ExcludeAccountFromReconciliationPayload, ParsedStatementData, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReviewTabLocalData, ReconciliationTabsState, ReconciliationViewState, ReconciliationViewTabType, SaveReconcileDetailActionPayload, SaveReconciliationDetailFailurePayload, StatementUpdateLocalData, TransactionSummary } from '../types/reconciliationViewState';
9
9
  export declare const initialReconciliationTabsState: ReconciliationTabsState;
10
10
  export declare const initialActionFetchState: ActionFetchStates;
11
11
  export declare const initialState: ReconciliationViewState;
@@ -52,7 +52,9 @@ export declare const fetchReconciliation: import("@reduxjs/toolkit").ActionCreat
52
52
  variancePercentage?: number;
53
53
  }, "expenseAutomationReconciliationView/updateBalancesLocalData">, initialiseLocalDataForSelectedAccountId: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationReconciliationView/initialiseLocalDataForSelectedAccountId">, clearExpenseAutomationReconciliationView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationReconciliationView/clearExpenseAutomationReconciliationView">, updateSelectedDrawerAccountId: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
54
54
  selectedDrawerAccountId?: ID;
55
- }, "expenseAutomationReconciliationView/updateSelectedDrawerAccountId">, updateReviewTabSortState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
55
+ }, "expenseAutomationReconciliationView/updateSelectedDrawerAccountId">, updateStatementProcessingFailed: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
56
+ statementProcessingFailed: boolean;
57
+ }, "expenseAutomationReconciliationView/updateStatementProcessingFailed">, updateReviewTabSortState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
56
58
  sortKey: ReconReviewSortKey;
57
59
  sortOrder: SortOrder;
58
60
  }, "expenseAutomationReconciliationView/updateReviewTabSortState">, initializeReconciliationReviewTabLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[localData: Record<string, ReconciliationReviewTabLocalData>], {
@@ -108,7 +110,37 @@ export declare const fetchReconciliation: import("@reduxjs/toolkit").ActionCreat
108
110
  accountId: ID;
109
111
  error: ZeniAPIStatus;
110
112
  selectedPeriod: MonthYearPeriod;
111
- }, "expenseAutomationReconciliationView/uploadAccountStatementFailure">, updateStatementUploadChosen: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
113
+ }, "expenseAutomationReconciliationView/uploadAccountStatementFailure">, parseStatement: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
114
+ accountId: ID;
115
+ selectedPeriod: MonthYearPeriod;
116
+ statementUploadId: ID;
117
+ }, "expenseAutomationReconciliationView/parseStatement">, parseStatementSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
118
+ accountId: ID;
119
+ selectedPeriod: MonthYearPeriod;
120
+ }, "expenseAutomationReconciliationView/parseStatementSuccess">, parseStatementFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
121
+ accountId: ID;
122
+ error: ZeniAPIStatus;
123
+ selectedPeriod: MonthYearPeriod;
124
+ }, "expenseAutomationReconciliationView/parseStatementFailure">, updateParsedStatementData: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
125
+ accountId: ID;
126
+ parsedStatementData: ParsedStatementData;
127
+ selectedPeriod: MonthYearPeriod;
128
+ }, "expenseAutomationReconciliationView/updateParsedStatementData">, updateStatementUpdateLocalData: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
129
+ accountId: ID;
130
+ selectedPeriod: MonthYearPeriod;
131
+ statementUpdateLocalData: StatementUpdateLocalData;
132
+ }, "expenseAutomationReconciliationView/updateStatementUpdateLocalData">, submitStatementUpdate: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
133
+ accountId: ID;
134
+ selectedPeriod: MonthYearPeriod;
135
+ statementUploadId: string;
136
+ }, "expenseAutomationReconciliationView/submitStatementUpdate">, submitStatementUpdateSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
137
+ accountId: ID;
138
+ selectedPeriod: MonthYearPeriod;
139
+ }, "expenseAutomationReconciliationView/submitStatementUpdateSuccess">, submitStatementUpdateFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
140
+ accountId: ID;
141
+ error: ZeniAPIStatus;
142
+ selectedPeriod: MonthYearPeriod;
143
+ }, "expenseAutomationReconciliationView/submitStatementUpdateFailure">, updateStatementUploadChosen: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
112
144
  statementUploadChosen: boolean;
113
145
  }, "expenseAutomationReconciliationView/updateStatementUploadChosen">, updateNodeCollapseState: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
114
146
  collapsed: boolean;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.updateNodeCollapseState = exports.updateStatementUploadChosen = 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.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
4
+ exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.submitStatementUpdateFailure = exports.submitStatementUpdateSuccess = exports.submitStatementUpdate = exports.updateStatementUpdateLocalData = exports.updateParsedStatementData = exports.parseStatementFailure = exports.parseStatementSuccess = 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.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
7
7
  const accountState_1 = require("../../../entity/account/accountState");
8
8
  const accountReconState_1 = require("../../../entity/accountRecon/accountReconState");
9
+ const reconciliationViewState_1 = require("../types/reconciliationViewState");
9
10
  // Initial state
10
11
  exports.initialReconciliationTabsState = {
11
12
  balances: {
@@ -71,6 +72,7 @@ exports.initialState = {
71
72
  refreshStatus: { fetchState: 'Not-Started', error: undefined },
72
73
  actionFetchState: exports.initialActionFetchState,
73
74
  selectedAccountId: undefined,
75
+ statementProcessingFailed: false,
74
76
  statementUploadChosen: false,
75
77
  reconListUIState: {
76
78
  nodeCollapseState: {},
@@ -79,6 +81,7 @@ exports.initialState = {
79
81
  },
80
82
  },
81
83
  excludedAccountIDs: [],
84
+ summary: undefined,
82
85
  };
83
86
  // Create slice with reducers
84
87
  const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
@@ -147,7 +150,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
147
150
  fetchReconciliationSuccess: {
148
151
  reducer(draft, action) {
149
152
  if (action.payload.accountId == null) {
150
- updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? []);
153
+ updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? [], action.payload.reconciliation.summary);
151
154
  }
152
155
  else if (action.payload.reconciliation.reconciliation.length > 0 &&
153
156
  action.payload.reconciliation.accounts.length > 0) {
@@ -291,6 +294,10 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
291
294
  updateSelectedDrawerAccountId: (draft, action) => {
292
295
  draft.selectedDrawerAccountId = action.payload.selectedDrawerAccountId;
293
296
  },
297
+ updateStatementProcessingFailed: (draft, action) => {
298
+ draft.statementProcessingFailed =
299
+ action.payload.statementProcessingFailed;
300
+ },
294
301
  initialiseLocalDataForSelectedAccountId: () => { },
295
302
  updateSelectedTab: (draft, action) => {
296
303
  const { selectedTab } = action.payload;
@@ -382,10 +389,16 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
382
389
  },
383
390
  uploadAccountStatement: (draft, action) => {
384
391
  const { accountId, selectedPeriod } = action.payload;
385
- draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementUploadStatus = {
392
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
393
+ accountRecon.statementUploadStatus = {
386
394
  fetchState: 'In-Progress',
387
395
  error: undefined,
388
396
  };
397
+ accountRecon.parsedStatementData = undefined;
398
+ accountRecon.statementParseStatus = {
399
+ fetchState: 'Not-Started',
400
+ error: undefined,
401
+ };
389
402
  },
390
403
  uploadAccountStatementSuccess: (draft, action) => {
391
404
  const { accountId, selectedPeriod } = action.payload;
@@ -423,6 +436,78 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
423
436
  error: action.payload.error,
424
437
  };
425
438
  },
439
+ parseStatement: (draft, action) => {
440
+ const { accountId, selectedPeriod } = action.payload;
441
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
442
+ accountRecon.parsedStatementData = undefined;
443
+ accountRecon.statementParseStatus = {
444
+ fetchState: 'In-Progress',
445
+ error: undefined,
446
+ };
447
+ },
448
+ parseStatementSuccess: (draft, action) => {
449
+ const { accountId, selectedPeriod } = action.payload;
450
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseStatus = {
451
+ fetchState: 'Completed',
452
+ error: undefined,
453
+ };
454
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseInProgress = false;
455
+ },
456
+ parseStatementFailure: (draft, action) => {
457
+ const { accountId, selectedPeriod } = action.payload;
458
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseStatus = {
459
+ fetchState: 'Error',
460
+ error: action.payload.error,
461
+ };
462
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseInProgress = false;
463
+ },
464
+ updateParsedStatementData: (draft, action) => {
465
+ const { accountId, selectedPeriod, parsedStatementData } = action.payload;
466
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].parsedStatementData =
467
+ parsedStatementData;
468
+ },
469
+ updateStatementUpdateLocalData: (draft, action) => {
470
+ const { accountId, selectedPeriod, statementUpdateLocalData } = action.payload;
471
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
472
+ if (accountRecon.localData == null) {
473
+ accountRecon.localData = {
474
+ statementUpdateLocalData,
475
+ };
476
+ }
477
+ else {
478
+ accountRecon.localData.statementUpdateLocalData =
479
+ statementUpdateLocalData;
480
+ }
481
+ },
482
+ submitStatementUpdate: (draft, action) => {
483
+ const { accountId, selectedPeriod } = action.payload;
484
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementUpdateStatus = {
485
+ fetchState: 'In-Progress',
486
+ error: undefined,
487
+ };
488
+ },
489
+ submitStatementUpdateSuccess: (draft, action) => {
490
+ const { accountId, selectedPeriod } = action.payload;
491
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
492
+ accountRecon.statementUpdateStatus = {
493
+ fetchState: 'Completed',
494
+ error: undefined,
495
+ };
496
+ if (accountRecon.localData != null) {
497
+ accountRecon.localData.statementUpdateLocalData = undefined;
498
+ }
499
+ },
500
+ submitStatementUpdateFailure: (draft, action) => {
501
+ const { accountId, selectedPeriod } = action.payload;
502
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
503
+ accountRecon.statementUpdateStatus = {
504
+ fetchState: 'Error',
505
+ error: action.payload.error,
506
+ };
507
+ if (accountRecon.localData != null) {
508
+ accountRecon.localData.statementUpdateLocalData = undefined;
509
+ }
510
+ },
426
511
  updateAccountReconciliationLocalData: (draft, action) => {
427
512
  const { accountId, selectedPeriod, localData } = action.payload;
428
513
  const oldLocalData = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].localData;
@@ -528,10 +613,10 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
528
613
  },
529
614
  });
530
615
  // Export actions
531
- _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.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.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.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
616
+ _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.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.parseStatementSuccess = _a.parseStatementSuccess, exports.parseStatementFailure = _a.parseStatementFailure, exports.updateParsedStatementData = _a.updateParsedStatementData, exports.updateStatementUpdateLocalData = _a.updateStatementUpdateLocalData, exports.submitStatementUpdate = _a.submitStatementUpdate, exports.submitStatementUpdateSuccess = _a.submitStatementUpdateSuccess, exports.submitStatementUpdateFailure = _a.submitStatementUpdateFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
532
617
  // Export reducer
533
618
  exports.default = expenseAutomationReconciliationView.reducer;
534
- function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts) {
619
+ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts, summary) {
535
620
  draft.excludedAccountIDs = excludedAccounts.map((ea) => ea.account_id);
536
621
  draft.excludedAccountExclusionInfo = {};
537
622
  excludedAccounts.forEach((ea) => {
@@ -560,6 +645,7 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
560
645
  : undefined,
561
646
  };
562
647
  });
648
+ const oldReconciliationByAccountID = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID ?? {};
563
649
  draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = {
564
650
  accountIDs: [],
565
651
  reconciliationByAccountID: {},
@@ -583,6 +669,7 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
583
669
  paymentAccountId: account?.payment_account_id ?? undefined,
584
670
  };
585
671
  }
672
+ const oldRecord = oldReconciliationByAccountID[reconciliation.account_id];
586
673
  accountReconciliationRecords.reconciliationByAccountID[reconciliation.account_id] = {
587
674
  accountId: reconciliation.account_id,
588
675
  reconciliationId: reconciliation.reconciliation_id ?? undefined,
@@ -592,14 +679,17 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
592
679
  statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
593
680
  statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
594
681
  statementParseInProgress: reconciliation.bank_status.code === 'parsing',
682
+ statementParseStatus: { fetchState: 'Not-Started', error: undefined },
595
683
  localData: {
596
684
  accountSource: account?.reconciliation_source != null
597
685
  ? (0, accountState_1.toReconciliationAccountSource)(account.reconciliation_source)
598
686
  : undefined,
687
+ ...oldRecord?.localData,
599
688
  },
600
689
  accountDetectionReason: account?.detection_info != null && account.detection_reason != null
601
690
  ? account.detection_reason
602
691
  : undefined,
692
+ parsedStatementData: oldRecord?.parsedStatementData,
603
693
  };
604
694
  accountReconciliationRecords.accountIDs.push(reconciliation.account_id);
605
695
  });
@@ -613,6 +703,9 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
613
703
  draft.fetchState = 'Completed';
614
704
  draft.error = undefined;
615
705
  }
706
+ if (summary !== undefined) {
707
+ draft.summary = (0, reconciliationViewState_1.toReconciliationViewSummary)(summary);
708
+ }
616
709
  }
617
710
  function updateReconciliationByAccountID(draft, accounts, selectedPeriod, accountId, reconciliationData, refreshViewInBackground) {
618
711
  const oldRecord = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
@@ -680,6 +773,7 @@ const updateReconciliationByAccountIDOnIncludeAccount = (draft, accountId, recon
680
773
  statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
681
774
  statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
682
775
  statementParseInProgress: reconciliation.bank_status.code === 'parsing',
776
+ statementParseStatus: { fetchState: 'Not-Started', error: undefined },
683
777
  localData: {},
684
778
  accountDetectionReason: undefined,
685
779
  };
@@ -9,7 +9,7 @@ import { BankStatusCodeType } from '../../../entity/accountRecon/accountReconSta
9
9
  import { ClassBase } from '../../../entity/class/classState';
10
10
  import { Vendor } from '../../../entity/vendor/vendorState';
11
11
  import { PlaidConnectionDetails } from '../../spendManagement/plaidAccount/plaidAccountViewState';
12
- import { AccountReconciliationLocalData, ActionFetchStates, ReconListUIState, ReconciliationTabsState, ReconciliationViewTabType } from '../types/reconciliationViewState';
12
+ import { AccountReconciliationLocalData, ActionFetchStates, ParsedStatementData, ReconListUIState, ReconciliationTabsState, ReconciliationViewSummary, ReconciliationViewTabType } from '../types/reconciliationViewState';
13
13
  export declare const ALL_ACCOUNT_RECON_SECTION_IDS: readonly ["assets", "liabilities"];
14
14
  export declare const toAccountReconSectionID: (v: string) => "assets" | "liabilities";
15
15
  export type AccountReconSectionID = ReturnType<typeof toAccountReconSectionID>;
@@ -37,10 +37,12 @@ export interface ExpenseAutomationReconciliationViewSelector {
37
37
  refreshStatus: FetchStateAndError;
38
38
  reviewTabSelectedVendorByTransactionId: Record<ID, Vendor>;
39
39
  selectedTab: ReconciliationViewTabType;
40
+ statementProcessingFailed: boolean;
40
41
  statementUploadChosen: boolean;
41
42
  selectedAccountId?: ID;
42
43
  selectedDrawerAccountId?: ID;
43
44
  selectedReconAccount?: AccountReconciliationByAccount;
45
+ summary?: ReconciliationViewSummary;
44
46
  }
45
47
  export interface AccountReconciliationBySection {
46
48
  accountIDs: ID[];
@@ -59,9 +61,11 @@ export interface AccountReconciliationByAccount {
59
61
  refreshStatus: FetchStateAndError;
60
62
  statementDeleteStatus: FetchStateAndError;
61
63
  statementParseInProgress: boolean;
64
+ statementParseStatus: FetchStateAndError;
62
65
  statementUpdateStatus: FetchStateAndError;
63
66
  statementUploadStatus: FetchStateAndError;
64
67
  transactionFetchState: FetchStateAndError;
65
68
  accountDetectionReason?: string;
69
+ parsedStatementData?: ParsedStatementData;
66
70
  paymentAccountId?: ID;
67
71
  }
@@ -49,6 +49,17 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
49
49
  error: undefined,
50
50
  })
51
51
  : { fetchState: 'Not-Started', error: undefined };
52
+ const monthEndChecksForPeriod = selectedPeriod != null
53
+ ? monthEndCloseChecksState.monthEndCloseChecksByTenantId[currentTenant.tenantId]?.[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]
54
+ : undefined;
55
+ const reconCheckTimeSaved = monthEndChecksForPeriod?.monthEndCloseCheckList.find((check) => check.title === 'Reconciliation')?.progressJson?.timeSavedPercentage;
56
+ const summaryWithTimeSaved = reconciliationViewState.summary != null
57
+ ? {
58
+ ...reconciliationViewState.summary,
59
+ timeSavedPercentage: reconCheckTimeSaved ??
60
+ reconciliationViewState.summary.timeSavedPercentage,
61
+ }
62
+ : undefined;
52
63
  if (accountReconForMonthYearPeriod == null) {
53
64
  return {
54
65
  bankAccounts: [],
@@ -72,6 +83,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
72
83
  selectedTab: reconciliationViewState.selectedTab,
73
84
  monthYearPeriod: selectedPeriod,
74
85
  selectedAccountId: reconciliationViewState.selectedAccountId,
86
+ statementProcessingFailed: reconciliationViewState.statementProcessingFailed,
75
87
  statementUploadChosen: reconciliationViewState.statementUploadChosen,
76
88
  accountReconciliationsByAccountID: {},
77
89
  reconciliationTabsState: reconciliationViewReducer_1.initialReconciliationTabsState,
@@ -121,6 +133,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
121
133
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
122
134
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
123
135
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
136
+ summary: summaryWithTimeSaved,
124
137
  };
125
138
  }
126
139
  const allAccountIDs = accountReconForMonthYearPeriod.accountIDs;
@@ -245,6 +258,8 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
245
258
  .refreshStatus,
246
259
  statementDeleteStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
247
260
  .statementDeleteStatus,
261
+ statementParseStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
262
+ .statementParseStatus,
248
263
  statementUpdateStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
249
264
  .statementUpdateStatus,
250
265
  statementUploadStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
@@ -253,6 +268,8 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
253
268
  .localData,
254
269
  statementParseInProgress: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
255
270
  .statementParseInProgress,
271
+ parsedStatementData: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
272
+ .parsedStatementData,
256
273
  transactionFetchState: (0, reduceFetchState_1.reduceAnyFetchState)([
257
274
  accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
258
275
  .transactionFetchState,
@@ -321,6 +338,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
321
338
  statementUpdateStatus: { fetchState: 'Not-Started' },
322
339
  statementUploadStatus: { fetchState: 'Not-Started' },
323
340
  statementDeleteStatus: { fetchState: 'Not-Started' },
341
+ statementParseStatus: { fetchState: 'Not-Started' },
324
342
  localData: {},
325
343
  connectionInProgress: false,
326
344
  statementParseInProgress: false,
@@ -409,6 +427,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
409
427
  refreshStatus: reconciliationViewState.refreshStatus,
410
428
  selectedTab: reconciliationViewState.selectedTab,
411
429
  selectedDrawerAccountId: reconciliationViewState.selectedDrawerAccountId,
430
+ statementProcessingFailed: reconciliationViewState.statementProcessingFailed,
412
431
  statementUploadChosen: reconciliationViewState.statementUploadChosen,
413
432
  monthYearPeriod: selectedPeriod,
414
433
  accountReconciliationBySectionID,
@@ -429,6 +448,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
429
448
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
430
449
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
431
450
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
451
+ summary: summaryWithTimeSaved,
432
452
  };
433
453
  });
434
454
  const isAccountReconReport = (reportId) => {