@zeniai/client-epic-state 5.1.59 → 5.1.60-beta0ND
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/epic.d.ts +2 -1
- package/lib/epic.js +2 -1
- package/lib/esm/epic.js +2 -1
- package/lib/esm/index.js +2 -2
- package/lib/esm/view/commonVendorView/transactionVendorView/epics/saveTransactionVendorEpic.js +0 -1
- package/lib/esm/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.js +1 -2
- package/lib/esm/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +3 -3
- package/lib/esm/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +2 -3
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +1 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +4 -4
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.js +2 -4
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/markTransactionAsNotMiscategorizedEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/saveTransactionCategorizationEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewReducer.js +3 -4
- package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +14 -25
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +21 -32
- package/lib/esm/view/recommendation/fetchEntityRecommendationsByTransactionIdEpic.js +2 -2
- package/lib/esm/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +2 -2
- package/lib/esm/view/recommendation/recommendationReducer.js +18 -3
- package/lib/esm/view/recommendation/submitRecommendationFeedbackEpic.js +51 -0
- package/lib/esm/view/transactionDetail/epics/saveTransactionDetailEpic.js +2 -2
- package/lib/esm/view/transactionDetail/epics/updateTransactionDetailEpic.js +2 -2
- package/lib/esm/view/transactionDetail/transactionDetailReducer.js +1 -2
- package/lib/index.d.ts +2 -2
- package/lib/index.js +18 -17
- package/lib/view/commonVendorView/transactionVendorView/epics/saveTransactionVendorEpic.js +0 -1
- package/lib/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.d.ts +1 -2
- package/lib/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.js +1 -2
- package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +3 -3
- package/lib/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +2 -3
- package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +1 -1
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +4 -4
- package/lib/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.js +2 -4
- package/lib/view/expenseAutomationView/epics/transactionCategorization/markTransactionAsNotMiscategorizedEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/saveTransactionCategorizationEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic.js +2 -2
- package/lib/view/expenseAutomationView/expenseAutomationViewReducer.d.ts +2 -5
- package/lib/view/expenseAutomationView/expenseAutomationViewReducer.js +3 -4
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +5 -5
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +14 -25
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +10 -23
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +21 -32
- package/lib/view/recommendation/fetchEntityRecommendationsByTransactionIdEpic.js +2 -2
- package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +2 -2
- package/lib/view/recommendation/recommendationPayload.d.ts +33 -0
- package/lib/view/recommendation/recommendationReducer.d.ts +3 -4
- package/lib/view/recommendation/recommendationReducer.js +19 -4
- package/lib/view/recommendation/submitRecommendationFeedbackEpic.d.ts +7 -0
- package/lib/view/recommendation/submitRecommendationFeedbackEpic.js +55 -0
- package/lib/view/transactionDetail/epics/saveTransactionDetailEpic.js +2 -2
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.js +2 -2
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +1 -3
- package/lib/view/transactionDetail/transactionDetailReducer.js +1 -2
- package/package.json +1 -1
|
@@ -12,4 +12,37 @@ interface FetchRecommendationPayloadWithCOT {
|
|
|
12
12
|
recommendations: RecommendationPayloadWithCOT[];
|
|
13
13
|
}
|
|
14
14
|
export type FetchRecommendationResponseWithCOT = ZeniAPIResponse<FetchRecommendationPayloadWithCOT>;
|
|
15
|
+
export type RecommendationFeedbackDimension = 'vendor' | 'category' | 'class';
|
|
16
|
+
export type RecommendationFeedbackSource = 'primary' | 'alternate' | 'shadow' | 'qbo';
|
|
17
|
+
export type RecommendationFeedbackOutcome = 'accepted' | 'override_ranked' | 'override_outside';
|
|
18
|
+
export interface RecommendationFeedbackValue {
|
|
19
|
+
name: string;
|
|
20
|
+
id?: string | null;
|
|
21
|
+
integrationId?: string | null;
|
|
22
|
+
}
|
|
23
|
+
export interface ShownRecommendationForFeedback {
|
|
24
|
+
rank: number;
|
|
25
|
+
source: RecommendationFeedbackSource;
|
|
26
|
+
value: RecommendationFeedbackValue;
|
|
27
|
+
confidence?: number | null;
|
|
28
|
+
cot?: string[];
|
|
29
|
+
reasoning?: string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface SubmitRecommendationFeedbackPayload {
|
|
32
|
+
dimension: RecommendationFeedbackDimension;
|
|
33
|
+
outcome: RecommendationFeedbackOutcome;
|
|
34
|
+
selected: RecommendationFeedbackValue & {
|
|
35
|
+
isNewEntity?: boolean;
|
|
36
|
+
};
|
|
37
|
+
transactionId: string;
|
|
38
|
+
features?: Record<string, unknown> | null;
|
|
39
|
+
lineId?: string | null;
|
|
40
|
+
matchedRank?: number | null;
|
|
41
|
+
matchedSource?: RecommendationFeedbackSource | null;
|
|
42
|
+
reasonText?: string | null;
|
|
43
|
+
recommendationSetId?: string | null;
|
|
44
|
+
shownRecommendations?: ShownRecommendationForFeedback[];
|
|
45
|
+
skipped?: boolean;
|
|
46
|
+
topPickSource?: RecommendationFeedbackSource | null;
|
|
47
|
+
}
|
|
15
48
|
export {};
|
|
@@ -5,6 +5,7 @@ import { TransactionID } from '../../entity/transaction/stateTypes/transaction';
|
|
|
5
5
|
import { SupportedTransaction } from '../../entity/transaction/transactionState';
|
|
6
6
|
import { ZeniAPIStatus } from '../../responsePayload';
|
|
7
7
|
import { TransactionsTab } from '../expenseAutomationView/types/transactionsViewState';
|
|
8
|
+
import { SubmitRecommendationFeedbackPayload } from './recommendationPayload';
|
|
8
9
|
import { EntityRecommendationState } from './recommendationState';
|
|
9
10
|
export type RecommendationLineUpdateFlowType = 'categorization' | 'detail';
|
|
10
11
|
type FetchEntityRecommendationsForLineUpdateCommonPayload = {
|
|
@@ -17,7 +18,6 @@ type FetchEntityRecommendationsForLineUpdateCommonPayload = {
|
|
|
17
18
|
};
|
|
18
19
|
isBulkFetch?: boolean;
|
|
19
20
|
isFetchCOT?: boolean;
|
|
20
|
-
isUncategorizedExpenseCategoryEnabled?: boolean;
|
|
21
21
|
};
|
|
22
22
|
export type FetchEntityRecommendationsForLineUpdatePayload = (FetchEntityRecommendationsForLineUpdateCommonPayload & {
|
|
23
23
|
flowType: 'categorization';
|
|
@@ -30,7 +30,7 @@ export declare const fetchEntityRecommendationsByTransactionId: import("@reduxjs
|
|
|
30
30
|
lineIds: ID[];
|
|
31
31
|
transaction: SupportedTransaction;
|
|
32
32
|
transactionId: TransactionID;
|
|
33
|
-
}, isBulkFetch: boolean, isTransactionCategorizationFlow?: any, isFetchCOT?: any
|
|
33
|
+
}, isBulkFetch: boolean, isTransactionCategorizationFlow?: any, isFetchCOT?: any], {
|
|
34
34
|
entity: Entity;
|
|
35
35
|
amount: number;
|
|
36
36
|
transactionDetails: {
|
|
@@ -41,7 +41,6 @@ export declare const fetchEntityRecommendationsByTransactionId: import("@reduxjs
|
|
|
41
41
|
isBulkFetch: boolean;
|
|
42
42
|
isTransactionCategorizationFlow: any;
|
|
43
43
|
isFetchCOT: any;
|
|
44
|
-
isUncategorizedExpenseCategoryEnabled: boolean | undefined;
|
|
45
44
|
}, "recommendation/fetchEntityRecommendationsByTransactionId", never, never>, fetchEntityRecommendationsForLineUpdate: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[args: FetchEntityRecommendationsForLineUpdatePayload], FetchEntityRecommendationsForLineUpdatePayload, "recommendation/fetchEntityRecommendationsForLineUpdate", never, never>, fetchRecommendationByEntityName: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[entityName: string, entityType: EntityType], {
|
|
46
45
|
entityName: string;
|
|
47
46
|
entityType: EntityType;
|
|
@@ -59,6 +58,6 @@ export declare const fetchEntityRecommendationsByTransactionId: import("@reduxjs
|
|
|
59
58
|
}, "recommendation/updateRecommendationForEntityFailure">, indicateReadyToInitializeRecommendation: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[entityIdOrName: string, entityType: EntityType], {
|
|
60
59
|
entityIdOrName: string;
|
|
61
60
|
entityType: EntityType;
|
|
62
|
-
}, "recommendation/indicateReadyToInitializeRecommendation", never, never>, clearRecommendation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"recommendation/clearRecommendation">;
|
|
61
|
+
}, "recommendation/indicateReadyToInitializeRecommendation", never, never>, clearRecommendation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"recommendation/clearRecommendation">, submitRecommendationFeedback: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[args: SubmitRecommendationFeedbackPayload], SubmitRecommendationFeedbackPayload, "recommendation/submitRecommendationFeedback", never, never>;
|
|
63
62
|
declare const _default: import("redux").Reducer<EntityRecommendationState>;
|
|
64
63
|
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.clearRecommendation = exports.indicateReadyToInitializeRecommendation = exports.updateRecommendationForEntityFailure = exports.updateRecommendationForEntity = exports.fetchRecommendationByEntityId = exports.fetchRecommendationByEntityName = exports.fetchEntityRecommendationsForLineUpdate = exports.fetchEntityRecommendationsByTransactionId = exports.initialState = void 0;
|
|
4
|
+
exports.submitRecommendationFeedback = exports.clearRecommendation = exports.indicateReadyToInitializeRecommendation = exports.updateRecommendationForEntityFailure = exports.updateRecommendationForEntity = exports.fetchRecommendationByEntityId = exports.fetchRecommendationByEntityName = exports.fetchEntityRecommendationsForLineUpdate = exports.fetchEntityRecommendationsByTransactionId = exports.initialState = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
const recommendationState_1 = require("./recommendationState");
|
|
7
7
|
exports.initialState = {
|
|
@@ -23,7 +23,7 @@ const recommendation = (0, toolkit_1.createSlice)({
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
|
-
prepare(entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow = false, isFetchCOT = false
|
|
26
|
+
prepare(entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow = false, isFetchCOT = false) {
|
|
27
27
|
return {
|
|
28
28
|
payload: {
|
|
29
29
|
entity,
|
|
@@ -32,7 +32,6 @@ const recommendation = (0, toolkit_1.createSlice)({
|
|
|
32
32
|
isBulkFetch,
|
|
33
33
|
isTransactionCategorizationFlow,
|
|
34
34
|
isFetchCOT,
|
|
35
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
36
35
|
},
|
|
37
36
|
};
|
|
38
37
|
},
|
|
@@ -138,9 +137,25 @@ const recommendation = (0, toolkit_1.createSlice)({
|
|
|
138
137
|
clearRecommendation(draft) {
|
|
139
138
|
Object.assign(draft, exports.initialState);
|
|
140
139
|
},
|
|
140
|
+
// Fire-and-forget human feedback on a recommendation (accept, ranked
|
|
141
|
+
// override or outside override). Handled by submitRecommendationFeedbackEpic
|
|
142
|
+
// which POSTs to the accounting recommendation-feedback endpoint. No state
|
|
143
|
+
// mutation: the categorization UX must not depend on the feedback round-trip.
|
|
144
|
+
submitRecommendationFeedback: {
|
|
145
|
+
reducer(
|
|
146
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
147
|
+
_draft,
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
149
|
+
_action) {
|
|
150
|
+
// do nothing
|
|
151
|
+
},
|
|
152
|
+
prepare(args) {
|
|
153
|
+
return { payload: args };
|
|
154
|
+
},
|
|
155
|
+
},
|
|
141
156
|
},
|
|
142
157
|
});
|
|
143
|
-
_a = recommendation.actions, exports.fetchEntityRecommendationsByTransactionId = _a.fetchEntityRecommendationsByTransactionId, exports.fetchEntityRecommendationsForLineUpdate = _a.fetchEntityRecommendationsForLineUpdate, exports.fetchRecommendationByEntityName = _a.fetchRecommendationByEntityName, exports.fetchRecommendationByEntityId = _a.fetchRecommendationByEntityId, exports.updateRecommendationForEntity = _a.updateRecommendationForEntity, exports.updateRecommendationForEntityFailure = _a.updateRecommendationForEntityFailure, exports.indicateReadyToInitializeRecommendation = _a.indicateReadyToInitializeRecommendation, exports.clearRecommendation = _a.clearRecommendation;
|
|
158
|
+
_a = recommendation.actions, exports.fetchEntityRecommendationsByTransactionId = _a.fetchEntityRecommendationsByTransactionId, exports.fetchEntityRecommendationsForLineUpdate = _a.fetchEntityRecommendationsForLineUpdate, exports.fetchRecommendationByEntityName = _a.fetchRecommendationByEntityName, exports.fetchRecommendationByEntityId = _a.fetchRecommendationByEntityId, exports.updateRecommendationForEntity = _a.updateRecommendationForEntity, exports.updateRecommendationForEntityFailure = _a.updateRecommendationForEntityFailure, exports.indicateReadyToInitializeRecommendation = _a.indicateReadyToInitializeRecommendation, exports.clearRecommendation = _a.clearRecommendation, exports.submitRecommendationFeedback = _a.submitRecommendationFeedback;
|
|
144
159
|
exports.default = recommendation.reducer;
|
|
145
160
|
const doUpdateRecommendationForEntity = (draft, entityId, entityType, payload) => {
|
|
146
161
|
const key = (0, recommendationState_1.getEntityRecommendationKey)(entityType, entityId);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../zeniAPI';
|
|
5
|
+
import { submitRecommendationFeedback } from './recommendationReducer';
|
|
6
|
+
export type ActionType = ReturnType<typeof submitRecommendationFeedback>;
|
|
7
|
+
export declare const submitRecommendationFeedbackEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.submitRecommendationFeedbackEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../responsePayload");
|
|
7
|
+
const recommendationReducer_1 = require("./recommendationReducer");
|
|
8
|
+
const toRequestBody = (payload) => ({
|
|
9
|
+
line_id: payload.lineId ?? null,
|
|
10
|
+
dimension: payload.dimension,
|
|
11
|
+
recommendation_set_id: payload.recommendationSetId ?? null,
|
|
12
|
+
top_pick_source: payload.topPickSource ?? null,
|
|
13
|
+
shown_recommendations: (payload.shownRecommendations ?? []).map((recommendation) => ({
|
|
14
|
+
source: recommendation.source,
|
|
15
|
+
rank: recommendation.rank,
|
|
16
|
+
value: {
|
|
17
|
+
name: recommendation.value.name,
|
|
18
|
+
id: recommendation.value.id ?? null,
|
|
19
|
+
integration_id: recommendation.value.integrationId ?? null,
|
|
20
|
+
},
|
|
21
|
+
confidence: recommendation.confidence ?? null,
|
|
22
|
+
reasoning: recommendation.reasoning ?? null,
|
|
23
|
+
cot: recommendation.cot ?? [],
|
|
24
|
+
})),
|
|
25
|
+
selected: {
|
|
26
|
+
name: payload.selected.name,
|
|
27
|
+
id: payload.selected.id ?? null,
|
|
28
|
+
integration_id: payload.selected.integrationId ?? null,
|
|
29
|
+
is_new_entity: payload.selected.isNewEntity ?? false,
|
|
30
|
+
},
|
|
31
|
+
matched_source: payload.matchedSource ?? null,
|
|
32
|
+
matched_rank: payload.matchedRank ?? null,
|
|
33
|
+
outcome: payload.outcome,
|
|
34
|
+
reason_text: payload.reasonText ?? null,
|
|
35
|
+
skipped: payload.skipped ?? false,
|
|
36
|
+
features: payload.features ?? null,
|
|
37
|
+
});
|
|
38
|
+
// Fire-and-forget: the epic never re-emits an action. Feedback delivery is a
|
|
39
|
+
// side-effect that must not disrupt the categorization UX, so both the
|
|
40
|
+
// success and error paths complete silently (errors are logged for debugging).
|
|
41
|
+
const submitRecommendationFeedbackEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(recommendationReducer_1.submitRecommendationFeedback.match), (0, operators_1.mergeMap)((action) => {
|
|
42
|
+
const { transactionId } = action.payload;
|
|
43
|
+
return zeniAPI
|
|
44
|
+
.postAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${transactionId}/recommendation-feedback`, toRequestBody(action.payload))
|
|
45
|
+
.pipe((0, operators_1.mergeMap)((response) => {
|
|
46
|
+
if (!(0, responsePayload_1.isSuccessStatus)(response)) {
|
|
47
|
+
console.error('submitRecommendationFeedbackEpic: recommendation feedback was not recorded', response.status);
|
|
48
|
+
}
|
|
49
|
+
return rxjs_1.EMPTY;
|
|
50
|
+
}), (0, operators_1.catchError)((error) => {
|
|
51
|
+
console.error('submitRecommendationFeedbackEpic: failed to submit recommendation feedback', error);
|
|
52
|
+
return rxjs_1.EMPTY;
|
|
53
|
+
}));
|
|
54
|
+
}));
|
|
55
|
+
exports.submitRecommendationFeedbackEpic = submitRecommendationFeedbackEpic;
|
|
@@ -13,7 +13,7 @@ const transactionDetailReducer_1 = require("../transactionDetailReducer");
|
|
|
13
13
|
const transactionDetailState_1 = require("../transactionDetailState");
|
|
14
14
|
const saveTransactionHelper_1 = require("./saveTransactionHelper");
|
|
15
15
|
const saveTransactionDetailEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.saveTransactionDetail.match), (0, operators_1.mergeMap)((action) => {
|
|
16
|
-
const { transactionId, cotTransactionTracking, isExpenseAutomationEnabled,
|
|
16
|
+
const { transactionId, cotTransactionTracking, isExpenseAutomationEnabled, } = action.payload;
|
|
17
17
|
const fetchActions = [];
|
|
18
18
|
const transactionDetailState = state$.value.transactionDetailState;
|
|
19
19
|
const transactionState = state$.value.transactionState;
|
|
@@ -24,7 +24,7 @@ const saveTransactionDetailEpic = (actions$, state$) => actions$.pipe((0, operat
|
|
|
24
24
|
if (detail != null && transaction != null) {
|
|
25
25
|
const localData = detail.transactionDetailLocalData;
|
|
26
26
|
const transactionSaveUpdates = (0, saveTransactionHelper_1.toTransactionUpdatesFromTransactionDetailLocalData)(localData, transaction, isExpenseAutomationEnabled, isAccountingProjectsEnabled);
|
|
27
|
-
fetchActions.push((0, transactionDetailReducer_1.updateTransactionDetail)(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled, cotTransactionTracking
|
|
27
|
+
fetchActions.push((0, transactionDetailReducer_1.updateTransactionDetail)(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled, cotTransactionTracking));
|
|
28
28
|
return (0, rxjs_1.from)(fetchActions);
|
|
29
29
|
}
|
|
30
30
|
return (0, rxjs_1.from)(fetchActions);
|
|
@@ -35,7 +35,7 @@ const transactionDetailState_1 = require("../transactionDetailState");
|
|
|
35
35
|
const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionDetailReducer_1.updateTransactionDetail.match), (0, operators_1.mergeMap)((action) => {
|
|
36
36
|
const { transactionState, vendorState, transactionDetailState } = state$.value;
|
|
37
37
|
const isAccountingProjectsEnabled = (0, tenantSelector_1.getIsAccountingProjectsEnabled)(state$.value);
|
|
38
|
-
const { cotTransactionTracking, transactionId, transactionSaveUpdates,
|
|
38
|
+
const { cotTransactionTracking, transactionId, transactionSaveUpdates, } = action.payload;
|
|
39
39
|
return zeniAPI
|
|
40
40
|
.putAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${action.payload.transactionId.id}/categorize`, preparePayload(transactionState, vendorState, transactionDetailState, transactionId, transactionSaveUpdates, cotTransactionTracking, isAccountingProjectsEnabled))
|
|
41
41
|
.pipe((0, operators_1.mergeMap)((response) => {
|
|
@@ -88,7 +88,7 @@ const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => actions$.pipe
|
|
|
88
88
|
actions.push((0, transactionReducer_1.updateTransactions)([response.data.transaction], (value) => value.transaction_id, 'merge'));
|
|
89
89
|
const transactionWithCOT = (0, transactionHelper_1.getTransactionWithCOT)(transaction);
|
|
90
90
|
const pendingReviewLineIds = (0, transactionCategorizationLocalDataHelper_1.getPendingReviewLineIdsFromTransaction)(transactionWithCOT);
|
|
91
|
-
actions.push((0, transactionsViewReducer_1.syncTransactionCategorizationFromDetailSave)(transactionIdResp, transactionWithCOT, pendingReviewLineIds
|
|
91
|
+
actions.push((0, transactionsViewReducer_1.syncTransactionCategorizationFromDetailSave)(transactionIdResp, transactionWithCOT, pendingReviewLineIds));
|
|
92
92
|
return (0, rxjs_1.from)(actions);
|
|
93
93
|
}
|
|
94
94
|
else if ((0, responsePayload_1.isActionNotAllowed)(response)) {
|
|
@@ -26,12 +26,11 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
|
|
|
26
26
|
payload: SupportedTransactionPayload;
|
|
27
27
|
}, "transactionDetail/uploadMissingAttachmentSuccess", never, {
|
|
28
28
|
updateType: UpdateType;
|
|
29
|
-
}>, updateTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, transactionSaveUpdates: TransactionSaveUpdates, isExpenseAutomationEnabled: boolean, cotTransactionTracking: COTTransactionTracking
|
|
29
|
+
}>, updateTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, transactionSaveUpdates: TransactionSaveUpdates, isExpenseAutomationEnabled: boolean, cotTransactionTracking: COTTransactionTracking], {
|
|
30
30
|
transactionId: TransactionID;
|
|
31
31
|
transactionSaveUpdates: TransactionSaveUpdates;
|
|
32
32
|
isExpenseAutomationEnabled: boolean;
|
|
33
33
|
cotTransactionTracking: COTTransactionTracking;
|
|
34
|
-
isUncategorizedExpenseCategoryEnabled: boolean | undefined;
|
|
35
34
|
}, "transactionDetail/updateTransactionDetail", never, never>, updateTransactionDetailSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
|
|
36
35
|
transactionId: TransactionID;
|
|
37
36
|
fetchState: FetchState;
|
|
@@ -66,7 +65,6 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
|
|
|
66
65
|
cotTransactionTracking: COTTransactionTracking;
|
|
67
66
|
isExpenseAutomationEnabled: boolean;
|
|
68
67
|
transactionId: TransactionID;
|
|
69
|
-
isUncategorizedExpenseCategoryEnabled?: boolean;
|
|
70
68
|
}, "transactionDetail/saveTransactionDetail">, initializeTransactionDetailLocalData: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
71
69
|
transactionId: TransactionID;
|
|
72
70
|
customerId?: ID;
|
|
@@ -112,14 +112,13 @@ const transactionDetail = (0, toolkit_1.createSlice)({
|
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
|
-
prepare(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled, cotTransactionTracking
|
|
115
|
+
prepare(transactionId, transactionSaveUpdates, isExpenseAutomationEnabled, cotTransactionTracking) {
|
|
116
116
|
return {
|
|
117
117
|
payload: {
|
|
118
118
|
transactionId,
|
|
119
119
|
transactionSaveUpdates,
|
|
120
120
|
isExpenseAutomationEnabled,
|
|
121
121
|
cotTransactionTracking,
|
|
122
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
123
122
|
},
|
|
124
123
|
};
|
|
125
124
|
},
|
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.60-beta0ND",
|
|
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",
|