{% extends "base.html" %} {% block title %}Controle Financeiro RH{% endblock %} {% block content %} {% set competencia_exibicao = (competencia[5:7] ~ '-' ~ competencia[:4]) if competencia and competencia|length >= 7 else competencia %}

Controle Financeiro RH

Painel unificado para folha, pagamentos, recibos e apuração do ponto na competência selecionada.

{% if not estrutura_rh_folha_ok %}
Estrutura RH/Folha não inicializada neste banco
{% if tabelas_rh_folha_faltantes %}
Tabelas ausentes: {{ tabelas_rh_folha_faltantes|join(', ') }}
{% endif %} {% if colunas_rh_folha_faltantes %}
Colunas críticas ausentes: {{ colunas_rh_folha_faltantes|join(', ') }}
{% endif %}
{% endif %}
Selecione a empresa que deseja consultar.
Selecione no calendário mensal. Exibição padrão: {{ competencia_exibicao or 'MM/AAAA' }}.
Filtre um colaborador específico ou mantenha todos.
{% if comp and not competencia_fechada %} {% elif comp and competencia_fechada %} {% endif %}
{% if comp and not competencia_fechada %}
{% elif comp and competencia_fechada %}
{% endif %} {% if competencia_fechada %}
Competência {{ competencia_exibicao }} fechada
Salários, eventos e pagamentos ficam bloqueados até a reabertura.
Modo protegido
{% endif %}
Competência: {{ competencia_exibicao }}
Funcionários: {{ total_funcionarios or 0 }}
Bruto: R$ {{ '%.2f'|format(total_bruto_calc or 0)|replace('.', ',') }}
Descontos: R$ {{ '%.2f'|format(total_descontos_calc or 0)|replace('.', ',') }}
INSS: R$ {{ '%.2f'|format(total_inss_calc or 0)|replace('.', ',') }}
FGTS: R$ {{ '%.2f'|format(total_fgts_calc or 0)|replace('.', ',') }}
Acessos rápidos financeiros
Abra só a rotina que vai usar agora e deixe o restante da tela mais limpa.
4 rotinas disponíveis
Escolha uma ação acima
Os formulários ficam ocultos até você clicar no botão da rotina desejada.
Ajuste salarial individual Alteração direta do salário base
Lançamento financeiro RH Provento ou desconto operacional
Usado quando o tipo for Desconto. Para vale salarial, prefira a rotina de adiantamento.
Adiantamento / Vale salarial Desconto aprovado imediato
Escolha no calendário. Padrão exibido: DD/MM/AAAA.
Empréstimo em folha Parcelamento automático por competência
Selecione no calendário mensal. Padrão: MM/AAAA.
Escolha no calendário. Padrão exibido: DD/MM/AAAA.
O sistema distribui por competência.
{% if comp %}
Resumo da folha processada
Status: {{ comp.status or 'processada' }}
Líquido operacional: R$ {{ '%.2f'|format(total_liquido_operacional or total_liquido_calc or 0)|replace('.', ',') }}
Bruto (comp): R$ {{ '%.2f'|format(comp.total_bruto or 0)|replace('.', ',') }}
Desc. (comp): R$ {{ '%.2f'|format(comp.total_descontos or 0)|replace('.', ',') }}
INSS (comp): R$ {{ '%.2f'|format(comp.total_inss or 0)|replace('.', ',') }}
FGTS (comp): R$ {{ '%.2f'|format(comp.total_fgts or 0)|replace('.', ',') }}
{% if ajustes_eventos_pendentes_total %}
Ajustes operacionais após o último processamento: {% if ajustes_eventos_pendentes_total > 0 %}+{% endif %}R$ {{ '%.2f'|format(ajustes_eventos_pendentes_total or 0)|replace('.', ',') }} {% if adiantamentos_nao_consolidados_total %} • incluindo adiantamentos não consolidados de R$ {{ '%.2f'|format(adiantamentos_nao_consolidados_total or 0)|replace('.', ',') }} {% endif %}
{% endif %}
{% else %}
Competência {{ competencia_exibicao }} ainda não processada.
{% endif %}
Apuração mensal do ponto {% if apuracoes_ponto %} {{ apuracao_ponto_resumo.total_funcionarios }} funcionário(s) sincronizados {% else %} Snapshot mensal pendente {% endif %}
{% if apuracoes_ponto %}
Funcionários: {{ apuracao_ponto_resumo.total_funcionarios }}
Abertas: {{ apuracao_ponto_resumo.total_apuradas }}
Fechadas: {{ apuracao_ponto_resumo.total_fechadas }}
Extras: {{ apuracao_ponto_resumo.total_extras_label }}
Débitos: {{ apuracao_ponto_resumo.total_debito_label }}
Atrasos: {{ apuracao_ponto_resumo.total_atraso_label }}
Banco +: {{ apuracao_ponto_resumo.total_banco_credito_label }}
Pendências: {{ apuracao_ponto_resumo.pendencias }}
Última atualização: {{ (apuracao_ponto_resumo.ultima_atualizacao_label or '-')|replace('/', '-') }}
Fechamento manual obrigatório
A atualização automática pode recalcular a apuração, mas só a ação manual abaixo fecha ou reabre o snapshot mensal. {% if funcionario_id %}O escopo atual está filtrado para o funcionário selecionado.{% else %}O escopo atual abrange todos os funcionários da competência.{% endif %}
{% if apuracao_ponto_resumo.possui_apuradas %} {% endif %} {% if apuracao_ponto_resumo.possui_fechadas %} {% endif %}
{% if apuracao_ponto_resumo.possui_apuradas %}
Esse motivo será gravado na apuração e no log de auditoria.
{% endif %} {% if apuracao_ponto_resumo.possui_fechadas %}
Ao reabrir, a próxima atualização automática poderá recalcular os registros desse escopo.
{% endif %}
{% for item in apuracoes_ponto %} {% endfor %}
Funcionário Status Tratamento sugerido Saldo espelho Banco competência Atraso Faltas Atualizado em
{{ item.funcionario_nome }} {% if item.status == 'fechada' %} {{ item.status_label }}
Congelada até reabertura manual.
{% else %} {{ item.status_label }} {% endif %}
{% if item.tratamento_sugerido == 'revisao_operacional' %} {{ item.tratamento_label }} {% elif item.tratamento_sugerido in ['evento_folha_pendente', 'desconto_folha_pendente'] %} {{ item.tratamento_label }} {% elif item.tratamento_sugerido == 'banco_horas' %} {{ item.tratamento_label }} {% else %} {{ item.tratamento_label }} {% endif %} {{ item.total_saldo_label }} {{ item.saldo_banco_competencia_label }} {{ item.total_atraso_label }} {{ item.total_faltas }} {{ item.ultima_atualizacao_label }}
{% elif apuracao_ponto_schema_ok %}
A apuração mensal ainda não foi materializada
Clique em Atualizar Apuração do Ponto para consolidar espelho mensal + banco de horas e deixar o Financeiro RH pronto para a próxima automação.
{% else %}
Estrutura da apuração mensal ainda não está disponível neste banco
Execute a migração da competência de apuração do ponto para habilitar os snapshots mensais no Financeiro RH.
{% endif %}
Pendentes: {{ eventos_pendentes|length }}
Aprovados: {{ eventos_aprovados|length }}
Rejeitados: {{ eventos_rejeitados|length }}
Proventos aprovados: R$ {{ '%.2f'|format(eventos_proventos_total or 0)|replace('.', ',') }}
Descontos aprovados: R$ {{ '%.2f'|format(eventos_descontos_total or 0)|replace('.', ',') }}
Adiantamentos: R$ {{ '%.2f'|format(adiantamentos_total or 0)|replace('.', ',') }}
Empréstimos: R$ {{ '%.2f'|format(emprestimos_total or 0)|replace('.', ',') }}
{% if eventos_pendentes %}
Existem {{ eventos_pendentes|length }} evento(s) pendente(s) de aprovação.
{% endif %}
Eventos lançados na competência (até 300)
{% for ev in eventos_competencia %} {% set status_aprov = (ev.status_aprovacao or 'aprovado')|lower %} {% if not competencia_fechada and status_aprov != 'rejeitado' %} {% endif %} {% if not competencia_fechada %} {% endif %} {% else %} {% endfor %}
FuncionárioFunçãoEventoTipoNaturezaValorAprovaçãoMotivoAções
{{ funcionarios_map.get(ev.funcionario_id, 'Funcionário #' ~ (ev.funcionario_id or '-')) }} {{ funcionarios_cargo_map.get(ev.funcionario_id, '-') }} {{ ev.nome or '-' }} {% if (ev.tipo or '')|lower == 'desconto' %}Desconto{% else %}Provento{% endif %} {{ ev.natureza or '-' }} R$ {{ '%.2f'|format(ev.referencia or 0)|replace('.', ',') }} {% if status_aprov == 'pendente' %}Pendente{% elif status_aprov == 'rejeitado' %}Rejeitado{% else %}Aprovado{% endif %} {{ ev.motivo_reprovacao or '-' }}
{% if not competencia_fechada and status_aprov != 'aprovado' %}
{% endif %} {% if not competencia_fechada and status_aprov != 'rejeitado' %} {% endif %} {% if not competencia_fechada %} {% endif %} {% if (ev.natureza or '')|lower == 'adiantamento_folha' and recibos_por_evento_id.get(ev.id) %} Recibo {% endif %}
Nenhum evento financeiro lançado para a competência selecionada.
{% if pagamento_folha %}
Ações em lote do pagamento
Opcional: escolha no calendário (DD/MM/AAAA).
Opcional: escolha no calendário (DD/MM/AAAA).
{% endif %}
Pagamento individual da folha (competência {{ competencia_exibicao }}) {% if pagamento_folha %}Status: {{ pagamento_folha.status or 'gerado' }}{% endif %}
Política operacional atual: folha fechada dentro do mês e pagamento padrão previsto para o 1º dia do mês seguinte.
Itens: {{ pagamento_total_itens or 0 }}
Pendentes: {{ pagamento_itens_pendentes or 0 }}
Programados: {{ pagamento_itens_programados or 0 }}
Líquido pago: R$ {{ '%.2f'|format(pagamento_pago_total or 0)|replace('.', ',') }}
{% for item in pagamento_itens %} {% else %} {% endfor %}
FuncionárioFunçãoBrutoDescontosLíquidoFormaPrevistoPago emStatusAção
{{ item.favorecido_nome or funcionarios_map.get(item.funcionario_id, 'Funcionário #' ~ (item.funcionario_id or '-')) }} {{ item.cargo_snapshot or funcionarios_cargo_map.get(item.funcionario_id, '-') }} R$ {{ '%.2f'|format(item.valor_bruto or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(item.valor_descontos or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(item._valor_liquido_operacional if item._valor_liquido_operacional is defined else item.valor_liquido or 0)|replace('.', ',') }} {% if item._ajuste_operacional is defined and item._ajuste_operacional %}
ajuste pendente: {% if item._ajuste_operacional > 0 %}+{% endif %}R$ {{ '%.2f'|format(item._ajuste_operacional or 0)|replace('.', ',') }}
{% endif %}
{{ item.forma_pagamento or '-' }} {{ item.data_pagamento_prevista.strftime('%d-%m-%Y') if item.data_pagamento_prevista else '-' }} {{ item.data_pagamento.strftime('%d-%m-%Y') if item.data_pagamento else '-' }} {% if (item.status or '')|lower == 'pago' %}Pago{% elif (item.status or '')|lower == 'programado' %}Programado{% else %}Pendente{% endif %}
{% if recibos_por_pagamento_item_id.get(item.id) %} Recibo {% endif %}
Calendário DD/MM/AAAA.
Calendário DD/MM/AAAA.
Nenhum item individual de pagamento gerado para esta competência.
{% if not recibos_schema_ok %}
Estrutura de recibos RH ainda não está disponível neste banco
Execute a migração de rh_recibo_funcionario para habilitar os recibos de vale e pagamento salarial com impressão/assinatura.
{% else %}
Visíveis: {{ recibos_total or 0 }}{% if recibos_total_geral is defined and recibos_total_geral != recibos_total %} / {{ recibos_total_geral }}{% endif %}
Emitidos: {{ recibos_emitidos or 0 }}
Assinados: {{ recibos_assinados or 0 }}
Cancelados: {{ recibos_cancelados or 0 }}
Vales: R$ {{ '%.2f'|format(recibos_adiantamento_total or 0)|replace('.', ',') }}
Salários: R$ {{ '%.2f'|format(recibos_salario_total or 0)|replace('.', ',') }}
Recibos para assinatura do colaborador
Os recibos de vale/adiantamento são emitidos ao registrar o evento. Os de salário aparecem quando o pagamento individual for marcado como Pago.
Datas em DD/MM/AAAA • competência em MM/AAAA
Recibos emitidos na competência {{ competencia_exibicao }}
{% for recibo in recibos_competencia %} {% if (recibo.status or '')|lower == 'emitido' %} {% endif %} {% else %} {% endfor %}
NúmeroFuncionárioTipoValorFormaReferênciaStatusAções
{{ recibo.numero_recibo or ('REC-' ~ recibo.id) }} {{ recibo.favorecido_nome or funcionarios_map.get(recibo.funcionario_id, 'Funcionário #' ~ (recibo.funcionario_id or '-')) }} {% if (recibo.tipo or '')|lower == 'salario' %} Salário {% else %} Vale / Adiantamento {% endif %} R$ {{ '%.2f'|format(recibo.valor or 0)|replace('.', ',') }} {{ recibo.forma_pagamento or '-' }} {{ recibo.data_referencia.strftime('%d-%m-%Y') if recibo.data_referencia else '-' }} {% if (recibo.status or '')|lower == 'assinado' %} Assinado {% elif (recibo.status or '')|lower == 'cancelado' %} Cancelado {% else %} Emitido {% endif %}
Abrir Imprimir {% if (recibo.status or '')|lower == 'emitido' %} {% elif (recibo.status or '')|lower == 'assinado' %}
{% endif %}
Escolha no calendário (DD/MM/AAAA).
Nenhum recibo RH emitido para esta competência.
{% endif %}
Títulos financeiros RH no Contas a Pagar (competência {{ competencia_exibicao }}) Abrir Contas a Pagar
Títulos: {{ titulos_rh|length }}
Total: R$ {{ '%.2f'|format(titulos_total or 0)|replace('.', ',') }}
Em aberto: R$ {{ '%.2f'|format(titulos_aberto_total or 0)|replace('.', ',') }}
Pagos: R$ {{ '%.2f'|format(titulos_pago_total or 0)|replace('.', ',') }}
{% for t in titulos_rh %} {% set vencido = (not t.pago) and t.data_vencimento and (t.data_vencimento < hoje) %} {% else %} {% endfor %}
DocumentoDescriçãoVencimentoValorStatus
{{ t.numero_documento_vinculado or ('TITULO-' ~ t.id) }} {{ t.descricao or '-' }} {{ t.data_vencimento.strftime('%d-%m-%Y') if t.data_vencimento else '-' }} R$ {{ '%.2f'|format(t.valor or 0)|replace('.', ',') }} {% if t.pago %}Pago{% elif vencido %}Vencido{% else %}Em aberto{% endif %}
Nenhum título RH financeiro encontrado para esta competência.
Lançamentos da folha (até 200)
{% for l in lancamentos %} {% else %} {% endfor %}
FuncionárioFunçãoSalário BaseProventosDescontosINSSFGTSIRRFLíquido
{{ funcionarios_map.get(l.funcionario_id, 'Funcionário #' ~ (l.funcionario_id or '-')) }} {{ funcionarios_cargo_map.get(l.funcionario_id, '-') }} R$ {{ '%.2f'|format(l.salario_base or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(l.proventos or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(l.descontos or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(l.inss_valor or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(l.fgts_valor or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(l.irrf_valor or 0)|replace('.', ',') }} R$ {{ '%.2f'|format(l._liquido_operacional if l._liquido_operacional is defined else l.liquido or 0)|replace('.', ',') }} {% if l._ajuste_operacional is defined and l._ajuste_operacional %}
ajuste pendente: {% if l._ajuste_operacional > 0 %}+{% endif %}R$ {{ '%.2f'|format(l._ajuste_operacional or 0)|replace('.', ',') }}
{% endif %}
Nenhum lançamento de folha para a competência selecionada.
{% endblock %}