Pass on the journal and update rules.

This commit is contained in:
James Cole
2022-12-11 07:29:06 +01:00
parent 44af5473a8
commit 344cbe4fb7
5 changed files with 67 additions and 52 deletions

View File

@@ -30,6 +30,7 @@ use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Note;
use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\PiggyBankRepetition;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\ObjectGroup\CreatesObjectGroups;
use Illuminate\Database\QueryException;
use Illuminate\Support\Facades\Log;
@@ -44,10 +45,10 @@ trait ModifiesPiggyBanks
/**
* @param PiggyBank $piggyBank
* @param string $amount
*
* @param TransactionJournal|null $journal
* @return bool
*/
public function addAmount(PiggyBank $piggyBank, string $amount): bool
public function addAmount(PiggyBank $piggyBank, string $amount, ?TransactionJournal $journal = null): bool
{
$repetition = $this->getRepetition($piggyBank);
if (null === $repetition) {
@@ -58,7 +59,7 @@ trait ModifiesPiggyBanks
$repetition->save();
Log::debug('addAmount: Trigger change for positive amount.');
event(new ChangedPiggyBankAmount($piggyBank, $amount, null, null));
event(new ChangedPiggyBankAmount($piggyBank, $amount, $journal, null));
return true;
}
@@ -69,16 +70,16 @@ trait ModifiesPiggyBanks
*
* @return void
*/
public function addAmountToRepetition(PiggyBankRepetition $repetition, string $amount): void
public function addAmountToRepetition(PiggyBankRepetition $repetition, string $amount, TransactionJournal $journal): void
{
Log::debug(sprintf('addAmountToRepetition: %s', $amount));
if (-1 === bccomp($amount, '0')) {
Log::debug('Remove amount.');
$this->removeAmount($repetition->piggyBank, bcmul($amount, '-1'));
$this->removeAmount($repetition->piggyBank, bcmul($amount, '-1'), $journal);
}
if (1 === bccomp($amount, '0')) {
Log::debug('Add amount.');
$this->addAmount($repetition->piggyBank, $amount);
$this->addAmount($repetition->piggyBank, $amount, $journal);
}
}
@@ -149,7 +150,7 @@ trait ModifiesPiggyBanks
*
* @return bool
*/
public function removeAmount(PiggyBank $piggyBank, string $amount): bool
public function removeAmount(PiggyBank $piggyBank, string $amount, ?TransactionJournal $journal = null): bool
{
$repetition = $this->getRepetition($piggyBank);
if (null === $repetition) {
@@ -159,7 +160,7 @@ trait ModifiesPiggyBanks
$repetition->save();
Log::debug('addAmount: Trigger change for negative amount.');
event(new ChangedPiggyBankAmount($piggyBank, bcmul($amount, '-1'), null, null));
event(new ChangedPiggyBankAmount($piggyBank, bcmul($amount, '-1'), $journal, null));
return true;
}

View File

@@ -37,18 +37,18 @@ use Illuminate\Support\Collection;
interface PiggyBankRepositoryInterface
{
/**
* @param PiggyBank $piggyBank
* @param string $amount
*
* @param PiggyBank $piggyBank
* @param string $amount
* @param TransactionJournal|null $journal
* @return bool
*/
public function addAmount(PiggyBank $piggyBank, string $amount): bool;
public function addAmount(PiggyBank $piggyBank, string $amount, ?TransactionJournal $journal = null): bool;
/**
* @param PiggyBankRepetition $repetition
* @param string $amount
*/
public function addAmountToRepetition(PiggyBankRepetition $repetition, string $amount): void;
public function addAmountToRepetition(PiggyBankRepetition $repetition, string $amount, TransactionJournal $journal): void;
/**
* @param PiggyBank $piggyBank
@@ -197,12 +197,12 @@ interface PiggyBankRepositoryInterface
public function leftOnAccount(PiggyBank $piggyBank, Carbon $date): string;
/**
* @param PiggyBank $piggyBank
* @param string $amount
*
* @param PiggyBank $piggyBank
* @param string $amount
* @param TransactionJournal|null $journal
* @return bool
*/
public function removeAmount(PiggyBank $piggyBank, string $amount): bool;
public function removeAmount(PiggyBank $piggyBank, string $amount, ?TransactionJournal $journal = null): bool;
/**
* @param PiggyBank $piggyBank