2018-06-10 09:59:03 -05:00
|
|
|
{% extends "./layout/default" %}
|
|
|
|
|
|
|
|
{% block breadcrumbs %}
|
|
|
|
{{ Breadcrumbs.render(Route.getCurrentRoute.getName, recurrence) }}
|
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
{% block content %}
|
2019-08-26 23:36:16 -05:00
|
|
|
<div class="row">
|
|
|
|
<!-- basic info -->
|
|
|
|
<div class="col-lg-8 col-md-12 col-sm-12">
|
|
|
|
<div class="box">
|
|
|
|
<div class="box-header with-border">
|
|
|
|
<h3 class="box-title">
|
|
|
|
{{ array.title }}
|
2018-06-22 11:42:23 -05:00
|
|
|
|
2019-08-26 23:36:16 -05:00
|
|
|
({{ array.type }})
|
2018-06-22 11:42:23 -05:00
|
|
|
|
|
|
|
{% if array.active == false %}
|
2019-08-26 23:36:16 -05:00
|
|
|
({{ 'inactive'|_|lower }})
|
2018-06-22 11:42:23 -05:00
|
|
|
{% endif %}
|
2019-08-26 23:36:16 -05:00
|
|
|
</h3>
|
|
|
|
</div>
|
|
|
|
<div class="box-body">
|
|
|
|
<p><em>{{ array.description }}</em></p>
|
2018-06-22 11:42:23 -05:00
|
|
|
|
2019-08-26 23:36:16 -05:00
|
|
|
{% if array.active == false %}
|
|
|
|
<p>
|
|
|
|
{{ 'recurrence_is_inactive'|_ }}
|
|
|
|
</p>
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
<ul>
|
|
|
|
{% for rep in array.repetitions %}
|
|
|
|
<li>{{ rep.description }}</li>
|
|
|
|
{% endfor %}
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div class="box-footer">
|
|
|
|
<div class="btn-group">
|
|
|
|
<a href="{{ route('recurring.edit', [array.id]) }}" class="btn btn-sm btn-default"><i class="fa fa-pencil"></i> {{ 'edit'|_ }}</a>
|
|
|
|
<a href="{{ route('recurring.delete', [array.id]) }}" class="btn btn-sm btn-danger">{{ 'delete'|_ }} <i class="fa fa-trash"></i></a>
|
2018-06-10 09:59:03 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-08-26 23:36:16 -05:00
|
|
|
</div>
|
|
|
|
<!-- next and previous repetitions -->
|
|
|
|
<div class="col-lg-4 col-md-12 col-sm-12">
|
|
|
|
<div class="box">
|
|
|
|
<div class="box-header with-border">
|
|
|
|
<h3 class="box-title">
|
|
|
|
{{ ('expected_'~array.type~'s')|_ }}
|
|
|
|
</h3>
|
|
|
|
</div>
|
|
|
|
<div class="box-body">
|
2020-05-04 03:26:01 -05:00
|
|
|
{% if null != array.repeat_until and today > array.repeat_until %}
|
|
|
|
<span class="text-danger">
|
|
|
|
{{ trans('firefly.repeat_until_in_past', {date: array.repeat_until.formatLocalized(monthAndDayFormat) }) }}
|
|
|
|
</span>
|
|
|
|
{% endif %}
|
2019-08-26 23:36:16 -05:00
|
|
|
<ul>
|
|
|
|
{% for rep in array.repetitions %}
|
|
|
|
<li>
|
|
|
|
{{ rep.description }}
|
|
|
|
{% if rep.repetition_skip == 1 %}
|
|
|
|
({{ trans('firefly.recurring_skips_one')|lower }})
|
|
|
|
{% endif %}
|
|
|
|
{% if rep.repetition_skip > 1 %}
|
|
|
|
({{ trans('firefly.recurring_skips_more', {count: rep.repetition_skip})|lower }})
|
|
|
|
{% endif %}
|
|
|
|
<ul>
|
|
|
|
{% for occ in rep.occurrences %}
|
|
|
|
<li>{{ occ.formatLocalized(trans('config.month_and_date_day')) }}</li>
|
|
|
|
{% endfor %}
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
{% endfor %}
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div class="box-footer">
|
|
|
|
<small>
|
|
|
|
<em>{{ 'warning_duplicates_repetitions'|_ }}</em>
|
|
|
|
</small>
|
2018-06-10 09:59:03 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-08-26 23:36:16 -05:00
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
|
|
<!-- transactions -->
|
|
|
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
|
|
|
<div class="box">
|
|
|
|
<div class="box-header with-border">
|
|
|
|
<h3 class="box-title">
|
|
|
|
{{ 'transaction_data'|_ }}
|
|
|
|
</h3>
|
|
|
|
</div>
|
|
|
|
<div class="box-body no-padding">
|
|
|
|
<table class="table table-hover sortable">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
2018-07-02 22:52:35 -05:00
|
|
|
<th data-defaultsign="az">{{ trans('list.description') }}</th>
|
2018-06-10 09:59:03 -05:00
|
|
|
<th data-defaultsign="az">{{ trans('list.source') }}</th>
|
|
|
|
<th data-defaultsign="az">{{ trans('list.destination') }}</th>
|
|
|
|
<th data-defaultsign="_19">{{ trans('list.amount') }}</th>
|
|
|
|
<th data-defaultsign="az">{{ trans('list.category') }}</th>
|
|
|
|
<th data-defaultsign="az">{{ trans('list.budget') }}</th>
|
2019-08-26 23:36:16 -05:00
|
|
|
<th>{{ trans('list.other_meta_data') }}</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
{% for transaction in array.transactions %}
|
|
|
|
<tr>
|
|
|
|
<td data-value="{{ transaction.description }}">
|
|
|
|
{{ transaction.description }}
|
|
|
|
</td>
|
|
|
|
<td data-value="{{ transaction.source_name }}">
|
|
|
|
<a href="{{ route('accounts.show', [transaction.source_id]) }}">{{ transaction.source_name }}</a>
|
|
|
|
</td>
|
|
|
|
<td data-value="{{ transaction.destination_name }}">
|
|
|
|
<a href="{{ route('accounts.show', [transaction.destination_id]) }}">{{ transaction.destination_name }}</a>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{{ formatAmountBySymbol(transaction.amount,transaction.currency_symbol,transaction.currency_decimal_places) }}
|
|
|
|
{% if null != transaction.foreign_amount %}
|
|
|
|
({{ formatAmountBySymbol(transaction.foreign_amount,transaction.foreign_currency_symbol,transaction.foreign_currency_decimal_places) }})
|
|
|
|
{% endif %}
|
|
|
|
</td>
|
|
|
|
<td data-value="{{ transaction.category_id|default(0) }}">
|
|
|
|
{% if '' != transaction.category_name %}
|
|
|
|
<a href="{{ route('categories.show', [transaction.category_id]) }}">
|
|
|
|
{{ transaction.category_name }}
|
|
|
|
</a>
|
|
|
|
{% endif %}
|
|
|
|
</td>
|
|
|
|
<td data-value="{{ transaction.budget_id|default(0) }}">
|
|
|
|
{% if '' != transaction.budget_name %}
|
|
|
|
<a href="{{ route('budgets.show', [transaction.budget_id]) }}">
|
|
|
|
{{ transaction.budget_name }}
|
|
|
|
</a>
|
|
|
|
{% endif %}
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
{% if transaction.tags|length > 0 %}
|
|
|
|
<p>
|
|
|
|
{% for tag in transaction.tags %}
|
|
|
|
<span class="label label-success">{{ tag }}</span>
|
|
|
|
{% endfor %}
|
|
|
|
</p>
|
|
|
|
{% endif %}
|
|
|
|
{% if 0 != transaction.piggy_bank_id and array.type == 'Transfer' %}
|
|
|
|
<a href="{{ route('piggy-banks.show', [transaction.piggy_bank_id]) }}">{{ transaction.piggy_bank_name }}</a>
|
|
|
|
{% endif %}
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
{% endfor %}
|
|
|
|
</tbody>
|
|
|
|
</table>
|
2018-06-10 09:59:03 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
|
|
<!-- meta data -->
|
|
|
|
<div class="col-lg-12 col-md-12 col-sm-12">
|
|
|
|
<div class="box">
|
|
|
|
<div class="box-header with-border">
|
|
|
|
<h3 class="box-title">
|
2019-09-04 00:51:31 -05:00
|
|
|
{{ ('created_'~array.type~'s')|_ }}
|
2018-06-10 09:59:03 -05:00
|
|
|
</h3>
|
|
|
|
</div>
|
|
|
|
<div class="box-body">
|
2019-07-01 13:22:35 -05:00
|
|
|
{% include 'list.groups' %}
|
2018-06-10 09:59:03 -05:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2019-08-26 23:36:16 -05:00
|
|
|
{% endblock %}
|
2018-06-10 09:59:03 -05:00
|
|
|
|
2019-08-26 23:36:16 -05:00
|
|
|
{% block styles %}
|
|
|
|
<link rel="stylesheet" href="v1/css/bootstrap-sortable.css?v={{ FF_VERSION }}" type="text/css" media="all"/>
|
|
|
|
{% endblock %}
|
2018-06-10 09:59:03 -05:00
|
|
|
|
2019-08-26 23:36:16 -05:00
|
|
|
{% block scripts %}
|
2020-01-04 04:16:14 -06:00
|
|
|
<script type="text/javascript" src="v1/js/lib/bootstrap-sortable.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
|
2019-08-26 23:36:16 -05:00
|
|
|
{# required for groups.twig #}
|
2020-01-04 04:16:14 -06:00
|
|
|
<script type="text/javascript" src="v1/js/ff/list/groups.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
|
2019-08-26 23:36:16 -05:00
|
|
|
{% endblock %}
|