@zeniai/client-epic-state 5.2.22-betaAM4 → 5.2.22-betaMM1

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 (59) hide show
  1. package/lib/entity/actualMatching/actualMatchingPayload.d.ts +25 -0
  2. package/lib/entity/actualMatching/actualMatchingPayload.js +42 -0
  3. package/lib/entity/actualMatching/actualMatchingReducer.d.ts +8 -0
  4. package/lib/entity/actualMatching/actualMatchingReducer.js +33 -0
  5. package/lib/entity/actualMatching/actualMatchingSelector.d.ts +3 -0
  6. package/lib/entity/actualMatching/actualMatchingSelector.js +6 -0
  7. package/lib/entity/actualMatching/actualMatchingState.d.ts +22 -0
  8. package/lib/entity/actualMatching/actualMatchingState.js +2 -0
  9. package/lib/entity/actualMatching/actualMatchingTypes.d.ts +1 -0
  10. package/lib/entity/actualMatching/actualMatchingTypes.js +2 -0
  11. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +2 -0
  12. package/lib/entity/jeSchedules/jeSchedulesPayload.js +2 -0
  13. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +2 -0
  14. package/lib/epic.d.ts +3 -1
  15. package/lib/epic.js +4 -0
  16. package/lib/esm/entity/actualMatching/actualMatchingPayload.js +39 -0
  17. package/lib/esm/entity/actualMatching/actualMatchingReducer.js +30 -0
  18. package/lib/esm/entity/actualMatching/actualMatchingSelector.js +3 -0
  19. package/lib/esm/entity/actualMatching/actualMatchingState.js +1 -0
  20. package/lib/esm/entity/actualMatching/actualMatchingTypes.js +1 -0
  21. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +2 -0
  22. package/lib/esm/epic.js +4 -0
  23. package/lib/esm/index.js +5 -5
  24. package/lib/esm/reducer.js +3 -0
  25. package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +6 -6
  26. package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.js +35 -0
  27. package/lib/esm/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +2 -1
  28. package/lib/esm/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +35 -6
  29. package/lib/esm/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.js +51 -0
  30. package/lib/esm/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +1 -1
  31. package/lib/esm/view/expenseAutomationView/payload/actualMatchingPayload.js +9 -1
  32. package/lib/esm/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +112 -8
  33. package/lib/esm/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +145 -98
  34. package/lib/esm/view/expenseAutomationView/types/actualMatchingViewState.js +10 -0
  35. package/lib/index.d.ts +8 -5
  36. package/lib/index.js +53 -48
  37. package/lib/reducer.d.ts +1 -0
  38. package/lib/reducer.js +3 -0
  39. package/lib/rootStateTypes.d.ts +2 -0
  40. package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.d.ts +2 -2
  41. package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +6 -6
  42. package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.d.ts +12 -0
  43. package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.js +39 -0
  44. package/lib/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +2 -1
  45. package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.d.ts +1 -1
  46. package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +35 -6
  47. package/lib/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.d.ts +8 -0
  48. package/lib/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.js +55 -0
  49. package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +1 -1
  50. package/lib/view/expenseAutomationView/payload/actualMatchingPayload.d.ts +20 -7
  51. package/lib/view/expenseAutomationView/payload/actualMatchingPayload.js +9 -0
  52. package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.d.ts +26 -5
  53. package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +113 -9
  54. package/lib/view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes.d.ts +16 -2
  55. package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.d.ts +17 -2
  56. package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +148 -98
  57. package/lib/view/expenseAutomationView/types/actualMatchingViewState.d.ts +20 -2
  58. package/lib/view/expenseAutomationView/types/actualMatchingViewState.js +12 -1
  59. package/package.json +1 -1
@@ -1,7 +1,53 @@
1
1
  import orderBy from 'lodash/orderBy';
2
2
  import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
3
+ import { getActualMatchingMatchById } from '../../../entity/actualMatching/actualMatchingSelector';
4
+ import { generateJEOneTimeAccrualKey } from '../../../entity/jeSchedules/jeScheduleHelper';
3
5
  import { getJEOneTimeAccrualByKey, } from '../../../entity/jeSchedules/jeSchedulesSelector';
4
6
  import { getCurrentTenant } from '../../../entity/tenant/tenantSelector';
7
+ function toMatchModalAccrual(member) {
8
+ if ('jeOneTimeAccrualKey' in member && member.jeOneTimeAccrualKey != null) {
9
+ return member;
10
+ }
11
+ return {
12
+ ...member,
13
+ jeOneTimeAccrualKey: generateJEOneTimeAccrualKey(member.accrualId),
14
+ };
15
+ }
16
+ function uniqueMatchModalAccruals(pinned, searched) {
17
+ const byId = new Map();
18
+ pinned.forEach((row) => byId.set(row.accrualId, row));
19
+ searched.forEach((row) => {
20
+ if (!byId.has(row.accrualId)) {
21
+ byId.set(row.accrualId, row);
22
+ }
23
+ });
24
+ return Array.from(byId.values());
25
+ }
26
+ function uniqueTransactionSearchResults(pinned, searched) {
27
+ const byKey = new Map();
28
+ pinned.forEach((row) => byKey.set(`${row.transactionId}:${row.lineId}`, row));
29
+ searched.forEach((row) => {
30
+ const key = `${row.transactionId}:${row.lineId}`;
31
+ if (!byKey.has(key)) {
32
+ byKey.set(key, row);
33
+ }
34
+ });
35
+ return Array.from(byKey.values());
36
+ }
37
+ export function parseActualMatchingMatchId(matchId) {
38
+ const separator = matchId.indexOf(':');
39
+ if (separator <= 0 || separator === matchId.length - 1) {
40
+ return null;
41
+ }
42
+ return {
43
+ transactionType: matchId.slice(0, separator).toLowerCase(),
44
+ transactionIntegrationId: matchId.slice(separator + 1),
45
+ };
46
+ }
47
+ const NOT_STARTED = {
48
+ fetchState: 'Not-Started',
49
+ error: undefined,
50
+ };
5
51
  export function isAutoReversedAccrual(accrual) {
6
52
  return (accrual.accrualStatus === 'reversed' &&
7
53
  accrual.reversalTrigger === 'bill_match');
@@ -17,18 +63,14 @@ export function isPendingReviewAccrual(accrual) {
17
63
  const resolution = accrual.matchSuggestion.resolution;
18
64
  return resolution == null || resolution.length === 0;
19
65
  }
66
+ export function isReversedMatchKind(kind) {
67
+ return kind === 'auto_reversed' || kind === 'manually_reversed';
68
+ }
20
69
  export function getClearedMatchedAmount(accrual) {
21
70
  return accrual.cleared?.matchedAmount?.amount;
22
71
  }
23
- export function getActualMatchingAmount(accrual) {
24
- if (isPendingReviewAccrual(accrual)) {
25
- return (accrual.matchSuggestion?.matchedAmount?.amount ??
26
- accrual.estimatedAmount.amount);
27
- }
28
- if (isAutoReversedAccrual(accrual) || isManuallyReversedAccrual(accrual)) {
29
- return getClearedMatchedAmount(accrual) ?? accrual.estimatedAmount.amount;
30
- }
31
- return accrual.estimatedAmount.amount;
72
+ export function getActualMatchingAmount(row) {
73
+ return row.actualAmount?.amount ?? row.estimatedAmount.amount;
32
74
  }
33
75
  export function getActualMatchingReversalDate(accrual) {
34
76
  if (isPendingReviewAccrual(accrual)) {
@@ -36,40 +78,6 @@ export function getActualMatchingReversalDate(accrual) {
36
78
  }
37
79
  return accrual.cleared?.matchedTransactionDate;
38
80
  }
39
- function getActualMatchingBillCollapseKey(accrual) {
40
- const stamp = isPendingReviewAccrual(accrual)
41
- ? accrual.matchSuggestion
42
- : accrual.cleared;
43
- const txnId = stamp?.matchedTransactionId;
44
- if (txnId != null && txnId !== '') {
45
- return `txn:${txnId}`;
46
- }
47
- const integrationId = stamp?.matchedTransactionIntegrationId;
48
- if (integrationId != null && integrationId !== '') {
49
- return `int:${integrationId}`;
50
- }
51
- const ids = accrual.cleared?.accrualIds;
52
- if (ids != null && ids.length > 1) {
53
- return `cleared:${[...ids].sort().join(',')}`;
54
- }
55
- return `accrual:${accrual.accrualId}`;
56
- }
57
- function collectGroupedAccrualIds(members) {
58
- const stampIds = members[0]?.cleared?.accrualIds;
59
- const memberIds = members.map((member) => member.accrualId);
60
- if (stampIds != null && stampIds.length >= memberIds.length) {
61
- return stampIds;
62
- }
63
- const seen = new Set();
64
- const grouped = [];
65
- for (const id of [...(stampIds ?? []), ...memberIds]) {
66
- if (!seen.has(id)) {
67
- seen.add(id);
68
- grouped.push(id);
69
- }
70
- }
71
- return grouped;
72
- }
73
81
  function collectGroupedMembers(members) {
74
82
  if (members.length <= 1) {
75
83
  return undefined;
@@ -82,51 +90,48 @@ function collectGroupedMembers(members) {
82
90
  serviceMonth: member.serviceMonth,
83
91
  }));
84
92
  }
85
- function toActualMatchingRow(members, kind) {
86
- const accrual = members[0];
93
+ function toActualMatchingRow(match) {
94
+ const firstMember = match.members[0];
95
+ if (firstMember == null) {
96
+ throw new Error('Actual matching row requires at least one member');
97
+ }
98
+ const first = toMatchModalAccrual(firstMember);
87
99
  return {
88
- ...accrual,
89
- kind,
90
- groupedAccrualIds: collectGroupedAccrualIds(members),
91
- groupedMembers: collectGroupedMembers(members),
92
- reversalDate: getActualMatchingReversalDate(accrual),
100
+ ...first,
101
+ matchId: match.matchId,
102
+ kind: match.kind,
103
+ accruedAmount: match.accruedAmount,
104
+ actualAmount: match.actualAmount,
105
+ matchTier: match.matchTier,
106
+ matchShape: match.matchShape,
107
+ transactionType: match.transactionType,
108
+ transactionDate: match.transactionDate,
109
+ groupedAccrualIds: match.members.map((member) => member.accrualId),
110
+ groupedMembers: collectGroupedMembers(match.members),
111
+ reversalDate: getActualMatchingReversalDate(first),
112
+ vendorName: match.vendorName !== '' ? match.vendorName : first.vendorName,
113
+ estimatedAmount: match.accruedAmount,
93
114
  };
94
115
  }
95
- function collapseActualMatchingRows(accruals, kind) {
96
- const groups = new Map();
97
- for (const accrual of accruals) {
98
- const key = getActualMatchingBillCollapseKey(accrual);
99
- const members = groups.get(key);
100
- if (members != null) {
101
- members.push(accrual);
102
- }
103
- else {
104
- groups.set(key, [accrual]);
105
- }
106
- }
107
- const rows = [];
108
- for (const members of groups.values()) {
109
- rows.push(toActualMatchingRow(members, kind));
110
- }
111
- return rows;
112
- }
113
- function sumCollapsedActualMatchingAmounts(rows) {
114
- return rows.reduce((sum, row) => sum + getActualMatchingAmount(row), 0);
115
- }
116
- function matchesSearch(accrual, searchString) {
116
+ function matchesSearch(row, searchString) {
117
117
  const trimmed = searchString.trim().toLowerCase();
118
118
  if (trimmed.length === 0) {
119
119
  return true;
120
120
  }
121
- return (accrual.vendorName.toLowerCase().includes(trimmed) ||
122
- accrual.memo.toLowerCase().includes(trimmed));
121
+ if (row.vendorName.toLowerCase().includes(trimmed)) {
122
+ return true;
123
+ }
124
+ if (row.memo.toLowerCase().includes(trimmed)) {
125
+ return true;
126
+ }
127
+ return (row.groupedMembers ?? []).some((member) => (member.memo ?? '').toLowerCase().includes(trimmed));
123
128
  }
124
129
  function getActualMatchingSortValue(row, sortKey) {
125
130
  switch (sortKey) {
126
131
  case 'vendor':
127
132
  return row.vendorName.toLowerCase();
128
133
  case 'date':
129
- return row.reversalDate?.valueOf();
134
+ return row.reversalDate?.valueOf() ?? row.transactionDate;
130
135
  case 'amount':
131
136
  return getActualMatchingAmount(row);
132
137
  case 'category':
@@ -134,10 +139,23 @@ function getActualMatchingSortValue(row, sortKey) {
134
139
  case 'class':
135
140
  return row.jeDebitAccountingClassName?.toLowerCase();
136
141
  case 'type':
137
- return (row.cleared?.matchedTransactionType ??
138
- row.matchSuggestion?.matchedTransactionType)?.toLowerCase();
142
+ return row.transactionType?.toLowerCase();
139
143
  case 'lifecycle':
140
144
  return row.kind;
145
+ case 'service':
146
+ return row.serviceMonth;
147
+ case 'accrued':
148
+ return row.accruedAmount?.amount ?? row.estimatedAmount.amount;
149
+ case 'actual':
150
+ return row.actualAmount?.amount;
151
+ case 'variance': {
152
+ const accrued = row.accruedAmount?.amount ?? row.estimatedAmount.amount;
153
+ const actual = row.actualAmount?.amount;
154
+ if (actual == null || accrued === 0) {
155
+ return undefined;
156
+ }
157
+ return ((actual - accrued) / Math.abs(accrued)) * 100;
158
+ }
141
159
  default:
142
160
  return undefined;
143
161
  }
@@ -155,37 +173,51 @@ function emptyKpiSummary() {
155
173
  manual: { count: 0 },
156
174
  };
157
175
  }
176
+ function sumRowAmounts(rows) {
177
+ return rows.reduce((sum, row) => sum + getActualMatchingAmount(row), 0);
178
+ }
179
+ export function getExpenseAutomationActualMatchingMatchView(state, matchId) {
180
+ const view = state.expenseAutomationActualMatchingViewState;
181
+ return {
182
+ match: getActualMatchingMatchById(matchId, state.actualMatchingState),
183
+ detailFetchState: view.detailFetchStateByMatchId[matchId] ?? NOT_STARTED,
184
+ refreshStatus: view.detailRefreshStatusByMatchId[matchId] ?? NOT_STARTED,
185
+ undoReversalStatus: view.undoReversalStatus ?? NOT_STARTED,
186
+ };
187
+ }
158
188
  export function getExpenseAutomationActualMatchingView(state) {
159
189
  const { expenseAutomationActualMatchingViewState, expenseAutomationViewState } = state;
160
- const { accrualKeysByPeriod, fetchState, error, refreshStatus, uiState, matchModal, } = expenseAutomationActualMatchingViewState;
190
+ const { matchIdsByPeriod, fetchState, error, refreshStatus, uiState, matchModal, undoReversalStatus, } = expenseAutomationActualMatchingViewState;
161
191
  const currentTenant = getCurrentTenant(state);
162
192
  const selectedPeriod = expenseAutomationViewState.selectedPeriodByTenantId[currentTenant.tenantId];
163
193
  const monthYearPeriodId = selectedPeriod != null ? toMonthYearPeriodId(selectedPeriod) : undefined;
164
- const accrualKeys = monthYearPeriodId != null
165
- ? accrualKeysByPeriod[monthYearPeriodId]
194
+ const matchIds = monthYearPeriodId != null
195
+ ? matchIdsByPeriod[monthYearPeriodId]
166
196
  : undefined;
167
- const accruals = (accrualKeys ?? [])
168
- .map((key) => getJEOneTimeAccrualByKey(key, state.jeSchedulesState))
169
- .filter((accrual) => accrual != null);
170
- const filtered = accruals.filter((accrual) => matchesSearch(accrual, uiState.searchString));
171
- const autoReversed = sortActualMatchingRows(collapseActualMatchingRows(filtered.filter(isAutoReversedAccrual), 'auto_reversed'), uiState);
172
- const pendingReview = sortActualMatchingRows(collapseActualMatchingRows(filtered.filter(isPendingReviewAccrual), 'pending_review'), uiState);
173
- const manuallyReversed = sortActualMatchingRows(collapseActualMatchingRows(filtered.filter(isManuallyReversedAccrual), 'manually_reversed'), uiState);
174
- const listedRows = [...autoReversed, ...pendingReview, ...manuallyReversed];
197
+ const rows = (matchIds ?? [])
198
+ .map((matchId) => getActualMatchingMatchById(matchId, state.actualMatchingState))
199
+ .filter((match) => match != null)
200
+ .filter((match) => match.members.length > 0)
201
+ .map(toActualMatchingRow)
202
+ .filter((row) => matchesSearch(row, uiState.searchString));
203
+ const reversed = sortActualMatchingRows(rows.filter((row) => isReversedMatchKind(row.kind)), uiState);
204
+ const pendingReview = sortActualMatchingRows(rows.filter((row) => row.kind === 'pending_review'), uiState);
205
+ const autoReversedForKpi = reversed.filter((row) => row.kind === 'auto_reversed');
206
+ const listedRows = [...reversed, ...pendingReview];
175
207
  const kpiSummary = listedRows.length === 0
176
208
  ? emptyKpiSummary()
177
209
  : {
178
210
  autoReversed: {
179
- count: autoReversed.length,
180
- amount: sumCollapsedActualMatchingAmounts(autoReversed),
211
+ count: autoReversedForKpi.length,
212
+ amount: sumRowAmounts(autoReversedForKpi),
181
213
  },
182
214
  pendingReview: {
183
215
  count: pendingReview.length,
184
- amount: sumCollapsedActualMatchingAmounts(pendingReview),
216
+ amount: sumRowAmounts(pendingReview),
185
217
  },
186
218
  totalThisClose: {
187
219
  count: listedRows.length,
188
- amount: sumCollapsedActualMatchingAmounts(listedRows),
220
+ amount: sumRowAmounts(listedRows),
189
221
  },
190
222
  ai: {
191
223
  count: listedRows.filter((row) => row.origin === 'agent').length,
@@ -194,26 +226,41 @@ export function getExpenseAutomationActualMatchingView(state) {
194
226
  count: listedRows.filter((row) => row.origin === 'human').length,
195
227
  },
196
228
  };
197
- const accrualSearchResults = matchModal.accrualSearch.results
229
+ const searchedAccruals = matchModal.accrualSearch.results
198
230
  .map((key) => getJEOneTimeAccrualByKey(key, state.jeSchedulesState))
199
231
  .filter((accrual) => accrual != null);
232
+ const openedMatch = matchModal.openedFromMatchId != null
233
+ ? getActualMatchingMatchById(matchModal.openedFromMatchId, state.actualMatchingState)
234
+ : undefined;
235
+ const pinnedAccruals = (openedMatch?.members ?? []).map(toMatchModalAccrual);
236
+ const firstSuggestion = openedMatch?.members[0]?.matchSuggestion;
237
+ const prefill = openedMatch == null
238
+ ? undefined
239
+ : {
240
+ selectedAccrualIds: openedMatch.members.map((member) => member.accrualId),
241
+ actualAmount: openedMatch.actualAmount.amount,
242
+ matchedLineId: firstSuggestion?.matchedLineId,
243
+ matchedTransactionId: firstSuggestion?.matchedTransactionId,
244
+ };
200
245
  return {
201
246
  fetchState,
202
247
  error,
203
- autoReversed,
248
+ reversed,
204
249
  pendingReview,
205
- manuallyReversed,
206
250
  kpiSummary,
207
251
  uiState,
208
252
  refreshStatus,
209
- hasLoadedForSelectedPeriod: accrualKeys != null,
253
+ hasLoadedForSelectedPeriod: matchIds != null,
254
+ undoReversalStatus,
210
255
  matchModal: {
211
256
  isOpen: matchModal.isOpen,
257
+ openedFromMatchId: matchModal.openedFromMatchId,
258
+ prefill,
212
259
  confirmStatus: matchModal.confirmStatus,
213
260
  lastBatchResults: matchModal.lastBatchResults,
214
261
  transactionSearch: {
215
262
  query: matchModal.transactionSearch.query,
216
- results: matchModal.transactionSearch.results,
263
+ results: uniqueTransactionSearchResults(matchModal.pinnedTransactionResults, matchModal.transactionSearch.results),
217
264
  fetchState: {
218
265
  fetchState: matchModal.transactionSearch.fetchState,
219
266
  error: matchModal.transactionSearch.error,
@@ -223,7 +270,7 @@ export function getExpenseAutomationActualMatchingView(state) {
223
270
  },
224
271
  accrualSearch: {
225
272
  query: matchModal.accrualSearch.query,
226
- results: accrualSearchResults,
273
+ results: uniqueMatchModalAccruals(pinnedAccruals, searchedAccruals),
227
274
  fetchState: {
228
275
  fetchState: matchModal.accrualSearch.fetchState,
229
276
  error: matchModal.accrualSearch.error,
@@ -7,6 +7,10 @@ const ACTUAL_MATCHING_SORT_KEYS = [
7
7
  'class',
8
8
  'type',
9
9
  'lifecycle',
10
+ 'service',
11
+ 'accrued',
12
+ 'actual',
13
+ 'variance',
10
14
  ];
11
15
  export const toActualMatchingSortKey = (v) => stringToUnion(v, ACTUAL_MATCHING_SORT_KEYS);
12
16
  export const MATCH_TRANSACTION_SEARCH_PAGE_SIZE = 50;
@@ -20,3 +24,9 @@ const MATCH_AND_REVERSE_RESULT_STATUSES = [
20
24
  'error',
21
25
  ];
22
26
  export const toMatchAndReverseResultStatus = (v) => stringToUnion(v, MATCH_AND_REVERSE_RESULT_STATUSES);
27
+ const UNDO_REVERSAL_RESULT_STATUSES = [
28
+ 'undone',
29
+ 'claim_lost',
30
+ 'error',
31
+ ];
32
+ export const toUndoReversalResultStatus = (v) => stringToUnion(v, UNDO_REVERSAL_RESULT_STATUSES);
package/lib/index.d.ts CHANGED
@@ -302,7 +302,7 @@ import { computeNewScheduleJeDetails } from './view/expenseAutomationView/helper
302
302
  import { isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardCreditType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType } from './view/expenseAutomationView/helpers/reconciliationHelpers';
303
303
  import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount } from './view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper';
304
304
  import { UploadStatementDocumentAIPayload, UploadStatementDocumentAIResponse } from './view/expenseAutomationView/payload/reconciliationPayload';
305
- import { clearActualMatchingView as clearExpenseAutomationActualMatchingView, clearMatchNewModal, closeMatchNewModal, fetchActualMatching as fetchExpenseAutomationActualMatching, fetchActualMatchingPage as fetchExpenseAutomationActualMatchingPage, matchAndReverseAccruals, openMatchNewModal, searchMatchAccruals, searchMatchTransactions, updateActualMatchingUIState as updateExpenseAutomationActualMatchingUIState } from './view/expenseAutomationView/reducers/actualMatchingViewReducer';
305
+ import { clearActualMatchingView as clearExpenseAutomationActualMatchingView, clearMatchNewModal, closeMatchNewModal, fetchActualMatching as fetchExpenseAutomationActualMatching, fetchActualMatchingMatch, fetchActualMatchingPage as fetchExpenseAutomationActualMatchingPage, matchAndReverseAccruals, openMatchNewModal, searchMatchAccruals, searchMatchTransactions, undoReversalAccruals, updateActualMatchingUIState as updateExpenseAutomationActualMatchingUIState } from './view/expenseAutomationView/reducers/actualMatchingViewReducer';
306
306
  import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
307
307
  import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, clearSearchTransactionsForNewSchedule as clearJeSearchTransactionsForNewSchedule, createOneTimeAccrual, createOneTimeAccrualFailure, createOneTimeAccrualSuccess, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, fetchOneTimeAccrual, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, ignoreOneTimeAccrual, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeNewSchedule as initializeJeNewSchedule, initializeJeScheduleLocalData, promoteOneTimeAccrual, removeJeScheduleTransactionKey, resetNewScheduleLocalData as resetJeNewScheduleLocalData, retryJeSchedule as retryExpenseAutomationJESchedule, revertJeSchedule, revertOneTimeAccrual, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, saveNewSchedule as saveJeNewSchedule, saveNewScheduleFailure as saveJeNewScheduleFailure, saveNewScheduleSuccess as saveJeNewScheduleSuccess, searchTransactionsForNewSchedule as searchJeTransactionsForNewSchedule, searchTransactionsForNewScheduleFailure as searchJeTransactionsForNewScheduleFailure, searchTransactionsForNewScheduleSuccess as searchJeTransactionsForNewScheduleSuccess, toggleJECreatedGroupCollapsed, toggleJEPendingGroupCollapsed, updateJESchedulesUIState as updateExpenseAutomationJESchedulesUIState, updateJEScheduleTypeFilter, updateNewScheduleLocalData as updateJeNewScheduleLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
308
308
  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';
@@ -326,7 +326,7 @@ import { getExpenseAutomationReconciliationView, getLedgerAccountIdsWithStatemen
326
326
  import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
327
327
  import { applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
328
328
  import { TRANSACTION_FILTER_CATEGORIES, TransactionFilterAmountMatchingOperator, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters } from './view/expenseAutomationView/transactionFilterTypes';
329
- import { ActualMatchingTransactionSearchResult, ActualMatchingSortKey as ExpenseAutomationActualMatchingSortKey, ActualMatchingViewUIState as ExpenseAutomationActualMatchingViewUIState, MATCH_ACCRUAL_SEARCH_LIMIT, MATCH_SEARCH_DEBOUNCE_MS, MATCH_TRANSACTION_SEARCH_PAGE_SIZE, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, toActualMatchingSortKey as toExpenseAutomationActualMatchingSortKey, toMatchAndReverseResultStatus } from './view/expenseAutomationView/types/actualMatchingViewState';
329
+ import { ActualMatchingTransactionSearchResult, ActualMatchingSortKey as ExpenseAutomationActualMatchingSortKey, ActualMatchingViewUIState as ExpenseAutomationActualMatchingViewUIState, MATCH_ACCRUAL_SEARCH_LIMIT, MATCH_SEARCH_DEBOUNCE_MS, MATCH_TRANSACTION_SEARCH_PAGE_SIZE, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, UndoReversalAccrualsParams, UndoReversalResult, UndoReversalResultStatus, toActualMatchingSortKey as toExpenseAutomationActualMatchingSortKey, toMatchAndReverseResultStatus, toUndoReversalResultStatus } from './view/expenseAutomationView/types/actualMatchingViewState';
330
330
  import { CompletedSubTab, DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab } from './view/expenseAutomationView/types/completedSubTab';
331
331
  import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSectionType, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
332
332
  import { ALL_JE_PAGE_TABS, AccountSettingsLocalData, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEPageTab, JEScheduleLocalData, NewJeDetailLocalData, NewJeScheduleState, NewOneTimeAccrualLocalData, NewScheduleLocalData, NewScheduleLocalDataFixedAssets, SearchTransactionsState, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey, toJEPageTab } from './view/expenseAutomationView/types/jeSchedulesViewState';
@@ -727,7 +727,7 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
727
727
  export { ClassesViewSelectorReportV2 };
728
728
  export { BalancesTimeseries, TrendTimeseries, BalanceKind };
729
729
  export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, MonthCloseCheckProgressJson, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
730
- 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, DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, TransactionGroup, toTransactionGroup, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, ExpenseAutomationActualMatchingViewSelector, ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingSortKey, ExpenseAutomationActualMatchingViewUIState, ActualMatchingTransactionSearchResult, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, JEKpiSummary, ALL_JE_PAGE_TABS, JEPageTab, MATCH_ACCRUAL_SEARCH_LIMIT, MATCH_SEARCH_DEBOUNCE_MS, MATCH_TRANSACTION_SEARCH_PAGE_SIZE, toExpenseAutomationJEScheduleSortKey, toExpenseAutomationActualMatchingSortKey, toJEPageTab, toMatchAndReverseResultStatus, toggleJECreatedGroupCollapsed, toggleJEPendingGroupCollapsed, updateJEScheduleTypeFilter, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionGroup, 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, getLedgerAccountIdsWithStatementOverrideWarning, getLedgerAccountsForCombinedStatementMapping, getReparseStatementStatusByAccountId, getUnavailableLedgerAccountIds, 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, StatementAccountScope, StatementDataStatusCodeType, deleteAccountStatement, deleteCombinedStatement, uploadAccountStatement, parseCombinedStatement, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, submitCombinedStatementUpdate, submitStatementUpdate, clearStatementDateConflict, confirmStatementMapping, StatementDateConflict, updateStatementUpdateLocalData, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, ParsedStatementData, StatementUpdateLocalData, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, };
730
+ 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, DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, TransactionGroup, toTransactionGroup, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, ExpenseAutomationActualMatchingViewSelector, ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingSortKey, ExpenseAutomationActualMatchingViewUIState, ActualMatchingTransactionSearchResult, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, UndoReversalAccrualsParams, UndoReversalResult, UndoReversalResultStatus, JEKpiSummary, ALL_JE_PAGE_TABS, JEPageTab, MATCH_ACCRUAL_SEARCH_LIMIT, MATCH_SEARCH_DEBOUNCE_MS, MATCH_TRANSACTION_SEARCH_PAGE_SIZE, toExpenseAutomationJEScheduleSortKey, toExpenseAutomationActualMatchingSortKey, toJEPageTab, toMatchAndReverseResultStatus, toUndoReversalResultStatus, toggleJECreatedGroupCollapsed, toggleJEPendingGroupCollapsed, updateJEScheduleTypeFilter, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionGroup, 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, getLedgerAccountIdsWithStatementOverrideWarning, getLedgerAccountsForCombinedStatementMapping, getReparseStatementStatusByAccountId, getUnavailableLedgerAccountIds, 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, StatementAccountScope, StatementDataStatusCodeType, deleteAccountStatement, deleteCombinedStatement, uploadAccountStatement, parseCombinedStatement, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, submitCombinedStatementUpdate, submitStatementUpdate, clearStatementDateConflict, confirmStatementMapping, StatementDateConflict, updateStatementUpdateLocalData, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, ParsedStatementData, StatementUpdateLocalData, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, };
731
731
  export { JEScheduleLocalData };
732
732
  export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, ExpenseAutomationJEOneTimeAccrualDetailView, JEScheduleRow, JEScheduledTransactionWithFailedEntries, NewJeDetailLocalData, NewJeScheduleState, NewOneTimeAccrualLocalData, NewAccrualAccountsView, NewScheduleLocalData, NewScheduleLocalDataFixedAssets, NewScheduleSearchTransactionsView, NewScheduleView, SearchTransactionsState, computeNewScheduleJeDetails, createOneTimeAccrual, createOneTimeAccrualFailure, createOneTimeAccrualSuccess, fetchOneTimeAccrual, getJeNewAccrualAccountsView, ignoreOneTimeAccrual, promoteOneTimeAccrual, revertJeSchedule, revertOneTimeAccrual, getJeNewScheduleSearchTransactionsView, getJeNewScheduleView, };
733
733
  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, };
@@ -943,7 +943,7 @@ export { fetchApAging, getApAgingReport, updateApAgingUIState, AgingReportId, Ap
943
943
  export { fetchApAgingDetail, AgingReportInvoice, ApAgingDetail, getApAgingDetailForVendor, updateApAgingDetailUIState, };
944
944
  export { LinkBillExpenseKey };
945
945
  export { clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, clearJeSearchTransactionsForNewSchedule, fetchExpenseAutomationJESchedulesPage, ignoreExpenseAutomationJESchedule, initializeJeAccountSettingsView, initializeJeNewSchedule, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, resetJeNewScheduleLocalData, retryExpenseAutomationJESchedule, saveJeNewSchedule, saveJeNewScheduleFailure, saveJeNewScheduleSuccess, searchJeTransactionsForNewSchedule, searchJeTransactionsForNewScheduleFailure, searchJeTransactionsForNewScheduleSuccess, updateExpenseAutomationJESchedulesUIState, updateJeNewScheduleLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, };
946
- export { clearExpenseAutomationActualMatchingView, closeMatchNewModal, clearMatchNewModal, fetchExpenseAutomationActualMatching, fetchExpenseAutomationActualMatchingPage, matchAndReverseAccruals, openMatchNewModal, searchMatchAccruals, searchMatchTransactions, updateExpenseAutomationActualMatchingUIState, };
946
+ export { clearExpenseAutomationActualMatchingView, closeMatchNewModal, clearMatchNewModal, fetchExpenseAutomationActualMatching, fetchActualMatchingMatch, fetchExpenseAutomationActualMatchingPage, matchAndReverseAccruals, openMatchNewModal, searchMatchAccruals, searchMatchTransactions, undoReversalAccruals, updateExpenseAutomationActualMatchingUIState, };
947
947
  export { createNewSchedulesAccrued, deleteScheduleAccruedDetail, cancelScheduleAccruedJournalEntry, fetchScheduleAccruedDetails, fetchScheduleAccruedDetailsPage, resetJEAccruedLinkInLocalData, saveScheduleAccruedDetails, updateAmountsInScheduleAccruedDetail, updatedJEAccruedLinkWithRecommendedLocalData, updatedJELinkInLocalDataAccruedExpenses, fetchRecommendedTransactionRowIndex, clearSelectedJELinkRowIndex, updateLinkBillExpenseLocalData, updateScheduleAccruedDetailsLocalData, updateSelectedJEAccruedScheduleKey, resetSelectedJEAccruedScheduleKey, resetAccruedDetailNewScheduleState, };
948
948
  export { JEScheduleKey, JEScheduleTransactionKey, ScheduleTransactionID, getJEScheduleTransactionKey, ALL_JE_SCHEDULE_IGNORE_REASONS, ALL_JE_SCHEDULE_REVERT_REASONS, ALL_ONE_TIME_ACCRUAL_IGNORE_REASONS, ALL_ONE_TIME_ACCRUAL_REVERT_REASONS, ALL_SCHEDULES_TYPES, JEScheduledTransaction, JEAccruedSchedule, JEOneTimeAccrual, OneTimeAccrualEdits, JEOneTimeAccrualAiSuggestion, JEOneTimeAccrualBillingPattern, JEOneTimeAccrualCleared, JEOneTimeAccrualMatchSuggestion, JEOneTimeAccrualMonthlyTotal, JEOneTimeAccrualProfileSnapshot, JEOneTimeAccrualKey, JEScheduleAISummaries, JEScheduleFieldRecommendation, JEScheduleSummary, ScheduleTypes, ScheduleJournalEntryStatusCodeType, ScheduleListReport, ScheduleAccruedListReport, getScheduleListReport, getAccruedScheduleListReport, ScheduleSubTabType, ScheduleListSortKey, fetchScheduleList, fetchAccruedScheduleList, fetchDownloadSchedules, fetchSchedulesAccount, updateScheduleListLocalData, getFetchStateForScheduleAccountList, toScheduleTypesType, toScheduleTypesTypeStrict, toScheduleListTabsFileTypeStrict, ScheduleListLocalData, ScheduleDetailsLocalDataFixedAssets, ScheduleDetailsLocalDataAccruedExpenses, ScheduleDetailsView, ScheduleAccruedDetailsView, LinkBillExpenseView, LinkBillExpenseLocalData, JEScheduleDetailsLocalData, ScheduleDetailsLocalData, toScheduleSubTabType, ScheduleStatusCodeType, JEScheduleIgnoreReasonType, JEScheduleRevertReasonType, JournalEntryErrorCodeType, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType, ScheduleTransaction, updateScheduleListSubTab, updateScheduleListSearchText, updateScheduleListScrollState, updateScheduleListSortState, ScheduleDetailSortKey, ScheduledJournalEntry, updateSelectedJEScheduleKey, fetchScheduleDetails, getScheduleDetailsView, getAccruedScheduleDetailsView, fetchScheduleDetailsPage, saveScheduleDetails, deleteScheduleDetail, createNewSchedules, updateScheduleDetailsLocalData, JETransactionLink, updateScheduleListDownloadState, updateAccruedJEScheduleAccruedByListKey, DownloadJEScheduleTabOptions, updatedSelectedJELinkRowIndex, ScheduleListTabsFileType, getQBOUrlForLink, getThirdPartyIDFromQBOURL, updatedJELinkInLocalData, updateAmountsInScheduleDetail, ScheduleDetailUIState, resetJELinkInLocalData, JEScheduledTransactionWithBalance, JEScheduleWithBalance, JELinkType, updatedJELinkWithRecommendedLocalData, getFetchStateForScheduleListByType, getDefaultSelectedTimeframeForScheduleType, markAsCompleteScheduleDetail, resetMarkAsCompleteStatus, fetchVendorTabView, updateVendorTabViewTab, VendorTabViewTabType, getVendorTabView, VendorTabViewSelectorView, };
949
949
  export { GlobalMerchant, GlobalMerchantBase, TenantMerchant };
@@ -1269,4 +1269,7 @@ export type { InvoicingOnboardingGateView } from './view/invoicing/invoicingConf
1269
1269
  export type { InvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
1270
1270
  export type { InvoicingOnboardingStatus } from './view/invoicing/invoicingConfigView/invoicingConfigViewPayload';
1271
1271
  export { getExpenseAutomationJEOneTimeAccrualDetailView, getJEScheduleRowType, isAccruedScheduleRow, isAiAccountantSchedule, isExistingTabRow, isOneTimeAccrualRow, isRenderableOneTimeAccrual, isPendingReviewRow, } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
1272
- export { getActualMatchingAmount, getActualMatchingReversalDate, getExpenseAutomationActualMatchingView, isAutoReversedAccrual, isManuallyReversedAccrual, isPendingReviewAccrual, } from './view/expenseAutomationView/selectors/actualMatchingViewSelector';
1272
+ export { getActualMatchingAmount, getActualMatchingReversalDate, parseActualMatchingMatchId, getExpenseAutomationActualMatchingMatchView, getExpenseAutomationActualMatchingView, isAutoReversedAccrual, isManuallyReversedAccrual, isPendingReviewAccrual, } from './view/expenseAutomationView/selectors/actualMatchingViewSelector';
1273
+ export type { ExpenseAutomationActualMatchingMatchView } from './view/expenseAutomationView/selectors/actualMatchingViewSelector';
1274
+ export type { ActualMatchingMatch, ActualMatchingMatchKind, } from './entity/actualMatching/actualMatchingState';
1275
+ export type { ActualMatchingMatchId } from './entity/actualMatching/actualMatchingTypes';