333 lines
29 KiB
HTML
333 lines
29 KiB
HTML
{% extends "base.html" %}
|
||
|
||
{% block title %}Detalhe #{{ solicitacao.id }} - SGMP{% endblock %}
|
||
|
||
{% block css %}
|
||
<style>
|
||
.status-RASCUNHO { background: #fffbeb; color: #b45309; border: 1px solid #fcd34d; }
|
||
.status-AGUARDANDO_HEAD { background: #fef3c7; color: #b45309; border: 1px solid #fcd34d; }
|
||
.status-ENVIADA { background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }
|
||
.status-APROVADA_GG, .status-APROVADA_CONTROLADORIA, .status-APROVADA_DIRETORIA { background: #ecfdf5; color: #047857; border: 1px solid #6ee7b7; }
|
||
.status-AGUARDANDO_DIRETORIA { background: #fef3c7; color: #b45309; border: 1px solid #fcd34d; }
|
||
.status-FINALIZADA { background: #f3f4f6; color: #374151; border: 1px solid #d1d5db; }
|
||
.status-REPROVADA { background: #fef2f2; color: #b91c1c; border: 1px solid #fecaca; }
|
||
.timeline { position: relative; padding-left: 2rem; border-left: 2px solid #e2e8f0; margin-left: 10px; }
|
||
.timeline-item { position: relative; padding-bottom: 2rem; }
|
||
.timeline-item:last-child { padding-bottom: 0; }
|
||
.timeline-marker { position: absolute; left: -2.6rem; top: 0; width: 16px; height: 16px; border-radius: 50%; border: 3px solid white; box-shadow: 0 0 0 1px #e2e8f0; }
|
||
.marker-success { background: #10b981; }
|
||
.marker-danger { background: #ef4444; }
|
||
.parecer-card { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 16px; margin-bottom: 12px; }
|
||
.parecer-gg { border-left: 4px solid #3b82f6; }
|
||
.parecer-fin { border-left: 4px solid #10b981; }
|
||
</style>
|
||
{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="max-w-4xl mx-auto pb-10">
|
||
<div class="flex flex-wrap justify-between items-start gap-4 mb-6">
|
||
<div>
|
||
<h1 class="text-2xl font-bold text-slate-800 tracking-tight m-0">Detalhe da Solicitação #{{ solicitacao.id }}</h1>
|
||
<div class="text-slate-500 text-sm mt-1">Criado em {{ solicitacao.criado_em|date:"d/m/Y H:i" }} por <strong>{{ solicitacao.solicitante.nome }}</strong></div>
|
||
<div class="inline-flex items-center py-1.5 px-3.5 rounded-full text-sm font-bold mt-2 status-badge status-{{ solicitacao.status }}">{{ solicitacao.get_status_display }}</div>
|
||
</div>
|
||
<a href="{% url 'solicitacoes:dashboard' %}" class="inline-flex items-center gap-1.5 py-2 px-3 rounded-md font-medium text-slate-600 bg-white border border-slate-200 no-underline hover:bg-slate-50 hover:text-slate-800 hover:border-slate-300 transition-colors"><span>←</span> Voltar ao Dashboard</a>
|
||
</div>
|
||
|
||
{% if messages %}
|
||
<div class="mb-5">
|
||
<ul class="list-none p-0 m-0 space-y-2">
|
||
{% for message in messages %}
|
||
<li class="py-3 px-4 rounded-lg flex items-center gap-2 text-sm {% if message.tags == 'error' %}bg-red-50 text-red-800 border border-red-200{% else %}bg-emerald-50 text-emerald-800 border border-emerald-200{% endif %}">{% if message.tags == 'error' %}⚠️{% else %}✅{% endif %} {{ message }}</li>
|
||
{% endfor %}
|
||
</ul>
|
||
</div>
|
||
{% endif %}
|
||
|
||
<div class="bg-white rounded-xl border border-slate-200 shadow-sm mb-6 overflow-hidden">
|
||
<div class="px-6 py-4 bg-slate-50 border-b border-slate-200 flex items-center gap-2">
|
||
<span>📄</span>
|
||
<h3 class="text-sm font-semibold text-slate-600 uppercase tracking-wider m-0">Dados Gerais</h3>
|
||
</div>
|
||
<div class="p-6">
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
<div class="flex flex-col">
|
||
<span class="text-xs font-semibold text-slate-500 uppercase mb-1">Tipo de Processo</span>
|
||
<span class="text-primary font-bold">{{ solicitacao.get_tipo_display }}</span>
|
||
</div>
|
||
<div class="flex flex-col">
|
||
<span class="text-xs font-semibold text-slate-500 uppercase mb-1">Solicitante</span>
|
||
<span class="text-slate-800 font-medium">{{ solicitacao.solicitante.nome }} <small class="text-slate-500">({{ solicitacao.solicitante.matricula }})</small></span>
|
||
</div>
|
||
<div class="flex flex-col">
|
||
<span class="text-xs font-semibold text-slate-500 uppercase mb-1">Enviada em</span>
|
||
<span class="text-slate-800 font-medium">{{ solicitacao.enviada_em|date:"d/m/Y H:i"|default:"-" }}</span>
|
||
</div>
|
||
{% if solicitacao.finalizada_em %}
|
||
<div class="flex flex-col">
|
||
<span class="text-xs font-semibold text-slate-500 uppercase mb-1">Finalizada em</span>
|
||
<span class="text-slate-800 font-medium">{{ solicitacao.finalizada_em|date:"d/m/Y H:i" }}</span>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
{% if solicitacao.funcionario %}
|
||
<div class="bg-white rounded-xl border border-slate-200 border-l-4 border-l-primary shadow-sm mb-6 overflow-hidden">
|
||
<div class="px-6 py-4 bg-blue-50 border-b border-slate-200 flex items-center gap-2">
|
||
<span>🏢</span>
|
||
<h3 class="text-sm font-semibold text-slate-600 uppercase tracking-wider m-0">Dados do Colaborador</h3>
|
||
<span class="bg-blue-100 text-blue-800 py-1 px-2.5 rounded-md text-xs font-bold">Integração TOTVS RM</span>
|
||
</div>
|
||
<div class="p-6">
|
||
<p class="-mt-1 mb-6 text-sm text-slate-500">ℹ️ Snapshot dos dados no momento da criação da solicitação</p>
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Matrícula</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.matricula }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Nome Completo</span><span class="text-slate-800 font-medium font-bold">{{ solicitacao.funcionario.nome }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">CPF</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.cpf|default:"-" }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Data de Admissão</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.data_admissao|date:"d/m/Y"|default:"-" }}</span></div>
|
||
</div>
|
||
<div class="border-t border-dashed border-slate-200 mt-6 pt-6">
|
||
<div class="text-slate-400 text-xs font-bold uppercase mb-4 flex items-center gap-2">💼 Dados Profissionais</div>
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Cargo/Função</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.cargo }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Cód. Função</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.cod_funcao|default:"N/A" }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Setor/Seção</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.setor }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Centro de Custo</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.centro_custo }}</span></div>
|
||
{% if solicitacao.funcionario.salario %}
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Salário Atual</span><span class="text-emerald-600 font-medium">R$ {{ solicitacao.funcionario.salario|floatformat:2 }}</span></div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
{% if solicitacao.funcionario.saldo_banco_horas_minutos is not None %}
|
||
<div class="border-t border-dashed border-slate-200 mt-6 pt-6">
|
||
<div class="text-slate-400 text-xs font-bold uppercase mb-4 flex items-center gap-2">⏰ Banco de Horas</div>
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Saldo Atual</span><span class="text-slate-800 font-medium">{% if solicitacao.funcionario.saldo_banco_horas_minutos >= 0 %}<span class="text-emerald-600">+{{ solicitacao.funcionario.saldo_banco_horas_minutos }} min</span>{% else %}<span class="text-red-600">{{ solicitacao.funcionario.saldo_banco_horas_minutos }} min</span>{% endif %}</span></div>
|
||
{% if solicitacao.funcionario.inicio_periodo_banco_horas %}
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Período Referência</span><span class="text-slate-800 font-medium">{{ solicitacao.funcionario.inicio_periodo_banco_horas|date:"d/m/Y" }} a {{ solicitacao.funcionario.fim_periodo_banco_horas|date:"d/m/Y" }}</span></div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
{% if solicitacao.funcionario.sincronizado_em %}
|
||
<div class="mt-6 pt-2 border-t border-slate-100 text-xs text-slate-400 text-right">Sincronizado com RM em: {{ solicitacao.funcionario.sincronizado_em|date:"d/m/Y H:i" }} | ID: {{ solicitacao.funcionario.id_rm }}</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if dados_winthor_organizados %}
|
||
<div class="bg-white rounded-xl border border-slate-200 border-l-4 border-l-primary shadow-sm mb-6 overflow-hidden">
|
||
<div class="px-6 py-4 bg-slate-50 border-b border-slate-200 flex items-center gap-2">
|
||
<span>💼</span>
|
||
<h3 class="text-sm font-semibold text-slate-600 uppercase tracking-wider m-0">Dados do Colaborador - Winthor</h3>
|
||
<span class="bg-blue-100 text-blue-800 py-1 px-2.5 rounded-md text-xs font-bold">Sistema Winthor</span>
|
||
</div>
|
||
<div class="p-6">
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
{% if dados_winthor_organizados.basicos %}
|
||
<div class="border-t border-dashed border-slate-200 mt-6 pt-6 col-span-full">
|
||
<div class="text-slate-400 text-xs font-bold uppercase mb-4 flex items-center gap-2">👤 Dados Básicos</div>
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
{% if dados_winthor_organizados.basicos.matricula %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Matrícula</span><span class="text-slate-800 font-medium font-bold">{{ dados_winthor_organizados.basicos.matricula }}</span></div>{% endif %}
|
||
{% if dados_winthor_organizados.basicos.nome %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Nome</span><span class="text-slate-800 font-medium font-bold">{{ dados_winthor_organizados.basicos.nome }}</span></div>{% endif %}
|
||
{% if dados_winthor_organizados.basicos.cpf %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">CPF</span><span class="text-slate-800 font-medium">{{ dados_winthor_organizados.basicos.cpf }}</span></div>{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
{% if dados_winthor_organizados.admissao %}
|
||
<div class="border-t border-dashed border-slate-200 mt-6 pt-6 col-span-full">
|
||
<div class="text-slate-400 text-xs font-bold uppercase mb-4 flex items-center gap-2">📅 Admissão e Situação</div>
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
{% if dados_winthor_organizados.admissao.admissao %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Data de Admissão</span><span class="text-slate-800 font-medium">{% if dados_winthor_organizados.admissao.admissao|date:"d/m/Y" %}{{ dados_winthor_organizados.admissao.admissao|date:"d/m/Y" }}{% else %}{{ dados_winthor_organizados.admissao.admissao }}{% endif %}</span></div>{% endif %}
|
||
{% if dados_winthor_organizados.admissao.situacao %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Situação</span><span class="text-slate-800 font-medium">{{ dados_winthor_organizados.admissao.situacao }}</span></div>{% endif %}
|
||
{% if dados_winthor_organizados.admissao.dt_exclusao %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Data de Exclusão</span><span class="text-slate-800 font-medium">{% if dados_winthor_organizados.admissao.dt_exclusao|date:"d/m/Y" %}{{ dados_winthor_organizados.admissao.dt_exclusao|date:"d/m/Y" }}{% else %}{{ dados_winthor_organizados.admissao.dt_exclusao }}{% endif %}</span></div>{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
{% if dados_winthor_organizados.endereco %}
|
||
<div class="border-t border-dashed border-slate-200 mt-6 pt-6 col-span-full">
|
||
<div class="text-slate-400 text-xs font-bold uppercase mb-4 flex items-center gap-2">📍 Endereço</div>
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
{% if dados_winthor_organizados.endereco.endereco %}<div class="flex flex-col col-span-full"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Endereço</span><span class="text-slate-800 font-medium">{{ dados_winthor_organizados.endereco.endereco }}</span></div>{% endif %}
|
||
{% if dados_winthor_organizados.endereco.bairro %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Bairro</span><span class="text-slate-800 font-medium">{{ dados_winthor_organizados.endereco.bairro }}</span></div>{% endif %}
|
||
{% if dados_winthor_organizados.endereco.cidade %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Cidade</span><span class="text-slate-800 font-medium">{{ dados_winthor_organizados.endereco.cidade }}</span></div>{% endif %}
|
||
{% if dados_winthor_organizados.endereco.estado %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Estado</span><span class="text-slate-800 font-medium">{{ dados_winthor_organizados.endereco.estado }}</span></div>{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endif %}
|
||
|
||
<div class="bg-white rounded-xl border border-slate-200 shadow-sm mb-6 overflow-hidden">
|
||
<div class="px-6 py-4 bg-slate-50 border-b border-slate-200 flex items-center gap-2">
|
||
<span>📋</span>
|
||
<h3 class="text-sm font-semibold text-slate-600 uppercase tracking-wider m-0">Detalhes da Movimentação</h3>
|
||
</div>
|
||
<div class="p-6">
|
||
|
||
{% if solicitacao.tipo == 'DESLIGAMENTO' and solicitacao.desligamento %}
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
{% if solicitacao.desligamento.tipo_desligamento %}
|
||
<div class="flex flex-col">
|
||
<span class="text-xs font-semibold text-slate-500 uppercase mb-1">Tipo de Desligamento</span>
|
||
<span class="text-slate-800 font-medium">
|
||
{% if solicitacao.desligamento.tipo_desligamento == 'PEDIDO_DEMISSAO' %}
|
||
📝 Pedido de Demissão
|
||
{% elif solicitacao.desligamento.tipo_desligamento == 'SEM_JUSTA_CAUSA' %}
|
||
🚪 Demissão sem Justa Causa
|
||
{% elif solicitacao.desligamento.tipo_desligamento == 'COM_JUSTA_CAUSA' %}
|
||
⚠️ Demissão por Justa Causa
|
||
{% elif solicitacao.desligamento.tipo_desligamento == 'TERMINO_CONTRATO' %}
|
||
📅 Término de Contrato de Experiência
|
||
{% elif solicitacao.desligamento.tipo_desligamento == 'OUTROS' %}
|
||
📋 Outros
|
||
{% else %}
|
||
{{ solicitacao.desligamento.get_tipo_desligamento_display }}
|
||
{% endif %}
|
||
</span>
|
||
</div>
|
||
{% endif %}
|
||
{% if solicitacao.desligamento.aviso_previo %}
|
||
<div class="flex flex-col">
|
||
<span class="text-xs font-semibold text-slate-500 uppercase mb-1">Aviso Prévio</span>
|
||
<span class="text-slate-800 font-medium">
|
||
{% if solicitacao.desligamento.aviso_previo == 'TRABALHADO' %}
|
||
✅ Trabalhado
|
||
{% elif solicitacao.desligamento.aviso_previo == 'INDENIZADO' %}
|
||
💰 Indenizado (Dispensa imediata)
|
||
{% elif solicitacao.desligamento.aviso_previo == 'DISPENSADO' %}
|
||
📤 Dispensado (Pedido de demissão)
|
||
{% else %}
|
||
{{ solicitacao.desligamento.get_aviso_previo_display }}
|
||
{% endif %}
|
||
</span>
|
||
</div>
|
||
{% endif %}
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Data Prevista de Saída</span><span class="text-slate-800 font-medium">{{ solicitacao.desligamento.data_prevista_desligamento|date:"d/m/Y" }}</span></div>
|
||
<div class="flex flex-col col-span-full"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Detalhamento / Justificativa</span><span class="text-slate-800 font-medium whitespace-pre-wrap">{{ solicitacao.desligamento.motivo }}</span></div>
|
||
{% if solicitacao.desligamento.arquivo_pedido %}
|
||
<div class="flex flex-col col-span-full"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Carta de Pedido de Demissão</span><span class="text-slate-800 font-medium"><a href="{{ solicitacao.desligamento.arquivo_pedido.url }}" target="_blank" class="text-primary no-underline inline-flex items-center gap-1">📎 <span>{{ solicitacao.desligamento.arquivo_pedido.name|slice:"20:" }}</span></a></span></div>
|
||
{% endif %}
|
||
{% if solicitacao.desligamento.observacoes %}
|
||
<div class="flex flex-col col-span-full"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Observações Adicionais</span><span class="text-slate-800 font-medium whitespace-pre-wrap">{{ solicitacao.desligamento.observacoes }}</span></div>
|
||
{% endif %}
|
||
</div>
|
||
|
||
{% elif solicitacao.tipo == 'MOVIMENTACAO' and solicitacao.movimentacao %}
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
{% if solicitacao.movimentacao.altera_funcao %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Nova Função</span><span class="text-slate-800 font-medium">{{ solicitacao.movimentacao.novo_cod_funcao }}</span></div>{% endif %}
|
||
{% if solicitacao.movimentacao.altera_centro_custo %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Nova Seção</span><span class="text-slate-800 font-medium">{{ solicitacao.movimentacao.novo_cod_secao }}</span></div>{% endif %}
|
||
{% if solicitacao.movimentacao.novo_salario %}<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Novo Salário</span><span class="text-slate-800 font-medium">R$ {{ solicitacao.movimentacao.novo_salario }}</span></div>{% endif %}
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Data Efetivação</span><span class="text-slate-800 font-medium">{{ solicitacao.movimentacao.data_efetivacao|date:"d/m/Y" }}</span></div>
|
||
<div class="flex flex-col col-span-full"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Justificativa</span><span class="text-slate-800 font-medium">{{ solicitacao.movimentacao.justificativa }}</span></div>
|
||
</div>
|
||
|
||
{% elif solicitacao.tipo == 'ADM_SUBSTITUICAO' and solicitacao.admissao_substituicao %}
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Data Prevista</span><span class="text-slate-800 font-medium">{{ solicitacao.admissao_substituicao.data_previsao_contratacao|date:"d/m/Y" }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Coligada/Filial Destino</span><span class="text-slate-800 font-medium">{{ solicitacao.admissao_substituicao.cod_coligada_destino }} / {{ solicitacao.admissao_substituicao.cod_filial_destino }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Seção Destino</span><span class="text-slate-800 font-medium">{{ solicitacao.admissao_substituicao.cod_secao_destino }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Função Destino</span><span class="text-slate-800 font-medium">{{ solicitacao.admissao_substituicao.cod_funcao_destino }}</span></div>
|
||
<div class="flex flex-col col-span-full"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Justificativa</span><span class="text-slate-800 font-medium">{{ solicitacao.admissao_substituicao.justificativa }}</span></div>
|
||
</div>
|
||
|
||
{% elif solicitacao.tipo == 'ADM_AUMENTO' and solicitacao.admissao_aumento %}
|
||
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Data Prevista</span><span class="text-slate-800 font-medium">{{ solicitacao.admissao_aumento.data_previsao_contratacao|date:"d/m/Y" }}</span></div>
|
||
<div class="flex flex-col"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Local Destino</span><span class="text-slate-800 font-medium">Col: {{ solicitacao.admissao_aumento.cod_coligada_destino }} | Fil: {{ solicitacao.admissao_aumento.cod_filial_destino }}</span></div>
|
||
<div class="flex flex-col col-span-full"><span class="text-xs font-semibold text-slate-500 uppercase mb-1">Justificativa Estratégica</span><span class="text-slate-800 font-medium">{{ solicitacao.admissao_aumento.justificativa_estrategica }}</span></div>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mt-12 mb-8">
|
||
<h3 class="text-xl font-semibold text-slate-800 mb-1">📝 Pareceres Técnicos</h3>
|
||
<p class="text-slate-500 text-sm mb-6">Análises das áreas de suporte (Gente e Gestão & Controladoria).</p>
|
||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||
<div>
|
||
<h4 class="text-blue-600 font-semibold mb-4 flex items-center gap-1.5">👥 Gente e Gestão</h4>
|
||
{% if pareceres_gg %}
|
||
{% for parecer in pareceres_gg %}
|
||
<div class="parecer-card parecer-gg">
|
||
<div class="flex justify-between mb-1"><strong class="text-slate-800 text-sm">{{ parecer.usuario.nome }}</strong><small class="text-slate-500">{{ parecer.criado_em|date:"d/m H:i" }}</small></div>
|
||
<p class="m-0 text-slate-700 whitespace-pre-wrap text-sm">{{ parecer.texto }}</p>
|
||
{% if parecer.anexo %}<a href="{{ parecer.anexo.url }}" target="_blank" class="inline-block mt-2 text-blue-600 no-underline text-sm">📎 Ver Anexo</a>{% endif %}
|
||
</div>
|
||
{% endfor %}
|
||
{% else %}
|
||
<div class="bg-slate-100 p-3 rounded-md text-slate-500 text-sm italic">Aguardando parecer de GG...</div>
|
||
{% endif %}
|
||
</div>
|
||
<div>
|
||
<h4 class="text-emerald-600 font-semibold mb-4 flex items-center gap-1.5">💰 Controladoria</h4>
|
||
{% if pareceres_controladoria %}
|
||
{% for parecer in pareceres_controladoria %}
|
||
<div class="parecer-card parecer-fin">
|
||
<div class="flex justify-between mb-1"><strong class="text-slate-800 text-sm">{{ parecer.usuario.nome }}</strong><small class="text-slate-500">{{ parecer.criado_em|date:"d/m H:i" }}</small></div>
|
||
<p class="m-0 text-slate-700 whitespace-pre-wrap text-sm">{{ parecer.texto }}</p>
|
||
{% if parecer.anexo %}<a href="{{ parecer.anexo.url }}" target="_blank" class="inline-block mt-2 text-emerald-600 no-underline text-sm">📎 Ver Anexo</a>{% endif %}
|
||
</div>
|
||
{% endfor %}
|
||
{% else %}
|
||
<div class="bg-slate-100 p-3 rounded-md text-slate-500 text-sm italic">Aguardando parecer da Controladoria...</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mt-12">
|
||
<h3 class="text-xl font-semibold text-slate-800 mb-6">⚖️ Histórico de Aprovações</h3>
|
||
<div class="timeline">
|
||
{% for aprovacao in solicitacao.aprovacoes.all %}
|
||
<div class="timeline-item">
|
||
<div class="timeline-marker {% if aprovacao.decisao == 'APROVADO' %}marker-success{% else %}marker-danger{% endif %}"></div>
|
||
<div class="bg-white border border-slate-200 p-3 rounded-lg">
|
||
<div class="flex justify-between items-center">
|
||
<span class="font-semibold text-slate-800">{% if aprovacao.decisao == 'APROVADO' %}<span class="text-emerald-600">✅ APROVADO</span>{% else %}<span class="text-red-500">❌ REPROVADO</span>{% endif %}</span>
|
||
<small class="text-slate-500">{{ aprovacao.decidido_em|date:"d/m/Y H:i" }}</small>
|
||
</div>
|
||
<div class="text-sm text-slate-500 mt-1">Por: <strong>{{ aprovacao.usuario.nome }}</strong> ({{ aprovacao.get_etapa_display }})</div>
|
||
{% if aprovacao.justificativa %}<div class="mt-2 bg-slate-50 p-2 rounded text-sm text-slate-700 italic">"{{ aprovacao.justificativa }}"</div>{% endif %}
|
||
</div>
|
||
</div>
|
||
{% empty %}
|
||
<p class="text-slate-500 italic -ml-2">Nenhuma decisão registrada ainda.</p>
|
||
{% endfor %}
|
||
</div>
|
||
</div>
|
||
|
||
{% if solicitacao.pode_enviar and is_solicitante %}
|
||
<div class="mt-8 p-6 bg-sky-50 border border-sky-200 rounded-xl text-center">
|
||
<h3 class="text-sky-800 font-semibold m-0">🚀 Enviar para Aprovação</h3>
|
||
<p class="text-sky-900 mb-5">Sua solicitação está em rascunho. Revise os dados e envie para iniciar o fluxo.</p>
|
||
<a href="{% url 'solicitacoes:enviar_solicitacao' solicitacao.id %}" class="inline-flex items-center gap-2 py-3 px-6 rounded-md font-semibold bg-primary text-white no-underline hover:bg-primary-hover transition-colors">Confirmar Envio</a>
|
||
</div>
|
||
{% endif %}
|
||
|
||
{% if pode_dar_parecer %}
|
||
<div class="mt-8 p-6 bg-white rounded-xl border border-slate-200 border-t-4 border-t-blue-500 shadow-sm">
|
||
<h3 class="text-blue-800 font-semibold m-0 mb-1">{% if usuario_sistema.perfil == 'GG' %}👥 Parecer de Gente e Gestão{% elif usuario_sistema.perfil == 'CONTROLADORIA' %}💰 Parecer de Controladoria{% else %}📝 Registrar Parecer{% endif %}</h3>
|
||
<p class="text-slate-500 text-sm mb-6">Preencha sua análise técnica abaixo para subsidiar a decisão da diretoria.</p>
|
||
<form method="post" action="{% url 'solicitacoes:registrar_parecer' solicitacao.id %}" enctype="multipart/form-data">
|
||
{% csrf_token %}
|
||
<div class="mb-4">
|
||
<label for="texto" class="block mb-1 font-semibold text-slate-700">Parecer Técnico <span class="text-red-500">*</span></label>
|
||
<textarea name="texto" id="texto" rows="6" class="w-full py-2.5 px-3 border border-slate-200 rounded-md text-base focus:outline-none focus:border-primary focus:ring-2 focus:ring-primary/20" required placeholder="Descreva sua análise detalhada..."></textarea>
|
||
</div>
|
||
<div class="mb-5">
|
||
<label for="anexo" class="block mb-1 font-semibold text-slate-700">Anexo (Opcional)</label>
|
||
<input type="file" name="anexo" id="anexo" class="w-full py-2 px-3 border border-slate-200 rounded-md focus:outline-none focus:border-primary" accept=".pdf,.doc,.docx,.xls,.xlsx,.jpg,.png">
|
||
</div>
|
||
<button type="submit" class="py-2.5 px-5 rounded-md font-semibold bg-primary text-white border-0 cursor-pointer hover:bg-primary-hover transition-colors">💾 Salvar Parecer</button>
|
||
</form>
|
||
</div>
|
||
{% endif %}
|
||
|
||
</div>
|
||
{% endblock %} |