mirror of https://github.com/interlegis/sigi.git
Sesóstris Vieira
2 weeks ago
8 changed files with 559 additions and 3 deletions
@ -0,0 +1,11 @@ |
|||
{% extends "utils/report/report_pdf.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block main_content %} |
|||
{{ block.super }} |
|||
<div class="new-page"></div> |
|||
<div style="padding: 24px;"> |
|||
<h1>{% translate "Resumo da última importação de dados do Gescon" %}</h1> |
|||
{{ ultima_importacao }} |
|||
</div> |
|||
{% endblock %} |
@ -0,0 +1,22 @@ |
|||
{% extends 'utils/report/report.html' %} |
|||
{% load i18n %} |
|||
|
|||
{% block extrastyle %} |
|||
{{ block.super }} |
|||
<style type="text/css"> |
|||
.sessao-resumo { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
gap: 0.5em; |
|||
} |
|||
.card-resumo { |
|||
flex-grow: 1; |
|||
} |
|||
</style> |
|||
{% endblock %} |
|||
|
|||
{% block data %} |
|||
{% if eventos %} |
|||
{% include "admin/eventos/custos_eventos_report_snippet.html" %} |
|||
{% endif %} |
|||
{% endblock data %} |
@ -0,0 +1,101 @@ |
|||
{% extends 'pdf/base_report.html' %} |
|||
{% load static i18n sigi_tags %} |
|||
|
|||
{% block page_size %}A4 landscape{% endblock page_size %} |
|||
{% block page_margin %}3cm 1cm 2cm 1cm{% endblock page_margin %}; |
|||
|
|||
{% block extra_style %} |
|||
{{ block.super }} |
|||
aside { |
|||
margin-left: 8px; |
|||
font-size: 0.8em; |
|||
color: #666; |
|||
} |
|||
blockquote { |
|||
margin: 12px 0 12px; |
|||
padding-left: 1.5rem; |
|||
border-left: 5px solid #ee6e73; |
|||
font-size: 1.4em; |
|||
font-weight: bold; |
|||
} |
|||
tr:nth-child(even) { |
|||
background-color: initial; |
|||
} |
|||
.even-row { |
|||
background-color: #d2d2d2 !important; |
|||
} |
|||
|
|||
.sessao-resumo { |
|||
align-items: stretch; |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
width: 100%; |
|||
margin-top: 24px; |
|||
} |
|||
.card-resumo { |
|||
background-color: #eeeeef; |
|||
border-radius: 2px; |
|||
box-sizing: border-box; |
|||
margin: 6px; |
|||
flex-basis: 49%; |
|||
padding: 0 6px 6px 6px; |
|||
position: relative; |
|||
width: 100%; |
|||
} |
|||
.card-resumo.full { |
|||
flex-basis: 98%; |
|||
} |
|||
|
|||
.index-cell { |
|||
width: 2em; |
|||
text-align: center; |
|||
} |
|||
.label-resumo { |
|||
min-width: 30em; |
|||
} |
|||
.timestamp-container { |
|||
width: 100%; |
|||
margin: 24px 10px; |
|||
border-left: 5px solid #ee6e73; |
|||
font-size: 1.3em; |
|||
} |
|||
.timestamp-row { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
margin-bottom: 6px; |
|||
} |
|||
.timestamp-col { |
|||
position: relative; |
|||
padding-left: 15px; |
|||
padding-right: 15px; |
|||
} |
|||
.timestamp-label { |
|||
flex: 0 0 12%; |
|||
max-width: 12%; |
|||
font-weight: bold; |
|||
} |
|||
{% endblock %} |
|||
|
|||
{% block main_content %} |
|||
<div class="timestamp-container"> |
|||
<div class="timestamp-row"> |
|||
<div class="timestamp-col timestamp-label"> |
|||
{% trans "Data inicial" %}: |
|||
</div> |
|||
<div class="timestamp-col timestamp-data"> |
|||
{{ data_inicio|date:"SHORT_DATE_FORMAT" }}<br/> |
|||
</div> |
|||
</div> |
|||
<div class="timestamp-row"> |
|||
<div class="timestamp-col timestamp-label"> |
|||
{% trans "Data final" %}: |
|||
</div> |
|||
<div class="timestamp-col timestamp-data"> |
|||
{{ data_fim|date:"SHORT_DATE_FORMAT" }} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
{% include "admin/eventos/custos_eventos_report_snippet.html" %} |
|||
|
|||
{% endblock %} |
@ -0,0 +1,263 @@ |
|||
{% load static i18n sigi_tags %} |
|||
<table class="table table-sm table-stripped" repeat="2"> |
|||
<thead> |
|||
<tr> |
|||
<th rowspan="3">{% trans "Início / término" %}</th> |
|||
<th rowspan="3">{% trans "SIGAD" %}</th> |
|||
<th rowspan="3">{% trans "Evento" %}</th> |
|||
<th rowspan="3">{% trans "Casa anfitriã" %}</th> |
|||
<th rowspan="3">{% trans "Dur. (dias)" %}</th> |
|||
<th rowspan="3">{% trans "Tot part." %}</th> |
|||
<th colspan="7">{% trans "Equipe" %}</th> |
|||
<th colspan="3" rowspan="2">{% trans "Custo" %}</th> |
|||
</tr> |
|||
<tr> |
|||
<th rowspan="2">{% trans "Nome" %}</th> |
|||
<th rowspan="2">{% trans "Função" %}</th> |
|||
<th colspan="2">{% trans "Diárias" %}</th> |
|||
<th colspan="3">{% trans "Passagens" %}</th> |
|||
</tr> |
|||
<tr> |
|||
<th>{% trans "Qtde." %}</th> |
|||
<th>{% trans "Valor total" %}</th> |
|||
<th>{% trans "Valor total" %}</th> |
|||
<th>{% trans "Emissão" %}</th> |
|||
<th>{% trans "Antec. (dias)" %}</th> |
|||
<th>{% trans "Total" %}</th> |
|||
<th>{% trans "Médio partic." %}</th> |
|||
<th>{% trans "Médio equipe" %}</th> |
|||
</thead> |
|||
<tbody> |
|||
{% for evento in eventos %} |
|||
{% with equipe_count=evento.equipe_ext|length|default:1 %} |
|||
<tr class="{% cycle "" "even-row" as row_class %}"> |
|||
<td rowspan="{{ equipe_count }}" class="center-align"> |
|||
{% blocktranslate with inicio=evento.data_inicio|date:"SHORT_DATE_FORMAT" termino=evento.data_termino|date:"SHORT_DATE_FORMAT" %} |
|||
{{ inicio }} a {{ termino }} |
|||
{% endblocktranslate %} |
|||
</td> |
|||
<td rowspan="{{ equipe_count }}">{{ evento.num_processo }}</td> |
|||
<td rowspan="{{ equipe_count }}"> |
|||
{% blocktranslate with nome=evento.nome turma=evento.turma %} |
|||
{{ nome }} - turma {{ turma }} |
|||
{% endblocktranslate %} |
|||
</td> |
|||
<td rowspan="{{ equipe_count }}">{{ evento.casa_anfitria|default:"" }}</td> |
|||
<td rowspan="{{ equipe_count }}" class="right-align">{{ evento.duracao_dias|default:"-" }}</td> |
|||
<td rowspan="{{ equipe_count }}" class="right-align">{{ evento.total_participantes|default:"-" }}</td> |
|||
{% for membro in evento.equipe_ext %} |
|||
{% if not forloop.first %}<tr class="{{ row_class }}">{% endif %} |
|||
<td>{{ membro.membro.get_apelido }}</td> |
|||
<td>{{ membro.funcao }}</td> |
|||
<td class="right-align">{{ membro.qtde_diarias|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ membro.total_diarias|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ membro.total_passagens|floatformat:2|default:"-" }}</td> |
|||
<td>{{ membro.emissao_passagens|default:"-" }}</td> |
|||
<td class="right-align">{{ membro.antecedencia|default:"-" }}</td> |
|||
{% if forloop.first %} |
|||
<td rowspan="{{ equipe_count }}" class="right-align">{{ evento.custo_total|floatformat:2|default:"-" }}</td> |
|||
<td rowspan="{{ equipe_count }}" class="right-align">{{ evento.custo_medio_participante|floatformat:2|default:"-" }}</td> |
|||
<td rowspan="{{ equipe_count }}"class="right-align">{{ evento.custo_medio_membro|floatformat:2|default:"-" }}</td> |
|||
{% endif %} |
|||
</tr> |
|||
{% empty %} |
|||
<td colspan="7" class="center-align">{% trans "Equipe não definida" %}</td> |
|||
<td class="right-align">{{ evento.custo_total|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ evento.custo_medio_participante|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ evento.custo_medio_membro|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
{% endfor %} |
|||
{% endwith %} |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
|
|||
{# Resumo do relatório #} |
|||
|
|||
<div class="sessao-resumo"> |
|||
<div class="card-panel card-resumo"> |
|||
<blockquote class="card-title">{% trans "Dados gerais" %}</blockquote> |
|||
<table> |
|||
<tr> |
|||
<th class="index-cell">{% cycle "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" as letra %}</th> |
|||
<th class="label-resumo">{% trans "Quantidade de eventos" %}</th> |
|||
<td class="right-align">{{ resumo.qtde_oficinas|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Total de participantes" %}</th> |
|||
<td class="right-align">{{ resumo.tot_participantes|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Média de participantes por evento" %} [B / A]</th> |
|||
<td class="right-align">{{ resumo.media_participantes|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Mínimo de participantes" %}</th> |
|||
<td class="right-align">{{ resumo.min_participantes|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Máximo de participantes" %}</th> |
|||
<td class="right-align">{{ resumo.max_participantes|default:"-" }}</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
<div class="card-panel card-resumo"> |
|||
<blockquote class="card-title">{% trans "Equipes" %}</blockquote> |
|||
<table> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Total de servidores em missão" %}</th> |
|||
<td class="right-align">{{ resumo.tot_servidores|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Tamanho médio das equipes [F / A]" %}</th> |
|||
<td class="right-align">{{ resumo.media_membros|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Menor equipe" %}</th> |
|||
<td class="right-align">{{ resumo.min_membros|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Maior equipe" %}</th> |
|||
<td class="right-align">{{ resumo.max_membros|default:"-" }}</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
<div class="card-panel card-resumo"> |
|||
<blockquote class="card-title">{% trans "Tempo" %}</blockquote> |
|||
<table> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Total de dias de evento" %}</th> |
|||
<td class="right-align">{{ resumo.tot_dias|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Duração média dos eventos (dias) [J / A]" %}</th> |
|||
<td class="right-align">{{ resumo.media_dias|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Total de diárias" %}</th> |
|||
<td class="right-align">{{ resumo.tot_diarias|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Média de diárias por evento [L / A]" %}</th> |
|||
<td class="right-align">{{ resumo.media_diarias|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Antecedência média na emissão de passagens" %}</th> |
|||
<td class="right-align">{{ resumo.media_antecedencia|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Menor antecedência" %}</th> |
|||
<td class="right-align">{{ resumo.min_antecedencia|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Maior antecedência" %}</th> |
|||
<td class="right-align">{{ resumo.max_antecedencia|default:"-" }}</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
<div class="card-panel card-resumo"> |
|||
<blockquote class="card-title">{% trans "Custos" %}</blockquote> |
|||
<table> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Custo total" %}</th> |
|||
<td class="right-align">{{ resumo.tot_custo_total|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Total com diárias" %}</th> |
|||
<td class="right-align">{{ resumo.tot_custo_diarias|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Total com passagens" %}</th> |
|||
<td class="right-align">{{ resumo.tot_custo_passagens|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Custo médio dos eventos [Q / A]" %}</th> |
|||
<td class="right-align">{{ resumo.media_custo_total|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Custo médio de diárias por evento [R / A]" %}</th> |
|||
<td class="right-align">{{ resumo.media_custo_diarias|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Custo médio de passagens por evento [S / A]" %}</th> |
|||
<td class="right-align">{{ resumo.media_custo_passagens|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Custo médio por participante [Q / B]" %}</th> |
|||
<td class="right-align">{{ resumo.media_custo_participantes|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
<tr> |
|||
<th class="index-cell">{% cycle letra %}</th> |
|||
<th class="label-resumo">{% trans "Gasto médio por membro da equipe" %}</th> |
|||
<td class="right-align">{{ resumo.media_custo_membro|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
</table> |
|||
</div> |
|||
<div class="card-panel card-resumo full"> |
|||
<blockquote class="card-title">{% trans "Custos por região" %}</blockquote> |
|||
<table> |
|||
<thead> |
|||
<tr> |
|||
<th rowspan="2" class="center-align">{% trans "Região" %}</th> |
|||
<th colspan="4" class="center-align">{% trans "Custos com diárias" %}</th> |
|||
<th colspan="4" class="center-align">{% trans "Custos com passagens" %}</th> |
|||
<th colspan="4" class="center-align">{% trans "Custo total" %}</th> |
|||
</tr> |
|||
<tr> |
|||
<th class="right-align">{% trans "Mínimo" %}</th> |
|||
<th class="right-align">{% trans "Médio" %}</th> |
|||
<th class="right-align">{% trans "Máximo" %}</th> |
|||
<th class="right-align">{% trans "Total" %}</th> |
|||
<th class="right-align">{% trans "Mínimo" %}</th> |
|||
<th class="right-align">{% trans "Médio" %}</th> |
|||
<th class="right-align">{% trans "Máximo" %}</th> |
|||
<th class="right-align">{% trans "Total" %}</th> |
|||
<th class="right-align">{% trans "Mínimo" %}</th> |
|||
<th class="right-align">{% trans "Médio" %}</th> |
|||
<th class="right-align">{% trans "Máximo" %}</th> |
|||
<th class="right-align">{% trans "Total" %}</th> |
|||
</thead> |
|||
<tbody> |
|||
{% for data in custos_regiao %} |
|||
<tr> |
|||
<th>{{ data.nome }}</th> |
|||
<td class="right-align">{{ data.extrato.tot_diarias.min|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_diarias.mean|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_diarias.max|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_diarias.sum|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_passagens.min|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_passagens.mean|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_passagens.max|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_passagens.sum|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_custo.min|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_custo.mean|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_custo.max|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ data.extrato.tot_custo.sum|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</tbody> |
|||
</table> |
|||
</div> |
|||
</div> |
@ -0,0 +1,22 @@ |
|||
{% extends 'utils/report/report.html' %} |
|||
{% load i18n %} |
|||
|
|||
{% block extrastyle %} |
|||
{{ block.super }} |
|||
<style type="text/css"> |
|||
.sessao-resumo { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
gap: 0.5em; |
|||
} |
|||
.card-resumo { |
|||
flex-grow: 1; |
|||
} |
|||
</style> |
|||
{% endblock %} |
|||
|
|||
{% block data %} |
|||
{% if not servidores is None %} |
|||
{% include "admin/eventos/custos_servidor_report_snippet.html" %} |
|||
{% endif %} |
|||
{% endblock data %} |
@ -0,0 +1,98 @@ |
|||
{% extends 'pdf/base_report.html' %} |
|||
{% load i18n %} |
|||
|
|||
{% block page_size %}A4 landscape{% endblock page_size %} |
|||
{% block page_margin %}3cm 1cm 2cm 1cm{% endblock page_margin %}; |
|||
|
|||
{% block extra_style %} |
|||
{{ block.super }} |
|||
aside { |
|||
margin-left: 8px; |
|||
font-size: 0.8em; |
|||
color: #666; |
|||
} |
|||
blockquote { |
|||
margin: 12px 0 12px; |
|||
padding-left: 1.5rem; |
|||
border-left: 5px solid #ee6e73; |
|||
font-size: 1.4em; |
|||
font-weight: bold; |
|||
} |
|||
tr:nth-child(even) { |
|||
background-color: initial; |
|||
} |
|||
.even-row { |
|||
background-color: #d2d2d2 !important; |
|||
} |
|||
.sessao-resumo { |
|||
align-items: stretch; |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
width: 100%; |
|||
margin-top: 24px; |
|||
} |
|||
.card-resumo { |
|||
background-color: #eeeeef; |
|||
border-radius: 2px; |
|||
box-sizing: border-box; |
|||
margin: 6px; |
|||
flex-basis: 49%; |
|||
padding: 0 6px 6px 6px; |
|||
position: relative; |
|||
width: 100%; |
|||
} |
|||
.card-resumo.full { |
|||
flex-basis: 98%; |
|||
} |
|||
|
|||
.index-cell { |
|||
width: 2em; |
|||
text-align: center; |
|||
} |
|||
.label-resumo { |
|||
min-width: 30em; |
|||
} |
|||
.timestamp-container { |
|||
width: 100%; |
|||
margin: 24px 10px; |
|||
border-left: 5px solid #ee6e73; |
|||
font-size: 1.3em; |
|||
} |
|||
.timestamp-row { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
margin-bottom: 6px; |
|||
} |
|||
.timestamp-col { |
|||
position: relative; |
|||
padding-left: 15px; |
|||
padding-right: 15px; |
|||
} |
|||
.timestamp-label { |
|||
flex: 0 0 12%; |
|||
max-width: 12%; |
|||
font-weight: bold; |
|||
} |
|||
{% endblock %} |
|||
|
|||
{% block main_content %} |
|||
<div class="timestamp-container"> |
|||
<div class="timestamp-row"> |
|||
<div class="timestamp-col timestamp-label"> |
|||
{% trans "Data inicial" %}: |
|||
</div> |
|||
<div class="timestamp-col timestamp-data"> |
|||
{{ data_inicio|date:"SHORT_DATE_FORMAT" }}<br/> |
|||
</div> |
|||
</div> |
|||
<div class="timestamp-row"> |
|||
<div class="timestamp-col timestamp-label"> |
|||
{% trans "Data final" %}: |
|||
</div> |
|||
<div class="timestamp-col timestamp-data"> |
|||
{{ data_fim|date:"SHORT_DATE_FORMAT" }} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
{% include 'admin/eventos/custos_servidor_report_snippet.html' %} |
|||
{% endblock %} |
@ -0,0 +1,36 @@ |
|||
{% load i18n %} |
|||
<table class="table table-sm table-striped" repeat="2"> |
|||
<thead> |
|||
<tr> |
|||
<th>{% trans "Membro da equipe" %}</th> |
|||
<th>{% trans "Qtde eventos" %}</th> |
|||
<th>{% trans "Qtde diárias" %}</th> |
|||
<th>{% trans "Valor médio diária" %}</th> |
|||
<th>{% trans "Total diárias" %}</th> |
|||
<th>{% trans "Total passagens" %}</th> |
|||
<th>{% trans "Total" %}</th> |
|||
</tr> |
|||
</thead> |
|||
<tbody> |
|||
{% for servidor in servidores.itertuples %} |
|||
<tr> |
|||
<td>{{ servidor.nome_completo }}</td> |
|||
<td class="right-align">{{ servidor.qtde_eventos|default:"-" }}</td> |
|||
<td class="right-align">{{ servidor.qtde_diarias|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ servidor.media_diarias|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ servidor.total_diarias|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ servidor.total_passagens|floatformat:2|default:"-" }}</td> |
|||
<td class="right-align">{{ servidor.total_custo|floatformat:2|default:"-" }}</td> |
|||
</tr> |
|||
{% endfor %} |
|||
<tr> |
|||
<th class="right-align">{% trans "Totais" %}</th> |
|||
<th class="right-align">{{ totais.qtde_eventos|default:"-" }}</th> |
|||
<th class="right-align">{{ totais.qtde_diarias|floatformat:2|default:"-" }}</th> |
|||
<th class="right-align">{{ totais.media_diarias|floatformat:2|default:"-" }}</th> |
|||
<th class="right-align">{{ totais.total_diarias|floatformat:2|default:"-" }}</th> |
|||
<th class="right-align">{{ totais.total_passagens|floatformat:2|default:"-" }}</th> |
|||
<th class="right-align">{{ totais.total_custo|floatformat:2|default:"-" }}</th> |
|||
</tr> |
|||
</tbody> |
|||
</table> |
Loading…
Reference in new issue