mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 22:30:31 +00:00
feat: sort the matched transactions
This commit is contained in:
@@ -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 };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
Reference in New Issue
Block a user