Registro de Pontos

Gerencie e visualize os registros de ponto dos funcionários

Filtros

{#if estatisticas}
Total de Registros
{estatisticas.totalRegistros}
Dentro do Prazo
{estatisticas.dentroDoPrazo}
{estatisticas.totalRegistros > 0 ? ((estatisticas.dentroDoPrazo / estatisticas.totalRegistros) * 100).toFixed(1) : 0}%
Fora do Prazo
{estatisticas.foraDoPrazo}
{estatisticas.totalRegistros > 0 ? ((estatisticas.foraDoPrazo / estatisticas.totalRegistros) * 100).toFixed(1) : 0}%
Funcionários
{estatisticas.totalFuncionarios}
{estatisticas.funcionariosDentroPrazo} dentro do prazo, {estatisticas.funcionariosForaPrazo} fora
{/if}

Registros

{#if registrosAgrupados.length === 0}
Nenhum registro encontrado para o período selecionado
{:else}
{#each registrosAgrupados as grupo}

{grupo.funcionario?.nome || 'Funcionário não encontrado'}

{#if grupo.funcionario?.matricula}

Matrícula: {grupo.funcionario.matricula}

{/if}
{#key grupo.funcionarioId} {@const bancoHorasQuery = useQuery( api.pontos.obterBancoHorasFuncionario, { funcionarioId: grupo.funcionarioId } )} {@const bancoHoras = bancoHorasQuery?.data} {@const saldoAcumulado = bancoHoras?.saldoAcumuladoMinutos ?? 0} {@const saldoPositivo = saldoAcumulado >= 0} {#if bancoHoras}
{#if saldoPositivo} {:else} {/if}

Banco de Horas

{formatarSaldoHoras(saldoAcumulado)}

{/if} {/key}
{#each grupo.registros as registro} {/each}
Data Tipo Horário Status
{registro.data} {getTipoRegistroLabel(registro.tipo)} {formatarHoraPonto(registro.hora, registro.minuto)} {registro.dentroDoPrazo ? 'Dentro do Prazo' : 'Fora do Prazo'}
{/each}
{/if}