@zeniai/client-epic-state 4.19.96-betaJK20 → 4.19.96-betaJK21

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 (154) hide show
  1. package/lib/commonStateTypes/animations.d.ts +1 -1
  2. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
  3. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +0 -1
  4. package/lib/entity/account/accountPayload.d.ts +0 -2
  5. package/lib/entity/account/accountReducer.d.ts +2 -5
  6. package/lib/entity/account/accountReducer.js +2 -7
  7. package/lib/entity/account/accountSelector.d.ts +0 -1
  8. package/lib/entity/account/accountSelector.js +1 -8
  9. package/lib/entity/account/accountState.d.ts +1 -1
  10. package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
  11. package/lib/entity/accountRecon/accountReconState.d.ts +1 -1
  12. package/lib/entity/accountRecon/accountReconState.js +1 -0
  13. package/lib/entity/aiCfo/aiCfoSelector.d.ts +2 -1
  14. package/lib/entity/billPay/billTransaction/billTransactionState.d.ts +2 -2
  15. package/lib/entity/class/classReducer.d.ts +4 -4
  16. package/lib/entity/class/classState.d.ts +1 -1
  17. package/lib/entity/forecast/forecastState.d.ts +1 -1
  18. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +0 -35
  19. package/lib/entity/jeSchedules/jeSchedulesPayload.js +0 -44
  20. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +1 -2
  21. package/lib/entity/jeSchedules/jeSchedulesSelector.js +1 -2
  22. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +0 -13
  23. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  24. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  25. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  26. package/lib/entity/tenant/tenantPayload.d.ts +0 -1
  27. package/lib/entity/tenant/tenantReducer.js +0 -1
  28. package/lib/entity/tenant/tenantSelector.d.ts +0 -1
  29. package/lib/entity/tenant/tenantSelector.js +1 -9
  30. package/lib/entity/tenant/tenantState.d.ts +0 -1
  31. package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +0 -3
  32. package/lib/entity/transaction/payloadTypes/transactionPayload.js +0 -12
  33. package/lib/entity/transaction/stateTypes/transaction.d.ts +0 -3
  34. package/lib/entity/transaction/stateTypes/transactionLine.d.ts +1 -1
  35. package/lib/epic.d.ts +1 -4
  36. package/lib/epic.js +1 -4
  37. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +0 -1
  38. package/lib/esm/entity/account/accountReducer.js +1 -6
  39. package/lib/esm/entity/account/accountSelector.js +0 -6
  40. package/lib/esm/entity/accountRecon/accountReconState.js +1 -0
  41. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +0 -44
  42. package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +1 -2
  43. package/lib/esm/entity/tenant/tenantReducer.js +0 -1
  44. package/lib/esm/entity/tenant/tenantSelector.js +0 -7
  45. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +0 -12
  46. package/lib/esm/epic.js +1 -4
  47. package/lib/esm/index.js +9 -10
  48. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +1 -82
  49. package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +2 -8
  50. package/lib/esm/view/classList/fetchClassListEpic.js +2 -9
  51. package/lib/esm/view/commonVendorView/vendorView/vendorViewSelector.js +5 -15
  52. package/lib/esm/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +2 -6
  53. package/lib/esm/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +13 -6
  54. package/lib/esm/view/expenseAutomationView/epics/accountRecon/initialiseLocalDataForSelectedAccountIdEpic.js +1 -0
  55. package/lib/esm/view/expenseAutomationView/epics/accountRecon/saveReconciliationReviewEpic.js +29 -2
  56. package/lib/esm/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +2 -1
  57. package/lib/esm/view/expenseAutomationView/helpers/saveTransactionHelper.js +2 -2
  58. package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
  59. package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +1 -17
  60. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +3 -148
  61. package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +3 -50
  62. package/lib/esm/view/expenseAutomationView/selectors/missingReceiptsSelector.js +1 -1
  63. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +1 -68
  64. package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +1 -17
  65. package/lib/esm/view/spendManagement/billPay/billList/billListSelector.js +0 -10
  66. package/lib/esm/view/spendManagement/billPay/billList/billListState.js +0 -1
  67. package/lib/esm/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
  68. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
  69. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
  70. package/lib/esm/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
  71. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardList.js +0 -1
  72. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -2
  73. package/lib/esm/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +4 -7
  74. package/lib/esm/view/spendManagement/reimbursement/remiListView/remiListSelector.js +0 -12
  75. package/lib/esm/view/spendManagement/reimbursement/remiListView/remiListState.js +0 -1
  76. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +2 -2
  77. package/lib/esm/view/transactionDetail/epics/saveTransactionHelper.js +2 -2
  78. package/lib/esm/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -16
  79. package/lib/index.d.ts +13 -16
  80. package/lib/index.js +32 -44
  81. package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +0 -7
  82. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +1 -15
  83. package/lib/view/aiCfoView/aiCfoViewReducer.js +2 -83
  84. package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +1 -4
  85. package/lib/view/aiCfoView/aiCfoViewSelector.js +2 -9
  86. package/lib/view/aiCfoView/aiCfoViewState.d.ts +1 -18
  87. package/lib/view/auditReportView/auditReportViewState.d.ts +2 -2
  88. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  89. package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
  90. package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
  91. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  92. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  93. package/lib/view/classList/fetchClassListEpic.d.ts +1 -1
  94. package/lib/view/classList/fetchClassListEpic.js +1 -8
  95. package/lib/view/commonVendorView/vendorView/vendorViewSelector.d.ts +0 -1
  96. package/lib/view/commonVendorView/vendorView/vendorViewSelector.js +5 -15
  97. package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.d.ts +0 -1
  98. package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +2 -6
  99. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  100. package/lib/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +13 -6
  101. package/lib/view/expenseAutomationView/epics/accountRecon/initialiseLocalDataForSelectedAccountIdEpic.js +1 -0
  102. package/lib/view/expenseAutomationView/epics/accountRecon/saveReconciliationReviewEpic.js +29 -2
  103. package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.d.ts +1 -1
  104. package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +2 -1
  105. package/lib/view/expenseAutomationView/helpers/saveTransactionHelper.js +2 -2
  106. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
  107. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +0 -33
  108. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +2 -2
  109. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +2 -18
  110. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +3 -14
  111. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +4 -149
  112. package/lib/view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes.d.ts +0 -2
  113. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +1 -11
  114. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +3 -50
  115. package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.js +1 -1
  116. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +0 -67
  117. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +0 -5
  118. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +0 -19
  119. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +4 -13
  120. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  121. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  122. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  123. package/lib/view/reportsResync/reportsResyncReducer.d.ts +2 -2
  124. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  125. package/lib/view/spendManagement/billPay/billList/billListSelector.js +0 -10
  126. package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
  127. package/lib/view/spendManagement/billPay/billList/billListState.js +0 -1
  128. package/lib/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
  129. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
  130. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
  131. package/lib/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
  132. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  133. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.js +0 -1
  134. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +0 -2
  135. package/lib/view/spendManagement/reimbursement/editRemiView/editRemiViewSelector.js +3 -6
  136. package/lib/view/spendManagement/reimbursement/remiListView/remiListSelector.d.ts +0 -1
  137. package/lib/view/spendManagement/reimbursement/remiListView/remiListSelector.js +0 -12
  138. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +1 -1
  139. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.js +0 -1
  140. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +2 -2
  141. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  142. package/lib/view/topEx/topExSelector.d.ts +1 -1
  143. package/lib/view/transactionDetail/epics/saveTransactionHelper.js +2 -2
  144. package/lib/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -16
  145. package/package.json +1 -1
  146. package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +0 -29
  147. package/lib/esm/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +0 -44
  148. package/lib/esm/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +0 -44
  149. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +0 -8
  150. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +0 -33
  151. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.d.ts +0 -8
  152. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +0 -48
  153. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.d.ts +0 -9
  154. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +0 -48
@@ -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 }))}`
@@ -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
- 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,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
- ...(isAccountingClassesEnabled ? [state.classListState] : []),
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
- ...(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 ?? {
@@ -2,6 +2,7 @@ import { from, of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { convertToPeriod, toMonthYearPeriodId, } from '../../../../commonStateTypes/timePeriod';
4
4
  import { updateAccounts } from '../../../../entity/account/accountReducer';
5
+ import { toRecommendedActionCodeType } from '../../../../entity/accountRecon/accountReconState';
5
6
  import { updateAccountRecon } from '../../../../entity/accountRecon/accountReconReducer';
6
7
  import { getAccountReconByAccountIdAndSelectedPeriod } from '../../../../entity/accountRecon/accountReconSelector';
7
8
  import { updateFiles } from '../../../../entity/file/fileReducer';
@@ -48,22 +49,27 @@ export const fetchReconciliationViewEpic = (actions$, state$, zeniAPI) => action
48
49
  queryParam.is_force_refresh = true;
49
50
  }
50
51
  const apiUrl = reconciliationId != null
51
- ? `https://dev.api.zeni.ai/version/reconciliation/himanshu/1.0/reconciliation?query=${encodeURIComponent(JSON.stringify(queryParam))}`
52
- : `https://dev.api.zeni.ai/version/reconciliation/himanshu/1.0/reconciliation?query=${encodeURIComponent(JSON.stringify(queryParam))}`;
52
+ ? `${zeniAPI.apiEndPoints.reconciliationMicroServiceBaseUrl}/1.0/reconciliation/${reconciliationId}?query=${encodeURIComponent(JSON.stringify(queryParam))}`
53
+ : `${zeniAPI.apiEndPoints.reconciliationMicroServiceBaseUrl}/1.0/reconciliation?query=${encodeURIComponent(JSON.stringify(queryParam))}`;
53
54
  return zeniAPI.getJSON(apiUrl).pipe(mergeMap((response) => {
54
55
  if (isSuccessResponse(response) && response.data != null) {
55
56
  const updateActions = [];
56
- const allTransactionsPerRecon = getAllReviewTransactionsFromReconcilePayload(response.data.reconciliation);
57
- updateActions.push(updateAccounts(response.data.accounts, 'account_reconciliation'), updateAccounts(response.data.excluded_accounts, 'excluded_account_reconciliation'), updateAllUsers({
57
+ updateActions.push(updateAccounts(response.data.accounts, 'account_reconciliation'));
58
+ updateActions.push(updateAllUsers({
58
59
  users: response.data.users ?? [],
59
60
  updateType: 'merge',
60
- }), updateFiles({ files: response.data.files ?? [] }), updateMultipleReconcileTransactions(allTransactionsPerRecon, 'merge'), updateAccountRecon(selectedPeriod, response.data.reconciliation));
61
+ }));
62
+ updateActions.push(updateFiles({ files: response.data.files ?? [] }));
63
+ const allTransactionsPerRecon = getAllReviewTransactionsFromReconcilePayload(response.data.reconciliation);
64
+ updateActions.push(updateMultipleReconcileTransactions(allTransactionsPerRecon, 'merge'));
65
+ updateActions.push(updateAccountRecon(selectedPeriod, response.data.reconciliation));
61
66
  const reviewTabLocalData = prepareReviewTabLocalData(response.data.reconciliation[0]?.transactions?.review ?? []);
62
67
  if (accountId != null) {
63
68
  const selectedTransactionIds = getTransactionIdFromCheckedMatchedTransactionPayload(response.data.reconciliation[0].transactions.reconcile);
64
69
  updateActions.push(updateReconcileTabLocalData({
65
70
  selectedTransactionIds: selectedTransactionIds,
66
- }), initializeReconciliationReviewTabLocalData(reviewTabLocalData));
71
+ }));
72
+ updateActions.push(initializeReconciliationReviewTabLocalData(reviewTabLocalData));
67
73
  }
68
74
  updateActions.push(fetchReconciliationSuccess(selectedPeriod, response.data, refreshViewInBackground, accountId));
69
75
  return from(updateActions);
@@ -116,6 +122,7 @@ export const prepareReviewTabLocalData = (transactionsToReview) => {
116
122
  .recommended_transactions[0].merchant_name,
117
123
  }
118
124
  : undefined,
125
+ recommendedActionType: toRecommendedActionCodeType(currentTransaction.recommended_action.recommended_actions),
119
126
  };
120
127
  return {
121
128
  ...prev,
@@ -45,6 +45,7 @@ export const prepareReviewTabLocalData = (transactionsToReview) => {
45
45
  .recommendedTransactions[0].merchantName,
46
46
  }
47
47
  : undefined,
48
+ recommendedActionType: currentTransaction.recommendedAction.action,
48
49
  };
49
50
  return {
50
51
  ...prev,
@@ -30,8 +30,10 @@ export const saveReconciliationReviewEpic = (actions$, state$, zeniAPI) => actio
30
30
  reconciliationId = reconciliationData?.reconciliationId;
31
31
  updatedTransaction = reconciliationData?.transactionsToReview.find((transaction) => transaction.transactionId === transactionId);
32
32
  }
33
+ const reviewAction = localData?.recommendedActionType ??
34
+ updatedTransaction?.recommendedAction.action;
33
35
  const queryParam = {
34
- review_action: updatedTransaction?.recommendedAction.action,
36
+ review_action: reviewAction,
35
37
  reconciliation_id: reconciliationId ?? '',
36
38
  ref_account_id: selectedAccountId,
37
39
  ref_account_name: reconciliationData?.account.accountName,
@@ -41,7 +43,7 @@ export const saveReconciliationReviewEpic = (actions$, state$, zeniAPI) => actio
41
43
  if (reconciliationData != null &&
42
44
  updatedTransaction != null &&
43
45
  localData != null) {
44
- switch (updatedTransaction.recommendedAction.action) {
46
+ switch (reviewAction) {
45
47
  case 'record_expense':
46
48
  payload = getPayloadForExpenseRecord(updatedTransaction, localData);
47
49
  break;
@@ -63,6 +65,9 @@ export const saveReconciliationReviewEpic = (actions$, state$, zeniAPI) => actio
63
65
  case 'record_deposit':
64
66
  payload = getPayloadForDeposit(updatedTransaction, localData, entityState);
65
67
  break;
68
+ case 'record_journal_entry':
69
+ payload = getPayloadForJournalEntry(updatedTransaction, localData);
70
+ break;
66
71
  }
67
72
  }
68
73
  payload = {
@@ -220,6 +225,28 @@ const getPayloadForBillPayment = (updatedTransaction, linkedTransaction, localDa
220
225
  vendor_name: linkedTransaction?.merchantName,
221
226
  };
222
227
  };
228
+ function getPayloadForJournalEntry(updatedTransaction, localData) {
229
+ return {
230
+ transaction_id: updatedTransaction.transactionId,
231
+ transaction_date: updatedTransaction.transactionDate.format(DEFAULT_DATE_FORMAT),
232
+ transaction_memo: updatedTransaction.memo,
233
+ amount: updatedTransaction.amount.amount,
234
+ currency_code: updatedTransaction.amount.currencyCode,
235
+ transaction_direction: updatedTransaction.transactionDirection,
236
+ lines: [
237
+ {
238
+ class_id: localData.jeDebitClassId,
239
+ posting_type: 'Debit',
240
+ amount: updatedTransaction.amount.amount,
241
+ },
242
+ {
243
+ class_id: localData.jeCreditClassId,
244
+ posting_type: 'Credit',
245
+ amount: updatedTransaction.amount.amount,
246
+ },
247
+ ],
248
+ };
249
+ }
223
250
  const getToastMessageSection = (updatedTransaction) => {
224
251
  if (updatedTransaction?.recommendedAction.action === 'record_bill_payment') {
225
252
  return 'recon_transaction_match';
@@ -1,6 +1,6 @@
1
1
  import fetch from 'cross-fetch';
2
2
  import { zeniAPI } from '../../../../init';
3
- export default async function uploadAccountStatementIntoDocumentAI(accountType, fileBlob, authParams) {
3
+ export default async function uploadAccountStatementIntoDocumentAI(accountType, fileBlob, authParams, accountName) {
4
4
  let statementUpload;
5
5
  const urlEndPoint = `${zeniAPI.apiEndPoints.documentAIMicroServiceBaseUrl}/1.0/processors/statement`;
6
6
  const data = new FormData();
@@ -10,6 +10,7 @@ export default async function uploadAccountStatementIntoDocumentAI(accountType,
10
10
  ? 'reconciliation_card_statement_upload'
11
11
  : 'reconciliation_bank_statement_upload',
12
12
  purpose_id: 'reconciliation',
13
+ ...(accountName != null && { account_name: accountName }),
13
14
  });
14
15
  data.append('attachment_json_0', attachment_json);
15
16
  try {
@@ -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);