Imporve the predicciones page

This commit is contained in:
Urtzi Alfaro
2025-09-20 22:11:05 +02:00
parent abe7cf2444
commit 38d314e28d
14 changed files with 1659 additions and 364 deletions

View File

@@ -8,6 +8,7 @@ import {
useProcurementPlans,
useCurrentProcurementPlan,
useCriticalRequirements,
usePlanRequirements,
useGenerateProcurementPlan,
useUpdateProcurementPlanStatus,
useTriggerDailyScheduler
@@ -22,7 +23,9 @@ const ProcurementPage: React.FC = () => {
const [selectedPlan, setSelectedPlan] = useState<any>(null);
const [editingPlan, setEditingPlan] = useState<any>(null);
const [editFormData, setEditFormData] = useState<any>({});
const [selectedPlanForRequirements, setSelectedPlanForRequirements] = useState<string | null>(null);
const [showCriticalRequirements, setShowCriticalRequirements] = useState(false);
const { currentTenant } = useTenantStore();
const tenantId = currentTenant?.id || '';
@@ -35,6 +38,15 @@ const ProcurementPage: React.FC = () => {
});
const { data: currentPlan, isLoading: isCurrentPlanLoading } = useCurrentProcurementPlan(tenantId);
const { data: criticalRequirements, isLoading: isCriticalLoading } = useCriticalRequirements(tenantId);
// Get plan requirements for selected plan
const { data: planRequirements, isLoading: isPlanRequirementsLoading } = usePlanRequirements({
tenant_id: tenantId,
plan_id: selectedPlanForRequirements || '',
status: 'critical' // Only get critical requirements
}, {
enabled: !!selectedPlanForRequirements && !!tenantId
});
const generatePlanMutation = useGenerateProcurementPlan();
const updatePlanStatusMutation = useUpdateProcurementPlanStatus();
@@ -107,6 +119,16 @@ const ProcurementPage: React.FC = () => {
setEditFormData({});
};
const handleShowCriticalRequirements = (planId: string) => {
setSelectedPlanForRequirements(planId);
setShowCriticalRequirements(true);
};
const handleCloseCriticalRequirements = () => {
setShowCriticalRequirements(false);
setSelectedPlanForRequirements(null);
};
if (!tenantId) {
return (
<div className="flex justify-center items-center h-64">
@@ -391,6 +413,15 @@ const ProcurementPage: React.FC = () => {
}
});
// Show Critical Requirements button
actions.push({
label: 'Req. Críticos',
icon: AlertCircle,
variant: 'outline' as const,
priority: 'secondary' as const,
onClick: () => handleShowCriticalRequirements(plan.id)
});
// Tertiary action: Cancel (least prominent, destructive)
if (!['completed', 'cancelled'].includes(plan.status)) {
actions.push({