@zeniai/client-epic-state 5.1.68 → 5.1.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.
- package/lib/esm/index.js +7 -7
- package/lib/esm/view/invoicing/couponView/couponViewEpics.js +0 -3
- package/lib/esm/view/invoicing/couponView/couponViewReducer.js +7 -1
- package/lib/esm/view/invoicing/couponView/couponViewSelector.js +27 -14
- package/lib/esm/view/invoicing/invoiceList/fetchInvoiceListEpic.js +7 -5
- package/lib/esm/view/invoicing/invoiceList/fetchInvoiceListPageEpic.js +2 -1
- package/lib/esm/view/invoicing/invoiceList/invoiceListReducer.js +62 -36
- package/lib/esm/view/invoicing/invoiceList/invoiceListSelector.js +19 -15
- package/lib/esm/view/invoicing/invoiceList/invoiceListState.js +10 -0
- package/lib/esm/view/invoicing/invoicingCreditNoteListView/epics/fetchInvoicingCreditNoteListEpic.js +0 -3
- package/lib/esm/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewReducer.js +7 -1
- package/lib/esm/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewSelector.js +23 -13
- package/lib/esm/view/invoicing/invoicingCustomerDetailView/fetchInvoicingCustomerDetailPageEpic.js +3 -2
- package/lib/esm/view/invoicing/invoicingCustomerDetailView/invoicingCustomerDetailViewSelector.js +1 -1
- package/lib/esm/view/invoicing/invoicingCustomerListView/epics/fetchInvoicingCustomerListEpic.js +0 -3
- package/lib/esm/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewReducer.js +7 -1
- package/lib/esm/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector.js +25 -12
- package/lib/esm/view/invoicing/invoicingDunningCaseListView/epics/fetchInvoicingDunningCaseListEpic.js +0 -3
- package/lib/esm/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer.js +7 -1
- package/lib/esm/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector.js +23 -13
- package/lib/esm/view/invoicing/invoicingSubscriptionListView/epics/fetchInvoicingSubscriptionListEpic.js +0 -3
- package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewReducer.js +7 -1
- package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +22 -12
- package/lib/esm/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListEpic.js +7 -5
- package/lib/esm/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListPageEpic.js +2 -1
- package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.js +56 -25
- package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.js +15 -11
- package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.js +10 -0
- package/lib/esm/view/spendManagement/billPay/billDetailView/billDetailViewSelector.js +8 -2
- package/lib/esm/view/spendManagement/helpers.js +12 -0
- package/lib/esm/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.js +0 -12
- package/lib/esm/view/spendManagement/reimbursement/remiDetailView/remiDetailViewSelector.js +4 -2
- package/lib/index.d.ts +7 -7
- package/lib/index.js +15 -8
- package/lib/view/invoicing/couponView/couponViewEpics.js +0 -3
- package/lib/view/invoicing/couponView/couponViewReducer.d.ts +1 -1
- package/lib/view/invoicing/couponView/couponViewReducer.js +8 -2
- package/lib/view/invoicing/couponView/couponViewSelector.d.ts +1 -0
- package/lib/view/invoicing/couponView/couponViewSelector.js +27 -14
- package/lib/view/invoicing/couponView/couponViewState.d.ts +2 -1
- package/lib/view/invoicing/invoiceList/fetchInvoiceListEpic.d.ts +1 -1
- package/lib/view/invoicing/invoiceList/fetchInvoiceListEpic.js +7 -5
- package/lib/view/invoicing/invoiceList/fetchInvoiceListPageEpic.js +2 -1
- package/lib/view/invoicing/invoiceList/invoiceListReducer.d.ts +5 -4
- package/lib/view/invoicing/invoiceList/invoiceListReducer.js +63 -37
- package/lib/view/invoicing/invoiceList/invoiceListSelector.d.ts +1 -0
- package/lib/view/invoicing/invoiceList/invoiceListSelector.js +19 -15
- package/lib/view/invoicing/invoiceList/invoiceListState.d.ts +21 -7
- package/lib/view/invoicing/invoiceList/invoiceListState.js +13 -1
- package/lib/view/invoicing/invoicingCreditNoteListView/epics/fetchInvoicingCreditNoteListEpic.js +0 -3
- package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewReducer.d.ts +1 -1
- package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewReducer.js +8 -2
- package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewSelector.d.ts +1 -0
- package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewSelector.js +23 -13
- package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewState.d.ts +2 -1
- package/lib/view/invoicing/invoicingCustomerDetailView/fetchInvoicingCustomerDetailPageEpic.js +3 -2
- package/lib/view/invoicing/invoicingCustomerDetailView/invoicingCustomerDetailViewSelector.js +1 -1
- package/lib/view/invoicing/invoicingCustomerListView/epics/fetchInvoicingCustomerListEpic.js +0 -3
- package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewReducer.d.ts +1 -1
- package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewReducer.js +8 -2
- package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector.d.ts +1 -0
- package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector.js +25 -12
- package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState.d.ts +2 -1
- package/lib/view/invoicing/invoicingDunningCaseListView/epics/fetchInvoicingDunningCaseListEpic.js +0 -3
- package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer.d.ts +1 -1
- package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer.js +8 -2
- package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector.d.ts +1 -0
- package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector.js +23 -13
- package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState.d.ts +2 -1
- package/lib/view/invoicing/invoicingSubscriptionListView/epics/fetchInvoicingSubscriptionListEpic.js +0 -3
- package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewReducer.d.ts +1 -1
- package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewReducer.js +8 -2
- package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.d.ts +1 -0
- package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +22 -12
- package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.d.ts +3 -1
- package/lib/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListEpic.d.ts +1 -1
- package/lib/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListEpic.js +7 -5
- package/lib/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListPageEpic.js +2 -1
- package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.d.ts +1 -1
- package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.js +57 -26
- package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.d.ts +1 -0
- package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.js +15 -11
- package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.d.ts +18 -4
- package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.js +13 -1
- package/lib/view/spendManagement/billPay/billDetailView/billDetailViewSelector.d.ts +1 -0
- package/lib/view/spendManagement/billPay/billDetailView/billDetailViewSelector.js +7 -1
- package/lib/view/spendManagement/helpers.d.ts +1 -0
- package/lib/view/spendManagement/helpers.js +14 -1
- package/lib/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.d.ts +1 -2
- package/lib/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.js +0 -12
- package/lib/view/spendManagement/reimbursement/remiDetailView/remiDetailViewSelector.d.ts +1 -0
- package/lib/view/spendManagement/reimbursement/remiDetailView/remiDetailViewSelector.js +3 -1
- package/package.json +1 -1
package/lib/esm/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createSlice } from '@reduxjs/toolkit';
|
|
|
2
2
|
export const initialState = {
|
|
3
3
|
fetchState: 'Not-Started',
|
|
4
4
|
error: undefined,
|
|
5
|
+
activeTab: 'all',
|
|
5
6
|
ids: [],
|
|
6
7
|
nextCursor: null,
|
|
7
8
|
filters: {},
|
|
@@ -80,10 +81,15 @@ const invoicingDunningCaseListView = createSlice({
|
|
|
80
81
|
updateInvoicingDunningCaseFilters(draft, action) {
|
|
81
82
|
draft.filters = action.payload;
|
|
82
83
|
},
|
|
84
|
+
// Select a status tab. The list API ignores `status` (returns all statuses),
|
|
85
|
+
// so the selector filters rows to this tab client-side — no refetch needed.
|
|
86
|
+
setInvoicingDunningCaseActiveTab(draft, action) {
|
|
87
|
+
draft.activeTab = action.payload;
|
|
88
|
+
},
|
|
83
89
|
clearInvoicingDunningCaseListView(draft) {
|
|
84
90
|
Object.assign(draft, initialState);
|
|
85
91
|
},
|
|
86
92
|
},
|
|
87
93
|
});
|
|
88
|
-
export const { fetchInvoicingDunningCaseList, fetchInvoicingDunningCaseListPage, updateInvoicingDunningCaseList, updateInvoicingDunningCaseListFailure, fetchInvoicingDunningCaseCounts, updateInvoicingDunningCaseCounts, updateInvoicingDunningCaseCountsFailure, updateInvoicingDunningCaseFilters, clearInvoicingDunningCaseListView, } = invoicingDunningCaseListView.actions;
|
|
94
|
+
export const { fetchInvoicingDunningCaseList, fetchInvoicingDunningCaseListPage, updateInvoicingDunningCaseList, updateInvoicingDunningCaseListFailure, fetchInvoicingDunningCaseCounts, updateInvoicingDunningCaseCounts, updateInvoicingDunningCaseCountsFailure, updateInvoicingDunningCaseFilters, setInvoicingDunningCaseActiveTab, clearInvoicingDunningCaseListView, } = invoicingDunningCaseListView.actions;
|
|
89
95
|
export default invoicingDunningCaseListView.reducer;
|
package/lib/esm/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector.js
CHANGED
|
@@ -6,16 +6,26 @@ import { INVOICING_DUNNING_CASE_COLUMNS, INVOICING_DUNNING_CASE_TABS, } from './
|
|
|
6
6
|
* object) keep referential identity until the dunning-case entity slice or the
|
|
7
7
|
* list-view slice actually change.
|
|
8
8
|
*/
|
|
9
|
-
export const getInvoicingDunningCaseListView = createSelector((state) => state.invoicingDunningCaseState, (state) => state.invoicingDunningCaseListViewState, (dunningCaseState, listViewState) =>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
9
|
+
export const getInvoicingDunningCaseListView = createSelector((state) => state.invoicingDunningCaseState, (state) => state.invoicingDunningCaseListViewState, (dunningCaseState, listViewState) => {
|
|
10
|
+
const { activeTab } = listViewState;
|
|
11
|
+
const allDunningCases = getInvoicingDunningCasesByIds(dunningCaseState, listViewState.ids);
|
|
12
|
+
// The list API ignores `status`, so it returns every status; filter to the
|
|
13
|
+
// active tab client-side ('all' shows everything).
|
|
14
|
+
const dunningCases = activeTab === 'all'
|
|
15
|
+
? allDunningCases
|
|
16
|
+
: allDunningCases.filter((dunningCase) => dunningCase.status === activeTab);
|
|
17
|
+
return {
|
|
18
|
+
activeTab,
|
|
19
|
+
columns: INVOICING_DUNNING_CASE_COLUMNS,
|
|
20
|
+
dunningCases,
|
|
21
|
+
count: listViewState.counts,
|
|
22
|
+
countsFetchState: listViewState.countsFetchState,
|
|
23
|
+
filters: listViewState.filters,
|
|
24
|
+
nextCursor: listViewState.nextCursor,
|
|
25
|
+
fetchState: listViewState.fetchState,
|
|
26
|
+
error: listViewState.error,
|
|
27
|
+
tabIds: INVOICING_DUNNING_CASE_TABS,
|
|
28
|
+
sort: listViewState.sort,
|
|
29
|
+
version: 1.0,
|
|
30
|
+
};
|
|
31
|
+
});
|
|
@@ -8,9 +8,6 @@ import { INVOICING_LIST_PAGE_SIZE, applyListSortParams, withQuery, } from '../..
|
|
|
8
8
|
import { fetchInvoicingSubscriptionList, updateInvoicingSubscriptionList, updateInvoicingSubscriptionListFailure, } from '../invoicingSubscriptionListViewReducer';
|
|
9
9
|
const buildQuery = (filters, cursor, sort) => {
|
|
10
10
|
const params = new URLSearchParams();
|
|
11
|
-
if (filters.status != null && filters.status.length > 0) {
|
|
12
|
-
params.set('status', filters.status);
|
|
13
|
-
}
|
|
14
11
|
if (filters.customerId != null) {
|
|
15
12
|
params.set('customer_id', filters.customerId);
|
|
16
13
|
}
|
package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewReducer.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createSlice } from '@reduxjs/toolkit';
|
|
|
2
2
|
export const initialState = {
|
|
3
3
|
fetchState: 'Not-Started',
|
|
4
4
|
error: undefined,
|
|
5
|
+
activeTab: 'all',
|
|
5
6
|
ids: [],
|
|
6
7
|
nextCursor: null,
|
|
7
8
|
filters: {},
|
|
@@ -80,6 +81,11 @@ const invoicingSubscriptionListView = createSlice({
|
|
|
80
81
|
updateInvoicingSubscriptionFilters(draft, action) {
|
|
81
82
|
draft.filters = action.payload;
|
|
82
83
|
},
|
|
84
|
+
// Select a status tab. The list API ignores `status` (returns all statuses),
|
|
85
|
+
// so the selector filters rows to this tab client-side — no refetch needed.
|
|
86
|
+
setInvoicingSubscriptionActiveTab(draft, action) {
|
|
87
|
+
draft.activeTab = action.payload;
|
|
88
|
+
},
|
|
83
89
|
// Reflect a newly created subscription in the cached list + tab counts so the
|
|
84
90
|
// subscription page shows it without refetching from the server. The status
|
|
85
91
|
// doubles as the per-tab count key (tab ids mirror InvoicingSubscriptionStatus).
|
|
@@ -99,5 +105,5 @@ const invoicingSubscriptionListView = createSlice({
|
|
|
99
105
|
},
|
|
100
106
|
},
|
|
101
107
|
});
|
|
102
|
-
export const { fetchInvoicingSubscriptionList, fetchInvoicingSubscriptionListPage, updateInvoicingSubscriptionList, updateInvoicingSubscriptionListFailure, fetchInvoicingSubscriptionCounts, updateInvoicingSubscriptionCounts, updateInvoicingSubscriptionCountsFailure, updateInvoicingSubscriptionFilters, addInvoicingSubscriptionToList, clearInvoicingSubscriptionListView, } = invoicingSubscriptionListView.actions;
|
|
108
|
+
export const { fetchInvoicingSubscriptionList, fetchInvoicingSubscriptionListPage, updateInvoicingSubscriptionList, updateInvoicingSubscriptionListFailure, fetchInvoicingSubscriptionCounts, updateInvoicingSubscriptionCounts, updateInvoicingSubscriptionCountsFailure, updateInvoicingSubscriptionFilters, setInvoicingSubscriptionActiveTab, addInvoicingSubscriptionToList, clearInvoicingSubscriptionListView, } = invoicingSubscriptionListView.actions;
|
|
103
109
|
export default invoicingSubscriptionListView.reducer;
|
|
@@ -8,15 +8,25 @@ import { INVOICING_SUBSCRIPTION_COLUMNS, INVOICING_SUBSCRIPTION_TABS, } from './
|
|
|
8
8
|
* re-rendered on every unrelated redux action because a fresh array was built
|
|
9
9
|
* each call.
|
|
10
10
|
*/
|
|
11
|
-
export const getInvoicingSubscriptionListView = createSelector((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (subscriptionState, listViewState) =>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
export const getInvoicingSubscriptionListView = createSelector((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (subscriptionState, listViewState) => {
|
|
12
|
+
const { activeTab } = listViewState;
|
|
13
|
+
const allSubscriptions = getInvoicingSubscriptionsByIds(subscriptionState, listViewState.ids);
|
|
14
|
+
// The list API ignores `status`, so it returns every status; filter to the
|
|
15
|
+
// active tab client-side ('all' shows everything).
|
|
16
|
+
const subscriptions = activeTab === 'all'
|
|
17
|
+
? allSubscriptions
|
|
18
|
+
: allSubscriptions.filter((subscription) => subscription.status === activeTab);
|
|
19
|
+
return {
|
|
20
|
+
activeTab,
|
|
21
|
+
columns: INVOICING_SUBSCRIPTION_COLUMNS,
|
|
22
|
+
subscriptions,
|
|
23
|
+
fetchState: listViewState.fetchState,
|
|
24
|
+
error: listViewState.error,
|
|
25
|
+
nextCursor: listViewState.nextCursor,
|
|
26
|
+
filters: listViewState.filters,
|
|
27
|
+
count: listViewState.counts,
|
|
28
|
+
countsFetchState: listViewState.countsFetchState,
|
|
29
|
+
tabIds: INVOICING_SUBSCRIPTION_TABS,
|
|
30
|
+
sort: listViewState.sort,
|
|
31
|
+
};
|
|
32
|
+
});
|
|
@@ -4,13 +4,13 @@ import { updateInvoicingTransactions } from '../../../../entity/invoicing/invoic
|
|
|
4
4
|
import { createZeniAPIStatus, isSuccessResponse, } from '../../../../responsePayload';
|
|
5
5
|
import { INVOICING_LIST_PAGE_SIZE, applyListSortParams, withQuery, } from '../../invoicingApiHelper';
|
|
6
6
|
import { fetchInvoicingTransactionList, updateInvoicingTransactionList, updateInvoicingTransactionListFailure, } from '../invoicingTransactionListViewReducer';
|
|
7
|
-
const buildQuery = (filters, cursor, sort) => {
|
|
7
|
+
const buildQuery = (filters, type, cursor, sort) => {
|
|
8
8
|
const params = new URLSearchParams();
|
|
9
9
|
if (filters.status != null && filters.status.length > 0) {
|
|
10
10
|
params.set('status', filters.status);
|
|
11
11
|
}
|
|
12
|
-
if (
|
|
13
|
-
params.set('type',
|
|
12
|
+
if (type != null && type.length > 0) {
|
|
13
|
+
params.set('type', type);
|
|
14
14
|
}
|
|
15
15
|
if (filters.customerId != null) {
|
|
16
16
|
params.set('customer_id', filters.customerId);
|
|
@@ -25,9 +25,11 @@ const buildQuery = (filters, cursor, sort) => {
|
|
|
25
25
|
applyListSortParams(params, sort);
|
|
26
26
|
return params;
|
|
27
27
|
};
|
|
28
|
-
export const fetchInvoicingTransactionListEpic = (actions$,
|
|
28
|
+
export const fetchInvoicingTransactionListEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingTransactionList.match), switchMap((action) => {
|
|
29
29
|
const { filters, cursor, keepExistingListItems, sort } = action.payload;
|
|
30
|
-
const
|
|
30
|
+
const { activeTab } = state$.value.invoicingTransactionListViewState;
|
|
31
|
+
const type = activeTab !== 'all' ? activeTab : undefined;
|
|
32
|
+
const apiUrl = withQuery(`${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/payments`, buildQuery(filters, type, cursor, sort));
|
|
31
33
|
return zeniAPI.getJSON(apiUrl).pipe(switchMap((response) => {
|
|
32
34
|
if (isSuccessResponse(response)) {
|
|
33
35
|
const items = response.data?.items ?? [];
|
|
@@ -16,8 +16,9 @@ const shouldFetch = (fetchStateAndError, cacheOverride) => cacheOverride ||
|
|
|
16
16
|
export const fetchInvoicingTransactionListPageEpic = (actions$, state$) => actions$.pipe(filter(fetchInvoicingTransactionListPage.match), mergeMap((action) => {
|
|
17
17
|
const { cacheOverride, filters, sort } = action.payload;
|
|
18
18
|
const state = state$.value.invoicingTransactionListViewState;
|
|
19
|
+
const activeTabState = state.byTab[state.activeTab];
|
|
19
20
|
const pageActions = [];
|
|
20
|
-
if (shouldFetch({ fetchState:
|
|
21
|
+
if (shouldFetch({ fetchState: activeTabState.fetchState, error: activeTabState.error }, cacheOverride)) {
|
|
21
22
|
pageActions.push(fetchInvoicingTransactionList({ filters, sort }));
|
|
22
23
|
}
|
|
23
24
|
return concat(from(pageActions));
|
package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
import { makeInvoicingTransactionIdsByTab, } from './invoicingTransactionListViewState';
|
|
3
|
+
/**
|
|
4
|
+
* Whether two transaction-list queries share the same base (tab-independent)
|
|
5
|
+
* query. When the base query changes (search / customer / status / sort) every
|
|
6
|
+
* per-tab cache is stale, so the reducer resets them all.
|
|
7
|
+
*/
|
|
8
|
+
const sameTransactionBaseQuery = (a, b) => a.filters.customerId === b.filters.customerId &&
|
|
9
|
+
a.filters.status === b.filters.status &&
|
|
10
|
+
a.filters.search === b.filters.search &&
|
|
11
|
+
a.sort?.field === b.sort?.field &&
|
|
12
|
+
a.sort?.dir === b.sort?.dir;
|
|
2
13
|
export const initialState = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
ids: [],
|
|
6
|
-
nextCursor: null,
|
|
14
|
+
activeTab: 'all',
|
|
15
|
+
byTab: makeInvoicingTransactionIdsByTab(),
|
|
7
16
|
filters: {},
|
|
8
|
-
hasValidState() {
|
|
9
|
-
return this.fetchState === 'Completed';
|
|
10
|
-
},
|
|
11
17
|
};
|
|
12
18
|
const invoicingTransactionListView = createSlice({
|
|
13
19
|
name: 'invoicingTransactionListView',
|
|
@@ -15,14 +21,15 @@ const invoicingTransactionListView = createSlice({
|
|
|
15
21
|
reducers: {
|
|
16
22
|
fetchInvoicingTransactionList: {
|
|
17
23
|
reducer(draft, action) {
|
|
24
|
+
const tab = draft.byTab[draft.activeTab];
|
|
18
25
|
if (!action.payload.keepExistingListItems) {
|
|
19
|
-
|
|
20
|
-
|
|
26
|
+
tab.ids = [];
|
|
27
|
+
tab.nextCursor = null;
|
|
21
28
|
}
|
|
22
29
|
draft.filters = action.payload.filters;
|
|
23
30
|
draft.sort = action.payload.sort;
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
tab.fetchState = 'In-Progress';
|
|
32
|
+
tab.error = undefined;
|
|
26
33
|
},
|
|
27
34
|
prepare(payload) {
|
|
28
35
|
return {
|
|
@@ -37,6 +44,12 @@ const invoicingTransactionListView = createSlice({
|
|
|
37
44
|
},
|
|
38
45
|
fetchInvoicingTransactionListPage: {
|
|
39
46
|
reducer(draft, action) {
|
|
47
|
+
// A different base query invalidates every tab's cache — reset so the
|
|
48
|
+
// page epic's shouldFetch refetches the active tab instead of showing
|
|
49
|
+
// rows fetched under a stale search/customer/status/sort.
|
|
50
|
+
if (!sameTransactionBaseQuery(draft, action.payload)) {
|
|
51
|
+
draft.byTab = makeInvoicingTransactionIdsByTab();
|
|
52
|
+
}
|
|
40
53
|
draft.filters = action.payload.filters;
|
|
41
54
|
draft.sort = action.payload.sort;
|
|
42
55
|
},
|
|
@@ -51,34 +64,52 @@ const invoicingTransactionListView = createSlice({
|
|
|
51
64
|
},
|
|
52
65
|
},
|
|
53
66
|
updateInvoicingTransactionList(draft, action) {
|
|
54
|
-
|
|
55
|
-
|
|
67
|
+
const tab = draft.byTab[draft.activeTab];
|
|
68
|
+
tab.ids = action.payload.keepExistingListItems
|
|
69
|
+
? [...new Set([...tab.ids, ...action.payload.ids])]
|
|
56
70
|
: action.payload.ids;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
71
|
+
tab.nextCursor = action.payload.nextCursor;
|
|
72
|
+
tab.fetchState = 'Completed';
|
|
73
|
+
tab.error = undefined;
|
|
60
74
|
},
|
|
61
75
|
updateInvoicingTransactionListFailure(draft, action) {
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
const tab = draft.byTab[draft.activeTab];
|
|
77
|
+
tab.fetchState = 'Error';
|
|
78
|
+
tab.error = action.payload;
|
|
64
79
|
},
|
|
65
80
|
updateInvoicingTransactionFilters(draft, action) {
|
|
66
81
|
draft.filters = action.payload;
|
|
67
82
|
},
|
|
83
|
+
// Select a type tab. The view dispatches the follow-up
|
|
84
|
+
// fetchInvoicingTransactionListPage so the page epic fetches the tab when
|
|
85
|
+
// its cache is empty and reuses it when already loaded.
|
|
86
|
+
setInvoicingTransactionActiveTab(draft, action) {
|
|
87
|
+
draft.activeTab = action.payload;
|
|
88
|
+
},
|
|
68
89
|
// Reflect a newly recorded payment's transaction in the cached list so the
|
|
69
|
-
// payments page shows it without refetching. The
|
|
70
|
-
//
|
|
90
|
+
// payments page shows it without refetching. The payload carries no type,
|
|
91
|
+
// so prepend to the 'all' tab and the tab currently in view (dedup/no-op if
|
|
92
|
+
// already present); other tabs refetch fresh on their next visit.
|
|
71
93
|
addInvoicingTransactionToList(draft, action) {
|
|
72
94
|
const id = action.payload;
|
|
73
|
-
|
|
74
|
-
|
|
95
|
+
const prependTo = (tabId) => {
|
|
96
|
+
const tab = draft.byTab[tabId];
|
|
97
|
+
if (!tab.ids.includes(id)) {
|
|
98
|
+
tab.ids = [id, ...tab.ids];
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
prependTo('all');
|
|
102
|
+
if (draft.activeTab !== 'all') {
|
|
103
|
+
prependTo(draft.activeTab);
|
|
75
104
|
}
|
|
76
|
-
draft.ids = [id, ...draft.ids];
|
|
77
105
|
},
|
|
78
106
|
clearInvoicingTransactionListView(draft) {
|
|
79
|
-
|
|
107
|
+
draft.activeTab = 'all';
|
|
108
|
+
draft.byTab = makeInvoicingTransactionIdsByTab();
|
|
109
|
+
draft.filters = {};
|
|
110
|
+
draft.sort = undefined;
|
|
80
111
|
},
|
|
81
112
|
},
|
|
82
113
|
});
|
|
83
|
-
export const { fetchInvoicingTransactionList, fetchInvoicingTransactionListPage, updateInvoicingTransactionList, updateInvoicingTransactionListFailure, updateInvoicingTransactionFilters, addInvoicingTransactionToList, clearInvoicingTransactionListView, } = invoicingTransactionListView.actions;
|
|
114
|
+
export const { fetchInvoicingTransactionList, fetchInvoicingTransactionListPage, updateInvoicingTransactionList, updateInvoicingTransactionListFailure, updateInvoicingTransactionFilters, setInvoicingTransactionActiveTab, addInvoicingTransactionToList, clearInvoicingTransactionListView, } = invoicingTransactionListView.actions;
|
|
84
115
|
export default invoicingTransactionListView.reducer;
|
package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.js
CHANGED
|
@@ -6,14 +6,18 @@ import { INVOICING_TRANSACTION_COLUMNS, INVOICING_TRANSACTION_TABS, } from './in
|
|
|
6
6
|
* object) keep referential identity until the transaction entity slice or the
|
|
7
7
|
* list-view slice actually change.
|
|
8
8
|
*/
|
|
9
|
-
export const getInvoicingTransactionListView = createSelector((state) => state.invoicingTransactionState, (state) => state.invoicingTransactionListViewState, (transactionState, listViewState) =>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
9
|
+
export const getInvoicingTransactionListView = createSelector((state) => state.invoicingTransactionState, (state) => state.invoicingTransactionListViewState, (transactionState, listViewState) => {
|
|
10
|
+
const activeTabState = listViewState.byTab[listViewState.activeTab];
|
|
11
|
+
return {
|
|
12
|
+
activeTab: listViewState.activeTab,
|
|
13
|
+
columns: INVOICING_TRANSACTION_COLUMNS,
|
|
14
|
+
transactions: getInvoicingTransactionsByIds(transactionState, activeTabState.ids),
|
|
15
|
+
filters: listViewState.filters,
|
|
16
|
+
nextCursor: activeTabState.nextCursor,
|
|
17
|
+
fetchState: activeTabState.fetchState,
|
|
18
|
+
error: activeTabState.error,
|
|
19
|
+
tabIds: INVOICING_TRANSACTION_TABS,
|
|
20
|
+
sort: listViewState.sort,
|
|
21
|
+
version: 1.0,
|
|
22
|
+
};
|
|
23
|
+
});
|
package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.js
CHANGED
|
@@ -37,3 +37,13 @@ export const toInvoicingTransactionTabId = (v) => stringToUnion(v, ALL_INVOICING
|
|
|
37
37
|
export const INVOICING_TRANSACTION_TABS = [
|
|
38
38
|
...ALL_INVOICING_TRANSACTION_TAB_IDS,
|
|
39
39
|
];
|
|
40
|
+
export const makeInvoicingTransactionTabState = () => ({
|
|
41
|
+
ids: [],
|
|
42
|
+
nextCursor: null,
|
|
43
|
+
fetchState: 'Not-Started',
|
|
44
|
+
error: undefined,
|
|
45
|
+
});
|
|
46
|
+
export const makeInvoicingTransactionIdsByTab = () => ALL_INVOICING_TRANSACTION_TAB_IDS.reduce((acc, tabId) => {
|
|
47
|
+
acc[tabId] = makeInvoicingTransactionTabState();
|
|
48
|
+
return acc;
|
|
49
|
+
}, {});
|
|
@@ -13,7 +13,7 @@ import { getUserByUserId } from '../../../../entity/user/userSelector';
|
|
|
13
13
|
import { getUserRoleByUserId } from '../../../../entity/userRole/userRoleSelector';
|
|
14
14
|
import { getActivityHistory, } from '../../commonHistoryView/commonHistorySelector';
|
|
15
15
|
import { getAllFundingAccounts, } from '../../commonSetup/setupViewSelector';
|
|
16
|
-
import { getLatestApprovalDate, isAwaitingMarkAsPaid, isSodAdminFallbackEligibleForStep, isSodExcludedViewerBlocked, } from '../../helpers';
|
|
16
|
+
import { getLatestApprovalDate, isAwaitingMarkAsPaid, isSodAdminFallbackEligibleForStep, isSodExcludedViewerBlocked, shouldShowSodAdminLabel, } from '../../helpers';
|
|
17
17
|
import { getActivityRealTimeApproval, } from '../../realTimeApprovalView/realTimeApprovalSelector';
|
|
18
18
|
import { getEntityRealTimeApprovalDetailKey } from '../../realTimeApprovalView/realTimeApprovalState';
|
|
19
19
|
import { getBillPaymentSubConfigCodeKey, getInternationalSubConfigCodeKey, getInternationalWireMethodCodeKey, } from '../billPayConfig/billPayConfigPayload';
|
|
@@ -22,7 +22,12 @@ import { getBillPayConfigMethodKey, toBillPaymentSubConfigCodeKeyType, } from '.
|
|
|
22
22
|
import { getPreviousBills, } from '../previousBills/previousBillsSelector';
|
|
23
23
|
import { getBillTransactionDetailKey, initialBillDetailView, } from './billDetailViewState';
|
|
24
24
|
export const getBillActivities = (state, billId, billStageCode) => {
|
|
25
|
-
const { billDetailViewState, approvalRuleState, entityApprovalStatusState, userState, } = state;
|
|
25
|
+
const { billDetailViewState, approvalRuleState, entityApprovalStatusState, userState, billTransactionState, } = state;
|
|
26
|
+
// Note: createdBy is undefined until billTransactionState is populated.
|
|
27
|
+
// getBillActivities is called from getBillDetailView which runs after the
|
|
28
|
+
// bill entity epic completes — this assumption must hold for showSodAdminLabel
|
|
29
|
+
// to render on first paint.
|
|
30
|
+
const createdBy = billTransactionState.transactionById[billId]?.createdBy;
|
|
26
31
|
const key = getBillTransactionDetailKey(billId);
|
|
27
32
|
const billDetail = recordGet(billDetailViewState.billDetailById, key, undefined);
|
|
28
33
|
let billActivities = [];
|
|
@@ -85,6 +90,7 @@ export const getBillActivities = (state, billId, billStageCode) => {
|
|
|
85
90
|
actorsActivity,
|
|
86
91
|
isOriginalApprovalStep: step.isOriginalApprovalStep,
|
|
87
92
|
displayPendingApproverAsAdmin: isSodAdminFallbackEligibleForStep(sodExcludedApproverUserId, isAdminFallbackApprover, actorsActivity),
|
|
93
|
+
showSodAdminLabel: shouldShowSodAdminLabel(sodExcludedApproverUserId, actorsActivity, createdBy),
|
|
88
94
|
};
|
|
89
95
|
}),
|
|
90
96
|
};
|
|
@@ -19,6 +19,18 @@ export const isSodAdminFallbackEligibleForStep = (sodExcludedApproverUserId, isA
|
|
|
19
19
|
return (pendingResolvedApprovers.length > 0 &&
|
|
20
20
|
pendingResolvedApprovers.every((activity) => getUserActorId(activity) === sodExcludedApproverUserId));
|
|
21
21
|
};
|
|
22
|
+
const isSodExcludedUserSolePendingApproverOnStep = (sodExcludedApproverUserId, stepActorsActivity = []) => {
|
|
23
|
+
if (sodExcludedApproverUserId == null) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const pendingResolvedApprovers = stepActorsActivity.filter((activity) => activity.activity === 'pending' && getUserActorId(activity) != null);
|
|
27
|
+
return (pendingResolvedApprovers.length > 0 &&
|
|
28
|
+
pendingResolvedApprovers.every((activity) => getUserActorId(activity) === sodExcludedApproverUserId));
|
|
29
|
+
};
|
|
30
|
+
export const shouldShowSodAdminLabel = (sodExcludedApproverUserId, stepActorsActivity = [], entitySubjectUserId) => sodExcludedApproverUserId != null &&
|
|
31
|
+
entitySubjectUserId != null &&
|
|
32
|
+
sodExcludedApproverUserId === entitySubjectUserId &&
|
|
33
|
+
isSodExcludedUserSolePendingApproverOnStep(sodExcludedApproverUserId, stepActorsActivity);
|
|
22
34
|
export const getLatestApprovalDate = (allActivities) => {
|
|
23
35
|
let allStepsWithStatus = [];
|
|
24
36
|
let allApprovedActions = [];
|
package/lib/esm/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.js
CHANGED
|
@@ -6,7 +6,6 @@ import { fetchUserFinancialAccount } from '../../../../userFinancialAccount/user
|
|
|
6
6
|
import { getLatestCreatedUserBankAccount } from '../../../../userFinancialAccount/userFinancialAccountSelector';
|
|
7
7
|
import { fetchMerchantList } from '../../../merchantList/merchantListReducer';
|
|
8
8
|
import { fetchReimbursementConfig } from '../../reimbursementConfig/reimbursementConfigReducer';
|
|
9
|
-
import { fetchRemiSetupApproverView } from '../../remiSetupApproverView/remiSetupApproverViewReducer';
|
|
10
9
|
import { fetchEditRemiDetailPage, fetchRemiAndInitializeLocalStore, updatesPaymentToInLocalStore, } from '../editRemiViewReducer';
|
|
11
10
|
export const fetchEditRemiDetailPageEpic = (actions$, state$) => actions$.pipe(filter(fetchEditRemiDetailPage.match), mergeMap((action) => {
|
|
12
11
|
const { cacheOverride, isLimitedCategoryEnabled, reimbursementId, isShowDeletedReimbursementEnabled, } = action.payload;
|
|
@@ -59,17 +58,6 @@ export const fetchEditRemiDetailPageEpic = (actions$, state$) => actions$.pipe(f
|
|
|
59
58
|
if (reimbursementId != null) {
|
|
60
59
|
remiDetailActions.push(fetchRemiAndInitializeLocalStore(reimbursementId, false, isShowDeletedReimbursementEnabled));
|
|
61
60
|
}
|
|
62
|
-
else {
|
|
63
|
-
const approvalRules = state.remiSetupApproverViewState;
|
|
64
|
-
if (approvalRules.fetchState !== 'Completed' &&
|
|
65
|
-
approvalRules.fetchState !== 'In-Progress') {
|
|
66
|
-
// Side-fetch from the edit-reim page bootstrap. The
|
|
67
|
-
// triggering action doesn't carry the V3 flag, so we
|
|
68
|
-
// explicitly target v1; v3 tenants re-fetch via their
|
|
69
|
-
// own screen connector.
|
|
70
|
-
remiDetailActions.push(fetchRemiSetupApproverView(true, false, false, false));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
61
|
}
|
|
74
62
|
return concat(from(remiDetailActions));
|
|
75
63
|
}));
|
|
@@ -7,7 +7,7 @@ import { getEntityApprovalStatusByIds } from '../../../../entity/entityApprovalS
|
|
|
7
7
|
import { getUserByUserId } from '../../../../entity/user/userSelector';
|
|
8
8
|
import { getUserRoleByUserId } from '../../../../entity/userRole/userRoleSelector';
|
|
9
9
|
import { getActivityHistory, } from '../../commonHistoryView/commonHistorySelector';
|
|
10
|
-
import { getLatestApprovalDate, isSodAdminFallbackEligibleForStep, isSodExcludedViewerBlocked, } from '../../helpers';
|
|
10
|
+
import { getLatestApprovalDate, isSodAdminFallbackEligibleForStep, isSodExcludedViewerBlocked, shouldShowSodAdminLabel, } from '../../helpers';
|
|
11
11
|
import { getActivityRealTimeApproval, } from '../../realTimeApprovalView/realTimeApprovalSelector';
|
|
12
12
|
import { getReimbursementConfigByKey } from '../reimbursementConfig/reimbursementConfigSelector';
|
|
13
13
|
import { REIMBURSEMENT_PAYMENT_NUMBER_OF_DAYS } from '../reimbursementConfig/reimbursementConfigState';
|
|
@@ -110,7 +110,8 @@ export const getRemiDetailView = (state, reimbursementId) => {
|
|
|
110
110
|
};
|
|
111
111
|
};
|
|
112
112
|
export const getRemiActivities = (state, reimbursementId, billStageCode) => {
|
|
113
|
-
const { remiDetailViewState, approvalRuleState, entityApprovalStatusState, userState, } = state;
|
|
113
|
+
const { remiDetailViewState, approvalRuleState, entityApprovalStatusState, userState, reimbursementState, } = state;
|
|
114
|
+
const reimburseeUserId = reimbursementState.reimbursementById[reimbursementId]?.reimburseeUserId;
|
|
114
115
|
const remiTransactionDetails = recordGet(remiDetailViewState.remiDetailById, reimbursementId, undefined);
|
|
115
116
|
let remiActivities = [];
|
|
116
117
|
if (remiTransactionDetails != null) {
|
|
@@ -172,6 +173,7 @@ export const getRemiActivities = (state, reimbursementId, billStageCode) => {
|
|
|
172
173
|
actorsActivity,
|
|
173
174
|
isOriginalApprovalStep: step.isOriginalApprovalStep,
|
|
174
175
|
displayPendingApproverAsAdmin: isSodAdminFallbackEligibleForStep(sodExcludedApproverUserId, isAdminFallbackApprover, actorsActivity),
|
|
176
|
+
showSodAdminLabel: shouldShowSodAdminLabel(sodExcludedApproverUserId, actorsActivity, reimburseeUserId),
|
|
175
177
|
};
|
|
176
178
|
}),
|
|
177
179
|
};
|
package/lib/index.d.ts
CHANGED
|
@@ -1014,7 +1014,7 @@ export type { InvoicingDataImportStatusRow, FetchInvoicingMigrationDiagnosticsPa
|
|
|
1014
1014
|
export type { StripeConnectCredentials } from './view/invoicing/settingsView/settingsViewPayload';
|
|
1015
1015
|
export { clearAllInvoices, removeInvoice, updateInvoices, } from './entity/invoicing/invoice/invoiceReducer';
|
|
1016
1016
|
export { getInvoiceById, getInvoicesByIds, } from './entity/invoicing/invoice/invoiceSelector';
|
|
1017
|
-
export { clearInvoiceList, fetchInvoiceCounts, fetchInvoiceKPIs, fetchInvoiceList, fetchInvoiceListPage, updateInvoiceListFilters, } from './view/invoicing/invoiceList/invoiceListReducer';
|
|
1017
|
+
export { clearInvoiceList, fetchInvoiceCounts, fetchInvoiceKPIs, fetchInvoiceList, fetchInvoiceListPage, setInvoiceActiveTab, updateInvoiceListFilters, } from './view/invoicing/invoiceList/invoiceListReducer';
|
|
1018
1018
|
export { ALL_INVOICING_INVOICE_TAB_IDS, INVOICING_INVOICE_TABS, } from './view/invoicing/invoiceList/invoiceListState';
|
|
1019
1019
|
export type { InvoiceListFilters, InvoiceListState, InvoicingInvoiceTabId, } from './view/invoicing/invoiceList/invoiceListState';
|
|
1020
1020
|
export { getInvoiceListView } from './view/invoicing/invoiceList/invoiceListSelector';
|
|
@@ -1116,7 +1116,7 @@ export { getInvoicingDataImportActionState } from './view/invoicing/dataImportAc
|
|
|
1116
1116
|
export { INVOICING_LIST_PAGE_SIZE } from './view/invoicing/invoicingApiHelper';
|
|
1117
1117
|
export type { InvoicingListSort } from './view/invoicing/invoicingApiHelper';
|
|
1118
1118
|
export { clearAllInvoicingCustomers, removeInvoicingCustomer, updateInvoicingCustomers, } from './entity/invoicing/invoicingCustomer/invoicingCustomerReducer';
|
|
1119
|
-
export { clearInvoicingCustomerListView, fetchInvoicingCustomerCounts, fetchInvoicingCustomerList, fetchInvoicingCustomerListPage, updateInvoicingCustomerFilters, } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewReducer';
|
|
1119
|
+
export { clearInvoicingCustomerListView, fetchInvoicingCustomerCounts, fetchInvoicingCustomerList, fetchInvoicingCustomerListPage, setInvoicingCustomerActiveTab, updateInvoicingCustomerFilters, } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewReducer';
|
|
1120
1120
|
export { ALL_INVOICING_CUSTOMER_SORT_KEYS, ALL_INVOICING_CUSTOMER_TAB_IDS, INVOICING_CUSTOMER_COLUMNS, INVOICING_CUSTOMER_TABS, } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState';
|
|
1121
1121
|
export type { InvoicingCustomerColumnConfig, InvoicingCustomerFilters, InvoicingCustomerSortKey, InvoicingCustomerTabId, } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState';
|
|
1122
1122
|
export { getInvoicingCustomerListView } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector';
|
|
@@ -1130,7 +1130,7 @@ export { getInvoicingPaymentLinkSendState, getInvoicingPaymentMethodSaveState, g
|
|
|
1130
1130
|
export { submitAddPromotionalCredits, resetPromotionalCreditAction, } from './view/invoicing/promotionalCreditAction/promotionalCreditActionReducer';
|
|
1131
1131
|
export type { PromotionalCreditActionState } from './view/invoicing/promotionalCreditAction/promotionalCreditActionState';
|
|
1132
1132
|
export { clearAllInvoicingSubscriptions, removeInvoicingSubscription, updateInvoicingSubscriptions, } from './entity/invoicing/invoicingSubscription/invoicingSubscriptionReducer';
|
|
1133
|
-
export { clearInvoicingSubscriptionListView, fetchInvoicingSubscriptionCounts, fetchInvoicingSubscriptionList, fetchInvoicingSubscriptionListPage, updateInvoicingSubscriptionFilters, } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewReducer';
|
|
1133
|
+
export { clearInvoicingSubscriptionListView, fetchInvoicingSubscriptionCounts, fetchInvoicingSubscriptionList, fetchInvoicingSubscriptionListPage, setInvoicingSubscriptionActiveTab, updateInvoicingSubscriptionFilters, } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewReducer';
|
|
1134
1134
|
export { ALL_INVOICING_SUBSCRIPTION_SORT_KEYS, ALL_INVOICING_SUBSCRIPTION_TAB_IDS, INVOICING_SUBSCRIPTION_COLUMNS, INVOICING_SUBSCRIPTION_TABS, } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState';
|
|
1135
1135
|
export type { InvoicingSubscriptionColumnConfig, InvoicingSubscriptionFilters, InvoicingSubscriptionSortKey, InvoicingSubscriptionTabId, } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState';
|
|
1136
1136
|
export { getInvoicingSubscriptionListView } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector';
|
|
@@ -1139,7 +1139,7 @@ export { clearInvoicingSubscriptionDetailView, fetchInvoicingSubscriptionDetail,
|
|
|
1139
1139
|
export { getInvoicingSubscriptionById, getInvoicingSubscriptionDetail, } from './view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector';
|
|
1140
1140
|
export type { InvoicingSubscriptionDetailView } from './view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector';
|
|
1141
1141
|
export { clearAllInvoicingTransactions, removeInvoicingTransaction, updateInvoicingTransactions, } from './entity/invoicing/invoicingTransaction/invoicingTransactionReducer';
|
|
1142
|
-
export { clearInvoicingTransactionListView, fetchInvoicingTransactionList, fetchInvoicingTransactionListPage, updateInvoicingTransactionFilters, } from './view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer';
|
|
1142
|
+
export { clearInvoicingTransactionListView, fetchInvoicingTransactionList, fetchInvoicingTransactionListPage, setInvoicingTransactionActiveTab, updateInvoicingTransactionFilters, } from './view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer';
|
|
1143
1143
|
export { ALL_INVOICING_TRANSACTION_SORT_KEYS, ALL_INVOICING_TRANSACTION_TAB_IDS, INVOICING_TRANSACTION_COLUMNS, INVOICING_TRANSACTION_TABS, } from './view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState';
|
|
1144
1144
|
export type { InvoicingTransactionColumnConfig, InvoicingTransactionFilters, InvoicingTransactionSortKey, InvoicingTransactionTabId, } from './view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState';
|
|
1145
1145
|
export { getInvoicingTransactionListView } from './view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector';
|
|
@@ -1148,7 +1148,7 @@ export { clearInvoicingTransactionDetailView, fetchInvoicingTransactionDetail, }
|
|
|
1148
1148
|
export { getInvoicingTransactionById, getInvoicingTransactionDetail, } from './view/invoicing/invoicingTransactionDetailView/invoicingTransactionDetailViewSelector';
|
|
1149
1149
|
export type { InvoicingTransactionDetailView } from './view/invoicing/invoicingTransactionDetailView/invoicingTransactionDetailViewSelector';
|
|
1150
1150
|
export { clearAllInvoicingCreditNotes, removeInvoicingCreditNote, updateInvoicingCreditNotes, } from './entity/invoicing/creditNote/creditNoteReducer';
|
|
1151
|
-
export { clearInvoicingCreditNoteListView, fetchInvoicingCreditNoteCounts, fetchInvoicingCreditNoteList, fetchInvoicingCreditNoteListPage, updateInvoicingCreditNoteFilters, } from './view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewReducer';
|
|
1151
|
+
export { clearInvoicingCreditNoteListView, fetchInvoicingCreditNoteCounts, fetchInvoicingCreditNoteList, fetchInvoicingCreditNoteListPage, setInvoicingCreditNoteActiveTab, updateInvoicingCreditNoteFilters, } from './view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewReducer';
|
|
1152
1152
|
export { ALL_INVOICING_CREDIT_NOTE_SORT_KEYS, ALL_INVOICING_CREDIT_NOTE_TAB_IDS, INVOICING_CREDIT_NOTE_COLUMNS, INVOICING_CREDIT_NOTE_TABS, } from './view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewState';
|
|
1153
1153
|
export type { InvoicingCreditNoteColumnConfig, InvoicingCreditNoteFilters, InvoicingCreditNoteSortKey, InvoicingCreditNoteTabId, } from './view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewState';
|
|
1154
1154
|
export { getInvoicingCreditNoteListView } from './view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewSelector';
|
|
@@ -1157,7 +1157,7 @@ export { clearInvoicingCreditNoteDetailView, fetchInvoicingCreditNoteDetail, } f
|
|
|
1157
1157
|
export { getInvoicingCreditNoteById, getInvoicingCreditNoteDetail, } from './view/invoicing/invoicingCreditNoteDetailView/invoicingCreditNoteDetailViewSelector';
|
|
1158
1158
|
export type { InvoicingCreditNoteDetailView } from './view/invoicing/invoicingCreditNoteDetailView/invoicingCreditNoteDetailViewSelector';
|
|
1159
1159
|
export { clearAllInvoicingCoupons, removeInvoicingCoupon, updateInvoicingCoupons, } from './entity/invoicing/coupon/couponReducer';
|
|
1160
|
-
export { clearInvoicingCouponView, fetchInvoicingCouponCounts, fetchInvoicingCouponList, fetchInvoicingCouponListPage, updateInvoicingCouponFilters, } from './view/invoicing/couponView/couponViewReducer';
|
|
1160
|
+
export { clearInvoicingCouponView, fetchInvoicingCouponCounts, fetchInvoicingCouponList, fetchInvoicingCouponListPage, setInvoicingCouponActiveTab, updateInvoicingCouponFilters, } from './view/invoicing/couponView/couponViewReducer';
|
|
1161
1161
|
export { ALL_INVOICING_COUPON_SORT_KEYS, ALL_INVOICING_COUPON_TAB_IDS, INVOICING_COUPON_COLUMNS, INVOICING_COUPON_TABS, } from './view/invoicing/couponView/couponViewState';
|
|
1162
1162
|
export type { InvoicingCouponColumnConfig, InvoicingCouponFilters, InvoicingCouponSortKey, InvoicingCouponTabId, } from './view/invoicing/couponView/couponViewState';
|
|
1163
1163
|
export { getInvoicingCouponCounts, getInvoicingCouponListFetchState, getInvoicingCouponListFilters, getInvoicingCouponListHasMore, getInvoicingCouponListItems, getInvoicingCouponListNextCursor, getInvoicingCouponListView, } from './view/invoicing/couponView/couponViewSelector';
|
|
@@ -1167,7 +1167,7 @@ export { clearInvoicingCouponDetailView, fetchInvoicingCouponDetail, } from './v
|
|
|
1167
1167
|
export { getInvoicingCouponDetail } from './view/invoicing/invoicingCouponDetailView/invoicingCouponDetailViewSelector';
|
|
1168
1168
|
export type { InvoicingCouponDetailView } from './view/invoicing/invoicingCouponDetailView/invoicingCouponDetailViewSelector';
|
|
1169
1169
|
export { clearAllInvoicingDunningCases, removeInvoicingDunningCase, updateInvoicingDunningCases, } from './entity/invoicing/dunningCase/dunningCaseReducer';
|
|
1170
|
-
export { clearInvoicingDunningCaseListView, fetchInvoicingDunningCaseCounts, fetchInvoicingDunningCaseList, fetchInvoicingDunningCaseListPage, updateInvoicingDunningCaseFilters, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer';
|
|
1170
|
+
export { clearInvoicingDunningCaseListView, fetchInvoicingDunningCaseCounts, fetchInvoicingDunningCaseList, fetchInvoicingDunningCaseListPage, setInvoicingDunningCaseActiveTab, updateInvoicingDunningCaseFilters, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer';
|
|
1171
1171
|
export { ALL_INVOICING_DUNNING_CASE_SORT_KEYS, ALL_INVOICING_DUNNING_CASE_TAB_IDS, INVOICING_DUNNING_CASE_COLUMNS, INVOICING_DUNNING_CASE_TABS, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState';
|
|
1172
1172
|
export type { InvoicingDunningCaseColumnConfig, InvoicingDunningCaseFilters, InvoicingDunningCaseSortKey, InvoicingDunningCaseTabId, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState';
|
|
1173
1173
|
export { getInvoicingDunningCaseListView } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector';
|