diff --git a/packages/backend/convex/pontos.ts b/packages/backend/convex/pontos.ts index 873f89d..9c3e8b3 100644 --- a/packages/backend/convex/pontos.ts +++ b/packages/backend/convex/pontos.ts @@ -2994,22 +2994,23 @@ export const excluirHomologacao = mutation({ // Se for um ajuste de banco de horas, remover completamente do banco de dados if (homologacao.tipoAjuste && homologacao.ajusteMinutos !== undefined) { - // Converter criadoEm da homologação para data (YYYY-MM-DD) - const dataHomologacao = new Date(homologacao.criadoEm).toISOString().split('T')[0]!; + // Buscar ajustes criados próximo ao tempo da homologação (dentro de 5 minutos antes) + // O ajuste é criado logo antes da homologação em ajustarBancoHoras + const tempoLimite = homologacao.criadoEm - 5 * 60 * 1000; // 5 minutos antes - // Buscar o ajuste correspondente - // Procurar ajustes manuais do mesmo funcionário, gestor, tipo, valor e data + // Buscar todos os ajustes do funcionário com os mesmos critérios + // e criados próximo ao tempo da homologação const ajustes = await ctx.db .query('ajustesBancoHoras') - .withIndex('by_funcionario_data', (q) => - q.eq('funcionarioId', homologacao.funcionarioId).eq('dataAplicacao', dataHomologacao) - ) + .withIndex('by_funcionario', (q) => q.eq('funcionarioId', homologacao.funcionarioId)) .filter((q) => q.and( q.eq(q.field('motivoTipo'), 'manual'), q.eq(q.field('tipo'), homologacao.tipoAjuste), q.eq(q.field('valorMinutos'), homologacao.ajusteMinutos), - q.eq(q.field('gestorId'), homologacao.gestorId) + q.eq(q.field('gestorId'), homologacao.gestorId), + q.gte(q.field('criadoEm'), tempoLimite), + q.lte(q.field('criadoEm'), homologacao.criadoEm) ) ) .collect(); @@ -3084,6 +3085,17 @@ export const excluirHomologacao = mutation({ tipoDia: novoTipoDia }); + // Recalcular banco de horas do dia específico para garantir consistência + const config = await ctx.db + .query('configuracaoPonto') + .withIndex('by_ativo', (q) => q.eq('ativo', true)) + .first(); + + if (config) { + // Recalcular banco de horas do dia para atualizar valores baseados nos registros + await atualizarBancoHoras(ctx, homologacao.funcionarioId, ajuste.dataAplicacao, config); + } + // Recalcular banco de horas mensal após remover ajuste const mes = ajuste.dataAplicacao.substring(0, 7); // YYYY-MM const hojeDate = new Date();