{% extends "base.html" %} {% block title %}Registros de Ponto{% endblock %} {% block extra_css %} {% endblock %} {% block content %}
RH • Batidas e ajustes

Registros de Ponto

Consulte o histórico, faça lançamentos manuais e trate importações offline mantendo a trilha operacional bem organizada.

Empresa: {{ empresa.nome_fantasia or empresa.razao_social or empresa.nome }}
URL pública atual: {{ url_publica }}
{% if importacao_ultima %}
Última importação manual
Arquivo: {{ importacao_ultima.arquivo or '-' }} • executada em {{ importacao_ultima.executado_em or '-' }}
Criados {{ importacao_ultima.criados or 0 }} Duplicados {{ importacao_ultima.duplicados or 0 }} Ignorados {{ importacao_ultima.ignorados or 0 }}
{% if importacao_ultima.erros %} {% endif %}
{% endif %} {% if competencia_fechada %}
Competência {{ competencia_label }} fechada: novos registros e retificações desta competência ficam bloqueados.
{% endif %}
Limpar
Lançamento manual de ponto (RH) Novo registro com justificativa obrigatória
Importação manual do app empresa Use quando o cliente ficou sem rede e precisou operar offline.
Formato esperado: arquivo JSON gerado por “Exportar registros” no CapePonto Empresa.
Essa observação entra no histórico dos registros importados.
A rotina ignora duplicados por protocolo/UUID e tenta inferir a sequência Entrada → Pausa → Retorno → Saída.
Histórico de registros
Nenhum registro encontrado para o filtro selecionado.
{% for r in registros %} {% set funcionario_nome = (r.funcionario.nome if r.funcionario else '-') %} {% set tipo_txt = (r.tipo.replace('_', ' ') if r.tipo else '-') %} {% set status_txt = (r.status_registro or 'ativo') %} {% set origem_txt = (r.origem or '-') %} {% set data_dia_key = (r.data_hora.strftime('%Y-%m-%d') if r.data_hora else 'sem-data') %} {% set data_dia_label = (r.data_hora.strftime('%d/%m/%Y') if r.data_hora else 'Sem data') %} {% else %} {% endfor %}
Data/Hora Funcionário Tipo Origem Status Localização Hash IP Foto Ações RH
{{ r.data_hora.strftime('%d/%m/%Y %H:%M:%S') if r.data_hora else '-' }} {{ funcionario_nome }} {{ tipo_txt }} {{ origem_txt }} {% if r.status_registro == 'invalidado' %} invalidado {% else %} ativo {% endif %} {% if r.latitude is not none and r.longitude is not none %}
GPS OK {{ '%.6f'|format(r.latitude) }}, {{ '%.6f'|format(r.longitude) }} Ver mapa {% if r.endereco_aproximado %} {{ r.endereco_aproximado }} {% endif %}
{% else %} sem localização {% endif %}
{{ (r.hash_registro or '-')[:12] }}{% if r.hash_registro %}...{% endif %} {{ r.ip_address or '-' }} {% if r.imagem_base64 %} {% else %} - {% endif %} {% if r.status_registro == 'invalidado' %} Sem ações {% else %}
{% endif %}
Nenhum registro encontrado para o filtro selecionado.
{% endblock %} {% block scripts %} {{ super() }} {% endblock %}