Files
firefly-iii/resources/views/v1/transactions/show.twig

384 lines
22 KiB
Twig
Raw Normal View History

2016-11-06 08:11:43 +01:00
{% extends "./layout/default" %}
2015-06-19 20:59:14 +02:00
{% block breadcrumbs %}
2019-04-08 20:31:31 +02:00
{{ Breadcrumbs.render(Route.getCurrentRoute.getName, transactionGroup) }}
2015-06-19 20:59:14 +02:00
{% endblock %}
{% block content %}
2015-06-27 08:06:24 +02:00
<div class="row">
2019-04-16 16:20:46 +02:00
<div class="col-lg-6">
<div class="box box-primary">
2015-06-27 08:06:24 +02:00
<div class="box-header with-border">
2016-10-15 12:39:34 +02:00
<h3 class="box-title">{{ 'transaction_journal_information'|_ }}</h3>
2015-06-27 08:06:24 +02:00
</div>
2017-10-22 18:39:09 +02:00
<div class="box-body no-padding">
2016-10-15 12:39:34 +02:00
<table class="table table-hover">
<tbody>
2016-06-11 06:31:56 +02:00
<tr>
2016-10-15 12:39:34 +02:00
<td>{{ trans('list.type') }}</td>
2019-04-16 16:20:46 +02:00
<td>{{ first.transactiontype.type|_ }}</td>
2016-10-15 12:39:34 +02:00
</tr>
<tr>
<td>{{ trans('list.description') }}</td>
<td>
2019-04-16 16:20:46 +02:00
{% if splits == 1 %}
{{ first.description }}
{% else %}
{{ transactionGroup.title }}
{% endif %}
</td>
2016-06-11 06:31:56 +02:00
</tr>
<tr>
2016-10-15 12:39:34 +02:00
<td style="width:30%;">{{ trans('list.date') }}</td>
2019-04-08 20:31:31 +02:00
<td>
2019-04-16 16:20:46 +02:00
{{ first.date.formatLocalized(dateTimeFormat) }}
2019-04-08 20:31:31 +02:00
</td>
</tr>
2016-10-15 12:39:34 +02:00
</tbody>
</table>
</div>
<div class="box-footer">
2019-04-16 16:20:46 +02:00
<div class="btn-group btn-group-xs">
2019-07-20 06:47:34 +02:00
<a href="{{ route('transactions.edit', [transactionGroup.id]) }}" class="btn btn-default"><i class="fa fa-pencil"></i> {{ 'edit'|_ }}
</a>
2019-08-01 06:22:07 +02:00
<a href="{{ route('transactions.delete', [transactionGroup.id]) }}" class="btn btn-danger"><i class="fa fa-trash"></i> {{ 'delete'|_ }}
</a>
2019-06-01 20:38:18 +02:00
{% if groupArray.transactions[0].type != 'withdrawal' %}
2019-07-20 06:47:34 +02:00
<a href="{{ route('transactions.convert.index', ['withdrawal', transactionGroup.id]) }}" class="btn btn-default"><i
class="fa fa-exchange"></i> {{ 'convert_to_withdrawal'|_ }}</a>
2019-04-16 16:20:46 +02:00
{% endif %}
{% if groupArray.transactions[0].type != 'deposit' %}
2019-07-20 06:47:34 +02:00
<a href="{{ route('transactions.convert.index', ['deposit', transactionGroup.id]) }}" class="btn btn-default"><i
class="fa fa-exchange"></i> {{ 'convert_to_deposit'|_ }}</a>
2019-06-01 20:38:18 +02:00
{% endif %}
{% if groupArray.transactions[0].type != 'transfer' %}
2019-07-20 06:47:34 +02:00
<a href="{{ route('transactions.convert.index', ['transfer', transactionGroup.id]) }}" class="btn btn-default"><i
class="fa fa-exchange"></i> {{ 'convert_to_transfer'|_ }}</a>
2019-06-01 20:38:18 +02:00
{% endif %}
{% if groupArray.transactions[0].type != 'opening balance' and groupArray.transactions[0].type != 'reconciliation' %}
2020-02-07 20:51:25 +01:00
<!-- since 5.1.0 -->
<a href="{{ route('transactions.clone', [transactionGroup.id]) }}" id="clone_button" class="btn btn-default"><i class="fa fa-copy"></i> {{ 'clone'|_ }}</a>
2019-07-20 06:47:34 +02:00
{% endif %}
2019-06-01 20:38:18 +02:00
{#
<a href="{{ route('transactions.delete', [transactionGroup.id]) }}" class="btn btn-danger"><i class="fa fa-trash"></i> {{ 'delete'|_ }}</a>
#}
2019-07-20 06:47:34 +02:00
</div>
2019-04-16 16:20:46 +02:00
</div>
</div>
</div>
2019-07-20 06:47:34 +02:00
<div class="col-lg-6">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">{{ 'transaction_journal_meta'|_ }}</h3>
</div>
<div class="box-body no-padding">
<table class="table table-hover">
<tbody>
2020-03-06 18:23:08 +01:00
{% if first.transactiontype.type != 'Withdrawal' or splits == 1 %}
2019-07-20 06:47:34 +02:00
<tr>
<td>
2020-05-29 18:00:29 +02:00
{{ trans_choice('firefly.source_accounts', groupArray.transactions|length ) }}
2019-07-20 06:47:34 +02:00
</td>
<td>
{% for journal in groupArray.transactions %}
2019-08-22 19:14:26 +02:00
{% if 'Cash account' == journal.source_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>
{% endif %}
2019-07-20 06:47:34 +02:00
{% if loop.index0 != groupArray.transactions|length -1 %}, {% endif %}
{% endfor %}
</td>
</tr>
{% endif %}
2019-04-16 16:20:46 +02:00
2020-03-06 18:23:08 +01:00
{% if first.transactiontype.type != 'Deposit' or splits == 1 %}
2019-07-20 06:47:34 +02:00
<tr>
<td>
2020-05-29 18:00:29 +02:00
{{ trans_choice('firefly.destination_accounts', groupArray.transactions|length ) }}
2019-06-01 20:38:18 +02:00
2019-07-20 06:47:34 +02:00
</td>
<td>
{% for journal in groupArray.transactions %}
2019-08-22 19:14:26 +02:00
{% if 'Cash account' == journal.destination_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>
{% endif %}
2019-07-20 06:47:34 +02:00
{% if loop.index0 != groupArray.transactions|length -1 %}, {% endif %}
{% endfor %}
</td>
</tr>
{% endif %}
<tr>
<td style="width:30%;">{{ 'total_amount'|_ }}</td>
2019-06-01 20:38:18 +02:00
<td>
2019-07-20 06:47:34 +02:00
{% for amount in amounts %}
2020-03-06 18:23:08 +01:00
{% if first.transactiontype.type == 'Withdrawal' or first.transactiontype.type == 'Deposit' %}
2019-08-04 19:54:31 +02:00
{{ formatAmountBySymbol(amount.amount*-1,amount.symbol, amount.decimal_places) }}{% if loop.index0 != amounts|length -1 %}, {% endif %}
2020-03-06 18:23:08 +01:00
{% elseif first.transactiontype.type == 'Transfer' %}
2019-07-20 06:47:34 +02:00
<span class="text-info">
2019-08-04 19:54:31 +02:00
{{ formatAmountBySymbol(amount.amount, amount.symbol, amount.decimal_places, false) }}{% if loop.index0 != amounts|length -1 %}, {% endif %}
2019-07-20 06:47:34 +02:00
</span>
2020-05-28 19:08:34 +02:00
{% elseif first.transactiontype.type == 'Opening balance' %}
{# Opening balance stored amount is always negative: find out which way the money goes #}
{% if groupArray.transactions[0].source_type == 'Initial balance account' %}
{{ formatAmountBySymbol(amount.amount*-1,amount.symbol, amount.decimal_places) }}
{% else %}
{{ formatAmountBySymbol(amount.amount,amount.symbol, amount.decimal_places) }}
{% endif %}
2019-07-20 06:47:34 +02:00
{% endif %}
2019-04-16 16:20:46 +02:00
{% endfor %}
</td>
</tr>
2019-07-20 06:47:34 +02:00
</tbody>
</table>
</div>
2019-04-16 16:20:46 +02:00
</div>
</div>
</div>
<div class="row">
2019-07-20 06:47:34 +02:00
2019-06-01 20:38:18 +02:00
</div>
2019-07-20 06:47:34 +02:00
{% if splits > 1 %}
<div class="row">
<div class="col-lg-12">
<h3>{{ 'splits'|_ }}</h3>
</div>
</div>
{% endif %}
2019-06-01 20:38:18 +02:00
{% set boxSize=6 %}
2019-07-20 06:47:34 +02:00
{% if(splits == 2) %}
{% set boxSize=6 %}
{% endif %}
{% if (splits > 2) %}
{% set boxSize = 4 %}
{% endif %}
<div class="row">
{% for index,journal in groupArray.transactions %}
<div class="col-lg-{{ boxSize }}">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">
{{ journal.description }}
{% if journal.reconciled %}
<i class="fa fa-check"></i>
{% endif %}
{% if splits > 1 %}
<small>
{{ index+1 }} / {{ splits }}
</small>
{% endif %}
</h3>
</div>
<div class="box-body no-padding">
<table class="table">
<tr>
<td colspan="2">
2020-03-06 18:23:08 +01:00
<!-- type is: "{{ first.transactiontype.type }}" -->
2019-08-22 19:14:26 +02:00
{% if 'Cash account' == journal.source_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> &rarr;
{% endif %}
2020-03-06 18:23:08 +01:00
{% if first.transactiontype.type == 'Withdrawal' or first.transactiontype.type == 'Deposit' %}
2019-07-20 06:47:34 +02:00
{{ formatAmountBySymbol(journal.amount*-1, journal.currency_symbol, journal.currency_decimal_places) }}
2020-03-06 18:23:08 +01:00
{% elseif first.transactiontype.type == 'Transfer' or first.transactiontype.type == 'Opening balance' %}
2019-04-16 16:20:46 +02:00
<span class="text-info">
2019-07-20 06:47:34 +02:00
{{ formatAmountBySymbol(journal.amount, journal.currency_symbol, journal.currency_decimal_places, false) }}
</span>
{% endif %}
<!-- do foreign amount -->
{% if null != journal.foreign_amount %}
2020-03-06 18:23:08 +01:00
{% if first.transactiontype.type == 'Withdrawal' or first.transactiontype.type == 'Deposit' %}
2019-07-20 06:47:34 +02:00
({{ formatAmountBySymbol(journal.foreign_amount*-1, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places) }})
2020-03-06 18:23:08 +01:00
{% elseif first.transactiontype.type == 'Transfer' %}
2019-07-20 06:47:34 +02:00
<span class="text-info">
2019-06-01 20:38:18 +02:00
({{ formatAmountBySymbol(journal.foreign_amount, journal.foreign_currency_symbol, journal.foreign_currency_decimal_places, false) }})
</span>
2019-07-20 06:47:34 +02:00
{% endif %}
2019-04-18 20:05:40 +02:00
{% endif %}
2019-07-20 06:47:34 +02:00
&rarr;
2019-08-22 19:14:26 +02:00
{% if 'Cash account' == journal.destination_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>
{% endif %}
2019-07-20 06:47:34 +02:00
</td>
2019-06-01 20:38:18 +02:00
</tr>
2019-07-20 06:47:34 +02:00
{% if null != journal.category_id %}
2019-04-16 16:20:46 +02:00
<tr>
2019-07-20 06:47:34 +02:00
<td style="width:30%;">{{ 'category'|_ }}</td>
<td><a href="{{ route('categories.show', [journal.category_id]) }}">{{ journal.category_name }}</a></td>
2019-04-16 16:20:46 +02:00
</tr>
{% endif %}
2020-03-06 18:23:08 +01:00
{% if null != journal.budget_id and first.transactiontype.type == 'Withdrawal' %}
2019-04-16 16:20:46 +02:00
<tr>
2019-07-20 06:47:34 +02:00
<td>{{ 'budget'|_ }}</td>
<td><a href="{{ route('budgets.show', [journal.budget_id]) }}">{{ journal.budget_name }}</a></td>
2019-04-16 16:20:46 +02:00
</tr>
{% endif %}
2020-03-06 18:23:08 +01:00
{% if null != journal.bill_id and first.transactiontype.type == 'Withdrawal' %}
2019-04-16 16:20:46 +02:00
<tr>
2019-07-20 06:47:34 +02:00
<td>{{ 'bill'|_ }}</td>
<td><a href="{{ route('bills.show', [journal.bill_id]) }}">{{ journal.bill_name }}</a></td>
2019-04-16 16:20:46 +02:00
</tr>
2019-07-20 06:47:34 +02:00
{% endif %}
<!-- other fields -->
{% for dateField in ['interest_date','book_date','process_date','due_date','payment_date','invoice_date'] %}
{% if journalHasMeta(journal.transaction_journal_id, dateField) %}
<tr>
<td>{{ trans('list.'~dateField) }}</td>
<td>{{ journalGetMetaDate(journal.transaction_journal_id, dateField).formatLocalized(monthAndDayFormat) }}</td>
</tr>
{% endif %}
2019-06-01 20:38:18 +02:00
{% endfor %}
2019-07-20 06:47:34 +02:00
{% for metaField in ['external_id','bunq_payment_id','internal_reference','sepa_batch_id','sepa_ct_id','sepa_ct_op','sepa_db','sepa_country','sepa_cc','sepa_ep','sepa_ci'] %}
{% if journalHasMeta(journal.transaction_journal_id, metaField) %}
<tr>
<td>{{ trans('list.'~metaField) }}</td>
<td>{{ journalGetMetaField(journal.transaction_journal_id, metaField) }}</td>
</tr>
{% endif %}
{% endfor %}
{% if null != journal.notes and '' != journal.notes %}
<tr>
<td>{{ trans('list.notes') }}</td>
<td class="markdown">{{ journal.notes|markdown }}</td>
</tr>
{% endif %}
{% if journal.tags|length > 0 %}
<tr>
<td>{{ 'tags'|_ }}</td>
<td>
{% for tag in journal.tags %}
2020-04-07 18:19:29 +02:00
<h4 style="display: inline;"><a class="label label-success" href="{{ route('tags.show', tag.id) }}">
<i class="fa fa-fw fa-tag"></i>{{ tag.tag }}</a>
2019-07-20 06:47:34 +02:00
</h4>
{% endfor %}
</td>
</tr>
{% endif %}
2019-04-16 16:20:46 +02:00
</table>
</div>
2019-07-20 06:47:34 +02:00
<div class="box-footer">
<div class="btn-group btn-group-xs">
<a href="#" class="btn btn-default link-modal" data-journal="{{ journal.transaction_journal_id }}">
<i class="fa fa-fw fa-link"></i>
{{ 'link_transaction'|_ }}
2020-01-25 06:32:15 +01:00
</a>
<a href="{{ route('rules.create-from-journal', [journal.transaction_journal_id]) }}" class="btn btn-default">
<i class="fa fa-fw fa-random"></i>
{{ 'create_rule_from_transaction'|_ }}
2019-07-20 06:47:34 +02:00
</a>
</div>
</div>
2019-04-16 16:20:46 +02:00
</div>
2017-11-22 21:54:58 +01:00
2019-07-20 06:47:34 +02:00
<!-- Transaction links -->
{% if links[journal.transaction_journal_id]|length > 0 %}
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">
{{ 'journal_links'|_ }}
</h3>
</div>
<div class="box-body no-padding">
<table class="table">
{% for link in links[journal.transaction_journal_id] %}
<tr>
<td style="width:120px;">
<div class="btn-group btn-group-xs">
2019-08-22 19:14:26 +02:00
<a href="{{ route('transactions.link.switch', [link.id]) }}" class="btn btn-default"><i
class="fa fa-fw fa-arrows-h"></i></a>
2019-07-20 06:47:34 +02:00
<a href="{{ route('transactions.link.delete', [link.id]) }}" class="btn btn-danger"><i class="fa fa-trash"></i></a>
</div>
</td>
2020-02-29 13:58:34 +01:00
<td>{{ trans('firefly.'~link.link) }} "<a href="{{ route('transactions.show', link.group) }}"
2019-07-20 06:47:34 +02:00
title="{{ link.description }}">{{ link.description }}</a>"
({{ link.amount|raw }})
{% if '' != link.foreign_amount %}
({{ link.foreign_amount|raw }})
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div>
2019-04-16 16:20:46 +02:00
</div>
2019-07-20 06:47:34 +02:00
{% endif %}
<!-- Attachments -->
{% if attachments[journal.transaction_journal_id]|length > 0 %}
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ 'attachments'|_ }}</h3>
</div>
<div class="box-body table-responsive no-padding">
{% include 'list.attachments' with {attachments: attachments[journal.transaction_journal_id]} %}
2019-07-20 06:47:34 +02:00
</div>
2019-04-18 20:05:40 +02:00
</div>
2019-07-20 06:47:34 +02:00
{% endif %}
2019-04-16 16:20:46 +02:00
2019-07-20 06:47:34 +02:00
<!-- Piggy bank events -->
{% if events[journal.transaction_journal_id]|length > 0 %}
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ 'piggy_events'|_ }}</h3>
</div>
<div class="box-body table-responsive no-padding">
<table class="table table-hover">
{% for event in events[journal.transaction_journal_id] %}
<tr>
<td style="width:30%;">{{ event.amount|raw }}</td>
<td>
<a href="{{ route('piggy-banks.show', [event.piggy_id]) }}">{{ event.piggy }}</a></td>
2019-06-01 20:38:18 +02:00
2019-07-20 06:47:34 +02:00
</tr>
{% endfor %}
</table>
</div>
</div>
2019-07-20 06:47:34 +02:00
{% endif %}
</div>
{% endfor %}
</div>
{# modal for linking journals. Will be filled by AJAX #}
<div class="modal fade" tabindex="-1" role="dialog" id="linkJournalModal">
</div>
2019-06-01 20:38:18 +02:00
{% endblock %}
{% block scripts %}
2020-01-04 11:16:14 +01:00
<script type="text/javascript" nonce="{{ JS_NONCE }}">
2019-07-20 06:47:34 +02:00
var modalDialogURI = '{{ route('transactions.link.modal', ['%JOURNAL%']) }}';
var acURI = '{{ route('json.autocomplete.all-journals-with-id') }}';
2019-10-05 04:53:58 +02:00
var groupURI = '{{ route('transactions.show',['%GROUP%']) }}';
2020-02-07 20:51:25 +01:00
var newCloneInstructions = '{{ 'new_clone_instructions'|_|escape('js') }}';
2019-07-20 06:47:34 +02:00
</script>
2020-01-04 11:16:14 +01:00
<script type="text/javascript" src="v1/js/lib/typeahead/typeahead.bundle.min.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
<script type="text/javascript" src="v1/js/ff/transactions/show.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
2019-06-01 20:38:18 +02:00
{% endblock %}