@zeniai/client-epic-state 5.1.21 → 5.1.23-betaNB1

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 (80) hide show
  1. package/README.md +2 -1
  2. package/lib/commonStateTypes/viewAndReport/agingReportStateTypes.d.ts +1 -1
  3. package/lib/entity/accountRecon/accountReconPayload.d.ts +23 -1
  4. package/lib/entity/accountRecon/accountReconPayload.js +26 -1
  5. package/lib/entity/accountRecon/accountReconReducer.d.ts +5 -2
  6. package/lib/entity/accountRecon/accountReconReducer.js +33 -2
  7. package/lib/entity/accountRecon/accountReconSelector.d.ts +6 -1
  8. package/lib/entity/accountRecon/accountReconSelector.js +5 -0
  9. package/lib/entity/accountRecon/accountReconState.d.ts +22 -0
  10. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.d.ts +8 -0
  11. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +10 -0
  12. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +8 -0
  13. package/lib/epic.d.ts +6 -1
  14. package/lib/epic.js +6 -1
  15. package/lib/esm/entity/accountRecon/accountReconPayload.js +26 -1
  16. package/lib/esm/entity/accountRecon/accountReconReducer.js +32 -1
  17. package/lib/esm/entity/accountRecon/accountReconSelector.js +5 -0
  18. package/lib/esm/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +10 -0
  19. package/lib/esm/epic.js +6 -1
  20. package/lib/esm/index.js +7 -7
  21. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +29 -3
  22. package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +11 -0
  23. package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -2
  24. package/lib/esm/view/aiCfoView/epics/fetchSkillsEpic.js +34 -0
  25. package/lib/esm/view/aiCfoView/epics/submitQuestionEpic.js +7 -1
  26. package/lib/esm/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +34 -0
  27. package/lib/esm/view/expenseAutomationView/epics/accountRecon/reparseStatementEpic.js +31 -0
  28. package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +57 -0
  29. package/lib/esm/view/expenseAutomationView/epics/fluxAnalysis/fetchFluxAnalysisViewEpic.js +1 -0
  30. package/lib/esm/view/expenseAutomationView/payload/reconciliationPayload.js +142 -0
  31. package/lib/esm/view/expenseAutomationView/reducers/fluxAnalysisViewReducer.js +6 -1
  32. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +178 -8
  33. package/lib/esm/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +2 -1
  34. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +27 -0
  35. package/lib/esm/view/expenseAutomationView/types/reconciliationViewState.js +29 -0
  36. package/lib/esm/view/opExByVendor/opExByVendorReducer.js +28 -5
  37. package/lib/esm/view/opExByVendor/opExByVendorSelector.js +1 -0
  38. package/lib/esm/view/opExByVendor/refreshOpExByVendorReportEpic.js +21 -0
  39. package/lib/index.d.ts +12 -12
  40. package/lib/index.js +56 -37
  41. package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +14 -0
  42. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +8 -4
  43. package/lib/view/aiCfoView/aiCfoViewReducer.js +30 -4
  44. package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +2 -1
  45. package/lib/view/aiCfoView/aiCfoViewSelector.js +12 -0
  46. package/lib/view/aiCfoView/aiCfoViewState.d.ts +15 -0
  47. package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +2 -2
  48. package/lib/view/aiCfoView/epics/fetchSkillsEpic.d.ts +8 -0
  49. package/lib/view/aiCfoView/epics/fetchSkillsEpic.js +38 -0
  50. package/lib/view/aiCfoView/epics/submitQuestionEpic.js +7 -1
  51. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.d.ts +6 -0
  52. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +38 -0
  53. package/lib/view/expenseAutomationView/epics/accountRecon/reparseStatementEpic.d.ts +26 -0
  54. package/lib/view/expenseAutomationView/epics/accountRecon/reparseStatementEpic.js +35 -0
  55. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.d.ts +27 -0
  56. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +61 -0
  57. package/lib/view/expenseAutomationView/epics/fluxAnalysis/fetchFluxAnalysisViewEpic.js +1 -0
  58. package/lib/view/expenseAutomationView/payload/fluxAnalysisPayload.d.ts +8 -0
  59. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +163 -9
  60. package/lib/view/expenseAutomationView/payload/reconciliationPayload.js +146 -0
  61. package/lib/view/expenseAutomationView/reducers/fluxAnalysisViewReducer.d.ts +2 -1
  62. package/lib/view/expenseAutomationView/reducers/fluxAnalysisViewReducer.js +6 -1
  63. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +53 -3
  64. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +180 -9
  65. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +7 -1
  66. package/lib/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +2 -1
  67. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.d.ts +2 -0
  68. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +29 -1
  69. package/lib/view/expenseAutomationView/types/fluxAnalysisViewState.d.ts +2 -0
  70. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +172 -0
  71. package/lib/view/expenseAutomationView/types/reconciliationViewState.js +30 -0
  72. package/lib/view/opExByVendor/opExByVendorReducer.d.ts +6 -1
  73. package/lib/view/opExByVendor/opExByVendorReducer.js +29 -6
  74. package/lib/view/opExByVendor/opExByVendorSelector.d.ts +1 -0
  75. package/lib/view/opExByVendor/opExByVendorSelector.js +1 -0
  76. package/lib/view/opExByVendor/opExByVendorState.d.ts +1 -0
  77. package/lib/view/opExByVendor/refreshOpExByVendorReportEpic.d.ts +17 -0
  78. package/lib/view/opExByVendor/refreshOpExByVendorReportEpic.js +25 -0
  79. package/lib/view/vendorFiling1099/vendorFiling1099List/vendorFiling1099ListState.d.ts +1 -1
  80. package/package.json +4 -2
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.uploadAccountStatementFailure = exports.uploadAccountStatementSuccess = exports.uploadAccountStatement = exports.includeAccountInReconciliationFailure = exports.includeAccountInReconciliationSuccess = exports.includeAccountInReconciliation = exports.excludeAccountFromReconciliationFailure = exports.excludeAccountFromReconciliationSuccess = exports.excludeAccountFromReconciliation = exports.deleteAccountStatementFailure = exports.deleteAccountStatementSuccess = exports.deleteAccountStatement = exports.updateAccountReconciliationLocalData = exports.updateReconListScrollPosition = exports.updateSaveReconciliationReviewFetchStatus = exports.saveReconciliationReview = exports.updateReviewTabLocalData = exports.initializeReconciliationReviewTabLocalData = exports.updateReviewTabSortState = exports.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
4
+ exports.submitStatementUpdate = exports.updateStatementUpdateLocalData = exports.updateParsedStatementData = exports.resetReparseStatementStatus = exports.reparseStatementFailure = exports.reparseStatementSuccess = exports.reparseStatement = exports.parseStatementFailure = exports.parseStatementSuccess = exports.parseStatement = exports.uploadAccountStatementFailure = exports.uploadAccountStatementSuccess = exports.uploadAccountStatement = exports.includeAccountInReconciliationFailure = exports.includeAccountInReconciliationSuccess = exports.includeAccountInReconciliation = exports.excludeAccountFromReconciliationFailure = exports.excludeAccountFromReconciliationSuccess = exports.excludeAccountFromReconciliation = exports.deleteAccountStatementFailure = exports.deleteAccountStatementSuccess = exports.deleteAccountStatement = exports.updateAccountReconciliationLocalData = exports.updateReconListScrollPosition = exports.updateSaveReconciliationReviewFetchStatus = exports.saveReconciliationReview = exports.updateReviewTabLocalData = exports.initializeReconciliationReviewTabLocalData = exports.updateReviewTabSortState = exports.updateStatementProcessingFailed = exports.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
5
+ exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.clearStatementDateConflict = exports.submitStatementUpdateFailure = exports.submitStatementUpdateSuccess = void 0;
5
6
  const toolkit_1 = require("@reduxjs/toolkit");
6
7
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
7
8
  const accountState_1 = require("../../../entity/account/accountState");
8
9
  const accountReconState_1 = require("../../../entity/accountRecon/accountReconState");
10
+ const reconciliationViewState_1 = require("../types/reconciliationViewState");
9
11
  // Initial state
10
12
  exports.initialReconciliationTabsState = {
11
13
  balances: {
@@ -71,6 +73,7 @@ exports.initialState = {
71
73
  refreshStatus: { fetchState: 'Not-Started', error: undefined },
72
74
  actionFetchState: exports.initialActionFetchState,
73
75
  selectedAccountId: undefined,
76
+ statementProcessingFailed: false,
74
77
  statementUploadChosen: false,
75
78
  reconListUIState: {
76
79
  nodeCollapseState: {},
@@ -79,6 +82,7 @@ exports.initialState = {
79
82
  },
80
83
  },
81
84
  excludedAccountIDs: [],
85
+ summary: undefined,
82
86
  };
83
87
  // Create slice with reducers
84
88
  const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
@@ -147,7 +151,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
147
151
  fetchReconciliationSuccess: {
148
152
  reducer(draft, action) {
149
153
  if (action.payload.accountId == null) {
150
- updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? []);
154
+ 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);
151
155
  }
152
156
  else if (action.payload.reconciliation.reconciliation.length > 0 &&
153
157
  action.payload.reconciliation.accounts.length > 0) {
@@ -291,6 +295,10 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
291
295
  updateSelectedDrawerAccountId: (draft, action) => {
292
296
  draft.selectedDrawerAccountId = action.payload.selectedDrawerAccountId;
293
297
  },
298
+ updateStatementProcessingFailed: (draft, action) => {
299
+ draft.statementProcessingFailed =
300
+ action.payload.statementProcessingFailed;
301
+ },
294
302
  initialiseLocalDataForSelectedAccountId: () => { },
295
303
  updateSelectedTab: (draft, action) => {
296
304
  const { selectedTab } = action.payload;
@@ -382,10 +390,22 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
382
390
  },
383
391
  uploadAccountStatement: (draft, action) => {
384
392
  const { accountId, selectedPeriod } = action.payload;
385
- draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementUploadStatus = {
386
- fetchState: 'In-Progress',
387
- error: undefined,
388
- };
393
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
394
+ if (accountRecon != null) {
395
+ accountRecon.statementUploadStatus = {
396
+ fetchState: 'In-Progress',
397
+ error: undefined,
398
+ };
399
+ accountRecon.parsedStatementData = undefined;
400
+ accountRecon.statementParseStatus = {
401
+ fetchState: 'Not-Started',
402
+ error: undefined,
403
+ };
404
+ accountRecon.reparseStatementStatus = {
405
+ fetchState: 'Not-Started',
406
+ error: undefined,
407
+ };
408
+ }
389
409
  },
390
410
  uploadAccountStatementSuccess: (draft, action) => {
391
411
  const { accountId, selectedPeriod } = action.payload;
@@ -423,6 +443,138 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
423
443
  error: action.payload.error,
424
444
  };
425
445
  },
446
+ parseStatement: (draft, action) => {
447
+ const { accountId, selectedPeriod } = action.payload;
448
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
449
+ if (accountRecon != null) {
450
+ accountRecon.parsedStatementData = undefined;
451
+ accountRecon.statementParseStatus = {
452
+ fetchState: 'In-Progress',
453
+ error: undefined,
454
+ };
455
+ }
456
+ },
457
+ parseStatementSuccess: (draft, action) => {
458
+ const { accountId, selectedPeriod } = action.payload;
459
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseStatus = {
460
+ fetchState: 'Completed',
461
+ error: undefined,
462
+ };
463
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseInProgress = false;
464
+ draft.statementProcessingFailed = false;
465
+ },
466
+ parseStatementFailure: (draft, action) => {
467
+ const { accountId, selectedPeriod } = action.payload;
468
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseStatus = {
469
+ fetchState: 'Error',
470
+ error: action.payload.error,
471
+ };
472
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].statementParseInProgress = false;
473
+ draft.statementProcessingFailed = true;
474
+ },
475
+ reparseStatement: (draft, action) => {
476
+ const { accountId, selectedPeriod } = action.payload;
477
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
478
+ if (accountRecon != null) {
479
+ accountRecon.parsedStatementData = undefined;
480
+ accountRecon.reparseStatementStatus = {
481
+ fetchState: 'In-Progress',
482
+ error: undefined,
483
+ };
484
+ }
485
+ },
486
+ reparseStatementSuccess: (draft, action) => {
487
+ const { accountId, selectedPeriod } = action.payload;
488
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].reparseStatementStatus = {
489
+ fetchState: 'Completed',
490
+ error: undefined,
491
+ };
492
+ draft.statementProcessingFailed = false;
493
+ },
494
+ reparseStatementFailure: (draft, action) => {
495
+ const { accountId, selectedPeriod } = action.payload;
496
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].reparseStatementStatus = {
497
+ fetchState: 'Error',
498
+ error: action.payload.error,
499
+ };
500
+ draft.statementProcessingFailed = true;
501
+ },
502
+ resetReparseStatementStatus: (draft, action) => {
503
+ const { accountId, selectedPeriod } = action.payload;
504
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].reparseStatementStatus = {
505
+ fetchState: 'Not-Started',
506
+ error: undefined,
507
+ };
508
+ },
509
+ updateParsedStatementData: (draft, action) => {
510
+ const { accountId, selectedPeriod, parsedStatementData } = action.payload;
511
+ draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].parsedStatementData =
512
+ parsedStatementData;
513
+ },
514
+ updateStatementUpdateLocalData: (draft, action) => {
515
+ const { accountId, selectedPeriod, statementUpdateLocalData } = action.payload;
516
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
517
+ if (accountRecon != null) {
518
+ if (accountRecon.localData == null) {
519
+ accountRecon.localData = {
520
+ statementUpdateLocalData,
521
+ };
522
+ }
523
+ else {
524
+ accountRecon.localData.statementUpdateLocalData =
525
+ statementUpdateLocalData;
526
+ }
527
+ }
528
+ },
529
+ submitStatementUpdate: (draft, action) => {
530
+ const { accountId, selectedPeriod } = action.payload;
531
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
532
+ if (accountRecon != null) {
533
+ accountRecon.statementUpdateStatus = {
534
+ fetchState: 'In-Progress',
535
+ error: undefined,
536
+ };
537
+ // Clear any stale date conflict from a previous attempt.
538
+ accountRecon.statementDateConflict = null;
539
+ }
540
+ },
541
+ submitStatementUpdateSuccess: (draft, action) => {
542
+ const { accountId, selectedPeriod } = action.payload;
543
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
544
+ if (accountRecon != null) {
545
+ accountRecon.statementUpdateStatus = {
546
+ fetchState: 'Completed',
547
+ error: undefined,
548
+ };
549
+ accountRecon.statementDateConflict = null;
550
+ if (accountRecon.localData != null) {
551
+ accountRecon.localData.statementUpdateLocalData = undefined;
552
+ }
553
+ }
554
+ },
555
+ submitStatementUpdateFailure: (draft, action) => {
556
+ const { accountId, selectedPeriod, dateConflict } = action.payload;
557
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
558
+ if (accountRecon != null) {
559
+ accountRecon.statementUpdateStatus = {
560
+ fetchState: 'Error',
561
+ error: action.payload.error,
562
+ };
563
+ accountRecon.statementDateConflict = dateConflict ?? null;
564
+ // Keep the local edits around when the failure is a recoverable date
565
+ // conflict so the user can re-upload / re-edit without losing changes.
566
+ if (dateConflict == null && accountRecon.localData != null) {
567
+ accountRecon.localData.statementUpdateLocalData = undefined;
568
+ }
569
+ }
570
+ },
571
+ clearStatementDateConflict: (draft, action) => {
572
+ const { accountId, selectedPeriod } = action.payload;
573
+ const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
574
+ if (accountRecon != null) {
575
+ accountRecon.statementDateConflict = null;
576
+ }
577
+ },
426
578
  updateAccountReconciliationLocalData: (draft, action) => {
427
579
  const { accountId, selectedPeriod, localData } = action.payload;
428
580
  const oldLocalData = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].localData;
@@ -528,10 +680,10 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
528
680
  },
529
681
  });
530
682
  // Export actions
531
- _a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
683
+ _a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateStatementProcessingFailed = _a.updateStatementProcessingFailed, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.parseStatement = _a.parseStatement, exports.parseStatementSuccess = _a.parseStatementSuccess, exports.parseStatementFailure = _a.parseStatementFailure, exports.reparseStatement = _a.reparseStatement, exports.reparseStatementSuccess = _a.reparseStatementSuccess, exports.reparseStatementFailure = _a.reparseStatementFailure, exports.resetReparseStatementStatus = _a.resetReparseStatementStatus, exports.updateParsedStatementData = _a.updateParsedStatementData, exports.updateStatementUpdateLocalData = _a.updateStatementUpdateLocalData, exports.submitStatementUpdate = _a.submitStatementUpdate, exports.submitStatementUpdateSuccess = _a.submitStatementUpdateSuccess, exports.submitStatementUpdateFailure = _a.submitStatementUpdateFailure, exports.clearStatementDateConflict = _a.clearStatementDateConflict, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
532
684
  // Export reducer
533
685
  exports.default = expenseAutomationReconciliationView.reducer;
534
- function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts) {
686
+ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts, summary) {
535
687
  draft.excludedAccountIDs = excludedAccounts.map((ea) => ea.account_id);
536
688
  draft.excludedAccountExclusionInfo = {};
537
689
  excludedAccounts.forEach((ea) => {
@@ -560,6 +712,7 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
560
712
  : undefined,
561
713
  };
562
714
  });
715
+ const oldReconciliationByAccountID = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID ?? {};
563
716
  draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)] = {
564
717
  accountIDs: [],
565
718
  reconciliationByAccountID: {},
@@ -583,6 +736,7 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
583
736
  paymentAccountId: account?.payment_account_id ?? undefined,
584
737
  };
585
738
  }
739
+ const oldRecord = oldReconciliationByAccountID[reconciliation.account_id];
586
740
  accountReconciliationRecords.reconciliationByAccountID[reconciliation.account_id] = {
587
741
  accountId: reconciliation.account_id,
588
742
  reconciliationId: reconciliation.reconciliation_id ?? undefined,
@@ -592,14 +746,25 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
592
746
  statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
593
747
  statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
594
748
  statementParseInProgress: reconciliation.bank_status.code === 'parsing',
749
+ statementParseStatus: oldRecord?.statementParseStatus ?? {
750
+ fetchState: 'Not-Started',
751
+ error: undefined,
752
+ },
753
+ reparseStatementStatus: oldRecord?.reparseStatementStatus ?? {
754
+ fetchState: 'Not-Started',
755
+ error: undefined,
756
+ },
757
+ statementDateConflict: oldRecord?.statementDateConflict ?? null,
595
758
  localData: {
759
+ ...oldRecord?.localData,
596
760
  accountSource: account?.reconciliation_source != null
597
761
  ? (0, accountState_1.toReconciliationAccountSource)(account.reconciliation_source)
598
- : undefined,
762
+ : oldRecord?.localData?.accountSource,
599
763
  },
600
764
  accountDetectionReason: account?.detection_info != null && account.detection_reason != null
601
765
  ? account.detection_reason
602
766
  : undefined,
767
+ parsedStatementData: oldRecord?.parsedStatementData,
603
768
  };
604
769
  accountReconciliationRecords.accountIDs.push(reconciliation.account_id);
605
770
  });
@@ -613,6 +778,9 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
613
778
  draft.fetchState = 'Completed';
614
779
  draft.error = undefined;
615
780
  }
781
+ if (summary !== undefined) {
782
+ draft.summary = (0, reconciliationViewState_1.toReconciliationViewSummary)(summary);
783
+ }
616
784
  }
617
785
  function updateReconciliationByAccountID(draft, accounts, selectedPeriod, accountId, reconciliationData, refreshViewInBackground) {
618
786
  const oldRecord = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId];
@@ -680,6 +848,9 @@ const updateReconciliationByAccountIDOnIncludeAccount = (draft, accountId, recon
680
848
  statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
681
849
  statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
682
850
  statementParseInProgress: reconciliation.bank_status.code === 'parsing',
851
+ statementParseStatus: { fetchState: 'Not-Started', error: undefined },
852
+ reparseStatementStatus: { fetchState: 'Not-Started', error: undefined },
853
+ statementDateConflict: null,
683
854
  localData: {},
684
855
  accountDetectionReason: undefined,
685
856
  };
@@ -9,7 +9,7 @@ import { BankStatusCodeType } from '../../../entity/accountRecon/accountReconSta
9
9
  import { ClassBase } from '../../../entity/class/classState';
10
10
  import { Vendor } from '../../../entity/vendor/vendorState';
11
11
  import { PlaidConnectionDetails } from '../../spendManagement/plaidAccount/plaidAccountViewState';
12
- import { AccountReconciliationLocalData, ActionFetchStates, ReconListUIState, ReconciliationTabsState, ReconciliationViewTabType } from '../types/reconciliationViewState';
12
+ import { AccountReconciliationLocalData, ActionFetchStates, ParsedStatementData, ReconListUIState, ReconciliationTabsState, ReconciliationViewSummary, ReconciliationViewTabType, StatementDateConflict } from '../types/reconciliationViewState';
13
13
  export declare const ALL_ACCOUNT_RECON_SECTION_IDS: readonly ["assets", "liabilities"];
14
14
  export declare const toAccountReconSectionID: (v: string) => "assets" | "liabilities";
15
15
  export type AccountReconSectionID = ReturnType<typeof toAccountReconSectionID>;
@@ -37,10 +37,12 @@ export interface ExpenseAutomationReconciliationViewSelector {
37
37
  refreshStatus: FetchStateAndError;
38
38
  reviewTabSelectedVendorByTransactionId: Record<ID, Vendor>;
39
39
  selectedTab: ReconciliationViewTabType;
40
+ statementProcessingFailed: boolean;
40
41
  statementUploadChosen: boolean;
41
42
  selectedAccountId?: ID;
42
43
  selectedDrawerAccountId?: ID;
43
44
  selectedReconAccount?: AccountReconciliationByAccount;
45
+ summary?: ReconciliationViewSummary;
44
46
  }
45
47
  export interface AccountReconciliationBySection {
46
48
  accountIDs: ID[];
@@ -57,11 +59,15 @@ export interface AccountReconciliationByAccount {
57
59
  connectionInProgress: boolean;
58
60
  localData: AccountReconciliationLocalData;
59
61
  refreshStatus: FetchStateAndError;
62
+ reparseStatementStatus: FetchStateAndError;
63
+ statementDateConflict: StatementDateConflict | null;
60
64
  statementDeleteStatus: FetchStateAndError;
61
65
  statementParseInProgress: boolean;
66
+ statementParseStatus: FetchStateAndError;
62
67
  statementUpdateStatus: FetchStateAndError;
63
68
  statementUploadStatus: FetchStateAndError;
64
69
  transactionFetchState: FetchStateAndError;
65
70
  accountDetectionReason?: string;
71
+ parsedStatementData?: ParsedStatementData;
66
72
  paymentAccountId?: ID;
67
73
  }
@@ -11,7 +11,7 @@ const vendorSelector_1 = require("../../../entity/vendor/vendorSelector");
11
11
  const expenseAutomationViewSelectorTypes_1 = require("../selectorTypes/expenseAutomationViewSelectorTypes");
12
12
  function getExpenseAutomationFluxAnalysisView(state) {
13
13
  const { expenseAutomationFluxAnalysisViewState, monthEndCloseChecksState, monthEndCloseChecksViewState, } = state;
14
- const { fetchState, error, refreshStatus, uiState, reviewOperatingExpenseIdsByPeriod, selectedSectionIdsByPeriod, groupsBySelectedPeriod, fluxAnalysisEntities, bulkReviewStatus, currency, totalBalancesAndVariance, } = expenseAutomationFluxAnalysisViewState;
14
+ const { fetchState, error, lastRefreshSuccessTime, refreshStatus, uiState, reviewOperatingExpenseIdsByPeriod, selectedSectionIdsByPeriod, groupsBySelectedPeriod, fluxAnalysisEntities, bulkReviewStatus, currency, totalBalancesAndVariance, } = expenseAutomationFluxAnalysisViewState;
15
15
  const fetchStateAndError = {
16
16
  fetchState,
17
17
  error,
@@ -113,6 +113,7 @@ function getExpenseAutomationFluxAnalysisView(state) {
113
113
  refreshStatus,
114
114
  currency,
115
115
  completionStatus,
116
+ lastRefreshSuccessTime,
116
117
  };
117
118
  }
118
119
  // Helper function to transform operating expense to vendor view
@@ -1,5 +1,7 @@
1
+ import { ID } from '../../../commonStateTypes/common';
1
2
  import { ReportIDPlusForecastID } from '../../../commonStateTypes/viewAndReport/viewAndReport';
2
3
  import { RootState } from '../../../reducer';
3
4
  import { ExpenseAutomationReconciliationViewSelector } from '../selectorTypes/reconciliationViewSelectorTypes';
4
5
  export declare const getExpenseAutomationReconciliationView: (state: RootState) => ExpenseAutomationReconciliationViewSelector;
6
+ export declare const getReparseStatementStatusByAccountId: (state: RootState, accountId: ID) => import("../../../commonStateTypes/common").FetchStateAndError;
5
7
  export declare const isAccountReconReport: (reportId: ReportIDPlusForecastID) => boolean;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isAccountReconReport = exports.getExpenseAutomationReconciliationView = void 0;
6
+ exports.isAccountReconReport = exports.getReparseStatementStatusByAccountId = exports.getExpenseAutomationReconciliationView = void 0;
7
7
  const toolkit_1 = require("@reduxjs/toolkit");
8
8
  const big_js_1 = __importDefault(require("big.js"));
9
9
  const keys_1 = __importDefault(require("lodash/keys"));
@@ -49,6 +49,17 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
49
49
  error: undefined,
50
50
  })
51
51
  : { fetchState: 'Not-Started', error: undefined };
52
+ const monthEndChecksForPeriod = selectedPeriod != null
53
+ ? monthEndCloseChecksState.monthEndCloseChecksByTenantId[currentTenant.tenantId]?.[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]
54
+ : undefined;
55
+ const reconCheckTimeSavedHours = monthEndChecksForPeriod?.monthEndCloseCheckList?.find((check) => check.id === 'reconciliation')?.progressJson?.timeSavedHours;
56
+ const summaryWithTimeSaved = reconciliationViewState.summary != null
57
+ ? {
58
+ ...reconciliationViewState.summary,
59
+ timeSavedHours: reconCheckTimeSavedHours ??
60
+ reconciliationViewState.summary.timeSavedHours,
61
+ }
62
+ : undefined;
52
63
  if (accountReconForMonthYearPeriod == null) {
53
64
  return {
54
65
  bankAccounts: [],
@@ -72,6 +83,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
72
83
  selectedTab: reconciliationViewState.selectedTab,
73
84
  monthYearPeriod: selectedPeriod,
74
85
  selectedAccountId: reconciliationViewState.selectedAccountId,
86
+ statementProcessingFailed: reconciliationViewState.statementProcessingFailed,
75
87
  statementUploadChosen: reconciliationViewState.statementUploadChosen,
76
88
  accountReconciliationsByAccountID: {},
77
89
  reconciliationTabsState: reconciliationViewReducer_1.initialReconciliationTabsState,
@@ -121,6 +133,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
121
133
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
122
134
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
123
135
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
136
+ summary: summaryWithTimeSaved,
124
137
  };
125
138
  }
126
139
  const allAccountIDs = accountReconForMonthYearPeriod.accountIDs;
@@ -245,6 +258,12 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
245
258
  .refreshStatus,
246
259
  statementDeleteStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
247
260
  .statementDeleteStatus,
261
+ statementParseStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
262
+ .statementParseStatus,
263
+ reparseStatementStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
264
+ .reparseStatementStatus,
265
+ statementDateConflict: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
266
+ .statementDateConflict,
248
267
  statementUpdateStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
249
268
  .statementUpdateStatus,
250
269
  statementUploadStatus: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
@@ -253,6 +272,8 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
253
272
  .localData,
254
273
  statementParseInProgress: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
255
274
  .statementParseInProgress,
275
+ parsedStatementData: accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
276
+ .parsedStatementData,
256
277
  transactionFetchState: (0, reduceFetchState_1.reduceAnyFetchState)([
257
278
  accountReconForMonthYearPeriod.reconciliationByAccountID[accountID]
258
279
  .transactionFetchState,
@@ -321,6 +342,9 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
321
342
  statementUpdateStatus: { fetchState: 'Not-Started' },
322
343
  statementUploadStatus: { fetchState: 'Not-Started' },
323
344
  statementDeleteStatus: { fetchState: 'Not-Started' },
345
+ statementParseStatus: { fetchState: 'Not-Started' },
346
+ reparseStatementStatus: { fetchState: 'Not-Started' },
347
+ statementDateConflict: null,
324
348
  localData: {},
325
349
  connectionInProgress: false,
326
350
  statementParseInProgress: false,
@@ -409,6 +433,7 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
409
433
  refreshStatus: reconciliationViewState.refreshStatus,
410
434
  selectedTab: reconciliationViewState.selectedTab,
411
435
  selectedDrawerAccountId: reconciliationViewState.selectedDrawerAccountId,
436
+ statementProcessingFailed: reconciliationViewState.statementProcessingFailed,
412
437
  statementUploadChosen: reconciliationViewState.statementUploadChosen,
413
438
  monthYearPeriod: selectedPeriod,
414
439
  accountReconciliationBySectionID,
@@ -429,8 +454,11 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
429
454
  excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
430
455
  includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
431
456
  excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
457
+ summary: summaryWithTimeSaved,
432
458
  };
433
459
  });
460
+ const getReparseStatementStatusByAccountId = (state, accountId) => (0, exports.getExpenseAutomationReconciliationView)(state).accountReconciliationsByAccountID[accountId]?.reparseStatementStatus;
461
+ exports.getReparseStatementStatusByAccountId = getReparseStatementStatusByAccountId;
434
462
  const isAccountReconReport = (reportId) => {
435
463
  return reportId.endsWith('reconciliation');
436
464
  };
@@ -5,6 +5,7 @@ import { SortOrder } from '../../../commonStateTypes/selectorTypes/sortOrderType
5
5
  import { MonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
6
6
  import { PageToken } from '../../../commonStateTypes/viewAndReport/viewAndReport';
7
7
  import { FluxAnalysisSectionType } from '../selectorTypes/fluxAnalysisViewSelectorTypes';
8
+ import { ZeniDate } from '../../../zeniDayJS';
8
9
  declare const toFluxAnalysisSortKey: (v: string) => "vendor" | "status" | "variance";
9
10
  export type FluxAnalysisSortKey = ReturnType<typeof toFluxAnalysisSortKey>;
10
11
  export type FluxAnalysisActionType = 'review' | 'unreview';
@@ -75,5 +76,6 @@ export interface FluxAnalysisViewState extends FetchedState {
75
76
  selectedSectionIdsByPeriod: Record<MonthYearPeriodId, FluxAnalysisSectionType[]>;
76
77
  totalBalancesAndVariance: BalancesAndVariance | undefined;
77
78
  uiState: FluxAnalysisViewUIState;
79
+ lastRefreshSuccessTime?: ZeniDate;
78
80
  }
79
81
  export {};