From c6a52155eef4618797fe98d1287f8e8373bef150 Mon Sep 17 00:00:00 2001 From: deyvisonwanderley Date: Tue, 23 Dec 2025 22:18:30 -0300 Subject: [PATCH] feat: restore original values for linked records upon homologation deletion, including recalculation of work hours based on previous time entries, enhancing data integrity and user experience --- packages/backend/convex/pontos.ts | 33 ++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/packages/backend/convex/pontos.ts b/packages/backend/convex/pontos.ts index 59ac91a..6fe3951 100644 --- a/packages/backend/convex/pontos.ts +++ b/packages/backend/convex/pontos.ts @@ -2867,14 +2867,41 @@ export const excluirHomologacao = mutation({ throw new Error('Você não tem permissão para excluir esta homologação'); } - // Se a homologação estiver vinculada a um registro, remover a referência + // Se a homologação estiver vinculada a um registro, restaurar valores originais if (homologacao.registroId) { const registro = await ctx.db.get(homologacao.registroId); if (registro && registro.homologacaoId === args.homologacaoId) { - await ctx.db.patch(homologacao.registroId, { + // Restaurar valores originais se existirem + const patchData: { + homologacaoId: undefined; + editadoPorGestor: boolean; + hora?: number; + minuto?: number; + } = { homologacaoId: undefined, editadoPorGestor: false - }); + }; + + // Se a homologação tem valores anteriores, restaurar + if ( + homologacao.horaAnterior !== undefined && + homologacao.minutoAnterior !== undefined + ) { + patchData.hora = homologacao.horaAnterior; + patchData.minuto = homologacao.minutoAnterior; + } + + await ctx.db.patch(homologacao.registroId, patchData); + + // Recalcular banco de horas após restaurar valores + const config = await ctx.db + .query('configuracaoPonto') + .withIndex('by_ativo', (q) => q.eq('ativo', true)) + .first(); + + if (config) { + await atualizarBancoHoras(ctx, registro.funcionarioId, registro.data, config); + } } }