Some cleaning up in the reports. [skip ci]

This commit is contained in:
James Cole
2015-01-02 11:04:51 +01:00
parent 426d3d948c
commit 3be1cdb249
4 changed files with 57 additions and 34 deletions

View File

@@ -361,36 +361,8 @@ class Report implements ReportInterface
*/ */
public function revenueGroupedByAccount(Carbon $start, Carbon $end, $limit = 15) public function revenueGroupedByAccount(Carbon $start, Carbon $end, $limit = 15)
{ {
return \TransactionJournal:: return $this->_queries->journalsByRevenueAccount($start, $end);
leftJoin(
'transactions as t_from', function (JoinClause $join) {
$join->on('t_from.transaction_journal_id', '=', 'transaction_journals.id')->where('t_from.amount', '<', 0);
}
)
->leftJoin('accounts as ac_from', 't_from.account_id', '=', 'ac_from.id')
->leftJoin(
'account_meta as acm_from', function (JoinClause $join) {
$join->on('ac_from.id', '=', 'acm_from.account_id')->where('acm_from.name', '=', 'accountRole');
}
)
->leftJoin(
'transactions as t_to', function (JoinClause $join) {
$join->on('t_to.transaction_journal_id', '=', 'transaction_journals.id')->where('t_to.amount', '>', 0);
}
)
->leftJoin('accounts as ac_to', 't_to.account_id', '=', 'ac_to.id')
->leftJoin(
'account_meta as acm_to', function (JoinClause $join) {
$join->on('ac_to.id', '=', 'acm_to.account_id')->where('acm_to.name', '=', 'accountRole');
}
)
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
->where('transaction_types.type', 'Deposit')
->where('acm_to.data', '!=', '"sharedExpense"')
->before($end)->after($start)
->where('transaction_journals.user_id', \Auth::user()->id)
->groupBy('t_from.account_id')->orderBy('sum')->limit(15)
->get(['t_from.account_id as account_id', 'ac_from.name as name', \DB::Raw('SUM(t_from.amount) as `sum`')]);
} }

View File

@@ -3,9 +3,9 @@
namespace FireflyIII\Report; namespace FireflyIII\Report;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Query\JoinClause; use Illuminate\Database\Query\JoinClause;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Database\Eloquent\Builder;
/** /**
* Class ReportQuery * Class ReportQuery
@@ -319,6 +319,48 @@ class ReportQuery implements ReportQueryInterface
->get(['t_to.account_id as id', 'ac_to.name as name', \DB::Raw('SUM(t_to.amount) as `amount`')]); ->get(['t_to.account_id as id', 'ac_to.name as name', \DB::Raw('SUM(t_to.amount) as `amount`')]);
} }
/**
* This method returns all deposits into asset accounts, grouped by the revenue account,
*
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function journalsByRevenueAccount(Carbon $start, Carbon $end)
{
return \TransactionJournal::
leftJoin(
'transactions as t_from', function (JoinClause $join) {
$join->on('t_from.transaction_journal_id', '=', 'transaction_journals.id')->where('t_from.amount', '<', 0);
}
)
->leftJoin('accounts as ac_from', 't_from.account_id', '=', 'ac_from.id')
->leftJoin(
'account_meta as acm_from', function (JoinClause $join) {
$join->on('ac_from.id', '=', 'acm_from.account_id')->where('acm_from.name', '=', 'accountRole');
}
)
->leftJoin(
'transactions as t_to', function (JoinClause $join) {
$join->on('t_to.transaction_journal_id', '=', 'transaction_journals.id')->where('t_to.amount', '>', 0);
}
)
->leftJoin('accounts as ac_to', 't_to.account_id', '=', 'ac_to.id')
->leftJoin(
'account_meta as acm_to', function (JoinClause $join) {
$join->on('ac_to.id', '=', 'acm_to.account_id')->where('acm_to.name', '=', 'accountRole');
}
)
->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id')
->where('transaction_types.type', 'Deposit')
->where('acm_to.data', '!=', '"sharedExpense"')
->before($end)->after($start)
->where('transaction_journals.user_id', \Auth::user()->id)
->groupBy('t_from.account_id')->orderBy('amount')
->get(['t_from.account_id as account_id', 'ac_from.name as name', \DB::Raw('SUM(t_from.amount) as `amount`')]);
}
/** /**
* With an equally misleading name, this query returns are transfers to shared accounts. These are considered * With an equally misleading name, this query returns are transfers to shared accounts. These are considered
* expenses. * expenses.

View File

@@ -108,6 +108,15 @@ interface ReportQueryInterface
*/ */
public function journalsByExpenseAccount(Carbon $start, Carbon $end); public function journalsByExpenseAccount(Carbon $start, Carbon $end);
/**
* This method returns all deposits into asset accounts, grouped by the revenue account,
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function journalsByRevenueAccount(Carbon $start, Carbon $end);
/** /**
* With an equally misleading name, this query returns are transfers to shared accounts. These are considered * With an equally misleading name, this query returns are transfers to shared accounts. These are considered
* expenses. * expenses.

View File

@@ -71,7 +71,7 @@
$incomeSum = 0; $incomeSum = 0;
$expenseSum = 0; $expenseSum = 0;
foreach($groupedIncomes as $income) { foreach($groupedIncomes as $income) {
$incomeSum += floatval($income->sum); $incomeSum += floatval($income->amount);
} }
foreach($groupedExpenses as $exp) { foreach($groupedExpenses as $exp) {
$expenseSum += floatval($exp['amount']); $expenseSum += floatval($exp['amount']);
@@ -104,10 +104,10 @@
<table class="table"> <table class="table">
<?php $sum = 0;?> <?php $sum = 0;?>
@foreach($groupedIncomes as $income) @foreach($groupedIncomes as $income)
<?php $sum += floatval($income->sum)*-1;?> <?php $sum += floatval($income->amount)*-1;?>
<tr> <tr>
<td><a href="{{route('accounts.show',$income->account_id)}}">{{{$income->name}}}</a></td> <td><a href="{{route('accounts.show',$income->account_id)}}">{{{$income->name}}}</a></td>
<td>{{Amount::format(floatval($income->sum)*-1)}}</td> <td>{{Amount::format(floatval($income->amount)*-1)}}</td>
</tr> </tr>
@endforeach @endforeach
<tr> <tr>