sgmp/templates/solicitacoes/solicitacao_detalhe.html

333 lines
29 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% 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 %}