mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Expanded Events to check on repeated expenses.
This commit is contained in:
parent
9f920bcfe3
commit
9d889d05e4
@ -185,6 +185,14 @@ class Piggybank
|
||||
$events->listen('piggybank.store', 'FireflyIII\Event\Piggybank@storePiggybank');
|
||||
$events->listen('piggybank.update', 'FireflyIII\Event\Piggybank@updatePiggybank');
|
||||
|
||||
\App::before(
|
||||
function ($request) {
|
||||
$this->validateRepeatedExpenses();
|
||||
}
|
||||
);
|
||||
|
||||
//$events->listen('piggybank.boo', 'FireflyIII\Event\Piggybank@updatePiggybank');
|
||||
|
||||
|
||||
// triggers when others are updated.
|
||||
$events->listen('transactionJournal.store', 'FireflyIII\Event\Piggybank@storeTransfer');
|
||||
@ -192,12 +200,59 @@ class Piggybank
|
||||
$events->listen('transactionJournal.destroy', 'FireflyIII\Event\Piggybank@destroyTransfer');
|
||||
}
|
||||
|
||||
public function updatePiggybank(\Piggybank $piggybank)
|
||||
/**
|
||||
* Validates the presence of repetitions for all repeated expenses!
|
||||
*/
|
||||
public function validateRepeatedExpenses()
|
||||
{
|
||||
/** @var \FireflyIII\Database\RepeatedExpense $repository */
|
||||
$repository = \App::make('FireflyIII\Database\RepeatedExpense');
|
||||
|
||||
$list = $repository->get();
|
||||
|
||||
/** @var \Piggybank $entry */
|
||||
foreach ($list as $entry) {
|
||||
$start = $entry->startdate;
|
||||
$target = $entry->targetdate;
|
||||
// find a repetition on this date:
|
||||
$count = $entry->piggybankrepetitions()->starts($start)->targets($target)->count();
|
||||
if ($count == 0) {
|
||||
$repetition = new \PiggybankRepetition;
|
||||
$repetition->piggybank()->associate($entry);
|
||||
$repetition->startdate = $start;
|
||||
$repetition->targetdate = $target;
|
||||
$repetition->currentamount = 0;
|
||||
$repetition->save();
|
||||
}
|
||||
// then continue and do something in the current relevant timeframe.
|
||||
$today = Carbon::now();
|
||||
$currentTarget = clone $target;
|
||||
$currentStart = null;
|
||||
while ($currentTarget < $today) {
|
||||
$currentStart = \DateKit::subtractPeriod($currentTarget, $entry->rep_length, 0);
|
||||
$currentTarget = \DateKit::addPeriod($currentTarget, $entry->rep_length, 0);
|
||||
// create if not exists:
|
||||
$count = $entry->piggybankrepetitions()->starts($currentStart)->targets($currentTarget)->count();
|
||||
if ($count == 0) {
|
||||
$repetition = new \PiggybankRepetition;
|
||||
$repetition->piggybank()->associate($entry);
|
||||
$repetition->startdate = $currentStart;
|
||||
$repetition->targetdate = $currentTarget;
|
||||
$repetition->currentamount = 0;
|
||||
$repetition->save();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function updatePiggybank(\Piggybank $piggyBank)
|
||||
{
|
||||
// get the repetition:
|
||||
$repetition = $piggybank->currentRelevantRep();
|
||||
$repetition->startdate = $piggybank->startdate;
|
||||
$repetition->targetdate = $piggybank->targetdate;
|
||||
$repetition = $piggyBank->currentRelevantRep();
|
||||
$repetition->startdate = $piggyBank->startdate;
|
||||
$repetition->targetdate = $piggyBank->targetdate;
|
||||
$repetition->save();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user