@zeniai/client-epic-state 4.17.96 → 4.17.98
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/commonPayloadTypes/recommendationPayload.d.ts +19 -0
- package/lib/commonStateTypes/animations.js +1 -1
- package/lib/entity/account/accountPayload.d.ts +3 -2
- package/lib/entity/account/accountPayload.js +10 -1
- package/lib/entity/class/classPayload.d.ts +3 -2
- package/lib/entity/class/classPayload.js +9 -0
- package/lib/entity/transaction/payloadTypes/transactionPayload.d.ts +3 -2
- package/lib/entity/transaction/payloadTypes/transactionPayload.js +54 -1
- package/lib/entity/transaction/transactionHelper.d.ts +1 -0
- package/lib/entity/transaction/transactionHelper.js +13 -0
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +3 -3
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -2
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +3 -3
- package/lib/view/recommendation/fetchEntityRecommendationsByTransactionIdEpic.js +11 -6
- package/lib/view/recommendation/recommendationHelper.d.ts +5 -3
- package/lib/view/recommendation/recommendationHelper.js +31 -1
- package/lib/view/recommendation/recommendationPayload.d.ts +5 -1
- package/lib/view/recommendation/recommendationReducer.d.ts +2 -1
- package/lib/view/recommendation/recommendationReducer.js +2 -1
- package/lib/view/spendManagement/treasury/treasuryList/treasuryDetailPayload.d.ts +1 -1
- package/lib/view/spendManagement/treasury/treasuryList/treasuryDetailReducer.js +1 -1
- package/lib/view/spendManagement/treasury/treasuryList/treasuryDetailState.d.ts +1 -1
- package/lib/view/transactionDetail/transactionDetailLocalDataHelper.d.ts +3 -3
- package/lib/view/transactionDetail/transactionDetailLocalDataHelper.js +1 -4
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +3 -3
- package/lib/view/transactionDetail/transactionDetailReducer.js +4 -4
- package/package.json +1 -1
|
@@ -10,12 +10,31 @@ export interface RecommendationBasePayload {
|
|
|
10
10
|
recommendation_hash?: string;
|
|
11
11
|
type?: string;
|
|
12
12
|
}
|
|
13
|
+
export interface AIReasoningPayload {
|
|
14
|
+
cot: string[];
|
|
15
|
+
reasoning: string;
|
|
16
|
+
}
|
|
13
17
|
export interface RecommendationPayload {
|
|
14
18
|
accounting_classes?: RecommendedClassBasePayload[];
|
|
15
19
|
accounts?: RecommendedAccountBasePayload[];
|
|
16
20
|
customers?: RecommendedVendorBasePayload[];
|
|
17
21
|
vendors?: RecommendedVendorBasePayload[];
|
|
18
22
|
}
|
|
23
|
+
export interface RecommendedAccountBasePayloadWithCOT extends RecommendedAccountBasePayload {
|
|
24
|
+
ai_reasoning?: AIReasoningPayload;
|
|
25
|
+
}
|
|
26
|
+
export interface RecommendedClassBasePayloadWithCOT extends RecommendedClassBasePayload {
|
|
27
|
+
ai_reasoning?: AIReasoningPayload;
|
|
28
|
+
}
|
|
29
|
+
export interface RecommendedVendorBasePayloadWithCOT extends RecommendedVendorBasePayload {
|
|
30
|
+
ai_reasoning?: AIReasoningPayload;
|
|
31
|
+
}
|
|
32
|
+
export interface RecommendationPayloadWithCOT {
|
|
33
|
+
accounting_classes?: RecommendedClassBasePayloadWithCOT[];
|
|
34
|
+
accounts?: RecommendedAccountBasePayloadWithCOT[];
|
|
35
|
+
customers?: RecommendedVendorBasePayloadWithCOT[];
|
|
36
|
+
vendors?: RecommendedVendorBasePayloadWithCOT[];
|
|
37
|
+
}
|
|
19
38
|
export interface EntityRecommendationPayload {
|
|
20
39
|
account?: RecommendedAccountBasePayload;
|
|
21
40
|
accounting_class?: RecommendedClassBasePayload;
|
|
@@ -40,7 +40,7 @@ const ALL_ANIMATIONS_FILE_NAMES = [
|
|
|
40
40
|
'Secure',
|
|
41
41
|
'Success',
|
|
42
42
|
'VeryHappy',
|
|
43
|
-
'ZeniAssist'
|
|
43
|
+
'ZeniAssist',
|
|
44
44
|
];
|
|
45
45
|
const toAnimationsFileName = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_ANIMATIONS_FILE_NAMES);
|
|
46
46
|
exports.toAnimationsFileName = toAnimationsFileName;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { BalancePayload } from '../../commonPayloadTypes/balanceChangePayload';
|
|
2
2
|
import { COABalanceGroupedPayload } from '../../commonPayloadTypes/coaBalancePayload';
|
|
3
|
-
import { RecommendationBasePayload } from '../../commonPayloadTypes/recommendationPayload';
|
|
3
|
+
import { RecommendationBasePayload, RecommendedAccountBasePayloadWithCOT } from '../../commonPayloadTypes/recommendationPayload';
|
|
4
4
|
import { StatusPayload } from '../../commonPayloadTypes/statusPayload';
|
|
5
5
|
import { URLPayload } from '../../commonPayloadTypes/urlPayload';
|
|
6
|
-
import { AccountBase, AccountMetadata, RecommendedAccountBase, StatementCloseDay } from './accountState';
|
|
6
|
+
import { AccountBase, AccountMetadata, RecommendedAccountBase, RecommendedAccountBaseWithCOT, StatementCloseDay } from './accountState';
|
|
7
7
|
export interface AccountBasePayload {
|
|
8
8
|
account_id: string;
|
|
9
9
|
account_name: string;
|
|
@@ -31,6 +31,7 @@ export interface RecommendedAccountBasePayload extends AccountBasePayload, Recom
|
|
|
31
31
|
}
|
|
32
32
|
export declare const mapAccountBasePayloadToAccountBase: (payload: AccountBasePayload) => AccountBase;
|
|
33
33
|
export declare const mapRecommendedAccountBasePayloadToRecommendedAccountBase: (payload: RecommendedAccountBasePayload) => RecommendedAccountBase | undefined;
|
|
34
|
+
export declare const mapRecommendedAccountBasePayloadWithCOTToRecommendedAccountBaseWithCOT: (payload: RecommendedAccountBasePayloadWithCOT) => RecommendedAccountBaseWithCOT | undefined;
|
|
34
35
|
export declare const mapStatementCloseDayPayloadToStatementCloseDay: (payload: string) => StatementCloseDay;
|
|
35
36
|
export interface AccountPayload extends AccountBasePayload {
|
|
36
37
|
assets?: COABalanceGroupedPayload;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapAccountMetadataPayloadToAccountMetadata = exports.toRecommendedAccountBasePayload = exports.toAccountPayload = exports.mapStatementCloseDayPayloadToStatementCloseDay = exports.mapRecommendedAccountBasePayloadToRecommendedAccountBase = exports.mapAccountBasePayloadToAccountBase = void 0;
|
|
3
|
+
exports.mapAccountMetadataPayloadToAccountMetadata = exports.toRecommendedAccountBasePayload = exports.toAccountPayload = exports.mapStatementCloseDayPayloadToStatementCloseDay = exports.mapRecommendedAccountBasePayloadWithCOTToRecommendedAccountBaseWithCOT = exports.mapRecommendedAccountBasePayloadToRecommendedAccountBase = exports.mapAccountBasePayloadToAccountBase = void 0;
|
|
4
4
|
const recommendationPayload_1 = require("../../commonPayloadTypes/recommendationPayload");
|
|
5
5
|
const urlPayload_1 = require("../../commonPayloadTypes/urlPayload");
|
|
6
6
|
const accountState_1 = require("./accountState");
|
|
@@ -31,6 +31,15 @@ const mapRecommendedAccountBasePayloadToRecommendedAccountBase = (payload) => {
|
|
|
31
31
|
? Object.assign({ accountId: (_a = payload.account_id) !== null && _a !== void 0 ? _a : payload.account_name, accountName: payload.account_name, accountType: (0, accountState_1.toAccountTypeStrict)(payload.account_type), accountSubType: (_b = payload.account_sub_type) !== null && _b !== void 0 ? _b : undefined, accountDescription: (_c = payload.account_description) !== null && _c !== void 0 ? _c : '', last4Digits: (_d = payload.last_4_digits) !== null && _d !== void 0 ? _d : undefined, logo: payload.logo == null ? undefined : (0, urlPayload_1.toURL)(payload.logo), qboId: (_e = payload.qbo_id) !== null && _e !== void 0 ? _e : undefined, coaId: (_f = payload.coa_id) !== null && _f !== void 0 ? _f : '', labels: toAccountLabelArray(payload.labels), accountNameConfidence: payload.account_name_confidence }, (0, recommendationPayload_1.toRecommendationBase)(payload)) : undefined;
|
|
32
32
|
};
|
|
33
33
|
exports.mapRecommendedAccountBasePayloadToRecommendedAccountBase = mapRecommendedAccountBasePayloadToRecommendedAccountBase;
|
|
34
|
+
const mapRecommendedAccountBasePayloadWithCOTToRecommendedAccountBaseWithCOT = (payload) => {
|
|
35
|
+
var _a, _b, _c, _d;
|
|
36
|
+
const base = (0, exports.mapRecommendedAccountBasePayloadToRecommendedAccountBase)(payload);
|
|
37
|
+
if (!base) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return Object.assign(Object.assign({}, base), { cot: (_b = (_a = payload.ai_reasoning) === null || _a === void 0 ? void 0 : _a.cot) !== null && _b !== void 0 ? _b : [], reasoning: (_d = (_c = payload.ai_reasoning) === null || _c === void 0 ? void 0 : _c.reasoning) !== null && _d !== void 0 ? _d : '' });
|
|
41
|
+
};
|
|
42
|
+
exports.mapRecommendedAccountBasePayloadWithCOTToRecommendedAccountBaseWithCOT = mapRecommendedAccountBasePayloadWithCOTToRecommendedAccountBaseWithCOT;
|
|
34
43
|
const mapStatementCloseDayPayloadToStatementCloseDay = (payload) => {
|
|
35
44
|
return payload === 'LAST_DAY_OF_THE_MONTH'
|
|
36
45
|
? 'LAST_DAY_OF_THE_MONTH'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { RecommendationBasePayload } from '../../commonPayloadTypes/recommendationPayload';
|
|
1
|
+
import { RecommendationBasePayload, RecommendedClassBasePayloadWithCOT } from '../../commonPayloadTypes/recommendationPayload';
|
|
2
2
|
import { ClassesViewParentID } from '../../commonStateTypes/classesView/nestedClassID';
|
|
3
3
|
import { ReportID } from '../../commonStateTypes/viewAndReport/viewAndReport';
|
|
4
|
-
import { Class, ClassBase, ClassMetadata, RecommendedClassBase } from './classState';
|
|
4
|
+
import { Class, ClassBase, ClassMetadata, RecommendedClassBase, RecommendedClassBaseWithCOT } from './classState';
|
|
5
5
|
export interface ClassBasePayload {
|
|
6
6
|
accounting_class_id: string;
|
|
7
7
|
accounting_class_name: string;
|
|
@@ -16,6 +16,7 @@ export interface RecommendedClassBasePayload extends ClassBasePayload, Recommend
|
|
|
16
16
|
export declare function mapClassBasePayloadToClass(payload: ClassBasePayload, reportId: ReportID, classesViewParentId?: ClassesViewParentID): Class;
|
|
17
17
|
export declare function mapClassBasePayloadToClassBase(payload: ClassBasePayload): ClassBase;
|
|
18
18
|
export declare function mapRecommendedClassBasePayloadToRecommendedClassBase(payload: RecommendedClassBasePayload): RecommendedClassBase | undefined;
|
|
19
|
+
export declare function mapRecommendedClassBasePayloadWithCOTToRecommendedClassBaseWithCOT(payload: RecommendedClassBasePayloadWithCOT): RecommendedClassBaseWithCOT | undefined;
|
|
19
20
|
export declare const toClassBasePayload: (cl: ClassBase | undefined) => ClassBasePayload;
|
|
20
21
|
export declare const toRecommendedClassBasePayload: (cl: RecommendedClassBase) => RecommendedClassBasePayload;
|
|
21
22
|
export interface ClassMetadataPayload extends ClassBasePayload {
|
|
@@ -4,6 +4,7 @@ exports.toClassMetadata = exports.toRecommendedClassBasePayload = exports.toClas
|
|
|
4
4
|
exports.mapClassBasePayloadToClass = mapClassBasePayloadToClass;
|
|
5
5
|
exports.mapClassBasePayloadToClassBase = mapClassBasePayloadToClassBase;
|
|
6
6
|
exports.mapRecommendedClassBasePayloadToRecommendedClassBase = mapRecommendedClassBasePayloadToRecommendedClassBase;
|
|
7
|
+
exports.mapRecommendedClassBasePayloadWithCOTToRecommendedClassBaseWithCOT = mapRecommendedClassBasePayloadWithCOTToRecommendedClassBaseWithCOT;
|
|
7
8
|
const recommendationPayload_1 = require("../../commonPayloadTypes/recommendationPayload");
|
|
8
9
|
const classState_1 = require("./classState");
|
|
9
10
|
function mapClassBasePayloadToClass(payload, reportId, classesViewParentId) {
|
|
@@ -42,6 +43,14 @@ function mapRecommendedClassBasePayloadToRecommendedClassBase(payload) {
|
|
|
42
43
|
? payload.accounting_class_number
|
|
43
44
|
: undefined, accountingClassNameConfidence: payload.accounting_class_name_confidence }, (0, recommendationPayload_1.toRecommendationBase)(payload)) : undefined;
|
|
44
45
|
}
|
|
46
|
+
function mapRecommendedClassBasePayloadWithCOTToRecommendedClassBaseWithCOT(payload) {
|
|
47
|
+
var _a, _b, _c, _d;
|
|
48
|
+
const base = mapRecommendedClassBasePayloadToRecommendedClassBase(payload);
|
|
49
|
+
if (!base) {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
return Object.assign(Object.assign({}, base), { cot: (_b = (_a = payload.ai_reasoning) === null || _a === void 0 ? void 0 : _a.cot) !== null && _b !== void 0 ? _b : [], reasoning: (_d = (_c = payload.ai_reasoning) === null || _c === void 0 ? void 0 : _c.reasoning) !== null && _d !== void 0 ? _d : '' });
|
|
53
|
+
}
|
|
45
54
|
const toClassBasePayload = (cl) => {
|
|
46
55
|
var _a, _b, _c, _d, _e;
|
|
47
56
|
return (Object.assign({ accounting_class_id: (_a = cl === null || cl === void 0 ? void 0 : cl.classId) !== null && _a !== void 0 ? _a : '', accounting_class_name: (_b = cl === null || cl === void 0 ? void 0 : cl.className) !== null && _b !== void 0 ? _b : '', qbo_id: (_c = cl === null || cl === void 0 ? void 0 : cl.qboId) !== null && _c !== void 0 ? _c : null, fully_qualified_accounting_class_name: (_d = cl === null || cl === void 0 ? void 0 : cl.fullyQualifiedAccountingClassName) !== null && _d !== void 0 ? _d : '', accounting_class_number: (_e = cl === null || cl === void 0 ? void 0 : cl.accountingClassNumber) !== null && _e !== void 0 ? _e : null }, ((cl === null || cl === void 0 ? void 0 : cl.labels) != null && cl.labels.length > 0 ? { labels: cl.labels } : {})));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { RecommendationPayload } from '../../../commonPayloadTypes/recommendationPayload';
|
|
1
|
+
import { RecommendationPayload, RecommendationPayloadWithCOT } from '../../../commonPayloadTypes/recommendationPayload';
|
|
2
2
|
import { URLPayload } from '../../../commonPayloadTypes/urlPayload';
|
|
3
3
|
import { Amount } from '../../../commonStateTypes/amount';
|
|
4
|
-
import { Recommendation } from '../../../commonStateTypes/recommendationBase';
|
|
4
|
+
import { Recommendation, RecommendationWithCOT } from '../../../commonStateTypes/recommendationBase';
|
|
5
5
|
import { AccountBasePayload } from '../../account/accountPayload';
|
|
6
6
|
import { RecommendationByLineId, Transaction } from '../stateTypes/transaction';
|
|
7
7
|
import { AttachmentPayload } from './attachmentPayload';
|
|
@@ -60,5 +60,6 @@ export declare const toTransaction: (payload: TransactionPayload) => Transaction
|
|
|
60
60
|
export declare const toTransactionPayload: (transaction: Transaction) => Partial<TransactionPayload>;
|
|
61
61
|
export declare const injectCOTFlagsIntoTransactionPayload: (payload: Partial<TransactionPayload>, transaction: Transaction) => Partial<TransactionPayloadWithCOTTracking>;
|
|
62
62
|
export declare const transformRecommendation: (recommendation: RecommendationPayload) => Recommendation[];
|
|
63
|
+
export declare const transformRecommendationWithCOT: (recommendation: RecommendationPayloadWithCOT) => RecommendationWithCOT[];
|
|
63
64
|
export declare const getRecommendationsPerLine: (lines?: LinePayload[], recommendations?: RecommendationPayload[]) => RecommendationByLineId | undefined;
|
|
64
65
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRecommendationsPerLine = exports.transformRecommendation = exports.injectCOTFlagsIntoTransactionPayload = exports.toTransactionPayload = exports.toTransaction = exports.getTransactionPayloadAmount = void 0;
|
|
3
|
+
exports.getRecommendationsPerLine = exports.transformRecommendationWithCOT = exports.transformRecommendation = exports.injectCOTFlagsIntoTransactionPayload = exports.toTransactionPayload = exports.toTransaction = exports.getTransactionPayloadAmount = void 0;
|
|
4
4
|
const recommendationPayload_1 = require("../../../commonPayloadTypes/recommendationPayload");
|
|
5
5
|
const urlPayload_1 = require("../../../commonPayloadTypes/urlPayload");
|
|
6
6
|
const amount_1 = require("../../../commonStateTypes/amount");
|
|
@@ -162,6 +162,59 @@ const transformRecommendation = (recommendation) => {
|
|
|
162
162
|
return recommendations;
|
|
163
163
|
};
|
|
164
164
|
exports.transformRecommendation = transformRecommendation;
|
|
165
|
+
const transformRecommendationWithCOT = (recommendation) => {
|
|
166
|
+
var _a, _b, _c, _d;
|
|
167
|
+
const accounts = recommendation.accounts;
|
|
168
|
+
const classObjs = recommendation.accounting_classes;
|
|
169
|
+
const recommendedVendors = recommendation.vendors;
|
|
170
|
+
const recommendations = [];
|
|
171
|
+
const mappedAccounts = accounts === null || accounts === void 0 ? void 0 : accounts.map((account) => (0, accountPayload_1.mapRecommendedAccountBasePayloadWithCOTToRecommendedAccountBaseWithCOT)(account));
|
|
172
|
+
const mappedClasses = classObjs === null || classObjs === void 0 ? void 0 : classObjs.map((cls) => (0, classPayload_1.mapRecommendedClassBasePayloadWithCOTToRecommendedClassBaseWithCOT)(cls));
|
|
173
|
+
const mappedRecommendedVendors = recommendedVendors === null || recommendedVendors === void 0 ? void 0 : recommendedVendors.map((recommendedVendor) => {
|
|
174
|
+
var _a, _b, _c, _d;
|
|
175
|
+
const base = (0, recommendationBase_1.mapRecommendedVendorPayloadToBase)(recommendedVendor);
|
|
176
|
+
if (!base) {
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
// Always return RecommendedVendorBaseWithCOT, with empty COT if not present
|
|
180
|
+
const vendorWithCOT = Object.assign(Object.assign({}, base), { cot: (_b = (_a = recommendedVendor.ai_reasoning) === null || _a === void 0 ? void 0 : _a.cot) !== null && _b !== void 0 ? _b : [], reasoning: (_d = (_c = recommendedVendor.ai_reasoning) === null || _c === void 0 ? void 0 : _c.reasoning) !== null && _d !== void 0 ? _d : '' });
|
|
181
|
+
return vendorWithCOT;
|
|
182
|
+
});
|
|
183
|
+
// Note: Accounts and Classes array length can be different here. So checking for larger array and iterating over that and mapped as per indexes
|
|
184
|
+
if (mappedAccounts != null &&
|
|
185
|
+
mappedAccounts.length >= ((_a = mappedClasses === null || mappedClasses === void 0 ? void 0 : mappedClasses.length) !== null && _a !== void 0 ? _a : 0) &&
|
|
186
|
+
mappedAccounts.length >= ((_b = mappedRecommendedVendors === null || mappedRecommendedVendors === void 0 ? void 0 : mappedRecommendedVendors.length) !== null && _b !== void 0 ? _b : 0)) {
|
|
187
|
+
mappedAccounts.forEach((account, index) => {
|
|
188
|
+
recommendations.push({
|
|
189
|
+
account,
|
|
190
|
+
class: mappedClasses === null || mappedClasses === void 0 ? void 0 : mappedClasses[index],
|
|
191
|
+
vendor: mappedRecommendedVendors === null || mappedRecommendedVendors === void 0 ? void 0 : mappedRecommendedVendors[index],
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
else if (mappedClasses != null &&
|
|
196
|
+
mappedClasses.length >= ((_c = mappedAccounts === null || mappedAccounts === void 0 ? void 0 : mappedAccounts.length) !== null && _c !== void 0 ? _c : 0) &&
|
|
197
|
+
mappedClasses.length >= ((_d = mappedRecommendedVendors === null || mappedRecommendedVendors === void 0 ? void 0 : mappedRecommendedVendors.length) !== null && _d !== void 0 ? _d : 0)) {
|
|
198
|
+
mappedClasses.forEach((recommendedClass, index) => {
|
|
199
|
+
recommendations.push({
|
|
200
|
+
account: mappedAccounts === null || mappedAccounts === void 0 ? void 0 : mappedAccounts[index],
|
|
201
|
+
class: recommendedClass,
|
|
202
|
+
vendor: mappedRecommendedVendors === null || mappedRecommendedVendors === void 0 ? void 0 : mappedRecommendedVendors[index],
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
else if (mappedRecommendedVendors != null) {
|
|
207
|
+
mappedRecommendedVendors.forEach((recommendedvendor, index) => {
|
|
208
|
+
recommendations.push({
|
|
209
|
+
account: mappedAccounts === null || mappedAccounts === void 0 ? void 0 : mappedAccounts[index],
|
|
210
|
+
class: mappedClasses === null || mappedClasses === void 0 ? void 0 : mappedClasses[index],
|
|
211
|
+
vendor: recommendedvendor,
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
return recommendations;
|
|
216
|
+
};
|
|
217
|
+
exports.transformRecommendationWithCOT = transformRecommendationWithCOT;
|
|
165
218
|
const getRecommendationsPerLine = (lines, recommendations) => {
|
|
166
219
|
if (lines != null &&
|
|
167
220
|
(lines === null || lines === void 0 ? void 0 : lines.length) > 0 &&
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Recommendation, RecommendationWithCOT } from '../../commonStateTypes/recommendationBase';
|
|
2
2
|
import { RecommendationByLineId, RecommendationWithCOTByLineId, Transaction, TransactionWithCOT } from './stateTypes/transaction';
|
|
3
|
+
export declare function getTransactionWithCOTFromRecommendations(transaction: Transaction, recommendationWithCOTByLineId: RecommendationWithCOTByLineId): TransactionWithCOT;
|
|
3
4
|
export declare function getTransactionWithCOT(transaction: Transaction): TransactionWithCOT;
|
|
4
5
|
export declare const convertRecommendationByLineIdToCOT: (recommendationByLineId: RecommendationByLineId, transactionWithCOT: TransactionWithCOT) => RecommendationWithCOTByLineId;
|
|
5
6
|
export declare const convertCOTRecommendationsToRegular: (recommendationsWithCOT?: RecommendationWithCOT[]) => Recommendation[] | undefined;
|
|
@@ -12,6 +12,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.convertCOTRecommendationsToRegular = exports.convertRecommendationByLineIdToCOT = void 0;
|
|
15
|
+
exports.getTransactionWithCOTFromRecommendations = getTransactionWithCOTFromRecommendations;
|
|
15
16
|
exports.getTransactionWithCOT = getTransactionWithCOT;
|
|
16
17
|
// Helper function to get AI summary by recommendation type and hash
|
|
17
18
|
function getAISummaryByRecommendationHash(aiSummaries, recommendationType, recommendationHash) {
|
|
@@ -41,6 +42,18 @@ function processRecommendationType(recommendation, line, emptyAISummary, type) {
|
|
|
41
42
|
const aiSummary = getAISummaryByRecommendationHash((_a = line.aiSummaries) !== null && _a !== void 0 ? _a : emptyAISummary, type, recommendation.recommendationHash);
|
|
42
43
|
return Object.assign(Object.assign({}, recommendation), { cot: (_b = aiSummary === null || aiSummary === void 0 ? void 0 : aiSummary.cot) !== null && _b !== void 0 ? _b : [], reasoning: (_c = aiSummary === null || aiSummary === void 0 ? void 0 : aiSummary.reasoning) !== null && _c !== void 0 ? _c : '' });
|
|
43
44
|
}
|
|
45
|
+
// Helper function to convert Transaction to TransactionWithCOT using API COT recommendations
|
|
46
|
+
// Merges API COT recommendations with existing transaction recommendations
|
|
47
|
+
function getTransactionWithCOTFromRecommendations(transaction, recommendationWithCOTByLineId) {
|
|
48
|
+
const { recommendations: _recommendations } = transaction, transactionWithoutRecommendations = __rest(transaction, ["recommendations"]);
|
|
49
|
+
void _recommendations; // Mark as used to avoid linting error
|
|
50
|
+
// Start with existing transaction COT recommendations (if any)
|
|
51
|
+
const existingTransactionWithCOT = getTransactionWithCOT(transaction);
|
|
52
|
+
const mergedRecommendationsWithCOT = Object.assign(Object.assign({}, existingTransactionWithCOT.recommendationsWithCOT), recommendationWithCOTByLineId);
|
|
53
|
+
return Object.assign(Object.assign({}, transactionWithoutRecommendations), { recommendationsWithCOT: Object.keys(mergedRecommendationsWithCOT).length > 0
|
|
54
|
+
? mergedRecommendationsWithCOT
|
|
55
|
+
: undefined });
|
|
56
|
+
}
|
|
44
57
|
// Main helper function to convert Transaction to TransactionWithCOT
|
|
45
58
|
function getTransactionWithCOT(transaction) {
|
|
46
59
|
if (!transaction.lines || !transaction.recommendations) {
|
package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { TabSpecificLineItems, TransactionReviewLocalData, TransactionsTab, Tran
|
|
|
10
10
|
export declare const MAX_SELECTION_LIMIT = 5;
|
|
11
11
|
export declare const toTransactionDetailLocalData: (transaction: SupportedTransactionWithCOT, selectedTab: TransactionsTab, lineItemsByTransactionIds: string[], uncategorizedIncomeExpense: UncategorizedAccounts) => TransactionReviewLocalData;
|
|
12
12
|
export declare const toSetAllLineItemsToCategoryClass: (draft: TransactionsTabViewState, transaction: SupportedTransactionWithCOT, transactionId: ID, transactionLineId: ID, transactionDetailLocalData: TransactionReviewLocalData, updatedItem: "category" | "class", uncategorizedAccounts: UncategorizedAccounts, selectedTab: TransactionsTab, vendorId?: ID, customerId?: ID, selectedAccount?: AccountBase, selectedClassBase?: ClassBase) => TransactionReviewLocalData;
|
|
13
|
-
export declare const setEntityRecommendationForLineIdInLocalData: (draft: TransactionsTabViewState, transaction: SupportedTransactionWithCOT, transactionDetailLocalData: TransactionReviewLocalData, entity: Entity, recommendationLineIds: ID[], uncategorizedAccounts: UncategorizedAccounts,
|
|
13
|
+
export declare const setEntityRecommendationForLineIdInLocalData: (draft: TransactionsTabViewState, transaction: SupportedTransactionWithCOT, transactionDetailLocalData: TransactionReviewLocalData, entity: Entity, recommendationLineIds: ID[], uncategorizedAccounts: UncategorizedAccounts, recommendationWithCOTByLineId?: RecommendationWithCOTByLineId) => TransactionReviewLocalData;
|
|
14
14
|
export declare const checkIfAllLineItemsAreCategoryClassFilled: (transaction: SupportedTransactionWithCOT, transactionDetailLocalData: TransactionReviewLocalData, uncategorizedAccounts: UncategorizedAccounts) => boolean;
|
|
15
15
|
export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: SupportedTransactionPayload[]) => Record<string, string[]>;
|
|
16
16
|
export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
|
|
@@ -317,7 +317,7 @@ const toSetAllLineItemsToCategoryClass = (draft, transaction, transactionId, tra
|
|
|
317
317
|
return newLocalData;
|
|
318
318
|
};
|
|
319
319
|
exports.toSetAllLineItemsToCategoryClass = toSetAllLineItemsToCategoryClass;
|
|
320
|
-
const setEntityRecommendationForLineIdInLocalData = (draft, transaction, transactionDetailLocalData, entity, recommendationLineIds, uncategorizedAccounts,
|
|
320
|
+
const setEntityRecommendationForLineIdInLocalData = (draft, transaction, transactionDetailLocalData, entity, recommendationLineIds, uncategorizedAccounts, recommendationWithCOTByLineId) => {
|
|
321
321
|
const newLineItems = {};
|
|
322
322
|
let matchingEntityLineId = undefined;
|
|
323
323
|
const checkIfNotJEAndDeposit = !(0, vendorTransaction_1.isVendorTransaction)(transaction);
|
|
@@ -334,7 +334,7 @@ const setEntityRecommendationForLineIdInLocalData = (draft, transaction, transac
|
|
|
334
334
|
line.type === 'transaction_with_product_or_service_line' ||
|
|
335
335
|
line.type === 'journal_entry_transaction_line') {
|
|
336
336
|
const record = Object.assign({}, oldRecord);
|
|
337
|
-
const recommendations = (0, transactionDetailLocalDataHelper_1.mergeTransactionAndEntityRecommendationsWithCOT)(oldRecord.recommendationsWithCOT,
|
|
337
|
+
const recommendations = (0, transactionDetailLocalDataHelper_1.mergeTransactionAndEntityRecommendationsWithCOT)(oldRecord.recommendationsWithCOT, recommendationWithCOTByLineId === null || recommendationWithCOTByLineId === void 0 ? void 0 : recommendationWithCOTByLineId[lineId]);
|
|
338
338
|
const accountLine = line;
|
|
339
339
|
const isUncategorizedAccount = (0, transactionDetailLocalDataHelper_2.isAccountUncategorized)(uncategorizedAccounts, accountLine.account.qboId);
|
|
340
340
|
record.account =
|
|
@@ -366,7 +366,7 @@ const setEntityRecommendationForLineIdInLocalData = (draft, transaction, transac
|
|
|
366
366
|
}
|
|
367
367
|
const record = Object.assign({}, oldRecord);
|
|
368
368
|
if (checkIfNotJEAndDeposit === false) {
|
|
369
|
-
const recommendations = (0, transactionDetailLocalDataHelper_1.mergeTransactionAndEntityRecommendationsWithCOT)(oldRecord.recommendationsWithCOT,
|
|
369
|
+
const recommendations = (0, transactionDetailLocalDataHelper_1.mergeTransactionAndEntityRecommendationsWithCOT)(oldRecord.recommendationsWithCOT, recommendationWithCOTByLineId === null || recommendationWithCOTByLineId === void 0 ? void 0 : recommendationWithCOTByLineId[lineId]);
|
|
370
370
|
const accountLine = line;
|
|
371
371
|
record.account = accountLine.account;
|
|
372
372
|
record.class = accountLine.class;
|
|
@@ -124,14 +124,14 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
|
|
|
124
124
|
}, "expenseAutomationTransactionsView/fetchTransactionCategorizationView", never, never>, updateSelectedCheckboxTransactionIds: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
125
125
|
selectedTab: TransactionsTab;
|
|
126
126
|
transactionIds: ID[];
|
|
127
|
-
}, "expenseAutomationTransactionsView/updateSelectedCheckboxTransactionIds">, clearExpenseAutomationTransactionsViewPerTabView: import("@reduxjs/toolkit").ActionCreatorWithPayload<"review" | "autoCategorized", "expenseAutomationTransactionsView/clearExpenseAutomationTransactionsViewPerTabView">, clearExpenseAutomationTransactionsView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationTransactionsView/clearExpenseAutomationTransactionsView">, setEntityRecommendationForLineIdsForCategorization: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", transactionId: TransactionID, transaction: SupportedTransactionWithCOT, lineIds: string[], entity: Entity, amount: number,
|
|
127
|
+
}, "expenseAutomationTransactionsView/updateSelectedCheckboxTransactionIds">, clearExpenseAutomationTransactionsViewPerTabView: import("@reduxjs/toolkit").ActionCreatorWithPayload<"review" | "autoCategorized", "expenseAutomationTransactionsView/clearExpenseAutomationTransactionsViewPerTabView">, clearExpenseAutomationTransactionsView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationTransactionsView/clearExpenseAutomationTransactionsView">, setEntityRecommendationForLineIdsForCategorization: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", transactionId: TransactionID, transaction: SupportedTransactionWithCOT, lineIds: string[], entity: Entity, amount: number, recommendationWithCOTByLineId: RecommendationWithCOTByLineId, uncategorizedAccounts: UncategorizedAccounts], {
|
|
128
128
|
selectedTab: "review" | "autoCategorized";
|
|
129
129
|
transactionId: TransactionID;
|
|
130
130
|
transaction: SupportedTransactionWithCOT;
|
|
131
131
|
lineIds: string[];
|
|
132
132
|
entity: Entity;
|
|
133
133
|
amount: number;
|
|
134
|
-
|
|
134
|
+
recommendationWithCOTByLineId: RecommendationWithCOTByLineId;
|
|
135
135
|
uncategorizedAccounts: UncategorizedAccounts;
|
|
136
136
|
}, "expenseAutomationTransactionsView/setEntityRecommendationForLineIdsForCategorization", never, never>, updateSelectedTransactionId: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
137
137
|
lineId: ID;
|
|
@@ -326,7 +326,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
326
326
|
},
|
|
327
327
|
},
|
|
328
328
|
setEntityRecommendationForLineIdsForCategorization: {
|
|
329
|
-
prepare(selectedTab, transactionId, transaction, lineIds, entity, amount,
|
|
329
|
+
prepare(selectedTab, transactionId, transaction, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedAccounts) {
|
|
330
330
|
return {
|
|
331
331
|
payload: {
|
|
332
332
|
selectedTab,
|
|
@@ -335,7 +335,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
335
335
|
lineIds,
|
|
336
336
|
entity,
|
|
337
337
|
amount,
|
|
338
|
-
|
|
338
|
+
recommendationWithCOTByLineId,
|
|
339
339
|
uncategorizedAccounts,
|
|
340
340
|
},
|
|
341
341
|
};
|
|
@@ -347,7 +347,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
347
347
|
if (transactionLocalData != null) {
|
|
348
348
|
draft.transactionCategorizationView[selectedTab].transactionReviewLocalDataById[transaction.id] = {
|
|
349
349
|
transactionId: transaction.id,
|
|
350
|
-
transactionReviewLocalData: (0, transactionCategorizationLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(draft.transactionCategorizationView[selectedTab], transaction, transactionLocalData.transactionReviewLocalData, entity, lineIds, uncategorizedAccounts, action.payload.
|
|
350
|
+
transactionReviewLocalData: (0, transactionCategorizationLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(draft.transactionCategorizationView[selectedTab], transaction, transactionLocalData.transactionReviewLocalData, entity, lineIds, uncategorizedAccounts, action.payload.recommendationWithCOTByLineId),
|
|
351
351
|
};
|
|
352
352
|
}
|
|
353
353
|
},
|
|
@@ -12,7 +12,7 @@ const transactionDetailState_1 = require("../transactionDetail/transactionDetail
|
|
|
12
12
|
const recommendationHelper_1 = require("./recommendationHelper");
|
|
13
13
|
const recommendationReducer_1 = require("./recommendationReducer");
|
|
14
14
|
const fetchEntityRecommendationsByTransactionIdEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(recommendationReducer_1.fetchEntityRecommendationsByTransactionId.match), (0, operators_1.switchMap)((action) => {
|
|
15
|
-
const { entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow, } = action.payload;
|
|
15
|
+
const { entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow, isFetchCOT, } = action.payload;
|
|
16
16
|
const { expenseAutomationTransactionsViewState: { selectedTransactionCategorizationTab, }, } = state$.value;
|
|
17
17
|
const query = {
|
|
18
18
|
amount,
|
|
@@ -20,16 +20,22 @@ const fetchEntityRecommendationsByTransactionIdEpic = (actions$, state$, zeniAPI
|
|
|
20
20
|
transaction_type: transactionDetails.transaction.type,
|
|
21
21
|
line_ids: transactionDetails.lineIds,
|
|
22
22
|
};
|
|
23
|
+
if (isFetchCOT === true) {
|
|
24
|
+
query.include_cot = true;
|
|
25
|
+
}
|
|
23
26
|
return zeniAPI
|
|
24
27
|
.getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/${(0, exports.toEntityTypeURL)(entity.type)}/${entity.qboId}/recommendations?query=${encodeURIComponent(JSON.stringify(query))}`)
|
|
25
28
|
.pipe((0, operators_1.mergeMap)((response) => {
|
|
26
29
|
if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
|
|
27
30
|
const actions = [];
|
|
28
31
|
const { transactionId, transaction, lineIds } = transactionDetails;
|
|
29
|
-
const
|
|
32
|
+
const recommendationWithCOTByLineId = (0, recommendationHelper_1.getRecommendationByLineIdWithCOTFromRecommendationPayloadWithCOT)(response.data.recommendations, lineIds);
|
|
30
33
|
const recommendations = (0, recommendationHelper_1.getRecommendationFromRecommendationPayload)(response.data.recommendations);
|
|
31
34
|
// Convert transaction to COT format for categorization flow
|
|
32
|
-
|
|
35
|
+
// Use COT recommendations if available, otherwise use existing transaction recommendations
|
|
36
|
+
const transactionWithCOT = isFetchCOT === true && recommendationWithCOTByLineId != null
|
|
37
|
+
? (0, transactionHelper_1.getTransactionWithCOTFromRecommendations)(transaction, recommendationWithCOTByLineId)
|
|
38
|
+
: (0, transactionHelper_1.getTransactionWithCOT)(transaction);
|
|
33
39
|
actions.push((0, recommendationReducer_1.updateRecommendationForEntity)({
|
|
34
40
|
entityId: entity.id,
|
|
35
41
|
entityType: entity.type,
|
|
@@ -38,14 +44,13 @@ const fetchEntityRecommendationsByTransactionIdEpic = (actions$, state$, zeniAPI
|
|
|
38
44
|
if (isBulkFetch === true) {
|
|
39
45
|
actions.push((0, transactionDetailReducer_1.updateVendorBulkRecommendationsFetchStatus)(transactionId, 'Completed'));
|
|
40
46
|
}
|
|
41
|
-
if (
|
|
47
|
+
if (recommendationWithCOTByLineId != null) {
|
|
42
48
|
const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(state$.value.accountState, state$.value.accountListState, 'accountList');
|
|
43
49
|
if (isTransactionCategorizationFlow === true) {
|
|
44
|
-
const recommendationWithCOTByLineId = (0, transactionHelper_1.convertRecommendationByLineIdToCOT)(recommendationByLineId, transactionWithCOT);
|
|
45
50
|
actions.push((0, transactionsViewReducer_1.setEntityRecommendationForLineIdsForCategorization)(selectedTransactionCategorizationTab, transactionId, transactionWithCOT, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedIncomeExpense));
|
|
46
51
|
}
|
|
47
52
|
else {
|
|
48
|
-
actions.push((0, transactionDetailReducer_1.setEntityRecommendationForLineIdsForTransactionDetail)(transactionId,
|
|
53
|
+
actions.push((0, transactionDetailReducer_1.setEntityRecommendationForLineIdsForTransactionDetail)(transactionId, transactionWithCOT, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedIncomeExpense));
|
|
49
54
|
}
|
|
50
55
|
}
|
|
51
56
|
return (0, rxjs_1.from)(actions);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { RecommendationPayload } from '../../commonPayloadTypes/recommendationPayload';
|
|
1
|
+
import { RecommendationPayload, RecommendationPayloadWithCOT } from '../../commonPayloadTypes/recommendationPayload';
|
|
2
2
|
import { ID } from '../../commonStateTypes/common';
|
|
3
|
-
import { Recommendation } from '../../commonStateTypes/recommendationBase';
|
|
4
|
-
import { RecommendationByLineId } from '../../entity/transaction/stateTypes/transaction';
|
|
3
|
+
import { Recommendation, RecommendationWithCOT } from '../../commonStateTypes/recommendationBase';
|
|
4
|
+
import { RecommendationByLineId, RecommendationWithCOTByLineId } from '../../entity/transaction/stateTypes/transaction';
|
|
5
5
|
export declare const getRecommendationFromRecommendationPayload: (payload: RecommendationPayload[]) => Recommendation[] | undefined;
|
|
6
6
|
export declare const getRecommendationByLineIdFromRecommendationPayload: (recommendationPayload: RecommendationPayload[], lineIds: ID[]) => RecommendationByLineId | undefined;
|
|
7
|
+
export declare const getRecommendationWithCOTFromRecommendationPayloadWithCOT: (payload: RecommendationPayloadWithCOT[]) => RecommendationWithCOT[] | undefined;
|
|
8
|
+
export declare const getRecommendationByLineIdWithCOTFromRecommendationPayloadWithCOT: (recommendationPayload: RecommendationPayloadWithCOT[], lineIds: ID[]) => RecommendationWithCOTByLineId | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRecommendationByLineIdFromRecommendationPayload = exports.getRecommendationFromRecommendationPayload = void 0;
|
|
3
|
+
exports.getRecommendationByLineIdWithCOTFromRecommendationPayloadWithCOT = exports.getRecommendationWithCOTFromRecommendationPayloadWithCOT = exports.getRecommendationByLineIdFromRecommendationPayload = exports.getRecommendationFromRecommendationPayload = void 0;
|
|
4
4
|
const transactionPayload_1 = require("../../entity/transaction/payloadTypes/transactionPayload");
|
|
5
5
|
const getRecommendationFromRecommendationPayload = (payload) => {
|
|
6
6
|
if (payload == null || payload.length === 0) {
|
|
@@ -32,3 +32,33 @@ const getRecommendationByLineIdFromRecommendationPayload = (recommendationPayloa
|
|
|
32
32
|
return recommendationsWithLine;
|
|
33
33
|
};
|
|
34
34
|
exports.getRecommendationByLineIdFromRecommendationPayload = getRecommendationByLineIdFromRecommendationPayload;
|
|
35
|
+
const getRecommendationWithCOTFromRecommendationPayloadWithCOT = (payload) => {
|
|
36
|
+
if (payload == null || payload.length === 0) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const recommendations = [];
|
|
40
|
+
payload.forEach((recommendationPayload) => {
|
|
41
|
+
recommendations.push(...(0, transactionPayload_1.transformRecommendationWithCOT)(recommendationPayload));
|
|
42
|
+
});
|
|
43
|
+
return recommendations;
|
|
44
|
+
};
|
|
45
|
+
exports.getRecommendationWithCOTFromRecommendationPayloadWithCOT = getRecommendationWithCOTFromRecommendationPayloadWithCOT;
|
|
46
|
+
const getRecommendationByLineIdWithCOTFromRecommendationPayloadWithCOT = (recommendationPayload, lineIds) => {
|
|
47
|
+
if (recommendationPayload.length === 0) {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
const recommendationsWithLine = {};
|
|
51
|
+
/* Note: Below case will happen only when we are fetching vendor recomemndations from a JE transaction line item.
|
|
52
|
+
And in such a case, we only want to update recommendation for that line.lineIds will always have a single element */
|
|
53
|
+
if (lineIds.length !== recommendationPayload.length) {
|
|
54
|
+
recommendationsWithLine[lineIds[0]] = (0, transactionPayload_1.transformRecommendationWithCOT)(recommendationPayload[parseInt(lineIds[0])]);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
recommendationPayload.forEach((lineRecommendations, index) => {
|
|
58
|
+
recommendationsWithLine[lineIds[index]] =
|
|
59
|
+
(0, transactionPayload_1.transformRecommendationWithCOT)(lineRecommendations);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return recommendationsWithLine;
|
|
63
|
+
};
|
|
64
|
+
exports.getRecommendationByLineIdWithCOTFromRecommendationPayloadWithCOT = getRecommendationByLineIdWithCOTFromRecommendationPayloadWithCOT;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RecommendationPayload } from '../../commonPayloadTypes/recommendationPayload';
|
|
1
|
+
import { RecommendationPayload, RecommendationPayloadWithCOT } from '../../commonPayloadTypes/recommendationPayload';
|
|
2
2
|
import { ZeniAPIResponse } from '../../responsePayload';
|
|
3
3
|
interface RecommendationUpdatePayload {
|
|
4
4
|
recommendations: RecommendationPayload[];
|
|
@@ -8,4 +8,8 @@ interface FetchRecommendationPayload {
|
|
|
8
8
|
recommendations: RecommendationPayload[];
|
|
9
9
|
}
|
|
10
10
|
export type FetchRecommendationResponse = ZeniAPIResponse<FetchRecommendationPayload>;
|
|
11
|
+
interface FetchRecommendationPayloadWithCOT {
|
|
12
|
+
recommendations: RecommendationPayloadWithCOT[];
|
|
13
|
+
}
|
|
14
|
+
export type FetchRecommendationResponseWithCOT = ZeniAPIResponse<FetchRecommendationPayloadWithCOT>;
|
|
11
15
|
export {};
|
|
@@ -10,7 +10,7 @@ export declare const fetchEntityRecommendationsByTransactionId: import("@reduxjs
|
|
|
10
10
|
lineIds: ID[];
|
|
11
11
|
transaction: SupportedTransaction;
|
|
12
12
|
transactionId: TransactionID;
|
|
13
|
-
}, isBulkFetch: boolean, isTransactionCategorizationFlow?: any], {
|
|
13
|
+
}, isBulkFetch: boolean, isTransactionCategorizationFlow?: any, isFetchCOT?: any], {
|
|
14
14
|
entity: Entity;
|
|
15
15
|
amount: number;
|
|
16
16
|
transactionDetails: {
|
|
@@ -20,6 +20,7 @@ export declare const fetchEntityRecommendationsByTransactionId: import("@reduxjs
|
|
|
20
20
|
};
|
|
21
21
|
isBulkFetch: boolean;
|
|
22
22
|
isTransactionCategorizationFlow: any;
|
|
23
|
+
isFetchCOT: any;
|
|
23
24
|
}, "recommendation/fetchEntityRecommendationsByTransactionId", never, never>, fetchRecommendationByEntityName: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[entityName: string, entityType: EntityType], {
|
|
24
25
|
entityName: string;
|
|
25
26
|
entityType: EntityType;
|
|
@@ -20,7 +20,7 @@ const recommendation = (0, toolkit_1.createSlice)({
|
|
|
20
20
|
draft.recommendationByEntity[key] = Object.assign(Object.assign({}, recommendationState_1.initialEntityRecommendationState), { fetchState: 'In-Progress' });
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
|
-
prepare(entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow = false) {
|
|
23
|
+
prepare(entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow = false, isFetchCOT = false) {
|
|
24
24
|
return {
|
|
25
25
|
payload: {
|
|
26
26
|
entity,
|
|
@@ -28,6 +28,7 @@ const recommendation = (0, toolkit_1.createSlice)({
|
|
|
28
28
|
transactionDetails,
|
|
29
29
|
isBulkFetch,
|
|
30
30
|
isTransactionCategorizationFlow,
|
|
31
|
+
isFetchCOT,
|
|
31
32
|
},
|
|
32
33
|
};
|
|
33
34
|
},
|
|
@@ -124,7 +124,7 @@ const treasuryDetail = (0, toolkit_1.createSlice)({
|
|
|
124
124
|
.currency_symbol),
|
|
125
125
|
totalBalance: (0, amount_1.toAmount)(data.data.treasury_account.available_balance.amount +
|
|
126
126
|
data.data.treasury_account.processing_transactions_balance.amount, data.data.treasury_account.available_balance.currency_code, data.data.treasury_account.available_balance.currency_symbol),
|
|
127
|
-
|
|
127
|
+
sevenDayPercentageYield: parseFloat(data.data.treasury_account.seven_day_percentage_yield),
|
|
128
128
|
};
|
|
129
129
|
draft.accountSummary = summary;
|
|
130
130
|
draft.fetchState = 'Completed';
|
|
@@ -3,9 +3,9 @@ import { RecommendationWithCOT } from '../../commonStateTypes/recommendationBase
|
|
|
3
3
|
import { AccountBase, RecommendedAccountBase } from '../../entity/account/accountState';
|
|
4
4
|
import { ClassBase, RecommendedClassBase } from '../../entity/class/classState';
|
|
5
5
|
import { Entity } from '../../entity/genericEntity/entity';
|
|
6
|
-
import {
|
|
6
|
+
import { RecommendationWithCOTByLineId } from '../../entity/transaction/stateTypes/transaction';
|
|
7
7
|
import { JournalEntryTransactionLine, TransactionWithAccountAndClassLine } from '../../entity/transaction/stateTypes/transactionLine';
|
|
8
|
-
import { SupportedTransaction } from '../../entity/transaction/transactionState';
|
|
8
|
+
import { SupportedTransaction, SupportedTransactionWithCOT } from '../../entity/transaction/transactionState';
|
|
9
9
|
import { UncategorizedAccounts } from '../accountList/accountListSelector';
|
|
10
10
|
import { TransactionDetailLineItemData, TransactionDetailLocalData } from './transactionDetailTypes';
|
|
11
11
|
export declare const toTransactionDetailLocalData: (transaction: SupportedTransaction, defaultVendorId: ID | undefined, uncategorizedIncomeExpense: UncategorizedAccounts) => TransactionDetailLocalData;
|
|
@@ -30,7 +30,7 @@ export declare const toSetAllLineItemsToCategoryClass: (transaction: SupportedTr
|
|
|
30
30
|
updateOrRetain: "update" | "retain";
|
|
31
31
|
}) => TransactionDetailLocalData;
|
|
32
32
|
export declare const toSetAllLineItemsLocalDataIsUpdateAllChecked: (transaction: SupportedTransaction, transactionDetailLocalData: TransactionDetailLocalData, isUpdateAll: boolean, entity?: Entity) => TransactionDetailLocalData;
|
|
33
|
-
export declare const setEntityRecommendationForLineIdInLocalData: (transaction:
|
|
33
|
+
export declare const setEntityRecommendationForLineIdInLocalData: (transaction: SupportedTransactionWithCOT, transactionDetailLocalData: TransactionDetailLocalData, entity: Entity, recommendationLineIds: ID[], uncategorizedIncomeExpense: UncategorizedAccounts, recommendationWithCOTByLineId?: RecommendationWithCOTByLineId) => TransactionDetailLocalData;
|
|
34
34
|
export declare const removeEntityRecommendationForLineIdInLocalData: (transaction: SupportedTransaction, transactionDetailLocalData: TransactionDetailLocalData, recommendationLineIds: ID[]) => TransactionDetailLocalData;
|
|
35
35
|
export declare const getChangedLineItemCountFromLocalData: (transaction: SupportedTransaction, transactionLocalData: TransactionDetailLocalData) => number;
|
|
36
36
|
export declare const toSetAllLineItemsToVendor: (transaction: SupportedTransaction, transactionDetailLocalData: TransactionDetailLocalData, entity: Entity) => TransactionDetailLocalData;
|
|
@@ -530,11 +530,8 @@ const toSetAllLineItemsLocalDataIsUpdateAllChecked = (transaction, transactionDe
|
|
|
530
530
|
return newLocalData;
|
|
531
531
|
};
|
|
532
532
|
exports.toSetAllLineItemsLocalDataIsUpdateAllChecked = toSetAllLineItemsLocalDataIsUpdateAllChecked;
|
|
533
|
-
const setEntityRecommendationForLineIdInLocalData = (transaction, transactionDetailLocalData, entity, recommendationLineIds, uncategorizedIncomeExpense,
|
|
533
|
+
const setEntityRecommendationForLineIdInLocalData = (transaction, transactionDetailLocalData, entity, recommendationLineIds, uncategorizedIncomeExpense, recommendationWithCOTByLineId) => {
|
|
534
534
|
const newLineItems = {};
|
|
535
|
-
const recommendationWithCOTByLineId = recommendationByLineId != null
|
|
536
|
-
? (0, transactionHelper_1.convertRecommendationByLineIdToCOT)(recommendationByLineId, (0, transactionHelper_1.getTransactionWithCOT)(transaction))
|
|
537
|
-
: undefined;
|
|
538
535
|
let matchingEntityLineId = undefined;
|
|
539
536
|
const checkIfNotJEAndDeposit = (0, vendorTransaction_1.isVendorTransaction)(transaction) === true ||
|
|
540
537
|
(0, customerTransaction_1.isCustomerTransaction)(transaction) === true;
|
|
@@ -3,7 +3,7 @@ import { COTTransactionTracking, Recommendation } from '../../commonStateTypes/r
|
|
|
3
3
|
import { AccountBase } from '../../entity/account/accountState';
|
|
4
4
|
import { ClassBase } from '../../entity/class/classState';
|
|
5
5
|
import { Entity } from '../../entity/genericEntity/entity';
|
|
6
|
-
import {
|
|
6
|
+
import { RecommendationWithCOTByLineId, TransactionID } from '../../entity/transaction/stateTypes/transaction';
|
|
7
7
|
import { SupportedTransaction, SupportedTransactionPayload } from '../../entity/transaction/transactionState';
|
|
8
8
|
import { ZeniAPIStatus } from '../../responsePayload';
|
|
9
9
|
import { UncategorizedAccounts } from '../accountList/accountListSelector';
|
|
@@ -105,13 +105,13 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
|
|
|
105
105
|
transaction: SupportedTransaction;
|
|
106
106
|
isUpdateAll: boolean;
|
|
107
107
|
entity: Entity | undefined;
|
|
108
|
-
}, "transactionDetail/setAllLineItemsLocalDataIsUpdateAllChecked", never, never>, setEntityRecommendationForLineIdsForTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, transaction: SupportedTransaction, lineIds: string[], entity: Entity, amount: number,
|
|
108
|
+
}, "transactionDetail/setAllLineItemsLocalDataIsUpdateAllChecked", never, never>, setEntityRecommendationForLineIdsForTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, transaction: SupportedTransaction, lineIds: string[], entity: Entity, amount: number, recommendationWithCOTByLineId: RecommendationWithCOTByLineId, uncategorizedIncomeExpense: UncategorizedAccounts], {
|
|
109
109
|
transactionId: TransactionID;
|
|
110
110
|
transaction: SupportedTransaction;
|
|
111
111
|
lineIds: string[];
|
|
112
112
|
entity: Entity;
|
|
113
113
|
amount: number;
|
|
114
|
-
|
|
114
|
+
recommendationWithCOTByLineId: RecommendationWithCOTByLineId;
|
|
115
115
|
uncategorizedIncomeExpense: UncategorizedAccounts;
|
|
116
116
|
}, "transactionDetail/setEntityRecommendationForLineIdsForTransactionDetail", never, never>, removeEntityRecommendationForLineIdForTransactionDetail: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, transaction: SupportedTransaction, lineId: string], {
|
|
117
117
|
transactionId: TransactionID;
|
|
@@ -299,15 +299,15 @@ const transactionDetail = (0, toolkit_1.createSlice)({
|
|
|
299
299
|
setEntityRecommendationForLineIdsForTransactionDetail: {
|
|
300
300
|
// ToDo: Add a reducer test case to handle this part for JE tran as well - where we only update for targeted line
|
|
301
301
|
reducer(draft, action) {
|
|
302
|
-
const { transaction, lineIds,
|
|
302
|
+
const { transaction, lineIds, recommendationWithCOTByLineId, uncategorizedIncomeExpense, } = action.payload;
|
|
303
303
|
const key = (0, transactionDetailState_1.getTransactionDetailKey)(action.payload.transactionId);
|
|
304
304
|
const detail = (0, get_1.default)(draft.transactionDetailById, key, undefined);
|
|
305
305
|
if (detail != null) {
|
|
306
|
-
const newLocalData = (0, transactionDetailLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(transaction, detail.transactionDetailLocalData, action.payload.entity, lineIds, uncategorizedIncomeExpense,
|
|
306
|
+
const newLocalData = (0, transactionDetailLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(transaction, detail.transactionDetailLocalData, action.payload.entity, lineIds, uncategorizedIncomeExpense, recommendationWithCOTByLineId);
|
|
307
307
|
draft.transactionDetailById[key] = Object.assign(Object.assign({}, detail), { transactionDetailLocalData: newLocalData });
|
|
308
308
|
}
|
|
309
309
|
},
|
|
310
|
-
prepare(transactionId, transaction, lineIds, entity, amount,
|
|
310
|
+
prepare(transactionId, transaction, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedIncomeExpense) {
|
|
311
311
|
return {
|
|
312
312
|
payload: {
|
|
313
313
|
transactionId,
|
|
@@ -315,7 +315,7 @@ const transactionDetail = (0, toolkit_1.createSlice)({
|
|
|
315
315
|
lineIds,
|
|
316
316
|
entity,
|
|
317
317
|
amount,
|
|
318
|
-
|
|
318
|
+
recommendationWithCOTByLineId,
|
|
319
319
|
uncategorizedIncomeExpense,
|
|
320
320
|
},
|
|
321
321
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "4.17.
|
|
3
|
+
"version": "4.17.98",
|
|
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
|
"types": "lib/index.d.ts",
|