@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.
- package/lib/entity/actualMatching/actualMatchingPayload.d.ts +25 -0
- package/lib/entity/actualMatching/actualMatchingPayload.js +42 -0
- package/lib/entity/actualMatching/actualMatchingReducer.d.ts +8 -0
- package/lib/entity/actualMatching/actualMatchingReducer.js +33 -0
- package/lib/entity/actualMatching/actualMatchingSelector.d.ts +3 -0
- package/lib/entity/actualMatching/actualMatchingSelector.js +6 -0
- package/lib/entity/actualMatching/actualMatchingState.d.ts +22 -0
- package/lib/entity/actualMatching/actualMatchingState.js +2 -0
- package/lib/entity/actualMatching/actualMatchingTypes.d.ts +1 -0
- package/lib/entity/actualMatching/actualMatchingTypes.js +2 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +2 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.js +2 -0
- package/lib/entity/jeSchedules/jeSchedulesState.d.ts +2 -0
- package/lib/epic.d.ts +3 -1
- package/lib/epic.js +4 -0
- package/lib/esm/entity/actualMatching/actualMatchingPayload.js +39 -0
- package/lib/esm/entity/actualMatching/actualMatchingReducer.js +30 -0
- package/lib/esm/entity/actualMatching/actualMatchingSelector.js +3 -0
- package/lib/esm/entity/actualMatching/actualMatchingState.js +1 -0
- package/lib/esm/entity/actualMatching/actualMatchingTypes.js +1 -0
- package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +2 -0
- package/lib/esm/epic.js +4 -0
- package/lib/esm/index.js +5 -5
- package/lib/esm/reducer.js +3 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +6 -6
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.js +35 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +2 -1
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +35 -6
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.js +51 -0
- package/lib/esm/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +1 -1
- package/lib/esm/view/expenseAutomationView/payload/actualMatchingPayload.js +9 -1
- package/lib/esm/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +112 -8
- package/lib/esm/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +145 -98
- package/lib/esm/view/expenseAutomationView/types/actualMatchingViewState.js +10 -0
- package/lib/index.d.ts +8 -5
- package/lib/index.js +53 -48
- package/lib/reducer.d.ts +1 -0
- package/lib/reducer.js +3 -0
- package/lib/rootStateTypes.d.ts +2 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +6 -6
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.d.ts +12 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.js +39 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +2 -1
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.d.ts +1 -1
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +35 -6
- package/lib/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.d.ts +8 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.js +55 -0
- package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +1 -1
- package/lib/view/expenseAutomationView/payload/actualMatchingPayload.d.ts +20 -7
- package/lib/view/expenseAutomationView/payload/actualMatchingPayload.js +9 -0
- package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.d.ts +26 -5
- package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +113 -9
- package/lib/view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes.d.ts +16 -2
- package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.d.ts +17 -2
- package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +148 -98
- package/lib/view/expenseAutomationView/types/actualMatchingViewState.d.ts +20 -2
- package/lib/view/expenseAutomationView/types/actualMatchingViewState.js +12 -1
- 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(
|
|
24
|
-
|
|
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(
|
|
86
|
-
const
|
|
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
|
-
...
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
|
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
|
-
|
|
122
|
-
|
|
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
|
|
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 {
|
|
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
|
|
165
|
-
?
|
|
194
|
+
const matchIds = monthYearPeriodId != null
|
|
195
|
+
? matchIdsByPeriod[monthYearPeriodId]
|
|
166
196
|
: undefined;
|
|
167
|
-
const
|
|
168
|
-
.map((
|
|
169
|
-
.filter((
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const
|
|
174
|
-
const
|
|
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:
|
|
180
|
-
amount:
|
|
211
|
+
count: autoReversedForKpi.length,
|
|
212
|
+
amount: sumRowAmounts(autoReversedForKpi),
|
|
181
213
|
},
|
|
182
214
|
pendingReview: {
|
|
183
215
|
count: pendingReview.length,
|
|
184
|
-
amount:
|
|
216
|
+
amount: sumRowAmounts(pendingReview),
|
|
185
217
|
},
|
|
186
218
|
totalThisClose: {
|
|
187
219
|
count: listedRows.length,
|
|
188
|
-
amount:
|
|
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
|
|
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
|
-
|
|
248
|
+
reversed,
|
|
204
249
|
pendingReview,
|
|
205
|
-
manuallyReversed,
|
|
206
250
|
kpiSummary,
|
|
207
251
|
uiState,
|
|
208
252
|
refreshStatus,
|
|
209
|
-
hasLoadedForSelectedPeriod:
|
|
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:
|
|
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';
|