Added a sum of the current page and the sum of the entire category, in reference to issue #99.

This commit is contained in:
James Cole 2015-08-09 16:56:38 +02:00
parent 8d109a3cfe
commit 51e30aed66
8 changed files with 71 additions and 7 deletions

View File

@ -151,10 +151,11 @@ class CategoryController extends Controller
$page = intval(Input::get('page'));
$set = $repository->getJournals($category, $page);
$count = $repository->countJournals($category);
$totalSum = $repository->journalsSum($category);
$journals = new LengthAwarePaginator($set, $count, 50, $page);
$journals->setPath('categories/show/' . $category->id);
return view('categories.show', compact('category', 'journals', 'hideCategory'));
return view('categories.show', compact('category', 'journals', 'hideCategory', 'totalSum'));
}
/**

View File

@ -25,7 +25,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Category whereUserId($value)
* @method static \Illuminate\Database\Query\Builder|\FireflyIII\Models\Category whereEncrypted($value)
* @property-read float $spent
* @property-read \Carbon\Carbon $lastActivity
* @property \Carbon\Carbon $lastActivity
*/
class Category extends Model
{

View File

@ -57,6 +57,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
return $set;
}
/**
*
* @param Carbon $start
@ -64,7 +65,7 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
*
* @return array
*/
public function getCategoriesAndExpensesCorrected($start, $end)
public function getCategoriesAndExpensesCorrected(Carbon $start, Carbon $end)
{
$set = Auth::user()->transactionjournals()
->leftJoin(
@ -233,4 +234,32 @@ class CategoryRepository extends ComponentRepository implements CategoryReposito
return $category;
}
/**
* This method returns the sum of the journals in the category, optionally
* limited by a start or end date.
*
* @param Category $category
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function journalsSum(Category $category, Carbon $start = null, Carbon $end = null)
{
$query = $category->transactionJournals()
->orderBy('transaction_journals.date', 'DESC')
->orderBy('transaction_journals.order', 'ASC')
->orderBy('transaction_journals.id', 'DESC');
if (!is_null($start)) {
$query->after($start);
}
if (!is_null($end)) {
$query->before($end);
}
return $query->get(['transaction_journals.*'])->sum('correct_amount');
}
}

View File

@ -40,7 +40,7 @@ interface CategoryRepositoryInterface
*
* @return array
*/
public function getCategoriesAndExpensesCorrected($start, $end);
public function getCategoriesAndExpensesCorrected(Carbon $start, Carbon $end);
/**
* @param Category $category
@ -57,6 +57,18 @@ interface CategoryRepositoryInterface
*/
public function getJournals(Category $category, $page);
/**
* This method returns the sum of the journals in the category, optionally
* limited by a start or end date.
*
* @param Category $category
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function journalsSum(Category $category, Carbon $start = null, Carbon $end = null);
/**
* @param Category $category
*

View File

@ -15,6 +15,7 @@ return [
'cancel' => 'Cancel',
'from' => 'From',
'to' => 'To',
'total_sum' => 'Total sum',
'showEverything' => 'Show everything',
'never' => 'Never',
'search_results_for' => 'Search results for ":query"',

View File

@ -15,6 +15,7 @@ return [
'cancel' => 'Annuleren',
'from' => 'Van',
'to' => 'Tot',
'total_sum' => 'Totale som',
'showEverything' => 'Laat alles zien',
'never' => 'Nooit',
'search_results_for' => 'Zoekresultaten voor ":query"',

View File

@ -45,7 +45,7 @@
<h3 class="box-title">{{ 'transactions'|_ }}</h3>
</div>
<div class="box-body no-padding">
{% include 'list/journals' %}
{% include 'list/journals' with {showPageSum: true,showTotalSum: true} %}
</div>
</div>
</div>

View File

@ -1,6 +1,7 @@
{{ journals.render|raw }}
<table class="table table-hover sortable sortable-table">
<table class="table table-hover">
<thead>
<tr class="ignore">
<th class="hidden-xs" colspan="2">&nbsp;</th>
<th>{{ trans('list.description') }}</th>
@ -23,6 +24,9 @@
<th class="hidden-xs"><i class="fa fa-fw fa-rotate-right" title="{{ trans('list.bill') }}"></i></th>
{% endif %}
</tr>
</thead>
<tbody>
{% set _sum = 0 %}
{% for journal in journals %}
{% if invalidJournal(journal) %}
<tr class="ignore">
@ -36,6 +40,7 @@
<td colspan="7"><em>Invalid journal: Found {{ journal.transactions|length }} transaction(s)</em></td>
</tr>
{% else %}
{% set _sum = _sum + journal.correct_amount %}
<tr class="drag" data-date="{{ journal.date.format('Y-m-d') }}" data-id="{{ journal.id }}">
<td class="hidden-xs">
<div class="btn-group btn-group-xs">
@ -111,8 +116,23 @@
{% endif %}
</tr>
{% endif %}
{% endfor %}
</tbody>
<tfoot>
{% if showPageSum %}
<tr>
<td colspan="3" style="text-align: right;"><em>{{ 'sum'|_ }}</em></td>
<td colspan="2">{{ _sum|formatAmount }}</td>
</tr>
{% endif %}
{% if showTotalSum %}
<tr>
<td colspan="3" style="text-align: right;"><em>{{ 'total_sum'|_ }}</em></td>
<td colspan="2">{{ totalSum|formatAmount }}</td>
</tr>
{% endif %}
</tfoot>
</table>
{{ journals.render|raw }}