feat: add period adjustment fields to point processing and PDF generation, enhancing data capture and display for time adjustments
This commit is contained in:
@@ -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 & {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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'>;
|
||||
|
||||
Reference in New Issue
Block a user