File indexing completed on 2024-05-12 05:06:03
0001 /* 0002 KMyMoney transaction importing module - searches for a matching transaction in the ledger 0003 0004 SPDX-FileCopyrightText: 2012 Lukasz Maszczynski <lukasz@maszczynski.net> 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "existingtransactionmatchfinder.h" 0009 0010 #include <QDebug> 0011 #include <QDate> 0012 0013 #include "mymoneymoney.h" 0014 #include "mymoneyfile.h" 0015 #include "mymoneytransactionfilter.h" 0016 0017 ExistingTransactionMatchFinder::ExistingTransactionMatchFinder(int matchWindow) 0018 : TransactionMatchFinder(matchWindow) 0019 { 0020 } 0021 0022 void ExistingTransactionMatchFinder::createListOfMatchCandidates() 0023 { 0024 MyMoneyTransactionFilter filter(m_importedSplit.accountId()); 0025 filter.setReportAllSplits(false); 0026 filter.setDateFilter(importedTransaction.postDate().addDays(-m_matchWindow), importedTransaction.postDate().addDays(m_matchWindow)); 0027 filter.setAmountFilter(m_importedSplit.shares(), m_importedSplit.shares()); 0028 0029 MyMoneyFile::instance()->transactionList(listOfMatchCandidates, filter); 0030 qDebug() << "Considering" << listOfMatchCandidates.size() << "existing transaction(s) for matching"; 0031 } 0032 0033 void ExistingTransactionMatchFinder::findMatchInMatchCandidatesList() 0034 { 0035 for (const TransactionAndSplitPair& transactionAndSplit : qAsConst(listOfMatchCandidates)) { 0036 const MyMoneyTransaction & theTransaction = transactionAndSplit.first; 0037 0038 if (theTransaction.id() == importedTransaction.id()) { 0039 // just skip myself 0040 continue; 0041 } 0042 0043 findMatchingSplit(theTransaction, 0); 0044 0045 if (matchResult != MatchNotFound) { 0046 return; 0047 } 0048 } 0049 }