mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Some extra debugging and a fix for #1825
This commit is contained in:
parent
f90b7bed5e
commit
bb39781848
@ -63,10 +63,14 @@ class TransferFilter implements FilterInterface
|
|||||||
$key = $journalId . '-' . implode(',', $transactionIds) . '-' . implode(',', $accountIds) . '-' . $amount;
|
$key = $journalId . '-' . implode(',', $transactionIds) . '-' . implode(',', $accountIds) . '-' . $amount;
|
||||||
Log::debug(sprintf('Current transaction key is "%s"', $key));
|
Log::debug(sprintf('Current transaction key is "%s"', $key));
|
||||||
if (!isset($count[$key])) {
|
if (!isset($count[$key])) {
|
||||||
|
Log::debug(sprintf('First instance of transaction #%d, add it.', $transaction->id));
|
||||||
// not yet counted? add to new set and count it:
|
// not yet counted? add to new set and count it:
|
||||||
$new->push($transaction);
|
$new->push($transaction);
|
||||||
$count[$key] = 1;
|
$count[$key] = 1;
|
||||||
}
|
}
|
||||||
|
if (isset($count[$key])) {
|
||||||
|
Log::debug(sprintf('Second instance of transaction #%d, do NOT add it.', $transaction->id));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $new;
|
return $new;
|
||||||
|
@ -111,9 +111,11 @@ class ReconcileController extends Controller
|
|||||||
$cleared = $this->repository->getTransactionsById($clearedIds);
|
$cleared = $this->repository->getTransactionsById($clearedIds);
|
||||||
$countCleared = 0;
|
$countCleared = 0;
|
||||||
|
|
||||||
|
Log::debug('Start transaction loop');
|
||||||
/** @var Transaction $transaction */
|
/** @var Transaction $transaction */
|
||||||
foreach ($transactions as $transaction) {
|
foreach ($transactions as $transaction) {
|
||||||
// find the account and opposing account for this transaction
|
// find the account and opposing account for this transaction
|
||||||
|
Log::debug(sprintf('Now at transaction #%d: %s', $transaction->journal_id, $transaction->description));
|
||||||
$srcAccount = $this->accountRepos->findNull((int)$transaction->account_id);
|
$srcAccount = $this->accountRepos->findNull((int)$transaction->account_id);
|
||||||
$dstAccount = $this->accountRepos->findNull((int)$transaction->opposing_account_id);
|
$dstAccount = $this->accountRepos->findNull((int)$transaction->opposing_account_id);
|
||||||
$srcCurrency = (int)$this->accountRepos->getMetaValue($srcAccount, 'currency_id');
|
$srcCurrency = (int)$this->accountRepos->getMetaValue($srcAccount, 'currency_id');
|
||||||
@ -123,10 +125,12 @@ class ReconcileController extends Controller
|
|||||||
if ($account->id === $srcAccount->id) {
|
if ($account->id === $srcAccount->id) {
|
||||||
// source, and it matches the currency id or is 0
|
// source, and it matches the currency id or is 0
|
||||||
if ($srcCurrency === $transaction->transaction_currency_id || 0 === $srcCurrency) {
|
if ($srcCurrency === $transaction->transaction_currency_id || 0 === $srcCurrency) {
|
||||||
|
Log::debug(sprintf('Source matches currency: %s', $transaction->transaction_amount));
|
||||||
$amount = bcadd($amount, $transaction->transaction_amount);
|
$amount = bcadd($amount, $transaction->transaction_amount);
|
||||||
}
|
}
|
||||||
// destination, and it matches the foreign currency ID.
|
// destination, and it matches the foreign currency ID.
|
||||||
if ($srcCurrency === $transaction->foreign_currency_id) {
|
if ($srcCurrency === $transaction->foreign_currency_id) {
|
||||||
|
Log::debug(sprintf('Source matches foreign currency: %s', $transaction->transaction_foreign_amount));
|
||||||
$amount = bcadd($amount, $transaction->transaction_foreign_amount);
|
$amount = bcadd($amount, $transaction->transaction_foreign_amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,14 +138,17 @@ class ReconcileController extends Controller
|
|||||||
if ($account->id === $dstAccount->id) {
|
if ($account->id === $dstAccount->id) {
|
||||||
// destination, and it matches the currency id or is 0
|
// destination, and it matches the currency id or is 0
|
||||||
if ($dstCurrency === $transaction->transaction_currency_id || 0 === $dstCurrency) {
|
if ($dstCurrency === $transaction->transaction_currency_id || 0 === $dstCurrency) {
|
||||||
$amount = bcadd($amount, $transaction->transaction_amount);
|
Log::debug(sprintf('Destination matches currency: %s', $transaction->transaction_amount));
|
||||||
|
$amount = bcadd($amount, app('steam')->negative($transaction->transaction_amount));
|
||||||
}
|
}
|
||||||
// destination, and it matches the foreign currency ID.
|
// destination, and it matches the foreign currency ID.
|
||||||
if ($dstCurrency === $transaction->foreign_currency_id) {
|
if ($dstCurrency === $transaction->foreign_currency_id) {
|
||||||
|
Log::debug(sprintf('Destination matches foreign currency: %s', $transaction->transaction_foreign_amount));
|
||||||
$amount = bcadd($amount, $transaction->transaction_foreign_amount);
|
$amount = bcadd($amount, $transaction->transaction_foreign_amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Log::debug('End transaction loop');
|
||||||
// make sure amount is positive.
|
// make sure amount is positive.
|
||||||
$amount = app('steam')->positive($amount);
|
$amount = app('steam')->positive($amount);
|
||||||
/** @var Transaction $transaction */
|
/** @var Transaction $transaction */
|
||||||
|
@ -28,6 +28,7 @@ use FireflyIII\Exceptions\FireflyException;
|
|||||||
use FireflyIII\Factory\TransactionJournalFactory;
|
use FireflyIII\Factory\TransactionJournalFactory;
|
||||||
use FireflyIII\Factory\TransactionJournalMetaFactory;
|
use FireflyIII\Factory\TransactionJournalMetaFactory;
|
||||||
use FireflyIII\Helpers\Collector\TransactionCollectorInterface;
|
use FireflyIII\Helpers\Collector\TransactionCollectorInterface;
|
||||||
|
use FireflyIII\Helpers\Filter\InternalTransferFilter;
|
||||||
use FireflyIII\Helpers\Filter\TransferFilter;
|
use FireflyIII\Helpers\Filter\TransferFilter;
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\AccountType;
|
use FireflyIII\Models\AccountType;
|
||||||
@ -594,7 +595,9 @@ class JournalRepository implements JournalRepositoryInterface
|
|||||||
/** @var TransactionCollectorInterface $collector */
|
/** @var TransactionCollectorInterface $collector */
|
||||||
$collector = app(TransactionCollectorInterface::class);
|
$collector = app(TransactionCollectorInterface::class);
|
||||||
$collector->setUser($this->user);
|
$collector->setUser($this->user);
|
||||||
$collector->addFilter(TransferFilter::class);
|
$collector->setAllAssetAccounts();
|
||||||
|
$collector->removeFilter(InternalTransferFilter::class);
|
||||||
|
//$collector->addFilter(TransferFilter::class);
|
||||||
|
|
||||||
$collector->setJournals($journals)->withOpposingAccount();
|
$collector->setJournals($journals)->withOpposingAccount();
|
||||||
return $collector->getTransactions();
|
return $collector->getTransactions();
|
||||||
|
Loading…
Reference in New Issue
Block a user