+ {isPlanRequirementsLoading ? (
+
+
+
+ ) : planRequirements && planRequirements.length > 0 ? (
+
+ {planRequirements.map((requirement) => (
+ p.id === selectedPlanForRequirements)?.plan_number || 'N/A'}`}
+ primaryValue={requirement.required_quantity}
+ primaryValueLabel={requirement.unit_of_measure}
+ secondaryInfo={{
+ label: 'Límite',
+ value: new Date(requirement.required_by_date).toLocaleDateString('es-ES', { day: '2-digit', month: '2-digit' })
+ }}
+ progress={requirement.current_stock_level && requirement.required_quantity ? {
+ label: `${Math.round((requirement.current_stock_level / requirement.required_quantity) * 100)}% cubierto`,
+ percentage: Math.min((requirement.current_stock_level / requirement.required_quantity) * 100, 100),
+ color: requirement.current_stock_level >= requirement.required_quantity ? '#10b981' : requirement.current_stock_level >= requirement.required_quantity * 0.5 ? '#f59e0b' : '#ef4444'
+ } : undefined}
+ metadata={[
+ `Stock: ${requirement.current_stock_level || 0} ${requirement.unit_of_measure}`,
+ `Necesario: ${requirement.required_quantity - (requirement.current_stock_level || 0)} ${requirement.unit_of_measure}`,
+ `Costo: €${formatters.compact(requirement.estimated_total_cost || 0)}`,
+ `Días restantes: ${Math.ceil((new Date(requirement.required_by_date).getTime() - Date.now()) / (1000 * 60 * 60 * 24))}`,
+ `Estado: ${requirement.status || 'N/A'}`,
+ `PO: ${requirement.purchase_order_number || 'Sin PO asignado'}`,
+ `Prioridad: ${requirement.priority || 'N/A'}`
+ ]}
+ actions={[
+ {
+ label: 'Ver Detalles',
+ icon: Eye,
+ variant: 'primary',
+ priority: 'primary',
+ onClick: () => console.log('View requirement details', requirement)
+ },
+ ...(requirement.purchase_order_number ? [
+ {
+ label: 'Ver PO',
+ icon: Eye,
+ variant: 'outline' as const,
+ priority: 'secondary' as const,
+ onClick: () => console.log('View PO', requirement.purchase_order_number)
+ }
+ ] : [
+ {
+ label: 'Crear PO',
+ icon: Plus,
+ variant: 'outline' as const,
+ priority: 'secondary' as const,
+ onClick: () => console.log('Create PO for', requirement)
+ }
+ ]),
+ {
+ label: requirement.supplier_name ? 'Cambiar Proveedor' : 'Asignar Proveedor',
+ icon: Building2,
+ variant: 'outline' as const,
+ priority: 'secondary' as const,
+ onClick: () => console.log('Assign supplier')
+ }
+ ]}
+ />
+ ))}
+
+ ) : (
+
+
+
+ No hay requerimientos críticos
+
+
+ Este plan no tiene requerimientos críticos en este momento
+
+
+ )}
+