diff --git a/app/controllers/RepeatedExpenseController.php b/app/controllers/RepeatedExpenseController.php index 9ced97b583..6d26891344 100644 --- a/app/controllers/RepeatedExpenseController.php +++ b/app/controllers/RepeatedExpenseController.php @@ -46,29 +46,35 @@ class RepeatedExpenseController extends BaseController throw new FireflyException('Cannot handle "' . $piggyBank->reminder . '" reminders for repeated expenses'); break; case 'month': - $piggyBank->parts = $piggyBank->currentRep->startdate->diffInMonths($piggyBank->currentRep->targetdate); + $start = clone $piggyBank->currentRep->startdate; + $start->startOfMonth(); + $end = clone $piggyBank->currentRep->targetdate; + $end->endOfMonth(); + $piggyBank->parts = $start->diffInMonths($end); + unset($start, $end); break; } + } else { $piggyBank->parts = 1; } // number of bars: - $piggyBank->barCount = floor(12 / $piggyBank->parts); + $piggyBank->barCount = floor(12 / $piggyBank->parts) == 0 ? 1 : floor(12 / $piggyBank->parts); $amountPerBar = floatval($piggyBank->targetamount) / $piggyBank->parts; $currentAmount = floatval($amountPerBar); $bars = []; $currentDate = clone $piggyBank->currentRep->startdate; for ($i = 0; $i < $piggyBank->parts; $i++) { // niet elke keer een andere dinges pakken? om target te redden? - + if (!is_null($piggyBank->reminder)) { + $currentDate = \DateKit::addPeriod($currentDate, $piggyBank->reminder, 0); + } $bars[] = [ 'amount' => $currentAmount, 'date' => $currentDate ]; - if (!is_null($piggyBank->reminder)) { - $currentDate = \DateKit::addPeriod($currentDate, $piggyBank->reminder, 0); - } + $currentAmount += $amountPerBar; } diff --git a/app/lib/FireflyIII/Event/Piggybank.php b/app/lib/FireflyIII/Event/Piggybank.php index f716a0ccab..aa1aab289f 100644 --- a/app/lib/FireflyIII/Event/Piggybank.php +++ b/app/lib/FireflyIII/Event/Piggybank.php @@ -205,10 +205,14 @@ class Piggybank */ public function validateRepeatedExpenses() { + if(!\Auth::check()) { + return; + } /** @var \FireflyIII\Database\RepeatedExpense $repository */ $repository = \App::make('FireflyIII\Database\RepeatedExpense'); - $list = $repository->get(); + $list = $repository->get(); + $today = Carbon::now(); /** @var \Piggybank $entry */ foreach ($list as $entry) { @@ -225,7 +229,7 @@ class Piggybank $repetition->save(); } // then continue and do something in the current relevant timeframe. - $today = Carbon::now(); + $currentTarget = clone $target; $currentStart = null; while ($currentTarget < $today) { @@ -243,7 +247,6 @@ class Piggybank } } - } } diff --git a/app/lib/FireflyIII/Shared/Toolkit/Date.php b/app/lib/FireflyIII/Shared/Toolkit/Date.php index d0ddc9f6e2..f9857a8547 100644 --- a/app/lib/FireflyIII/Shared/Toolkit/Date.php +++ b/app/lib/FireflyIII/Shared/Toolkit/Date.php @@ -39,6 +39,7 @@ class Date case 'monthly': $date->addMonths($add); break; + case 'quarter': case 'quarterly': $months = $add * 3; $date->addMonths($months); @@ -142,6 +143,7 @@ class Date case 'monthly': $date->startOfMonth(); break; + case 'quarter': case 'quarterly': $date->firstOfQuarter(); break; @@ -184,6 +186,7 @@ class Date case 'monthly': $date->subMonths($subtract); break; + case 'quarter': case 'quarterly': $months = $subtract * 3; $date->subMonths($months); diff --git a/app/routes.php b/app/routes.php index 9994ae52fc..93e667e22b 100644 --- a/app/routes.php +++ b/app/routes.php @@ -200,6 +200,7 @@ Route::group( // repeated expenses controller: Route::get('/repeatedexpenses', ['uses' => 'RepeatedExpenseController@index', 'as' => 'repeated.index']); Route::get('/repeatedexpenses/create', ['uses' => 'RepeatedExpenseController@create', 'as' => 'repeated.create']); + Route::get('/repeatedexpenses/show/{repeated}', ['uses' => 'RepeatedExpenseController@show', 'as' => 'repeated.show']); // report controller: Route::get('/reports', ['uses' => 'ReportController@index', 'as' => 'reports.index']); diff --git a/app/views/repeatedexpense/index.blade.php b/app/views/repeatedexpense/index.blade.php index 9a7413fd34..1b285352f2 100644 --- a/app/views/repeatedexpense/index.blade.php +++ b/app/views/repeatedexpense/index.blade.php @@ -18,7 +18,7 @@
- {{{$entry->name}}} ({{mf($entry->currentRep->currentamount)}}) + {{{$entry->name}}} ({{mf($entry->currentRep->currentamount)}})