feat: pagina /tareas + quitar completar obligaciones fiscales

- Nueva pagina /tareas para ver y marcar tareas operativas
- Endpoint GET /tareas/mis-tareas con periodo actual
- Quitado boton de marcar completada de obligaciones fiscales en /pendientes
This commit is contained in:
Horux Dev
2026-05-23 23:41:28 +00:00
parent e8b0733304
commit bba000d308
4 changed files with 299 additions and 35 deletions

View File

@@ -0,0 +1,31 @@
import { apiClient } from './client';
export interface TareaConContribuyente {
id: string;
contribuyenteId: string;
contribuyenteRfc: string;
contribuyenteRazonSocial: string;
nombre: string;
descripcion: string | null;
recurrencia: string;
diaSemana: number | null;
diaMes: number | null;
soloSupervisorCompleta: boolean;
esDefault: boolean;
active: boolean;
orden: number;
createdAt: string;
auxiliarAsignadoId?: string | null;
periodoActual: {
id: string;
periodo: string;
fechaLimite: string;
completada: boolean;
completadaAt: string | null;
completadaPor: string | null;
notas: string | null;
} | null;
}
export const getMisTareas = () =>
apiClient.get<TareaConContribuyente[]>('/tareas/mis-tareas').then(r => r.data);

View File

@@ -0,0 +1,37 @@
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { getMisTareas } from '../api/tareas-mis';
import { apiClient } from '../api/client';
export function useMisTareas() {
return useQuery({
queryKey: ['tareas-mis-tareas'],
queryFn: getMisTareas,
});
}
export function useCompletarTareaPeriodo() {
const qc = useQueryClient();
return useMutation({
mutationFn: (periodoId: string) =>
apiClient.post(`/tareas/periodo/${periodoId}/completar`).then(r => r.data),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['tareas-mis-tareas'] });
qc.invalidateQueries({ queryKey: ['tareas'] });
},
onError: (err: any) => {
alert(err.response?.data?.message || 'No se pudo marcar como completada');
},
});
}
export function useDescompletarTareaPeriodo() {
const qc = useQueryClient();
return useMutation({
mutationFn: (periodoId: string) =>
apiClient.delete(`/tareas/periodo/${periodoId}/completar`).then(r => r.data),
onSuccess: () => {
qc.invalidateQueries({ queryKey: ['tareas-mis-tareas'] });
qc.invalidateQueries({ queryKey: ['tareas'] });
},
});
}