Small optimizations to reports.

This commit is contained in:
James Cole 2016-04-25 14:53:41 +02:00
parent 607d0115f0
commit 53c80aaef8
6 changed files with 53 additions and 2 deletions

View File

@ -2,6 +2,7 @@
declare(strict_types = 1); declare(strict_types = 1);
namespace FireflyIII\Helpers\Collection; namespace FireflyIII\Helpers\Collection;
use Carbon\Carbon;
use FireflyIII\Models\Budget as BudgetModel; use FireflyIII\Models\Budget as BudgetModel;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@ -24,6 +25,11 @@ class BalanceLine
/** @var BudgetModel */ /** @var BudgetModel */
protected $budget; protected $budget;
/** @var Carbon */
protected $startDate;
/** @var Carbon */
protected $endDate;
/** @var int */ /** @var int */
protected $role = self::ROLE_DEFAULTROLE; protected $role = self::ROLE_DEFAULTROLE;
@ -113,6 +119,39 @@ class BalanceLine
return ''; return '';
} }
/**
* @return Carbon
*/
public function getStartDate()
{
return $this->startDate;
}
/**
* @param Carbon $startDate
*/
public function setStartDate($startDate)
{
$this->startDate = $startDate;
}
/**
* @return Carbon
*/
public function getEndDate()
{
return $this->endDate;
}
/**
* @param Carbon $endDate
*/
public function setEndDate($endDate)
{
$this->endDate = $endDate;
}
/** /**
* If a BalanceLine has a budget/repetition, each BalanceEntry in this BalanceLine * If a BalanceLine has a budget/repetition, each BalanceEntry in this BalanceLine
* should have a "spent" value, which is the amount of money that has been spent * should have a "spent" value, which is the amount of money that has been spent

View File

@ -95,6 +95,8 @@ class BalanceReportHelper implements BalanceReportHelperInterface
{ {
$line = new BalanceLine; $line = new BalanceLine;
$line->setBudget($budget); $line->setBudget($budget);
$line->setStartDate($budget->startdate); // returned by getBudgetsAndLimitsInRange
$line->setEndDate($budget->enddate); // returned by getBudgetsAndLimitsInRange
// loop accounts: // loop accounts:
foreach ($accounts as $account) { foreach ($accounts as $account) {

View File

@ -71,7 +71,7 @@ class BudgetReportHelper implements BudgetReportHelperInterface
$budgetLine = new BudgetLine; $budgetLine = new BudgetLine;
$budgetLine->setBudget($budget); $budgetLine->setBudget($budget);
$budgetLine->setRepetition($repetition); $budgetLine->setRepetition($repetition);
$expenses = $this->getSumOfRange($start, $end, $totalSpent); $expenses = $this->getSumOfRange($repetition->startdate, $repetition->enddate, $totalSpent);
// 200 en -100 is 100, vergeleken met 0 === 1 // 200 en -100 is 100, vergeleken met 0 === 1
// 200 en -200 is 0, vergeleken met 0 === 0 // 200 en -200 is 0, vergeleken met 0 === 0

View File

@ -394,6 +394,7 @@ class BudgetRepository extends ComponentRepository implements BudgetRepositoryIn
); );
} }
) )
->orderBy('budgets.id', 'budget_limits.startdate', 'limit_repetitions.enddate')
->get(['budgets.*', 'limit_repetitions.startdate', 'limit_repetitions.enddate', 'limit_repetitions.amount']); ->get(['budgets.*', 'limit_repetitions.startdate', 'limit_repetitions.enddate', 'limit_repetitions.amount']);
$set = $set->sortBy( $set = $set->sortBy(

View File

@ -25,6 +25,11 @@
{% if balanceLine.getBudget.id %} {% if balanceLine.getBudget.id %}
<td> <td>
<a href="{{ route('budgets.show',balanceLine.getBudget.id) }}">{{ balanceLine.getTitle }}</a> <a href="{{ route('budgets.show',balanceLine.getBudget.id) }}">{{ balanceLine.getTitle }}</a>
<span class="small"><br>
{{ balanceLine.getStartdate.formatLocalized(monthAndDayFormat) }}
&mdash;
{{ balanceLine.getEnddate.formatLocalized(monthAndDayFormat) }}
</span>
</td> </td>
<td> <td>
{% if(balanceLine.getBudget.amount) %} {% if(balanceLine.getBudget.amount) %}

View File

@ -27,7 +27,11 @@
</td> </td>
<td> <td>
{% if budgetLine.getRepetition.id %} {% if budgetLine.getRepetition.id %}
<a href="{{ route('budgets.show', [budgetLine.getBudget.id, budgetLine.getRepetition.id]) }}">{{ budgetLine.getRepetition.startdate.formatLocalized(monthAndDayFormat) }}</a> <a href="{{ route('budgets.show', [budgetLine.getBudget.id, budgetLine.getRepetition.id]) }}">
{{ budgetLine.getRepetition.startdate.formatLocalized(monthAndDayFormat) }}
&mdash;
{{ budgetLine.getRepetition.enddate.formatLocalized(monthAndDayFormat) }}
</a>
{% endif %} {% endif %}
</td> </td>
<td> <td>