@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/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.d.ts
CHANGED
|
@@ -6,7 +6,6 @@ export interface InvoicingSubscriptionFilters {
|
|
|
6
6
|
search?: string;
|
|
7
7
|
startedFrom?: string;
|
|
8
8
|
startedTo?: string;
|
|
9
|
-
status?: string;
|
|
10
9
|
}
|
|
11
10
|
export declare const ALL_INVOICING_SUBSCRIPTION_SORT_KEYS: readonly ["subscription", "customer", "plan", "product_code", "term_end", "next_billing", "auto_collect", "status", "mrr"];
|
|
12
11
|
export declare const toInvoicingSubscriptionSortKey: (v: string) => "status" | "customer" | "mrr" | "plan" | "subscription" | "product_code" | "term_end" | "next_billing" | "auto_collect";
|
|
@@ -34,9 +33,12 @@ export type InvoicingSubscriptionTabId = ReturnType<typeof toInvoicingSubscripti
|
|
|
34
33
|
*/
|
|
35
34
|
export declare const INVOICING_SUBSCRIPTION_TABS: InvoicingSubscriptionTabId[];
|
|
36
35
|
export interface InvoicingSubscriptionListViewState extends FetchedState {
|
|
36
|
+
/** Selected status tab (CES-owned so it persists across page revisits). */
|
|
37
|
+
activeTab: InvoicingSubscriptionTabId;
|
|
37
38
|
counts: InvoicingListCounts;
|
|
38
39
|
countsFetchState: FetchStateAndError;
|
|
39
40
|
filters: InvoicingSubscriptionFilters;
|
|
41
|
+
/** Full list ids (all statuses); the selector filters by `activeTab`. */
|
|
40
42
|
ids: ID[];
|
|
41
43
|
nextCursor: string | null;
|
|
42
44
|
/** Active server-side sort (undefined = backend default order). */
|
package/lib/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListEpic.d.ts
CHANGED
|
@@ -5,4 +5,4 @@ import { RootState } from '../../../../reducer';
|
|
|
5
5
|
import { ZeniAPI } from '../../../../zeniAPI';
|
|
6
6
|
import { fetchInvoicingTransactionList, updateInvoicingTransactionList, updateInvoicingTransactionListFailure } from '../invoicingTransactionListViewReducer';
|
|
7
7
|
export type ActionType = ReturnType<typeof fetchInvoicingTransactionList> | ReturnType<typeof updateInvoicingTransactionList> | ReturnType<typeof updateInvoicingTransactionListFailure> | ReturnType<typeof updateInvoicingTransactions>;
|
|
8
|
-
export declare const fetchInvoicingTransactionListEpic: (actions$: ActionsObservable<ActionType>,
|
|
8
|
+
export declare const fetchInvoicingTransactionListEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
package/lib/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListEpic.js
CHANGED
|
@@ -7,13 +7,13 @@ const invoicingTransactionReducer_1 = require("../../../../entity/invoicing/invo
|
|
|
7
7
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
8
8
|
const invoicingApiHelper_1 = require("../../invoicingApiHelper");
|
|
9
9
|
const invoicingTransactionListViewReducer_1 = require("../invoicingTransactionListViewReducer");
|
|
10
|
-
const buildQuery = (filters, cursor, sort) => {
|
|
10
|
+
const buildQuery = (filters, type, cursor, sort) => {
|
|
11
11
|
const params = new URLSearchParams();
|
|
12
12
|
if (filters.status != null && filters.status.length > 0) {
|
|
13
13
|
params.set('status', filters.status);
|
|
14
14
|
}
|
|
15
|
-
if (
|
|
16
|
-
params.set('type',
|
|
15
|
+
if (type != null && type.length > 0) {
|
|
16
|
+
params.set('type', type);
|
|
17
17
|
}
|
|
18
18
|
if (filters.customerId != null) {
|
|
19
19
|
params.set('customer_id', filters.customerId);
|
|
@@ -28,9 +28,11 @@ const buildQuery = (filters, cursor, sort) => {
|
|
|
28
28
|
(0, invoicingApiHelper_1.applyListSortParams)(params, sort);
|
|
29
29
|
return params;
|
|
30
30
|
};
|
|
31
|
-
const fetchInvoicingTransactionListEpic = (actions$,
|
|
31
|
+
const fetchInvoicingTransactionListEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingTransactionListViewReducer_1.fetchInvoicingTransactionList.match), (0, operators_1.switchMap)((action) => {
|
|
32
32
|
const { filters, cursor, keepExistingListItems, sort } = action.payload;
|
|
33
|
-
const
|
|
33
|
+
const { activeTab } = state$.value.invoicingTransactionListViewState;
|
|
34
|
+
const type = activeTab !== 'all' ? activeTab : undefined;
|
|
35
|
+
const apiUrl = (0, invoicingApiHelper_1.withQuery)(`${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/payments`, buildQuery(filters, type, cursor, sort));
|
|
34
36
|
return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.switchMap)((response) => {
|
|
35
37
|
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
36
38
|
const items = response.data?.items ?? [];
|
|
@@ -19,8 +19,9 @@ const shouldFetch = (fetchStateAndError, cacheOverride) => cacheOverride ||
|
|
|
19
19
|
const fetchInvoicingTransactionListPageEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(invoicingTransactionListViewReducer_1.fetchInvoicingTransactionListPage.match), (0, operators_1.mergeMap)((action) => {
|
|
20
20
|
const { cacheOverride, filters, sort } = action.payload;
|
|
21
21
|
const state = state$.value.invoicingTransactionListViewState;
|
|
22
|
+
const activeTabState = state.byTab[state.activeTab];
|
|
22
23
|
const pageActions = [];
|
|
23
|
-
if (shouldFetch({ fetchState:
|
|
24
|
+
if (shouldFetch({ fetchState: activeTabState.fetchState, error: activeTabState.error }, cacheOverride)) {
|
|
24
25
|
pageActions.push((0, invoicingTransactionListViewReducer_1.fetchInvoicingTransactionList)({ filters, sort }));
|
|
25
26
|
}
|
|
26
27
|
return (0, rxjs_1.concat)((0, rxjs_1.from)(pageActions));
|
package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.d.ts
CHANGED
|
@@ -25,6 +25,6 @@ export declare const fetchInvoicingTransactionList: import("@reduxjs/toolkit").A
|
|
|
25
25
|
ids: ID[];
|
|
26
26
|
keepExistingListItems: boolean;
|
|
27
27
|
nextCursor: string | null;
|
|
28
|
-
}, "invoicingTransactionListView/updateInvoicingTransactionList">, updateInvoicingTransactionListFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingTransactionListView/updateInvoicingTransactionListFailure">, updateInvoicingTransactionFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingTransactionFilters, "invoicingTransactionListView/updateInvoicingTransactionFilters">, addInvoicingTransactionToList: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "invoicingTransactionListView/addInvoicingTransactionToList">, clearInvoicingTransactionListView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingTransactionListView/clearInvoicingTransactionListView">;
|
|
28
|
+
}, "invoicingTransactionListView/updateInvoicingTransactionList">, updateInvoicingTransactionListFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingTransactionListView/updateInvoicingTransactionListFailure">, updateInvoicingTransactionFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingTransactionFilters, "invoicingTransactionListView/updateInvoicingTransactionFilters">, setInvoicingTransactionActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"refund" | "payment" | "all" | "authorization" | "payment_reversal", "invoicingTransactionListView/setInvoicingTransactionActiveTab">, addInvoicingTransactionToList: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "invoicingTransactionListView/addInvoicingTransactionToList">, clearInvoicingTransactionListView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingTransactionListView/clearInvoicingTransactionListView">;
|
|
29
29
|
declare const _default: import("redux").Reducer<InvoicingTransactionListViewState>;
|
|
30
30
|
export default _default;
|
package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.clearInvoicingTransactionListView = exports.addInvoicingTransactionToList = exports.updateInvoicingTransactionFilters = exports.updateInvoicingTransactionListFailure = exports.updateInvoicingTransactionList = exports.fetchInvoicingTransactionListPage = exports.fetchInvoicingTransactionList = exports.initialState = void 0;
|
|
4
|
+
exports.clearInvoicingTransactionListView = exports.addInvoicingTransactionToList = exports.setInvoicingTransactionActiveTab = exports.updateInvoicingTransactionFilters = exports.updateInvoicingTransactionListFailure = exports.updateInvoicingTransactionList = exports.fetchInvoicingTransactionListPage = exports.fetchInvoicingTransactionList = exports.initialState = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
|
+
const invoicingTransactionListViewState_1 = require("./invoicingTransactionListViewState");
|
|
7
|
+
/**
|
|
8
|
+
* Whether two transaction-list queries share the same base (tab-independent)
|
|
9
|
+
* query. When the base query changes (search / customer / status / sort) every
|
|
10
|
+
* per-tab cache is stale, so the reducer resets them all.
|
|
11
|
+
*/
|
|
12
|
+
const sameTransactionBaseQuery = (a, b) => a.filters.customerId === b.filters.customerId &&
|
|
13
|
+
a.filters.status === b.filters.status &&
|
|
14
|
+
a.filters.search === b.filters.search &&
|
|
15
|
+
a.sort?.field === b.sort?.field &&
|
|
16
|
+
a.sort?.dir === b.sort?.dir;
|
|
6
17
|
exports.initialState = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
ids: [],
|
|
10
|
-
nextCursor: null,
|
|
18
|
+
activeTab: 'all',
|
|
19
|
+
byTab: (0, invoicingTransactionListViewState_1.makeInvoicingTransactionIdsByTab)(),
|
|
11
20
|
filters: {},
|
|
12
|
-
hasValidState() {
|
|
13
|
-
return this.fetchState === 'Completed';
|
|
14
|
-
},
|
|
15
21
|
};
|
|
16
22
|
const invoicingTransactionListView = (0, toolkit_1.createSlice)({
|
|
17
23
|
name: 'invoicingTransactionListView',
|
|
@@ -19,14 +25,15 @@ const invoicingTransactionListView = (0, toolkit_1.createSlice)({
|
|
|
19
25
|
reducers: {
|
|
20
26
|
fetchInvoicingTransactionList: {
|
|
21
27
|
reducer(draft, action) {
|
|
28
|
+
const tab = draft.byTab[draft.activeTab];
|
|
22
29
|
if (!action.payload.keepExistingListItems) {
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
tab.ids = [];
|
|
31
|
+
tab.nextCursor = null;
|
|
25
32
|
}
|
|
26
33
|
draft.filters = action.payload.filters;
|
|
27
34
|
draft.sort = action.payload.sort;
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
tab.fetchState = 'In-Progress';
|
|
36
|
+
tab.error = undefined;
|
|
30
37
|
},
|
|
31
38
|
prepare(payload) {
|
|
32
39
|
return {
|
|
@@ -41,6 +48,12 @@ const invoicingTransactionListView = (0, toolkit_1.createSlice)({
|
|
|
41
48
|
},
|
|
42
49
|
fetchInvoicingTransactionListPage: {
|
|
43
50
|
reducer(draft, action) {
|
|
51
|
+
// A different base query invalidates every tab's cache — reset so the
|
|
52
|
+
// page epic's shouldFetch refetches the active tab instead of showing
|
|
53
|
+
// rows fetched under a stale search/customer/status/sort.
|
|
54
|
+
if (!sameTransactionBaseQuery(draft, action.payload)) {
|
|
55
|
+
draft.byTab = (0, invoicingTransactionListViewState_1.makeInvoicingTransactionIdsByTab)();
|
|
56
|
+
}
|
|
44
57
|
draft.filters = action.payload.filters;
|
|
45
58
|
draft.sort = action.payload.sort;
|
|
46
59
|
},
|
|
@@ -55,34 +68,52 @@ const invoicingTransactionListView = (0, toolkit_1.createSlice)({
|
|
|
55
68
|
},
|
|
56
69
|
},
|
|
57
70
|
updateInvoicingTransactionList(draft, action) {
|
|
58
|
-
|
|
59
|
-
|
|
71
|
+
const tab = draft.byTab[draft.activeTab];
|
|
72
|
+
tab.ids = action.payload.keepExistingListItems
|
|
73
|
+
? [...new Set([...tab.ids, ...action.payload.ids])]
|
|
60
74
|
: action.payload.ids;
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
75
|
+
tab.nextCursor = action.payload.nextCursor;
|
|
76
|
+
tab.fetchState = 'Completed';
|
|
77
|
+
tab.error = undefined;
|
|
64
78
|
},
|
|
65
79
|
updateInvoicingTransactionListFailure(draft, action) {
|
|
66
|
-
|
|
67
|
-
|
|
80
|
+
const tab = draft.byTab[draft.activeTab];
|
|
81
|
+
tab.fetchState = 'Error';
|
|
82
|
+
tab.error = action.payload;
|
|
68
83
|
},
|
|
69
84
|
updateInvoicingTransactionFilters(draft, action) {
|
|
70
85
|
draft.filters = action.payload;
|
|
71
86
|
},
|
|
87
|
+
// Select a type tab. The view dispatches the follow-up
|
|
88
|
+
// fetchInvoicingTransactionListPage so the page epic fetches the tab when
|
|
89
|
+
// its cache is empty and reuses it when already loaded.
|
|
90
|
+
setInvoicingTransactionActiveTab(draft, action) {
|
|
91
|
+
draft.activeTab = action.payload;
|
|
92
|
+
},
|
|
72
93
|
// Reflect a newly recorded payment's transaction in the cached list so the
|
|
73
|
-
// payments page shows it without refetching. The
|
|
74
|
-
//
|
|
94
|
+
// payments page shows it without refetching. The payload carries no type,
|
|
95
|
+
// so prepend to the 'all' tab and the tab currently in view (dedup/no-op if
|
|
96
|
+
// already present); other tabs refetch fresh on their next visit.
|
|
75
97
|
addInvoicingTransactionToList(draft, action) {
|
|
76
98
|
const id = action.payload;
|
|
77
|
-
|
|
78
|
-
|
|
99
|
+
const prependTo = (tabId) => {
|
|
100
|
+
const tab = draft.byTab[tabId];
|
|
101
|
+
if (!tab.ids.includes(id)) {
|
|
102
|
+
tab.ids = [id, ...tab.ids];
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
prependTo('all');
|
|
106
|
+
if (draft.activeTab !== 'all') {
|
|
107
|
+
prependTo(draft.activeTab);
|
|
79
108
|
}
|
|
80
|
-
draft.ids = [id, ...draft.ids];
|
|
81
109
|
},
|
|
82
110
|
clearInvoicingTransactionListView(draft) {
|
|
83
|
-
|
|
111
|
+
draft.activeTab = 'all';
|
|
112
|
+
draft.byTab = (0, invoicingTransactionListViewState_1.makeInvoicingTransactionIdsByTab)();
|
|
113
|
+
draft.filters = {};
|
|
114
|
+
draft.sort = undefined;
|
|
84
115
|
},
|
|
85
116
|
},
|
|
86
117
|
});
|
|
87
|
-
_a = invoicingTransactionListView.actions, exports.fetchInvoicingTransactionList = _a.fetchInvoicingTransactionList, exports.fetchInvoicingTransactionListPage = _a.fetchInvoicingTransactionListPage, exports.updateInvoicingTransactionList = _a.updateInvoicingTransactionList, exports.updateInvoicingTransactionListFailure = _a.updateInvoicingTransactionListFailure, exports.updateInvoicingTransactionFilters = _a.updateInvoicingTransactionFilters, exports.addInvoicingTransactionToList = _a.addInvoicingTransactionToList, exports.clearInvoicingTransactionListView = _a.clearInvoicingTransactionListView;
|
|
118
|
+
_a = invoicingTransactionListView.actions, exports.fetchInvoicingTransactionList = _a.fetchInvoicingTransactionList, exports.fetchInvoicingTransactionListPage = _a.fetchInvoicingTransactionListPage, exports.updateInvoicingTransactionList = _a.updateInvoicingTransactionList, exports.updateInvoicingTransactionListFailure = _a.updateInvoicingTransactionListFailure, exports.updateInvoicingTransactionFilters = _a.updateInvoicingTransactionFilters, exports.setInvoicingTransactionActiveTab = _a.setInvoicingTransactionActiveTab, exports.addInvoicingTransactionToList = _a.addInvoicingTransactionToList, exports.clearInvoicingTransactionListView = _a.clearInvoicingTransactionListView;
|
|
88
119
|
exports.default = invoicingTransactionListView.reducer;
|
package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { RootState } from '../../../reducer';
|
|
|
4
4
|
import { InvoicingListSort } from '../invoicingApiHelper';
|
|
5
5
|
import { InvoicingTransactionColumnConfig, InvoicingTransactionFilters, InvoicingTransactionTabId } from './invoicingTransactionListViewState';
|
|
6
6
|
export interface InvoicingTransactionListView extends SelectorView {
|
|
7
|
+
activeTab: InvoicingTransactionTabId;
|
|
7
8
|
columns: InvoicingTransactionColumnConfig[];
|
|
8
9
|
filters: InvoicingTransactionFilters;
|
|
9
10
|
nextCursor: string | null;
|
package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.js
CHANGED
|
@@ -9,14 +9,18 @@ const invoicingTransactionListViewState_1 = require("./invoicingTransactionListV
|
|
|
9
9
|
* object) keep referential identity until the transaction entity slice or the
|
|
10
10
|
* list-view slice actually change.
|
|
11
11
|
*/
|
|
12
|
-
exports.getInvoicingTransactionListView = (0, toolkit_1.createSelector)((state) => state.invoicingTransactionState, (state) => state.invoicingTransactionListViewState, (transactionState, listViewState) =>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
12
|
+
exports.getInvoicingTransactionListView = (0, toolkit_1.createSelector)((state) => state.invoicingTransactionState, (state) => state.invoicingTransactionListViewState, (transactionState, listViewState) => {
|
|
13
|
+
const activeTabState = listViewState.byTab[listViewState.activeTab];
|
|
14
|
+
return {
|
|
15
|
+
activeTab: listViewState.activeTab,
|
|
16
|
+
columns: invoicingTransactionListViewState_1.INVOICING_TRANSACTION_COLUMNS,
|
|
17
|
+
transactions: (0, invoicingTransactionSelector_1.getInvoicingTransactionsByIds)(transactionState, activeTabState.ids),
|
|
18
|
+
filters: listViewState.filters,
|
|
19
|
+
nextCursor: activeTabState.nextCursor,
|
|
20
|
+
fetchState: activeTabState.fetchState,
|
|
21
|
+
error: activeTabState.error,
|
|
22
|
+
tabIds: invoicingTransactionListViewState_1.INVOICING_TRANSACTION_TABS,
|
|
23
|
+
sort: listViewState.sort,
|
|
24
|
+
version: 1.0,
|
|
25
|
+
};
|
|
26
|
+
});
|
package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FetchStateAndError, ID } from '../../../commonStateTypes/common';
|
|
2
2
|
import { InvoicingListSort } from '../invoicingApiHelper';
|
|
3
3
|
export interface InvoicingTransactionFilters {
|
|
4
4
|
customerId?: ID;
|
|
5
5
|
search?: string;
|
|
6
6
|
status?: string;
|
|
7
|
-
type?: string;
|
|
8
7
|
}
|
|
9
8
|
export declare const ALL_INVOICING_TRANSACTION_SORT_KEYS: readonly ["transaction", "customer", "method", "date", "type", "gateway", "status", "amount"];
|
|
10
9
|
export declare const toInvoicingTransactionSortKey: (v: string) => "date" | "amount" | "status" | "type" | "transaction" | "customer" | "gateway" | "method";
|
|
@@ -31,10 +30,25 @@ export type InvoicingTransactionTabId = ReturnType<typeof toInvoicingTransaction
|
|
|
31
30
|
* display order.
|
|
32
31
|
*/
|
|
33
32
|
export declare const INVOICING_TRANSACTION_TABS: InvoicingTransactionTabId[];
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Per-tab cache slice. Each `type` tab is a separate server query (the backend
|
|
35
|
+
* filters by `type`), so its loaded ids, pagination cursor and fetch state are
|
|
36
|
+
* cached independently. Mirrors the `userListByType` per-key cache pattern.
|
|
37
|
+
*/
|
|
38
|
+
export interface InvoicingTransactionTabState extends FetchStateAndError {
|
|
36
39
|
ids: ID[];
|
|
37
40
|
nextCursor: string | null;
|
|
41
|
+
}
|
|
42
|
+
export type InvoicingTransactionIdsByTab = Record<InvoicingTransactionTabId, InvoicingTransactionTabState>;
|
|
43
|
+
export interface InvoicingTransactionListViewState {
|
|
44
|
+
/** Selected type tab (CES-owned so it persists across page revisits). */
|
|
45
|
+
activeTab: InvoicingTransactionTabId;
|
|
46
|
+
/** Per-tab cached ids + cursor + fetch state. */
|
|
47
|
+
byTab: InvoicingTransactionIdsByTab;
|
|
48
|
+
/** Base query shared across tabs (search / customer / status). */
|
|
49
|
+
filters: InvoicingTransactionFilters;
|
|
38
50
|
/** Active server-side sort (undefined = backend default order). */
|
|
39
51
|
sort?: InvoicingListSort;
|
|
40
52
|
}
|
|
53
|
+
export declare const makeInvoicingTransactionTabState: () => InvoicingTransactionTabState;
|
|
54
|
+
export declare const makeInvoicingTransactionIdsByTab: () => InvoicingTransactionIdsByTab;
|
package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.INVOICING_TRANSACTION_TABS = exports.toInvoicingTransactionTabId = exports.ALL_INVOICING_TRANSACTION_TAB_IDS = exports.INVOICING_TRANSACTION_COLUMNS = exports.toInvoicingTransactionSortKey = exports.ALL_INVOICING_TRANSACTION_SORT_KEYS = void 0;
|
|
3
|
+
exports.makeInvoicingTransactionIdsByTab = exports.makeInvoicingTransactionTabState = exports.INVOICING_TRANSACTION_TABS = exports.toInvoicingTransactionTabId = exports.ALL_INVOICING_TRANSACTION_TAB_IDS = exports.INVOICING_TRANSACTION_COLUMNS = exports.toInvoicingTransactionSortKey = exports.ALL_INVOICING_TRANSACTION_SORT_KEYS = void 0;
|
|
4
4
|
const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
|
|
5
5
|
exports.ALL_INVOICING_TRANSACTION_SORT_KEYS = [
|
|
6
6
|
'transaction',
|
|
@@ -42,3 +42,15 @@ exports.toInvoicingTransactionTabId = toInvoicingTransactionTabId;
|
|
|
42
42
|
exports.INVOICING_TRANSACTION_TABS = [
|
|
43
43
|
...exports.ALL_INVOICING_TRANSACTION_TAB_IDS,
|
|
44
44
|
];
|
|
45
|
+
const makeInvoicingTransactionTabState = () => ({
|
|
46
|
+
ids: [],
|
|
47
|
+
nextCursor: null,
|
|
48
|
+
fetchState: 'Not-Started',
|
|
49
|
+
error: undefined,
|
|
50
|
+
});
|
|
51
|
+
exports.makeInvoicingTransactionTabState = makeInvoicingTransactionTabState;
|
|
52
|
+
const makeInvoicingTransactionIdsByTab = () => exports.ALL_INVOICING_TRANSACTION_TAB_IDS.reduce((acc, tabId) => {
|
|
53
|
+
acc[tabId] = (0, exports.makeInvoicingTransactionTabState)();
|
|
54
|
+
return acc;
|
|
55
|
+
}, {});
|
|
56
|
+
exports.makeInvoicingTransactionIdsByTab = makeInvoicingTransactionIdsByTab;
|
|
@@ -55,6 +55,7 @@ export interface StepWithStatus extends StepWithUser {
|
|
|
55
55
|
actorsActivity: ActorActivityWithUser[];
|
|
56
56
|
isOriginalApprovalStep: boolean;
|
|
57
57
|
displayPendingApproverAsAdmin?: boolean;
|
|
58
|
+
showSodAdminLabel?: boolean;
|
|
58
59
|
}
|
|
59
60
|
export interface ActorActivityWithUser {
|
|
60
61
|
activity: ActivityStatus;
|
|
@@ -28,7 +28,12 @@ const billPayConfigState_1 = require("../billPayConfig/billPayConfigState");
|
|
|
28
28
|
const previousBillsSelector_1 = require("../previousBills/previousBillsSelector");
|
|
29
29
|
const billDetailViewState_1 = require("./billDetailViewState");
|
|
30
30
|
const getBillActivities = (state, billId, billStageCode) => {
|
|
31
|
-
const { billDetailViewState, approvalRuleState, entityApprovalStatusState, userState, } = state;
|
|
31
|
+
const { billDetailViewState, approvalRuleState, entityApprovalStatusState, userState, billTransactionState, } = state;
|
|
32
|
+
// Note: createdBy is undefined until billTransactionState is populated.
|
|
33
|
+
// getBillActivities is called from getBillDetailView which runs after the
|
|
34
|
+
// bill entity epic completes — this assumption must hold for showSodAdminLabel
|
|
35
|
+
// to render on first paint.
|
|
36
|
+
const createdBy = billTransactionState.transactionById[billId]?.createdBy;
|
|
32
37
|
const key = (0, billDetailViewState_1.getBillTransactionDetailKey)(billId);
|
|
33
38
|
const billDetail = (0, get_1.default)(billDetailViewState.billDetailById, key, undefined);
|
|
34
39
|
let billActivities = [];
|
|
@@ -91,6 +96,7 @@ const getBillActivities = (state, billId, billStageCode) => {
|
|
|
91
96
|
actorsActivity,
|
|
92
97
|
isOriginalApprovalStep: step.isOriginalApprovalStep,
|
|
93
98
|
displayPendingApproverAsAdmin: (0, helpers_1.isSodAdminFallbackEligibleForStep)(sodExcludedApproverUserId, isAdminFallbackApprover, actorsActivity),
|
|
99
|
+
showSodAdminLabel: (0, helpers_1.shouldShowSodAdminLabel)(sodExcludedApproverUserId, actorsActivity, createdBy),
|
|
94
100
|
};
|
|
95
101
|
}),
|
|
96
102
|
};
|
|
@@ -17,6 +17,7 @@ import { RemiActivity } from './reimbursement/remiDetailView/remiDetailViewSelec
|
|
|
17
17
|
export declare const isUserActorOnApprovalStep: (userId: ID, stepActorsActivity: ActorActivityWithUser[]) => boolean;
|
|
18
18
|
export declare const isSodExcludedViewerBlocked: (sodExcludedApproverUserId?: ID, signedInUserId?: ID, stepActorsActivity?: ActorActivityWithUser[]) => boolean;
|
|
19
19
|
export declare const isSodAdminFallbackEligibleForStep: (sodExcludedApproverUserId?: ID, isAdminFallbackApprover?: boolean, stepActorsActivity?: ActorActivityWithUser[]) => boolean;
|
|
20
|
+
export declare const shouldShowSodAdminLabel: (sodExcludedApproverUserId?: ID, stepActorsActivity?: ActorActivityWithUser[], entitySubjectUserId?: ID) => boolean;
|
|
20
21
|
export declare const getLatestApprovalDate: (allActivities: BillActivity[] | RemiActivity[]) => ZeniDate | undefined;
|
|
21
22
|
export declare function getSpendManagementEffectiveListPeriod(): import("../..").TimePeriod;
|
|
22
23
|
export declare const getSelectedCompanyOfficer: (verificationDetails: BusinessVerificationDetails) => CompanyOfficersDetails | undefined;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.toSameDayAchDisablementConfig = exports.checkIfLowBalance = exports.getReportIDPlusForecastIDFromSetupViewType = exports.isAwaitingMarkAsPaid = exports.isPaymentMethodOutsideZeni = exports.toAccountsPromoConfig = exports.getBulkOperationSuffix = exports.getRemiListUniqueType = exports.getBillListUniqueType = exports.isBulkProcessing = exports.getActualPaymentDate = exports.accountTypeSubConfigCodeToAccType = exports.isRecurringConfigChanged = exports.updateRecurringBillDetails = exports.getPaymentDateFromVendorReceiveDate = exports.getSelectedCompanyOfficer = exports.getLatestApprovalDate = exports.isSodAdminFallbackEligibleForStep = exports.isSodExcludedViewerBlocked = exports.isUserActorOnApprovalStep = void 0;
|
|
6
|
+
exports.toSameDayAchDisablementConfig = exports.checkIfLowBalance = exports.getReportIDPlusForecastIDFromSetupViewType = exports.isAwaitingMarkAsPaid = exports.isPaymentMethodOutsideZeni = exports.toAccountsPromoConfig = exports.getBulkOperationSuffix = exports.getRemiListUniqueType = exports.getBillListUniqueType = exports.isBulkProcessing = exports.getActualPaymentDate = exports.accountTypeSubConfigCodeToAccType = exports.isRecurringConfigChanged = exports.updateRecurringBillDetails = exports.getPaymentDateFromVendorReceiveDate = exports.getSelectedCompanyOfficer = exports.getLatestApprovalDate = exports.shouldShowSodAdminLabel = exports.isSodAdminFallbackEligibleForStep = exports.isSodExcludedViewerBlocked = exports.isUserActorOnApprovalStep = void 0;
|
|
7
7
|
exports.getSpendManagementEffectiveListPeriod = getSpendManagementEffectiveListPeriod;
|
|
8
8
|
exports.showReimbursementPromoPage = showReimbursementPromoPage;
|
|
9
9
|
exports.showBillPayPromoPage = showBillPayPromoPage;
|
|
@@ -33,6 +33,19 @@ const isSodAdminFallbackEligibleForStep = (sodExcludedApproverUserId, isAdminFal
|
|
|
33
33
|
pendingResolvedApprovers.every((activity) => getUserActorId(activity) === sodExcludedApproverUserId));
|
|
34
34
|
};
|
|
35
35
|
exports.isSodAdminFallbackEligibleForStep = isSodAdminFallbackEligibleForStep;
|
|
36
|
+
const isSodExcludedUserSolePendingApproverOnStep = (sodExcludedApproverUserId, stepActorsActivity = []) => {
|
|
37
|
+
if (sodExcludedApproverUserId == null) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const pendingResolvedApprovers = stepActorsActivity.filter((activity) => activity.activity === 'pending' && getUserActorId(activity) != null);
|
|
41
|
+
return (pendingResolvedApprovers.length > 0 &&
|
|
42
|
+
pendingResolvedApprovers.every((activity) => getUserActorId(activity) === sodExcludedApproverUserId));
|
|
43
|
+
};
|
|
44
|
+
const shouldShowSodAdminLabel = (sodExcludedApproverUserId, stepActorsActivity = [], entitySubjectUserId) => sodExcludedApproverUserId != null &&
|
|
45
|
+
entitySubjectUserId != null &&
|
|
46
|
+
sodExcludedApproverUserId === entitySubjectUserId &&
|
|
47
|
+
isSodExcludedUserSolePendingApproverOnStep(sodExcludedApproverUserId, stepActorsActivity);
|
|
48
|
+
exports.shouldShowSodAdminLabel = shouldShowSodAdminLabel;
|
|
36
49
|
const getLatestApprovalDate = (allActivities) => {
|
|
37
50
|
let allStepsWithStatus = [];
|
|
38
51
|
let allApprovedActions = [];
|
package/lib/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ import { fetchUserFinancialAccount } from '../../../../userFinancialAccount/user
|
|
|
7
7
|
import { fetchMerchantList } from '../../../merchantList/merchantListReducer';
|
|
8
8
|
import { fetchReimbursementConfig } from '../../reimbursementConfig/reimbursementConfigReducer';
|
|
9
9
|
import { fetchRemiDetail } from '../../remiDetailView/remiDetailViewReducer';
|
|
10
|
-
import { fetchRemiSetupApproverView } from '../../remiSetupApproverView/remiSetupApproverViewReducer';
|
|
11
10
|
import { fetchEditRemiDetailPage, fetchRemiAndInitializeLocalStore, updatesPaymentToInLocalStore } from '../editRemiViewReducer';
|
|
12
|
-
export type ActionType = ReturnType<typeof fetchEditRemiDetailPage> | ReturnType<typeof fetchRemiDetail> | ReturnType<typeof fetchClassList> | ReturnType<typeof fetchMerchantList> | ReturnType<typeof fetchUserFinancialAccount> | ReturnType<typeof updatesPaymentToInLocalStore> | ReturnType<typeof fetchReimbursementConfig> | ReturnType<typeof fetchAccountList> | ReturnType<typeof fetchRemiAndInitializeLocalStore
|
|
11
|
+
export type ActionType = ReturnType<typeof fetchEditRemiDetailPage> | ReturnType<typeof fetchRemiDetail> | ReturnType<typeof fetchClassList> | ReturnType<typeof fetchMerchantList> | ReturnType<typeof fetchUserFinancialAccount> | ReturnType<typeof updatesPaymentToInLocalStore> | ReturnType<typeof fetchReimbursementConfig> | ReturnType<typeof fetchAccountList> | ReturnType<typeof fetchRemiAndInitializeLocalStore>;
|
|
13
12
|
export declare const fetchEditRemiDetailPageEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;
|
package/lib/view/spendManagement/reimbursement/editRemiView/epics/fetchEditRemiDetailPageEpic.js
CHANGED
|
@@ -9,7 +9,6 @@ const userFinancialAccountReducer_1 = require("../../../../userFinancialAccount/
|
|
|
9
9
|
const userFinancialAccountSelector_1 = require("../../../../userFinancialAccount/userFinancialAccountSelector");
|
|
10
10
|
const merchantListReducer_1 = require("../../../merchantList/merchantListReducer");
|
|
11
11
|
const reimbursementConfigReducer_1 = require("../../reimbursementConfig/reimbursementConfigReducer");
|
|
12
|
-
const remiSetupApproverViewReducer_1 = require("../../remiSetupApproverView/remiSetupApproverViewReducer");
|
|
13
12
|
const editRemiViewReducer_1 = require("../editRemiViewReducer");
|
|
14
13
|
const fetchEditRemiDetailPageEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(editRemiViewReducer_1.fetchEditRemiDetailPage.match), (0, operators_1.mergeMap)((action) => {
|
|
15
14
|
const { cacheOverride, isLimitedCategoryEnabled, reimbursementId, isShowDeletedReimbursementEnabled, } = action.payload;
|
|
@@ -62,17 +61,6 @@ const fetchEditRemiDetailPageEpic = (actions$, state$) => actions$.pipe((0, oper
|
|
|
62
61
|
if (reimbursementId != null) {
|
|
63
62
|
remiDetailActions.push((0, editRemiViewReducer_1.fetchRemiAndInitializeLocalStore)(reimbursementId, false, isShowDeletedReimbursementEnabled));
|
|
64
63
|
}
|
|
65
|
-
else {
|
|
66
|
-
const approvalRules = state.remiSetupApproverViewState;
|
|
67
|
-
if (approvalRules.fetchState !== 'Completed' &&
|
|
68
|
-
approvalRules.fetchState !== 'In-Progress') {
|
|
69
|
-
// Side-fetch from the edit-reim page bootstrap. The
|
|
70
|
-
// triggering action doesn't carry the V3 flag, so we
|
|
71
|
-
// explicitly target v1; v3 tenants re-fetch via their
|
|
72
|
-
// own screen connector.
|
|
73
|
-
remiDetailActions.push((0, remiSetupApproverViewReducer_1.fetchRemiSetupApproverView)(true, false, false, false));
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
64
|
}
|
|
77
65
|
return (0, rxjs_1.concat)((0, rxjs_1.from)(remiDetailActions));
|
|
78
66
|
}));
|
|
@@ -44,6 +44,7 @@ export interface StepWithStatus extends StepWithUser {
|
|
|
44
44
|
actorsActivity: ActorActivityWithUser[];
|
|
45
45
|
isOriginalApprovalStep: boolean;
|
|
46
46
|
displayPendingApproverAsAdmin?: boolean;
|
|
47
|
+
showSodAdminLabel?: boolean;
|
|
47
48
|
}
|
|
48
49
|
export interface ActorActivityWithUser extends Actor {
|
|
49
50
|
activity: ActivityStatus;
|
|
@@ -117,7 +117,8 @@ const getRemiDetailView = (state, reimbursementId) => {
|
|
|
117
117
|
};
|
|
118
118
|
exports.getRemiDetailView = getRemiDetailView;
|
|
119
119
|
const getRemiActivities = (state, reimbursementId, billStageCode) => {
|
|
120
|
-
const { remiDetailViewState, approvalRuleState, entityApprovalStatusState, userState, } = state;
|
|
120
|
+
const { remiDetailViewState, approvalRuleState, entityApprovalStatusState, userState, reimbursementState, } = state;
|
|
121
|
+
const reimburseeUserId = reimbursementState.reimbursementById[reimbursementId]?.reimburseeUserId;
|
|
121
122
|
const remiTransactionDetails = (0, get_1.default)(remiDetailViewState.remiDetailById, reimbursementId, undefined);
|
|
122
123
|
let remiActivities = [];
|
|
123
124
|
if (remiTransactionDetails != null) {
|
|
@@ -179,6 +180,7 @@ const getRemiActivities = (state, reimbursementId, billStageCode) => {
|
|
|
179
180
|
actorsActivity,
|
|
180
181
|
isOriginalApprovalStep: step.isOriginalApprovalStep,
|
|
181
182
|
displayPendingApproverAsAdmin: (0, helpers_1.isSodAdminFallbackEligibleForStep)(sodExcludedApproverUserId, isAdminFallbackApprover, actorsActivity),
|
|
183
|
+
showSodAdminLabel: (0, helpers_1.shouldShowSodAdminLabel)(sodExcludedApproverUserId, actorsActivity, reimburseeUserId),
|
|
182
184
|
};
|
|
183
185
|
}),
|
|
184
186
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.69-betaAK0",
|
|
4
4
|
"description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/esm/index.js",
|