mirror of https://github.com/interlegis/sigi.git
Sesóstris Vieira
1 year ago
10 changed files with 1163 additions and 7 deletions
@ -0,0 +1,50 @@ |
|||||
|
# Generated by Django 4.2.4 on 2023-11-13 13:23 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
dependencies = [ |
||||
|
("eventos", "0053_visita_anfitria_senado_oficina_remove_convite"), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name="equipe", |
||||
|
name="emissao_passagens", |
||||
|
field=models.DateField( |
||||
|
blank=True, |
||||
|
null=True, |
||||
|
verbose_name="data de emissão das passagens", |
||||
|
), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name="equipe", |
||||
|
name="qtde_diarias", |
||||
|
field=models.PositiveIntegerField( |
||||
|
blank=True, null=True, verbose_name="quantidade de diárias" |
||||
|
), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name="equipe", |
||||
|
name="total_passagens", |
||||
|
field=models.DecimalField( |
||||
|
blank=True, |
||||
|
decimal_places=2, |
||||
|
max_digits=14, |
||||
|
null=True, |
||||
|
verbose_name="valor total das passagens", |
||||
|
), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name="equipe", |
||||
|
name="valor_diaria", |
||||
|
field=models.DecimalField( |
||||
|
blank=True, |
||||
|
decimal_places=2, |
||||
|
max_digits=14, |
||||
|
null=True, |
||||
|
verbose_name="valor da diária (R$)", |
||||
|
), |
||||
|
), |
||||
|
] |
@ -0,0 +1,316 @@ |
|||||
|
{% extends 'pdf/base_report.html' %} |
||||
|
{% load static i18n sigi_tags %} |
||||
|
|
||||
|
{% block page_size %}A4 landscape{% endblock page_size %} |
||||
|
|
||||
|
{% 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; |
||||
|
} |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block main_content %} |
||||
|
<table repeat="2"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th rowspan="2">{% trans "Início / término" %}</th> |
||||
|
<th rowspan="2">{% trans "SIGAD" %}</th> |
||||
|
<th rowspan="2">{% trans "Evento" %}</th> |
||||
|
<th rowspan="2">{% trans "Casa anfitriã" %}</th> |
||||
|
<th rowspan="2">{% trans "Duração do evento (dias)" %}</th> |
||||
|
<th rowspan="2">{% trans "Total de participantes" %}</th> |
||||
|
<th colspan="7">{% trans "Equipe" %}</th> |
||||
|
<th colspan="3">{% trans "Custos" %}</th> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans "Nome" %}</th> |
||||
|
<th>{% trans "Função" %}</th> |
||||
|
<th>{% trans "Qtde de diárias" %}</th> |
||||
|
<th>{% trans "Valor total diárias" %}</th> |
||||
|
<th>{% trans "Valor total passagens" %}</th> |
||||
|
<th>{% trans "Emissão das passagens" %}</th> |
||||
|
<th>{% trans "Antecedência das passagens (dias)" %}</th> |
||||
|
<th>{% trans "Custo total" %}</th> |
||||
|
<th>{% trans "Custo médio participante" %}</th> |
||||
|
<th>{% trans "Custo 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 }}</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|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.total_diarias|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.total_passagens|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|default:"-" }}</td> |
||||
|
<td rowspan="{{ equipe_count }}" class="right-align">{{ evento.custo_medio_participante|default:"-" }}</td> |
||||
|
<td rowspan="{{ equipe_count }}"class="right-align">{{ evento.custo_medio_membro|default:"-" }}</td> |
||||
|
{% endif %} |
||||
|
</tr> |
||||
|
{% empty %} |
||||
|
<td colspan="7" class="center-align">{% trans "Equipe não definida" %}</td> |
||||
|
<td class="right-align">{{ evento.custo_total|default:"-" }}</td> |
||||
|
<td class="right-align">{{ evento.custo_medio_participante|default:"-" }}</td> |
||||
|
<td class="right-align">{{ evento.custo_medio_membro|default:"-" }}</td> |
||||
|
</tr> |
||||
|
{% endfor %} |
||||
|
{% endwith %} |
||||
|
{% endfor %} |
||||
|
</tbody> |
||||
|
</table> |
||||
|
|
||||
|
{# Resumo do relatório #} |
||||
|
|
||||
|
<div class="sessao-resumo"> |
||||
|
<div class="card-resumo"> |
||||
|
<blockquote>{% 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-resumo"> |
||||
|
<blockquote>{% 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-resumo"> |
||||
|
<blockquote>{% 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|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-resumo"> |
||||
|
<blockquote>{% 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|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|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|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|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|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|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|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|default:"-" }}</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</div> |
||||
|
<div class="card-resumo full"> |
||||
|
<blockquote>{% 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|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_diarias.mean|default:"-"|floatformat:2 }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_diarias.max|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_diarias.sum|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.min|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.mean|default:"-"|floatformat:2 }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.max|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.sum|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.min|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.mean|default:"-"|floatformat:2 }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.max|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.sum|default:"-" }}</td> |
||||
|
</tr> |
||||
|
{% endfor %} |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
{% endblock %} |
@ -0,0 +1,285 @@ |
|||||
|
{% extends 'pdf/base_report.html' %} |
||||
|
{% load static i18n sigi_tags %} |
||||
|
|
||||
|
{% block page_size %}A4 landscape{% endblock page_size %} |
||||
|
|
||||
|
{% 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; |
||||
|
} |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block main_content %} |
||||
|
<table repeat="2"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th>{% trans "ID saberes" %}</th> |
||||
|
<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 %} |
||||
|
<tr> |
||||
|
<td>{{ servidor.moodle_id }}</td> |
||||
|
<td>{{ servidor.nome_completo }}</td> |
||||
|
<td class="right-align">{{ servidor.qtde_eventos|default:"-" }}</td> |
||||
|
<td class="right-align">{{ servidor.qtde_diarias|default:"-" }}</td> |
||||
|
<td class="right-align">{{ servidor.media_diarias|default:"-" }}</td> |
||||
|
<td class="right-align">{{ servidor.total_diarias|default:"-" }}</td> |
||||
|
<td class="right-align">{{ servidor.total_passagens|default:"-" }}</td> |
||||
|
<td class="right-align">{{ servidor.total_custo|default:"-" }}</td> |
||||
|
</tr> |
||||
|
{% endfor %} |
||||
|
<tr> |
||||
|
<th colspan="2" class="right-align">{% trans "Totais" %}</th> |
||||
|
<th class="right-align">{{ totais.qtde_eventos|default:"-" }}</th> |
||||
|
<th class="right-align">{{ totais.qtde_diarias|default:"-" }}</th> |
||||
|
<th class="right-align">{{ totais.media_diarias|default:"-" }}</th> |
||||
|
<th class="right-align">{{ totais.total_diarias|default:"-" }}</th> |
||||
|
<th class="right-align">{{ totais.total_passagens|default:"-" }}</th> |
||||
|
<th class="right-align">{{ totais.total_custo|default:"-" }}</th> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
|
||||
|
{# Resumo do relatório #} |
||||
|
|
||||
|
<div class="sessao-resumo"> |
||||
|
<div class="card-resumo"> |
||||
|
<blockquote>{% 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-resumo"> |
||||
|
<blockquote>{% 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-resumo"> |
||||
|
<blockquote>{% 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|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-resumo"> |
||||
|
<blockquote>{% 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|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|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|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|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|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|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|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|default:"-" }}</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
</div> |
||||
|
<div class="card-resumo full"> |
||||
|
<blockquote>{% 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|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_diarias.mean|default:"-"|floatformat:2 }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_diarias.max|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_diarias.sum|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.min|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.mean|default:"-"|floatformat:2 }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.max|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_passagens.sum|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.min|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.mean|default:"-"|floatformat:2 }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.max|default:"-" }}</td> |
||||
|
<td class="right-align">{{ data.extrato.tot_custo.sum|default:"-" }}</td> |
||||
|
</tr> |
||||
|
{% endfor %} |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
{% endblock %} |
@ -0,0 +1,163 @@ |
|||||
|
{% extends 'pdf/base_report.html' %} |
||||
|
{% load static i18n sigi_tags %} |
||||
|
|
||||
|
{% block extra_style %} |
||||
|
{{ block.super }} |
||||
|
aside { |
||||
|
margin-left: 8px; |
||||
|
font-size: 0.8em; |
||||
|
color: #666; |
||||
|
} |
||||
|
blockquote { |
||||
|
margin: 20px 0 5px; |
||||
|
padding-left: 1.5rem; |
||||
|
border-left: 5px solid #ee6e73; |
||||
|
font-size: 1.4em; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
{% endblock %} |
||||
|
|
||||
|
{% block main_content %} |
||||
|
<h3>{% trans 'Custos de realização do evento' %}</h3> |
||||
|
<h4> |
||||
|
{% blocktranslate with nome=evento.nome turma=evento.turma %} |
||||
|
{{ nome }} - turma {{ turma }} |
||||
|
{% endblocktranslate %} |
||||
|
</h4> |
||||
|
<!-- Identificação do evento ============================================= --> |
||||
|
<blockquote>{% trans "Identificação do evento" %}</blockquote> |
||||
|
<table> |
||||
|
<tr> |
||||
|
<th>{% trans 'Casa anfitriã' %}</th> |
||||
|
<td>{{ evento.casa_anfitria }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans 'Tipo' %}</th> |
||||
|
<td> |
||||
|
{% blocktranslate with tipo_evento=evento.tipo_evento virtual=evento.virtual|yesno:"- VIRTUAL,," %} |
||||
|
{{ tipo_evento }} {{ virtual }} |
||||
|
{% endblocktranslate %} |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans 'Descrição' %}</th> |
||||
|
<td>{{ evento.descricao }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans 'Senador(a) solicitante' %}</th> |
||||
|
<td>{{ evento.solicitante }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans 'Data do pedido' %}</th> |
||||
|
<td>{{ evento.data_pedido }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans 'Data de recebimento na COPERI' %}</th> |
||||
|
<td>{{ evento.data_recebido_coperi }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans 'Período de realização' %}</th> |
||||
|
<td> |
||||
|
{% blocktranslate with inicio=evento.data_inicio termino=evento.data_termino %} |
||||
|
de {{ inicio }} até {{ termino }} |
||||
|
{% endblocktranslate %} |
||||
|
</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
<!-- Equipe ============================================================== --> |
||||
|
<blockquote>{% trans "Equipe participante" %}</blockquote> |
||||
|
</tr> |
||||
|
<table repeat="2"> |
||||
|
<tr> |
||||
|
<th rowspan="2">{% trans "Nome" %}</th> |
||||
|
<th rowspan="2">{% trans "Função" %}</th> |
||||
|
<th colspan="3">{% trans "Diárias" %}</th> |
||||
|
<th colspan="3">{% trans "Passagens" %}</th> |
||||
|
<th rowspan="2">{% trans "Total gasto (A + B)" %}</th> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>{% trans "Quantidade" %}</th> |
||||
|
<th>{% trans "Valor unitário" %}</th> |
||||
|
<th>{% trans "Valor total (A)" %}</th> |
||||
|
<th>{% trans "Valor total (B)" %}</th> |
||||
|
<th>{% trans "Emissão" %}</th> |
||||
|
<th>{% trans "Dias de antecedência" %}<sup>*</sup></th> |
||||
|
</tr> |
||||
|
{% for membro in membros %} |
||||
|
<tr class="membro_row"> |
||||
|
<td>{{ membro.membro.nome_completo }}</td> |
||||
|
<td>{{ membro.funcao }}</td> |
||||
|
<td class="right-align">{{ membro.qtde_diarias|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.valor_diaria|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.total_diarias|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.total_passagens|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.emissao_passagens|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.antecedencia_passagens|default:"-" }}</td> |
||||
|
<td class="right-align">{{ membro.total_gasto|default:"-" }}</td> |
||||
|
</tr> |
||||
|
{% endfor %} |
||||
|
<tr> |
||||
|
<th colspan="2">{% trans "Total de gastos" %}</th> |
||||
|
<th class="right-align">{{ total_equipe.tot_qtde_diarias|default:"-" }}</th> |
||||
|
<th class="right-align">-</th> |
||||
|
<th class="right-align">{{ total_equipe.tot_valor_diarias|default:"-" }}</th> |
||||
|
<th class="right-align">{{ total_equipe.tot_passagens|default:"-" }}</th> |
||||
|
<th class="right-align">-</th> |
||||
|
<th class="right-align">-</th> |
||||
|
<th class="right-align">{{ total_equipe.tot_gastos|default:"-" }}</th> |
||||
|
</table> |
||||
|
<aside>* Número de dias entre a data de emissão das passagens e a data de início do evento</aside> |
||||
|
<!-- Custos ============================================================== --> |
||||
|
<blockquote>{% trans "Resumo dos custos" %}</blockquote> |
||||
|
<table> |
||||
|
<tr> |
||||
|
<th>A</th> |
||||
|
<th>{% trans 'Número de membros da equipe' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.num_membros|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>B</th> |
||||
|
<th>{% trans 'Quantidade de diárias da missão' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.tot_qtde_diarias|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>C</th> |
||||
|
<th>{% trans 'Total gasto com diárias' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.tot_valor_diarias|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>D</th> |
||||
|
<th>{% trans 'Total gasto com passagens' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.tot_passagens|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>E</th> |
||||
|
<th>{% trans 'Custo total do evento [ C + D ]' %}</th> |
||||
|
<td class="right-align bold">{{ total_equipe.tot_gastos|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th colspan="3">{% trans "Médias" %}</th> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>F</th> |
||||
|
<th>{% trans 'Média de diárias por membro [ B / A ]' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.media_qtde_diarias|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>G</th> |
||||
|
<th>{% trans 'Valor médio das diárias da equipe [ C / B ]' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.media_diarias|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>H</th> |
||||
|
<th>{% trans 'Valor médio das passagens da equipe [ D / A ]' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.media_passagens|default:"-" }}</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<th>I</th> |
||||
|
<th>{% trans 'Antecedência média na aquisição das passagens, em dias/fração **' %}</th> |
||||
|
<td class="right-align">{{ total_equipe.media_antecedencia|default:"-" }}</td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
<aside>** Somatória da coluna 'Dias de antecedência' do quadro Equipe participante dividida pelo número de membros da equipe [A]</aside> |
||||
|
{% endblock %} |
Loading…
Reference in new issue