diff --git a/apps/web/src/lib/utils/ponto/pdf/geradorPDF.ts b/apps/web/src/lib/utils/ponto/pdf/geradorPDF.ts index a87a0f0..48066c6 100644 --- a/apps/web/src/lib/utils/ponto/pdf/geradorPDF.ts +++ b/apps/web/src/lib/utils/ponto/pdf/geradorPDF.ts @@ -541,20 +541,48 @@ function gerarSecaoAjustesPDF(doc: jsPDF, yPosition: number, dias: DiaFichaPonto doc.setTextColor(0, 0, 0); yPosition += 10; + // Função auxiliar para formatar período do ajuste + const formatarPeriodoAjuste = (ajuste: (typeof todosAjustes)[number]): string => { + if ( + ajuste.dataInicio && + ajuste.horaInicio !== undefined && + ajuste.minutoInicio !== undefined && + ajuste.dataFim && + ajuste.horaFim !== undefined && + ajuste.minutoFim !== undefined + ) { + const inicioStr = `${formatarDataDDMMAAAA(ajuste.dataInicio)} ${formatarHoraPonto( + ajuste.horaInicio, + ajuste.minutoInicio + )}`; + const fimStr = `${formatarDataDDMMAAAA(ajuste.dataFim)} ${formatarHoraPonto( + ajuste.horaFim, + ajuste.minutoFim + )}`; + return `${inicioStr} a ${fimStr}`; + } + // Fallback para ajustes antigos sem período + return formatarDataDDMMAAAA(ajuste.data); + }; + const ajustesData = todosAjustes.map((ajuste) => [ formatarDataDDMMAAAA(ajuste.data), ajuste.tipo === 'abonar' ? 'Abonar' : ajuste.tipo === 'descontar' ? 'Descontar' : 'Compensar', formatarMinutos(ajuste.valorMinutos), + formatarPeriodoAjuste(ajuste), ajuste.motivoDescricao || '-' ]); autoTable(doc, { startY: yPosition, - head: [['Data', 'Tipo', 'Valor', 'Motivo']], + head: [['Data Aplicação', 'Tipo', 'Valor', 'Período', 'Motivo']], body: ajustesData, theme: 'grid', headStyles: { fillColor: [41, 128, 185], fontStyle: 'bold' }, - styles: { fontSize: 9 } + styles: { fontSize: 9 }, + columnStyles: { + 3: { cellWidth: 'auto', minCellWidth: 60 } // Coluna de período com largura maior + } }); type JsPDFWithAutoTable = jsPDF & { diff --git a/apps/web/src/lib/utils/ponto/processamento.ts b/apps/web/src/lib/utils/ponto/processamento.ts index 8f40993..09daea2 100644 --- a/apps/web/src/lib/utils/ponto/processamento.ts +++ b/apps/web/src/lib/utils/ponto/processamento.ts @@ -598,7 +598,13 @@ export async function processarDadosFichaPonto( tipo: a.tipo, valorMinutos: a.valorMinutos, motivoDescricao: a.motivoDescricao, - gestorId: a.gestorId + gestorId: a.gestorId, + dataInicio: a.dataInicio, + horaInicio: a.horaInicio, + minutoInicio: a.minutoInicio, + dataFim: a.dataFim, + horaFim: a.horaFim, + minutoFim: a.minutoFim })), inconsistencias: inconsistenciasDia.map((i) => ({ _id: i._id, diff --git a/apps/web/src/lib/utils/ponto/tipos.ts b/apps/web/src/lib/utils/ponto/tipos.ts index a70e86d..5895911 100644 --- a/apps/web/src/lib/utils/ponto/tipos.ts +++ b/apps/web/src/lib/utils/ponto/tipos.ts @@ -60,6 +60,13 @@ export interface DiaFichaPonto { valorMinutos: number; motivoDescricao?: string; gestorId?: Id<'usuarios'>; + // Período do ajuste + dataInicio?: string; // YYYY-MM-DD + horaInicio?: number; // 0-23 + minutoInicio?: number; // 0-59 + dataFim?: string; // YYYY-MM-DD + horaFim?: number; // 0-23 + minutoFim?: number; // 0-59 }>; inconsistencias: Array<{ _id: Id<'inconsistenciasBancoHoras'>; diff --git a/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/homologacao/+page.svelte b/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/homologacao/+page.svelte index 40ca808..812df10 100644 --- a/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/homologacao/+page.svelte +++ b/apps/web/src/routes/(dashboard)/recursos-humanos/controle-ponto/homologacao/+page.svelte @@ -264,6 +264,10 @@ return; } + // Converter hora formato HH:mm para hora e minuto + const { hora: horaInicio, minuto: minutoInicio } = timeParaHoraMinuto(horaInicioAjuste); + const { hora: horaFim, minuto: minutoFim } = timeParaHoraMinuto(horaFimAjuste); + try { await client.mutation(api.pontos.ajustarBancoHoras, { funcionarioId: funcionarioSelecionado, @@ -271,6 +275,13 @@ periodoDias: dias, periodoHoras: horas, periodoMinutos: minutos, + dataAplicacao: dataInicioAjuste, // Data escolhida pelo usuário + dataInicio: dataInicioAjuste, + horaInicio, + minutoInicio, + dataFim: dataFimAjuste, + horaFim, + minutoFim, motivoId: motivoId || undefined, motivoTipo: motivoTipo || undefined, motivoDescricao: motivoDescricao || undefined, @@ -910,7 +921,11 @@ {#each homologacoes as homologacao (homologacao._id)}