import React from 'react'; import { useQuery } from '@tanstack/react-query'; import { supabase } from '@/integrations/supabase/client'; import { Skeleton } from '@/components/ui/skeleton'; interface MateriaisCriticosReportProps { filters: any; } export const MateriaisCriticosReport: React.FC = ({ filters }) => { const { data: materiaisCriticos = [], isLoading } = useQuery({ queryKey: ['relatorio-materiais-criticos', filters], queryFn: async () => { let query = supabase .from('estoque_materiais') .select('*') .or('status.eq.Crítico,quantidade_disponivel.lt.quantidade_minima'); if (filters.descricao_material) { query = query.ilike('descricao', `%${filters.descricao_material}%`); } const { data, error } = await query; if (error) throw error; return data || []; } }); if (isLoading) { return ; } return (

Relatório de Materiais Críticos

Gerado em: {new Date().toLocaleString('pt-BR')}

⚠️ {materiaisCriticos.length} materiais com estoque crítico identificados

{materiaisCriticos.map((material, index) => { const diferenca = (material.quantidade_disponivel || 0) - (material.quantidade_minima || 0); const isUrgente = diferenca <= 0; return ( ); })}
Código Descrição Qtd Atual Estoque Mín. Diferença Status Ação Necessária
{material.codigo || '-'} {material.descricao} {material.quantidade_disponivel?.toFixed(2) || '0'} {material.quantidade_minima?.toFixed(2) || '0'} {diferenca.toFixed(2)} {isUrgente ? 'URGENTE' : 'CRÍTICO'} Comprar {Math.abs(diferenca).toFixed(2)} {material.unidade || 'un'}
{materiaisCriticos.length === 0 && (

✅ Nenhum material crítico encontrado!

Todos os materiais estão com estoque adequado.

)}
); };