@zeniai/client-epic-state 4.19.99-betaSS4 → 4.19.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/lib/commonStateTypes/animations.d.ts +1 -1
  2. package/lib/entity/aiCfo/aiCfoSelector.d.ts +2 -1
  3. package/lib/entity/billPay/billTransaction/billTransactionState.d.ts +2 -2
  4. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +0 -38
  5. package/lib/entity/jeSchedules/jeSchedulesPayload.js +0 -78
  6. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +1 -4
  7. package/lib/entity/jeSchedules/jeSchedulesSelector.js +1 -5
  8. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +0 -37
  9. package/lib/entity/tenant/tenantPayload.d.ts +0 -1
  10. package/lib/entity/tenant/tenantReducer.js +0 -1
  11. package/lib/entity/tenant/tenantSelector.d.ts +0 -1
  12. package/lib/entity/tenant/tenantSelector.js +1 -9
  13. package/lib/entity/tenant/tenantState.d.ts +0 -1
  14. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +1 -4
  15. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.js +0 -1
  16. package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +0 -3
  17. package/lib/entity/transaction/payloadTypes/transactionPayload.js +1 -17
  18. package/lib/entity/transaction/stateTypes/scheduleTransaction.d.ts +0 -1
  19. package/lib/entity/transaction/stateTypes/transaction.d.ts +0 -5
  20. package/lib/entity/transaction/stateTypes/transactionLine.d.ts +1 -1
  21. package/lib/epic.d.ts +1 -2
  22. package/lib/epic.js +1 -2
  23. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +0 -78
  24. package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +1 -5
  25. package/lib/esm/entity/tenant/tenantReducer.js +0 -1
  26. package/lib/esm/entity/tenant/tenantSelector.js +0 -7
  27. package/lib/esm/entity/transaction/payloadTypes/scheduleTransactionPayload.js +0 -1
  28. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +1 -17
  29. package/lib/esm/epic.js +1 -2
  30. package/lib/esm/index.js +7 -8
  31. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +1 -82
  32. package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +2 -8
  33. package/lib/esm/view/classList/fetchClassListEpic.js +2 -9
  34. package/lib/esm/view/commonVendorView/vendorView/vendorViewSelector.js +5 -18
  35. package/lib/esm/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +2 -6
  36. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +2 -2
  37. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/bulkUploadReceiptsEpic.js +2 -2
  38. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js +3 -4
  39. package/lib/esm/view/expenseAutomationView/expenseAutomationViewSelector.js +1 -0
  40. package/lib/esm/view/expenseAutomationView/helpers/saveTransactionHelper.js +2 -2
  41. package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
  42. package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +1 -17
  43. package/lib/esm/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +2 -10
  44. package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +6 -63
  45. package/lib/esm/view/expenseAutomationView/selectors/missingReceiptsSelector.js +4 -12
  46. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +9 -22
  47. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +6 -12
  48. package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +1 -18
  49. package/lib/esm/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +8 -3
  50. package/lib/esm/view/profitAndLossClassesView/profitAndLossHorizontalEnrichment.js +63 -144
  51. package/lib/esm/view/spendManagement/billPay/billList/billListSelector.js +0 -10
  52. package/lib/esm/view/spendManagement/billPay/billList/billListState.js +0 -1
  53. package/lib/esm/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
  54. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
  55. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
  56. package/lib/esm/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
  57. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardList.js +0 -1
  58. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -2
  59. package/lib/esm/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +4 -7
  60. package/lib/esm/view/spendManagement/reimbursement/remiListView/remiListSelector.js +0 -12
  61. package/lib/esm/view/spendManagement/reimbursement/remiListView/remiListState.js +0 -1
  62. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +2 -2
  63. package/lib/esm/view/transactionDetail/epics/saveTransactionHelper.js +2 -2
  64. package/lib/esm/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -16
  65. package/lib/index.d.ts +10 -13
  66. package/lib/index.js +32 -42
  67. package/lib/tsconfig.typecheck.tsbuildinfo +1 -0
  68. package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +0 -7
  69. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +1 -15
  70. package/lib/view/aiCfoView/aiCfoViewReducer.js +2 -83
  71. package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +1 -4
  72. package/lib/view/aiCfoView/aiCfoViewSelector.js +2 -9
  73. package/lib/view/aiCfoView/aiCfoViewState.d.ts +1 -18
  74. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  75. package/lib/view/classList/fetchClassListEpic.d.ts +1 -1
  76. package/lib/view/classList/fetchClassListEpic.js +1 -8
  77. package/lib/view/commonVendorView/vendorView/vendorViewSelector.d.ts +0 -1
  78. package/lib/view/commonVendorView/vendorView/vendorViewSelector.js +5 -18
  79. package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.d.ts +0 -1
  80. package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +2 -6
  81. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +2 -2
  82. package/lib/view/expenseAutomationView/epics/missingReceipts/bulkUploadReceiptsEpic.js +1 -1
  83. package/lib/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js +3 -4
  84. package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +1 -0
  85. package/lib/view/expenseAutomationView/helpers/saveTransactionHelper.js +2 -2
  86. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
  87. package/lib/view/expenseAutomationView/payload/jeSchedulesPayload.d.ts +1 -1
  88. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +2 -2
  89. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +2 -18
  90. package/lib/view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes.d.ts +0 -2
  91. package/lib/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +2 -10
  92. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +6 -63
  93. package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.js +4 -12
  94. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +9 -22
  95. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +5 -11
  96. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +0 -5
  97. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +0 -20
  98. package/lib/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +8 -3
  99. package/lib/view/profitAndLossClassesView/profitAndLossHorizontalEnrichment.js +63 -144
  100. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  101. package/lib/view/spendManagement/billPay/billList/billListSelector.js +0 -10
  102. package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
  103. package/lib/view/spendManagement/billPay/billList/billListState.js +0 -1
  104. package/lib/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
  105. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
  106. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
  107. package/lib/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
  108. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  109. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.js +0 -1
  110. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -2
  111. package/lib/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +3 -6
  112. package/lib/view/spendManagement/reimbursement/remiListView/remiListSelector.d.ts +0 -1
  113. package/lib/view/spendManagement/reimbursement/remiListView/remiListSelector.js +0 -12
  114. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +1 -1
  115. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.js +0 -1
  116. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +2 -2
  117. package/lib/view/transactionDetail/epics/saveTransactionHelper.js +2 -2
  118. package/lib/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -16
  119. package/package.json +1 -1
  120. package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +0 -29
  121. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +0 -8
  122. 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, fetchSuggestedQuestions, fetchSuggestedQuestionsSuccess, fetchSuggestedQuestionsFailure, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, } = aiCfoView.actions;
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, suggestedQuestionsByPageContext, } = state.aiCfoViewState ?? initialAiCfoViewState;
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
- suggestedQuestionsByPageContext,
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, withLatestFrom, } from 'rxjs/operators';
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$, state$, zeniAPI) => actions$.pipe(filter(fetchClassList.match), withLatestFrom(state$), switchMap(([action, state]) => {
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 }))}`
@@ -6,7 +6,6 @@ import { getContactsByIds } from '../../../entity/billPay/contact/contactSelecto
6
6
  import { getClassById } from '../../../entity/class/classSelector';
7
7
  import { getFilesByFileIds } from '../../../entity/file/fileSelector';
8
8
  import { getPaymentInstrumentsByIds } from '../../../entity/paymentInstrument/paymentInstrumentSelector';
9
- import { getIsAccountingClassesEnabled } from '../../../entity/tenant/tenantSelector';
10
9
  import { getUserByUserId, getUsersByUserIds, } from '../../../entity/user/userSelector';
11
10
  import { getVendorByVendorId } from '../../../entity/vendor/vendorSelector';
12
11
  import { getAccountList, getNestedAccountListHierarchy, } from '../../accountList/accountListSelector';
@@ -61,17 +60,13 @@ export const getVendorView = (state, vendorIdFromUrl) => {
61
60
  ?.vendorDetailLocalData,
62
61
  supportedCountries: billPayConfigState.vendor.supportedCountries,
63
62
  };
64
- const isAccountingClassesEnabled = getIsAccountingClassesEnabled(state);
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,17 +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({
110
- fetchState: classList.fetchState,
111
- error: classList.error,
112
- });
113
- }
114
103
  if (entityRecommendations != null &&
115
104
  entityRecommendations.recommendations != null &&
116
105
  entityRecommendations.recommendations.length > 0) {
@@ -155,7 +144,6 @@ export const getVendorView = (state, vendorIdFromUrl) => {
155
144
  fetchState: fetchState.fetchState,
156
145
  hasWireTransfer,
157
146
  hasInternationalWireTransfer,
158
- isAccountingClassesEnabled: getIsAccountingClassesEnabled(state),
159
147
  deleteFileStatusById,
160
148
  updateFileStatusById,
161
149
  loggedInUserVerification,
@@ -231,10 +219,9 @@ const getBasicVendorDetailsForNewVendor = (state, newVendor) => {
231
219
  };
232
220
  export const getVendorDetailPageView = (state, vendorId, entity) => {
233
221
  const trendWithTransactions = getTrendWithTransactions(state, entity, 'EntityDetail');
234
- const isAccountingClassesEnabled = getIsAccountingClassesEnabled(state);
235
222
  const reducedFetchState = reduceAnyFetchState([
236
223
  state.accountListState.byReportId.accountList,
237
- ...(isAccountingClassesEnabled ? [state.classListState] : []),
224
+ state.classListState,
238
225
  state.vendorTypeListState,
239
226
  state.ownerListState,
240
227
  state.vendorViewState.editVendorStateById[vendorId]?.fetchStatus ?? {
@@ -6,7 +6,6 @@ import { getAccountBase } from '../../../entity/account/accountSelector';
6
6
  import { getAddressByAddressId } from '../../../entity/address/addressSelector';
7
7
  import { getContactsByIds } from '../../../entity/billPay/contact/contactSelector';
8
8
  import { getClassById } from '../../../entity/class/classSelector';
9
- import { getIsAccountingClassesEnabled } from '../../../entity/tenant/tenantSelector';
10
9
  import { getUserByUserId, getUsersByUserIds, } from '../../../entity/user/userSelector';
11
10
  import { getVendorByVendorId } from '../../../entity/vendor/vendorSelector';
12
11
  import { dateNow } from '../../../zeniDayJS';
@@ -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
- ...(isAccountingClassesEnabled ? [classList] : []),
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
- ...(isAccountingClassesEnabled ? [state.classListState] : []),
107
+ state.classListState,
112
108
  state.ownerListState,
113
109
  state.vendorTypeListState,
114
110
  state.vendorsTabVendorViewState.vendorStateById[vendorId]?.fetchStatus ?? {
@@ -21,13 +21,13 @@ export const fetchJeSchedulesEpic = (actions$, state$, zeniAPI) => actions$.pipe
21
21
  if (isSuccessResponse(response) && response.data != null) {
22
22
  const updateActions = [];
23
23
  updateActions.push(updateJESchedules([
24
- ...response.data.je_schedules,
24
+ ...response.data.draft_je_schedules,
25
25
  ...response.data.failed_je_postings.je_schedules,
26
26
  ]), updateJESchedulesDetails([...response.data.failed_je_postings.je_schedules], response.data.failed_je_postings.scheduled_journal_entries), initializeJeScheduleLocalData([
27
27
  ...response.data.failed_je_postings.je_schedules,
28
28
  ]));
29
29
  updateActions.push(fetchJeSchedulesSuccess({
30
- jeSchedules: [...response.data.je_schedules],
30
+ jeSchedules: [...response.data.draft_je_schedules],
31
31
  failedJeSchedules: [
32
32
  ...response.data.failed_je_postings.je_schedules,
33
33
  ],
@@ -1,9 +1,9 @@
1
1
  import { concat, of, timer } from 'rxjs';
2
- import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
2
+ import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
4
4
  import { BULK_UPLOAD_BAR_COMPLETE_HOLD_MS } from '../../bulkUploadTiming';
5
5
  import { bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, updateBulkUploadProgress, } from '../../reducers/missingReceiptsViewReducer';
6
- export const bulkUploadReceiptsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(bulkUploadReceipts.match), switchMap((action) => {
6
+ export const bulkUploadReceiptsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(bulkUploadReceipts.match), mergeMap((action) => {
7
7
  const { files } = action.payload;
8
8
  const formData = new FormData();
9
9
  for (const file of files) {
@@ -25,7 +25,7 @@ export const pusherBatchStatusCompletionEpic = (actions$) => actions$.pipe(filte
25
25
  * force `phase` to `completed` (dismiss automatching banner) and refresh the batch list.
26
26
  * Cancels when the batch completes normally, bulk state is cleared, or another upload supersedes.
27
27
  */
28
- export const bulkUploadAutomatchingTimeoutEpic = (actions$, state$) => actions$.pipe(filter(bulkUploadReceiptsSuccess.match), switchMap((action) => {
28
+ export const bulkUploadAutomatchingTimeoutEpic = (actions$, state$) => actions$.pipe(filter(bulkUploadReceiptsSuccess.match), mergeMap((action) => {
29
29
  const { batchId } = action.payload;
30
30
  return timer(BULK_UPLOAD_AUTOMATCHING_TIMEOUT_MS).pipe(mergeMap(() => {
31
31
  const bulk = state$.value.expenseAutomationMissingReceiptsViewState.bulkUpload;
@@ -44,11 +44,10 @@ export const bulkUploadAutomatchingTimeoutEpic = (actions$, state$) => actions$.
44
44
  * error snackbar per upload session (first failure only) so the user is not spammed every
45
45
  * interval; Pusher or a later successful poll still completes the flow.
46
46
  */
47
- export const pollBulkUploadBatchStatusEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(bulkUploadReceiptsSuccess.match), switchMap((action) => {
47
+ export const pollBulkUploadBatchStatusEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(bulkUploadReceiptsSuccess.match), mergeMap((action) => {
48
48
  const { batchId } = action.payload;
49
49
  let pollErrorNotified = false;
50
- return timer(FALLBACK_FIRST_DELAY_MS, FALLBACK_POLL_INTERVAL_MS).pipe(takeUntil(merge(actions$.pipe(filter(clearBulkUpload.match)), actions$.pipe(filter(pusherBatchStatusUpdate.match), filter((action) => action.payload.batchId === batchId &&
51
- action.payload.status === 'completed')), actions$.pipe(filter(fetchBulkUploadBatchDetailsSuccess.match), filter((action) => action.payload.batchId === batchId)), actions$.pipe(filter(bulkUploadAutomatchingTimedOut.match), filter((action) => action.payload.batchId === batchId)))), switchMap(() => zeniAPI
50
+ return timer(FALLBACK_FIRST_DELAY_MS, FALLBACK_POLL_INTERVAL_MS).pipe(takeUntil(merge(actions$.pipe(filter(clearBulkUpload.match)), actions$.pipe(filter(pusherBatchStatusUpdate.match), filter((action) => action.payload.batchId === batchId)), actions$.pipe(filter(fetchBulkUploadBatchDetailsSuccess.match), filter((action) => action.payload.batchId === batchId)), actions$.pipe(filter(bulkUploadAutomatchingTimedOut.match), filter((action) => action.payload.batchId === batchId)))), switchMap(() => zeniAPI
52
51
  .getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/batches/${batchId}`)
53
52
  .pipe(mergeMap((response) => {
54
53
  /** Same batch-details URL; polls until `status` is completed (Pusher may win first). */
@@ -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 != null || accountLine.class?.qboId != null) &&
68
- lineItem.class?.qboId !== accountLine.class?.qboId;
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 &&
@@ -234,7 +234,7 @@ const buildLineItemById = (transaction, uncategorizedIncomeExpense, recommendati
234
234
  isPreFilled: true,
235
235
  };
236
236
  }
237
- if (Boolean(accountLine.class?.classId) === false &&
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
- Boolean(accountLine.class?.classId) !== false
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, updateJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, updateRecommendationForAccountSettings, updateRecommendationForAccountSettingsFailure, } = expenseAutomationJESchedulesView.actions;
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, monthEndCloseChecksViewState, } = state;
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: reducedFetchStatus,
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,48 +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 'depCategory':
24
- return (s) => s.jeCredit.account?.accountName?.toLowerCase();
25
- case 'scheduleCategory':
26
- return (s) => s.jeScheduleType;
27
- case 'startMonth':
28
- return (s) => s.startDate?.valueOf();
29
- case 'type':
30
- return (s) => s.baseTransaction.typeOfTransaction;
31
- case 'amortizationPeriod':
32
- return (s) => s.period;
33
- case 'jePostingDate':
34
- return (s) => s.dayOfPostingDate;
35
- case 'remainingMonths':
36
- return (s) => s.period;
37
- case 'runningBalance':
38
- return (s) => s.balanceAsOfToday?.amount;
39
- case 'totalAmount':
40
- return (s) => s.baseTransaction.amount.amount;
41
- case 'transactionDate':
42
- return (s) => s.baseTransaction.date.valueOf();
43
- case 'memo':
44
- return (s) => s.baseTransaction.memo?.toLowerCase();
45
- default:
46
- return (s) => s.startDate?.valueOf();
47
- }
48
- }
49
- function sortJEScheduledTransactions(transactions, sortKey, sortOrder) {
50
- const accessor = getJEScheduleSortAccessor(sortKey);
51
- return orderBy(transactions, [accessor], [sortOrder === 'ascending' ? 'asc' : 'desc']);
52
- }
53
13
  export function getExpenseAutomationJESchedulesView(state) {
54
14
  const jeScheduledTransaction = [];
55
15
  const failedJeScheduledTransaction = [];
56
- const { accountState, accountListState, classState, classListState, expenseAutomationJESchedulesViewState, expenseAutomationViewState, monthEndCloseChecksState, monthEndCloseChecksViewState, } = state;
16
+ const { accountState, accountListState, classState, classListState, expenseAutomationJESchedulesViewState, expenseAutomationViewState, monthEndCloseChecksState, } = state;
57
17
  const { jeScheduleTransactionKeysByPeriod, failedJeScheduleTransactionKeysByPeriod, jeScheduleLocalDataById, postStatusById, ignoreStatusById, uiState, error, fetchState, refreshStatus, } = expenseAutomationJESchedulesViewState;
58
18
  const accountSettingsView = getJEAccountSettingsView(state);
59
19
  const currentTenant = getCurrentTenant(state);
@@ -99,33 +59,18 @@ export function getExpenseAutomationJESchedulesView(state) {
99
59
  const jeScheduleDetails = getJEScheduledTransactionByJEScheduleTransactionKey(jeScheduleKey, state);
100
60
  failedJeScheduledTransaction.push(jeScheduleDetails);
101
61
  });
102
- const { sortKey, sortOrder } = uiState;
103
- const draftSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'draft'), sortKey, sortOrder);
104
- const ongoingSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'ongoing'), sortKey, sortOrder);
105
- const completedSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'completed' ||
106
- schedule.status.code === 'marked_as_completed'), sortKey, sortOrder);
107
- const unsortedResolveSchedules = [];
62
+ const draftSchedules = jeScheduledTransaction.filter((schedule) => schedule.status.code === 'draft');
63
+ const resolveSchedules = [];
108
64
  failedJeScheduledTransaction.forEach((schedule) => {
109
65
  schedule.scheduledJournalEntry.forEach((journalEntry) => {
110
- unsortedResolveSchedules.push({
111
- ...schedule,
112
- scheduledJournalEntry: journalEntry,
113
- });
66
+ resolveSchedules.push({ ...schedule, scheduledJournalEntry: journalEntry });
114
67
  });
115
68
  });
116
- const resolveSchedules = sortJEScheduledTransactions(unsortedResolveSchedules, sortKey, sortOrder);
117
69
  const allSteps = monthYearPeriodId != null
118
70
  ? getAllSteps(monthEndCloseChecksState, monthYearPeriodId, currentTenant.tenantId)
119
71
  : [];
120
72
  const jeCompletionStatus = allSteps.find((step) => step.step === 'je_schedules')?.completionStatus;
121
73
  const completionStatus = jeCompletionStatus != null ? jeCompletionStatus : 'incomplete';
122
- const monthEndFetchState = monthYearPeriodId != null
123
- ? (monthEndCloseChecksViewState.monthEndCloseChecksViewByTenantId[currentTenant.tenantId]?.[monthYearPeriodId] ?? { fetchState: 'Not-Started', error: undefined })
124
- : { fetchState: 'Not-Started', error: undefined };
125
- const reducedFetchStatus = reduceAnyFetchState([
126
- { fetchState, error },
127
- monthEndFetchState,
128
- ]);
129
74
  return {
130
75
  uncategorizedAccounts,
131
76
  allDepreciationAccountList: filteredDepAccounts,
@@ -134,17 +79,15 @@ export function getExpenseAutomationJESchedulesView(state) {
134
79
  allAccountList: filteredAccounts,
135
80
  accountListNestedAccountHierarchy,
136
81
  allClassList: allClasses,
137
- completedSchedules,
138
82
  draftSchedules,
139
- ongoingSchedules,
140
83
  resolveSchedules: resolveSchedules,
141
84
  accountSettingsView,
142
85
  postStatusById: postStatusById,
143
86
  ignoreStatusById: ignoreStatusById,
144
- fetchState: reducedFetchStatus.fetchState,
87
+ fetchState: fetchState,
145
88
  jeScheduleLocalDataById: jeScheduleLocalDataById,
146
89
  uiState: uiState,
147
- error: reducedFetchStatus.error,
90
+ error: error,
148
91
  refreshStatus,
149
92
  completionStatus,
150
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, monthEndCloseChecksViewState, } = state;
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?.className.toLowerCase()
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: reducedFetchStatus.fetchState,
188
- error: reducedFetchStatus.error,
179
+ fetchState,
180
+ error,
189
181
  uploadReceiptStatusById,
190
182
  uiState,
191
183
  refreshStatus,