feat: sort the matched transactions

This commit is contained in:
Ahmed Bouhuolia
2024-07-01 13:03:38 +02:00
parent c27458ebcc
commit 79616cf1eb
2 changed files with 11 additions and 4 deletions

View File

@@ -7,6 +7,7 @@ import { GetMatchedTransactionsByExpenses } from './GetMatchedTransactionsByExpe
import { GetMatchedTransactionsByBills } from './GetMatchedTransactionsByBills'; import { GetMatchedTransactionsByBills } from './GetMatchedTransactionsByBills';
import { GetMatchedTransactionsByManualJournals } from './GetMatchedTransactionsByManualJournals'; import { GetMatchedTransactionsByManualJournals } from './GetMatchedTransactionsByManualJournals';
import HasTenancyService from '@/services/Tenancy/TenancyService'; import HasTenancyService from '@/services/Tenancy/TenancyService';
import { sortClosestMatchTransactions } from './_utils';
@Service() @Service()
export class GetMatchedTransactions { export class GetMatchedTransactions {
@@ -88,14 +89,19 @@ export class GetMatchedTransactions {
): MatchedTransactionsPOJO { ): MatchedTransactionsPOJO {
const results = R.compose(R.flatten)(matchedTransactions?.results); const results = R.compose(R.flatten)(matchedTransactions?.results);
// Sort the results based on amount, date, and transaction type
const closestResullts = sortClosestMatchTransactions(
uncategorizedTransaction,
results
);
const perfectMatches = R.filter( const perfectMatches = R.filter(
(match) => (match) =>
match.amount === uncategorizedTransaction.amount && match.amount === uncategorizedTransaction.amount &&
moment(match.date).isSame(uncategorizedTransaction.date, 'day'), moment(match.date).isSame(uncategorizedTransaction.date, 'day'),
results closestResullts
); );
const possibleMatches = R.difference(results, perfectMatches); const possibleMatches = R.difference(closestResullts, perfectMatches);
return { perfectMatches, possibleMatches }; return { perfectMatches, possibleMatches };
} }

View File

@@ -47,11 +47,12 @@ export interface MatchedTransactionPOJO {
referenceNo: string; referenceNo: string;
transactionNo: string; transactionNo: string;
transactionId: number; transactionId: number;
transactionType: string;
} }
export type MatchedTransactionsPOJO = { export type MatchedTransactionsPOJO = {
perfectMatches: Array<MatchedTransactionPOJO[]>; perfectMatches: Array<MatchedTransactionPOJO>;
possibleMatches: Array<MatchedTransactionPOJO[]>; possibleMatches: Array<MatchedTransactionPOJO>;
}; };
export const ERRORS = { export const ERRORS = {