Fix #3409 - Split transactions show source/destination accounts several times

This commit is contained in:
Florian Dupret 2020-06-01 17:51:07 +02:00
parent e4d2b121c1
commit 6d8fd79922
2 changed files with 45 additions and 16 deletions

View File

@ -99,8 +99,9 @@ class ShowController extends Controller
$transformer->setParameters(new ParameterBag);
$groupArray = $transformer->transformObject($transactionGroup);
// do some amount calculations:
// do some calculations:
$amounts = $this->getAmounts($groupArray);
$accounts = $this->getAccounts($groupArray);
// make sure notes are escaped but not double escaped.
foreach ($groupArray['transactions'] as $index => $transaction) {
@ -127,7 +128,8 @@ class ShowController extends Controller
'groupArray',
'events',
'attachments',
'links'
'links',
'accounts',
)
);
}
@ -166,4 +168,31 @@ class ShowController extends Controller
return $amounts;
}
/**
* @param array $group
*
* @return array
*/
private function getAccounts(array $group): array
{
$accounts = [];
foreach ($group['transactions'] as $index => $transaction) {
$accounts['source'][] = [
'type' => $transaction['source_type'],
'id' => $transaction['source_id'],
'name' => $transaction['source_name'],
'iban' => $transaction['source_iban'] ];
$accounts['destination'][] = [
'type' => $transaction['destination_type'],
'id' => $transaction['destination_id'],
'name' => $transaction['destination_name'],
'iban' => $transaction['destination_iban'] ];
}
$accounts['source'] = array_unique($accounts['source'], SORT_REGULAR);
$accounts['destination'] = array_unique($accounts['destination'], SORT_REGULAR);
return $accounts;
}
}

View File

@ -82,19 +82,19 @@
{% if first.transactiontype.type != 'Withdrawal' or splits == 1 %}
<tr>
<td>
{{ trans_choice('firefly.source_accounts', groupArray.transactions|length ) }}
{{ trans_choice('firefly.source_accounts', accounts['source']|length ) }}
</td>
<td>
{% for journal in groupArray.transactions %}
{% if 'Cash account' == journal.source_type %}
{% for account in accounts['source'] %}
{% if 'Cash account' == account.type %}
<span class="text-success">({{ 'cash'|_ }})</span>
{% else %}
<a href="{{ route('accounts.show',journal.source_id) }}"
title="{{ journal.source_iban|default(journal.source_name) }}">
{{ journal.source_name }}
<a href="{{ route('accounts.show',account.id) }}"
title="{{ account.iban|default(account.name) }}">
{{ account.name }}
</a>
{% endif %}
{% if loop.index0 != groupArray.transactions|length -1 %}, {% endif %}
{% if loop.index0 != accounts['source']|length -1 %}, {% endif %}
{% endfor %}
</td>
</tr>
@ -103,20 +103,20 @@
{% if first.transactiontype.type != 'Deposit' or splits == 1 %}
<tr>
<td>
{{ trans_choice('firefly.destination_accounts', groupArray.transactions|length ) }}
{{ trans_choice('firefly.destination_accounts', accounts['destination']|length ) }}
</td>
<td>
{% for journal in groupArray.transactions %}
{% if 'Cash account' == journal.destination_type %}
{% for account in accounts['destination'] %}
{% if 'Cash account' == account.type %}
<span class="text-success">({{ 'cash'|_ }})</span>
{% else %}
<a href="{{ route('accounts.show',journal.destination_id) }}"
title="{{ journal.destination_iban|default(journal.destination_name) }}">
{{ journal.destination_name }}
<a href="{{ route('accounts.show',account.id) }}"
title="{{ account.iban|default(account.name) }}">
{{ account.name }}
</a>
{% endif %}
{% if loop.index0 != groupArray.transactions|length -1 %}, {% endif %}
{% if loop.index0 != accounts['destination']|length -1 %}, {% endif %}
{% endfor %}
</td>
</tr>