diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte index 78941a9..0286283 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/dispensa/+page.svelte @@ -100,10 +100,9 @@ return; } - const dataInicioObj = new Date(dataInicio); - const dataFimObj = new Date(dataFim); - - if (dataFimObj < dataInicioObj) { + // Validar datas (comparar strings diretamente para evitar problemas de timezone) + // Formato YYYY-MM-DD permite comparação lexicográfica + if (dataFim < dataInicio) { toast.error('Data fim deve ser maior ou igual à data início'); return; } @@ -163,7 +162,10 @@ } function formatarDataHora(data: string, hora: number, minuto: number): string { - return `${new Date(data).toLocaleDateString('pt-BR')} ${hora.toString().padStart(2, '0')}:${minuto.toString().padStart(2, '0')}`; + // Converter YYYY-MM-DD para DD/MM/YYYY sem problemas de timezone + const [ano, mes, dia] = data.split('-'); + const dataFormatada = `${dia}/${mes}/${ano}`; + return `${dataFormatada} ${hora.toString().padStart(2, '0')}:${minuto.toString().padStart(2, '0')}`; } diff --git a/packages/backend/convex/pontos.ts b/packages/backend/convex/pontos.ts index 6fe3951..b23f8b1 100644 --- a/packages/backend/convex/pontos.ts +++ b/packages/backend/convex/pontos.ts @@ -2978,11 +2978,9 @@ export const criarDispensaRegistro = mutation({ throw new Error('Você não tem permissão para criar dispensa para este funcionário'); } - // Validar datas - const dataInicioObj = new Date(args.dataInicio); - const dataFimObj = new Date(args.dataFim); - - if (dataFimObj < dataInicioObj) { + // Validar datas (comparar strings diretamente para evitar problemas de timezone) + // Formato YYYY-MM-DD permite comparação lexicográfica + if (args.dataFim < args.dataInicio) { throw new Error('Data fim deve ser maior ou igual à data início'); }