import React from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { AlertTriangle, Calendar, Hash, TrendingUp, ExternalLink } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; import { InconsistenciaItem } from '@/hooks/useAuditoriaInconsistencias'; interface InconsistenciaDetalhesModalProps { open: boolean; onOpenChange: (open: boolean) => void; inconsistencia: InconsistenciaItem | null; } export const InconsistenciaDetalhesModal: React.FC = ({ open, onOpenChange, inconsistencia }) => { const navigate = useNavigate(); if (!inconsistencia) return null; const handleNavegar = (rota: string) => { navigate(rota); onOpenChange(false); }; const renderDetalhes = () => { switch (inconsistencia.tipo) { case 'Processo Pulado': return (

Processos Pulados:

{inconsistencia.detalhes.processosPulados.map((processo: string, index: number) => ( {processo} ))}
{inconsistencia.detalhes.apontamentos.length > 0 && (

Apontamentos Existentes:

{inconsistencia.detalhes.apontamentos.map((apt: any, index: number) => (
{apt.processo}
{new Date(apt.data).toLocaleDateString()} {apt.quantidade}
))}
)}
); case 'Quantidade Excedente': return (
Quantidade Cadastrada
{inconsistencia.detalhes.quantidadeCadastrada}
Quantidade Apontada
{inconsistencia.detalhes.quantidadeApontada}
Diferença: +{inconsistencia.detalhes.diferenca} peças

Processo: {inconsistencia.detalhes.processo}

); case 'Expedição sem Processos': return (
Peça expedida sem processos de produção
{inconsistencia.detalhes.romaneios.length > 0 && (

Romaneios de Expedição:

{inconsistencia.detalhes.romaneios.map((romaneio: any, index: number) => (
Quantidade: {romaneio.quantidade_expedida} Peso: {romaneio.peso_total}kg
))}
)}
); case 'Múltiplas Prioridades': return (

Prioridades Encontradas:

{inconsistencia.detalhes.prioridades.map((prioridade: string, index: number) => ( {prioridade} ))}

Recomenda-se manter a peça em apenas uma prioridade para evitar conflitos de programação.

); default: return (
Detalhes não disponíveis para este tipo de inconsistência.
); } }; const getAcoesSugeridas = () => { const acoes: Array<{ label: string; rota: string; descricao: string }> = []; switch (inconsistencia.tipo) { case 'Processo Pulado': acoes.push({ label: 'Ir para Apontamento de Produção', rota: '/apontamento-producao', descricao: 'Adicionar apontamentos dos processos faltantes' }); break; case 'Quantidade Excedente': acoes.push({ label: 'Ir para Cadastro de Peças', rota: '/seletor-of', descricao: 'Corrigir quantidade no cadastro da peça' }); acoes.push({ label: 'Ver Histórico de Apontamentos', rota: '/apontamento-producao', descricao: 'Verificar apontamentos duplicados' }); break; case 'Expedição sem Processos': acoes.push({ label: 'Ir para Apontamento de Produção', rota: '/apontamento-producao', descricao: 'Adicionar apontamentos de produção' }); break; case 'Múltiplas Prioridades': acoes.push({ label: 'Ir para Prioridades de Fabricação', rota: '/prioridades-fabricacao', descricao: 'Remover peça das prioridades desnecessárias' }); break; } return acoes; }; return ( Detalhes da Inconsistência
{/* Informações Básicas */} Informações da Peça
Marca:

{inconsistencia.marca}

Tipo: {inconsistencia.tipo}
Descrição:

{inconsistencia.descricao}

{/* Detalhes Específicos */} Detalhes {renderDetalhes()} {/* Ações Sugeridas */} {inconsistencia.acaoSugerida && ( Ação Sugerida {inconsistencia.acaoSugerida}
{getAcoesSugeridas().map((acao, index) => ( ))}
)}
); };