@zeniai/client-epic-state 5.0.92-beta0ND → 5.0.92-betaNB2

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 (107) hide show
  1. package/lib/commonStateTypes/animations.d.ts +1 -1
  2. package/lib/commonStateTypes/animations.js +0 -1
  3. package/lib/commonStateTypes/viewAndReport/agingReportStateTypes.d.ts +1 -1
  4. package/lib/entity/accountRecon/accountReconPayload.d.ts +20 -1
  5. package/lib/entity/accountRecon/accountReconPayload.js +23 -1
  6. package/lib/entity/accountRecon/accountReconSelector.d.ts +6 -1
  7. package/lib/entity/accountRecon/accountReconSelector.js +5 -0
  8. package/lib/entity/accountRecon/accountReconState.d.ts +19 -0
  9. package/lib/entity/company/companyPayload.d.ts +0 -4
  10. package/lib/entity/company/companyPayload.js +0 -4
  11. package/lib/entity/company/companyStateTypes.d.ts +0 -4
  12. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.d.ts +7 -0
  13. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +9 -0
  14. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +7 -0
  15. package/lib/entity/paymentAccount/paymentAccountSelector.d.ts +0 -1
  16. package/lib/entity/paymentAccount/paymentAccountSelector.js +0 -4
  17. package/lib/entity/tenant/epic/deleteConnectionEpic.d.ts +1 -1
  18. package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.d.ts +1 -1
  19. package/lib/entity/tenant/epic/saveConnectorCredentialsEpic.d.ts +3 -3
  20. package/lib/entity/tenant/epic/saveOAuthConnectionEpic.d.ts +1 -1
  21. package/lib/entity/tenant/tenantPayload.d.ts +0 -1
  22. package/lib/entity/tenant/tenantReducer.d.ts +25 -38
  23. package/lib/entity/tenant/tenantReducer.js +5 -65
  24. package/lib/entity/tenant/tenantState.d.ts +0 -1
  25. package/lib/epic.d.ts +3 -6
  26. package/lib/epic.js +3 -7
  27. package/lib/esm/commonStateTypes/animations.js +0 -1
  28. package/lib/esm/entity/accountRecon/accountReconPayload.js +23 -1
  29. package/lib/esm/entity/accountRecon/accountReconSelector.js +5 -0
  30. package/lib/esm/entity/company/companyPayload.js +0 -4
  31. package/lib/esm/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +9 -0
  32. package/lib/esm/entity/paymentAccount/paymentAccountSelector.js +0 -3
  33. package/lib/esm/entity/tenant/tenantReducer.js +3 -63
  34. package/lib/esm/epic.js +3 -7
  35. package/lib/esm/index.js +8 -11
  36. package/lib/esm/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +34 -0
  37. package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +42 -0
  38. package/lib/esm/view/expenseAutomationView/payload/reconciliationPayload.js +73 -0
  39. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +98 -4
  40. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +20 -0
  41. package/lib/esm/view/expenseAutomationView/types/reconciliationViewState.js +20 -0
  42. package/lib/esm/view/fileView/epic/deleteFileEpic.js +2 -2
  43. package/lib/esm/view/fileView/epic/deleteFileListEpic.js +2 -2
  44. package/lib/esm/view/fileView/epic/updateFileNameEpic.js +2 -2
  45. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewReducer.js +50 -217
  46. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewSelector.js +1 -7
  47. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewState.js +0 -12
  48. package/lib/esm/view/spendManagement/commonSetup/setupViewReducer.js +52 -105
  49. package/lib/esm/view/spendManagement/commonSetup/setupViewSelector.js +1 -6
  50. package/lib/index.d.ts +12 -16
  51. package/lib/index.js +37 -49
  52. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.d.ts +6 -0
  53. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +38 -0
  54. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.d.ts +19 -0
  55. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +46 -0
  56. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +83 -1
  57. package/lib/view/expenseAutomationView/payload/reconciliationPayload.js +75 -0
  58. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +35 -3
  59. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +99 -5
  60. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +5 -1
  61. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +20 -0
  62. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +128 -0
  63. package/lib/view/expenseAutomationView/types/reconciliationViewState.js +21 -0
  64. package/lib/view/fileView/epic/deleteFileEpic.js +1 -1
  65. package/lib/view/fileView/epic/deleteFileListEpic.js +1 -1
  66. package/lib/view/fileView/epic/updateFileNameEpic.js +1 -1
  67. package/lib/view/onboardingView/customerView/onboardingCustomerViewPayload.d.ts +0 -3
  68. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.d.ts +4 -41
  69. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.js +51 -219
  70. package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.d.ts +1 -5
  71. package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.js +2 -11
  72. package/lib/view/onboardingView/customerView/onboardingCustomerViewState.d.ts +0 -40
  73. package/lib/view/onboardingView/customerView/onboardingCustomerViewState.js +1 -13
  74. package/lib/view/spendManagement/commonSetup/setupViewReducer.d.ts +2 -28
  75. package/lib/view/spendManagement/commonSetup/setupViewReducer.js +53 -106
  76. package/lib/view/spendManagement/commonSetup/setupViewSelector.d.ts +2 -7
  77. package/lib/view/spendManagement/commonSetup/setupViewSelector.js +1 -6
  78. package/lib/view/spendManagement/commonSetup/setupViewState.d.ts +0 -19
  79. package/lib/view/vendorFiling1099/vendorFiling1099List/vendorFiling1099ListState.d.ts +1 -1
  80. package/package.json +1 -1
  81. package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.d.ts +0 -21
  82. package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.js +0 -54
  83. package/lib/esm/entity/tenant/epic/initEmailConnectOAuthEpic.js +0 -50
  84. package/lib/esm/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +0 -42
  85. package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +0 -29
  86. package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +0 -40
  87. package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +0 -52
  88. package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +0 -59
  89. package/lib/esm/view/spendManagement/commonSetup/kycKybAutofillActions.js +0 -14
  90. package/lib/esm/view/spendManagement/commonSetup/kycKybParseMapper.js +0 -205
  91. package/lib/esm/view/spendManagement/commonSetup/types/kycKybAutofill.js +0 -28
  92. package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.d.ts +0 -7
  93. package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +0 -46
  94. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.d.ts +0 -8
  95. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +0 -33
  96. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.d.ts +0 -9
  97. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +0 -44
  98. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.d.ts +0 -28
  99. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +0 -56
  100. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.d.ts +0 -30
  101. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +0 -63
  102. package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.d.ts +0 -33
  103. package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.js +0 -17
  104. package/lib/view/spendManagement/commonSetup/kycKybParseMapper.d.ts +0 -24
  105. package/lib/view/spendManagement/commonSetup/kycKybParseMapper.js +0 -213
  106. package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.d.ts +0 -125
  107. package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.js +0 -32
@@ -2,6 +2,7 @@ import { createSlice } from '@reduxjs/toolkit';
2
2
  import { toMonthYearPeriodId, } from '../../../commonStateTypes/timePeriod';
3
3
  import { toReconciliationAccountSource } from '../../../entity/account/accountState';
4
4
  import { toBankStatusCodeType } from '../../../entity/accountRecon/accountReconState';
5
+ import { toReconciliationViewSummary, } from '../types/reconciliationViewState';
5
6
  // Initial state
6
7
  export const initialReconciliationTabsState = {
7
8
  balances: {
@@ -67,6 +68,7 @@ export const initialState = {
67
68
  refreshStatus: { fetchState: 'Not-Started', error: undefined },
68
69
  actionFetchState: initialActionFetchState,
69
70
  selectedAccountId: undefined,
71
+ statementProcessingFailed: false,
70
72
  statementUploadChosen: false,
71
73
  reconListUIState: {
72
74
  nodeCollapseState: {},
@@ -75,6 +77,7 @@ export const initialState = {
75
77
  },
76
78
  },
77
79
  excludedAccountIDs: [],
80
+ summary: undefined,
78
81
  };
79
82
  // Create slice with reducers
80
83
  const expenseAutomationReconciliationView = createSlice({
@@ -143,7 +146,7 @@ const expenseAutomationReconciliationView = createSlice({
143
146
  fetchReconciliationSuccess: {
144
147
  reducer(draft, action) {
145
148
  if (action.payload.accountId == null) {
146
- updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? []);
149
+ updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? [], action.payload.reconciliation.summary);
147
150
  }
148
151
  else if (action.payload.reconciliation.reconciliation.length > 0 &&
149
152
  action.payload.reconciliation.accounts.length > 0) {
@@ -287,6 +290,10 @@ const expenseAutomationReconciliationView = createSlice({
287
290
  updateSelectedDrawerAccountId: (draft, action) => {
288
291
  draft.selectedDrawerAccountId = action.payload.selectedDrawerAccountId;
289
292
  },
293
+ updateStatementProcessingFailed: (draft, action) => {
294
+ draft.statementProcessingFailed =
295
+ action.payload.statementProcessingFailed;
296
+ },
290
297
  initialiseLocalDataForSelectedAccountId: () => { },
291
298
  updateSelectedTab: (draft, action) => {
292
299
  const { selectedTab } = action.payload;
@@ -378,10 +385,16 @@ const expenseAutomationReconciliationView = createSlice({
378
385
  },
379
386
  uploadAccountStatement: (draft, action) => {
380
387
  const { accountId, selectedPeriod } = action.payload;
381
- draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].statementUploadStatus = {
388
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId];
389
+ accountRecon.statementUploadStatus = {
382
390
  fetchState: 'In-Progress',
383
391
  error: undefined,
384
392
  };
393
+ accountRecon.parsedStatementData = undefined;
394
+ accountRecon.statementParseStatus = {
395
+ fetchState: 'Not-Started',
396
+ error: undefined,
397
+ };
385
398
  },
386
399
  uploadAccountStatementSuccess: (draft, action) => {
387
400
  const { accountId, selectedPeriod } = action.payload;
@@ -419,6 +432,78 @@ const expenseAutomationReconciliationView = createSlice({
419
432
  error: action.payload.error,
420
433
  };
421
434
  },
435
+ parseStatement: (draft, action) => {
436
+ const { accountId, selectedPeriod } = action.payload;
437
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId];
438
+ accountRecon.parsedStatementData = undefined;
439
+ accountRecon.statementParseStatus = {
440
+ fetchState: 'In-Progress',
441
+ error: undefined,
442
+ };
443
+ },
444
+ parseStatementSuccess: (draft, action) => {
445
+ const { accountId, selectedPeriod } = action.payload;
446
+ draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].statementParseStatus = {
447
+ fetchState: 'Completed',
448
+ error: undefined,
449
+ };
450
+ draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].statementParseInProgress = false;
451
+ },
452
+ parseStatementFailure: (draft, action) => {
453
+ const { accountId, selectedPeriod } = action.payload;
454
+ draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].statementParseStatus = {
455
+ fetchState: 'Error',
456
+ error: action.payload.error,
457
+ };
458
+ draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].statementParseInProgress = false;
459
+ },
460
+ updateParsedStatementData: (draft, action) => {
461
+ const { accountId, selectedPeriod, parsedStatementData } = action.payload;
462
+ draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].parsedStatementData =
463
+ parsedStatementData;
464
+ },
465
+ updateStatementUpdateLocalData: (draft, action) => {
466
+ const { accountId, selectedPeriod, statementUpdateLocalData } = action.payload;
467
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId];
468
+ if (accountRecon.localData == null) {
469
+ accountRecon.localData = {
470
+ statementUpdateLocalData,
471
+ };
472
+ }
473
+ else {
474
+ accountRecon.localData.statementUpdateLocalData =
475
+ statementUpdateLocalData;
476
+ }
477
+ },
478
+ submitStatementUpdate: (draft, action) => {
479
+ const { accountId, selectedPeriod } = action.payload;
480
+ draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].statementUpdateStatus = {
481
+ fetchState: 'In-Progress',
482
+ error: undefined,
483
+ };
484
+ },
485
+ submitStatementUpdateSuccess: (draft, action) => {
486
+ const { accountId, selectedPeriod } = action.payload;
487
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId];
488
+ accountRecon.statementUpdateStatus = {
489
+ fetchState: 'Completed',
490
+ error: undefined,
491
+ };
492
+ if (accountRecon.localData != null) {
493
+ accountRecon.localData.statementUpdateLocalData = undefined;
494
+ }
495
+ },
496
+ submitStatementUpdateFailure: (draft, action) => {
497
+ const { accountId, selectedPeriod } = action.payload;
498
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId];
499
+ accountRecon.statementUpdateStatus = {
500
+ fetchState: 'Error',
501
+ error: action.payload.error,
502
+ };
503
+ if (accountRecon.localData != null) {
504
+ accountRecon.localData.statementUpdateLocalData = undefined;
505
+ }
506
+ },
422
507
  updateAccountReconciliationLocalData: (draft, action) => {
423
508
  const { accountId, selectedPeriod, localData } = action.payload;
424
509
  const oldLocalData = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId].localData;
@@ -524,10 +609,10 @@ const expenseAutomationReconciliationView = createSlice({
524
609
  },
525
610
  });
526
611
  // Export actions
527
- export const { fetchReconciliation, fetchReconciliationFailure, fetchReconciliationSuccess, saveReconciliationDetail, saveReconciliationDetailFailure, updateSelectedAccountId, setConnectionInProgressForAccount, setStatementParseInProgress, updateReconcileTabLocalData, updateReconcileTabListSortState, updateReconcileTabListScrollState, saveReconciliationDetailSuccess, updateSelectedTab, updateBalancesLocalData, initialiseLocalDataForSelectedAccountId, clearExpenseAutomationReconciliationView, updateSelectedDrawerAccountId, updateReviewTabSortState, initializeReconciliationReviewTabLocalData, updateReviewTabLocalData, saveReconciliationReview, updateSaveReconciliationReviewFetchStatus, updateReconListScrollPosition, updateAccountReconciliationLocalData, deleteAccountStatement, deleteAccountStatementSuccess, deleteAccountStatementFailure, excludeAccountFromReconciliation, excludeAccountFromReconciliationSuccess, excludeAccountFromReconciliationFailure, includeAccountInReconciliation, includeAccountInReconciliationSuccess, includeAccountInReconciliationFailure, uploadAccountStatement, uploadAccountStatementSuccess, uploadAccountStatementFailure, updateStatementUploadChosen, updateNodeCollapseState, } = expenseAutomationReconciliationView.actions;
612
+ export const { fetchReconciliation, fetchReconciliationFailure, fetchReconciliationSuccess, saveReconciliationDetail, saveReconciliationDetailFailure, updateSelectedAccountId, setConnectionInProgressForAccount, setStatementParseInProgress, updateReconcileTabLocalData, updateReconcileTabListSortState, updateReconcileTabListScrollState, saveReconciliationDetailSuccess, updateSelectedTab, updateBalancesLocalData, initialiseLocalDataForSelectedAccountId, clearExpenseAutomationReconciliationView, updateSelectedDrawerAccountId, updateStatementProcessingFailed, updateReviewTabSortState, initializeReconciliationReviewTabLocalData, updateReviewTabLocalData, saveReconciliationReview, updateSaveReconciliationReviewFetchStatus, updateReconListScrollPosition, updateAccountReconciliationLocalData, deleteAccountStatement, deleteAccountStatementSuccess, deleteAccountStatementFailure, excludeAccountFromReconciliation, excludeAccountFromReconciliationSuccess, excludeAccountFromReconciliationFailure, includeAccountInReconciliation, includeAccountInReconciliationSuccess, includeAccountInReconciliationFailure, uploadAccountStatement, uploadAccountStatementSuccess, uploadAccountStatementFailure, parseStatement, parseStatementSuccess, parseStatementFailure, updateParsedStatementData, updateStatementUpdateLocalData, submitStatementUpdate, submitStatementUpdateSuccess, submitStatementUpdateFailure, updateStatementUploadChosen, updateNodeCollapseState, } = expenseAutomationReconciliationView.actions;
528
613
  // Export reducer
529
614
  export default expenseAutomationReconciliationView.reducer;
530
- function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts) {
615
+ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts, summary) {
531
616
  draft.excludedAccountIDs = excludedAccounts.map((ea) => ea.account_id);
532
617
  draft.excludedAccountExclusionInfo = {};
533
618
  excludedAccounts.forEach((ea) => {
@@ -556,6 +641,7 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
556
641
  : undefined,
557
642
  };
558
643
  });
644
+ const oldReconciliationByAccountID = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)]?.reconciliationByAccountID ?? {};
559
645
  draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)] = {
560
646
  accountIDs: [],
561
647
  reconciliationByAccountID: {},
@@ -579,6 +665,7 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
579
665
  paymentAccountId: account?.payment_account_id ?? undefined,
580
666
  };
581
667
  }
668
+ const oldRecord = oldReconciliationByAccountID[reconciliation.account_id];
582
669
  accountReconciliationRecords.reconciliationByAccountID[reconciliation.account_id] = {
583
670
  accountId: reconciliation.account_id,
584
671
  reconciliationId: reconciliation.reconciliation_id ?? undefined,
@@ -588,14 +675,17 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
588
675
  statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
589
676
  statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
590
677
  statementParseInProgress: reconciliation.bank_status.code === 'parsing',
678
+ statementParseStatus: { fetchState: 'Not-Started', error: undefined },
591
679
  localData: {
592
680
  accountSource: account?.reconciliation_source != null
593
681
  ? toReconciliationAccountSource(account.reconciliation_source)
594
682
  : undefined,
683
+ ...oldRecord?.localData,
595
684
  },
596
685
  accountDetectionReason: account?.detection_info != null && account.detection_reason != null
597
686
  ? account.detection_reason
598
687
  : undefined,
688
+ parsedStatementData: oldRecord?.parsedStatementData,
599
689
  };
600
690
  accountReconciliationRecords.accountIDs.push(reconciliation.account_id);
601
691
  });
@@ -609,6 +699,9 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
609
699
  draft.fetchState = 'Completed';
610
700
  draft.error = undefined;
611
701
  }
702
+ if (summary !== undefined) {
703
+ draft.summary = toReconciliationViewSummary(summary);
704
+ }
612
705
  }
613
706
  function updateReconciliationByAccountID(draft, accounts, selectedPeriod, accountId, reconciliationData, refreshViewInBackground) {
614
707
  const oldRecord = draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)].reconciliationByAccountID[accountId];
@@ -676,6 +769,7 @@ const updateReconciliationByAccountIDOnIncludeAccount = (draft, accountId, recon
676
769
  statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
677
770
  statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
678
771
  statementParseInProgress: reconciliation.bank_status.code === 'parsing',
772
+ statementParseStatus: { fetchState: 'Not-Started', error: undefined },
679
773
  localData: {},
680
774
  accountDetectionReason: undefined,
681
775
  };
@@ -43,6 +43,17 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
43
43
  error: undefined,
44
44
  })
45
45
  : { fetchState: 'Not-Started', error: undefined };
46
+ const monthEndChecksForPeriod = selectedPeriod != null
47
+ ? monthEndCloseChecksState.monthEndCloseChecksByTenantId[currentTenant.tenantId]?.[toMonthYearPeriodId(selectedPeriod)]
48
+ : undefined;
49
+ const reconCheckTimeSaved = monthEndChecksForPeriod?.monthEndCloseCheckList.find((check) => check.title === 'Reconciliation')?.progressJson?.timeSavedPercentage;
50
+ const summaryWithTimeSaved = reconciliationViewState.summary != null
51
+ ? {
52
+ ...reconciliationViewState.summary,
53
+ timeSavedPercentage: reconCheckTimeSaved ??
54
+ reconciliationViewState.summary.timeSavedPercentage,
55
+ }
56
+ : undefined;
46
57
  if (accountReconForMonthYearPeriod == null) {
47
58
  return {
48
59
  bankAccounts: [],
@@ -66,6 +77,7 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
66
77
  selectedTab: reconciliationViewState.selectedTab,
67
78
  monthYearPeriod: selectedPeriod,
68
79
  selectedAccountId: reconciliationViewState.selectedAccountId,
80
+ statementProcessingFailed: reconciliationViewState.statementProcessingFailed,
69
81
  statementUploadChosen: reconciliationViewState.statementUploadChosen,
70
82
  accountReconciliationsByAccountID: {},
71
83
  reconciliationTabsState: initialReconciliationTabsState,
@@ -115,6 +127,7 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
115
127
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
116
128
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
117
129
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
130
+ summary: summaryWithTimeSaved,
118
131
  };
119
132
  }
120
133
  const allAccountIDs = accountReconForMonthYearPeriod.accountIDs;
@@ -239,6 +252,8 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
239
252
  .refreshStatus,
240
253
  statementDeleteStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
241
254
  .statementDeleteStatus,
255
+ statementParseStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
256
+ .statementParseStatus,
242
257
  statementUpdateStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
243
258
  .statementUpdateStatus,
244
259
  statementUploadStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
@@ -247,6 +262,8 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
247
262
  .localData,
248
263
  statementParseInProgress: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
249
264
  .statementParseInProgress,
265
+ parsedStatementData: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
266
+ .parsedStatementData,
250
267
  transactionFetchState: reduceAnyFetchState([
251
268
  accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
252
269
  .transactionFetchState,
@@ -315,6 +332,7 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
315
332
  statementUpdateStatus: { fetchState: 'Not-Started' },
316
333
  statementUploadStatus: { fetchState: 'Not-Started' },
317
334
  statementDeleteStatus: { fetchState: 'Not-Started' },
335
+ statementParseStatus: { fetchState: 'Not-Started' },
318
336
  localData: {},
319
337
  connectionInProgress: false,
320
338
  statementParseInProgress: false,
@@ -403,6 +421,7 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
403
421
  refreshStatus: reconciliationViewState.refreshStatus,
404
422
  selectedTab: reconciliationViewState.selectedTab,
405
423
  selectedDrawerAccountId: reconciliationViewState.selectedDrawerAccountId,
424
+ statementProcessingFailed: reconciliationViewState.statementProcessingFailed,
406
425
  statementUploadChosen: reconciliationViewState.statementUploadChosen,
407
426
  monthYearPeriod: selectedPeriod,
408
427
  accountReconciliationBySectionID,
@@ -423,6 +442,7 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
423
442
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
424
443
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
425
444
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
445
+ summary: summaryWithTimeSaved,
426
446
  };
427
447
  });
428
448
  export const isAccountReconReport = (reportId) => {
@@ -1,4 +1,24 @@
1
1
  import { stringToUnion } from '../../../commonStateTypes/stringToUnion';
2
+ export function toReconciliationViewSummary(payload) {
3
+ return {
4
+ accounts: {
5
+ done: payload.accounts.done,
6
+ failed: payload.accounts.failed,
7
+ inProgress: payload.accounts.in_progress,
8
+ total: payload.accounts.total,
9
+ },
10
+ accountsToConnectCount: payload.accounts_to_connect_count,
11
+ autoMatched: {
12
+ matchedTxns: payload.auto_matched.matched_txns,
13
+ totalTxns: payload.auto_matched.total_txns,
14
+ },
15
+ needsReview: {
16
+ accountCount: payload.needs_review.account_count,
17
+ txnCount: payload.needs_review.txn_count,
18
+ },
19
+ timeSavedPercentage: payload.time_saved_percentage,
20
+ };
21
+ }
2
22
  export const RECONCILE_ACTIONS = [
3
23
  'reconcile',
4
24
  'save_reconcile_for_later',
@@ -1,9 +1,9 @@
1
1
  import { of } from 'rxjs';
2
- import { catchError, filter, mergeMap } from 'rxjs/operators';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
3
  import { removeFiles } from '../../../entity/file/fileReducer';
4
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
5
5
  import { deleteFile, deleteFileFailure, deleteFileSuccess, } from '../fileViewReducer';
6
- export const deleteFileEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(deleteFile.match), mergeMap((action) => {
6
+ export const deleteFileEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(deleteFile.match), switchMap((action) => {
7
7
  /**
8
8
  * tenantId is required for deleting onboarding files.
9
9
  */
@@ -1,9 +1,9 @@
1
1
  import { of } from 'rxjs';
2
- import { catchError, filter, mergeMap } from 'rxjs/operators';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
3
  import { removeFiles } from '../../../entity/file/fileReducer';
4
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
5
5
  import { deleteFileList, deleteFileListFailure, deleteFileListSuccess, } from '../fileViewReducer';
6
- export const deleteFileListEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(deleteFileList.match), mergeMap((action) => {
6
+ export const deleteFileListEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(deleteFileList.match), switchMap((action) => {
7
7
  const { fileIds } = action.payload;
8
8
  return zeniAPI
9
9
  .deleteAndGetJSON(`${zeniAPI.apiEndPoints.fileMicroServiceBaseUrl}/1.0/files?query=${encodeURIComponent(JSON.stringify({ file_ids: fileIds }))}`)
@@ -1,9 +1,9 @@
1
1
  import { of } from 'rxjs';
2
- import { catchError, filter, mergeMap } from 'rxjs/operators';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
3
  import { updateFiles } from '../../../entity/file/fileReducer';
4
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
5
5
  import { updateFileName, updateFileNameFailure, updateFileNameSuccess, } from '../fileViewReducer';
6
- export const updateFileNameEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(updateFileName.match), mergeMap((action) => {
6
+ export const updateFileNameEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(updateFileName.match), switchMap((action) => {
7
7
  /**
8
8
  * tenantId is required for updating onboarding file names.
9
9
  */
@@ -1,7 +1,5 @@
1
1
  import { createSlice } from '@reduxjs/toolkit';
2
2
  import { date } from '../../../zeniDayJS';
3
- import { parseUploadedKybDocument, parseUploadedKybDocumentFailure, parseUploadedKycDocument, parseUploadedKycDocumentFailure, } from '../../spendManagement/commonSetup/kycKybAutofillActions';
4
- import { emptyAiAgentsActivationSubview, } from './onboardingCustomerViewState';
5
3
  const initialStatus = {
6
4
  fetchState: 'Not-Started',
7
5
  error: undefined,
@@ -11,31 +9,61 @@ export const initialState = {
11
9
  saveStatus: initialStatus,
12
10
  dashboardLoadedStatus: initialStatus,
13
11
  currentStep: 'link_payment_account',
14
- parsingDocumentFileIds: [],
15
12
  companyDetails: {
16
- autoFilledFields: [],
17
13
  localData: undefined,
18
14
  },
19
- companyOfficerUpdateStatus: (() => {
20
- const emptyOfficerSlot = {
21
- autoFilledFields: [],
15
+ companyOfficerUpdateStatus: {
16
+ Officer_1: {
22
17
  localData: undefined,
23
18
  sendOtpStatus: initialStatus,
24
19
  otpverificationStatus: initialStatus,
25
- };
26
- return {
27
- Officer_1: { ...emptyOfficerSlot },
28
- Officer_2: { ...emptyOfficerSlot },
29
- Officer_3: { ...emptyOfficerSlot },
30
- Officer_4: { ...emptyOfficerSlot },
31
- Officer_5: { ...emptyOfficerSlot },
32
- Officer_6: { ...emptyOfficerSlot },
33
- Officer_7: { ...emptyOfficerSlot },
34
- Officer_8: { ...emptyOfficerSlot },
35
- Officer_9: { ...emptyOfficerSlot },
36
- Officer_10: { ...emptyOfficerSlot },
37
- };
38
- })(),
20
+ },
21
+ Officer_2: {
22
+ localData: undefined,
23
+ sendOtpStatus: initialStatus,
24
+ otpverificationStatus: initialStatus,
25
+ },
26
+ Officer_3: {
27
+ localData: undefined,
28
+ sendOtpStatus: initialStatus,
29
+ otpverificationStatus: initialStatus,
30
+ },
31
+ Officer_4: {
32
+ localData: undefined,
33
+ sendOtpStatus: initialStatus,
34
+ otpverificationStatus: initialStatus,
35
+ },
36
+ Officer_5: {
37
+ localData: undefined,
38
+ sendOtpStatus: initialStatus,
39
+ otpverificationStatus: initialStatus,
40
+ },
41
+ Officer_6: {
42
+ localData: undefined,
43
+ sendOtpStatus: initialStatus,
44
+ otpverificationStatus: initialStatus,
45
+ },
46
+ Officer_7: {
47
+ localData: undefined,
48
+ sendOtpStatus: initialStatus,
49
+ otpverificationStatus: initialStatus,
50
+ },
51
+ Officer_8: {
52
+ localData: undefined,
53
+ sendOtpStatus: initialStatus,
54
+ otpverificationStatus: initialStatus,
55
+ },
56
+ Officer_9: {
57
+ localData: undefined,
58
+ sendOtpStatus: initialStatus,
59
+ otpverificationStatus: initialStatus,
60
+ },
61
+ Officer_10: {
62
+ localData: undefined,
63
+ sendOtpStatus: initialStatus,
64
+ otpverificationStatus: initialStatus,
65
+ },
66
+ },
39
67
  primaryContactDetails: {},
40
68
  paymentAccountDetails: {
41
69
  fetchStatus: initialStatus,
@@ -63,7 +91,6 @@ export const initialState = {
63
91
  },
64
92
  fetchState: 'Not-Started',
65
93
  error: undefined,
66
- aiAgentsActivation: { ...emptyAiAgentsActivationSubview },
67
94
  uiState: {
68
95
  isQBOPopupOpen: false,
69
96
  isCardPaymentPopupOpen: false,
@@ -153,126 +180,6 @@ const onboardingCustomerView = createSlice({
153
180
  };
154
181
  },
155
182
  },
156
- acknowledgeOnboardingAiFinanceTeam: {
157
- reducer(draft) {
158
- draft.aiFinanceTeamAcknowledgementStatus = {
159
- fetchState: 'In-Progress',
160
- error: undefined,
161
- };
162
- },
163
- prepare(companyId) {
164
- return {
165
- payload: { companyId },
166
- };
167
- },
168
- },
169
- acknowledgeOnboardingAiFinanceTeamSuccess(draft) {
170
- draft.aiFinanceTeamAcknowledgementStatus = {
171
- fetchState: 'Completed',
172
- error: undefined,
173
- };
174
- },
175
- acknowledgeOnboardingAiFinanceTeamFailure: {
176
- reducer(draft, action) {
177
- draft.aiFinanceTeamAcknowledgementStatus = {
178
- fetchState: 'Error',
179
- error: action.payload,
180
- };
181
- },
182
- prepare(error) {
183
- return {
184
- payload: error,
185
- };
186
- },
187
- },
188
- acknowledgeOnboardingAiActivationViewed: {
189
- reducer(draft) {
190
- draft.aiActivationViewedAcknowledgementStatus = {
191
- fetchState: 'In-Progress',
192
- error: undefined,
193
- };
194
- },
195
- prepare(companyId) {
196
- return {
197
- payload: { companyId },
198
- };
199
- },
200
- },
201
- acknowledgeOnboardingAiActivationViewedSuccess(draft) {
202
- draft.aiActivationViewedAcknowledgementStatus = {
203
- fetchState: 'Completed',
204
- error: undefined,
205
- };
206
- },
207
- acknowledgeOnboardingAiActivationViewedFailure: {
208
- reducer(draft, action) {
209
- draft.aiActivationViewedAcknowledgementStatus = {
210
- fetchState: 'Error',
211
- error: action.payload,
212
- };
213
- },
214
- prepare(error) {
215
- return {
216
- payload: error,
217
- };
218
- },
219
- },
220
- fetchAiAgentsActivationStatus(draft) {
221
- draft.aiAgentsActivation.fetchStatus = {
222
- fetchState: 'In-Progress',
223
- error: undefined,
224
- };
225
- },
226
- fetchAiAgentsActivationStatusSuccess: {
227
- reducer(draft, action) {
228
- draft.aiAgentsActivation.fetchStatus = {
229
- fetchState: 'Completed',
230
- error: undefined,
231
- };
232
- draft.aiAgentsActivation.phases = action.payload.phases;
233
- draft.aiAgentsActivation.counts = action.payload.counts;
234
- },
235
- prepare(payload) {
236
- return { payload };
237
- },
238
- },
239
- fetchAiAgentsActivationStatusFailure: {
240
- reducer(draft, action) {
241
- draft.aiAgentsActivation.fetchStatus = {
242
- fetchState: 'Error',
243
- error: action.payload,
244
- };
245
- },
246
- prepare(error) {
247
- return { payload: error };
248
- },
249
- },
250
- aiAgentsActivationCountsUpdated: {
251
- reducer(draft, action) {
252
- draft.aiAgentsActivation.counts = {
253
- ...draft.aiAgentsActivation.counts,
254
- ...action.payload,
255
- };
256
- },
257
- prepare(payload) {
258
- return { payload };
259
- },
260
- },
261
- aiAgentsActivationPhaseChanged: {
262
- reducer(draft, action) {
263
- const target = draft.aiAgentsActivation.phases;
264
- const index = target.findIndex((phase) => phase.key === action.payload.key);
265
- if (index === -1) {
266
- target.push(action.payload);
267
- }
268
- else {
269
- target[index] = { ...target[index], ...action.payload };
270
- }
271
- },
272
- prepare(payload) {
273
- return { payload };
274
- },
275
- },
276
183
  updateOnboardingCustomerViewDashboardLoaded: {
277
184
  reducer(draft) {
278
185
  draft.dashboardLoadedStatus = {
@@ -685,81 +592,7 @@ const onboardingCustomerView = createSlice({
685
592
  clearOnboardingCustomerView(draft) {
686
593
  Object.assign(draft, initialState);
687
594
  },
688
- /** Merge AI-parsed officer fields into the officer's onboarding localData. */
689
- applyKycDocumentAutofillForOnboarding: {
690
- reducer(draft, action) {
691
- const { officerType, values, autoFilledFieldNames, fileId } = action.payload;
692
- const slot = draft.companyOfficerUpdateStatus[officerType];
693
- slot.localData = Object.assign({}, slot.localData, values);
694
- slot.autoFilledFields = Array.from(new Set([...slot.autoFilledFields, ...autoFilledFieldNames]));
695
- draft.parsingDocumentFileIds = draft.parsingDocumentFileIds.filter((id) => id !== fileId);
696
- },
697
- prepare(payload) {
698
- return { payload };
699
- },
700
- },
701
- /** Merge AI-parsed company fields into companyDetails onboarding localData. */
702
- applyKybDocumentAutofillForOnboarding: {
703
- reducer(draft, action) {
704
- const { values, autoFilledFieldNames, fileId } = action.payload;
705
- draft.companyDetails.localData = Object.assign({}, draft.companyDetails.localData, values);
706
- const prev = draft.companyDetails.autoFilledFields ?? [];
707
- draft.companyDetails.autoFilledFields = Array.from(new Set([...prev, ...autoFilledFieldNames]));
708
- draft.parsingDocumentFileIds = draft.parsingDocumentFileIds.filter((id) => id !== fileId);
709
- },
710
- prepare(payload) {
711
- return { payload };
712
- },
713
- },
714
- /** Wipe AI-autofill badges during onboarding. */
715
- clearKycKybAutofillForOnboarding: {
716
- reducer(draft, action) {
717
- const { officerType } = action.payload;
718
- if (officerType != null) {
719
- draft.companyOfficerUpdateStatus[officerType].autoFilledFields = [];
720
- }
721
- else {
722
- draft.companyDetails.autoFilledFields = [];
723
- Object.keys(draft.companyOfficerUpdateStatus).forEach((key) => {
724
- draft.companyOfficerUpdateStatus[key].autoFilledFields = [];
725
- });
726
- }
727
- },
728
- prepare(payload = {}) {
729
- return { payload };
730
- },
731
- },
732
- },
733
- extraReducers: (builder) => {
734
- const addParsingFileId = (draft, fileId) => {
735
- if (!draft.parsingDocumentFileIds.includes(fileId)) {
736
- draft.parsingDocumentFileIds.push(fileId);
737
- }
738
- };
739
- const removeParsingFileId = (draft, fileId) => {
740
- draft.parsingDocumentFileIds = draft.parsingDocumentFileIds.filter((id) => id !== fileId);
741
- };
742
- builder.addCase(parseUploadedKycDocument, (draft, action) => {
743
- if (action.payload.target === 'onboarding') {
744
- addParsingFileId(draft, action.payload.fileId);
745
- }
746
- });
747
- builder.addCase(parseUploadedKybDocument, (draft, action) => {
748
- if (action.payload.target === 'onboarding') {
749
- addParsingFileId(draft, action.payload.fileId);
750
- }
751
- });
752
- builder.addCase(parseUploadedKycDocumentFailure, (draft, action) => {
753
- if (action.payload.target === 'onboarding') {
754
- removeParsingFileId(draft, action.payload.fileId);
755
- }
756
- });
757
- builder.addCase(parseUploadedKybDocumentFailure, (draft, action) => {
758
- if (action.payload.target === 'onboarding') {
759
- removeParsingFileId(draft, action.payload.fileId);
760
- }
761
- });
762
595
  },
763
596
  });
764
- export const { fetchOnboardingCustomerView, fetchOnboardingCustomerSetupView, fetchOnboardingCustomerSetupViewSuccess, fetchOnboardingCustomerSetupViewFailure, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewCompleteStatusSuccess, updateOnboardingCustomerViewCompleteStatusFailure, acknowledgeOnboardingAiFinanceTeam, acknowledgeOnboardingAiFinanceTeamSuccess, acknowledgeOnboardingAiFinanceTeamFailure, acknowledgeOnboardingAiActivationViewed, acknowledgeOnboardingAiActivationViewedSuccess, acknowledgeOnboardingAiActivationViewedFailure, fetchAiAgentsActivationStatus, fetchAiAgentsActivationStatusSuccess, fetchAiAgentsActivationStatusFailure, aiAgentsActivationCountsUpdated, aiAgentsActivationPhaseChanged, updateOnboardingCustomerViewDashboardLoaded, updateOnboardingCustomerViewDashboardLoadedSuccess, updateOnboardingCustomerViewDashboardLoadedFailure, updateOnboardingCustomerView, updateOnboardingCustomerViewSuccess, updateOnboardingCustomerViewFailure, updateOnboardingPaymentAccountStatus, updateOnboardingPaymentAccountStatusSuccess, updateOnboardingPaymentAccountStatusFailure, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountLoginStatusSuccess, updateOnboardingPaymentAccountLoginStatusFailure, establishOnboardingPlaidConnection, establishOnboardingPlaidConnectionSuccess, establishOnboardingPlaidConnectionFailure, getOnboardingPlaidLinkToken, getOnboardingPlaidLinkTokenSuccess, getOnboardingPlaidLinkTokenFailure, updateCurrentStep, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewLocalStoreData, saveOnboardingCustomerViewDataInLocalStore, saveOnboardingCompnayOfficerPhoneInLocalStore, updateOnboardingCustomerViewUIState, sendOnboardingOfficerOtp, sendOnboardingOfficerOtpSuccess, sendOnboardingOfficerOtpFailure, resendOnboardingOfficerOtp, verifyOnboardingOfficerOtp, verifyOnboardingOfficerOtpSuccess, verifyOnboardingOfficerOtpFailure, clearOnboardingCustomerViewDataInLocalStore, clearOnboardingCustomerView, applyKycDocumentAutofillForOnboarding, applyKybDocumentAutofillForOnboarding, clearKycKybAutofillForOnboarding, } = onboardingCustomerView.actions;
597
+ export const { fetchOnboardingCustomerView, fetchOnboardingCustomerSetupView, fetchOnboardingCustomerSetupViewSuccess, fetchOnboardingCustomerSetupViewFailure, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewCompleteStatusSuccess, updateOnboardingCustomerViewCompleteStatusFailure, updateOnboardingCustomerViewDashboardLoaded, updateOnboardingCustomerViewDashboardLoadedSuccess, updateOnboardingCustomerViewDashboardLoadedFailure, updateOnboardingCustomerView, updateOnboardingCustomerViewSuccess, updateOnboardingCustomerViewFailure, updateOnboardingPaymentAccountStatus, updateOnboardingPaymentAccountStatusSuccess, updateOnboardingPaymentAccountStatusFailure, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountLoginStatusSuccess, updateOnboardingPaymentAccountLoginStatusFailure, establishOnboardingPlaidConnection, establishOnboardingPlaidConnectionSuccess, establishOnboardingPlaidConnectionFailure, getOnboardingPlaidLinkToken, getOnboardingPlaidLinkTokenSuccess, getOnboardingPlaidLinkTokenFailure, updateCurrentStep, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewLocalStoreData, saveOnboardingCustomerViewDataInLocalStore, saveOnboardingCompnayOfficerPhoneInLocalStore, updateOnboardingCustomerViewUIState, sendOnboardingOfficerOtp, sendOnboardingOfficerOtpSuccess, sendOnboardingOfficerOtpFailure, resendOnboardingOfficerOtp, verifyOnboardingOfficerOtp, verifyOnboardingOfficerOtpSuccess, verifyOnboardingOfficerOtpFailure, clearOnboardingCustomerViewDataInLocalStore, clearOnboardingCustomerView, } = onboardingCustomerView.actions;
765
598
  export default onboardingCustomerView.reducer;