@zeniai/client-epic-state 5.2.69-beta0MM → 5.2.69-betaAK0

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.
@@ -86,8 +86,13 @@ function getLineType(payload) {
86
86
  const lineDetailType = payload.line_detail_type;
87
87
  switch (lineDetailType) {
88
88
  case 'sales_item_line_detail':
89
- case 'item_based_expense_line_detail':
90
- return 'transaction_with_product_or_service_line';
89
+ case 'item_based_expense_line_detail': {
90
+ const lineDetail = payload
91
+ .line_detail;
92
+ return lineDetail?.item == null
93
+ ? 'transaction_with_account_and_class_line'
94
+ : 'transaction_with_product_or_service_line';
95
+ }
91
96
  case 'journal_entry_line_detail':
92
97
  return 'journal_entry_transaction_line';
93
98
  case 'account_based_expense_line_detail':
@@ -95,6 +100,9 @@ function getLineType(payload) {
95
100
  return 'transaction_with_account_and_class_line';
96
101
  case 'sub_total_line_detail':
97
102
  case 'description_only_line_detail':
103
+ case 'discount_line_detail':
104
+ case 'tax_line_detail':
105
+ case 'group_line_detail':
98
106
  return 'transaction_info_line';
99
107
  case 'deposit_without_account_line_detail':
100
108
  case '':
@@ -81,8 +81,13 @@ function getLineType(payload) {
81
81
  const lineDetailType = payload.line_detail_type;
82
82
  switch (lineDetailType) {
83
83
  case 'sales_item_line_detail':
84
- case 'item_based_expense_line_detail':
85
- return 'transaction_with_product_or_service_line';
84
+ case 'item_based_expense_line_detail': {
85
+ const lineDetail = payload
86
+ .line_detail;
87
+ return lineDetail?.item == null
88
+ ? 'transaction_with_account_and_class_line'
89
+ : 'transaction_with_product_or_service_line';
90
+ }
86
91
  case 'journal_entry_line_detail':
87
92
  return 'journal_entry_transaction_line';
88
93
  case 'account_based_expense_line_detail':
@@ -90,6 +95,9 @@ function getLineType(payload) {
90
95
  return 'transaction_with_account_and_class_line';
91
96
  case 'sub_total_line_detail':
92
97
  case 'description_only_line_detail':
98
+ case 'discount_line_detail':
99
+ case 'tax_line_detail':
100
+ case 'group_line_detail':
93
101
  return 'transaction_info_line';
94
102
  case 'deposit_without_account_line_detail':
95
103
  case '':
@@ -304,7 +304,8 @@ const buildLineItemById = (transaction, recommendations) => {
304
304
  isClassMiscategorized: false,
305
305
  };
306
306
  }
307
- if (line.type === 'transaction_info_line') {
307
+ if (line.type === 'transaction_info_line' ||
308
+ line.type === 'transaction_line_base') {
308
309
  const infoRecord = line;
309
310
  lineItemData[line.id] = {
310
311
  ...infoRecord,
@@ -105,6 +105,7 @@ function collectLeftoverMembers(leftovers) {
105
105
  if (leftovers == null || leftovers.length === 0) {
106
106
  return undefined;
107
107
  }
108
+ // Leftover accruals did not post, so they have no journal-entry ids to open.
108
109
  return leftovers.map((member) => ({
109
110
  accrualId: member.accrualId,
110
111
  estimatedAmount: member.estimatedAmount,
@@ -1,5 +1,5 @@
1
1
  import { createSelector } from '@reduxjs/toolkit';
2
- import { getInvoicingCatalogItemsByIds } from '../../../entity/invoicing/invoicingCatalog/invoicingCatalogSelector';
2
+ import { getInvoicingCatalogItemsByIds, invoicingPricePointDisplayAmount, } from '../../../entity/invoicing/invoicingCatalog/invoicingCatalogSelector';
3
3
  import { runningInvoicingActionId } from '../runningInvoicingActionId';
4
4
  import { INVOICING_PRODUCT_COLUMNS, } from './invoicingCatalogListViewState';
5
5
  /**
@@ -22,28 +22,64 @@ export const getInvoicingCatalogPrices = (items) => items.flatMap((item) => (ite
22
22
  priceCode: subFamily.priceCode,
23
23
  productCode: item.productCode,
24
24
  })));
25
+ const lowestStartingTier = (tiers) => tiers.reduce((lowest, tier) => lowest == null || tier.startingUnit < lowest.startingUnit ? tier : lowest, undefined);
26
+ export const getInvoicingCatalogPlanRows = (items) => items.flatMap((item) => {
27
+ const pricePoints = item.subFamilies ?? [];
28
+ if (pricePoints.length === 0) {
29
+ return [
30
+ {
31
+ id: item.id,
32
+ item,
33
+ period: item.period,
34
+ periodUnit: item.periodUnit,
35
+ price: item.price,
36
+ productFamily: item.name,
37
+ status: item.status,
38
+ tierCount: item.tiers?.length ?? 0,
39
+ firstTier: lowestStartingTier(item.tiers ?? []),
40
+ },
41
+ ];
42
+ }
43
+ return pricePoints.map((pricePoint) => ({
44
+ id: pricePoint.id,
45
+ item,
46
+ period: pricePoint.period,
47
+ periodUnit: pricePoint.periodUnit,
48
+ planName: pricePoint.name,
49
+ price: invoicingPricePointDisplayAmount(pricePoint),
50
+ pricingModel: pricePoint.pricingModel,
51
+ productFamily: item.name,
52
+ status: pricePoint.status,
53
+ tierCount: pricePoint.tiers?.length ?? 0,
54
+ firstTier: lowestStartingTier(pricePoint.tiers ?? []),
55
+ }));
56
+ });
25
57
  /**
26
58
  * Bundled read view for the single catalog page (plans + products tabs).
27
59
  * Memoized over the plan + product entity slices and the list-view slice so the
28
60
  * denormalized arrays keep referential identity. The base `fetchState`/`error`
29
61
  * track the plan list; the product list has its own `productFetchState`.
30
62
  */
31
- export const getInvoicingCatalogListView = createSelector((state) => state.invoicingCatalogState, (state) => state.invoicingCatalogListViewState, (state) => state.invoicingConfigViewState.catalogItemLifecycleActionOptions, (state) => state.editInvoicingCatalogItemDetailViewState.actionStateById, (catalogState, listViewState, catalogItemLifecycleActionOptions, actionStateById) => ({
32
- catalogItemLifecycleActionOptions,
33
- runningActionId: runningInvoicingActionId(actionStateById),
34
- plans: getInvoicingCatalogItemsByIds(catalogState, listViewState.planIds),
35
- planSort: listViewState.planSort,
36
- productColumns: INVOICING_PRODUCT_COLUMNS,
37
- products: getInvoicingCatalogItemsByIds(catalogState, listViewState.productIds),
38
- productSort: listViewState.productSort,
39
- count: listViewState.counts,
40
- countsFetchState: listViewState.countsFetchState,
41
- planFilters: listViewState.planFilters,
42
- planNextCursor: listViewState.planNextCursor,
43
- productFilters: listViewState.productFilters,
44
- productNextCursor: listViewState.productNextCursor,
45
- productFetchState: listViewState.productFetchState,
46
- fetchState: listViewState.fetchState,
47
- error: listViewState.error,
48
- version: 1.0,
49
- }));
63
+ export const getInvoicingCatalogListView = createSelector((state) => state.invoicingCatalogState, (state) => state.invoicingCatalogListViewState, (state) => state.invoicingConfigViewState.catalogItemLifecycleActionOptions, (state) => state.editInvoicingCatalogItemDetailViewState.actionStateById, (catalogState, listViewState, catalogItemLifecycleActionOptions, actionStateById) => {
64
+ const plans = getInvoicingCatalogItemsByIds(catalogState, listViewState.planIds);
65
+ return {
66
+ catalogItemLifecycleActionOptions,
67
+ runningActionId: runningInvoicingActionId(actionStateById),
68
+ planRows: getInvoicingCatalogPlanRows(plans),
69
+ plans,
70
+ planSort: listViewState.planSort,
71
+ productColumns: INVOICING_PRODUCT_COLUMNS,
72
+ products: getInvoicingCatalogItemsByIds(catalogState, listViewState.productIds),
73
+ productSort: listViewState.productSort,
74
+ count: listViewState.counts,
75
+ countsFetchState: listViewState.countsFetchState,
76
+ planFilters: listViewState.planFilters,
77
+ planNextCursor: listViewState.planNextCursor,
78
+ productFilters: listViewState.productFilters,
79
+ productNextCursor: listViewState.productNextCursor,
80
+ productFetchState: listViewState.productFetchState,
81
+ fetchState: listViewState.fetchState,
82
+ error: listViewState.error,
83
+ version: 1.0,
84
+ };
85
+ });
package/lib/index.d.ts CHANGED
@@ -316,7 +316,7 @@ import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData,
316
316
  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';
317
317
  import { clearStatementDateConflict, confirmStatementMapping, deleteAccountStatement, deleteCombinedStatement, 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';
318
318
  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';
319
- import { ActualMatchingGroupedAccrual, ActualMatchingJournalEntryIds, ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingMatchView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingViewSelector } from './view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes';
319
+ import { ActualMatchingGroupedAccrual, ActualMatchingJournalEntryIds, ActualMatchingKpiSummary, ActualMatchingLeftoverAccrual, ActualMatchingMatchModalView, ActualMatchingMatchView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingViewSelector } from './view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes';
320
320
  import { ExpenseAutomationStepDetails, ExpenseAutomationViewSelector } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
321
321
  import { ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisOperatingExpenseView, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView } from './view/expenseAutomationView/selectorTypes/fluxAnalysisViewSelectorTypes';
322
322
  import { JEAccountSettingsView } from './view/expenseAutomationView/selectorTypes/jeAccountSettingsViewSelectorTypes';
@@ -736,7 +736,7 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
736
736
  export { ClassesViewSelectorReportV2 };
737
737
  export { BalancesTimeseries, TrendTimeseries, BalanceKind };
738
738
  export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, MonthCloseCheckProgressJson, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
739
- export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, DEFAULT_COMPLETED_SUB_TAB, DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, TransactionGroup, toTransactionGroup, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, ExpenseAutomationActualMatchingViewSelector, ActualMatchingGroupedAccrual, ActualMatchingJournalEntryIds, ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingMatchView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingSortKey, ExpenseAutomationActualMatchingStatusFilter, ExpenseAutomationActualMatchingViewUIState, ActualMatchingTransactionSearchResult, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, ALL_ACTUAL_MATCHING_IGNORE_REASONS, ActualMatchingIgnoreReasonType, IgnoreActualMatchingSuggestionParams, UndoReversalAccrualsParams, UndoReversalResult, UndoReversalResultStatus, actualMatchingTransactionLineKey, JEKpiSummary, ALL_JE_PAGE_TABS, JEPageTab, MATCH_ACCRUAL_SEARCH_LIMIT, MATCH_SEARCH_DEBOUNCE_MS, MATCH_TRANSACTION_SEARCH_PAGE_SIZE, toExpenseAutomationJEScheduleSortKey, toExpenseAutomationActualMatchingSortKey, toExpenseAutomationActualMatchingStatusFilter, toActualMatchingIgnoreReasonType, toJEPageTab, toMatchAndReverseResultStatus, toUndoReversalResultStatus, toggleJECreatedGroupCollapsed, toggleJEFailedGroupCollapsed, toggleJEPendingGroupCollapsed, updateJEScheduleTypeFilter, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, toExpenseAutomationViewTypeStrict, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionGroup, fetchExpenseAutomationMissingReceipts, 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, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, getLastTransferEntryReplacement, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, getLedgerAccountIdsWithStatementOverrideWarning, getLedgerAccountsForCombinedStatementMapping, getReparseStatementStatusByAccountId, getUnavailableLedgerAccountIds, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, updateStatementProcessingFailed, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, CombinedStatementAccount, StatementAccountScope, StatementDataStatusCodeType, deleteAccountStatement, deleteCombinedStatement, uploadAccountStatement, parseCombinedStatement, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, submitCombinedStatementUpdate, submitStatementUpdate, clearStatementDateConflict, confirmStatementMapping, StatementDateConflict, updateStatementUpdateLocalData, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, ParsedStatementData, StatementUpdateLocalData, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, };
739
+ export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, DEFAULT_COMPLETED_SUB_TAB, DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, TransactionGroup, toTransactionGroup, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, ExpenseAutomationActualMatchingViewSelector, ActualMatchingGroupedAccrual, ActualMatchingJournalEntryIds, ActualMatchingLeftoverAccrual, ActualMatchingKpiSummary, ActualMatchingMatchModalView, ActualMatchingMatchView, ActualMatchingRow, ActualMatchingRowKind, ExpenseAutomationActualMatchingSortKey, ExpenseAutomationActualMatchingStatusFilter, ExpenseAutomationActualMatchingViewUIState, ActualMatchingTransactionSearchResult, MatchAndReverseAccrualsParams, MatchAndReverseResult, MatchAndReverseResultStatus, ALL_ACTUAL_MATCHING_IGNORE_REASONS, ActualMatchingIgnoreReasonType, IgnoreActualMatchingSuggestionParams, UndoReversalAccrualsParams, UndoReversalResult, UndoReversalResultStatus, actualMatchingTransactionLineKey, JEKpiSummary, ALL_JE_PAGE_TABS, JEPageTab, MATCH_ACCRUAL_SEARCH_LIMIT, MATCH_SEARCH_DEBOUNCE_MS, MATCH_TRANSACTION_SEARCH_PAGE_SIZE, toExpenseAutomationJEScheduleSortKey, toExpenseAutomationActualMatchingSortKey, toExpenseAutomationActualMatchingStatusFilter, toActualMatchingIgnoreReasonType, toJEPageTab, toMatchAndReverseResultStatus, toUndoReversalResultStatus, toggleJECreatedGroupCollapsed, toggleJEFailedGroupCollapsed, toggleJEPendingGroupCollapsed, updateJEScheduleTypeFilter, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, toExpenseAutomationViewTypeStrict, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, updateTransactionCategorizationCompletedSubTab, updateTransactionGroup, fetchExpenseAutomationMissingReceipts, 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, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, getLastTransferEntryReplacement, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, getLedgerAccountIdsWithStatementOverrideWarning, getLedgerAccountsForCombinedStatementMapping, getReparseStatementStatusByAccountId, getUnavailableLedgerAccountIds, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, updateStatementProcessingFailed, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, CombinedStatementAccount, StatementAccountScope, StatementDataStatusCodeType, deleteAccountStatement, deleteCombinedStatement, uploadAccountStatement, parseCombinedStatement, parseStatement, parseStatementSuccess, parseStatementFailure, reparseStatement, reparseStatementSuccess, reparseStatementFailure, resetReparseStatementStatus, updateParsedStatementData, updateNodeCollapseState, UploadStatementDocumentAIPayload, updateStatementUploadChosen, submitCombinedStatementUpdate, submitStatementUpdate, clearStatementDateConflict, confirmStatementMapping, StatementDateConflict, updateStatementUpdateLocalData, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, setStatementProcessingDismissedToBackground, updateStatementProcessingBackgroundCompletedSteps, ParsedStatementData, StatementUpdateLocalData, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, };
740
740
  export { JEScheduleLocalData };
741
741
  export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, ExpenseAutomationJEOneTimeAccrualDetailView, JEScheduleRow, JEScheduledTransactionWithFailedEntries, NewJeDetailLocalData, NewJeScheduleState, NewOneTimeAccrualLocalData, NewAccrualAccountsView, NewScheduleLocalData, NewScheduleLocalDataFixedAssets, NewScheduleSearchTransactionsView, NewScheduleView, SearchTransactionsState, computeNewScheduleJeDetails, createOneTimeAccrual, createOneTimeAccrualFailure, createOneTimeAccrualSuccess, fetchOneTimeAccrual, getJeNewAccrualAccountsView, ignoreOneTimeAccrual, promoteOneTimeAccrual, revertJeSchedule, revertOneTimeAccrual, getJeNewScheduleSearchTransactionsView, getJeNewScheduleView, };
742
742
  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, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };
@@ -1229,7 +1229,7 @@ export { fetchInvoicingCatalogCounts, fetchInvoicingCatalogListPage, fetchInvoic
1229
1229
  export { ALL_INVOICING_PRODUCT_SORT_KEYS, INVOICING_PRODUCT_COLUMNS, } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewState';
1230
1230
  export type { InvoicingCatalogPlanFilters, InvoicingCatalogProductFilters, InvoicingProductColumnConfig, InvoicingProductSortKey, } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewState';
1231
1231
  export { getInvoicingCatalogListView } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector';
1232
- export type { InvoicingCatalogListView } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector';
1232
+ export type { InvoicingCatalogListView, InvoicingCatalogPlanRow, } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector';
1233
1233
  export { fetchInvoicingCatalogItemDetail } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer';
1234
1234
  export type { InvoicingCatalogItemKind } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState';
1235
1235
  export { getInvoicingCatalogItemById, getLowestInvoicingCatalogPricePointAmount, } from './entity/invoicing/invoicingCatalog/invoicingCatalogSelector';
@@ -312,7 +312,8 @@ const buildLineItemById = (transaction, recommendations) => {
312
312
  isClassMiscategorized: false,
313
313
  };
314
314
  }
315
- if (line.type === 'transaction_info_line') {
315
+ if (line.type === 'transaction_info_line' ||
316
+ line.type === 'transaction_line_base') {
316
317
  const infoRecord = line;
317
318
  lineItemData[line.id] = {
318
319
  ...infoRecord,
@@ -6,13 +6,14 @@ import { ZeniDate } from '../../../zeniDayJS';
6
6
  import { ActualMatchingTransactionSearchResult, ActualMatchingViewUIState, MatchAndReverseResult } from '../types/actualMatchingViewState';
7
7
  export type ActualMatchingRowKind = 'auto_reversed' | 'pending_review' | 'manually_reversed';
8
8
  export type ActualMatchingJournalEntryIds = Pick<JEOneTimeAccrual, 'reversalTransactionId' | 'reversalTransactionIntegrationId' | 'transactionId' | 'transactionIntegrationId'>;
9
- export type ActualMatchingGroupedAccrual = {
9
+ export type ActualMatchingLeftoverAccrual = {
10
10
  accrualId: ID;
11
11
  estimatedAmount?: Amount;
12
12
  jeDebitAccountName?: string;
13
13
  memo?: string;
14
14
  serviceMonth?: string;
15
- } & ActualMatchingJournalEntryIds;
15
+ };
16
+ export type ActualMatchingGroupedAccrual = ActualMatchingLeftoverAccrual & ActualMatchingJournalEntryIds;
16
17
  export interface ActualMatchingRow extends JEOneTimeAccrual {
17
18
  accruedAmount: Amount;
18
19
  actualAmount: Amount;
@@ -21,7 +22,7 @@ export interface ActualMatchingRow extends JEOneTimeAccrual {
21
22
  groupedAccrualIds?: ID[];
22
23
  groupedMembers?: ActualMatchingGroupedAccrual[];
23
24
  intendedAccrualIds?: ID[];
24
- leftovers?: ActualMatchingGroupedAccrual[];
25
+ leftovers?: ActualMatchingLeftoverAccrual[];
25
26
  matchShape?: string;
26
27
  matchTier?: string;
27
28
  reversalDate?: ZeniDate;
@@ -127,6 +127,7 @@ function collectLeftoverMembers(leftovers) {
127
127
  if (leftovers == null || leftovers.length === 0) {
128
128
  return undefined;
129
129
  }
130
+ // Leftover accruals did not post, so they have no journal-entry ids to open.
130
131
  return leftovers.map((member) => ({
131
132
  accrualId: member.accrualId,
132
133
  estimatedAmount: member.estimatedAmount,
@@ -1,10 +1,32 @@
1
+ import { Amount } from '../../../commonStateTypes/amount';
1
2
  import { FetchStateAndError, ID } from '../../../commonStateTypes/common';
2
3
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
- import { InvoicingCatalogItem, InvoicingCatalogPricePoint } from '../../../entity/invoicing/invoicingCatalog/invoicingCatalogState';
4
+ import { InvoicingCatalogItem, InvoicingCatalogPricePoint, InvoicingCatalogTier } from '../../../entity/invoicing/invoicingCatalog/invoicingCatalogState';
4
5
  import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload';
5
6
  import { RootState } from '../../../rootStateTypes';
6
7
  import { InvoicingListSort } from '../invoicingApiHelper';
7
8
  import { InvoicingCatalogPlanFilters, InvoicingCatalogProductFilters, InvoicingProductColumnConfig } from './invoicingCatalogListViewState';
9
+ /**
10
+ * One row of the plans table: a price point under its catalog item, so an item
11
+ * priced monthly and annually lists once per price. An item with no price
12
+ * points still gets a row, from the item's own fields.
13
+ */
14
+ export interface InvoicingCatalogPlanRow {
15
+ /** The price point's id, or the item's when it has no price points. */
16
+ id: ID;
17
+ /** The row's catalog item: the row opens it and its menu acts on it. */
18
+ item: InvoicingCatalogItem;
19
+ tierCount: number;
20
+ /** The tier with the lowest starting unit — what "From" quotes. */
21
+ firstTier?: InvoicingCatalogTier;
22
+ period?: number;
23
+ periodUnit?: string;
24
+ planName?: string;
25
+ price?: Amount;
26
+ pricingModel?: string;
27
+ productFamily?: string;
28
+ status?: string;
29
+ }
8
30
  export interface InvoicingCatalogListView extends SelectorView {
9
31
  /** Config-owned; folded in so the screen reads one selector. */
10
32
  catalogItemLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
@@ -12,6 +34,8 @@ export interface InvoicingCatalogListView extends SelectorView {
12
34
  countsFetchState: FetchStateAndError;
13
35
  planFilters: InvoicingCatalogPlanFilters;
14
36
  planNextCursor: string | null;
37
+ /** The plans tab's rows: {@link plans} flattened to one per price point. */
38
+ planRows: InvoicingCatalogPlanRow[];
15
39
  plans: InvoicingCatalogItem[];
16
40
  productColumns: InvoicingProductColumnConfig[];
17
41
  productFetchState: FetchStateAndError;
@@ -37,6 +61,7 @@ export interface InvoicingCatalogListView extends SelectorView {
37
61
  * price point payload may carry.
38
62
  */
39
63
  export declare const getInvoicingCatalogPrices: (items: InvoicingCatalogItem[]) => InvoicingCatalogPricePoint[];
64
+ export declare const getInvoicingCatalogPlanRows: (items: InvoicingCatalogItem[]) => InvoicingCatalogPlanRow[];
40
65
  /**
41
66
  * Bundled read view for the single catalog page (plans + products tabs).
42
67
  * Memoized over the plan + product entity slices and the list-view slice so the
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getInvoicingCatalogListView = exports.getInvoicingCatalogPrices = void 0;
3
+ exports.getInvoicingCatalogListView = exports.getInvoicingCatalogPlanRows = exports.getInvoicingCatalogPrices = void 0;
4
4
  const toolkit_1 = require("@reduxjs/toolkit");
5
5
  const invoicingCatalogSelector_1 = require("../../../entity/invoicing/invoicingCatalog/invoicingCatalogSelector");
6
6
  const runningInvoicingActionId_1 = require("../runningInvoicingActionId");
@@ -26,28 +26,65 @@ const getInvoicingCatalogPrices = (items) => items.flatMap((item) => (item.subFa
26
26
  productCode: item.productCode,
27
27
  })));
28
28
  exports.getInvoicingCatalogPrices = getInvoicingCatalogPrices;
29
+ const lowestStartingTier = (tiers) => tiers.reduce((lowest, tier) => lowest == null || tier.startingUnit < lowest.startingUnit ? tier : lowest, undefined);
30
+ const getInvoicingCatalogPlanRows = (items) => items.flatMap((item) => {
31
+ const pricePoints = item.subFamilies ?? [];
32
+ if (pricePoints.length === 0) {
33
+ return [
34
+ {
35
+ id: item.id,
36
+ item,
37
+ period: item.period,
38
+ periodUnit: item.periodUnit,
39
+ price: item.price,
40
+ productFamily: item.name,
41
+ status: item.status,
42
+ tierCount: item.tiers?.length ?? 0,
43
+ firstTier: lowestStartingTier(item.tiers ?? []),
44
+ },
45
+ ];
46
+ }
47
+ return pricePoints.map((pricePoint) => ({
48
+ id: pricePoint.id,
49
+ item,
50
+ period: pricePoint.period,
51
+ periodUnit: pricePoint.periodUnit,
52
+ planName: pricePoint.name,
53
+ price: (0, invoicingCatalogSelector_1.invoicingPricePointDisplayAmount)(pricePoint),
54
+ pricingModel: pricePoint.pricingModel,
55
+ productFamily: item.name,
56
+ status: pricePoint.status,
57
+ tierCount: pricePoint.tiers?.length ?? 0,
58
+ firstTier: lowestStartingTier(pricePoint.tiers ?? []),
59
+ }));
60
+ });
61
+ exports.getInvoicingCatalogPlanRows = getInvoicingCatalogPlanRows;
29
62
  /**
30
63
  * Bundled read view for the single catalog page (plans + products tabs).
31
64
  * Memoized over the plan + product entity slices and the list-view slice so the
32
65
  * denormalized arrays keep referential identity. The base `fetchState`/`error`
33
66
  * track the plan list; the product list has its own `productFetchState`.
34
67
  */
35
- exports.getInvoicingCatalogListView = (0, toolkit_1.createSelector)((state) => state.invoicingCatalogState, (state) => state.invoicingCatalogListViewState, (state) => state.invoicingConfigViewState.catalogItemLifecycleActionOptions, (state) => state.editInvoicingCatalogItemDetailViewState.actionStateById, (catalogState, listViewState, catalogItemLifecycleActionOptions, actionStateById) => ({
36
- catalogItemLifecycleActionOptions,
37
- runningActionId: (0, runningInvoicingActionId_1.runningInvoicingActionId)(actionStateById),
38
- plans: (0, invoicingCatalogSelector_1.getInvoicingCatalogItemsByIds)(catalogState, listViewState.planIds),
39
- planSort: listViewState.planSort,
40
- productColumns: invoicingCatalogListViewState_1.INVOICING_PRODUCT_COLUMNS,
41
- products: (0, invoicingCatalogSelector_1.getInvoicingCatalogItemsByIds)(catalogState, listViewState.productIds),
42
- productSort: listViewState.productSort,
43
- count: listViewState.counts,
44
- countsFetchState: listViewState.countsFetchState,
45
- planFilters: listViewState.planFilters,
46
- planNextCursor: listViewState.planNextCursor,
47
- productFilters: listViewState.productFilters,
48
- productNextCursor: listViewState.productNextCursor,
49
- productFetchState: listViewState.productFetchState,
50
- fetchState: listViewState.fetchState,
51
- error: listViewState.error,
52
- version: 1.0,
53
- }));
68
+ exports.getInvoicingCatalogListView = (0, toolkit_1.createSelector)((state) => state.invoicingCatalogState, (state) => state.invoicingCatalogListViewState, (state) => state.invoicingConfigViewState.catalogItemLifecycleActionOptions, (state) => state.editInvoicingCatalogItemDetailViewState.actionStateById, (catalogState, listViewState, catalogItemLifecycleActionOptions, actionStateById) => {
69
+ const plans = (0, invoicingCatalogSelector_1.getInvoicingCatalogItemsByIds)(catalogState, listViewState.planIds);
70
+ return {
71
+ catalogItemLifecycleActionOptions,
72
+ runningActionId: (0, runningInvoicingActionId_1.runningInvoicingActionId)(actionStateById),
73
+ planRows: (0, exports.getInvoicingCatalogPlanRows)(plans),
74
+ plans,
75
+ planSort: listViewState.planSort,
76
+ productColumns: invoicingCatalogListViewState_1.INVOICING_PRODUCT_COLUMNS,
77
+ products: (0, invoicingCatalogSelector_1.getInvoicingCatalogItemsByIds)(catalogState, listViewState.productIds),
78
+ productSort: listViewState.productSort,
79
+ count: listViewState.counts,
80
+ countsFetchState: listViewState.countsFetchState,
81
+ planFilters: listViewState.planFilters,
82
+ planNextCursor: listViewState.planNextCursor,
83
+ productFilters: listViewState.productFilters,
84
+ productNextCursor: listViewState.productNextCursor,
85
+ productFetchState: listViewState.productFetchState,
86
+ fetchState: listViewState.fetchState,
87
+ error: listViewState.error,
88
+ version: 1.0,
89
+ };
90
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.2.69-beta0MM",
3
+ "version": "5.2.69-betaAK0",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",