@zeniai/client-epic-state 4.19.86-betaRD9 → 4.19.86-betaSS2

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 (58) hide show
  1. package/lib/entity/billPay/billTransaction/billTransactionState.d.ts +2 -2
  2. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +35 -0
  3. package/lib/entity/jeSchedules/jeSchedulesPayload.js +44 -0
  4. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +2 -1
  5. package/lib/entity/jeSchedules/jeSchedulesSelector.js +2 -1
  6. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +13 -0
  7. package/lib/entity/tenant/tenantPayload.d.ts +0 -1
  8. package/lib/entity/tenant/tenantReducer.js +0 -1
  9. package/lib/entity/tenant/tenantSelector.d.ts +0 -1
  10. package/lib/entity/tenant/tenantSelector.js +1 -9
  11. package/lib/entity/tenant/tenantState.d.ts +0 -1
  12. package/lib/entity/transaction/stateTypes/transactionLine.d.ts +1 -1
  13. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +44 -0
  14. package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +2 -1
  15. package/lib/esm/entity/tenant/tenantReducer.js +0 -1
  16. package/lib/esm/entity/tenant/tenantSelector.js +0 -7
  17. package/lib/esm/index.js +6 -5
  18. package/lib/esm/view/classList/fetchClassListEpic.js +2 -3
  19. package/lib/esm/view/commonVendorView/vendorView/vendorViewSelector.js +5 -15
  20. package/lib/esm/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +1 -4
  21. package/lib/esm/view/expenseAutomationView/helpers/saveTransactionHelper.js +1 -2
  22. package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
  23. package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +17 -1
  24. package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +46 -3
  25. package/lib/esm/view/expenseAutomationView/selectors/missingReceiptsSelector.js +1 -1
  26. package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +15 -1
  27. package/lib/esm/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
  28. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
  29. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
  30. package/lib/esm/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
  31. package/lib/esm/view/transactionDetail/epics/saveTransactionHelper.js +1 -2
  32. package/lib/esm/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -15
  33. package/lib/index.d.ts +8 -7
  34. package/lib/index.js +13 -11
  35. package/lib/view/classList/fetchClassListEpic.d.ts +1 -1
  36. package/lib/view/classList/fetchClassListEpic.js +1 -2
  37. package/lib/view/commonVendorView/vendorView/vendorViewSelector.d.ts +0 -1
  38. package/lib/view/commonVendorView/vendorView/vendorViewSelector.js +5 -15
  39. package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.d.ts +0 -1
  40. package/lib/view/commonVendorView/vendorsTabVendorView/vendorsTabVendorViewSelector.js +1 -4
  41. package/lib/view/expenseAutomationView/helpers/saveTransactionHelper.js +1 -2
  42. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
  43. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +2 -2
  44. package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +18 -2
  45. package/lib/view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes.d.ts +2 -0
  46. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +46 -3
  47. package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.js +1 -1
  48. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +5 -0
  49. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +17 -0
  50. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  51. package/lib/view/spendManagement/billPay/billPayReview/billPayReviewSelector.js +3 -7
  52. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +5 -5
  53. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPayApproversDetailsEpic.js +2 -7
  54. package/lib/view/spendManagement/billPay/editBillView/editBillViewSelector.js +6 -13
  55. package/lib/view/transactionDetail/epics/saveTransactionHelper.js +1 -2
  56. package/lib/view/transactionDetail/transactionDetailLocalDataHelper.js +14 -15
  57. package/package.json +1 -1
  58. package/lib/tsconfig.typecheck.tsbuildinfo +0 -1
@@ -1,4 +1,5 @@
1
1
  import omit from 'lodash/omit';
2
+ import orderBy from 'lodash/orderBy';
2
3
  import { toMonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
3
4
  import { getAccountIdsForTypes } from '../../../entity/account/accountSelector';
4
5
  import { getJEScheduledTransactionByJEScheduleTransactionKey, } from '../../../entity/jeSchedules/jeSchedulesSelector';
@@ -10,6 +11,38 @@ import { filterNestedAccountHierarchyById } from '../../scheduleView/scheduleDet
10
11
  import { getAccountLabelForScheduleType, getAccountsTypesForScheduleList, } from '../../scheduleView/scheduleListView/scheduleListHelper';
11
12
  import { getAllSteps } from '../selectorTypes/expenseAutomationViewSelectorTypes';
12
13
  import { getJEAccountSettingsView } from './jeAccountSettingsViewSelector';
14
+ function getJEScheduleSortAccessor(sortKey) {
15
+ switch (sortKey) {
16
+ case 'vendor':
17
+ return (s) => s.vendor.name?.toLowerCase();
18
+ case 'category':
19
+ return (s) => s.jeDebit.account?.accountName?.toLowerCase();
20
+ case 'class':
21
+ return (s) => s.jeDebit.accountingClass?.className?.toLowerCase();
22
+ case 'scheduleCategory':
23
+ return (s) => s.jeScheduleType;
24
+ case 'startMonth':
25
+ return (s) => s.startDate?.valueOf();
26
+ case 'type':
27
+ return (s) => s.baseTransaction.typeOfTransaction;
28
+ case 'amortizationPeriod':
29
+ return (s) => s.period;
30
+ case 'jePostingDate':
31
+ return (s) => s.dayOfPostingDate;
32
+ case 'remainingMonths':
33
+ return (s) => s.period;
34
+ case 'runningBalance':
35
+ return (s) => s.balanceAsOfToday?.amount;
36
+ case 'totalAmount':
37
+ return (s) => s.baseTransaction.amount.amount;
38
+ default:
39
+ return (s) => s.startDate?.valueOf();
40
+ }
41
+ }
42
+ function sortJEScheduledTransactions(transactions, sortKey, sortOrder) {
43
+ const accessor = getJEScheduleSortAccessor(sortKey);
44
+ return orderBy(transactions, [accessor], [sortOrder === 'ascending' ? 'asc' : 'desc']);
45
+ }
13
46
  export function getExpenseAutomationJESchedulesView(state) {
14
47
  const jeScheduledTransaction = [];
15
48
  const failedJeScheduledTransaction = [];
@@ -59,13 +92,21 @@ export function getExpenseAutomationJESchedulesView(state) {
59
92
  const jeScheduleDetails = getJEScheduledTransactionByJEScheduleTransactionKey(jeScheduleKey, state);
60
93
  failedJeScheduledTransaction.push(jeScheduleDetails);
61
94
  });
62
- const draftSchedules = jeScheduledTransaction.filter((schedule) => schedule.status.code === 'draft');
63
- const resolveSchedules = [];
95
+ const { sortKey, sortOrder } = uiState;
96
+ const draftSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'draft'), sortKey, sortOrder);
97
+ const ongoingSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'ongoing'), sortKey, sortOrder);
98
+ const completedSchedules = sortJEScheduledTransactions(jeScheduledTransaction.filter((schedule) => schedule.status.code === 'completed' ||
99
+ schedule.status.code === 'marked_as_completed'), sortKey, sortOrder);
100
+ const unsortedResolveSchedules = [];
64
101
  failedJeScheduledTransaction.forEach((schedule) => {
65
102
  schedule.scheduledJournalEntry.forEach((journalEntry) => {
66
- resolveSchedules.push({ ...schedule, scheduledJournalEntry: journalEntry });
103
+ unsortedResolveSchedules.push({
104
+ ...schedule,
105
+ scheduledJournalEntry: journalEntry,
106
+ });
67
107
  });
68
108
  });
109
+ const resolveSchedules = sortJEScheduledTransactions(unsortedResolveSchedules, sortKey, sortOrder);
69
110
  const allSteps = monthYearPeriodId != null
70
111
  ? getAllSteps(monthEndCloseChecksState, monthYearPeriodId, currentTenant.tenantId)
71
112
  : [];
@@ -79,7 +120,9 @@ export function getExpenseAutomationJESchedulesView(state) {
79
120
  allAccountList: filteredAccounts,
80
121
  accountListNestedAccountHierarchy,
81
122
  allClassList: allClasses,
123
+ completedSchedules,
82
124
  draftSchedules,
125
+ ongoingSchedules,
83
126
  resolveSchedules: resolveSchedules,
84
127
  accountSettingsView,
85
128
  postStatusById: postStatusById,
@@ -33,7 +33,7 @@ export function getExpenseAutomationMissingReceiptsView(state) {
33
33
  transaction.lines.length > 0 &&
34
34
  transaction.lines[0]
35
35
  ?.class != null
36
- ? transaction.lines[0].class?.className.toLowerCase()
36
+ ? transaction.lines[0].class.className.toLowerCase()
37
37
  : null;
38
38
  case 'vendor':
39
39
  default:
@@ -1 +1,15 @@
1
- export {};
1
+ import { stringToUnion } from '../../../commonStateTypes/stringToUnion';
2
+ const JE_SCHEDULE_SORT_KEYS = [
3
+ 'vendor',
4
+ 'category',
5
+ 'class',
6
+ 'scheduleCategory',
7
+ 'startMonth',
8
+ 'type',
9
+ 'amortizationPeriod',
10
+ 'jePostingDate',
11
+ 'remainingMonths',
12
+ 'runningBalance',
13
+ 'totalAmount',
14
+ ];
15
+ export const toJEScheduleSortKey = (v) => stringToUnion(v, JE_SCHEDULE_SORT_KEYS);
@@ -3,7 +3,6 @@ import { reduceFetchState } from '../../../../commonStateTypes/reduceFetchState'
3
3
  import { getContactsByIds } from '../../../../entity/billPay/contact/contactSelector';
4
4
  import { getPaymentAccountsByPaymentAccountIds } from '../../../../entity/paymentAccount/paymentAccountSelector';
5
5
  import { getVendorByVendorId } from '../../../../entity/vendor/vendorSelector';
6
- import { getIsAccountingClassesEnabled } from '../../../../entity/tenant/tenantSelector';
7
6
  import { getAccountList } from '../../../accountList/accountListSelector';
8
7
  import { getAllFundingAccounts, } from '../../commonSetup/setupViewSelector';
9
8
  import { getAllDepositAccounts } from '../../zeniAccounts/depositAccountList/depositAccountListSelector';
@@ -74,14 +73,11 @@ export const getReviewPageBillDetail = (state, billId) => {
74
73
  }
75
74
  }
76
75
  if (sourceBillDetail != null) {
77
- const fetchStateList = [
76
+ sourceBillDetailFetchState = reduceFetchState([
78
77
  sourceBillDetail.fetchStatus,
79
78
  accountListState.byReportId['billPayAccountList'],
80
- ];
81
- if (getIsAccountingClassesEnabled(state)) {
82
- fetchStateList.push(classListState);
83
- }
84
- sourceBillDetailFetchState = reduceFetchState(fetchStateList).fetchState;
79
+ classListState,
80
+ ]).fetchState;
85
81
  }
86
82
  }
87
83
  else {
@@ -3,7 +3,6 @@ import cloneDeep from 'lodash/cloneDeep';
3
3
  import { reduceAllFetchState, reduceAnyFetchState, } from '../../../../commonStateTypes/reduceFetchState';
4
4
  import { getApprovalRulesByIds } from '../../../../entity/approvalRule/approvalRuleSelector';
5
5
  import { getClassesByIds } from '../../../../entity/class/classSelector';
6
- import { getIsAccountingClassesEnabled } from '../../../../entity/tenant/tenantSelector';
7
6
  import { getUserByUserId } from '../../../../entity/user/userSelector';
8
7
  import { getUserRoleByUserId } from '../../../../entity/userRole/userRoleSelector';
9
8
  export const getBillPaySetupApproverView = createSelector((state) => state.billPaySetupApproverViewState, (state) => state.approvalRuleState, (state) => state.userState, (billPaySetupApproverViewState, approvalRuleState, userState) => {
@@ -45,7 +44,7 @@ export const getBillPaySetupApproverView = createSelector((state) => state.billP
45
44
  newApprovalRuleId,
46
45
  };
47
46
  });
48
- export const getBillPaySetupApproverUpdateDataView = createSelector((state) => state.billPaySetupApproverViewState, (state) => state.approvalRuleState, (state) => state.userState, (state) => state.classState, (state) => state.classListState, (state) => state.userRoleState, (state) => getIsAccountingClassesEnabled(state), (billPaySetupApproverViewState, approvalRuleState, userState, classState, classListState, userRoleState, isAccountingClassesEnabled) => {
47
+ export const getBillPaySetupApproverUpdateDataView = createSelector((state) => state.billPaySetupApproverViewState, (state) => state.approvalRuleState, (state) => state.userState, (state) => state.classState, (state) => state.classListState, (state) => state.userRoleState, (billPaySetupApproverViewState, approvalRuleState, userState, classState, classListState, userRoleState) => {
49
48
  const { affectedEntityIds, approvalRuleIds, approverListState, billPaySetupApproverViewUpdateData, fetchState, error, listeningToPusherEvent, } = billPaySetupApproverViewState;
50
49
  const { approverIds, attributes } = approverListState;
51
50
  const allApprovalRules = getApprovalRulesByIds(approvalRuleState, approvalRuleIds);
@@ -93,9 +92,10 @@ export const getBillPaySetupApproverUpdateDataView = createSelector((state) => s
93
92
  allAttributes,
94
93
  filteredAttributes,
95
94
  billPaySetupApproverViewUpdateData,
96
- approverListFetchStatus: isAccountingClassesEnabled
97
- ? reduceAllFetchState([approverListState.fetchStatus, classListState])
98
- : approverListState.fetchStatus,
95
+ approverListFetchStatus: reduceAllFetchState([
96
+ approverListState.fetchStatus,
97
+ classListState,
98
+ ]),
99
99
  fetchState,
100
100
  allAccountingClasses,
101
101
  error,
@@ -1,27 +1,22 @@
1
1
  import { concat, from } from 'rxjs';
2
2
  import { filter, mergeMap } from 'rxjs/operators';
3
- import { getIsAccountingClassesEnabled } from '../../../../../entity/tenant/tenantSelector';
4
3
  import { fetchClassList } from '../../../../classList/classListReducer';
5
4
  import { fetchBillPayApproversDetails, fetchBillPayApproversList, } from '../billPaySetupApproverViewReducer';
6
5
  export const fetchBillPayApproversDetailsEpic = (actions$, state$) => actions$.pipe(filter(fetchBillPayApproversDetails.match), mergeMap((action) => {
7
6
  const { cacheOverride, includeUserRoles } = action.payload;
8
7
  const { billPaySetupApproverViewState, classListState } = state$.value;
9
8
  const { approverListState } = billPaySetupApproverViewState;
10
- const isAccountingClassesEnabled = getIsAccountingClassesEnabled(state$.value);
11
9
  const actions = [];
12
10
  if (cacheOverride === true) {
13
11
  actions.push(fetchBillPayApproversList(cacheOverride, includeUserRoles));
14
- if (isAccountingClassesEnabled) {
15
- actions.push(fetchClassList());
16
- }
12
+ actions.push(fetchClassList());
17
13
  }
18
14
  else {
19
15
  if (billPaySetupApproverViewState.hasValidState() === false &&
20
16
  approverListState.fetchStatus.fetchState !== 'In-Progress') {
21
17
  actions.push(fetchBillPayApproversList(true, includeUserRoles));
22
18
  }
23
- if (isAccountingClassesEnabled &&
24
- classListState.hasValidState() === false &&
19
+ if (classListState.hasValidState() === false &&
25
20
  classListState.fetchState !== 'In-Progress') {
26
21
  actions.push(fetchClassList());
27
22
  }
@@ -24,7 +24,6 @@ import { getAccountTypeSubConfigCodeKey, getBillPaymentSubConfigCodeKey, getBill
24
24
  import { getBillPayConfigByKey, getBillPayConfigByKeys, getInternationalMethodCode, } from '../billPayConfig/billPayConfigSelector';
25
25
  import { ACCOUNT_TYPE_CODES, BILL_PAYMENT_METHOD_CODE, BILL_PAYMENT_OUTSIDE_ZENI_SUB_CODES, BILL_PAYMENT_WIRE_SUB_CODES, INTERNATIONAL_CODES, INTERNATIONAL_SUB_CODES, PAYMENT_ACH_SUB_CODES, getBillPayConfigMethodKey, toBillPaymentSubConfigCodeKeyType, } from '../billPayConfig/billPayConfigState';
26
26
  import { getDuplicateBills, } from '../billPayReview/billPayReviewSelector';
27
- import { getIsAccountingClassesEnabled } from '../../../../entity/tenant/tenantSelector';
28
27
  import { getBillPaySetupApproverView } from '../billPaySetupApproverView/billPaySetupApproverViewSelector';
29
28
  import { getPreviousBills, } from '../previousBills/previousBillsSelector';
30
29
  export const getEditBillDetail = (state, isVendorRecommendationFeatureEnabled, isZeniAccountsEnabled, billId) => {
@@ -173,15 +172,12 @@ export const getEditBillDetail = (state, isVendorRecommendationFeatureEnabled, i
173
172
  isCancelled = sourceBillDetail.billDetailLocalData.isCancelled;
174
173
  billStage = billPayInfo?.stage.code ?? 'draft';
175
174
  if (billViewState != null) {
176
- const fetchStateList = [
175
+ fetchState = reduceFetchState([
177
176
  sourceBillDetail.fetchStatus,
178
177
  accountListState.byReportId.billPayAccountList,
178
+ classListState,
179
179
  billPaySetupApproverViewState,
180
- ];
181
- if (getIsAccountingClassesEnabled(state)) {
182
- fetchStateList.push(classListState);
183
- }
184
- fetchState = reduceFetchState(fetchStateList).fetchState;
180
+ ]).fetchState;
185
181
  deleteStatus = billViewState.deleteStatus;
186
182
  billActivities = getBillActivities(state, billId, billPayInfo?.stage.code);
187
183
  }
@@ -195,14 +191,11 @@ export const getEditBillDetail = (state, isVendorRecommendationFeatureEnabled, i
195
191
  }
196
192
  }
197
193
  else {
198
- const newBillFetchStateList = [
194
+ fetchState = reduceFetchState([
199
195
  accountListState.byReportId.billPayAccountList,
196
+ classListState,
200
197
  billPaySetupApproverViewState,
201
- ];
202
- if (getIsAccountingClassesEnabled(state)) {
203
- newBillFetchStateList.push(classListState);
204
- }
205
- fetchState = reduceFetchState(newBillFetchStateList).fetchState;
198
+ ]).fetchState;
206
199
  }
207
200
  if (sourceBillDetail != null && fetchState == 'Completed') {
208
201
  const updatedRecord = sourceBillDetail.billDetailLocalData;
@@ -76,8 +76,7 @@ export const toTransactionUpdatesFromTransactionDetailLocalData = (transactionDe
76
76
  Boolean(lineItem.account?.qboId);
77
77
  hasClassChanged =
78
78
  Boolean(lineItem.class?.qboId) &&
79
- Boolean(accountLine.class?.qboId) &&
80
- lineItem.class?.qboId !== accountLine.class?.qboId;
79
+ lineItem.class?.qboId !== accountLine.class.qboId;
81
80
  const recommendedAccountBase = toRecommendedAccountBase(lineItem.amount.amount, lineItem.account);
82
81
  const recommendedClassBase = toRecommendedClassBase(lineItem.amount.amount, lineItem.class);
83
82
  const latestRecommendedCategory = lineItem.recommendedAccount;
@@ -140,13 +140,13 @@ const buildLineItemById = (transaction, uncategorizedIncomeExpense, recommendati
140
140
  record.isRetainedCategorySelected = false;
141
141
  }
142
142
  if (Boolean(recommendedClass?.qboId) &&
143
- recommendedClass?.qboId !== accountLine.class?.qboId) {
143
+ recommendedClass?.qboId !== accountLine.class.qboId) {
144
144
  record.isRecommendedClassSelected = false;
145
145
  record.recommendedClass = recommendedClass;
146
146
  record.isClassUpdateSelected = false;
147
147
  }
148
148
  if (accountLine.isClassMiscategorized &&
149
- Boolean(accountLine.class?.qboId) &&
149
+ Boolean(accountLine.class.qboId) &&
150
150
  Boolean(isVendorOrCustomerPresent)) {
151
151
  record.retainedClass = accountLine.class;
152
152
  record.isRetainedClassSelected = false;
@@ -336,14 +336,14 @@ export const toUpdateLineItemsOriginalCategoryClass = (transaction, transactionD
336
336
  }
337
337
  };
338
338
  const updateClass = () => {
339
- if (recommendedClass?.qboId !== accountLine.class?.qboId &&
339
+ if (recommendedClass?.qboId !== accountLine.class.qboId &&
340
340
  Boolean(recommendedClass?.qboId)) {
341
341
  record.class = accountLine.class;
342
342
  record.isRecommendedClassSelected = false;
343
343
  record.recommendedClass = recommendedClass;
344
344
  record.isClassUpdateSelected = false;
345
345
  if (accountLine.isClassMiscategorized &&
346
- Boolean(accountLine.class?.qboId) &&
346
+ Boolean(accountLine.class.qboId) &&
347
347
  Boolean(isVendorOrCustomerPresent)) {
348
348
  record.retainedClass = accountLine.class;
349
349
  record.isRetainedClassSelected = false;
@@ -356,7 +356,7 @@ export const toUpdateLineItemsOriginalCategoryClass = (transaction, transactionD
356
356
  record.recommendedClass = recommendedClass;
357
357
  record.isClassUpdateSelected = false;
358
358
  if (accountLine.isClassMiscategorized &&
359
- Boolean(accountLine.class?.qboId) &&
359
+ Boolean(accountLine.class.qboId) &&
360
360
  Boolean(isVendorOrCustomerPresent)) {
361
361
  record.retainedClass = recommendedClass;
362
362
  record.isRetainedClassSelected = false;
@@ -650,13 +650,13 @@ export const setEntityRecommendationForLineIdInLocalData = (transaction, transac
650
650
  record.isRetainedCategorySelected = false;
651
651
  }
652
652
  }
653
- if (recommendedClass?.qboId !== accountLine.class?.qboId &&
653
+ if (recommendedClass?.qboId !== accountLine.class.qboId &&
654
654
  Boolean(recommendedClass?.qboId)) {
655
655
  record.isRecommendedClassSelected = false;
656
656
  record.recommendedClass = recommendedClass;
657
657
  record.isClassUpdateSelected = false;
658
658
  if (accountLine.isClassMiscategorized &&
659
- Boolean(accountLine.class?.qboId)) {
659
+ Boolean(accountLine.class.qboId)) {
660
660
  record.retainedClass = accountLine.class;
661
661
  record.isRetainedClassSelected = false;
662
662
  }
@@ -664,12 +664,12 @@ export const setEntityRecommendationForLineIdInLocalData = (transaction, transac
664
664
  else {
665
665
  record.isRecommendedClassSelected = false;
666
666
  record.recommendedClass = recommendedClass;
667
- if (recommendedClass?.qboId === accountLine.class?.qboId) {
667
+ if (recommendedClass?.qboId === accountLine.class.qboId) {
668
668
  record.recommendedClass = undefined;
669
669
  }
670
670
  record.isClassUpdateSelected = false;
671
671
  if (accountLine.isClassMiscategorized &&
672
- Boolean(accountLine.class?.qboId)) {
672
+ Boolean(accountLine.class.qboId)) {
673
673
  record.retainedClass = recommendedClass;
674
674
  record.isRetainedClassSelected = false;
675
675
  }
@@ -685,7 +685,7 @@ export const setEntityRecommendationForLineIdInLocalData = (transaction, transac
685
685
  Boolean(recommendedAccount?.qboId) !== false) {
686
686
  record.account = recommendedAccount;
687
687
  }
688
- if (Boolean(record.class?.qboId) === false &&
688
+ if (Boolean(record.class.qboId) === false &&
689
689
  Boolean(recommendedClass?.qboId) !== false) {
690
690
  record.class = recommendedClass;
691
691
  }
@@ -806,8 +806,7 @@ export const getChangedLineItemCountFromLocalData = (transaction, transactionLoc
806
806
  accountLineLocal.account?.qboId !== accountLine.account.qboId &&
807
807
  accountLineLocal.account?.accountId !== accountLine.account.accountId;
808
808
  hasClassChanged =
809
- Boolean(accountLine.class?.qboId) &&
810
- accountLineLocal.class?.qboId !== accountLine.class?.qboId;
809
+ accountLineLocal.class?.qboId !== accountLine.class.qboId;
811
810
  }
812
811
  hasDescriptionChanged =
813
812
  transactionLocalData.lineItemById[lineId] != null
@@ -945,10 +944,10 @@ export const toUpdateLineItemsToOriginalVendor = (transaction, transactionDetail
945
944
  record.isRecommendedClassSelected = false;
946
945
  record.recommendedClass = recommendedClass;
947
946
  record.isClassUpdateSelected = false;
948
- if (recommendedClass?.qboId !== accountLine.class?.qboId &&
947
+ if (recommendedClass?.qboId !== accountLine.class.qboId &&
949
948
  Boolean(recommendedClass?.qboId)) {
950
949
  if (accountLine.isClassMiscategorized &&
951
- Boolean(accountLine.class?.qboId) &&
950
+ Boolean(accountLine.class.qboId) &&
952
951
  Boolean(isVendorOrCustomerPresent)) {
953
952
  record.retainedClass = accountLine.class;
954
953
  record.isRetainedClassSelected = false;
@@ -961,7 +960,7 @@ export const toUpdateLineItemsToOriginalVendor = (transaction, transactionDetail
961
960
  record.recommendedClass = recommendedClass;
962
961
  record.isClassUpdateSelected = false;
963
962
  if (accountLine.isClassMiscategorized &&
964
- Boolean(accountLine.class?.qboId) &&
963
+ Boolean(accountLine.class.qboId) &&
965
964
  Boolean(isVendorOrCustomerPresent)) {
966
965
  record.retainedClass = recommendedClass;
967
966
  record.isRetainedClassSelected = false;
package/lib/index.d.ts CHANGED
@@ -91,6 +91,7 @@ import { TrendChangeType } from './entity/insights/insightPayload';
91
91
  import { Insight } from './entity/insights/insightState';
92
92
  import { InsightSummary } from './entity/insights/insightSummary';
93
93
  import { JEAccruedSchedule, JEScheduledTransaction, ScheduledJournalEntry } from './entity/jeSchedules/jeSchedulesSelector';
94
+ import { JEScheduleAIRecommendations, JEScheduleFieldRecommendation } from './entity/jeSchedules/jeSchedulesState';
94
95
  import { ALL_SCHEDULES_TYPES, JEScheduleKey, JEScheduleTransactionKey, JournalEntryErrorCodeType, ScheduleJournalEntryStatusCodeType, ScheduleStatusCodeType, ScheduleTypes, toScheduleTypesType, toScheduleTypesTypeStrict } from './entity/jeSchedules/jeSchedulesTypes';
95
96
  import { Merchant } from './entity/merchant/merchant';
96
97
  import { ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthCloseCheckMetrics, MonthEndAuditSummary, MonthEndCloseCheck, MonthEndCloseCheckFrequency } from './entity/monthEndCloseChecks/monthEndCloseChecksState';
@@ -122,7 +123,7 @@ import { getTaskGroupById } from './entity/taskGroup/taskGroupSelector';
122
123
  import { TaskGroupState } from './entity/taskGroup/taskGroupState';
123
124
  import { TaskGroupTemplate } from './entity/taskGroupTemplate/taskGroupTemplateState';
124
125
  import { DoSignInPayload, clearAll, doMagicLinkSignIn, doSignIn, doSignOut, fetchActiveTenant, fetchAllTenants, fetchExcludedResources as fetchExcludedResourcesForTenant, fetchExternalConnections as fetchExternalConnectionsForTenant, fetchSubscriptionSummaryForTenant, resendVerifyDeviceOTP, resetSignInState, saveExternalConnection as saveExternalConnectionForTenant, sendEmailMagicLinkToUser, updateCurrentTenant, updateSignInState, verifyDeviceWithTwoFA } from './entity/tenant/tenantReducer';
125
- import { CurrentTenant, TenantBaseView, TenantCoreDetailsView, TenantView, TenantsBaseOrdered, TenantsOrdered, getCurrentTenant, getIsAccountingClassesEnabled, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView } from './entity/tenant/tenantSelector';
126
+ import { CurrentTenant, TenantBaseView, TenantCoreDetailsView, TenantView, TenantsBaseOrdered, TenantsOrdered, getCurrentTenant, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView } from './entity/tenant/tenantSelector';
126
127
  import { Connection, LoggedInUser, RoleResource, Tenant, TenantProductSettings } from './entity/tenant/tenantState';
127
128
  import { ToastNotificationPayload } from './entity/toastNotification/toastNotificationPayload';
128
129
  import { pushToastNotification } from './entity/toastNotification/toastNotificationReducer';
@@ -264,7 +265,7 @@ import { isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType
264
265
  import { MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount } from './view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper';
265
266
  import { UploadStatementDocumentAIPayload, UploadStatementDocumentAIResponse } from './view/expenseAutomationView/payload/reconciliationPayload';
266
267
  import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
267
- 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, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
268
+ 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';
268
269
  import { fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
269
270
  import { deleteAccountStatement, fetchReconciliation as fetchReconciliationView, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, 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, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
270
271
  import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess } from './view/expenseAutomationView/reducers/transactionsViewReducer';
@@ -280,7 +281,7 @@ import { JEScheduledTransactionWithFailedEntries } from './view/expenseAutomatio
280
281
  import { getExpenseAutomationReconciliationView, isAccountReconReport } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
281
282
  import { getExpenseAutomationTransactionView } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
282
283
  import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
283
- import { AccountSettingsLocalData, JEScheduleLocalData } from './view/expenseAutomationView/types/jeSchedulesViewState';
284
+ import { AccountSettingsLocalData, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
284
285
  import { MissingReceiptsSortKey as ExpenseAutomationMissingReceiptsSortKey, MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState, MissingReceiptsViewUIState as ExpenseAutomationMissingReceiptsViewUIState, toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey } from './view/expenseAutomationView/types/missingReceiptsViewState';
285
286
  import { AccountReconciliationLocalData, ReconciliationViewTabType as ExpenseAutomationReconciliationViewTab, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReconcileTabLocalData, ReconciliationReviewTabLocalData, SaveReconcileDetailActionPayload as SaveExpenseAutomationReconciliationActionType, toReconciliationTabsType } from './view/expenseAutomationView/types/reconciliationViewState';
286
287
  import { TransactionsTab as ExpenseAutomationTransactionsTab, TransactionsViewState as ExpenseAutomationTransactionsViewState, TransactionsViewUIState as ExpenseAutomationTransactionsViewUIState, SupportedTransactionCategorization, TransactionCategorizationLineItemData, TransactionReviewLocalData, TransactionsSortKey, TransactionsTab, toTransactionsTabKey as toExpenseAutomationTransactionsTabKey, toTransactionsSortKey } from './view/expenseAutomationView/types/transactionsViewState';
@@ -621,7 +622,7 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
621
622
  export { ClassesViewSelectorReportV2 };
622
623
  export { BalancesTimeseries, TrendTimeseries, BalanceKind };
623
624
  export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
624
- export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
625
+ export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
625
626
  export { JEScheduleLocalData };
626
627
  export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, JEScheduledTransactionWithFailedEntries, };
627
628
  export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };
@@ -630,7 +631,7 @@ export { TimeframeTick, TimeframeTickWithMetaData, toTimeframeTick, mapTimePerio
630
631
  export { VendorSpendTrendFilterTabType, toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorExpenseSelector';
631
632
  export { getNumberOfPeriods };
632
633
  export { SCHEDULE_DAYS_OF_MONTH, ScheduleDaysOfMonth, toScheduleDaysOfMonth, Day, Month, toMonth, toMonthStrict, Quarter, toQuarter, toQuarterStrict, AbsoluteDay, TimePeriod, };
633
- export { Tenant, TenantView, LoggedInUser, TenantBaseView, CurrentTenant, TenantProductSettings, getTenantBaseById, getCurrentTenant, getIsAccountingClassesEnabled, getTenantsByCheckInDateSelector, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, toTenantCoreDetailsView, getTenantBaseViewForTenantView, getTenantBaseViewForTenantId, isZeniDomainTenant, isTenantUsingZeniCOA, TenantsBaseOrdered, TenantsOrdered, TenantCoreDetailsView, fetchActiveTenant, fetchAllTenants, updateCurrentTenant, clearAll, doMagicLinkSignIn, verifyDeviceWithTwoFA, resendVerifyDeviceOTP, sendEmailMagicLinkToUser, doSignIn, updateSignInState, DoSignInPayload, doSignOut, resetSignInState, RoleResource, Connection, fetchExcludedResourcesForTenant, fetchExternalConnectionsForTenant, saveExternalConnectionForTenant, fetchSubscriptionSummaryForTenant, isTenantBankingOnly, isTenantCardsOnly, isTenantBookkeepingEnabled, isOtherProductsEnabledForTenant, };
634
+ export { Tenant, TenantView, LoggedInUser, TenantBaseView, CurrentTenant, TenantProductSettings, getTenantBaseById, getCurrentTenant, getTenantsByCheckInDateSelector, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, toTenantCoreDetailsView, getTenantBaseViewForTenantView, getTenantBaseViewForTenantId, isZeniDomainTenant, isTenantUsingZeniCOA, TenantsBaseOrdered, TenantsOrdered, TenantCoreDetailsView, fetchActiveTenant, fetchAllTenants, updateCurrentTenant, clearAll, doMagicLinkSignIn, verifyDeviceWithTwoFA, resendVerifyDeviceOTP, sendEmailMagicLinkToUser, doSignIn, updateSignInState, DoSignInPayload, doSignOut, resetSignInState, RoleResource, Connection, fetchExcludedResourcesForTenant, fetchExternalConnectionsForTenant, saveExternalConnectionForTenant, fetchSubscriptionSummaryForTenant, isTenantBankingOnly, isTenantCardsOnly, isTenantBookkeepingEnabled, isOtherProductsEnabledForTenant, };
634
635
  export { Account, AccountType, AccountBase, StatementCloseDay, toAccountType, AccountReport, NestedAccountReport, AccountWithBalanceReport, AccountGroup, AccountGroupReportV2, AccountGroupType, toAccountGroupType, AccountGroupReport, getAccountGroupKey, AccountGroupKey, RecommendedAccountBase, };
635
636
  export { Class, ClassBase, RecommendedClassBase, } from './entity/class/classState';
636
637
  export { getClassById } from './entity/class/classSelector';
@@ -824,9 +825,9 @@ export { TIME_SERIES_DURATIONS, PerformanceReportKey, TimeSeriesDuration, conver
824
825
  export { fetchApAging, getApAgingReport, updateApAgingUIState, AgingReportId, ApAgingReport, AgingBalance, AgingPeriod, AgingReportSortKey, AgingBalancesByVendor, AgingReportUIState, AgingDetailReportUIState, AgingDetailReportInvoice, AgingDateSelectionType, };
825
826
  export { fetchApAgingDetail, AgingReportInvoice, ApAgingDetail, getApAgingDetailForVendor, updateApAgingDetailUIState, };
826
827
  export { LinkBillExpenseKey };
827
- export { clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchExpenseAutomationJESchedulesPage, ignoreExpenseAutomationJESchedule, initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryExpenseAutomationJESchedule, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, };
828
+ export { clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchExpenseAutomationJESchedulesPage, ignoreExpenseAutomationJESchedule, initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryExpenseAutomationJESchedule, updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, };
828
829
  export { createNewSchedulesAccrued, deleteScheduleAccruedDetail, cancelScheduleAccruedJournalEntry, fetchScheduleAccruedDetails, fetchScheduleAccruedDetailsPage, resetJEAccruedLinkInLocalData, saveScheduleAccruedDetails, updateAmountsInScheduleAccruedDetail, updatedJEAccruedLinkWithRecommendedLocalData, updatedJELinkInLocalDataAccruedExpenses, fetchRecommendedTransactionRowIndex, clearSelectedJELinkRowIndex, updateLinkBillExpenseLocalData, updateScheduleAccruedDetailsLocalData, updateSelectedJEAccruedScheduleKey, resetSelectedJEAccruedScheduleKey, resetAccruedDetailNewScheduleState, };
829
- export { JEScheduleKey, JEScheduleTransactionKey, ALL_SCHEDULES_TYPES, JEScheduledTransaction, JEAccruedSchedule, ScheduleTypes, ScheduleJournalEntryStatusCodeType, ScheduleListReport, ScheduleAccruedListReport, getScheduleListReport, getAccruedScheduleListReport, ScheduleSubTabType, ScheduleListSortKey, fetchScheduleList, fetchAccruedScheduleList, fetchDownloadSchedules, fetchSchedulesAccount, updateScheduleListLocalData, getFetchStateForScheduleAccountList, toScheduleTypesType, toScheduleTypesTypeStrict, toScheduleListTabsFileTypeStrict, ScheduleListLocalData, ScheduleDetailsLocalDataFixedAssets, ScheduleDetailsLocalDataAccruedExpenses, ScheduleDetailsView, ScheduleAccruedDetailsView, LinkBillExpenseView, LinkBillExpenseLocalData, JEScheduleDetailsLocalData, ScheduleDetailsLocalData, toScheduleSubTabType, ScheduleStatusCodeType, JournalEntryErrorCodeType, ScheduleTransaction, updateScheduleListSubTab, updateScheduleListSearchText, updateScheduleListScrollState, updateScheduleListSortState, ScheduleDetailSortKey, ScheduledJournalEntry, updateSelectedJEScheduleKey, fetchScheduleDetails, getScheduleDetailsView, getAccruedScheduleDetailsView, fetchScheduleDetailsPage, saveScheduleDetails, deleteScheduleDetail, createNewSchedules, updateScheduleDetailsLocalData, JETransactionLink, updateScheduleListDownloadState, updateAccruedJEScheduleAccruedByListKey, DownloadJEScheduleTabOptions, updatedSelectedJELinkRowIndex, ScheduleListTabsFileType, getQBOUrlForLink, getThirdPartyIDFromQBOURL, updatedJELinkInLocalData, updateAmountsInScheduleDetail, ScheduleDetailUIState, resetJELinkInLocalData, JEScheduledTransactionWithBalance, JEScheduleWithBalance, JELinkType, updatedJELinkWithRecommendedLocalData, getFetchStateForScheduleListByType, getDefaultSelectedTimeframeForScheduleType, markAsCompleteScheduleDetail, resetMarkAsCompleteStatus, fetchVendorTabView, updateVendorTabViewTab, VendorTabViewTabType, getVendorTabView, VendorTabViewSelectorView, };
830
+ export { JEScheduleKey, JEScheduleTransactionKey, ALL_SCHEDULES_TYPES, JEScheduledTransaction, JEAccruedSchedule, JEScheduleAIRecommendations, JEScheduleFieldRecommendation, ScheduleTypes, ScheduleJournalEntryStatusCodeType, ScheduleListReport, ScheduleAccruedListReport, getScheduleListReport, getAccruedScheduleListReport, ScheduleSubTabType, ScheduleListSortKey, fetchScheduleList, fetchAccruedScheduleList, fetchDownloadSchedules, fetchSchedulesAccount, updateScheduleListLocalData, getFetchStateForScheduleAccountList, toScheduleTypesType, toScheduleTypesTypeStrict, toScheduleListTabsFileTypeStrict, ScheduleListLocalData, ScheduleDetailsLocalDataFixedAssets, ScheduleDetailsLocalDataAccruedExpenses, ScheduleDetailsView, ScheduleAccruedDetailsView, LinkBillExpenseView, LinkBillExpenseLocalData, JEScheduleDetailsLocalData, ScheduleDetailsLocalData, toScheduleSubTabType, ScheduleStatusCodeType, JournalEntryErrorCodeType, ScheduleTransaction, updateScheduleListSubTab, updateScheduleListSearchText, updateScheduleListScrollState, updateScheduleListSortState, ScheduleDetailSortKey, ScheduledJournalEntry, updateSelectedJEScheduleKey, fetchScheduleDetails, getScheduleDetailsView, getAccruedScheduleDetailsView, fetchScheduleDetailsPage, saveScheduleDetails, deleteScheduleDetail, createNewSchedules, updateScheduleDetailsLocalData, JETransactionLink, updateScheduleListDownloadState, updateAccruedJEScheduleAccruedByListKey, DownloadJEScheduleTabOptions, updatedSelectedJELinkRowIndex, ScheduleListTabsFileType, getQBOUrlForLink, getThirdPartyIDFromQBOURL, updatedJELinkInLocalData, updateAmountsInScheduleDetail, ScheduleDetailUIState, resetJELinkInLocalData, JEScheduledTransactionWithBalance, JEScheduleWithBalance, JELinkType, updatedJELinkWithRecommendedLocalData, getFetchStateForScheduleListByType, getDefaultSelectedTimeframeForScheduleType, markAsCompleteScheduleDetail, resetMarkAsCompleteStatus, fetchVendorTabView, updateVendorTabViewTab, VendorTabViewTabType, getVendorTabView, VendorTabViewSelectorView, };
830
831
  export { GlobalMerchant, GlobalMerchantBase, TenantMerchant };
831
832
  export { ReviewStatus, VendorTransactionAttachment, VendorTransactionAttachmentPayload, VendorFirstReviewViewSelectorView, VendorFirstReviewViewLocalData, VendorFirstReviewSelectorView, VendorFirstReviewSelectorAttachmentView, VendorFirstReviewViewUIState, VendorFirstReviewViewColumnKey, GlobalMerchantAutoCompleteView, VendorReviewRowCurrentSelection, toVendorFirstReviewViewColumnKeyType, RecommendedNonExistingGlobalMerchant, getGlobalMerchantAutoCompleteResults, VendorReviewRecommendationViewState, GlobalMerchantType, getVendorFirstReviewView, getVendorFirstReviewAttachmentView, fetchVendorFirstReviewView, fetchVendorFirstReviewAttachments, updateVendorFirstReviewViewScrollYOffset, resetVendorFirstReviewLocalData, updateVendorFirstReviewViewPageToken, clearRecentlySavedErroredVendorData, saveVendorFirstReviewView, updateVendorFirstReviewViewLocalData, updateVendorFirstReviewSortUiState, fetchGlobalMerchantAutoCompleteView, clearGlobalMerchantAutoCompleteResults, GlobalVendorReviewRowCurrentSelection, FirstReviewPageCurrentSelectionByColumn, updateReviewVendorDetailLocalData, saveVendorDetailsView, getVendorDetailSelectorView, FirstReviewVendorDetailSelectorView, VendorViewLocalData, };
832
833
  export { fetchGlobalMerchantRecommendation, createGlobalMerchant, updateCreateGlobalMerchantLocalData, clearGlobalMerchantView, getGlobalMerchantView, GlobalMerchantViewSelectorView, GlobalMerchantViewState, NewGlobalMerchantData, NewGlobalMerchantCurrentSelection, };