Banco de Horas Mensal

{formatarMes(mesSelecionado)}
{#if saldoNegativo && bancoMensal}

Atenção: Saldo Negativo Acumulado

Seu saldo acumulado está negativo em{' '} {Math.abs(bancoMensal.saldoFormatado.final.horas)}h{' '} {Math.abs(bancoMensal.saldoFormatado.final.minutos)}min . Considere compensar horas ou entrar em contato com seu gestor.
{/if} {#if bancoMensalQuery?.isLoading}
{:else if bancoMensal}

Saldo Inicial

{bancoMensal.saldoFormatado.inicial.positivo ? '+' : '-'} {bancoMensal.saldoFormatado.inicial.horas}h{' '} {bancoMensal.saldoFormatado.inicial.minutos}min

{#if bancoMensal.saldoFormatado.inicial.positivo} {:else} {/if}

Saldo do Mês

{bancoMensal.saldoFormatado.mes.positivo ? '+' : '-'} {bancoMensal.saldoFormatado.mes.horas}h{' '} {bancoMensal.saldoFormatado.mes.minutos}min

{#if bancoMensal.saldoFormatado.mes.positivo} {:else} {/if}

Saldo Final

{bancoMensal.saldoFormatado.final.positivo ? '+' : '-'} {bancoMensal.saldoFormatado.final.horas}h{' '} {bancoMensal.saldoFormatado.final.minutos}min

{#if bancoMensal.saldoFormatado.final.positivo} {:else} {/if}

Horas Extras

{Math.floor(bancoMensal.horasExtras / 60)}h{' '} {bancoMensal.horasExtras % 60}min

Déficit de Horas

{Math.floor(bancoMensal.horasDeficit / 60)}h{' '} {bancoMensal.horasDeficit % 60}min

Informações do Mês

Dias Trabalhados

{bancoMensal.diasTrabalhados} dias

Última Atualização

{new Date(bancoMensal.atualizadoEm).toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' })}

{#if ajustes && ajustes.length > 0}

Ajustes Aplicados - {formatarMes(mesSelecionado)}

{#each ajustes as ajuste} {/each}
Data Tipo Motivo Valor Gestor Status
{new Date(ajuste.dataAplicacao).toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric' })} {ajuste.tipo === 'abonar' ? 'Abonar' : ajuste.tipo === 'descontar' ? 'Descontar' : 'Compensar'}
{ajuste.motivoTipo === 'atestado' ? 'Atestado Médico' : ajuste.motivoTipo === 'licenca' ? 'Licença' : ajuste.motivoTipo === 'ausencia' ? 'Ausência' : 'Manual'} {#if ajuste.motivoDescricao} {ajuste.motivoDescricao} {/if}
= 0 ? 'text-success' : 'text-error'} > {ajuste.valorMinutos >= 0 ? '+' : ''} {Math.floor(Math.abs(ajuste.valorMinutos) / 60)}h{' '} {Math.abs(ajuste.valorMinutos) % 60}min {ajuste.gestor?.nome || 'Sistema'} {#if ajuste.aplicado} Aplicado {:else} Pendente {/if}
{/if} {#if inconsistencias && inconsistencias.length > 0}

Inconsistências Detectadas - {formatarMes(mesSelecionado)}

{#each inconsistencias as inconsistencia}
{inconsistencia.status === 'resolvida' ? 'Resolvida' : inconsistencia.status === 'ignorada' ? 'Ignorada' : 'Pendente'} {inconsistencia.tipo === 'ponto_com_atestado' ? 'Registro de Ponto com Atestado' : inconsistencia.tipo === 'ponto_com_licenca' ? 'Registro de Ponto com Licença' : inconsistencia.tipo === 'ponto_com_ausencia' ? 'Registro de Ponto com Ausência' : inconsistencia.tipo === 'registro_duplicado' ? 'Registro Duplicado' : inconsistencia.tipo === 'sequencia_invalida' ? 'Sequência Inválida' : 'Saldo Inconsistente'}

{inconsistencia.descricao}

Detectada em:{' '} {new Date(inconsistencia.dataDetectada).toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric' })}

{#if inconsistencia.status === 'pendente'} {:else if inconsistencia.status === 'resolvida'} {/if}
{/each}
{/if} {#if bancoMensal && (bancoMensal.totalAjustes || bancoMensal.totalAbonos || bancoMensal.totalDescontos || bancoMensal.inconsistenciasResolvidas !== undefined)}

Resumo de Ajustes e Inconsistências

{#if bancoMensal.totalAjustes !== undefined}

Total de Ajustes

{Math.floor(Math.abs(bancoMensal.totalAjustes) / 60)}h{' '} {Math.abs(bancoMensal.totalAjustes) % 60}min

{/if} {#if bancoMensal.totalAbonos !== undefined}

Total de Abonos

+{Math.floor(bancoMensal.totalAbonos / 60)}h{' '} {bancoMensal.totalAbonos % 60}min

{/if} {#if bancoMensal.totalDescontos !== undefined}

Total de Descontos

-{Math.floor(bancoMensal.totalDescontos / 60)}h{' '} {bancoMensal.totalDescontos % 60}min

{/if} {#if bancoMensal.inconsistenciasResolvidas !== undefined}

Inconsistências Resolvidas

{bancoMensal.inconsistenciasResolvidas}

{/if}
{/if} {:else}

Nenhum dado disponível para este mês

Não há registros de banco de horas para {formatarMes(mesSelecionado)}.

{/if} {#if chartData && historico && historico.length > 0}

Evolução do Banco de Horas

{/if} {#if historico && historico.length > 0}

Histórico dos Últimos 6 Meses

{#each historico as item} {/each}
Mês Saldo Inicial Saldo do Mês Saldo Final Dias
{formatarMes(item.mes)} {item.saldoFormatado.inicial.positivo ? '+' : '-'} {item.saldoFormatado.inicial.horas}h{' '} {item.saldoFormatado.inicial.minutos}min {item.saldoFormatado.mes.positivo ? '+' : '-'} {item.saldoFormatado.mes.horas}h{' '} {item.saldoFormatado.mes.minutos}min {item.saldoFormatado.final.positivo ? '+' : '-'} {item.saldoFormatado.final.horas}h{' '} {item.saldoFormatado.final.minutos}min {item.diasTrabalhados}
{/if} {#if historicoAlteracoes && historicoAlteracoes.length > 0}

Histórico de Alterações - {formatarMes(mesSelecionado)}

{#each historicoAlteracoes as alteracao}
{#if alteracao.tipoAlteracao === 'edicao_registro'} Edição de Registro {:else if alteracao.tipoAlteracao === 'ajuste_banco'} Ajuste de Banco de Horas {:else} Outro {/if} {alteracao.dataFormatada}
{#if alteracao.tipoAlteracao === 'edicao_registro' && alteracao.registro}

Registro: {alteracao.registro.tipo} em{' '} {alteracao.registro.data}

Alteração:{' '} {alteracao.registro.horaAnterior} {' '} →{' '} {alteracao.registro.horaNova}

{#if alteracao.diferencaMinutos !== undefined}

Diferença:{' '} = 0 ? 'text-success' : 'text-error'} > {alteracao.diferencaMinutos >= 0 ? '+' : ''} {Math.floor(Math.abs(alteracao.diferencaMinutos) / 60)}h{' '} {Math.abs(alteracao.diferencaMinutos) % 60}min

{/if}
{:else if alteracao.tipoAlteracao === 'ajuste_banco'}

Tipo: {alteracao.tipoAjuste === 'compensar' ? 'Compensar' : alteracao.tipoAjuste === 'abonar' ? 'Abonar' : 'Descontar'}

{#if alteracao.ajusteMinutos !== undefined}

Ajuste:{' '} = 0 ? 'text-success' : 'text-error'} > {alteracao.ajusteMinutos >= 0 ? '+' : ''} {Math.floor(Math.abs(alteracao.ajusteMinutos) / 60)}h{' '} {Math.abs(alteracao.ajusteMinutos) % 60}min

{/if}
{/if} {#if alteracao.motivoDescricao}

Motivo: {alteracao.motivoDescricao}

{/if} {#if alteracao.observacoes}

Observações: {alteracao.observacoes}

{/if} {#if alteracao.gestor}

Alterado por: {alteracao.gestor.nome}

{/if}
{/each}
{:else if historicoAlteracoesQuery?.data && historicoAlteracoesQuery.data.length === 0}

Nenhuma alteração registrada

Não há histórico de alterações para {formatarMes(mesSelecionado)}.

{/if}