@zeniai/client-epic-state 4.19.96-betaSS2 → 4.19.96
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/commonStateTypes/animations.d.ts +1 -1
- package/lib/entity/aiCfo/aiCfoSelector.d.ts +2 -1
- package/lib/entity/billPay/billTransaction/billTransactionState.d.ts +2 -2
- package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +0 -38
- package/lib/entity/jeSchedules/jeSchedulesPayload.js +0 -78
- package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +1 -4
- package/lib/entity/jeSchedules/jeSchedulesSelector.js +1 -5
- package/lib/entity/jeSchedules/jeSchedulesState.d.ts +0 -37
- package/lib/entity/tenant/tenantPayload.d.ts +0 -1
- package/lib/entity/tenant/tenantReducer.js +0 -1
- package/lib/entity/tenant/tenantSelector.d.ts +0 -1
- package/lib/entity/tenant/tenantSelector.js +1 -9
- package/lib/entity/tenant/tenantState.d.ts +0 -1
- package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +1 -4
- package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.js +0 -1
- package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +0 -3
- package/lib/entity/transaction/payloadTypes/transactionPayload.js +0 -11
- package/lib/entity/transaction/stateTypes/scheduleTransaction.d.ts +0 -1
- package/lib/entity/transaction/stateTypes/transaction.d.ts +0 -3
- package/lib/entity/transaction/stateTypes/transactionLine.d.ts +1 -1
- package/lib/epic.d.ts +1 -2
- package/lib/epic.js +1 -2
- package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +0 -78
- package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +1 -5
- package/lib/esm/entity/tenant/tenantReducer.js +0 -1
- package/lib/esm/entity/tenant/tenantSelector.js +0 -7
- package/lib/esm/entity/transaction/payloadTypes/scheduleTransactionPayload.js +0 -1
- package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +0 -11
- package/lib/esm/epic.js +1 -2
- package/lib/esm/index.js +7 -8
- package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +1 -82
- package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +2 -8
- package/lib/esm/view/classList/fetchClassListEpic.js +2 -9
- package/lib/esm/view/commonVendorView/vendorView/vendorViewSelector.js +5 -15
- package/lib/esm/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +2 -6
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewSelector.js +1 -0
- package/lib/esm/view/expenseAutomationView/helpers/saveTransactionHelper.js +2 -2
- package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
- package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +1 -17
- package/lib/esm/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +2 -10
- package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +6 -61
- package/lib/esm/view/expenseAutomationView/selectors/missingReceiptsSelector.js +4 -12
- package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +9 -22
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +6 -12
- package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +1 -17
- package/lib/esm/view/spendManagement/billPay/billList/billListSelector.js +0 -10
- package/lib/esm/view/spendManagement/billPay/billList/billListState.js +0 -1
- package/lib/esm/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
- package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
- package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
- package/lib/esm/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardList.js +0 -1
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -2
- package/lib/esm/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +4 -7
- package/lib/esm/view/spendManagement/reimbursement/remiListView/remiListSelector.js +0 -12
- package/lib/esm/view/spendManagement/reimbursement/remiListView/remiListState.js +0 -1
- package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +2 -2
- package/lib/esm/view/transactionDetail/epics/saveTransactionHelper.js +2 -2
- package/lib/esm/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -16
- package/lib/index.d.ts +10 -13
- package/lib/index.js +32 -42
- package/lib/tsconfig.typecheck.tsbuildinfo +1 -0
- package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +0 -7
- package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +1 -15
- package/lib/view/aiCfoView/aiCfoViewReducer.js +2 -83
- package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +1 -4
- package/lib/view/aiCfoView/aiCfoViewSelector.js +2 -9
- package/lib/view/aiCfoView/aiCfoViewState.d.ts +1 -18
- package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
- package/lib/view/classList/fetchClassListEpic.d.ts +1 -1
- package/lib/view/classList/fetchClassListEpic.js +1 -8
- package/lib/view/commonVendorView/vendorView/vendorViewSelector.d.ts +0 -1
- package/lib/view/commonVendorView/vendorView/vendorViewSelector.js +5 -15
- package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.d.ts +0 -1
- package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +2 -6
- package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +1 -0
- package/lib/view/expenseAutomationView/helpers/saveTransactionHelper.js +2 -2
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
- package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +2 -2
- package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +2 -18
- package/lib/view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes.d.ts +0 -2
- package/lib/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +2 -10
- package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +6 -61
- package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.js +4 -12
- package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +9 -22
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +5 -11
- package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +0 -5
- package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +0 -19
- package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
- package/lib/view/spendManagement/billPay/billList/billListSelector.js +0 -10
- package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
- package/lib/view/spendManagement/billPay/billList/billListState.js +0 -1
- package/lib/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
- package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
- package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
- package/lib/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.js +0 -1
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -2
- package/lib/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +3 -6
- package/lib/view/spendManagement/reimbursement/remiListView/remiListSelector.d.ts +0 -1
- package/lib/view/spendManagement/reimbursement/remiListView/remiListSelector.js +0 -12
- package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +1 -1
- package/lib/view/spendManagement/reimbursement/remiListView/remiListState.js +0 -1
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +2 -2
- package/lib/view/transactionDetail/epics/saveTransactionHelper.js +2 -2
- package/lib/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -16
- package/package.json +1 -1
- package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +0 -29
- package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +0 -8
- package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +0 -33
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
-
function removeSessionIdFromPageKeyMap(draft, sessionId) {
|
|
3
|
-
const map = draft.uiState.chatSessionIdByPageKey;
|
|
4
|
-
for (const key of Object.keys(map)) {
|
|
5
|
-
if (map[key] === sessionId) {
|
|
6
|
-
delete map[key];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
function mirrorCurrentSessionToPageKeyMapIfActive(draft) {
|
|
11
|
-
const key = draft.uiState.aiCfoSidePanelHostPageKey;
|
|
12
|
-
const sessionId = draft.uiState.currentChatSessionId;
|
|
13
|
-
if (key != null && sessionId != null) {
|
|
14
|
-
draft.uiState.chatSessionIdByPageKey[key] = sessionId;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
2
|
export const initialAiCfoViewState = {
|
|
18
3
|
fetchState: 'Not-Started',
|
|
19
4
|
error: undefined,
|
|
@@ -21,8 +6,6 @@ export const initialAiCfoViewState = {
|
|
|
21
6
|
currentInput: '',
|
|
22
7
|
scrollPositionByChatSessionId: {},
|
|
23
8
|
currentChatSessionId: undefined,
|
|
24
|
-
aiCfoSidePanelHostPageKey: undefined,
|
|
25
|
-
chatSessionIdByPageKey: {},
|
|
26
9
|
agentId: undefined,
|
|
27
10
|
chatHistoryNextPageToken: {},
|
|
28
11
|
chatSessionsNextPageToken: { nextPageToken: null, hasMore: false },
|
|
@@ -46,7 +29,6 @@ export const initialAiCfoViewState = {
|
|
|
46
29
|
fetchChatSessionHistoryByChatSessionId: {},
|
|
47
30
|
responseStateByChatSessionId: {},
|
|
48
31
|
stopSubmitStateByChatSessionId: {},
|
|
49
|
-
suggestedQuestionsByPageContext: {},
|
|
50
32
|
};
|
|
51
33
|
const aiCfoView = createSlice({
|
|
52
34
|
name: 'aiCfoView',
|
|
@@ -180,7 +162,6 @@ const aiCfoView = createSlice({
|
|
|
180
162
|
setSession(draft, action) {
|
|
181
163
|
draft.uiState.currentChatSessionId = action.payload.sessionId;
|
|
182
164
|
draft.uiState.agentId = action.payload.agentId;
|
|
183
|
-
mirrorCurrentSessionToPageKeyMapIfActive(draft);
|
|
184
165
|
},
|
|
185
166
|
createSession: {
|
|
186
167
|
reducer(draft, action) {
|
|
@@ -204,7 +185,6 @@ const aiCfoView = createSlice({
|
|
|
204
185
|
nextPageToken: null,
|
|
205
186
|
hasMore: false,
|
|
206
187
|
};
|
|
207
|
-
mirrorCurrentSessionToPageKeyMapIfActive(draft);
|
|
208
188
|
},
|
|
209
189
|
createSessionFailure(draft, action) {
|
|
210
190
|
draft.createSessionState.fetchState = 'Error';
|
|
@@ -242,7 +222,6 @@ const aiCfoView = createSlice({
|
|
|
242
222
|
nextPageToken: null,
|
|
243
223
|
hasMore: false,
|
|
244
224
|
};
|
|
245
|
-
mirrorCurrentSessionToPageKeyMapIfActive(draft);
|
|
246
225
|
},
|
|
247
226
|
createSessionAndSubmitSuccess(draft) {
|
|
248
227
|
// Note: currentChatSessionId, agentId, and chatHistoryNextPageToken are set by initializeNewSessionState
|
|
@@ -359,7 +338,6 @@ const aiCfoView = createSlice({
|
|
|
359
338
|
draft.uiState.currentChatSessionId = undefined;
|
|
360
339
|
draft.uiState.agentId = undefined;
|
|
361
340
|
}
|
|
362
|
-
removeSessionIdFromPageKeyMap(draft, chatSessionId);
|
|
363
341
|
delete draft.uiState.chatHistoryNextPageToken[chatSessionId];
|
|
364
342
|
delete draft.uiState.scrollPositionByChatSessionId[chatSessionId];
|
|
365
343
|
delete draft.fetchChatSessionHistoryByChatSessionId[chatSessionId];
|
|
@@ -382,65 +360,6 @@ const aiCfoView = createSlice({
|
|
|
382
360
|
},
|
|
383
361
|
clearCurrentSessionId(draft) {
|
|
384
362
|
draft.uiState.currentChatSessionId = undefined;
|
|
385
|
-
const key = draft.uiState.aiCfoSidePanelHostPageKey;
|
|
386
|
-
if (key != null) {
|
|
387
|
-
delete draft.uiState.chatSessionIdByPageKey[key];
|
|
388
|
-
}
|
|
389
|
-
},
|
|
390
|
-
applyAiCfoSidePanelHostPageTransition(draft, action) {
|
|
391
|
-
const { newAiCfoSidePanelHostPageKey, nextCurrentChatSessionId } = action.payload;
|
|
392
|
-
const prevKey = draft.uiState.aiCfoSidePanelHostPageKey;
|
|
393
|
-
const curId = draft.uiState.currentChatSessionId;
|
|
394
|
-
if (prevKey != null &&
|
|
395
|
-
prevKey !== newAiCfoSidePanelHostPageKey &&
|
|
396
|
-
curId != null) {
|
|
397
|
-
draft.uiState.chatSessionIdByPageKey[prevKey] = curId;
|
|
398
|
-
}
|
|
399
|
-
draft.uiState.aiCfoSidePanelHostPageKey = newAiCfoSidePanelHostPageKey;
|
|
400
|
-
draft.uiState.currentChatSessionId =
|
|
401
|
-
nextCurrentChatSessionId != null ? nextCurrentChatSessionId : undefined;
|
|
402
|
-
draft.uiState.currentInput = '';
|
|
403
|
-
mirrorCurrentSessionToPageKeyMapIfActive(draft);
|
|
404
|
-
},
|
|
405
|
-
clearAiCfoSidePanelHostPageContext(draft) {
|
|
406
|
-
const key = draft.uiState.aiCfoSidePanelHostPageKey;
|
|
407
|
-
const curId = draft.uiState.currentChatSessionId;
|
|
408
|
-
if (key != null && curId != null) {
|
|
409
|
-
draft.uiState.chatSessionIdByPageKey[key] = curId;
|
|
410
|
-
}
|
|
411
|
-
draft.uiState.aiCfoSidePanelHostPageKey = undefined;
|
|
412
|
-
},
|
|
413
|
-
fetchSuggestedQuestions(draft, action) {
|
|
414
|
-
const { pageContext } = action.payload;
|
|
415
|
-
const prev = draft.suggestedQuestionsByPageContext[pageContext];
|
|
416
|
-
draft.suggestedQuestionsByPageContext[pageContext] = {
|
|
417
|
-
fetchState: 'In-Progress',
|
|
418
|
-
pageContext,
|
|
419
|
-
suggestedQuestions: prev?.suggestedQuestions ?? [],
|
|
420
|
-
generatedAt: prev?.generatedAt,
|
|
421
|
-
error: undefined,
|
|
422
|
-
};
|
|
423
|
-
},
|
|
424
|
-
fetchSuggestedQuestionsSuccess(draft, action) {
|
|
425
|
-
const { pageContext, generatedAt, suggestedQuestions } = action.payload;
|
|
426
|
-
draft.suggestedQuestionsByPageContext[pageContext] = {
|
|
427
|
-
fetchState: 'Completed',
|
|
428
|
-
pageContext,
|
|
429
|
-
generatedAt,
|
|
430
|
-
suggestedQuestions,
|
|
431
|
-
error: undefined,
|
|
432
|
-
};
|
|
433
|
-
},
|
|
434
|
-
fetchSuggestedQuestionsFailure(draft, action) {
|
|
435
|
-
const { pageContext, error } = action.payload;
|
|
436
|
-
const prev = draft.suggestedQuestionsByPageContext[pageContext];
|
|
437
|
-
draft.suggestedQuestionsByPageContext[pageContext] = {
|
|
438
|
-
fetchState: 'Error',
|
|
439
|
-
pageContext,
|
|
440
|
-
suggestedQuestions: prev?.suggestedQuestions ?? [],
|
|
441
|
-
generatedAt: prev?.generatedAt,
|
|
442
|
-
error,
|
|
443
|
-
};
|
|
444
363
|
},
|
|
445
364
|
clearAiCfoView(draft) {
|
|
446
365
|
Object.assign(draft, initialAiCfoViewState);
|
|
@@ -452,5 +371,5 @@ const aiCfoView = createSlice({
|
|
|
452
371
|
},
|
|
453
372
|
},
|
|
454
373
|
});
|
|
455
|
-
export const { submitQuestion, submitQuestionSuccess, submitQuestionFailure, updateResponseState, updateAiCfoViewScrollPosition, updateCurrentInput, clearInput, setSession, createSession, createSessionSuccess, createSessionFailure, createSessionAndSubmit, initializeNewSessionState, createSessionAndSubmitSuccess, createSessionAndSubmitFailure, fetchChatSessionsForUser, fetchChatSessionsForUserSuccess, fetchChatSessionsForUserFailure, fetchChatHistory, fetchChatHistorySuccess, fetchChatHistoryFailure, clearCurrentSessionId, clearLastContextMessage, stopSubmit, stopSubmitSuccess, stopSubmitFailure, stopSubmitQuestion, stopSubmitQuestionSuccess, stopSubmitQuestionFailure, acceptMasterTOS, acceptMasterTOSSuccess, acceptMasterTOSFailure, deleteChatSession, deleteChatSessionSuccess, deleteChatSessionFailure, clearDeleteChatSessionStatus, clearAiCfoView, updateCotCollapsedState,
|
|
374
|
+
export const { submitQuestion, submitQuestionSuccess, submitQuestionFailure, updateResponseState, updateAiCfoViewScrollPosition, updateCurrentInput, clearInput, setSession, createSession, createSessionSuccess, createSessionFailure, createSessionAndSubmit, initializeNewSessionState, createSessionAndSubmitSuccess, createSessionAndSubmitFailure, fetchChatSessionsForUser, fetchChatSessionsForUserSuccess, fetchChatSessionsForUserFailure, fetchChatHistory, fetchChatHistorySuccess, fetchChatHistoryFailure, clearCurrentSessionId, clearLastContextMessage, stopSubmit, stopSubmitSuccess, stopSubmitFailure, stopSubmitQuestion, stopSubmitQuestionSuccess, stopSubmitQuestionFailure, acceptMasterTOS, acceptMasterTOSSuccess, acceptMasterTOSFailure, deleteChatSession, deleteChatSessionSuccess, deleteChatSessionFailure, clearDeleteChatSessionStatus, clearAiCfoView, updateCotCollapsedState, } = aiCfoView.actions;
|
|
456
375
|
export default aiCfoView.reducer;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { initialAiCfoState } from '../../entity/aiCfo/aiCfoReducer';
|
|
2
1
|
import { getAiCfoSelectorView, } from '../../entity/aiCfo/aiCfoSelector';
|
|
3
|
-
import { initialAiCfoViewState } from './aiCfoViewReducer';
|
|
4
2
|
export const getAiCfoView = (state) => {
|
|
5
|
-
const { fetchState, error, uiState, createSessionState, createSessionAndSubmitState, deleteChatSessionStateByChatSessionId, stopSubmitStateByChatSessionId, responseStateByChatSessionId, fetchChatSessionHistoryByChatSessionId, masterTOSAcceptanceState,
|
|
3
|
+
const { fetchState, error, uiState, createSessionState, createSessionAndSubmitState, deleteChatSessionStateByChatSessionId, stopSubmitStateByChatSessionId, responseStateByChatSessionId, fetchChatSessionHistoryByChatSessionId, masterTOSAcceptanceState, } = state.aiCfoViewState;
|
|
6
4
|
return {
|
|
7
5
|
fetchState,
|
|
8
6
|
error,
|
|
@@ -14,11 +12,7 @@ export const getAiCfoView = (state) => {
|
|
|
14
12
|
uiState,
|
|
15
13
|
fetchChatSessionHistoryByChatSessionId,
|
|
16
14
|
masterTOSAcceptanceState,
|
|
17
|
-
|
|
18
|
-
...getAiCfoSelectorView(state.aiCfoState ?? initialAiCfoState),
|
|
15
|
+
...getAiCfoSelectorView(state.aiCfoState),
|
|
19
16
|
version: 1,
|
|
20
17
|
};
|
|
21
18
|
};
|
|
22
|
-
export function getSuggestedQuestionsForPageContext(state, pageContext) {
|
|
23
|
-
return state.aiCfoViewState?.suggestedQuestionsByPageContext?.[pageContext];
|
|
24
|
-
}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import { of } from 'rxjs';
|
|
2
|
-
import { catchError, filter, mergeMap, switchMap
|
|
2
|
+
import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
|
|
3
3
|
import { updateClasses } from '../../entity/class/classReducer';
|
|
4
|
-
import { getIsAccountingClassesEnabled } from '../../entity/tenant/tenantSelector';
|
|
5
4
|
import { createZeniAPIStatus, isSuccessResponse } from '../../responsePayload';
|
|
6
5
|
import { fetchClassList, updateClassList, updateClassListFailure, } from './classListReducer';
|
|
7
|
-
export const fetchClassListEpic = (actions$,
|
|
8
|
-
if (!getIsAccountingClassesEnabled(state)) {
|
|
9
|
-
return of(updateClassList({
|
|
10
|
-
status: createZeniAPIStatus('Success', ''),
|
|
11
|
-
data: { accounting_classes: [] },
|
|
12
|
-
}));
|
|
13
|
-
}
|
|
6
|
+
export const fetchClassListEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchClassList.match), switchMap((action) => {
|
|
14
7
|
const { isIncludeDeleted } = action.payload;
|
|
15
8
|
const queryParams = isIncludeDeleted === true
|
|
16
9
|
? `?query=${encodeURIComponent(JSON.stringify({ is_include_deleted: true }))}`
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { reduceAnyFetchState, reduceFetchState, } from '../../../commonStateTypes/reduceFetchState';
|
|
2
|
-
import { getIsAccountingClassesEnabled } from '../../../entity/tenant/tenantSelector';
|
|
3
2
|
import { getAccountBase } from '../../../entity/account/accountSelector';
|
|
4
3
|
import { getAddressByAddressId } from '../../../entity/address/addressSelector';
|
|
5
4
|
import { getBankAccountsByBankAccountIds } from '../../../entity/bankAccount/bankAccountSelector';
|
|
@@ -61,17 +60,13 @@ export const getVendorView = (state, vendorIdFromUrl) => {
|
|
|
61
60
|
?.vendorDetailLocalData,
|
|
62
61
|
supportedCountries: billPayConfigState.vendor.supportedCountries,
|
|
63
62
|
};
|
|
64
|
-
|
|
65
|
-
const editFetchStateList = [
|
|
63
|
+
fetchState = reduceFetchState([
|
|
66
64
|
accountList,
|
|
65
|
+
classList,
|
|
67
66
|
vendorTypeListState,
|
|
68
67
|
vendorViewState.editVendorStateById[vendorIdFromUrl]?.fetchStatus ??
|
|
69
68
|
vendorViewInitialState.newVendorState.fetchStatus,
|
|
70
|
-
];
|
|
71
|
-
if (isAccountingClassesEnabled) {
|
|
72
|
-
editFetchStateList.push(classList);
|
|
73
|
-
}
|
|
74
|
-
fetchState = reduceFetchState(editFetchStateList);
|
|
69
|
+
]);
|
|
75
70
|
}
|
|
76
71
|
else {
|
|
77
72
|
const basicVendorDetails = getBasicVendorDetailsForNewVendor(state, vendorViewState.newVendorState);
|
|
@@ -100,14 +95,11 @@ export const getVendorView = (state, vendorIdFromUrl) => {
|
|
|
100
95
|
if (tentativeName != null) {
|
|
101
96
|
entityRecommendations = getRecommendationsForEntity(state, tentativeName, 'vendor');
|
|
102
97
|
}
|
|
103
|
-
const isAccountingClassesEnabled = getIsAccountingClassesEnabled(state);
|
|
104
98
|
const fetchStateList = [
|
|
105
99
|
{ fetchState: accountList.fetchState, error: accountList.error },
|
|
100
|
+
{ fetchState: classList.fetchState, error: classList.error },
|
|
106
101
|
vendorTypeListState,
|
|
107
102
|
];
|
|
108
|
-
if (isAccountingClassesEnabled) {
|
|
109
|
-
fetchStateList.push({ fetchState: classList.fetchState, error: classList.error });
|
|
110
|
-
}
|
|
111
103
|
if (entityRecommendations != null &&
|
|
112
104
|
entityRecommendations.recommendations != null &&
|
|
113
105
|
entityRecommendations.recommendations.length > 0) {
|
|
@@ -152,7 +144,6 @@ export const getVendorView = (state, vendorIdFromUrl) => {
|
|
|
152
144
|
fetchState: fetchState.fetchState,
|
|
153
145
|
hasWireTransfer,
|
|
154
146
|
hasInternationalWireTransfer,
|
|
155
|
-
isAccountingClassesEnabled: getIsAccountingClassesEnabled(state),
|
|
156
147
|
deleteFileStatusById,
|
|
157
148
|
updateFileStatusById,
|
|
158
149
|
loggedInUserVerification,
|
|
@@ -228,10 +219,9 @@ const getBasicVendorDetailsForNewVendor = (state, newVendor) => {
|
|
|
228
219
|
};
|
|
229
220
|
export const getVendorDetailPageView = (state, vendorId, entity) => {
|
|
230
221
|
const trendWithTransactions = getTrendWithTransactions(state, entity, 'EntityDetail');
|
|
231
|
-
const isAccountingClassesEnabled = getIsAccountingClassesEnabled(state);
|
|
232
222
|
const reducedFetchState = reduceAnyFetchState([
|
|
233
223
|
state.accountListState.byReportId.accountList,
|
|
234
|
-
|
|
224
|
+
state.classListState,
|
|
235
225
|
state.vendorTypeListState,
|
|
236
226
|
state.ownerListState,
|
|
237
227
|
state.vendorViewState.editVendorStateById[vendorId]?.fetchStatus ?? {
|
|
@@ -3,7 +3,6 @@ import { getStartOfAndEndOfTimeframeForFY } from '../../../commonStateTypes/fisc
|
|
|
3
3
|
import { reduceAnyFetchState, reduceFetchState, } from '../../../commonStateTypes/reduceFetchState';
|
|
4
4
|
import { stringToUnion } from '../../../commonStateTypes/stringToUnion';
|
|
5
5
|
import { getAccountBase } from '../../../entity/account/accountSelector';
|
|
6
|
-
import { getIsAccountingClassesEnabled } from '../../../entity/tenant/tenantSelector';
|
|
7
6
|
import { getAddressByAddressId } from '../../../entity/address/addressSelector';
|
|
8
7
|
import { getContactsByIds } from '../../../entity/billPay/contact/contactSelector';
|
|
9
8
|
import { getClassById } from '../../../entity/class/classSelector';
|
|
@@ -21,7 +20,6 @@ const ALL_VENDOR_DETAIL_TABS_TYPES = [
|
|
|
21
20
|
export const toVendorDetailTabsType = (v) => stringToUnion(v, ALL_VENDOR_DETAIL_TABS_TYPES);
|
|
22
21
|
export const getVendorsTabVendorView = (state, vendorIdFromUrl) => {
|
|
23
22
|
const { accountListState, accountState, classListState, classState, vendorState, userState, vendorsTabVendorViewState, vendorTypeListState, addressState, addressViewState, contactState, } = state;
|
|
24
|
-
const isAccountingClassesEnabled = getIsAccountingClassesEnabled(state);
|
|
25
23
|
const accountList = getAccountList(accountState, accountListState, 'accountList');
|
|
26
24
|
const classList = getClassList(classState, classListState);
|
|
27
25
|
const ownerList = getUsersByUserIds(state.userState, state.ownerListState.ownerIds);
|
|
@@ -53,7 +51,7 @@ export const getVendorsTabVendorView = (state, vendorIdFromUrl) => {
|
|
|
53
51
|
}
|
|
54
52
|
fetchState = reduceFetchState([
|
|
55
53
|
accountList,
|
|
56
|
-
|
|
54
|
+
classList,
|
|
57
55
|
vendorTypeListState,
|
|
58
56
|
vendorsTabVendorViewState.vendorStateById[vendorIdFromUrl]?.fetchStatus ?? {
|
|
59
57
|
fetchState: 'Not-Started',
|
|
@@ -64,7 +62,6 @@ export const getVendorsTabVendorView = (state, vendorIdFromUrl) => {
|
|
|
64
62
|
return {
|
|
65
63
|
accountList: accountList,
|
|
66
64
|
classList: classList,
|
|
67
|
-
isAccountingClassesEnabled,
|
|
68
65
|
vendorTypeList: vendorTypeList,
|
|
69
66
|
accountsHierarchyList,
|
|
70
67
|
classHierarchyList,
|
|
@@ -105,10 +102,9 @@ export const getVendorsTabDetailPageView = (state, vendorId, entity) => {
|
|
|
105
102
|
? getTransactionListByEntityForSinglePeriod(state, entity, state.vendorsTabVendorViewState.allTransactionsTabData
|
|
106
103
|
.numberOfQuartersFetched)
|
|
107
104
|
: undefined;
|
|
108
|
-
const isAccountingClassesEnabled = getIsAccountingClassesEnabled(state);
|
|
109
105
|
const reducedFetchState = reduceAnyFetchState([
|
|
110
106
|
state.accountListState.byReportId.accountList,
|
|
111
|
-
|
|
107
|
+
state.classListState,
|
|
112
108
|
state.ownerListState,
|
|
113
109
|
state.vendorTypeListState,
|
|
114
110
|
state.vendorsTabVendorViewState.vendorStateById[vendorId]?.fetchStatus ?? {
|
|
@@ -91,6 +91,7 @@ export function getExpenseAutomationView(state) {
|
|
|
91
91
|
const fetchStateVariables = [
|
|
92
92
|
expenseAutomationMissingReceiptsViewState,
|
|
93
93
|
expenseAutomationJESchedulesViewState,
|
|
94
|
+
monthEndCloseChecksView,
|
|
94
95
|
expenseAutomationTransactionsView,
|
|
95
96
|
expenseAutomationReconciliationViewState,
|
|
96
97
|
];
|
|
@@ -64,8 +64,8 @@ export const toTransactionUpdatesFromTransactionCategorizationLocalData = (trans
|
|
|
64
64
|
lineItem.account?.qboId !== accountLine.account.qboId &&
|
|
65
65
|
Boolean(lineItem.account?.qboId);
|
|
66
66
|
hasClassChanged =
|
|
67
|
-
(lineItem.class?.qboId
|
|
68
|
-
lineItem.class?.qboId !== accountLine.class
|
|
67
|
+
Boolean(lineItem.class?.qboId) &&
|
|
68
|
+
lineItem.class?.qboId !== accountLine.class.qboId;
|
|
69
69
|
const recommendedAccountBase = toRecommendedAccountBase(lineItem.amount.amount, lineItem.account);
|
|
70
70
|
const recommendedClassBase = toRecommendedClassBase(lineItem.amount.amount, lineItem.class);
|
|
71
71
|
if (entityDetails != null &&
|
package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js
CHANGED
|
@@ -234,7 +234,7 @@ const buildLineItemById = (transaction, uncategorizedIncomeExpense, recommendati
|
|
|
234
234
|
isPreFilled: true,
|
|
235
235
|
};
|
|
236
236
|
}
|
|
237
|
-
if (
|
|
237
|
+
if (accountLine.class.classId === '' &&
|
|
238
238
|
higherPreferenceRecommendation?.class != null) {
|
|
239
239
|
record.class = {
|
|
240
240
|
...higherPreferenceRecommendation.class,
|
|
@@ -464,7 +464,7 @@ export const setEntityRecommendationForLineIdInLocalData = (draft, transaction,
|
|
|
464
464
|
}
|
|
465
465
|
: accountLine.account;
|
|
466
466
|
record.class =
|
|
467
|
-
|
|
467
|
+
accountLine.class.classId !== ''
|
|
468
468
|
? accountLine.class
|
|
469
469
|
: recommendations?.[0]?.class
|
|
470
470
|
? {
|
|
@@ -44,8 +44,6 @@ export const initialState = {
|
|
|
44
44
|
uiState: {
|
|
45
45
|
searchString: '',
|
|
46
46
|
scrollPosition: { scrollTop: 0, scrollLeft: undefined },
|
|
47
|
-
sortKey: 'startMonth',
|
|
48
|
-
sortOrder: 'descending',
|
|
49
47
|
totalCount: 0,
|
|
50
48
|
limit: 10,
|
|
51
49
|
},
|
|
@@ -367,26 +365,12 @@ const expenseAutomationJESchedulesView = createSlice({
|
|
|
367
365
|
clearJeAccountSettingsLocalData(draft) {
|
|
368
366
|
draft.accountSettings.localData = accountSettingsInitialState.localData;
|
|
369
367
|
},
|
|
370
|
-
updateJESchedulesUIState(draft, action) {
|
|
371
|
-
if (action.payload.sortKey != null) {
|
|
372
|
-
draft.uiState.sortKey = action.payload.sortKey;
|
|
373
|
-
}
|
|
374
|
-
if (action.payload.sortOrder != null) {
|
|
375
|
-
draft.uiState.sortOrder = action.payload.sortOrder;
|
|
376
|
-
}
|
|
377
|
-
if (action.payload.searchString != null) {
|
|
378
|
-
draft.uiState.searchString = action.payload.searchString;
|
|
379
|
-
}
|
|
380
|
-
if (action.payload.scrollPosition != null) {
|
|
381
|
-
draft.uiState.scrollPosition = action.payload.scrollPosition;
|
|
382
|
-
}
|
|
383
|
-
},
|
|
384
368
|
clearExpenseAutomationJESchedulesView(draft) {
|
|
385
369
|
Object.assign(draft, initialState);
|
|
386
370
|
},
|
|
387
371
|
},
|
|
388
372
|
});
|
|
389
|
-
export const { clearExpenseAutomationJESchedulesView, clearJeAccountSettingsLocalData, clearJeScheduleLocalData, fetchAccountSettingsListForAccountTypes, fetchJeSchedules, fetchJeSchedulesFailure, fetchJeSchedulesPage, fetchJeSchedulesSuccess, fetchRecommendationForAccountSettings, ignoreRecommendedJeSchedule, ignoreRecommendedJeScheduleFailure, ignoreRecommendedJeScheduleSuccess, initializeAccountSettingsView, initializeJeScheduleLocalData, removeFailedJeScheduleTransactionKey, removeJeScheduleLocalDataById, removeJeScheduleTransactionKey, retryJeSchedule, retryJeScheduleFailure, retryJeScheduleSuccess, saveAccountSettings, saveAccountSettingsFailure, saveAccountSettingsLocalData, saveAccountSettingsSuccess, updateAccountSettingsListForAccountTypes, updateAccountSettingsListForAccountTypesFailure,
|
|
373
|
+
export const { clearExpenseAutomationJESchedulesView, clearJeAccountSettingsLocalData, clearJeScheduleLocalData, fetchAccountSettingsListForAccountTypes, fetchJeSchedules, fetchJeSchedulesFailure, fetchJeSchedulesPage, fetchJeSchedulesSuccess, fetchRecommendationForAccountSettings, ignoreRecommendedJeSchedule, ignoreRecommendedJeScheduleFailure, ignoreRecommendedJeScheduleSuccess, initializeAccountSettingsView, initializeJeScheduleLocalData, removeFailedJeScheduleTransactionKey, removeJeScheduleLocalDataById, removeJeScheduleTransactionKey, retryJeSchedule, retryJeScheduleFailure, retryJeScheduleSuccess, saveAccountSettings, saveAccountSettingsFailure, saveAccountSettingsLocalData, saveAccountSettingsSuccess, updateAccountSettingsListForAccountTypes, updateAccountSettingsListForAccountTypesFailure, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, updateRecommendationForAccountSettings, updateRecommendationForAccountSettingsFailure, } = expenseAutomationJESchedulesView.actions;
|
|
390
374
|
export default expenseAutomationJESchedulesView.reducer;
|
|
391
375
|
const doUpdateRecommendationForAccountSettings = (draft, payload) => {
|
|
392
376
|
const { prepaidExpensesRecommendations, fixedAssetsRecommendations, accruedExpensesRecommendations, } = mapAccountTypeRecommendationPayloadToAccountRecommendationByType(payload);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { reduceAnyFetchState } from '../../../commonStateTypes/reduceFetchState';
|
|
2
1
|
import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
3
2
|
import { getAccountBase } from '../../../entity/account/accountSelector';
|
|
4
3
|
import { getClassById } from '../../../entity/class/classSelector';
|
|
@@ -7,7 +6,7 @@ import { getUserByUserId } from '../../../entity/user/userSelector';
|
|
|
7
6
|
import { getVendorByVendorId } from '../../../entity/vendor/vendorSelector';
|
|
8
7
|
import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
|
|
9
8
|
export function getExpenseAutomationFluxAnalysisView(state) {
|
|
10
|
-
const { expenseAutomationFluxAnalysisViewState, monthEndCloseChecksState
|
|
9
|
+
const { expenseAutomationFluxAnalysisViewState, monthEndCloseChecksState } = state;
|
|
11
10
|
const { fetchState, error, refreshStatus, uiState, reviewOperatingExpenseIdsByPeriod, selectedSectionIdsByPeriod, groupsBySelectedPeriod, fluxAnalysisEntities, bulkReviewStatus, currency, totalBalancesAndVariance, } = expenseAutomationFluxAnalysisViewState;
|
|
12
11
|
const fetchStateAndError = {
|
|
13
12
|
fetchState,
|
|
@@ -92,17 +91,10 @@ export function getExpenseAutomationFluxAnalysisView(state) {
|
|
|
92
91
|
},
|
|
93
92
|
};
|
|
94
93
|
const completionStatus = fluxCompletionStatus != null ? fluxCompletionStatus : 'incomplete';
|
|
95
|
-
const monthEndFetchState = monthYearPeriodId != null
|
|
96
|
-
? (monthEndCloseChecksViewState.monthEndCloseChecksViewByTenantId[currentTenant.tenantId]?.[monthYearPeriodId] ?? { fetchState: 'Not-Started', error: undefined })
|
|
97
|
-
: { fetchState: 'Not-Started', error: undefined };
|
|
98
|
-
const reducedFetchStatus = reduceAnyFetchState([
|
|
99
|
-
fetchStateAndError,
|
|
100
|
-
monthEndFetchState,
|
|
101
|
-
]);
|
|
102
94
|
return {
|
|
103
95
|
sections,
|
|
104
96
|
totalBalancesAndVariance,
|
|
105
|
-
fetchStatus:
|
|
97
|
+
fetchStatus: fetchStateAndError,
|
|
106
98
|
bulkReviewStatus,
|
|
107
99
|
reviewOperatingExpensesIds,
|
|
108
100
|
selectedSectionIds,
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import omit from 'lodash/omit';
|
|
2
|
-
import orderBy from 'lodash/orderBy';
|
|
3
|
-
import { reduceAnyFetchState } from '../../../commonStateTypes/reduceFetchState';
|
|
4
2
|
import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
5
3
|
import { getAccountIdsForTypes } from '../../../entity/account/accountSelector';
|
|
6
4
|
import { getJEScheduledTransactionByJEScheduleTransactionKey, } from '../../../entity/jeSchedules/jeSchedulesSelector';
|
|
@@ -12,46 +10,10 @@ import { filterNestedAccountHierarchyById } from '../../scheduleView/scheduleDet
|
|
|
12
10
|
import { getAccountLabelForScheduleType, getAccountsTypesForScheduleList, } from '../../scheduleView/scheduleListView/scheduleListHelper';
|
|
13
11
|
import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
|
|
14
12
|
import { getJEAccountSettingsView } from './jeAccountSettingsViewSelector';
|
|
15
|
-
function getJEScheduleSortAccessor(sortKey) {
|
|
16
|
-
switch (sortKey) {
|
|
17
|
-
case 'vendor':
|
|
18
|
-
return (s) => s.vendor.name?.toLowerCase();
|
|
19
|
-
case 'category':
|
|
20
|
-
return (s) => s.jeDebit.account?.accountName?.toLowerCase();
|
|
21
|
-
case 'class':
|
|
22
|
-
return (s) => s.jeDebit.accountingClass?.className?.toLowerCase();
|
|
23
|
-
case 'scheduleCategory':
|
|
24
|
-
return (s) => s.jeScheduleType;
|
|
25
|
-
case 'startMonth':
|
|
26
|
-
return (s) => s.startDate?.valueOf();
|
|
27
|
-
case 'type':
|
|
28
|
-
return (s) => s.baseTransaction.typeOfTransaction;
|
|
29
|
-
case 'amortizationPeriod':
|
|
30
|
-
return (s) => s.period;
|
|
31
|
-
case 'jePostingDate':
|
|
32
|
-
return (s) => s.dayOfPostingDate;
|
|
33
|
-
case 'remainingMonths':
|
|
34
|
-
return (s) => s.period;
|
|
35
|
-
case 'runningBalance':
|
|
36
|
-
return (s) => s.balanceAsOfToday?.amount;
|
|
37
|
-
case 'totalAmount':
|
|
38
|
-
return (s) => s.baseTransaction.amount.amount;
|
|
39
|
-
case 'transactionDate':
|
|
40
|
-
return (s) => s.baseTransaction.date.valueOf();
|
|
41
|
-
case 'memo':
|
|
42
|
-
return (s) => s.baseTransaction.memo?.toLowerCase();
|
|
43
|
-
default:
|
|
44
|
-
return (s) => s.startDate?.valueOf();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function sortJEScheduledTransactions(transactions, sortKey, sortOrder) {
|
|
48
|
-
const accessor = getJEScheduleSortAccessor(sortKey);
|
|
49
|
-
return orderBy(transactions, [accessor], [sortOrder === 'ascending' ? 'asc' : 'desc']);
|
|
50
|
-
}
|
|
51
13
|
export function getExpenseAutomationJESchedulesView(state) {
|
|
52
14
|
const jeScheduledTransaction = [];
|
|
53
15
|
const failedJeScheduledTransaction = [];
|
|
54
|
-
const { accountState, accountListState, classState, classListState, expenseAutomationJESchedulesViewState, expenseAutomationViewState, monthEndCloseChecksState,
|
|
16
|
+
const { accountState, accountListState, classState, classListState, expenseAutomationJESchedulesViewState, expenseAutomationViewState, monthEndCloseChecksState, } = state;
|
|
55
17
|
const { jeScheduleTransactionKeysByPeriod, failedJeScheduleTransactionKeysByPeriod, jeScheduleLocalDataById, postStatusById, ignoreStatusById, uiState, error, fetchState, refreshStatus, } = expenseAutomationJESchedulesViewState;
|
|
56
18
|
const accountSettingsView = getJEAccountSettingsView(state);
|
|
57
19
|
const currentTenant = getCurrentTenant(state);
|
|
@@ -97,33 +59,18 @@ export function getExpenseAutomationJESchedulesView(state) {
|
|
|
97
59
|
const jeScheduleDetails = getJEScheduledTransactionByJEScheduleTransactionKey(jeScheduleKey, state);
|
|
98
60
|
failedJeScheduledTransaction.push(jeScheduleDetails);
|
|
99
61
|
});
|
|
100
|
-
const
|
|
101
|
-
const
|
|
102
|
-
const ongoingSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'ongoing'), sortKey, sortOrder);
|
|
103
|
-
const completedSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'completed' ||
|
|
104
|
-
schedule.status.code === 'marked_as_completed'), sortKey, sortOrder);
|
|
105
|
-
const unsortedResolveSchedules = [];
|
|
62
|
+
const draftSchedules = jeScheduledTransaction.filter((schedule) => schedule.status.code === 'draft');
|
|
63
|
+
const resolveSchedules = [];
|
|
106
64
|
failedJeScheduledTransaction.forEach((schedule) => {
|
|
107
65
|
schedule.scheduledJournalEntry.forEach((journalEntry) => {
|
|
108
|
-
|
|
109
|
-
...schedule,
|
|
110
|
-
scheduledJournalEntry: journalEntry,
|
|
111
|
-
});
|
|
66
|
+
resolveSchedules.push({ ...schedule, scheduledJournalEntry: journalEntry });
|
|
112
67
|
});
|
|
113
68
|
});
|
|
114
|
-
const resolveSchedules = sortJEScheduledTransactions(unsortedResolveSchedules, sortKey, sortOrder);
|
|
115
69
|
const allSteps = monthYearPeriodId != null
|
|
116
70
|
? getAllSteps(monthEndCloseChecksState, monthYearPeriodId, currentTenant.tenantId)
|
|
117
71
|
: [];
|
|
118
72
|
const jeCompletionStatus = allSteps.find((step) => step.step === 'je_schedules')?.completionStatus;
|
|
119
73
|
const completionStatus = jeCompletionStatus != null ? jeCompletionStatus : 'incomplete';
|
|
120
|
-
const monthEndFetchState = monthYearPeriodId != null
|
|
121
|
-
? (monthEndCloseChecksViewState.monthEndCloseChecksViewByTenantId[currentTenant.tenantId]?.[monthYearPeriodId] ?? { fetchState: 'Not-Started', error: undefined })
|
|
122
|
-
: { fetchState: 'Not-Started', error: undefined };
|
|
123
|
-
const reducedFetchStatus = reduceAnyFetchState([
|
|
124
|
-
{ fetchState, error },
|
|
125
|
-
monthEndFetchState,
|
|
126
|
-
]);
|
|
127
74
|
return {
|
|
128
75
|
uncategorizedAccounts,
|
|
129
76
|
allDepreciationAccountList: filteredDepAccounts,
|
|
@@ -132,17 +79,15 @@ export function getExpenseAutomationJESchedulesView(state) {
|
|
|
132
79
|
allAccountList: filteredAccounts,
|
|
133
80
|
accountListNestedAccountHierarchy,
|
|
134
81
|
allClassList: allClasses,
|
|
135
|
-
completedSchedules,
|
|
136
82
|
draftSchedules,
|
|
137
|
-
ongoingSchedules,
|
|
138
83
|
resolveSchedules: resolveSchedules,
|
|
139
84
|
accountSettingsView,
|
|
140
85
|
postStatusById: postStatusById,
|
|
141
86
|
ignoreStatusById: ignoreStatusById,
|
|
142
|
-
fetchState:
|
|
87
|
+
fetchState: fetchState,
|
|
143
88
|
jeScheduleLocalDataById: jeScheduleLocalDataById,
|
|
144
89
|
uiState: uiState,
|
|
145
|
-
error:
|
|
90
|
+
error: error,
|
|
146
91
|
refreshStatus,
|
|
147
92
|
completionStatus,
|
|
148
93
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import orderBy from 'lodash/orderBy';
|
|
2
|
-
import { reduceAnyFetchState } from '../../../commonStateTypes/reduceFetchState';
|
|
3
2
|
import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
4
3
|
import { getCurrentTenant } from '../../../entity/tenant/tenantSelector';
|
|
5
4
|
import { getSupportedTransactionById, getSupportedTransactionsByIds, } from '../../../entity/transaction/transactionSelector';
|
|
@@ -8,7 +7,7 @@ import { getCompletedTransactionsCacheKey } from '../reducers/missingReceiptsVie
|
|
|
8
7
|
import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
|
|
9
8
|
import { isUnmatchedTabFileStatus, } from '../types/missingReceiptsViewState';
|
|
10
9
|
export function getExpenseAutomationMissingReceiptsView(state) {
|
|
11
|
-
const { expenseAutomationMissingReceiptsViewState, expenseAutomationViewState, transactionState, monthEndCloseChecksState,
|
|
10
|
+
const { expenseAutomationMissingReceiptsViewState, expenseAutomationViewState, transactionState, monthEndCloseChecksState, } = state;
|
|
12
11
|
const currentTenant = getCurrentTenant(state);
|
|
13
12
|
const { selectedPeriodByTenantId } = expenseAutomationViewState;
|
|
14
13
|
const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
|
|
@@ -37,7 +36,7 @@ export function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
37
36
|
transaction.lines.length > 0 &&
|
|
38
37
|
transaction.lines[0]
|
|
39
38
|
?.class != null
|
|
40
|
-
? transaction.lines[0].class
|
|
39
|
+
? transaction.lines[0].class.className.toLowerCase()
|
|
41
40
|
: null;
|
|
42
41
|
case 'vendor':
|
|
43
42
|
default:
|
|
@@ -176,16 +175,9 @@ export function getExpenseAutomationMissingReceiptsView(state) {
|
|
|
176
175
|
vendorLogo: result.vendorLogo ?? transaction?.logo?.href,
|
|
177
176
|
};
|
|
178
177
|
});
|
|
179
|
-
const monthEndFetchState = monthYearPeriodId != null
|
|
180
|
-
? (monthEndCloseChecksViewState.monthEndCloseChecksViewByTenantId[currentTenant.tenantId]?.[monthYearPeriodId] ?? { fetchState: 'Not-Started', error: undefined })
|
|
181
|
-
: { fetchState: 'Not-Started', error: undefined };
|
|
182
|
-
const reducedFetchStatus = reduceAnyFetchState([
|
|
183
|
-
{ fetchState, error },
|
|
184
|
-
monthEndFetchState,
|
|
185
|
-
]);
|
|
186
178
|
return {
|
|
187
|
-
fetchState
|
|
188
|
-
error
|
|
179
|
+
fetchState,
|
|
180
|
+
error,
|
|
189
181
|
uploadReceiptStatusById,
|
|
190
182
|
uiState,
|
|
191
183
|
refreshStatus,
|
|
@@ -13,7 +13,7 @@ import { getAccountList, getNestedAccountListHierarchy, } from '../../accountLis
|
|
|
13
13
|
import { getClassList, getNestedClassListHierarchy, } from '../../classList/classListSelector';
|
|
14
14
|
import { initialActionFetchState, initialReconciliationTabsState, initialState, } from '../reducers/reconciliationViewReducer';
|
|
15
15
|
import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
|
|
16
|
-
export const getExpenseAutomationReconciliationView = createSelector((state) => state, (state) => getCurrentTenant(state), (state) => state.expenseAutomationReconciliationViewState, (state) => state.expenseAutomationViewState, (state) => state.plaidAccountViewState, (state) => state.accountListState, (state) => state.accountState, (state) => state.classListState, (state) => state.classState, (state) => state.monthEndCloseChecksState, (state) => state.vendorState, (state
|
|
16
|
+
export const getExpenseAutomationReconciliationView = createSelector((state) => state, (state) => getCurrentTenant(state), (state) => state.expenseAutomationReconciliationViewState, (state) => state.expenseAutomationViewState, (state) => state.plaidAccountViewState, (state) => state.accountListState, (state) => state.accountState, (state) => state.classListState, (state) => state.classState, (state) => state.monthEndCloseChecksState, (state) => state.vendorState, (state, currentTenant, reconciliationViewState, expenseAutomationViewState, plaidAccountViewState, accountListState, accountState, classListState, classState, monthEndCloseChecksState, vendorState) => {
|
|
17
17
|
const { selectedPeriodByTenantId } = expenseAutomationViewState;
|
|
18
18
|
const reconcileTabUiState = reconciliationViewState.reconTabsState.reconcile.uiState;
|
|
19
19
|
const reviewTabUiState = reconciliationViewState.reconTabsState.review.uiState;
|
|
@@ -35,13 +35,6 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
|
|
|
35
35
|
}
|
|
36
36
|
return acc;
|
|
37
37
|
}, []);
|
|
38
|
-
const monthYearPeriodId = selectedPeriod != null ? toMonthYearPeriodId(selectedPeriod) : null;
|
|
39
|
-
const monthEndFetchState = monthYearPeriodId != null
|
|
40
|
-
? (monthEndCloseChecksViewState.monthEndCloseChecksViewByTenantId[currentTenant.tenantId]?.[monthYearPeriodId] ?? {
|
|
41
|
-
fetchState: 'Not-Started',
|
|
42
|
-
error: undefined,
|
|
43
|
-
})
|
|
44
|
-
: { fetchState: 'Not-Started', error: undefined };
|
|
45
38
|
if (accountReconForMonthYearPeriod == null) {
|
|
46
39
|
return {
|
|
47
40
|
bankAccounts: [],
|
|
@@ -51,13 +44,10 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
|
|
|
51
44
|
classListNestedAccountHierarchy: [],
|
|
52
45
|
allAccountList: [],
|
|
53
46
|
allClassList: [],
|
|
54
|
-
fetchStatus:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
},
|
|
59
|
-
monthEndFetchState,
|
|
60
|
-
]),
|
|
47
|
+
fetchStatus: {
|
|
48
|
+
fetchState: reconciliationViewState.fetchState,
|
|
49
|
+
error: reconciliationViewState.error,
|
|
50
|
+
},
|
|
61
51
|
plaidConnectionDetails: plaidAccountViewState['expense_automation_reconcile']
|
|
62
52
|
.plaidConnectionDetails,
|
|
63
53
|
completionStatus: 'incomplete',
|
|
@@ -280,13 +270,10 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
|
|
|
280
270
|
bankAccounts: uniqueBankAccounts,
|
|
281
271
|
creditCards: uniqueCreditCards,
|
|
282
272
|
accountReconciliationsByAccountID: reconList,
|
|
283
|
-
fetchStatus:
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
},
|
|
288
|
-
monthEndFetchState,
|
|
289
|
-
]),
|
|
273
|
+
fetchStatus: {
|
|
274
|
+
fetchState: reconciliationViewState.fetchState,
|
|
275
|
+
error: reconciliationViewState.error,
|
|
276
|
+
},
|
|
290
277
|
plaidConnectionDetails: plaidAccountViewState['expense_automation_reconcile']
|
|
291
278
|
.plaidConnectionDetails,
|
|
292
279
|
reconciliationTabsState: reconciliationViewState.reconTabsState,
|