@zeniai/client-epic-state 5.2.35-beta0MM → 5.2.35-beta11MM
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 +7 -1
- package/lib/entity/actualMatching/actualMatchingPayload.js +19 -12
- package/lib/entity/actualMatching/actualMatchingReducer.d.ts +3 -2
- package/lib/entity/actualMatching/actualMatchingReducer.js +3 -3
- package/lib/entity/actualMatching/actualMatchingState.d.ts +3 -2
- package/lib/entity/aiCfo/aiCfoReducer.js +78 -4
- package/lib/entity/aiCfo/aiCfoState.d.ts +16 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +2 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.js +4 -0
- package/lib/entity/jeSchedules/jeSchedulesState.d.ts +2 -0
- package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +2 -0
- package/lib/esm/entity/actualMatching/actualMatchingPayload.js +18 -12
- package/lib/esm/entity/actualMatching/actualMatchingReducer.js +3 -3
- package/lib/esm/entity/aiCfo/aiCfoReducer.js +79 -5
- package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +4 -0
- package/lib/esm/entity/snackbar/snackbarTypes.js +2 -0
- package/lib/esm/index.js +6 -6
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +3 -5
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.js +3 -2
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +80 -25
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/refreshActualMatchingList.js +16 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/searchMatchAccrualsEpic.js +16 -6
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +12 -11
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.js +50 -26
- package/lib/esm/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +5 -9
- package/lib/esm/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +1 -9
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic.js +13 -3
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/prefetchOtherJeSchedulesTabEpic.js +34 -16
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +8 -8
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewReducer.js +2 -1
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewSelector.js +5 -2
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewState.js +4 -2
- package/lib/esm/view/expenseAutomationView/payload/actualMatchingPayload.js +10 -10
- package/lib/esm/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +107 -20
- package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +2 -1
- package/lib/esm/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +206 -61
- package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +1 -0
- package/lib/esm/view/expenseAutomationView/types/actualMatchingViewState.js +3 -0
- package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +3 -0
- package/lib/esm/view/financeStatement/financeStatementReducer.js +17 -27
- package/lib/esm/view/spendManagement/billPay/billList/billListSelector.js +3 -3
- package/lib/index.d.ts +7 -6
- package/lib/index.js +52 -48
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +3 -5
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.d.ts +1 -1
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingMatchEpic.js +3 -2
- package/lib/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.d.ts +2 -1
- package/lib/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +77 -22
- package/lib/view/expenseAutomationView/epics/actualMatching/refreshActualMatchingList.d.ts +3 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/refreshActualMatchingList.js +19 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchAccrualsEpic.d.ts +3 -2
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchAccrualsEpic.js +15 -5
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +10 -9
- package/lib/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.d.ts +2 -1
- package/lib/view/expenseAutomationView/epics/actualMatching/undoReversalAccrualsEpic.js +48 -24
- package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.d.ts +1 -2
- package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +5 -9
- package/lib/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.d.ts +1 -2
- package/lib/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +1 -9
- package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic.d.ts +2 -1
- package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic.js +13 -3
- package/lib/view/expenseAutomationView/epics/jeSchedule/prefetchOtherJeSchedulesTabEpic.d.ts +5 -1
- package/lib/view/expenseAutomationView/epics/jeSchedule/prefetchOtherJeSchedulesTabEpic.js +33 -15
- package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.d.ts +1 -2
- package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +8 -8
- package/lib/view/expenseAutomationView/expenseAutomationViewReducer.d.ts +2 -1
- package/lib/view/expenseAutomationView/expenseAutomationViewReducer.js +2 -1
- package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +5 -2
- package/lib/view/expenseAutomationView/expenseAutomationViewState.d.ts +2 -1
- package/lib/view/expenseAutomationView/expenseAutomationViewState.js +6 -3
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/payload/actualMatchingPayload.d.ts +3 -3
- package/lib/view/expenseAutomationView/payload/actualMatchingPayload.js +10 -10
- package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.d.ts +21 -16
- package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +107 -20
- package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +2 -1
- package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +2 -1
- package/lib/view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes.d.ts +13 -9
- package/lib/view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes.d.ts +9 -0
- package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.d.ts +11 -2
- package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +209 -60
- package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +1 -0
- package/lib/view/expenseAutomationView/types/actualMatchingViewState.d.ts +8 -2
- package/lib/view/expenseAutomationView/types/actualMatchingViewState.js +4 -0
- package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +3 -0
- package/lib/view/financeStatement/financeStatementReducer.js +17 -27
- package/lib/view/spendManagement/billPay/billList/billListSelector.js +2 -2
- package/package.json +1 -1
|
@@ -1,9 +1,30 @@
|
|
|
1
1
|
import orderBy from 'lodash/orderBy';
|
|
2
|
-
import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
2
|
+
import { toMonthYearPeriodId, } from '../../../commonStateTypes/timePeriod';
|
|
3
3
|
import { getActualMatchingMatchById } from '../../../entity/actualMatching/actualMatchingSelector';
|
|
4
4
|
import { generateJEOneTimeAccrualKey } from '../../../entity/jeSchedules/jeScheduleHelper';
|
|
5
5
|
import { getJEOneTimeAccrualByKey, } from '../../../entity/jeSchedules/jeSchedulesSelector';
|
|
6
6
|
import { getCurrentTenant } from '../../../entity/tenant/tenantSelector';
|
|
7
|
+
import { date } from '../../../zeniDayJS';
|
|
8
|
+
import { actualMatchingTransactionLineKey, } from '../types/actualMatchingViewState';
|
|
9
|
+
export function getSelectedMonthYearForCurrentTenant(state) {
|
|
10
|
+
const tenantId = getCurrentTenant(state)?.tenantId;
|
|
11
|
+
if (tenantId == null) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return state.expenseAutomationViewState.selectedPeriodByTenantId[tenantId];
|
|
15
|
+
}
|
|
16
|
+
export function getTenantDisplayCurrency(state) {
|
|
17
|
+
const locale = getCurrentTenant(state)?.company?.companyLocaleInfo;
|
|
18
|
+
if (locale?.currencyCode == null || locale.currencyCode === '') {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
currencyCode: locale.currencyCode,
|
|
23
|
+
currencySymbol: locale.currencySymbol != null && locale.currencySymbol !== ''
|
|
24
|
+
? locale.currencySymbol
|
|
25
|
+
: locale.currencyCode,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
7
28
|
function toMatchModalAccrual(member) {
|
|
8
29
|
if ('jeOneTimeAccrualKey' in member && member.jeOneTimeAccrualKey != null) {
|
|
9
30
|
return member;
|
|
@@ -25,9 +46,9 @@ function uniqueMatchModalAccruals(pinned, searched) {
|
|
|
25
46
|
}
|
|
26
47
|
function uniqueTransactionSearchResults(pinned, searched) {
|
|
27
48
|
const byKey = new Map();
|
|
28
|
-
pinned.forEach((row) => byKey.set(
|
|
49
|
+
pinned.forEach((row) => byKey.set(actualMatchingTransactionLineKey(row.transactionType, row.transactionIntegrationId, row.lineId), row));
|
|
29
50
|
searched.forEach((row) => {
|
|
30
|
-
const key =
|
|
51
|
+
const key = actualMatchingTransactionLineKey(row.transactionType, row.transactionIntegrationId, row.lineId);
|
|
31
52
|
if (!byKey.has(key)) {
|
|
32
53
|
byKey.set(key, row);
|
|
33
54
|
}
|
|
@@ -72,11 +93,18 @@ export function getClearedMatchedAmount(accrual) {
|
|
|
72
93
|
export function getActualMatchingAmount(row) {
|
|
73
94
|
return row.actualAmount?.amount ?? row.estimatedAmount.amount;
|
|
74
95
|
}
|
|
75
|
-
|
|
76
|
-
if (
|
|
77
|
-
return
|
|
96
|
+
function parseMatchTransactionDate(transactionDate) {
|
|
97
|
+
if (transactionDate == null || transactionDate === '') {
|
|
98
|
+
return undefined;
|
|
78
99
|
}
|
|
79
|
-
|
|
100
|
+
const parsed = date(transactionDate);
|
|
101
|
+
return Number.isFinite(parsed.valueOf()) ? parsed : undefined;
|
|
102
|
+
}
|
|
103
|
+
export function getActualMatchingReversalDate(accrual, matchTransactionDate) {
|
|
104
|
+
const matchedDate = isPendingReviewAccrual(accrual)
|
|
105
|
+
? accrual.matchSuggestion.matchedTransactionDate
|
|
106
|
+
: accrual.cleared?.matchedTransactionDate;
|
|
107
|
+
return matchedDate ?? parseMatchTransactionDate(matchTransactionDate);
|
|
80
108
|
}
|
|
81
109
|
function collectGroupedMembers(members) {
|
|
82
110
|
if (members.length <= 1) {
|
|
@@ -90,12 +118,32 @@ function collectGroupedMembers(members) {
|
|
|
90
118
|
serviceMonth: member.serviceMonth,
|
|
91
119
|
}));
|
|
92
120
|
}
|
|
121
|
+
function collectLeftoverMembers(leftovers) {
|
|
122
|
+
if (leftovers == null || leftovers.length === 0) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
return leftovers.map((member) => ({
|
|
126
|
+
accrualId: member.accrualId,
|
|
127
|
+
estimatedAmount: member.estimatedAmount,
|
|
128
|
+
jeDebitAccountName: member.jeDebitAccountName,
|
|
129
|
+
memo: member.memo,
|
|
130
|
+
serviceMonth: member.serviceMonth,
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
93
133
|
function toActualMatchingRow(match) {
|
|
94
134
|
const firstMember = match.members[0];
|
|
95
135
|
if (firstMember == null) {
|
|
96
136
|
throw new Error('Actual matching row requires at least one member');
|
|
97
137
|
}
|
|
98
138
|
const first = toMatchModalAccrual(firstMember);
|
|
139
|
+
const leftoverMembers = match.leftovers ?? [];
|
|
140
|
+
const fromCleared = firstMember.cleared?.intendedAccrualIds;
|
|
141
|
+
const intendedAccrualIds = fromCleared != null && fromCleared.length > 0
|
|
142
|
+
? fromCleared
|
|
143
|
+
: [
|
|
144
|
+
...match.members.map((member) => member.accrualId),
|
|
145
|
+
...leftoverMembers.map((leftover) => leftover.accrualId),
|
|
146
|
+
];
|
|
99
147
|
return {
|
|
100
148
|
...first,
|
|
101
149
|
matchId: match.matchId,
|
|
@@ -108,8 +156,12 @@ function toActualMatchingRow(match) {
|
|
|
108
156
|
transactionDate: match.transactionDate,
|
|
109
157
|
groupedAccrualIds: match.members.map((member) => member.accrualId),
|
|
110
158
|
groupedMembers: collectGroupedMembers(match.members),
|
|
111
|
-
|
|
112
|
-
|
|
159
|
+
intendedAccrualIds,
|
|
160
|
+
leftovers: collectLeftoverMembers(match.leftovers),
|
|
161
|
+
reversalDate: getActualMatchingReversalDate(first, match.transactionDate),
|
|
162
|
+
vendorName: match.vendorName != null && match.vendorName !== ''
|
|
163
|
+
? match.vendorName
|
|
164
|
+
: first.vendorName,
|
|
113
165
|
estimatedAmount: match.accruedAmount,
|
|
114
166
|
};
|
|
115
167
|
}
|
|
@@ -118,10 +170,10 @@ function matchesSearch(row, searchString) {
|
|
|
118
170
|
if (trimmed.length === 0) {
|
|
119
171
|
return true;
|
|
120
172
|
}
|
|
121
|
-
if (row.vendorName.toLowerCase().includes(trimmed)) {
|
|
173
|
+
if ((row.vendorName ?? '').toLowerCase().includes(trimmed)) {
|
|
122
174
|
return true;
|
|
123
175
|
}
|
|
124
|
-
if (row.memo.toLowerCase().includes(trimmed)) {
|
|
176
|
+
if ((row.memo ?? '').toLowerCase().includes(trimmed)) {
|
|
125
177
|
return true;
|
|
126
178
|
}
|
|
127
179
|
return (row.groupedMembers ?? []).some((member) => (member.memo ?? '').toLowerCase().includes(trimmed));
|
|
@@ -129,9 +181,14 @@ function matchesSearch(row, searchString) {
|
|
|
129
181
|
function getActualMatchingSortValue(row, sortKey) {
|
|
130
182
|
switch (sortKey) {
|
|
131
183
|
case 'vendor':
|
|
132
|
-
return row.vendorName.toLowerCase();
|
|
133
|
-
case 'date':
|
|
134
|
-
|
|
184
|
+
return (row.vendorName ?? '').toLowerCase();
|
|
185
|
+
case 'date': {
|
|
186
|
+
const millis = row.reversalDate?.valueOf() ??
|
|
187
|
+
(row.transactionDate != null && row.transactionDate !== ''
|
|
188
|
+
? date(row.transactionDate).valueOf()
|
|
189
|
+
: 0);
|
|
190
|
+
return Number.isFinite(millis) ? millis : 0;
|
|
191
|
+
}
|
|
135
192
|
case 'amount':
|
|
136
193
|
return getActualMatchingAmount(row);
|
|
137
194
|
case 'category':
|
|
@@ -164,17 +221,103 @@ function sortActualMatchingRows(rows, uiState) {
|
|
|
164
221
|
const lodashOrder = uiState.sortOrder === 'ascending' ? 'asc' : 'desc';
|
|
165
222
|
return orderBy(rows, [(row) => getActualMatchingSortValue(row, uiState.sortKey)], [lodashOrder]);
|
|
166
223
|
}
|
|
224
|
+
const ESTIMATED_MINUTES_PER_PENDING_MATCH = 4;
|
|
167
225
|
function emptyKpiSummary() {
|
|
168
226
|
return {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
manual: { count: 0 },
|
|
227
|
+
actualsReceived: { count: 0, expectedCount: 0, vendorsPending: 0 },
|
|
228
|
+
autoReversed: { count: 0, percent: 0, clearedAmount: 0 },
|
|
229
|
+
pendingReview: { count: 0, amount: 0, estimatedMinutesToClear: 0 },
|
|
230
|
+
variance: { percent: 0, averagePercentPerMatch: 0, netAmount: 0 },
|
|
174
231
|
};
|
|
175
232
|
}
|
|
176
|
-
function sumRowAmounts(rows) {
|
|
177
|
-
return rows.reduce((sum, row) =>
|
|
233
|
+
function sumRowAmounts(rows, displayCurrencyCode) {
|
|
234
|
+
return rows.reduce((sum, row) => {
|
|
235
|
+
if (displayCurrencyCode != null &&
|
|
236
|
+
row.accruedAmount.currencyCode !== displayCurrencyCode) {
|
|
237
|
+
return sum;
|
|
238
|
+
}
|
|
239
|
+
return sum + getActualMatchingAmount(row);
|
|
240
|
+
}, 0);
|
|
241
|
+
}
|
|
242
|
+
function uniqueVendorCount(rows) {
|
|
243
|
+
const ids = new Set();
|
|
244
|
+
rows.forEach((row) => {
|
|
245
|
+
if (row.vendorId != null && row.vendorId !== '') {
|
|
246
|
+
ids.add(row.vendorId);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (row.vendorName != null && row.vendorName !== '') {
|
|
250
|
+
ids.add(row.vendorName);
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
return ids.size;
|
|
254
|
+
}
|
|
255
|
+
function rowVariancePercent(row) {
|
|
256
|
+
const accrued = row.accruedAmount?.amount ?? row.estimatedAmount.amount;
|
|
257
|
+
const actual = row.actualAmount?.amount;
|
|
258
|
+
if (actual == null || accrued === 0) {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
return ((actual - accrued) / Math.abs(accrued)) * 100;
|
|
262
|
+
}
|
|
263
|
+
export function buildActualMatchingKpiSummary(rows, displayCurrencyCode) {
|
|
264
|
+
if (rows.length === 0) {
|
|
265
|
+
return emptyKpiSummary();
|
|
266
|
+
}
|
|
267
|
+
const autoReversed = rows.filter((row) => row.kind === 'auto_reversed');
|
|
268
|
+
const pendingReview = rows.filter((row) => row.kind === 'pending_review');
|
|
269
|
+
const receivedCount = rows.length;
|
|
270
|
+
const rowsWithActual = rows.filter((row) => {
|
|
271
|
+
if (row.actualAmount?.amount == null) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
if (displayCurrencyCode == null) {
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
277
|
+
const rowCurrency = row.accruedAmount?.currencyCode ?? row.estimatedAmount.currencyCode;
|
|
278
|
+
return rowCurrency === displayCurrencyCode;
|
|
279
|
+
});
|
|
280
|
+
const accruedTotal = rowsWithActual.reduce((sum, row) => sum + (row.accruedAmount?.amount ?? row.estimatedAmount.amount), 0);
|
|
281
|
+
const actualTotal = rowsWithActual.reduce((sum, row) => sum + (row.actualAmount?.amount ?? 0), 0);
|
|
282
|
+
const variancePercents = rows
|
|
283
|
+
.filter((row) => {
|
|
284
|
+
if (displayCurrencyCode == null) {
|
|
285
|
+
return true;
|
|
286
|
+
}
|
|
287
|
+
const rowCurrency = row.accruedAmount?.currencyCode ?? row.estimatedAmount.currencyCode;
|
|
288
|
+
return rowCurrency === displayCurrencyCode;
|
|
289
|
+
})
|
|
290
|
+
.map(rowVariancePercent)
|
|
291
|
+
.filter((percent) => percent != null);
|
|
292
|
+
return {
|
|
293
|
+
actualsReceived: {
|
|
294
|
+
count: receivedCount,
|
|
295
|
+
// List API does not return still-expected accruals; hide "of N expected"
|
|
296
|
+
// in the strip until expectedCount is greater than received.
|
|
297
|
+
expectedCount: receivedCount,
|
|
298
|
+
vendorsPending: uniqueVendorCount(pendingReview),
|
|
299
|
+
},
|
|
300
|
+
autoReversed: {
|
|
301
|
+
count: autoReversed.length,
|
|
302
|
+
percent: Math.round((autoReversed.length / receivedCount) * 100),
|
|
303
|
+
clearedAmount: sumRowAmounts(autoReversed, displayCurrencyCode),
|
|
304
|
+
},
|
|
305
|
+
pendingReview: {
|
|
306
|
+
count: pendingReview.length,
|
|
307
|
+
amount: sumRowAmounts(pendingReview, displayCurrencyCode),
|
|
308
|
+
estimatedMinutesToClear: pendingReview.length * ESTIMATED_MINUTES_PER_PENDING_MATCH,
|
|
309
|
+
},
|
|
310
|
+
variance: {
|
|
311
|
+
percent: accruedTotal === 0
|
|
312
|
+
? 0
|
|
313
|
+
: ((actualTotal - accruedTotal) / Math.abs(accruedTotal)) * 100,
|
|
314
|
+
averagePercentPerMatch: variancePercents.length === 0
|
|
315
|
+
? 0
|
|
316
|
+
: variancePercents.reduce((sum, percent) => sum + percent, 0) /
|
|
317
|
+
variancePercents.length,
|
|
318
|
+
netAmount: actualTotal - accruedTotal,
|
|
319
|
+
},
|
|
320
|
+
};
|
|
178
321
|
}
|
|
179
322
|
export function getExpenseAutomationActualMatchingMatchView(state, matchId) {
|
|
180
323
|
const view = state.expenseAutomationActualMatchingViewState;
|
|
@@ -182,74 +325,76 @@ export function getExpenseAutomationActualMatchingMatchView(state, matchId) {
|
|
|
182
325
|
match: getActualMatchingMatchById(state.actualMatchingState, matchId),
|
|
183
326
|
detailFetchState: view.detailFetchStateByMatchId[matchId] ?? NOT_STARTED,
|
|
184
327
|
refreshStatus: view.detailRefreshStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
185
|
-
undoReversalStatus: view.
|
|
328
|
+
undoReversalStatus: view.undoReversalStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
329
|
+
lastMatchResults: view.lastMatchResultsByMatchId?.[matchId],
|
|
330
|
+
lastUndoResults: view.lastUndoResultsByMatchId?.[matchId],
|
|
186
331
|
};
|
|
187
332
|
}
|
|
333
|
+
export function getCloseMatchAfterUndo(state) {
|
|
334
|
+
return state.expenseAutomationActualMatchingViewState.closeMatchAfterUndo;
|
|
335
|
+
}
|
|
188
336
|
export function getExpenseAutomationActualMatchingView(state) {
|
|
189
|
-
const { expenseAutomationActualMatchingViewState
|
|
190
|
-
const { matchIdsByPeriod, fetchState, error, refreshStatus, uiState, matchModal,
|
|
191
|
-
const
|
|
192
|
-
const selectedPeriod = expenseAutomationViewState.selectedPeriodByTenantId[currentTenant?.tenantId ?? ''];
|
|
337
|
+
const { expenseAutomationActualMatchingViewState } = state;
|
|
338
|
+
const { matchIdsByPeriod, fetchState, error, refreshStatus, uiState, matchModal, } = expenseAutomationActualMatchingViewState;
|
|
339
|
+
const selectedPeriod = getSelectedMonthYearForCurrentTenant(state);
|
|
193
340
|
const monthYearPeriodId = selectedPeriod != null ? toMonthYearPeriodId(selectedPeriod) : undefined;
|
|
194
341
|
const matchIds = monthYearPeriodId != null ? matchIdsByPeriod[monthYearPeriodId] : undefined;
|
|
195
|
-
const
|
|
342
|
+
const allRows = (matchIds ?? [])
|
|
196
343
|
.map((matchId) => getActualMatchingMatchById(state.actualMatchingState, matchId))
|
|
197
344
|
.filter((match) => match != null)
|
|
198
345
|
.filter((match) => match.members.length > 0)
|
|
199
|
-
.map(toActualMatchingRow)
|
|
200
|
-
|
|
346
|
+
.map(toActualMatchingRow);
|
|
347
|
+
const rows = allRows.filter((row) => matchesSearch(row, uiState.searchString));
|
|
201
348
|
const reversed = sortActualMatchingRows(rows.filter((row) => isReversedMatchKind(row.kind)), uiState);
|
|
202
349
|
const pendingReview = sortActualMatchingRows(rows.filter((row) => row.kind === 'pending_review'), uiState);
|
|
203
|
-
const
|
|
204
|
-
const listedRows = [...reversed, ...pendingReview];
|
|
205
|
-
const kpiSummary = listedRows.length === 0
|
|
206
|
-
? emptyKpiSummary()
|
|
207
|
-
: {
|
|
208
|
-
autoReversed: {
|
|
209
|
-
count: autoReversedForKpi.length,
|
|
210
|
-
amount: sumRowAmounts(autoReversedForKpi),
|
|
211
|
-
},
|
|
212
|
-
pendingReview: {
|
|
213
|
-
count: pendingReview.length,
|
|
214
|
-
amount: sumRowAmounts(pendingReview),
|
|
215
|
-
},
|
|
216
|
-
totalThisClose: {
|
|
217
|
-
count: listedRows.length,
|
|
218
|
-
amount: sumRowAmounts(listedRows),
|
|
219
|
-
},
|
|
220
|
-
ai: {
|
|
221
|
-
count: listedRows.filter((row) => row.origin === 'agent').length,
|
|
222
|
-
},
|
|
223
|
-
manual: {
|
|
224
|
-
count: listedRows.filter((row) => row.origin === 'human').length,
|
|
225
|
-
},
|
|
226
|
-
};
|
|
350
|
+
const kpiSummary = buildActualMatchingKpiSummary(allRows, getTenantDisplayCurrency(state)?.currencyCode);
|
|
227
351
|
const searchedAccruals = matchModal.accrualSearch.results
|
|
228
352
|
.map((key) => getJEOneTimeAccrualByKey(key, state.jeSchedulesState))
|
|
229
353
|
.filter((accrual) => accrual != null);
|
|
230
354
|
const openedMatch = matchModal.openedFromMatchId != null
|
|
231
355
|
? getActualMatchingMatchById(state.actualMatchingState, matchModal.openedFromMatchId)
|
|
232
356
|
: undefined;
|
|
233
|
-
const pinnedAccruals =
|
|
234
|
-
|
|
357
|
+
const pinnedAccruals = [
|
|
358
|
+
...(openedMatch?.members ?? []),
|
|
359
|
+
...(openedMatch?.leftovers ?? []),
|
|
360
|
+
].map(toMatchModalAccrual);
|
|
361
|
+
const firstMember = openedMatch?.members[0];
|
|
362
|
+
const cleared = firstMember?.cleared;
|
|
363
|
+
const suggestion = firstMember?.matchSuggestion;
|
|
364
|
+
const stamp = cleared ?? suggestion;
|
|
365
|
+
const consumedLineIds = cleared?.consumedLineIds;
|
|
235
366
|
const prefill = openedMatch == null
|
|
236
367
|
? undefined
|
|
237
368
|
: {
|
|
238
|
-
selectedAccrualIds:
|
|
369
|
+
selectedAccrualIds: [
|
|
370
|
+
...openedMatch.members.map((member) => member.accrualId),
|
|
371
|
+
...(openedMatch.leftovers ?? []).map((leftover) => leftover.accrualId),
|
|
372
|
+
],
|
|
239
373
|
actualAmount: openedMatch.actualAmount.amount,
|
|
240
|
-
|
|
241
|
-
|
|
374
|
+
matchedTransactionId: stamp?.matchedTransactionId,
|
|
375
|
+
matchedLineId: cleared == null ? suggestion?.matchedLineId : undefined,
|
|
376
|
+
...(consumedLineIds != null && consumedLineIds.length > 0
|
|
377
|
+
? { consumedLineIds }
|
|
378
|
+
: {}),
|
|
242
379
|
};
|
|
380
|
+
// `fetchState` is a flat slice field that survives a period switch. Until this
|
|
381
|
+
// month's ids land, leftover Completed/Error is the previous month. Report
|
|
382
|
+
// Not-Started so chrome matches Review's "cache slot missing" skeleton, not
|
|
383
|
+
// empty-complete or a stale error. In-Progress is this month's fetch.
|
|
384
|
+
const fetchStatus = matchIds == null &&
|
|
385
|
+
fetchState !== 'In-Progress' &&
|
|
386
|
+
fetchState !== 'Not-Started'
|
|
387
|
+
? { fetchState: 'Not-Started', error: undefined }
|
|
388
|
+
: { fetchState, error };
|
|
243
389
|
return {
|
|
244
|
-
fetchState,
|
|
245
|
-
error,
|
|
390
|
+
fetchState: fetchStatus.fetchState,
|
|
391
|
+
error: fetchStatus.error,
|
|
246
392
|
reversed,
|
|
247
393
|
pendingReview,
|
|
248
394
|
kpiSummary,
|
|
249
395
|
uiState,
|
|
250
396
|
refreshStatus,
|
|
251
397
|
hasLoadedForSelectedPeriod: matchIds != null,
|
|
252
|
-
undoReversalStatus,
|
|
253
398
|
matchModal: {
|
|
254
399
|
isOpen: matchModal.isOpen,
|
|
255
400
|
openedFromMatchId: matchModal.openedFromMatchId,
|
|
@@ -366,6 +366,7 @@ export function getExpenseAutomationJESchedulesView(state) {
|
|
|
366
366
|
// reports undefined rather than 0, so the UI can hide the badge instead of asserting "none".
|
|
367
367
|
const scheduleCountsByTab = {};
|
|
368
368
|
ALL_JE_PAGE_TABS.forEach((pageTab) => {
|
|
369
|
+
// AM's badge is `actualMatching.kpiSummary`, not schedule row keys.
|
|
369
370
|
if (pageTab === 'actual_matching') {
|
|
370
371
|
return;
|
|
371
372
|
}
|
|
@@ -30,3 +30,6 @@ const UNDO_REVERSAL_RESULT_STATUSES = [
|
|
|
30
30
|
'error',
|
|
31
31
|
];
|
|
32
32
|
export const toUndoReversalResultStatus = (v) => stringToUnion(v, UNDO_REVERSAL_RESULT_STATUSES);
|
|
33
|
+
export function actualMatchingTransactionLineKey(transactionType, transactionIntegrationId, lineId) {
|
|
34
|
+
return `${transactionType}:${transactionIntegrationId}:${lineId}`;
|
|
35
|
+
}
|
|
@@ -16,6 +16,9 @@ const JE_SCHEDULE_SORT_KEYS = [
|
|
|
16
16
|
'memo',
|
|
17
17
|
];
|
|
18
18
|
export const toJEScheduleSortKey = (v) => stringToUnion(v, JE_SCHEDULE_SORT_KEYS);
|
|
19
|
+
// `actual_matching` is chrome only: the JE tab bar includes it, but AM data is
|
|
20
|
+
// `expenseAutomationActualMatchingViewState`, not the schedules period-tab
|
|
21
|
+
// cache below. Walks of ALL_JE_PAGE_TABS that read schedule keys must skip it.
|
|
19
22
|
const JE_PAGE_TABS = [
|
|
20
23
|
'schedules',
|
|
21
24
|
'actual_matching',
|
|
@@ -33,9 +33,18 @@ const financeStatement = createSlice({
|
|
|
33
33
|
},
|
|
34
34
|
},
|
|
35
35
|
updateFinanceStatementTimeframe(draft, action) {
|
|
36
|
+
// Unrelated UI re-dispatches the *current* timeframe as a side effect (the
|
|
37
|
+
// reports page hangs its table scroll reset off that callback); dropping the
|
|
38
|
+
// anchor there would silently reset the user's period to the latest one.
|
|
39
|
+
if (draft.timeframe === action.payload) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
36
42
|
draft.timeframe = action.payload;
|
|
43
|
+
// A month anchor is meaningless once the timeframe becomes quarter/year, so
|
|
44
|
+
// a real change drops it and returns the width to the default — 12 months
|
|
45
|
+
// must not become 12 quarters. Order is the user's, so it survives.
|
|
37
46
|
draft.selectedCOABalancesRange = {
|
|
38
|
-
numberOfPeriods:
|
|
47
|
+
numberOfPeriods: initialFinanceStatementState.selectedCOABalancesRange.numberOfPeriods,
|
|
39
48
|
orderBy: draft.selectedCOABalancesRange.orderBy,
|
|
40
49
|
};
|
|
41
50
|
},
|
|
@@ -77,8 +86,7 @@ const financeStatement = createSlice({
|
|
|
77
86
|
draft.selectedReportId = action.payload;
|
|
78
87
|
},
|
|
79
88
|
updateFinanceStatementAdditionalBalancesSelection(draft, action) {
|
|
80
|
-
const {
|
|
81
|
-
const safeCoaBalances = coaBalances != null ? coaBalances : [];
|
|
89
|
+
const { additionalBalances: additionalBalancesPayload, maxNumOfPeriodsToHighlight, } = action.payload;
|
|
82
90
|
const additionalBalances = additionalBalancesPayload ?? [];
|
|
83
91
|
let tempAdditionalBalances = [...additionalBalances];
|
|
84
92
|
if (additionalBalances.includes('this_period_vs_last_period') ||
|
|
@@ -94,30 +102,12 @@ const financeStatement = createSlice({
|
|
|
94
102
|
draft.maxNumOfPeriodsToHighlight = maxNumOfPeriodsToHighlight;
|
|
95
103
|
draft.isAdditionalBalancesShown =
|
|
96
104
|
additionalBalances.length != 0 ? true : false;
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
thisPeriod,
|
|
104
|
-
};
|
|
105
|
-
const selectionRanges = getSelectedAndHighlightedRangesForThisPeriod({
|
|
106
|
-
firstMonthOfFY,
|
|
107
|
-
thisPeriod: thisPeriod,
|
|
108
|
-
coaBalances: safeCoaBalances,
|
|
109
|
-
timeframe,
|
|
110
|
-
maxNumOfPeriodsToHighlight: maxNumOfPeriodsToHighlight,
|
|
111
|
-
currentSelection: {
|
|
112
|
-
selectedCOABalancesRange: selectedCoaBalancesRangeWithThisPeriod,
|
|
113
|
-
},
|
|
114
|
-
orderBy: 'ascending_date',
|
|
115
|
-
maxNumOfPeriodsToSelect: maxNumOfPeriodsToHighlight,
|
|
116
|
-
});
|
|
117
|
-
draft.selectedCOABalancesRange =
|
|
118
|
-
selectionRanges.selectedCOABalancesRange;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
105
|
+
// Column metadata only — must not touch selectedCOABalancesRange. The
|
|
106
|
+
// reports page fires this on load, on resize and on every fetch-state
|
|
107
|
+
// transition (so also on report switch and on remount after a drill-down)
|
|
108
|
+
// with a viewport-derived period count that knows nothing about the range
|
|
109
|
+
// the user picked. The width default comes from initial state, and from
|
|
110
|
+
// updateFinanceStatementTimeframe on a real timeframe change.
|
|
121
111
|
},
|
|
122
112
|
updateDownloadState(draft, action) {
|
|
123
113
|
draft.downloadState = action.payload;
|
|
@@ -8,7 +8,7 @@ import { isAwaitingMarkAsPaid, isBulkProcessing, isSodAdminFallbackEligibleForSt
|
|
|
8
8
|
import { applyAdvancedFiltersOnList } from '../../spendManagementFilterHelpers';
|
|
9
9
|
import { getSelectedWithdrawFromAccount } from '../billDetailView/billDetailViewSelector';
|
|
10
10
|
import { getBillPayConfigBotEmail } from '../billPayConfig/billPayConfigSelector';
|
|
11
|
-
import { getCategoryValueForBill } from './billListFilterHelpers';
|
|
11
|
+
import { getActualPaymentDate, getCategoryValueForBill, } from './billListFilterHelpers';
|
|
12
12
|
import { ALL_BILL_TABS, getBillListKey, } from './billListState';
|
|
13
13
|
export const getBillList = (state, currentTimePeriod, isBulkActionFeatureEnabled, loggedInUserId) => {
|
|
14
14
|
const { billListState, billTransactionState, billPayConfigState, entityApprovalStatusState, userState, recurringBillState, billsBulkActionViewState, } = state;
|
|
@@ -432,7 +432,7 @@ export const getBillListOnSort = (sortKey, sortOrder, currentTab, transactions)
|
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
434
|
else {
|
|
435
|
-
if (Boolean(transaction.billPayInfo
|
|
435
|
+
if (Boolean(getActualPaymentDate(transaction.billPayInfo)) === true) {
|
|
436
436
|
transactionsWithSortKeyValue.push(transaction);
|
|
437
437
|
}
|
|
438
438
|
else {
|
|
@@ -517,7 +517,7 @@ export const getBillListOnSort = (sortKey, sortOrder, currentTab, transactions)
|
|
|
517
517
|
case 'dueDate':
|
|
518
518
|
return currentTab === 'draft'
|
|
519
519
|
? transaction.dueDate
|
|
520
|
-
: transaction.billPayInfo
|
|
520
|
+
: getActualPaymentDate(transaction.billPayInfo);
|
|
521
521
|
case 'status':
|
|
522
522
|
return getStatusPerTab(transaction);
|
|
523
523
|
case 'amount':
|
package/lib/index.d.ts
CHANGED
|
@@ -305,12 +305,12 @@ import { updateDashboardLayout } from './view/dashboardLayout/dashboardLayoutRed
|
|
|
305
305
|
import uploadAccountStatementIntoDocumentAI from './view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper';
|
|
306
306
|
import { fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedPeriod, updateCurrentSelectedView } from './view/expenseAutomationView/expenseAutomationViewReducer';
|
|
307
307
|
import { getExpenseAutomationView } from './view/expenseAutomationView/expenseAutomationViewSelector';
|
|
308
|
-
import { ExpenseAutomationViewState, ExpenseAutomationViewType, toExpenseAutomationViewType } from './view/expenseAutomationView/expenseAutomationViewState';
|
|
308
|
+
import { ExpenseAutomationViewState, ExpenseAutomationViewType, toExpenseAutomationViewType, toExpenseAutomationViewTypeStrict } from './view/expenseAutomationView/expenseAutomationViewState';
|
|
309
309
|
import { computeNewScheduleJeDetails } from './view/expenseAutomationView/helpers/newScheduleLocalDataHelper';
|
|
310
310
|
import { isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardCreditType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType } from './view/expenseAutomationView/helpers/reconciliationHelpers';
|
|
311
311
|
import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount } from './view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper';
|
|
312
312
|
import { UploadStatementDocumentAIPayload, UploadStatementDocumentAIResponse } from './view/expenseAutomationView/payload/reconciliationPayload';
|
|
313
|
-
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';
|
|
313
|
+
import { ackCloseMatchAfterUndo, 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';
|
|
314
314
|
import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
|
|
315
315
|
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, removeJeOneTimeAccrualLocalData, 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, updateJeOneTimeAccrualLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
|
|
316
316
|
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';
|
|
@@ -334,7 +334,7 @@ import { getExpenseAutomationReconciliationView, getLedgerAccountIdsWithStatemen
|
|
|
334
334
|
import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
|
|
335
335
|
import { applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
|
|
336
336
|
import { TRANSACTION_FILTER_CATEGORIES, TransactionFilterAmountMatchingOperator, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters } from './view/expenseAutomationView/transactionFilterTypes';
|
|
337
|
-
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';
|
|
337
|
+
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, actualMatchingTransactionLineKey, toActualMatchingSortKey as toExpenseAutomationActualMatchingSortKey, toMatchAndReverseResultStatus, toUndoReversalResultStatus } from './view/expenseAutomationView/types/actualMatchingViewState';
|
|
338
338
|
import { CompletedSubTab, DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab } from './view/expenseAutomationView/types/completedSubTab';
|
|
339
339
|
import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSectionType, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
|
|
340
340
|
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';
|
|
@@ -735,7 +735,7 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
|
|
|
735
735
|
export { ClassesViewSelectorReportV2 };
|
|
736
736
|
export { BalancesTimeseries, TrendTimeseries, BalanceKind };
|
|
737
737
|
export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, MonthCloseCheckProgressJson, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
|
|
738
|
-
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, };
|
|
738
|
+
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, actualMatchingTransactionLineKey, 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, toExpenseAutomationViewTypeStrict, 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, };
|
|
739
739
|
export { JEScheduleLocalData };
|
|
740
740
|
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, };
|
|
741
741
|
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, };
|
|
@@ -951,7 +951,7 @@ export { fetchApAging, getApAgingReport, updateApAgingUIState, AgingReportId, Ap
|
|
|
951
951
|
export { fetchApAgingDetail, AgingReportInvoice, ApAgingDetail, getApAgingDetailForVendor, updateApAgingDetailUIState, };
|
|
952
952
|
export { LinkBillExpenseKey };
|
|
953
953
|
export { clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, clearJeSearchTransactionsForNewSchedule, fetchExpenseAutomationJESchedulesPage, ignoreExpenseAutomationJESchedule, initializeJeAccountSettingsView, initializeJeNewSchedule, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, resetJeNewScheduleLocalData, retryExpenseAutomationJESchedule, saveJeNewSchedule, saveJeNewScheduleFailure, saveJeNewScheduleSuccess, searchJeTransactionsForNewSchedule, searchJeTransactionsForNewScheduleFailure, searchJeTransactionsForNewScheduleSuccess, updateExpenseAutomationJESchedulesUIState, updateJeNewScheduleLocalData, removeJeOneTimeAccrualLocalData, updateJeOneTimeAccrualLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, };
|
|
954
|
-
export { clearExpenseAutomationActualMatchingView, closeMatchNewModal, clearMatchNewModal, fetchExpenseAutomationActualMatching, fetchActualMatchingMatch, fetchExpenseAutomationActualMatchingPage, matchAndReverseAccruals, openMatchNewModal, searchMatchAccruals, searchMatchTransactions, undoReversalAccruals, updateExpenseAutomationActualMatchingUIState, };
|
|
954
|
+
export { ackCloseMatchAfterUndo, clearExpenseAutomationActualMatchingView, closeMatchNewModal, clearMatchNewModal, fetchExpenseAutomationActualMatching, fetchActualMatchingMatch, fetchExpenseAutomationActualMatchingPage, matchAndReverseAccruals, openMatchNewModal, searchMatchAccruals, searchMatchTransactions, undoReversalAccruals, updateExpenseAutomationActualMatchingUIState, };
|
|
955
955
|
export { createNewSchedulesAccrued, deleteScheduleAccruedDetail, cancelScheduleAccruedJournalEntry, fetchScheduleAccruedDetails, fetchScheduleAccruedDetailsPage, resetJEAccruedLinkInLocalData, saveScheduleAccruedDetails, updateAmountsInScheduleAccruedDetail, updatedJEAccruedLinkWithRecommendedLocalData, updatedJELinkInLocalDataAccruedExpenses, fetchRecommendedTransactionRowIndex, clearSelectedJELinkRowIndex, updateLinkBillExpenseLocalData, updateScheduleAccruedDetailsLocalData, updateSelectedJEAccruedScheduleKey, resetSelectedJEAccruedScheduleKey, resetAccruedDetailNewScheduleState, };
|
|
956
956
|
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, };
|
|
957
957
|
export { GlobalMerchant, GlobalMerchantBase, TenantMerchant };
|
|
@@ -1258,7 +1258,8 @@ export type { InvoicingOnboardingGateView } from './view/invoicing/invoicingConf
|
|
|
1258
1258
|
export type { InvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|
|
1259
1259
|
export type { InvoicingOnboardingStatus } from './view/invoicing/invoicingConfigView/invoicingConfigViewPayload';
|
|
1260
1260
|
export { getExpenseAutomationJEOneTimeAccrualDetailView, getJEScheduleRowType, isAccruedScheduleRow, isAiAccountantSchedule, isExistingTabRow, isOneTimeAccrualRow, isRenderableOneTimeAccrual, isPendingReviewRow, } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
|
|
1261
|
-
export { getActualMatchingAmount, getActualMatchingReversalDate, parseActualMatchingMatchId, getExpenseAutomationActualMatchingMatchView, getExpenseAutomationActualMatchingView, isAutoReversedAccrual, isManuallyReversedAccrual, isPendingReviewAccrual, } from './view/expenseAutomationView/selectors/actualMatchingViewSelector';
|
|
1261
|
+
export { getActualMatchingAmount, getActualMatchingReversalDate, getCloseMatchAfterUndo, parseActualMatchingMatchId, getExpenseAutomationActualMatchingMatchView, getExpenseAutomationActualMatchingView, isAutoReversedAccrual, isManuallyReversedAccrual, isPendingReviewAccrual, } from './view/expenseAutomationView/selectors/actualMatchingViewSelector';
|
|
1262
1262
|
export type { ExpenseAutomationActualMatchingMatchView } from './view/expenseAutomationView/selectors/actualMatchingViewSelector';
|
|
1263
1263
|
export type { ActualMatchingMatch, ActualMatchingMatchKind, } from './entity/actualMatching/actualMatchingState';
|
|
1264
1264
|
export type { ActualMatchingMatchId } from './entity/actualMatching/actualMatchingTypes';
|
|
1265
|
+
export type { DisplayCurrencyFallback } from './entity/actualMatching/actualMatchingPayload';
|