mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-25 06:51:08 +00:00
Added a forgotten chart, corrected some others. [skip ci]
This commit is contained in:
@@ -9,6 +9,8 @@ use FireflyIII\Models\LimitRepetition;
|
|||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
use Grumpydictator\Gchart\GChart;
|
use Grumpydictator\Gchart\GChart;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
|
use Navigation;
|
||||||
|
use Preferences;
|
||||||
use Response;
|
use Response;
|
||||||
use Session;
|
use Session;
|
||||||
|
|
||||||
@@ -19,6 +21,38 @@ use Session;
|
|||||||
*/
|
*/
|
||||||
class BudgetController extends Controller
|
class BudgetController extends Controller
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @param GChart $chart
|
||||||
|
* @param BudgetRepositoryInterface $repository
|
||||||
|
* @param Budget $budget
|
||||||
|
*/
|
||||||
|
public function budget(GChart $chart, BudgetRepositoryInterface $repository, Budget $budget)
|
||||||
|
{
|
||||||
|
$chart->addColumn(trans('firefly.period'),'date');
|
||||||
|
$chart->addColumn(trans('firefly.spent'), 'number');
|
||||||
|
|
||||||
|
|
||||||
|
$first = $repository->getFirstBudgetLimitDate($budget);
|
||||||
|
$range = $viewRange = Preferences::get('viewRange', '1M')->data;
|
||||||
|
$last = Session::get('end', new Carbon);
|
||||||
|
$final = clone $last;
|
||||||
|
$final->addYears(2);
|
||||||
|
$last = Navigation::endOfX($last, $range, $final);
|
||||||
|
|
||||||
|
while ($first < $last) {
|
||||||
|
$end = Navigation::addPeriod($first, $range, 0);
|
||||||
|
|
||||||
|
$spent = $repository->spentInPeriodCorrected($budget, $first, $end);
|
||||||
|
$chart->addRow($end, $spent);
|
||||||
|
|
||||||
|
|
||||||
|
$first = Navigation::addPeriod($first, $range, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
$chart->generate();
|
||||||
|
return Response::json($chart->getData());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows the amount left in a specific budget limit.
|
* Shows the amount left in a specific budget limit.
|
||||||
*
|
*
|
||||||
@@ -44,7 +78,7 @@ class BudgetController extends Controller
|
|||||||
/*
|
/*
|
||||||
* Sum of expenses on this day:
|
* Sum of expenses on this day:
|
||||||
*/
|
*/
|
||||||
$sum = $repository->expensesOnDay($budget, $start);
|
$sum = $repository->expensesOnDayCorrected($budget, $start);
|
||||||
$amount += $sum;
|
$amount += $sum;
|
||||||
$chart->addRow(clone $start, $amount);
|
$chart->addRow(clone $start, $amount);
|
||||||
$start->addDay();
|
$start->addDay();
|
||||||
@@ -78,13 +112,13 @@ class BudgetController extends Controller
|
|||||||
foreach ($budgets as $budget) {
|
foreach ($budgets as $budget) {
|
||||||
$repetitions = $repository->getBudgetLimitRepetitions($budget, $start, $end);
|
$repetitions = $repository->getBudgetLimitRepetitions($budget, $start, $end);
|
||||||
if ($repetitions->count() == 0) {
|
if ($repetitions->count() == 0) {
|
||||||
$expenses = $repository->spentInPeriod($budget, $start, $end, true);
|
$expenses = $repository->spentInPeriodCorrected($budget, $start, $end, true);
|
||||||
$allEntries->push([$budget->name, 0, 0, $expenses]);
|
$allEntries->push([$budget->name, 0, 0, $expenses]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/** @var LimitRepetition $repetition */
|
/** @var LimitRepetition $repetition */
|
||||||
foreach ($repetitions as $repetition) {
|
foreach ($repetitions as $repetition) {
|
||||||
$expenses = $repository->spentInPeriod($budget, $repetition->startdate, $repetition->enddate, true);
|
$expenses = $repository->spentInPeriodCorrected($budget, $repetition->startdate, $repetition->enddate, true);
|
||||||
$left = $expenses < floatval($repetition->amount) ? floatval($repetition->amount) - $expenses : 0;
|
$left = $expenses < floatval($repetition->amount) ? floatval($repetition->amount) - $expenses : 0;
|
||||||
$spent = $expenses > floatval($repetition->amount) ? 0 : $expenses;
|
$spent = $expenses > floatval($repetition->amount) ? 0 : $expenses;
|
||||||
$overspent = $expenses > floatval($repetition->amount) ? $expenses - floatval($repetition->amount) : 0;
|
$overspent = $expenses > floatval($repetition->amount) ? $expenses - floatval($repetition->amount) : 0;
|
||||||
@@ -145,7 +179,7 @@ class BudgetController extends Controller
|
|||||||
|
|
||||||
// each budget, fill the row:
|
// each budget, fill the row:
|
||||||
foreach ($budgets as $budget) {
|
foreach ($budgets as $budget) {
|
||||||
$spent = $repository->spentInPeriod($budget, $start, $month, $shared);
|
$spent = $repository->spentInPeriodCorrected($budget, $start, $month, $shared);
|
||||||
$row[] = $spent;
|
$row[] = $spent;
|
||||||
}
|
}
|
||||||
$chart->addRowArray($row);
|
$chart->addRowArray($row);
|
||||||
|
@@ -50,7 +50,7 @@ class CategoryController extends Controller
|
|||||||
while ($start <= $end) {
|
while ($start <= $end) {
|
||||||
|
|
||||||
$currentEnd = Navigation::endOfPeriod($start, $range);
|
$currentEnd = Navigation::endOfPeriod($start, $range);
|
||||||
$spent = $repository->spentInPeriod($category, $start, $currentEnd);
|
$spent = $repository->spentInPeriodCorrected($category, $start, $currentEnd);
|
||||||
$chart->addRow(clone $start, $spent);
|
$chart->addRow(clone $start, $spent);
|
||||||
|
|
||||||
$start = Navigation::addPeriod($start, $range, 0);
|
$start = Navigation::addPeriod($start, $range, 0);
|
||||||
@@ -109,7 +109,7 @@ class CategoryController extends Controller
|
|||||||
$chart->addColumn(trans('firefly.spent'), 'number');
|
$chart->addColumn(trans('firefly.spent'), 'number');
|
||||||
|
|
||||||
while ($start <= $end) {
|
while ($start <= $end) {
|
||||||
$spent = $repository->spentOnDaySum($category, $start);
|
$spent = $repository->spentOnDaySumCorrected($category, $start);
|
||||||
$chart->addRow(clone $start, $spent);
|
$chart->addRow(clone $start, $spent);
|
||||||
$start->addDay();
|
$start->addDay();
|
||||||
}
|
}
|
||||||
@@ -153,7 +153,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
// each budget, fill the row:
|
// each budget, fill the row:
|
||||||
foreach ($categories as $category) {
|
foreach ($categories as $category) {
|
||||||
$spent = $repository->spentInPeriod($category, $start, $month, $shared);
|
$spent = $repository->spentInPeriodCorrected($category, $start, $month, $shared);
|
||||||
$row[] = $spent;
|
$row[] = $spent;
|
||||||
}
|
}
|
||||||
$chart->addRowArray($row);
|
$chart->addRowArray($row);
|
||||||
|
@@ -43,8 +43,8 @@ class ReportController extends Controller
|
|||||||
$month = clone $start;
|
$month = clone $start;
|
||||||
$month->endOfMonth();
|
$month->endOfMonth();
|
||||||
// total income and total expenses:
|
// total income and total expenses:
|
||||||
$incomeSum = floatval($query->incomeInPeriod($start, $month, $shared)->sum('queryAmount'));
|
$incomeSum = floatval($query->incomeInPeriodCorrected($start, $month, $shared)->sum('amount'));
|
||||||
$expenseSum = floatval($query->expenseInPeriod($start, $month, $shared)->sum('queryAmount')) * -1;
|
$expenseSum = floatval($query->expenseInPeriodCorrected($start, $month, $shared)->sum('amount'));
|
||||||
|
|
||||||
$chart->addRow(clone $start, $incomeSum, $expenseSum);
|
$chart->addRow(clone $start, $incomeSum, $expenseSum);
|
||||||
$start->addMonth();
|
$start->addMonth();
|
||||||
@@ -82,8 +82,8 @@ class ReportController extends Controller
|
|||||||
$month = clone $start;
|
$month = clone $start;
|
||||||
$month->endOfMonth();
|
$month->endOfMonth();
|
||||||
// total income and total expenses:
|
// total income and total expenses:
|
||||||
$income += floatval($query->incomeInPeriod($start, $month, $shared)->sum('queryAmount'));
|
$income += floatval($query->incomeInPeriodCorrected($start, $month, $shared)->sum('amount'));
|
||||||
$expense += floatval($query->expenseInPeriod($start, $month, $shared)->sum('queryAmount')) * -1;
|
$expense += floatval($query->expenseInPeriodCorrected($start, $month, $shared)->sum('amount'));
|
||||||
$count++;
|
$count++;
|
||||||
$start->addMonth();
|
$start->addMonth();
|
||||||
}
|
}
|
||||||
|
@@ -288,6 +288,7 @@ Route::group(
|
|||||||
Route::get('/chart/budget/frontpage', ['uses' => 'Chart\BudgetController@frontpage']);
|
Route::get('/chart/budget/frontpage', ['uses' => 'Chart\BudgetController@frontpage']);
|
||||||
Route::get('/chart/budget/year/{year}/{shared?}', ['uses' => 'Chart\BudgetController@year'])->where(['year' => '[0-9]{4}', 'shared' => 'shared']);
|
Route::get('/chart/budget/year/{year}/{shared?}', ['uses' => 'Chart\BudgetController@year'])->where(['year' => '[0-9]{4}', 'shared' => 'shared']);
|
||||||
Route::get('/chart/budget/{budget}/{limitrepetition}', ['uses' => 'Chart\BudgetController@budgetLimit']);
|
Route::get('/chart/budget/{budget}/{limitrepetition}', ['uses' => 'Chart\BudgetController@budgetLimit']);
|
||||||
|
Route::get('/chart/budget/{budget}', ['uses' => 'Chart\BudgetController@budget']);
|
||||||
|
|
||||||
// categories:
|
// categories:
|
||||||
Route::get('/chart/category/frontpage', ['uses' => 'Chart\CategoryController@frontpage']);
|
Route::get('/chart/category/frontpage', ['uses' => 'Chart\CategoryController@frontpage']);
|
||||||
|
Reference in New Issue
Block a user