@zeniai/client-epic-state 5.2.14-betaRD1 → 5.2.14

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 (109) hide show
  1. package/lib/entity/approvalRule/approvalRuleConflict.d.ts +0 -13
  2. package/lib/entity/approvalRule/approvalRuleConflict.js +1 -16
  3. package/lib/entity/jeSchedules/jeScheduleHelper.d.ts +0 -1
  4. package/lib/entity/jeSchedules/jeScheduleHelper.js +0 -7
  5. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +1 -78
  6. package/lib/entity/jeSchedules/jeSchedulesPayload.js +4 -183
  7. package/lib/entity/jeSchedules/jeSchedulesReducer.d.ts +2 -4
  8. package/lib/entity/jeSchedules/jeSchedulesReducer.js +2 -30
  9. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +2 -11
  10. package/lib/entity/jeSchedules/jeSchedulesSelector.js +3 -38
  11. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +1 -123
  12. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -24
  13. package/lib/entity/jeSchedules/jeSchedulesTypes.js +1 -96
  14. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  15. package/lib/entity/snackbar/snackbarTypes.js +0 -3
  16. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +0 -2
  17. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.js +0 -2
  18. package/lib/entity/transaction/stateTypes/scheduleTransaction.d.ts +0 -2
  19. package/lib/epic.d.ts +1 -9
  20. package/lib/epic.js +0 -16
  21. package/lib/esm/entity/approvalRule/approvalRuleConflict.js +1 -16
  22. package/lib/esm/entity/jeSchedules/jeScheduleHelper.js +0 -6
  23. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +5 -183
  24. package/lib/esm/entity/jeSchedules/jeSchedulesReducer.js +2 -30
  25. package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +2 -36
  26. package/lib/esm/entity/jeSchedules/jeSchedulesTypes.js +0 -86
  27. package/lib/esm/entity/snackbar/snackbarTypes.js +0 -3
  28. package/lib/esm/entity/transaction/payloadTypes/scheduleTransactionPayload.js +0 -2
  29. package/lib/esm/epic.js +0 -16
  30. package/lib/esm/index.js +8 -14
  31. package/lib/esm/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +3 -6
  32. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic.js +1 -9
  33. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +5 -41
  34. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/ignoreRecommendedJeScheduleEpic.js +2 -14
  35. package/lib/esm/view/expenseAutomationView/payload/jeSchedulesPayload.js +0 -55
  36. package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +29 -319
  37. package/lib/esm/view/expenseAutomationView/selectors/jeAccountSettingsViewSelector.js +0 -1
  38. package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +22 -327
  39. package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +6 -5
  40. package/lib/esm/view/scheduleView/scheduleListView/epics/fetchAccruedScheduleListEpic.js +1 -1
  41. package/lib/esm/view/scheduleView/scheduleListView/epics/fetchDownloadSchedulesEpic.js +2 -7
  42. package/lib/esm/view/scheduleView/scheduleListView/scheduleListReducer.js +3 -5
  43. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +1 -20
  44. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +1 -20
  45. package/lib/index.d.ts +12 -17
  46. package/lib/index.js +47 -91
  47. package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +3 -6
  48. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic.js +1 -9
  49. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.d.ts +2 -3
  50. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +3 -39
  51. package/lib/view/expenseAutomationView/epics/jeSchedule/ignoreRecommendedJeScheduleEpic.js +2 -14
  52. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  53. package/lib/view/expenseAutomationView/payload/jeSchedulesPayload.d.ts +3 -86
  54. package/lib/view/expenseAutomationView/payload/jeSchedulesPayload.js +1 -58
  55. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +12 -93
  56. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +29 -321
  57. package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +1 -1
  58. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -2
  59. package/lib/view/expenseAutomationView/selectorTypes/jeAccountSettingsViewSelectorTypes.d.ts +0 -1
  60. package/lib/view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes.d.ts +7 -41
  61. package/lib/view/expenseAutomationView/selectors/jeAccountSettingsViewSelector.js +0 -1
  62. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.d.ts +0 -34
  63. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +21 -335
  64. package/lib/view/expenseAutomationView/types/completedSubTab.d.ts +1 -1
  65. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +8 -83
  66. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +8 -8
  67. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
  68. package/lib/view/scheduleView/scheduleListView/epics/fetchAccruedScheduleListEpic.js +1 -1
  69. package/lib/view/scheduleView/scheduleListView/epics/fetchDownloadSchedulesEpic.js +2 -7
  70. package/lib/view/scheduleView/scheduleListView/scheduleListReducer.d.ts +2 -4
  71. package/lib/view/scheduleView/scheduleListView/scheduleListReducer.js +3 -5
  72. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +1 -20
  73. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelectorTypes.d.ts +0 -3
  74. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +1 -20
  75. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelectorTypes.d.ts +0 -3
  76. package/package.json +1 -1
  77. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchOneTimeAccrualEpic.js +0 -45
  78. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/createOneTimeAccrualEpic.js +0 -104
  79. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.js +0 -25
  80. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.js +0 -138
  81. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.js +0 -79
  82. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/oneTimeAccrualActionsEpic.js +0 -180
  83. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/revertJeScheduleEpic.js +0 -111
  84. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +0 -28
  85. package/lib/esm/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.js +0 -140
  86. package/lib/esm/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.js +0 -1
  87. package/lib/esm/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.js +0 -106
  88. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchOneTimeAccrualEpic.d.ts +0 -21
  89. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchOneTimeAccrualEpic.js +0 -49
  90. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/createOneTimeAccrualEpic.d.ts +0 -9
  91. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/createOneTimeAccrualEpic.js +0 -108
  92. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.d.ts +0 -8
  93. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.js +0 -29
  94. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.d.ts +0 -9
  95. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.js +0 -142
  96. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.d.ts +0 -8
  97. package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.js +0 -83
  98. package/lib/view/expenseAutomationView/epics/jeSchedule/oneTimeAccrualActionsEpic.d.ts +0 -13
  99. package/lib/view/expenseAutomationView/epics/jeSchedule/oneTimeAccrualActionsEpic.js +0 -187
  100. package/lib/view/expenseAutomationView/epics/jeSchedule/revertJeScheduleEpic.d.ts +0 -65
  101. package/lib/view/expenseAutomationView/epics/jeSchedule/revertJeScheduleEpic.js +0 -115
  102. package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.d.ts +0 -6
  103. package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +0 -32
  104. package/lib/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.d.ts +0 -36
  105. package/lib/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.js +0 -145
  106. package/lib/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.d.ts +0 -42
  107. package/lib/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.js +0 -2
  108. package/lib/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.d.ts +0 -21
  109. package/lib/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.js +0 -112
@@ -5,34 +5,18 @@ import { getClassById } from '../class/classSelector';
5
5
  import { getScheduleTransactionById } from '../transaction/transactionSelector';
6
6
  import { getUserByUserId } from '../user/userSelector';
7
7
  import { getVendorByVendorId } from '../vendor/vendorSelector';
8
- // Takes the slice, not RootState: an accrual denormalizes its vendor, account and class names, so
9
- // unlike getJEAccruedScheduleByJEScheduleKey this joins nothing.
10
- //
11
- // Spreads the stored entity rather than rebuilding it field by field. That is deliberate — the
12
- // accrued joiner listed every field explicitly and silently dropped jeScheduleType, which made a
13
- // whole tab render empty while its reducer test still passed. A spread cannot lose a field.
14
- export const getJEOneTimeAccrualByKey = (jeOneTimeAccrualKey, jeSchedulesState) => {
15
- const accrual = recordGet(jeSchedulesState.oneTimeAccrualsByKey, jeOneTimeAccrualKey);
16
- if (accrual == null) {
17
- return undefined;
18
- }
19
- return { ...accrual, jeOneTimeAccrualKey };
20
- };
21
8
  export const getJEAccruedScheduleByJEScheduleKey = (JEScheduleKey, state) => {
22
9
  const { jeSchedulesState, vendorState, accountState, userState, classState } = state;
23
10
  const JEAccruedScheduleState = recordGet(jeSchedulesState.schedulesByAccruedJEScheduleKey, JEScheduleKey);
24
11
  if (JEAccruedScheduleState == null) {
25
12
  return undefined;
26
13
  }
27
- const { period, updatedByUserID: updatedBy, createdByUserID: createdBy, vendorId, jeCredit, jeDebit, currencyCode, currencySymbol, balanceAsOfToday, startDate, endDate, status, updatedAt, jeScheduleId, scheduledJournalEntry, dayOfPostingDate: postingDate, lastDayOfMonth, memo, recurringAmount, createTime, otherAttributes, jeScheduleType, } = JEAccruedScheduleState;
14
+ const { period, updatedByUserID: updatedBy, vendorId, jeCredit, jeDebit, currencyCode, currencySymbol, balanceAsOfToday, startDate, endDate, status, updatedAt, jeScheduleId, scheduledJournalEntry, dayOfPostingDate: postingDate, lastDayOfMonth, memo, recurringAmount, createTime, otherAttributes, } = JEAccruedScheduleState;
28
15
  const vendorDetails = getVendorByVendorId(vendorState, vendorId);
29
16
  if (vendorDetails == null) {
30
17
  throw new Error(`Vendor with ${vendorId} doesn't exist`);
31
18
  }
32
19
  const userDetails = updatedBy != null ? getUserByUserId(userState, updatedBy) : undefined;
33
- // Resolved the same way the prepaid / fixed joiner does. Without it every accrued row rendered a
34
- // hyphen under "Created by", even though the payload carries created_by.
35
- const createdByUserDetails = createdBy != null ? getUserByUserId(userState, createdBy) : undefined;
36
20
  const accountCredit = jeCredit.accountId != null
37
21
  ? getAccountBase(accountState, jeCredit.accountId, 'account_list')
38
22
  : undefined;
@@ -51,19 +35,14 @@ export const getJEAccruedScheduleByJEScheduleKey = (JEScheduleKey, state) => {
51
35
  reportId: 'class_list',
52
36
  })
53
37
  : undefined;
54
- const postedCount = scheduledJournalEntry.filter((sje) => sje.status.code === 'posted' || sje.status.code === 'recorded').length;
55
- const lifecycleTotal = period ?? scheduledJournalEntry.length;
56
38
  return {
57
39
  jeScheduleId,
58
40
  otherAttributes,
59
41
  vendor: vendorDetails,
60
42
  updatedByUser: userDetails,
61
- createdByUser: createdByUserDetails,
62
43
  updatedAt,
63
44
  currencyCode,
64
45
  currencySymbol,
65
- lifecycleTotal,
66
- postedCount,
67
46
  jeCredit: {
68
47
  accountingClass: classCredit,
69
48
  account: accountCredit,
@@ -81,7 +60,6 @@ export const getJEAccruedScheduleByJEScheduleKey = (JEScheduleKey, state) => {
81
60
  memo,
82
61
  createTime,
83
62
  recurringAmount,
84
- jeScheduleType,
85
63
  jeAccruedScheduleKey: JEScheduleKey,
86
64
  balanceAsOfToday: balanceAsOfToday != null
87
65
  ? toAmount(balanceAsOfToday, currencyCode, currencySymbol)
@@ -92,7 +70,7 @@ export const getJEAccruedScheduleByJEScheduleKey = (JEScheduleKey, state) => {
92
70
  export const getJEScheduledTransactionByJEScheduleTransactionKey = (jeScheduleTransactionKey, state) => {
93
71
  const { jeSchedulesState, vendorState, accountState, userState, classState, transactionState, } = state;
94
72
  const jeScheduleTransactionState = recordGet(jeSchedulesState.schedulesByTransactionKey, jeScheduleTransactionKey);
95
- const { period, updatedByUserID: updatedBy, createdByUserID: createdBy, createTime, vendorId, jeCredit, jeDebit, currencyCode, currencySymbol, balanceAsOfToday, baseTransaction, startDate, endDate, status, updatedAt, jeScheduleId, scheduledJournalEntry, dayOfPostingDate: postingDate, lastDayOfMonth, otherAttributes, jeScheduleType, aiSummaries, confidenceScore, recommendations, recurringAmount, postedCount: postedCountFromServer, } = jeScheduleTransactionState;
73
+ const { period, updatedByUserID: updatedBy, createdByUserID: createdBy, vendorId, jeCredit, jeDebit, currencyCode, currencySymbol, balanceAsOfToday, baseTransaction, startDate, endDate, status, updatedAt, jeScheduleId, scheduledJournalEntry, dayOfPostingDate: postingDate, lastDayOfMonth, otherAttributes, jeScheduleType, aiSummaries, recommendations, } = jeScheduleTransactionState;
96
74
  const vendorDetails = getVendorByVendorId(vendorState, vendorId);
97
75
  if (vendorDetails == null) {
98
76
  throw new Error(`Vendor with ${vendorId} doesn't exist`);
@@ -121,24 +99,14 @@ export const getJEScheduledTransactionByJEScheduleTransactionKey = (jeScheduleTr
121
99
  reportId: 'class_list',
122
100
  })
123
101
  : undefined;
124
- // The expense-automation response carries no scheduled journal entries for these rows, so the
125
- // filter below counts an empty array and every schedule reported 0 posted. Prefer the count the
126
- // server derives, and keep the filter for callers that do have entries (the detail page, and
127
- // failed postings, which come with theirs).
128
- const postedCount = postedCountFromServer ??
129
- scheduledJournalEntry.filter((sje) => sje.status.code === 'posted' || sje.status.code === 'recorded').length;
130
- const lifecycleTotal = period ?? scheduledJournalEntry.length;
131
102
  return {
132
103
  jeScheduleId,
133
104
  jeScheduleType,
134
- recurringAmount,
135
105
  jeScheduleTransactionKey: jeScheduleTransactionKey,
136
106
  vendor: vendorDetails,
137
107
  updatedByUser: userDetails,
138
108
  updatedAt: updatedAt,
139
109
  period,
140
- lifecycleTotal,
141
- postedCount,
142
110
  balanceAsOfToday: balanceAsOfToday != null
143
111
  ? toAmount(balanceAsOfToday, currencyCode, currencySymbol)
144
112
  : undefined,
@@ -161,9 +129,7 @@ export const getJEScheduledTransactionByJEScheduleTransactionKey = (jeScheduleTr
161
129
  },
162
130
  scheduledJournalEntry,
163
131
  aiSummaries,
164
- confidenceScore,
165
132
  createdByUser: createdByUserDetails,
166
- createTime,
167
133
  recommendations,
168
134
  };
169
135
  };
@@ -24,92 +24,6 @@ const SCHEDULE_STATUS_CODE = [
24
24
  'draft',
25
25
  ];
26
26
  export const toScheduleStatusCodeType = (v) => stringToUnion(v, SCHEDULE_STATUS_CODE);
27
- // One-time accruals come from agent-je's Mongo `accruals` collection, not the JE schedule
28
- // datastore, so they carry their own status vocabulary rather than SCHEDULE_STATUS_CODE.
29
- // `posting` and `reversing` are transient claims held while a JE posts.
30
- /**
31
- * Mirrors agent-je's own status constants. `reverted` is the terminal state a manual revert writes
32
- * alongside is_deleted; without it stringToUnion logs an error and passes the raw string through.
33
- *
34
- * There is deliberately no `ignored` member -- ignoring an accrual sets the `is_ignored` flag and
35
- * leaves the status on `draft`.
36
- */
37
- const ONE_TIME_ACCRUAL_STATUS_CODE = [
38
- 'draft',
39
- 'posting',
40
- 'posted',
41
- 'posting_blocked',
42
- 'reversing',
43
- 'reversed',
44
- 'reverted',
45
- ];
46
- export const toOneTimeAccrualStatusCodeType = (v) => stringToUnion(v, ONE_TIME_ACCRUAL_STATUS_CODE);
47
- // Who created the accrual. This — not the creator's email — is the authoritative
48
- // AI-vs-manual signal for the Method column.
49
- const ONE_TIME_ACCRUAL_ORIGIN = ['agent', 'human'];
50
- export const toOneTimeAccrualOriginType = (v) => stringToUnion(v, ONE_TIME_ACCRUAL_ORIGIN);
51
- const ONE_TIME_ACCRUAL_AUTOMATION_TIER = ['manual', 'draft', 'auto'];
52
- export const toOneTimeAccrualAutomationTierType = (v) => stringToUnion(v, ONE_TIME_ACCRUAL_AUTOMATION_TIER);
53
- // How the accrual is allowed to reverse. The two are exclusive: a scheduled row reverses on
54
- // expectedReversalDate and bills never drive it; an on_bill_match row reverses only when a bill
55
- // is matched, which is why its lifecycle reads "Reverses on match" rather than showing a date.
56
- const ONE_TIME_ACCRUAL_REVERSAL_POLICY = [
57
- 'on_bill_match',
58
- 'scheduled_date',
59
- ];
60
- export const toOneTimeAccrualReversalPolicyType = (v) => stringToUnion(v, ONE_TIME_ACCRUAL_REVERSAL_POLICY);
61
- // What actually caused a reverse. Distinct from a *revert*, which soft-deletes the row and
62
- // never sets this.
63
- const ONE_TIME_ACCRUAL_REVERSAL_TRIGGER = [
64
- 'bill_match',
65
- 'scheduled_date',
66
- 'manual_reverse',
67
- ];
68
- export const toOneTimeAccrualReversalTriggerType = (v) => stringToUnionStrict(v ?? '', ONE_TIME_ACCRUAL_REVERSAL_TRIGGER);
69
- // Why a human told the AI Accountant not to accrue this month. The gateway validates against
70
- // exactly this set, so it is a union rather than a free-text string.
71
- const ONE_TIME_ACCRUAL_IGNORE_REASON = [
72
- 'no_activity',
73
- 'paused',
74
- 'too_small',
75
- 'need_invoice',
76
- 'other_ignore',
77
- ];
78
- export const toOneTimeAccrualIgnoreReasonType = (v) => stringToUnion(v, ONE_TIME_ACCRUAL_IGNORE_REASON);
79
- export const ALL_ONE_TIME_ACCRUAL_IGNORE_REASONS = ONE_TIME_ACCRUAL_IGNORE_REASON;
80
- // Why a recommended prepaid / fixed-asset schedule is being dismissed. A different set from the
81
- // accrual ignore reasons: the gateway validates each against its own list.
82
- const JE_SCHEDULE_IGNORE_REASON = [
83
- 'not_needed',
84
- 'wrong_account',
85
- 'duplicate',
86
- 'already_handled',
87
- 'other_ignore',
88
- ];
89
- export const toJEScheduleIgnoreReasonType = (v) => stringToUnion(v, JE_SCHEDULE_IGNORE_REASON);
90
- export const ALL_JE_SCHEDULE_IGNORE_REASONS = JE_SCHEDULE_IGNORE_REASON;
91
- // Why a posted prepaid / fixed-asset schedule is being undone. Note `not_accrual` is accrual-only
92
- // and rejected here, and `created_by_mistake` is schedule-only.
93
- const JE_SCHEDULE_REVERT_REASON = [
94
- 'amount_off',
95
- 'wrong_period',
96
- 'duplicate',
97
- 'created_by_mistake',
98
- 'other_revert',
99
- ];
100
- export const toJEScheduleRevertReasonType = (v) => stringToUnion(v, JE_SCHEDULE_REVERT_REASON);
101
- export const ALL_JE_SCHEDULE_REVERT_REASONS = JE_SCHEDULE_REVERT_REASON;
102
- // Why a posted accrual is being undone. A disjoint set from the ignore reasons — the gateway
103
- // validates each action against its own list and rejects the other's values.
104
- const ONE_TIME_ACCRUAL_REVERT_REASON = [
105
- 'amount_off',
106
- 'wrong_period',
107
- 'not_accrual',
108
- 'duplicate',
109
- 'other_revert',
110
- ];
111
- export const toOneTimeAccrualRevertReasonType = (v) => stringToUnion(v, ONE_TIME_ACCRUAL_REVERT_REASON);
112
- export const ALL_ONE_TIME_ACCRUAL_REVERT_REASONS = ONE_TIME_ACCRUAL_REVERT_REASON;
113
27
  const JOURNAL_ENTRY_ERROR_CODE = [
114
28
  'vendor_deleted',
115
29
  'debit_category_deleted',
@@ -116,9 +116,6 @@ const ALL_SNACKBAR_MESSAGE_SECTIONS = [
116
116
  'save_schedule',
117
117
  'delete_schedule',
118
118
  'ignore_schedule',
119
- 'revert_schedule',
120
- 'ignore_accrual',
121
- 'revert_accrual',
122
119
  'save_task_detail',
123
120
  'fetch_task_detail',
124
121
  'delete_task',
@@ -30,7 +30,5 @@ export const toScheduleTransaction = (payload, currency_code, currency_symbol) =
30
30
  currencySymbol: currency_symbol,
31
31
  },
32
32
  description: payload.transaction_description ?? undefined,
33
- vendorId: payload.vendor_id ?? undefined,
34
- vendorName: payload.vendor_name ?? undefined,
35
33
  };
36
34
  };
package/lib/esm/epic.js CHANGED
@@ -195,17 +195,9 @@ import { initializeAccountSettingsViewEpic, } from './view/expenseAutomationView
195
195
  import { saveAccountSettingsViewEpic, } from './view/expenseAutomationView/epics/jeSchedule/accountSettings/saveAccountSettingsViewEpic';
196
196
  import { fetchJeSchedulesPageEpic as fetchExpenseAutomationJESchedulesPageEpic, } from './view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic';
197
197
  import { fetchJeSchedulesEpic as fetchExpenseAutomationJeSchedulesEpic, } from './view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic';
198
- import { fetchOneTimeAccrualEpic, } from './view/expenseAutomationView/epics/jeSchedule/fetchOneTimeAccrualEpic';
199
198
  import { ignoreRecommendedJeScheduleEpic as ignoreExpenseAutomationJEScheduleEpic, } from './view/expenseAutomationView/epics/jeSchedule/ignoreRecommendedJeScheduleEpic';
200
199
  import { initializeJeScheduleLocalDataEpic as initializeExpenseAutomationJeScheduleLocalDataEpic, } from './view/expenseAutomationView/epics/jeSchedule/initializeJeScheduleLocalDataEpic';
201
- import { createOneTimeAccrualEpic, } from './view/expenseAutomationView/epics/jeSchedule/newSchedule/createOneTimeAccrualEpic';
202
- import { initializeNewScheduleEpic, } from './view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic';
203
- import { saveNewScheduleEpic, } from './view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic';
204
- import { searchTransactionsForNewScheduleEpic, } from './view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic';
205
- import { oneTimeAccrualActionsEpic, } from './view/expenseAutomationView/epics/jeSchedule/oneTimeAccrualActionsEpic';
206
200
  import { retryJeScheduleEpic as retryExpenseAutomationJEScheduleEpic, } from './view/expenseAutomationView/epics/jeSchedule/retryJeSchedulesEpic';
207
- import { revertJeScheduleEpic, } from './view/expenseAutomationView/epics/jeSchedule/revertJeScheduleEpic';
208
- import { switchJESchedulesTabEpic as switchExpenseAutomationJESchedulesTabEpic, } from './view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic';
209
201
  import { bulkUploadMatchResultToastEpic, } from './view/expenseAutomationView/epics/missingReceipts/bulkUploadMatchResultToastEpic';
210
202
  import { bulkUploadReceiptsEpic, } from './view/expenseAutomationView/epics/missingReceipts/bulkUploadReceiptsEpic';
211
203
  import { confirmBulkUploadMatchEpic, } from './view/expenseAutomationView/epics/missingReceipts/confirmBulkUploadMatchEpic';
@@ -791,7 +783,6 @@ const ALL_EPICS = [
791
783
  createNewSchedulesAccruedEpic,
792
784
  createNewSchedulesEpic,
793
785
  createNewTaskGroupEpic,
794
- createOneTimeAccrualEpic,
795
786
  createPaymentInstrumentEpic,
796
787
  createSessionAndSubmitEpic,
797
788
  createSessionEpic,
@@ -1071,7 +1062,6 @@ const ALL_EPICS = [
1071
1062
  fetchOnboardingCustomerSetupViewEpic,
1072
1063
  fetchOnboardingCustomerViewEpic,
1073
1064
  fetchOnboardingViewEpic,
1074
- fetchOneTimeAccrualEpic,
1075
1065
  fetchOpExByVendorEpic,
1076
1066
  fetchOpExByVendorReportForTimeframeEpic,
1077
1067
  fetchOpExByVendorReportSummaryEpic,
@@ -1226,7 +1216,6 @@ const ALL_EPICS = [
1226
1216
  initializeInvoicingCustomerAddressEpic,
1227
1217
  initializeInvoicingSubscriptionAddressEpic,
1228
1218
  initializeMyProfileLocalDataEpic,
1229
- initializeNewScheduleEpic,
1230
1219
  initializeOnboardingCustomerViewUpdateDataEpic,
1231
1220
  initializeRemiSetupApproverViewUpdateDataEpic,
1232
1221
  initializeRemiToLocalStoreEpic,
@@ -1249,7 +1238,6 @@ const ALL_EPICS = [
1249
1238
  markAsCompleteScheduleDetailEpic,
1250
1239
  markTransactionAsNotMiscategorizedEpic,
1251
1240
  notifyMeForFeatureEpic,
1252
- oneTimeAccrualActionsEpic,
1253
1241
  parallelFetchAccountTransactionListEpic,
1254
1242
  parallelFetchClassTransactionListEpic,
1255
1243
  parallelFetchEntityTransactionListEpic,
@@ -1293,7 +1281,6 @@ const ALL_EPICS = [
1293
1281
  retryExpenseAutomationJEScheduleEpic,
1294
1282
  retryInvoicingQboSyncTaskEpic,
1295
1283
  retryOrRefundBillEpic,
1296
- revertJeScheduleEpic,
1297
1284
  reviewDraftRemisBulkActionEpic,
1298
1285
  reviewExpenseAutomationFluxAnalysisViewEpic,
1299
1286
  revokeCardInviteEpic,
@@ -1329,7 +1316,6 @@ const ALL_EPICS = [
1329
1316
  saveInvoicingSubscriptionEpic,
1330
1317
  saveMagicLinkBankAccountEpic,
1331
1318
  saveNewAddressEpic,
1332
- saveNewScheduleEpic,
1333
1319
  saveNotificationPreferencesEpic,
1334
1320
  saveNotificationSettingsEpic,
1335
1321
  saveOAuthConnectionEpic,
@@ -1354,7 +1340,6 @@ const ALL_EPICS = [
1354
1340
  saveVendorsTabVendorEpic,
1355
1341
  scheduleTenantCreditScoreCronEpic,
1356
1342
  searchTransactionsForManualMatchEpic,
1357
- searchTransactionsForNewScheduleEpic,
1358
1343
  seedAiCardCreationFormDraftEpic,
1359
1344
  seedAiCardPolicyFormDraftEpic,
1360
1345
  sendCompanyMonthEndReportEpic,
@@ -1378,7 +1363,6 @@ const ALL_EPICS = [
1378
1363
  submitInvoicingBrandingFormEpic,
1379
1364
  submitInvoicingQboSettingsEpic,
1380
1365
  submitQuestionEpic,
1381
- switchExpenseAutomationJESchedulesTabEpic,
1382
1366
  syncInvoicingSubscriptionCouponsEpic,
1383
1367
  syncTabsAfterAutomatchEpic,
1384
1368
  toggleReportUIOptionForecastModeEpic,
package/lib/esm/index.js CHANGED
@@ -60,7 +60,7 @@ import { getForecast } from './entity/forecast/forecastSelector';
60
60
  import { toEntityType, } from './entity/genericEntity/entity';
61
61
  import { updateEntities } from './entity/genericEntity/entityReducer';
62
62
  import { getEntityByEntityIDs } from './entity/genericEntity/entitySelector';
63
- import { ALL_JE_SCHEDULE_IGNORE_REASONS, ALL_JE_SCHEDULE_REVERT_REASONS, ALL_ONE_TIME_ACCRUAL_IGNORE_REASONS, ALL_ONE_TIME_ACCRUAL_REVERT_REASONS, ALL_SCHEDULES_TYPES, getJEScheduleTransactionKey, toScheduleTypesType, toScheduleTypesTypeStrict, } from './entity/jeSchedules/jeSchedulesTypes';
63
+ import { ALL_SCHEDULES_TYPES, getJEScheduleTransactionKey, toScheduleTypesType, toScheduleTypesTypeStrict, } from './entity/jeSchedules/jeSchedulesTypes';
64
64
  import { ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, } from './entity/monthEndCloseChecks/monthEndCloseChecksState';
65
65
  import { updateCommentsNotifications, updateCommentsNotificationsStatuses, } from './entity/notification/notificationReducer';
66
66
  import { toNotificationModeStrict, } from './entity/notification/types/notificationTypes';
@@ -83,7 +83,7 @@ import { isTransferTransaction, } from './entity/transaction/stateTypes/otherTra
83
83
  import { toPlatformLineDetailType, } from './entity/transaction/stateTypes/transactionLine';
84
84
  import { toTransactionCategory, toTransactionType, toTransactionTypeStrict, } from './entity/transaction/stateTypes/transactionType';
85
85
  import { isVendorTransaction, isVendorTransactionWithCustomer, } from './entity/transaction/stateTypes/vendorTransaction';
86
- import { getScheduleTransactionById, getSupportedTransactionById, } from './entity/transaction/transactionSelector';
86
+ import { getSupportedTransactionById } from './entity/transaction/transactionSelector';
87
87
  import { getUserRoleByUserId, getUserRoleByUserIds, } from './entity/userRole/userRoleSelector';
88
88
  import { hasBillPayAccessible, hasBillPayFallbackAdminLevelAccess, hasChargeCardAccessible, hasReimbursementAccessible, hasReimbursementUserAccess, hasRemiFallbackAdminLevelAccess, hasTreasuryAccessible, hasZeniAccountsAccessible, isZeniSignedInUser, } from './entity/userRole/userRoleTenantAccess';
89
89
  import { getUserRoleMap, hasAICFOAccess, hasAdminLevelAccess, hasAnyCompanyRole, hasAnyFinOpRole, hasBillPayAccess, hasBillPayAdminLevelAccess, hasBookKeepingAdminLevelAccess, hasBookKeepingUserLevelAccess, hasChargeCardAccess, hasChargeCardAdminLevelAccess, hasEmployeeLevelAccess, hasFullOrAdminLevelAccess, hasInvestorBankerLevelAccess, hasInvoicingAdminLevelAccess, hasOnlyBillPayAccess, hasOnlyChargeCardAccess, hasOnlyReimbursementAccess, hasOnlyZeniAccountsAccess, hasReimbursementAccess, hasReimbursementAdminLevelAccess, hasSpendManagementAccess, hasSpendManagementAdminLevelAccess, hasSuperAdminLevelAccess, hasTreasuryAccess, hasTreasuryAdminLevelAccess, hasZeniAccountsAccess, hasZeniAccountsAdminLevelAccess, hasZeniRoleOrCompanyOfficerAccess, isFinOpsUserRoleType, isNonZeniRole, toUserRoleType, toUserRoleTypeStrict, } from './entity/userRole/userRoleType';
@@ -181,22 +181,20 @@ import uploadAccountStatementIntoDocumentAI from './view/expenseAutomationView/e
181
181
  import { fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedPeriod, updateCurrentSelectedView, } from './view/expenseAutomationView/expenseAutomationViewReducer';
182
182
  import { getExpenseAutomationView } from './view/expenseAutomationView/expenseAutomationViewSelector';
183
183
  import { toExpenseAutomationViewType, } from './view/expenseAutomationView/expenseAutomationViewState';
184
- import { computeNewScheduleJeDetails } from './view/expenseAutomationView/helpers/newScheduleLocalDataHelper';
185
184
  import { isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardCreditType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, } from './view/expenseAutomationView/helpers/reconciliationHelpers';
186
185
  import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, } from './view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper';
187
186
  import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview, } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
188
- import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, clearSearchTransactionsForNewSchedule as clearJeSearchTransactionsForNewSchedule, createOneTimeAccrual, createOneTimeAccrualFailure, createOneTimeAccrualSuccess, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, fetchOneTimeAccrual, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, ignoreOneTimeAccrual, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeNewSchedule as initializeJeNewSchedule, initializeJeScheduleLocalData, promoteOneTimeAccrual, removeJeScheduleTransactionKey, resetNewScheduleLocalData as resetJeNewScheduleLocalData, retryJeSchedule as retryExpenseAutomationJESchedule, revertJeSchedule, revertOneTimeAccrual, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, saveNewSchedule as saveJeNewSchedule, saveNewScheduleFailure as saveJeNewScheduleFailure, saveNewScheduleSuccess as saveJeNewScheduleSuccess, searchTransactionsForNewSchedule as searchJeTransactionsForNewSchedule, searchTransactionsForNewScheduleFailure as searchJeTransactionsForNewScheduleFailure, searchTransactionsForNewScheduleSuccess as searchJeTransactionsForNewScheduleSuccess, toggleJECreatedGroupCollapsed, toggleJEPendingGroupCollapsed, updateJESchedulesUIState as updateExpenseAutomationJESchedulesUIState, updateJEScheduleTypeFilter, updateNewScheduleLocalData as updateJeNewScheduleLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
187
+ import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryJeSchedule as retryExpenseAutomationJESchedule, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, updateJESchedulesUIState as updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
189
188
  import { acknowledgeBulkUploadConfirmMatchComplete, bulkUploadAutomatchingTimedOut, bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, clearBulkUploadBatchDetailsForScopeChange, clearManualSearchResults, clearMissingReceiptsTabNavigation, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchCompletedTransactions, fetchCompletedTransactionsFailure, fetchCompletedTransactionsSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, markBatchDetailRefreshAttempted, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, refreshBatchDetailsForBatchId, requestMissingReceiptsTabNavigation, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, searchTransactionsForManualMatch, searchTransactionsForManualMatchFailure, searchTransactionsForManualMatchSuccess, setBulkUploadCompletedSubTab, setBulkUploadResultsTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, storeBatchDetails, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess, } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
190
189
  import { clearStatementDateConflict, confirmStatementMapping, deleteAccountStatement, excludeAccountFromReconciliation, fetchReconciliation as fetchReconciliationView, includeAccountInReconciliation, parseCombinedStatement, parseStatement, parseStatementFailure, parseStatementSuccess, reparseStatement, reparseStatementFailure, reparseStatementSuccess, resetReparseStatementStatus, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, setStatementProcessingDismissedToBackground, submitCombinedStatementUpdate, submitStatementUpdate, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateNodeCollapseState, updateParsedStatementData, updateStatementProcessingBackgroundCompletedSteps, updateStatementProcessingFailed, updateStatementUpdateLocalData, updateStatementUploadChosen, uploadAccountStatement, } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
191
190
  import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markCategoryClassRecommendationsFailureForCategorization, markTransactionAsNotMiscategorized, removeTransactionFromAllTabs, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationCompletedSubTab, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, updateTransactionFilters, updateTransactionGroup, uploadTransactionCategorizationReceiptSuccess, } from './view/expenseAutomationView/reducers/transactionsViewReducer';
192
191
  import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
193
- import { getNewAccrualAccountsView as getJeNewAccrualAccountsView, getNewScheduleSearchTransactionsView as getJeNewScheduleSearchTransactionsView, getNewScheduleView as getJeNewScheduleView, } from './view/expenseAutomationView/selectors/jeNewScheduleViewSelector';
194
192
  import { getExpenseAutomationReconciliationView, getLedgerAccountIdsWithStatementOverrideWarning, getLedgerAccountsForCombinedStatementMapping, getReparseStatementStatusByAccountId, getUnavailableLedgerAccountIds, isAccountReconReport, } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
195
193
  import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement, } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
196
194
  import { applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
197
195
  import { TRANSACTION_FILTER_CATEGORIES, } from './view/expenseAutomationView/transactionFilterTypes';
198
196
  import { DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab, } from './view/expenseAutomationView/types/completedSubTab';
199
- import { toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey, toJEPageTab, } from './view/expenseAutomationView/types/jeSchedulesViewState';
197
+ import { toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey, } from './view/expenseAutomationView/types/jeSchedulesViewState';
200
198
  import { BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toMatchSource, toMissingReceiptsTab, } from './view/expenseAutomationView/types/missingReceiptsViewState';
201
199
  import { toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey, } from './view/expenseAutomationView/types/missingReceiptsViewState';
202
200
  import { toReconciliationTabsType, } from './view/expenseAutomationView/types/reconciliationViewState';
@@ -485,10 +483,9 @@ export { stringToUnion, stringToUnionStrict };
485
483
  export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, getMonthEndCloseChecksViewByTenantId, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, };
486
484
  export {
487
485
  // Bulk Upload Types
488
- BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, DEFAULT_COMPLETED_SUB_TAB, DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, toTransactionGroup, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, toExpenseAutomationJEScheduleSortKey, toJEPageTab, toggleJECreatedGroupCollapsed, toggleJEPendingGroupCollapsed, updateJEScheduleTypeFilter, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionGroup, fetchExpenseAutomationMissingReceipts,
486
+ BATCH_FILE_STATUSES, isUnmatchedTabFileStatus, DEFAULT_COMPLETED_SUB_TAB, DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, toTransactionGroup, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, toExpenseAutomationJEScheduleMainTab, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionGroup, fetchExpenseAutomationMissingReceipts,
489
487
  // Bulk Upload Actions
490
488
  bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, restoreBulkUploadAutomatchingOnMount, restoreBulkUploadMatchingState, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, clearBulkUploadBatchDetailsForScopeChange, markBatchDetailRefreshAttempted, refreshBatchDetailsForBatchId, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, setBulkUploadUploadedFileCount, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, getExpenseAutomationFluxAnalysisView, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, getLastTransferEntryReplacement, updateFluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, getExpenseAutomationReconciliationView, getLedgerAccountIdsWithStatementOverrideWarning, getLedgerAccountsForCombinedStatementMapping, getReparseStatementStatusByAccountId, getUnavailableLedgerAccountIds, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, getAccountReconByAccountIdAndSelectedPeriod, toReconciliationTabsType, isAccountReconReport, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, updateStatementProcessingFailed, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, toReconciliationAccountSource, deleteAccountStatement, uploadAccountStatement, parseCombinedStatement, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateNodeCollapseState, updateStatementUploadChosen, submitCombinedStatementUpdate, submitStatementUpdate, clearStatementDateConflict, confirmStatementMapping, updateStatementUpdateLocalData, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, };
491
- export { computeNewScheduleJeDetails, createOneTimeAccrual, createOneTimeAccrualFailure, createOneTimeAccrualSuccess, fetchOneTimeAccrual, getJeNewAccrualAccountsView, ignoreOneTimeAccrual, promoteOneTimeAccrual, revertJeSchedule, revertOneTimeAccrual, getJeNewScheduleSearchTransactionsView, getJeNewScheduleView, };
492
489
  export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateTransactionFilters, updateSelectedCheckboxTransactionIds, markCategoryClassRecommendationsFailureForCategorization, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, createTransferEntry, createTransferEntryFailure, createTransferEntryReplacedTransaction, createTransferEntrySuccess, resetCreateTransferEntryStatus, clearTransferEntryRouteReplacement, fetchAccountsForTransferFlow, removeTransactionFromAllTabs, clearExpenseAutomationTransactionsView, toTransactionsSortKey, };
493
490
  export { TOP_EX_TIME_PERIODS };
494
491
  export { toTimeframeTick, mapTimePeriodtoTimeframeTick, toTimePeriod, toAbsoluteDay, toMonthYearPeriodId, convertToPeriod, };
@@ -544,7 +541,7 @@ export { toTransactionType, toTransactionTypeStrict, toTransactionCategory, };
544
541
  export { defaultVendorCurrency, updateVendors };
545
542
  export { isVendorTransaction, isVendorTransactionWithCustomer, };
546
543
  export { isTransferTransaction };
547
- export { getScheduleTransactionById, getSupportedTransactionById, };
544
+ export { getSupportedTransactionById, };
548
545
  export { updateLatestTransactionId, parallelFetchAccountTransactionList, parallelFetchEntityTransactionList, fetchAccountTransactionList, updateTransactionListByAccount, updateTransactionListByAccountFailure, updateTransactionListByAccountUIState, parallelFetchClassTransactionList, updateTransactionListByClassUIState, updateTransactionListByClass, parallelFetchProjectTransactionList, updateTransactionListByProjectUIState, updateTransactionListByProject, updateTransactionListUIStateByCategoryType, parallelFetchTransactionListByCategoryType, };
549
546
  export { getTransactionListByAccount, getTransactionListUIStateByAccountKey, };
550
547
  export { fetchEntityTransactionList, updateTransactionListByEntity, saveTransactionDetailLocalData, clearTransactionDetailSaveStatus, updateTransactionListByEntityFailure, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, saveTransactionDetail, setAllLineItemsLocalDataIsUpdateAllChecked, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetSelectedCustomer, resetVendor, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, addSplitLine, deleteSplitLine, toggleSplitEditMode, };
@@ -655,9 +652,9 @@ export { updateChargeCardTransactionAttachments, updateChargeCardStatusFromPushe
655
652
  export { TIME_SERIES_DURATIONS, convertToTimeSeriesSelectionRange, toTimeSeriesDuration, fetchAggregatedReport, aggregatedReportView, };
656
653
  export { fetchApAging, getApAgingReport, updateApAgingUIState, };
657
654
  export { fetchApAgingDetail, getApAgingDetailForVendor, updateApAgingDetailUIState, };
658
- export { clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, clearJeSearchTransactionsForNewSchedule, fetchExpenseAutomationJESchedulesPage, ignoreExpenseAutomationJESchedule, initializeJeAccountSettingsView, initializeJeNewSchedule, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, resetJeNewScheduleLocalData, retryExpenseAutomationJESchedule, saveJeNewSchedule, saveJeNewScheduleFailure, saveJeNewScheduleSuccess, searchJeTransactionsForNewSchedule, searchJeTransactionsForNewScheduleFailure, searchJeTransactionsForNewScheduleSuccess, updateExpenseAutomationJESchedulesUIState, updateJeNewScheduleLocalData, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, };
655
+ export { clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchExpenseAutomationJESchedulesPage, ignoreExpenseAutomationJESchedule, initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryExpenseAutomationJESchedule, updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, };
659
656
  export { createNewSchedulesAccrued, deleteScheduleAccruedDetail, cancelScheduleAccruedJournalEntry, fetchScheduleAccruedDetails, fetchScheduleAccruedDetailsPage, resetJEAccruedLinkInLocalData, saveScheduleAccruedDetails, updateAmountsInScheduleAccruedDetail, updatedJEAccruedLinkWithRecommendedLocalData, updatedJELinkInLocalDataAccruedExpenses, fetchRecommendedTransactionRowIndex, clearSelectedJELinkRowIndex, updateLinkBillExpenseLocalData, updateScheduleAccruedDetailsLocalData, updateSelectedJEAccruedScheduleKey, resetSelectedJEAccruedScheduleKey, resetAccruedDetailNewScheduleState, };
660
- export { getJEScheduleTransactionKey, ALL_JE_SCHEDULE_IGNORE_REASONS, ALL_JE_SCHEDULE_REVERT_REASONS, ALL_ONE_TIME_ACCRUAL_IGNORE_REASONS, ALL_ONE_TIME_ACCRUAL_REVERT_REASONS, ALL_SCHEDULES_TYPES, getScheduleListReport, getAccruedScheduleListReport, fetchScheduleList, fetchAccruedScheduleList, fetchDownloadSchedules, fetchSchedulesAccount, updateScheduleListLocalData, getFetchStateForScheduleAccountList, toScheduleTypesType, toScheduleTypesTypeStrict, toScheduleListTabsFileTypeStrict, toScheduleSubTabType, updateScheduleListSubTab, updateScheduleListSearchText, updateScheduleListScrollState, updateScheduleListSortState, updateSelectedJEScheduleKey, fetchScheduleDetails, getScheduleDetailsView, getAccruedScheduleDetailsView, fetchScheduleDetailsPage, saveScheduleDetails, deleteScheduleDetail, createNewSchedules, updateScheduleDetailsLocalData, updateScheduleListDownloadState, updateAccruedJEScheduleAccruedByListKey, updatedSelectedJELinkRowIndex, getQBOUrlForLink, getThirdPartyIDFromQBOURL, updatedJELinkInLocalData, updateAmountsInScheduleDetail, resetJELinkInLocalData, updatedJELinkWithRecommendedLocalData, getFetchStateForScheduleListByType, getDefaultSelectedTimeframeForScheduleType, markAsCompleteScheduleDetail, resetMarkAsCompleteStatus, fetchVendorTabView, updateVendorTabViewTab, getVendorTabView, };
657
+ export { getJEScheduleTransactionKey, ALL_SCHEDULES_TYPES, getScheduleListReport, getAccruedScheduleListReport, fetchScheduleList, fetchAccruedScheduleList, fetchDownloadSchedules, fetchSchedulesAccount, updateScheduleListLocalData, getFetchStateForScheduleAccountList, toScheduleTypesType, toScheduleTypesTypeStrict, toScheduleListTabsFileTypeStrict, toScheduleSubTabType, updateScheduleListSubTab, updateScheduleListSearchText, updateScheduleListScrollState, updateScheduleListSortState, updateSelectedJEScheduleKey, fetchScheduleDetails, getScheduleDetailsView, getAccruedScheduleDetailsView, fetchScheduleDetailsPage, saveScheduleDetails, deleteScheduleDetail, createNewSchedules, updateScheduleDetailsLocalData, updateScheduleListDownloadState, updateAccruedJEScheduleAccruedByListKey, updatedSelectedJELinkRowIndex, getQBOUrlForLink, getThirdPartyIDFromQBOURL, updatedJELinkInLocalData, updateAmountsInScheduleDetail, resetJELinkInLocalData, updatedJELinkWithRecommendedLocalData, getFetchStateForScheduleListByType, getDefaultSelectedTimeframeForScheduleType, markAsCompleteScheduleDetail, resetMarkAsCompleteStatus, fetchVendorTabView, updateVendorTabViewTab, getVendorTabView, };
661
658
  export { toVendorFirstReviewViewColumnKeyType, getGlobalMerchantAutoCompleteResults, getVendorFirstReviewView, getVendorFirstReviewAttachmentView, fetchVendorFirstReviewView, fetchVendorFirstReviewAttachments, updateVendorFirstReviewViewScrollYOffset, resetVendorFirstReviewLocalData, updateVendorFirstReviewViewPageToken, clearRecentlySavedErroredVendorData, saveVendorFirstReviewView, updateVendorFirstReviewViewLocalData, updateVendorFirstReviewSortUiState, fetchGlobalMerchantAutoCompleteView, clearGlobalMerchantAutoCompleteResults, updateReviewVendorDetailLocalData, saveVendorDetailsView, getVendorDetailSelectorView, };
662
659
  export { fetchGlobalMerchantRecommendation, createGlobalMerchant, updateCreateGlobalMerchantLocalData, clearGlobalMerchantView, getGlobalMerchantView, };
663
660
  export { approveVendorGlobalReview, rejectVendorGlobalReview, fetchVendorGlobalReviewView, updateSelectedGlobalMerchant, updateVendorGlobalReviewViewUIState, getVendorGlobalReviewView, getTenantMerchantByMerchantId, toVendorGlobalReviewColumnSortKeyType, updateVendorGlobalReviewViewLocalData, };
@@ -866,6 +863,3 @@ export { INVOICING_QBO_CUSTOMER_MATCHING_MODES, getInvoicingQboAccountMappingId,
866
863
  export { acceptInvoicingTerms, enableInvoicing, fetchInvoicingConfig, resetInvoicingConfigActionStates, updateInvoicingConfig, } from './view/invoicing/invoicingConfigView/invoicingConfigViewReducer';
867
864
  export { getInvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
868
865
  export { getInvoicingOnboardingGateView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
869
- // Accrued JE schedules are not a discriminated union member, so consumers need this guard to
870
- // narrow a JEScheduleRow before reading baseTransaction / recurringAmount.
871
- export { getExpenseAutomationJEOneTimeAccrualDetailView, getJEScheduleRowType, isAccruedScheduleRow, isAiAccountantSchedule, isExistingTabRow, isOneTimeAccrualRow, isRenderableOneTimeAccrual, isPendingReviewRow, } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
@@ -8,7 +8,6 @@ import { fetchJeSchedulesPage } from '../../reducers/jeSchedulesViewReducer';
8
8
  import { fetchMissingReceipts } from '../../reducers/missingReceiptsViewReducer';
9
9
  import { fetchReconciliation } from '../../reducers/reconciliationViewReducer';
10
10
  import { fetchTransactionCategorizationView } from '../../reducers/transactionsViewReducer';
11
- import { getJESchedulePeriodTabKey } from '../../types/jeSchedulesViewState';
12
11
  export const fetchAllExpenseAutomationTabsEpic = (actions$, state$) => actions$.pipe(filter(fetchAllExpenseAutomationTabs.match), switchMap((action) => {
13
12
  const { cacheOverride, refreshViewInBackground } = action.payload;
14
13
  const state = state$.value;
@@ -60,16 +59,14 @@ export const fetchAllExpenseAutomationTabsEpic = (actions$, state$) => actions$.
60
59
  state.expenseAutomationFluxAnalysisViewState.groupsBySelectedPeriod[monthYearPeriodId] == null)) {
61
60
  fetchActions.push(fetchFluxAnalysisView(selectedPeriod, cacheOverride, refreshViewInBackground, null));
62
61
  }
63
- // The two JE tabs cache separately, so only the tab actually being shown decides whether a
64
- // fetch is still needed.
65
- const jeSchedulesPeriodTabKey = getJESchedulePeriodTabKey(state.expenseAutomationJESchedulesViewState.uiState.selectedPageTab, monthYearPeriodId);
66
62
  if (state.expenseAutomationJESchedulesViewState.fetchState !==
67
63
  'In-Progress' &&
68
64
  (!state.expenseAutomationJESchedulesViewState.hasValidState() ||
69
65
  state.expenseAutomationJESchedulesViewState
70
- .jeScheduleTransactionKeysByPeriodAndTab[jeSchedulesPeriodTabKey] == null ||
66
+ .jeScheduleTransactionKeysByPeriod[monthYearPeriodId] == null ||
71
67
  state.expenseAutomationJESchedulesViewState
72
- .failedJeScheduleTransactionKeysByPeriodAndTab[jeSchedulesPeriodTabKey] == null)) {
68
+ .failedJeScheduleTransactionKeysByPeriod[monthYearPeriodId] ==
69
+ null)) {
73
70
  fetchActions.push(fetchJeSchedulesPage({ start: timePeriodStart, end: timePeriodEnd }, cacheOverride));
74
71
  }
75
72
  if (state.expenseAutomationReconciliationViewState.fetchState !==
@@ -14,14 +14,6 @@ export const fetchJeSchedulesPageEpic = (actions$, state$) => actions$.pipe(filt
14
14
  jeSchedulePageActions.push(fetchAccountList(accountType.accountListKey, true, false, false, false, accountType.allowedAccountList));
15
15
  }
16
16
  jeSchedulePageActions.push(fetchJeSchedules(period, refreshViewInBackground));
17
- // Only on the first page load. Account settings cannot change from a tab switch or a
18
- // refresh, and re-initializing puts accountSettingsView back to 'In-Progress' -- which the
19
- // page reads as "still loading" and answers with a full skeleton over rows it already has.
20
- // The action also resets localData, so re-dispatching it blindly would empty the settings
21
- // form until the refetch lands. Saving account settings still re-initializes explicitly.
22
- if (!state$.value.expenseAutomationJESchedulesViewState.accountSettings
23
- .hasLoadedAccountSettings) {
24
- jeSchedulePageActions.push(initializeAccountSettingsView());
25
- }
17
+ jeSchedulePageActions.push(initializeAccountSettingsView());
26
18
  return concat(from(jeSchedulePageActions));
27
19
  }));
@@ -1,12 +1,9 @@
1
1
  import { from, of } from 'rxjs';
2
- import { catchError, filter, mergeMap, takeUntil } from 'rxjs/operators';
3
- import { DEFAULT_DATE_FORMAT } from '../../../../commonStateTypes/timePeriod';
4
- import { toAbsoluteDay, toString } from '../../../../commonStateTypes/timePeriod';
5
- import { updateAccruedJESchedules, updateAccruedJESchedulesDetails, updateJEOneTimeAccruals, updateJESchedules, updateJESchedulesDetails, } from '../../../../entity/jeSchedules/jeSchedulesReducer';
2
+ import { catchError, filter, mergeMap } from 'rxjs/operators';
3
+ import { toString } from '../../../../commonStateTypes/timePeriod';
4
+ import { updateJESchedules, updateJESchedulesDetails, } from '../../../../entity/jeSchedules/jeSchedulesReducer';
6
5
  import { getCurrentTenant } from '../../../../entity/tenant/tenantSelector';
7
6
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
8
- import { clearAll } from '../../../../rootActions';
9
- import { date } from '../../../../zeniDayJS';
10
7
  import { fetchJeSchedules, fetchJeSchedulesFailure, fetchJeSchedulesSuccess, initializeJeScheduleLocalData, } from '../../reducers/jeSchedulesViewReducer';
11
8
  export const fetchJeSchedulesEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(fetchJeSchedules.match), mergeMap((action) => {
12
9
  const state = state$.value;
@@ -14,54 +11,27 @@ export const fetchJeSchedulesEpic = (actions$, state$, zeniAPI) => actions$.pipe
14
11
  const { period, refreshViewInBackground } = action.payload;
15
12
  const currentTenant = getCurrentTenant(state);
16
13
  const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
17
- const { selectedPageTab } = state.expenseAutomationJESchedulesViewState.uiState;
18
- const isClosePeriodTab = selectedPageTab === 'schedules';
19
- const existingEndDate = toAbsoluteDay(date(toString(period.start))
20
- .subtract(1, 'month')
21
- .endOf('month')
22
- .format(DEFAULT_DATE_FORMAT));
23
14
  const queryParam = {
24
15
  start_date: toString(period.start),
25
- end_date: isClosePeriodTab || existingEndDate == null
26
- ? toString(period.end)
27
- : toString(existingEndDate),
28
- include_accrued: true,
29
- ...(isClosePeriodTab
30
- ? { close_period_start_date: toString(period.start) }
31
- : {}),
16
+ end_date: toString(period.end),
32
17
  };
33
18
  return zeniAPI
34
19
  .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expenses_automation/je_schedules?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
35
20
  .pipe(mergeMap((response) => {
36
21
  if (isSuccessResponse(response) && response.data != null) {
37
22
  const updateActions = [];
38
- const accruedJeSchedules = response.data.accrued_je_schedules?.je_schedules ?? [];
39
- const oneTimeAccruals = response.data.one_time_accruals ?? [];
40
23
  updateActions.push(updateJESchedules([
41
24
  ...response.data.je_schedules,
42
25
  ...response.data.failed_je_postings.je_schedules,
43
26
  ]), updateJESchedulesDetails([...response.data.failed_je_postings.je_schedules], response.data.failed_je_postings.scheduled_journal_entries), initializeJeScheduleLocalData([
44
27
  ...response.data.failed_je_postings.je_schedules,
45
28
  ]));
46
- if (accruedJeSchedules.length > 0) {
47
- updateActions.push(updateAccruedJESchedules(accruedJeSchedules), updateAccruedJESchedulesDetails(accruedJeSchedules, response.data.accrued_je_schedules
48
- ?.scheduled_journal_entries));
49
- }
50
- if (oneTimeAccruals.length > 0) {
51
- // Single action, unlike the accrued pair above: this one writes the entity
52
- // directly because an accrual denormalizes its vendor, accounts and classes, so
53
- // there is no fan-out fetch to trigger.
54
- updateActions.push(updateJEOneTimeAccruals(oneTimeAccruals));
55
- }
56
29
  updateActions.push(fetchJeSchedulesSuccess({
57
30
  jeSchedules: [...response.data.je_schedules],
58
31
  failedJeSchedules: [
59
32
  ...response.data.failed_je_postings.je_schedules,
60
33
  ],
61
- accruedJeSchedules: accruedJeSchedules,
62
- oneTimeAccruals: oneTimeAccruals,
63
34
  selectedPeriod: selectedPeriod,
64
- selectedPageTab: selectedPageTab,
65
35
  refreshViewInBackground: refreshViewInBackground,
66
36
  }));
67
37
  return from(updateActions);
@@ -70,17 +40,11 @@ export const fetchJeSchedulesEpic = (actions$, state$, zeniAPI) => actions$.pipe
70
40
  return of(fetchJeSchedulesFailure({
71
41
  status: response.status,
72
42
  selectedPeriod,
73
- selectedPageTab,
74
43
  }));
75
44
  }
76
45
  }), catchError((error) => of(fetchJeSchedulesFailure({
77
46
  status: createZeniAPIStatus('Unexpected Error', 'fetch JE schedules REST API call errored out' +
78
47
  JSON.stringify(error)),
79
48
  selectedPeriod,
80
- selectedPageTab,
81
- }))),
82
- // A tenant switch clears the store while this request is still in flight. Without this
83
- // the old tenant's rows are written back into the freshly cleared store and stay on
84
- // screen under the new tenant until a manual refresh.
85
- takeUntil(actions$.pipe(filter(clearAll.match))));
49
+ }))));
86
50
  }));
@@ -11,25 +11,13 @@ import { ignoreRecommendedJeSchedule, ignoreRecommendedJeScheduleFailure, ignore
11
11
  export const ignoreRecommendedJeScheduleEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(ignoreRecommendedJeSchedule.match), mergeMap((action) => {
12
12
  const state = state$.value;
13
13
  const { expenseAutomationViewState: { selectedPeriodByTenantId }, } = state;
14
- const { scheduleType, jeScheduleTransactionKey, reason, note } = action.payload;
14
+ const { scheduleType, jeScheduleTransactionKey } = action.payload;
15
15
  const currentTenant = getCurrentTenant(state);
16
16
  const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
17
17
  const actions = [];
18
18
  const jeScheduleTransactionState = getJEScheduledTransactionByJEScheduleTransactionKey(jeScheduleTransactionKey, state);
19
- const ignorePayload = prepareIgnoreSchedulePayload(scheduleType, jeScheduleTransactionState, state);
20
- // The gateway reads reason/note from je_schedules[0].feedback and nowhere else, and rejects
21
- // anything but those two keys inside it — `action` is stamped server-side.
22
19
  const payload = {
23
- ...ignorePayload,
24
- je_schedules: ignorePayload.je_schedules.map((schedule, index) => index === 0
25
- ? {
26
- ...schedule,
27
- feedback: {
28
- reason,
29
- ...(note != null && note !== '' ? { note } : {}),
30
- },
31
- }
32
- : schedule),
20
+ ...prepareIgnoreSchedulePayload(scheduleType, jeScheduleTransactionState, state),
33
21
  };
34
22
  const queryParam = {
35
23
  je_schedule_type: scheduleType,