@zeniai/client-epic-state 5.2.66-beta2MM → 5.2.67
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.
- package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +0 -1
- package/lib/entity/jeSchedules/jeSchedulesPayload.js +0 -1
- package/lib/entity/jeSchedules/jeSchedulesState.d.ts +0 -1
- package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +0 -1
- package/lib/esm/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +16 -19
- package/lib/esm/view/invoicing/createInvoice/createInvoiceEpic.js +9 -1
- package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer.js +5 -1
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +5 -1
- package/lib/esm/view/invoicing/invoiceList/invoiceListReducer.js +8 -1
- package/lib/index.d.ts +2 -2
- package/lib/view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes.d.ts +1 -2
- package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +16 -19
- package/lib/view/expenseAutomationView/types/actualMatchingViewState.d.ts +3 -2
- package/lib/view/invoicing/createInvoice/createInvoiceEpic.d.ts +3 -2
- package/lib/view/invoicing/createInvoice/createInvoiceEpic.js +8 -0
- package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer.d.ts +3 -1
- package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer.js +6 -2
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.d.ts +3 -1
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +5 -1
- package/lib/view/invoicing/invoiceList/invoiceListReducer.d.ts +3 -1
- package/lib/view/invoicing/invoiceList/invoiceListReducer.js +9 -2
- package/package.json +1 -1
|
@@ -187,7 +187,6 @@ export interface JEOneTimeAccrualPayload {
|
|
|
187
187
|
reversal_policy?: string | null;
|
|
188
188
|
reversal_posting_date?: string | null;
|
|
189
189
|
reversal_transaction_id?: ID | null;
|
|
190
|
-
reversal_transaction_integration_id?: ID | null;
|
|
191
190
|
reversal_trigger?: string | null;
|
|
192
191
|
reversed_by_user?: UserPayload | null;
|
|
193
192
|
transaction_id?: ID | null;
|
|
@@ -550,7 +550,6 @@ function toJEOneTimeAccrual(payload) {
|
|
|
550
550
|
transactionId: payload.transaction_id ?? undefined,
|
|
551
551
|
transactionIntegrationId: payload.transaction_integration_id ?? undefined,
|
|
552
552
|
reversalTransactionId: payload.reversal_transaction_id ?? undefined,
|
|
553
|
-
reversalTransactionIntegrationId: payload.reversal_transaction_integration_id ?? undefined,
|
|
554
553
|
createdBy: toJEOneTimeAccrualCreator(payload.created_by_user),
|
|
555
554
|
reversedBy: toJEOneTimeAccrualCreator(payload.reversed_by_user),
|
|
556
555
|
};
|
|
@@ -269,7 +269,6 @@ export interface JEOneTimeAccrualState {
|
|
|
269
269
|
profileSnapshot?: JEOneTimeAccrualProfileSnapshot;
|
|
270
270
|
reversalPostingDate?: ZeniDate;
|
|
271
271
|
reversalTransactionId?: ID;
|
|
272
|
-
reversalTransactionIntegrationId?: ID;
|
|
273
272
|
reversalTrigger?: OneTimeAccrualReversalTriggerType;
|
|
274
273
|
reversedBy?: JEOneTimeAccrualCreator;
|
|
275
274
|
transactionId?: ID;
|
|
@@ -539,7 +539,6 @@ export function toJEOneTimeAccrual(payload) {
|
|
|
539
539
|
transactionId: payload.transaction_id ?? undefined,
|
|
540
540
|
transactionIntegrationId: payload.transaction_integration_id ?? undefined,
|
|
541
541
|
reversalTransactionId: payload.reversal_transaction_id ?? undefined,
|
|
542
|
-
reversalTransactionIntegrationId: payload.reversal_transaction_integration_id ?? undefined,
|
|
543
542
|
createdBy: toJEOneTimeAccrualCreator(payload.created_by_user),
|
|
544
543
|
reversedBy: toJEOneTimeAccrualCreator(payload.reversed_by_user),
|
|
545
544
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createSelector } from '@reduxjs/toolkit';
|
|
2
1
|
import orderBy from 'lodash/orderBy';
|
|
2
|
+
import { createSelector } from '@reduxjs/toolkit';
|
|
3
3
|
import { toMonthYearPeriodId, } from '../../../commonStateTypes/timePeriod';
|
|
4
4
|
import { getActualMatchingMatchById } from '../../../entity/actualMatching/actualMatchingSelector';
|
|
5
5
|
import { generateJEOneTimeAccrualKey } from '../../../entity/jeSchedules/jeScheduleHelper';
|
|
@@ -94,11 +94,7 @@ function collectGroupedMembers(members) {
|
|
|
94
94
|
estimatedAmount: member.estimatedAmount,
|
|
95
95
|
jeDebitAccountName: member.jeDebitAccountName,
|
|
96
96
|
memo: member.memo,
|
|
97
|
-
reversalTransactionId: member.reversalTransactionId,
|
|
98
|
-
reversalTransactionIntegrationId: member.reversalTransactionIntegrationId,
|
|
99
97
|
serviceMonth: member.serviceMonth,
|
|
100
|
-
transactionId: member.transactionId,
|
|
101
|
-
transactionIntegrationId: member.transactionIntegrationId,
|
|
102
98
|
}));
|
|
103
99
|
}
|
|
104
100
|
function collectLeftoverMembers(leftovers) {
|
|
@@ -316,22 +312,18 @@ function toActualMatchingMatchView(match) {
|
|
|
316
312
|
: match.leftovers.map(toMatchModalAccrual),
|
|
317
313
|
};
|
|
318
314
|
}
|
|
315
|
+
const EMPTY_ACTUAL_MATCHING_ROWS = [];
|
|
319
316
|
const matchViewSelectorById = new Map();
|
|
320
317
|
export function getExpenseAutomationActualMatchingMatchView(state, matchId) {
|
|
321
318
|
let selector = matchViewSelectorById.get(matchId);
|
|
322
319
|
if (selector == null) {
|
|
323
320
|
selector = createSelector([
|
|
324
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
325
|
-
.detailFetchStateByMatchId[matchId] ?? NOT_STARTED,
|
|
321
|
+
(root) => root.expenseAutomationActualMatchingViewState.detailFetchStateByMatchId[matchId] ?? NOT_STARTED,
|
|
326
322
|
(root) => root.expenseAutomationActualMatchingViewState.ignoreStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
327
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
328
|
-
|
|
329
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
330
|
-
|
|
331
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
332
|
-
.detailRefreshStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
333
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
334
|
-
.undoReversalStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
323
|
+
(root) => root.expenseAutomationActualMatchingViewState.lastMatchResultsByMatchId?.[matchId],
|
|
324
|
+
(root) => root.expenseAutomationActualMatchingViewState.lastUndoResultsByMatchId?.[matchId],
|
|
325
|
+
(root) => root.expenseAutomationActualMatchingViewState.detailRefreshStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
326
|
+
(root) => root.expenseAutomationActualMatchingViewState.undoReversalStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
335
327
|
(root) => getActualMatchingMatchById(root.actualMatchingState, matchId),
|
|
336
328
|
], (detailFetchState, ignoreStatus, lastMatchResults, lastUndoResults, refreshStatus, undoReversalStatus, match) => ({
|
|
337
329
|
detailFetchState,
|
|
@@ -361,8 +353,7 @@ export function getActualMatchingMatchModalConfirmStatus(state, matchId) {
|
|
|
361
353
|
if (matchId != null && matchId !== '') {
|
|
362
354
|
return (state.expenseAutomationActualMatchingViewState.confirmStatusByMatchId[matchId] ?? NOT_STARTED);
|
|
363
355
|
}
|
|
364
|
-
return state.expenseAutomationActualMatchingViewState.matchModal
|
|
365
|
-
.confirmStatus;
|
|
356
|
+
return state.expenseAutomationActualMatchingViewState.matchModal.confirmStatus;
|
|
366
357
|
}
|
|
367
358
|
export function getExpenseAutomationActualMatchingView(state) {
|
|
368
359
|
const { expenseAutomationActualMatchingViewState } = state;
|
|
@@ -376,8 +367,14 @@ export function getExpenseAutomationActualMatchingView(state) {
|
|
|
376
367
|
.filter((match) => match.members.length > 0)
|
|
377
368
|
.map(toActualMatchingRow);
|
|
378
369
|
const rows = allRows.filter((row) => matchesSearch(row, uiState.searchString));
|
|
379
|
-
const
|
|
380
|
-
const
|
|
370
|
+
const includePendingReview = uiState.statusFilter !== 'reversed';
|
|
371
|
+
const includeReversed = uiState.statusFilter !== 'pending_review';
|
|
372
|
+
const reversed = includeReversed
|
|
373
|
+
? sortActualMatchingRows(rows.filter((row) => isReversedMatchKind(row.kind)), uiState)
|
|
374
|
+
: EMPTY_ACTUAL_MATCHING_ROWS;
|
|
375
|
+
const pendingReview = includePendingReview
|
|
376
|
+
? sortActualMatchingRows(rows.filter((row) => row.kind === 'pending_review'), uiState)
|
|
377
|
+
: EMPTY_ACTUAL_MATCHING_ROWS;
|
|
381
378
|
const kpiSummary = buildActualMatchingKpiSummary(allRows, getTenantDisplayCurrency(state)?.currencyCode);
|
|
382
379
|
const searchedAccruals = matchModal.accrualSearch.results
|
|
383
380
|
.map((key) => getJEOneTimeAccrualByKey(key, state.jeSchedulesState))
|
|
@@ -6,7 +6,8 @@ import { updateInvoices } from '../../../entity/invoicing/invoice/invoiceReducer
|
|
|
6
6
|
import { apiErrorSnackbarVariables } from '../../../entity/snackbar/snackbarApiError';
|
|
7
7
|
import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
|
|
8
8
|
import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
|
|
9
|
-
import {
|
|
9
|
+
import { invalidateInvoicingCustomerDetail } from '../editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer';
|
|
10
|
+
import { addInvoiceToList, invalidateInvoiceListForCustomer, } from '../invoiceList/invoiceListReducer';
|
|
10
11
|
import { createInvoice, createInvoiceFailure, createInvoiceSuccess, } from './createInvoiceReducer';
|
|
11
12
|
export const createInvoiceEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(createInvoice.match), mergeMap((action) => {
|
|
12
13
|
const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/invoices`;
|
|
@@ -23,6 +24,13 @@ export const createInvoiceEpic = (actions$, _state$, zeniAPI) => actions$.pipe(f
|
|
|
23
24
|
id: response.data.id,
|
|
24
25
|
status: response.data.status,
|
|
25
26
|
}),
|
|
27
|
+
// The customer's page caches their invoices and totals.
|
|
28
|
+
invalidateInvoicingCustomerDetail({
|
|
29
|
+
id: response.data.customer_id,
|
|
30
|
+
}),
|
|
31
|
+
invalidateInvoiceListForCustomer({
|
|
32
|
+
customerId: response.data.customer_id,
|
|
33
|
+
}),
|
|
26
34
|
createInvoiceSuccess({ invoiceId: response.data.id }),
|
|
27
35
|
openSnackbar({
|
|
28
36
|
messageSection: 'invoicing_invoice_saved',
|
|
@@ -95,6 +95,10 @@ const editInvoicingCustomerDetailView = createSlice({
|
|
|
95
95
|
error: undefined,
|
|
96
96
|
};
|
|
97
97
|
},
|
|
98
|
+
// Makes the page epic refetch a record that changed server-side (e.g. a new subscription).
|
|
99
|
+
invalidateInvoicingCustomerDetail(draft, action) {
|
|
100
|
+
delete draft.recordStateById[action.payload.id];
|
|
101
|
+
},
|
|
98
102
|
fetchInvoicingCustomerDetail(draft, action) {
|
|
99
103
|
draft.recordStateById[action.payload.id] = {
|
|
100
104
|
fetchState: 'In-Progress',
|
|
@@ -198,5 +202,5 @@ const editInvoicingCustomerDetailView = createSlice({
|
|
|
198
202
|
});
|
|
199
203
|
},
|
|
200
204
|
});
|
|
201
|
-
export const { fetchInvoicingPaymentLinkEmailPreview, fetchInvoicingPaymentLinkEmailPreviewPage, updateInvoicingPaymentLinkEmailPreview, updateInvoicingPaymentLinkEmailPreviewFailure, addPromotionalCreditsFailure, addPromotionalCreditsSuccess, fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, seedInvoicingCustomerFormDraft, updateInvoicingCustomerDetail, resetPromotionalCreditAction, submitAddPromotionalCredits, updateInvoicingCustomerDetailFailure, updateInvoicingCustomerFormDraft, submitInvoicingCustomerForm, submitInvoicingCustomerFormSuccess, submitInvoicingCustomerFormFailure, resetEditInvoicingCustomerDetailView, initializeInvoicingCustomerAddress, claimInvoicingCustomerBillingAddress, } = editInvoicingCustomerDetailView.actions;
|
|
205
|
+
export const { fetchInvoicingPaymentLinkEmailPreview, fetchInvoicingPaymentLinkEmailPreviewPage, updateInvoicingPaymentLinkEmailPreview, updateInvoicingPaymentLinkEmailPreviewFailure, addPromotionalCreditsFailure, addPromotionalCreditsSuccess, fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, invalidateInvoicingCustomerDetail, seedInvoicingCustomerFormDraft, updateInvoicingCustomerDetail, resetPromotionalCreditAction, submitAddPromotionalCredits, updateInvoicingCustomerDetailFailure, updateInvoicingCustomerFormDraft, submitInvoicingCustomerForm, submitInvoicingCustomerFormSuccess, submitInvoicingCustomerFormFailure, resetEditInvoicingCustomerDetailView, initializeInvoicingCustomerAddress, claimInvoicingCustomerBillingAddress, } = editInvoicingCustomerDetailView.actions;
|
|
202
206
|
export default editInvoicingCustomerDetailView.reducer;
|
package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js
CHANGED
|
@@ -7,6 +7,8 @@ import { apiErrorSnackbarVariables } from '../../../entity/snackbar/snackbarApiE
|
|
|
7
7
|
import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
|
|
8
8
|
import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
|
|
9
9
|
import { resetNewAddressDataInLocalStore } from '../../addressView/addressViewReducer';
|
|
10
|
+
import { invalidateInvoicingCustomerDetail } from '../editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer';
|
|
11
|
+
import { invalidateInvoiceListForCustomer } from '../invoiceList/invoiceListReducer';
|
|
10
12
|
import { addInvoicingSubscriptionToList } from '../invoicingSubscriptionListView/invoicingSubscriptionListViewReducer';
|
|
11
13
|
import { localDataToSaveInvoicingSubscriptionPayload, } from './editInvoicingSubscriptionDetailViewPayload';
|
|
12
14
|
import { submitInvoicingSubscriptionForm, submitInvoicingSubscriptionFormFailure, submitInvoicingSubscriptionFormSuccess, syncInvoicingSubscriptionCoupons, } from './editInvoicingSubscriptionDetailViewReducer';
|
|
@@ -86,7 +88,9 @@ export const saveInvoicingSubscriptionEpic = (actions$, state$, zeniAPI) => acti
|
|
|
86
88
|
resultActions.push(addInvoicingSubscriptionToList({
|
|
87
89
|
id: saved.id,
|
|
88
90
|
status: saved.status,
|
|
89
|
-
})
|
|
91
|
+
}),
|
|
92
|
+
// The service may bill the first invoice on create.
|
|
93
|
+
invalidateInvoicingCustomerDetail({ id: saved.customer_id }), invalidateInvoiceListForCustomer({ customerId: saved.customer_id }));
|
|
90
94
|
}
|
|
91
95
|
resultActions.push(openSnackbar({
|
|
92
96
|
messageSection: 'invoicing_subscription_saved',
|
|
@@ -124,6 +124,13 @@ const invoiceList = createSlice({
|
|
|
124
124
|
draft.kpisFetchState.fetchState = 'Error';
|
|
125
125
|
draft.kpisFetchState.error = action.payload;
|
|
126
126
|
},
|
|
127
|
+
// Counts are fetched under the same customer filter, so they go stale with the tabs.
|
|
128
|
+
invalidateInvoiceListForCustomer(draft, action) {
|
|
129
|
+
if (draft.filters.customerId === action.payload.customerId) {
|
|
130
|
+
draft.invoiceByTab = makeInvoiceByTab();
|
|
131
|
+
draft.countsFetchState = { fetchState: 'Not-Started', error: undefined };
|
|
132
|
+
}
|
|
133
|
+
},
|
|
127
134
|
updateInvoiceListFilters(draft, action) {
|
|
128
135
|
draft.filters = action.payload;
|
|
129
136
|
},
|
|
@@ -166,5 +173,5 @@ const invoiceList = createSlice({
|
|
|
166
173
|
});
|
|
167
174
|
},
|
|
168
175
|
});
|
|
169
|
-
export const { fetchInvoiceList, fetchInvoiceListPage, updateInvoiceList, updateInvoiceListFailure, fetchInvoiceCounts, updateInvoiceCounts, updateInvoiceCountsFailure, fetchInvoiceKPIs, updateInvoiceKPIs, updateInvoiceKPIsFailure, updateInvoiceListFilters, setInvoiceActiveTab, addInvoiceToList, } = invoiceList.actions;
|
|
176
|
+
export const { fetchInvoiceList, fetchInvoiceListPage, updateInvoiceList, updateInvoiceListFailure, fetchInvoiceCounts, updateInvoiceCounts, updateInvoiceCountsFailure, fetchInvoiceKPIs, updateInvoiceKPIs, updateInvoiceKPIsFailure, updateInvoiceListFilters, setInvoiceActiveTab, addInvoiceToList, invalidateInvoiceListForCustomer, } = invoiceList.actions;
|
|
170
177
|
export default invoiceList.reducer;
|
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,
|
|
319
|
+
import { ActualMatchingGroupedAccrual, ActualMatchingKpiSummary, 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,
|
|
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, 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, };
|
|
@@ -5,14 +5,13 @@ import { JEOneTimeAccrual } from '../../../entity/jeSchedules/jeSchedulesSelecto
|
|
|
5
5
|
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
|
-
export type ActualMatchingJournalEntryIds = Pick<JEOneTimeAccrual, 'reversalTransactionId' | 'reversalTransactionIntegrationId' | 'transactionId' | 'transactionIntegrationId'>;
|
|
9
8
|
export type ActualMatchingGroupedAccrual = {
|
|
10
9
|
accrualId: ID;
|
|
11
10
|
estimatedAmount?: Amount;
|
|
12
11
|
jeDebitAccountName?: string;
|
|
13
12
|
memo?: string;
|
|
14
13
|
serviceMonth?: string;
|
|
15
|
-
}
|
|
14
|
+
};
|
|
16
15
|
export interface ActualMatchingRow extends JEOneTimeAccrual {
|
|
17
16
|
accruedAmount: Amount;
|
|
18
17
|
actualAmount: Amount;
|
|
@@ -20,8 +20,8 @@ exports.getCloseMatchAfterUndoMatchId = getCloseMatchAfterUndoMatchId;
|
|
|
20
20
|
exports.getCloseMatchAfterIgnoreMatchId = getCloseMatchAfterIgnoreMatchId;
|
|
21
21
|
exports.getActualMatchingMatchModalConfirmStatus = getActualMatchingMatchModalConfirmStatus;
|
|
22
22
|
exports.getExpenseAutomationActualMatchingView = getExpenseAutomationActualMatchingView;
|
|
23
|
-
const toolkit_1 = require("@reduxjs/toolkit");
|
|
24
23
|
const orderBy_1 = __importDefault(require("lodash/orderBy"));
|
|
24
|
+
const toolkit_1 = require("@reduxjs/toolkit");
|
|
25
25
|
const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
26
26
|
const actualMatchingSelector_1 = require("../../../entity/actualMatching/actualMatchingSelector");
|
|
27
27
|
const jeScheduleHelper_1 = require("../../../entity/jeSchedules/jeScheduleHelper");
|
|
@@ -116,11 +116,7 @@ function collectGroupedMembers(members) {
|
|
|
116
116
|
estimatedAmount: member.estimatedAmount,
|
|
117
117
|
jeDebitAccountName: member.jeDebitAccountName,
|
|
118
118
|
memo: member.memo,
|
|
119
|
-
reversalTransactionId: member.reversalTransactionId,
|
|
120
|
-
reversalTransactionIntegrationId: member.reversalTransactionIntegrationId,
|
|
121
119
|
serviceMonth: member.serviceMonth,
|
|
122
|
-
transactionId: member.transactionId,
|
|
123
|
-
transactionIntegrationId: member.transactionIntegrationId,
|
|
124
120
|
}));
|
|
125
121
|
}
|
|
126
122
|
function collectLeftoverMembers(leftovers) {
|
|
@@ -338,22 +334,18 @@ function toActualMatchingMatchView(match) {
|
|
|
338
334
|
: match.leftovers.map(toMatchModalAccrual),
|
|
339
335
|
};
|
|
340
336
|
}
|
|
337
|
+
const EMPTY_ACTUAL_MATCHING_ROWS = [];
|
|
341
338
|
const matchViewSelectorById = new Map();
|
|
342
339
|
function getExpenseAutomationActualMatchingMatchView(state, matchId) {
|
|
343
340
|
let selector = matchViewSelectorById.get(matchId);
|
|
344
341
|
if (selector == null) {
|
|
345
342
|
selector = (0, toolkit_1.createSelector)([
|
|
346
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
347
|
-
.detailFetchStateByMatchId[matchId] ?? NOT_STARTED,
|
|
343
|
+
(root) => root.expenseAutomationActualMatchingViewState.detailFetchStateByMatchId[matchId] ?? NOT_STARTED,
|
|
348
344
|
(root) => root.expenseAutomationActualMatchingViewState.ignoreStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
349
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
350
|
-
|
|
351
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
352
|
-
|
|
353
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
354
|
-
.detailRefreshStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
355
|
-
(root) => root.expenseAutomationActualMatchingViewState
|
|
356
|
-
.undoReversalStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
345
|
+
(root) => root.expenseAutomationActualMatchingViewState.lastMatchResultsByMatchId?.[matchId],
|
|
346
|
+
(root) => root.expenseAutomationActualMatchingViewState.lastUndoResultsByMatchId?.[matchId],
|
|
347
|
+
(root) => root.expenseAutomationActualMatchingViewState.detailRefreshStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
348
|
+
(root) => root.expenseAutomationActualMatchingViewState.undoReversalStatusByMatchId[matchId] ?? NOT_STARTED,
|
|
357
349
|
(root) => (0, actualMatchingSelector_1.getActualMatchingMatchById)(root.actualMatchingState, matchId),
|
|
358
350
|
], (detailFetchState, ignoreStatus, lastMatchResults, lastUndoResults, refreshStatus, undoReversalStatus, match) => ({
|
|
359
351
|
detailFetchState,
|
|
@@ -383,8 +375,7 @@ function getActualMatchingMatchModalConfirmStatus(state, matchId) {
|
|
|
383
375
|
if (matchId != null && matchId !== '') {
|
|
384
376
|
return (state.expenseAutomationActualMatchingViewState.confirmStatusByMatchId[matchId] ?? NOT_STARTED);
|
|
385
377
|
}
|
|
386
|
-
return state.expenseAutomationActualMatchingViewState.matchModal
|
|
387
|
-
.confirmStatus;
|
|
378
|
+
return state.expenseAutomationActualMatchingViewState.matchModal.confirmStatus;
|
|
388
379
|
}
|
|
389
380
|
function getExpenseAutomationActualMatchingView(state) {
|
|
390
381
|
const { expenseAutomationActualMatchingViewState } = state;
|
|
@@ -398,8 +389,14 @@ function getExpenseAutomationActualMatchingView(state) {
|
|
|
398
389
|
.filter((match) => match.members.length > 0)
|
|
399
390
|
.map(toActualMatchingRow);
|
|
400
391
|
const rows = allRows.filter((row) => matchesSearch(row, uiState.searchString));
|
|
401
|
-
const
|
|
402
|
-
const
|
|
392
|
+
const includePendingReview = uiState.statusFilter !== 'reversed';
|
|
393
|
+
const includeReversed = uiState.statusFilter !== 'pending_review';
|
|
394
|
+
const reversed = includeReversed
|
|
395
|
+
? sortActualMatchingRows(rows.filter((row) => isReversedMatchKind(row.kind)), uiState)
|
|
396
|
+
: EMPTY_ACTUAL_MATCHING_ROWS;
|
|
397
|
+
const pendingReview = includePendingReview
|
|
398
|
+
? sortActualMatchingRows(rows.filter((row) => row.kind === 'pending_review'), uiState)
|
|
399
|
+
: EMPTY_ACTUAL_MATCHING_ROWS;
|
|
403
400
|
const kpiSummary = buildActualMatchingKpiSummary(allRows, getTenantDisplayCurrency(state)?.currencyCode);
|
|
404
401
|
const searchedAccruals = matchModal.accrualSearch.results
|
|
405
402
|
.map((key) => (0, jeSchedulesSelector_1.getJEOneTimeAccrualByKey)(key, state.jeSchedulesState))
|
|
@@ -21,8 +21,9 @@ export interface ActualMatchingViewUIState {
|
|
|
21
21
|
sortKey: ActualMatchingSortKey;
|
|
22
22
|
sortOrder: SortOrder;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* List-only filter. `all` shows both groups; `pending_review` / `reversed`
|
|
25
|
+
* empty the other group (`reversed` includes auto and manual). KPI summary
|
|
26
|
+
* stays on the unfiltered period.
|
|
26
27
|
*/
|
|
27
28
|
statusFilter: ActualMatchingStatusFilter;
|
|
28
29
|
}
|
|
@@ -5,7 +5,8 @@ import { updateInvoices } from '../../../entity/invoicing/invoice/invoiceReducer
|
|
|
5
5
|
import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
|
|
6
6
|
import { RootState } from '../../../rootStateTypes';
|
|
7
7
|
import { ZeniAPI } from '../../../zeniAPI';
|
|
8
|
-
import {
|
|
8
|
+
import { invalidateInvoicingCustomerDetail } from '../editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer';
|
|
9
|
+
import { addInvoiceToList, invalidateInvoiceListForCustomer } from '../invoiceList/invoiceListReducer';
|
|
9
10
|
import { createInvoice, createInvoiceFailure, createInvoiceSuccess } from './createInvoiceReducer';
|
|
10
|
-
export type ActionType = ReturnType<typeof createInvoice> | ReturnType<typeof createInvoiceSuccess> | ReturnType<typeof createInvoiceFailure> | ReturnType<typeof updateAddresses> | ReturnType<typeof updateInvoices> | ReturnType<typeof addInvoiceToList> | ReturnType<typeof openSnackbar>;
|
|
11
|
+
export type ActionType = ReturnType<typeof createInvoice> | ReturnType<typeof createInvoiceSuccess> | ReturnType<typeof createInvoiceFailure> | ReturnType<typeof updateAddresses> | ReturnType<typeof updateInvoices> | ReturnType<typeof addInvoiceToList> | ReturnType<typeof invalidateInvoicingCustomerDetail> | ReturnType<typeof invalidateInvoiceListForCustomer> | ReturnType<typeof openSnackbar>;
|
|
11
12
|
export declare const createInvoiceEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
|
@@ -9,6 +9,7 @@ const invoiceReducer_1 = require("../../../entity/invoicing/invoice/invoiceReduc
|
|
|
9
9
|
const snackbarApiError_1 = require("../../../entity/snackbar/snackbarApiError");
|
|
10
10
|
const snackbarReducer_1 = require("../../../entity/snackbar/snackbarReducer");
|
|
11
11
|
const responsePayload_1 = require("../../../responsePayload");
|
|
12
|
+
const editInvoicingCustomerDetailViewReducer_1 = require("../editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer");
|
|
12
13
|
const invoiceListReducer_1 = require("../invoiceList/invoiceListReducer");
|
|
13
14
|
const createInvoiceReducer_1 = require("./createInvoiceReducer");
|
|
14
15
|
const createInvoiceEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(createInvoiceReducer_1.createInvoice.match), (0, operators_1.mergeMap)((action) => {
|
|
@@ -26,6 +27,13 @@ const createInvoiceEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, oper
|
|
|
26
27
|
id: response.data.id,
|
|
27
28
|
status: response.data.status,
|
|
28
29
|
}),
|
|
30
|
+
// The customer's page caches their invoices and totals.
|
|
31
|
+
(0, editInvoicingCustomerDetailViewReducer_1.invalidateInvoicingCustomerDetail)({
|
|
32
|
+
id: response.data.customer_id,
|
|
33
|
+
}),
|
|
34
|
+
(0, invoiceListReducer_1.invalidateInvoiceListForCustomer)({
|
|
35
|
+
customerId: response.data.customer_id,
|
|
36
|
+
}),
|
|
29
37
|
(0, createInvoiceReducer_1.createInvoiceSuccess)({ invoiceId: response.data.id }),
|
|
30
38
|
(0, snackbarReducer_1.openSnackbar)({
|
|
31
39
|
messageSection: 'invoicing_invoice_saved',
|
|
@@ -44,7 +44,9 @@ export declare const fetchInvoicingPaymentLinkEmailPreview: import("@reduxjs/too
|
|
|
44
44
|
}], {
|
|
45
45
|
cacheOverride: boolean;
|
|
46
46
|
id: string;
|
|
47
|
-
}, "editInvoicingCustomerDetailView/fetchInvoicingCustomerDetailPage", never, never>,
|
|
47
|
+
}, "editInvoicingCustomerDetailView/fetchInvoicingCustomerDetailPage", never, never>, invalidateInvoicingCustomerDetail: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
48
|
+
id: ID;
|
|
49
|
+
}, "editInvoicingCustomerDetailView/invalidateInvoicingCustomerDetail">, seedInvoicingCustomerFormDraft: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
48
50
|
id: ID;
|
|
49
51
|
localData: InvoicingCustomerFormLocalData;
|
|
50
52
|
}, "editInvoicingCustomerDetailView/seedInvoicingCustomerFormDraft">, updateInvoicingCustomerDetail: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.claimInvoicingCustomerBillingAddress = exports.initializeInvoicingCustomerAddress = exports.resetEditInvoicingCustomerDetailView = exports.submitInvoicingCustomerFormFailure = exports.submitInvoicingCustomerFormSuccess = exports.submitInvoicingCustomerForm = exports.updateInvoicingCustomerFormDraft = exports.updateInvoicingCustomerDetailFailure = exports.submitAddPromotionalCredits = exports.resetPromotionalCreditAction = exports.updateInvoicingCustomerDetail = exports.seedInvoicingCustomerFormDraft = exports.fetchInvoicingCustomerDetailPage = exports.fetchInvoicingCustomerDetail = exports.addPromotionalCreditsSuccess = exports.addPromotionalCreditsFailure = exports.updateInvoicingPaymentLinkEmailPreviewFailure = exports.updateInvoicingPaymentLinkEmailPreview = exports.fetchInvoicingPaymentLinkEmailPreviewPage = exports.fetchInvoicingPaymentLinkEmailPreview = exports.initialState = void 0;
|
|
4
|
+
exports.claimInvoicingCustomerBillingAddress = exports.initializeInvoicingCustomerAddress = exports.resetEditInvoicingCustomerDetailView = exports.submitInvoicingCustomerFormFailure = exports.submitInvoicingCustomerFormSuccess = exports.submitInvoicingCustomerForm = exports.updateInvoicingCustomerFormDraft = exports.updateInvoicingCustomerDetailFailure = exports.submitAddPromotionalCredits = exports.resetPromotionalCreditAction = exports.updateInvoicingCustomerDetail = exports.seedInvoicingCustomerFormDraft = exports.invalidateInvoicingCustomerDetail = exports.fetchInvoicingCustomerDetailPage = exports.fetchInvoicingCustomerDetail = exports.addPromotionalCreditsSuccess = exports.addPromotionalCreditsFailure = exports.updateInvoicingPaymentLinkEmailPreviewFailure = exports.updateInvoicingPaymentLinkEmailPreview = exports.fetchInvoicingPaymentLinkEmailPreviewPage = exports.fetchInvoicingPaymentLinkEmailPreview = exports.initialState = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
const rootActions_1 = require("../../../rootActions");
|
|
7
7
|
const invoicingFormDraft_1 = require("../invoicingFormDraft");
|
|
@@ -99,6 +99,10 @@ const editInvoicingCustomerDetailView = (0, toolkit_1.createSlice)({
|
|
|
99
99
|
error: undefined,
|
|
100
100
|
};
|
|
101
101
|
},
|
|
102
|
+
// Makes the page epic refetch a record that changed server-side (e.g. a new subscription).
|
|
103
|
+
invalidateInvoicingCustomerDetail(draft, action) {
|
|
104
|
+
delete draft.recordStateById[action.payload.id];
|
|
105
|
+
},
|
|
102
106
|
fetchInvoicingCustomerDetail(draft, action) {
|
|
103
107
|
draft.recordStateById[action.payload.id] = {
|
|
104
108
|
fetchState: 'In-Progress',
|
|
@@ -202,5 +206,5 @@ const editInvoicingCustomerDetailView = (0, toolkit_1.createSlice)({
|
|
|
202
206
|
});
|
|
203
207
|
},
|
|
204
208
|
});
|
|
205
|
-
_a = editInvoicingCustomerDetailView.actions, exports.fetchInvoicingPaymentLinkEmailPreview = _a.fetchInvoicingPaymentLinkEmailPreview, exports.fetchInvoicingPaymentLinkEmailPreviewPage = _a.fetchInvoicingPaymentLinkEmailPreviewPage, exports.updateInvoicingPaymentLinkEmailPreview = _a.updateInvoicingPaymentLinkEmailPreview, exports.updateInvoicingPaymentLinkEmailPreviewFailure = _a.updateInvoicingPaymentLinkEmailPreviewFailure, exports.addPromotionalCreditsFailure = _a.addPromotionalCreditsFailure, exports.addPromotionalCreditsSuccess = _a.addPromotionalCreditsSuccess, exports.fetchInvoicingCustomerDetail = _a.fetchInvoicingCustomerDetail, exports.fetchInvoicingCustomerDetailPage = _a.fetchInvoicingCustomerDetailPage, exports.seedInvoicingCustomerFormDraft = _a.seedInvoicingCustomerFormDraft, exports.updateInvoicingCustomerDetail = _a.updateInvoicingCustomerDetail, exports.resetPromotionalCreditAction = _a.resetPromotionalCreditAction, exports.submitAddPromotionalCredits = _a.submitAddPromotionalCredits, exports.updateInvoicingCustomerDetailFailure = _a.updateInvoicingCustomerDetailFailure, exports.updateInvoicingCustomerFormDraft = _a.updateInvoicingCustomerFormDraft, exports.submitInvoicingCustomerForm = _a.submitInvoicingCustomerForm, exports.submitInvoicingCustomerFormSuccess = _a.submitInvoicingCustomerFormSuccess, exports.submitInvoicingCustomerFormFailure = _a.submitInvoicingCustomerFormFailure, exports.resetEditInvoicingCustomerDetailView = _a.resetEditInvoicingCustomerDetailView, exports.initializeInvoicingCustomerAddress = _a.initializeInvoicingCustomerAddress, exports.claimInvoicingCustomerBillingAddress = _a.claimInvoicingCustomerBillingAddress;
|
|
209
|
+
_a = editInvoicingCustomerDetailView.actions, exports.fetchInvoicingPaymentLinkEmailPreview = _a.fetchInvoicingPaymentLinkEmailPreview, exports.fetchInvoicingPaymentLinkEmailPreviewPage = _a.fetchInvoicingPaymentLinkEmailPreviewPage, exports.updateInvoicingPaymentLinkEmailPreview = _a.updateInvoicingPaymentLinkEmailPreview, exports.updateInvoicingPaymentLinkEmailPreviewFailure = _a.updateInvoicingPaymentLinkEmailPreviewFailure, exports.addPromotionalCreditsFailure = _a.addPromotionalCreditsFailure, exports.addPromotionalCreditsSuccess = _a.addPromotionalCreditsSuccess, exports.fetchInvoicingCustomerDetail = _a.fetchInvoicingCustomerDetail, exports.fetchInvoicingCustomerDetailPage = _a.fetchInvoicingCustomerDetailPage, exports.invalidateInvoicingCustomerDetail = _a.invalidateInvoicingCustomerDetail, exports.seedInvoicingCustomerFormDraft = _a.seedInvoicingCustomerFormDraft, exports.updateInvoicingCustomerDetail = _a.updateInvoicingCustomerDetail, exports.resetPromotionalCreditAction = _a.resetPromotionalCreditAction, exports.submitAddPromotionalCredits = _a.submitAddPromotionalCredits, exports.updateInvoicingCustomerDetailFailure = _a.updateInvoicingCustomerDetailFailure, exports.updateInvoicingCustomerFormDraft = _a.updateInvoicingCustomerFormDraft, exports.submitInvoicingCustomerForm = _a.submitInvoicingCustomerForm, exports.submitInvoicingCustomerFormSuccess = _a.submitInvoicingCustomerFormSuccess, exports.submitInvoicingCustomerFormFailure = _a.submitInvoicingCustomerFormFailure, exports.resetEditInvoicingCustomerDetailView = _a.resetEditInvoicingCustomerDetailView, exports.initializeInvoicingCustomerAddress = _a.initializeInvoicingCustomerAddress, exports.claimInvoicingCustomerBillingAddress = _a.claimInvoicingCustomerBillingAddress;
|
|
206
210
|
exports.default = editInvoicingCustomerDetailView.reducer;
|
package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
|
|
|
6
6
|
import { RootState } from '../../../rootStateTypes';
|
|
7
7
|
import { ZeniAPI } from '../../../zeniAPI';
|
|
8
8
|
import { resetNewAddressDataInLocalStore } from '../../addressView/addressViewReducer';
|
|
9
|
+
import { invalidateInvoicingCustomerDetail } from '../editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer';
|
|
10
|
+
import { invalidateInvoiceListForCustomer } from '../invoiceList/invoiceListReducer';
|
|
9
11
|
import { addInvoicingSubscriptionToList } from '../invoicingSubscriptionListView/invoicingSubscriptionListViewReducer';
|
|
10
12
|
import { submitInvoicingSubscriptionForm, submitInvoicingSubscriptionFormFailure, submitInvoicingSubscriptionFormSuccess, syncInvoicingSubscriptionCoupons } from './editInvoicingSubscriptionDetailViewReducer';
|
|
11
|
-
export type ActionType = ReturnType<typeof submitInvoicingSubscriptionForm> | ReturnType<typeof submitInvoicingSubscriptionFormSuccess> | ReturnType<typeof submitInvoicingSubscriptionFormFailure> | ReturnType<typeof syncInvoicingSubscriptionCoupons> | ReturnType<typeof resetNewAddressDataInLocalStore> | ReturnType<typeof updateAddresses> | ReturnType<typeof updateInvoicingSubscriptions> | ReturnType<typeof addInvoicingSubscriptionToList> | ReturnType<typeof openSnackbar>;
|
|
13
|
+
export type ActionType = ReturnType<typeof submitInvoicingSubscriptionForm> | ReturnType<typeof submitInvoicingSubscriptionFormSuccess> | ReturnType<typeof submitInvoicingSubscriptionFormFailure> | ReturnType<typeof syncInvoicingSubscriptionCoupons> | ReturnType<typeof resetNewAddressDataInLocalStore> | ReturnType<typeof updateAddresses> | ReturnType<typeof updateInvoicingSubscriptions> | ReturnType<typeof addInvoicingSubscriptionToList> | ReturnType<typeof invalidateInvoicingCustomerDetail> | ReturnType<typeof invalidateInvoiceListForCustomer> | ReturnType<typeof openSnackbar>;
|
|
12
14
|
export declare const saveInvoicingSubscriptionEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js
CHANGED
|
@@ -10,6 +10,8 @@ const snackbarApiError_1 = require("../../../entity/snackbar/snackbarApiError");
|
|
|
10
10
|
const snackbarReducer_1 = require("../../../entity/snackbar/snackbarReducer");
|
|
11
11
|
const responsePayload_1 = require("../../../responsePayload");
|
|
12
12
|
const addressViewReducer_1 = require("../../addressView/addressViewReducer");
|
|
13
|
+
const editInvoicingCustomerDetailViewReducer_1 = require("../editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer");
|
|
14
|
+
const invoiceListReducer_1 = require("../invoiceList/invoiceListReducer");
|
|
13
15
|
const invoicingSubscriptionListViewReducer_1 = require("../invoicingSubscriptionListView/invoicingSubscriptionListViewReducer");
|
|
14
16
|
const editInvoicingSubscriptionDetailViewPayload_1 = require("./editInvoicingSubscriptionDetailViewPayload");
|
|
15
17
|
const editInvoicingSubscriptionDetailViewReducer_1 = require("./editInvoicingSubscriptionDetailViewReducer");
|
|
@@ -89,7 +91,9 @@ const saveInvoicingSubscriptionEpic = (actions$, state$, zeniAPI) => actions$.pi
|
|
|
89
91
|
resultActions.push((0, invoicingSubscriptionListViewReducer_1.addInvoicingSubscriptionToList)({
|
|
90
92
|
id: saved.id,
|
|
91
93
|
status: saved.status,
|
|
92
|
-
})
|
|
94
|
+
}),
|
|
95
|
+
// The service may bill the first invoice on create.
|
|
96
|
+
(0, editInvoicingCustomerDetailViewReducer_1.invalidateInvoicingCustomerDetail)({ id: saved.customer_id }), (0, invoiceListReducer_1.invalidateInvoiceListForCustomer)({ customerId: saved.customer_id }));
|
|
93
97
|
}
|
|
94
98
|
resultActions.push((0, snackbarReducer_1.openSnackbar)({
|
|
95
99
|
messageSection: 'invoicing_subscription_saved',
|
|
@@ -45,6 +45,8 @@ export declare const fetchInvoiceList: import("@reduxjs/toolkit").ActionCreatorW
|
|
|
45
45
|
}, "invoicingInvoiceList/updateInvoiceList">, updateInvoiceListFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingInvoiceList/updateInvoiceListFailure">, fetchInvoiceCounts: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingInvoiceList/fetchInvoiceCounts">, updateInvoiceCounts: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingListCounts, "invoicingInvoiceList/updateInvoiceCounts">, updateInvoiceCountsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingInvoiceList/updateInvoiceCountsFailure">, fetchInvoiceKPIs: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingInvoiceList/fetchInvoiceKPIs">, updateInvoiceKPIs: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingInvoiceKPIs, "invoicingInvoiceList/updateInvoiceKPIs">, updateInvoiceKPIsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingInvoiceList/updateInvoiceKPIsFailure">, updateInvoiceListFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoiceListFilters, "invoicingInvoiceList/updateInvoiceListFilters">, setInvoiceActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"paid" | "voided" | "partially_paid" | "payment_due" | "not_paid" | "all", "invoicingInvoiceList/setInvoiceActiveTab">, addInvoiceToList: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
46
46
|
id: ID;
|
|
47
47
|
status: InvoicingInvoiceStatus;
|
|
48
|
-
}, "invoicingInvoiceList/addInvoiceToList"
|
|
48
|
+
}, "invoicingInvoiceList/addInvoiceToList">, invalidateInvoiceListForCustomer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
49
|
+
customerId: ID;
|
|
50
|
+
}, "invoicingInvoiceList/invalidateInvoiceListForCustomer">;
|
|
49
51
|
declare const _default: import("redux").Reducer<InvoiceListState>;
|
|
50
52
|
export default _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.addInvoiceToList = exports.setInvoiceActiveTab = exports.updateInvoiceListFilters = exports.updateInvoiceKPIsFailure = exports.updateInvoiceKPIs = exports.fetchInvoiceKPIs = exports.updateInvoiceCountsFailure = exports.updateInvoiceCounts = exports.fetchInvoiceCounts = exports.updateInvoiceListFailure = exports.updateInvoiceList = exports.fetchInvoiceListPage = exports.fetchInvoiceList = exports.initialState = exports.sameInvoiceListQuery = void 0;
|
|
4
|
+
exports.invalidateInvoiceListForCustomer = exports.addInvoiceToList = exports.setInvoiceActiveTab = exports.updateInvoiceListFilters = exports.updateInvoiceKPIsFailure = exports.updateInvoiceKPIs = exports.fetchInvoiceKPIs = exports.updateInvoiceCountsFailure = exports.updateInvoiceCounts = exports.fetchInvoiceCounts = exports.updateInvoiceListFailure = exports.updateInvoiceList = exports.fetchInvoiceListPage = exports.fetchInvoiceList = exports.initialState = exports.sameInvoiceListQuery = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
const rootActions_1 = require("../../../rootActions");
|
|
7
7
|
const invoiceListState_1 = require("./invoiceListState");
|
|
@@ -129,6 +129,13 @@ const invoiceList = (0, toolkit_1.createSlice)({
|
|
|
129
129
|
draft.kpisFetchState.fetchState = 'Error';
|
|
130
130
|
draft.kpisFetchState.error = action.payload;
|
|
131
131
|
},
|
|
132
|
+
// Counts are fetched under the same customer filter, so they go stale with the tabs.
|
|
133
|
+
invalidateInvoiceListForCustomer(draft, action) {
|
|
134
|
+
if (draft.filters.customerId === action.payload.customerId) {
|
|
135
|
+
draft.invoiceByTab = (0, invoiceListState_1.makeInvoiceByTab)();
|
|
136
|
+
draft.countsFetchState = { fetchState: 'Not-Started', error: undefined };
|
|
137
|
+
}
|
|
138
|
+
},
|
|
132
139
|
updateInvoiceListFilters(draft, action) {
|
|
133
140
|
draft.filters = action.payload;
|
|
134
141
|
},
|
|
@@ -171,5 +178,5 @@ const invoiceList = (0, toolkit_1.createSlice)({
|
|
|
171
178
|
});
|
|
172
179
|
},
|
|
173
180
|
});
|
|
174
|
-
_a = invoiceList.actions, exports.fetchInvoiceList = _a.fetchInvoiceList, exports.fetchInvoiceListPage = _a.fetchInvoiceListPage, exports.updateInvoiceList = _a.updateInvoiceList, exports.updateInvoiceListFailure = _a.updateInvoiceListFailure, exports.fetchInvoiceCounts = _a.fetchInvoiceCounts, exports.updateInvoiceCounts = _a.updateInvoiceCounts, exports.updateInvoiceCountsFailure = _a.updateInvoiceCountsFailure, exports.fetchInvoiceKPIs = _a.fetchInvoiceKPIs, exports.updateInvoiceKPIs = _a.updateInvoiceKPIs, exports.updateInvoiceKPIsFailure = _a.updateInvoiceKPIsFailure, exports.updateInvoiceListFilters = _a.updateInvoiceListFilters, exports.setInvoiceActiveTab = _a.setInvoiceActiveTab, exports.addInvoiceToList = _a.addInvoiceToList;
|
|
181
|
+
_a = invoiceList.actions, exports.fetchInvoiceList = _a.fetchInvoiceList, exports.fetchInvoiceListPage = _a.fetchInvoiceListPage, exports.updateInvoiceList = _a.updateInvoiceList, exports.updateInvoiceListFailure = _a.updateInvoiceListFailure, exports.fetchInvoiceCounts = _a.fetchInvoiceCounts, exports.updateInvoiceCounts = _a.updateInvoiceCounts, exports.updateInvoiceCountsFailure = _a.updateInvoiceCountsFailure, exports.fetchInvoiceKPIs = _a.fetchInvoiceKPIs, exports.updateInvoiceKPIs = _a.updateInvoiceKPIs, exports.updateInvoiceKPIsFailure = _a.updateInvoiceKPIsFailure, exports.updateInvoiceListFilters = _a.updateInvoiceListFilters, exports.setInvoiceActiveTab = _a.setInvoiceActiveTab, exports.addInvoiceToList = _a.addInvoiceToList, exports.invalidateInvoiceListForCustomer = _a.invalidateInvoiceListForCustomer;
|
|
175
182
|
exports.default = invoiceList.reducer;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.67",
|
|
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",
|