import React, { useState } from 'react'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Search, Package } from 'lucide-react'; import { useApontamentosProducao } from '@/hooks/useApontamentosProducao'; import { format } from 'date-fns'; import { ptBR } from 'date-fns/locale'; export const ApontamentosList = () => { const { apontamentos, loading } = useApontamentosProducao(); const [filtroOF, setFiltroOF] = useState(''); const [filtroProcesso, setFiltroProcesso] = useState(''); const [filtroData, setFiltroData] = useState(''); const [filtroPecaComponente, setFiltroPecaComponente] = useState(''); const apontamentosFiltrados = apontamentos.filter(apt => { const matchOF = !filtroOF || apt.of_number.toLowerCase().includes(filtroOF.toLowerCase()); const matchProcesso = !filtroProcesso || apt.processo?.nome.toLowerCase().includes(filtroProcesso.toLowerCase()); const matchData = !filtroData || apt.data_apontamento.includes(filtroData); // Filtro por peça/componente - busca na marca da peça ou componente const matchPecaComponente = !filtroPecaComponente || getMarcaExibida(apt).toLowerCase().includes(filtroPecaComponente.toLowerCase()); return matchOF && matchProcesso && matchData && matchPecaComponente; }); // Função para determinar a marca exibida baseada no tipo de apontamento const getMarcaExibida = (apontamento: any) => { if (apontamento.tipo_apontamento === 'componente' && apontamento.componente?.marca_componente) { return apontamento.componente.marca_componente; } if (apontamento.tipo_apontamento === 'peca' && apontamento.peca?.marca) { return apontamento.peca.marca; } return 'N/A'; }; // Função para calcular peso total baseado no tipo correto (peça ou componente) const calcularPesoTotal = (apontamento: any) => { let pesoUnitario = 0; if (apontamento.tipo_apontamento === 'componente' && apontamento.componente?.peso_unitario) { pesoUnitario = Number(apontamento.componente.peso_unitario); } else if (apontamento.tipo_apontamento === 'peca' && apontamento.peca?.peso_unitario) { pesoUnitario = Number(apontamento.peca.peso_unitario); } const quantidade = Number(apontamento.quantidade_produzida) || 0; const pesoTotal = pesoUnitario * quantidade; console.log(`Apontamento ${apontamento.id}: Tipo: ${apontamento.tipo_apontamento}, Peso unitário: ${pesoUnitario}, Quantidade: ${quantidade}, Peso total: ${pesoTotal}`); return pesoTotal.toFixed(3); }; // Função para obter a descrição correta baseada no tipo const getDescricaoExibida = (apontamento: any) => { if (apontamento.tipo_apontamento === 'componente' && apontamento.componente?.descricao) { return apontamento.componente.descricao; } if (apontamento.tipo_apontamento === 'peca' && apontamento.peca?.descricao) { return apontamento.peca.descricao; } return ''; }; // Calcular totais para debug const pesoTotalApontamentos = apontamentosFiltrados.reduce((total, apt) => { return total + Number(calcularPesoTotal(apt)); }, 0); console.log('Total de peso dos apontamentos filtrados:', pesoTotalApontamentos); if (loading) { return