145 lines
6.4 KiB
HTML
145 lines
6.4 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Documentos{% endblock %}
|
|
{% block content %}
|
|
|
|
<div class="page-head">
|
|
<div>
|
|
<h2>Documentos</h2>
|
|
<p class="muted">{{ total_count }} registro(s) · total {{ total | money }}</p>
|
|
</div>
|
|
<a href="/documents/new" class="btn btn-primary btn-sm">+ Novo lançamento</a>
|
|
</div>
|
|
|
|
<section class="card">
|
|
<form method="get" action="/documents" class="filters">
|
|
<label class="field">
|
|
<span>De (competência)</span>
|
|
<span class="field-group">
|
|
<select name="start_mes">
|
|
<option value="" {{ 'selected' if not filters.start_mes else '' }}>Mês</option>
|
|
{% for m in meses_competencia %}
|
|
<option value="{{ loop.index }}" {{ 'selected' if filters.start_mes == loop.index | string else '' }}>{{ m }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<select name="start_ano">
|
|
<option value="" {{ 'selected' if not filters.start_ano else '' }}>Ano</option>
|
|
{% for a in anos_competencia %}
|
|
<option value="{{ a }}" {{ 'selected' if filters.start_ano == a | string else '' }}>{{ a }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</span>
|
|
</label>
|
|
<label class="field">
|
|
<span>Até (competência)</span>
|
|
<span class="field-group">
|
|
<select name="end_mes">
|
|
<option value="" {{ 'selected' if not filters.end_mes else '' }}>Mês</option>
|
|
{% for m in meses_competencia %}
|
|
<option value="{{ loop.index }}" {{ 'selected' if filters.end_mes == loop.index | string else '' }}>{{ m }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
<select name="end_ano">
|
|
<option value="" {{ 'selected' if not filters.end_ano else '' }}>Ano</option>
|
|
{% for a in anos_competencia %}
|
|
<option value="{{ a }}" {{ 'selected' if filters.end_ano == a | string else '' }}>{{ a }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</span>
|
|
</label>
|
|
<label class="field grow"><span>Fornecedor</span><input type="text" name="supplier" value="{{ filters.supplier }}" placeholder="contém…"></label>
|
|
<label class="field grow">
|
|
<span>Categoria</span>
|
|
<select name="category" onchange="this.form.submit()">
|
|
<option value="">Todas</option>
|
|
{% for c in categorias %}
|
|
<option value="{{ c.id }}" {{ 'selected' if filters.category == c.id | string else '' }}>{{ c.categoria }}</option>
|
|
{% endfor %}
|
|
<option value="none" {{ 'selected' if filters.category == 'none' else '' }}>Sem categoria</option>
|
|
</select>
|
|
</label>
|
|
<div class="filters-actions">
|
|
<button type="submit" class="btn btn-primary btn-sm">Filtrar</button>
|
|
<a href="/documents" class="btn btn-ghost btn-sm">Limpar</a>
|
|
</div>
|
|
</form>
|
|
</section>
|
|
|
|
<section class="card">
|
|
{% if rows %}
|
|
{% macro sort_url(key) -%}
|
|
/documents?start_mes={{ filters.start_mes | urlencode }}&start_ano={{ filters.start_ano | urlencode }}&end_mes={{ filters.end_mes | urlencode }}&end_ano={{ filters.end_ano | urlencode }}&supplier={{ filters.supplier | urlencode }}&category={{ filters.category | urlencode }}&sort={{ key }}&order={{ 'asc' if (sort == key and order == 'desc') else 'desc' }}
|
|
{%- endmacro %}
|
|
{% macro sort_arrow(key) -%}
|
|
{% if sort == key %}{{ ' ▲' if order == 'asc' else ' ▼' }}{% endif %}
|
|
{%- endmacro %}
|
|
<div class="table-scroll">
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th><a href="{{ sort_url('competencia') }}" class="link">Competência{{ sort_arrow('competencia') }}</a></th>
|
|
<th><a href="{{ sort_url('supplier_name') }}" class="link">Fornecedor{{ sort_arrow('supplier_name') }}</a></th>
|
|
<th><a href="{{ sort_url('categoria') }}" class="link">Categoria{{ sort_arrow('categoria') }}</a></th>
|
|
<th class="r"><a href="{{ sort_url('total_paid') }}" class="link">Valor{{ sort_arrow('total_paid') }}</a></th>
|
|
<th>Origem</th>
|
|
<th class="r">Ações</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for d in rows %}
|
|
<tr>
|
|
<td class="nowrap">{{ d.mes | competencia(d.ano) }}</td>
|
|
<td>{{ d.supplier_name }}</td>
|
|
<td>{{ d.categoria_nome or '' }}</td>
|
|
<td class="r money nowrap">{{ d.total_paid | money }}</td>
|
|
<td class="muted small">{{ d.source_location }}</td>
|
|
<td class="r nowrap">
|
|
<a href="/documents/{{ d.id }}/edit" class="link">Editar</a>
|
|
<form method="post" action="/documents/{{ d.id }}/delete" class="inline"
|
|
onsubmit="return confirm('Excluir este documento?');">
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
|
<button type="submit" class="linkbtn danger">Excluir</button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
<tfoot>
|
|
<tr><td colspan="3">Total registros: {{ total_count }}</td><td class="r money">{{ total | money }}</td><td colspan="2"></td></tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
|
|
{% if total_pages > 1 %}
|
|
{% macro page_url(p) -%}
|
|
/documents?start_mes={{ filters.start_mes | urlencode }}&start_ano={{ filters.start_ano | urlencode }}&end_mes={{ filters.end_mes | urlencode }}&end_ano={{ filters.end_ano | urlencode }}&supplier={{ filters.supplier | urlencode }}&category={{ filters.category | urlencode }}&sort={{ sort }}&order={{ order }}&page={{ p }}
|
|
{%- endmacro %}
|
|
<nav class="pagination" aria-label="Paginação">
|
|
{% if page <= 1 %}
|
|
<span class="btn btn-ghost btn-sm disabled" aria-disabled="true">« Anterior</span>
|
|
{% else %}
|
|
<a href="{{ page_url(page - 1) }}" class="btn btn-ghost btn-sm">« Anterior</a>
|
|
{% endif %}
|
|
{% for p in page_numbers %}
|
|
{% if p is none %}
|
|
<span class="pagination-ellipsis">…</span>
|
|
{% elif p == page %}
|
|
<span class="pagination-page current" aria-current="page">{{ p }}</span>
|
|
{% else %}
|
|
<a href="{{ page_url(p) }}" class="pagination-page">{{ p }}</a>
|
|
{% endif %}
|
|
{% endfor %}
|
|
{% if page >= total_pages %}
|
|
<span class="btn btn-ghost btn-sm disabled" aria-disabled="true">Próxima »</span>
|
|
{% else %}
|
|
<a href="{{ page_url(page + 1) }}" class="btn btn-ghost btn-sm">Próxima »</a>
|
|
{% endif %}
|
|
</nav>
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
<p class="muted">Nenhum documento encontrado. <a href="/documents/new" class="link">Lançar manualmente</a> ou <a href="/" class="link">importar</a>.</p>
|
|
{% endif %}
|
|
</section>
|
|
|
|
{% endblock %}
|