"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { ArrowLeft, Printer, Plus, Minus, Calendar, DollarSign, FileText, AlertCircle, ExternalLink, MessageSquare, } from "lucide-react" // Tipos interface TramiteVersion { id: string versionNro: string nombre: string formaJuridica: string organismo: string jurisdiccion: string fechaRealizacion: string documentacion: string requiereCertificaciones: boolean certificacionesDetalle: string pasoAPaso: string costos: Array<{ descripcion: string monto: string moneda: string observacion: string }> comentariosInternos: string linkGuia: string dondeSeRealiza: string adjuntos: Array<{ id: string tipo: string titulo: string }> } interface VersionOption { id: string versionNro: string fecha: string } interface CompararVersionesProps { versionActual: TramiteVersion versionesDisponibles: VersionOption[] versionComparar?: TramiteVersion onVersionChange?: (versionId: string) => void onVolver?: () => void onImprimir?: () => void } // Datos de ejemplo const versionActualEjemplo: TramiteVersion = { id: "v3", versionNro: "3.0", nombre: "Inscripción AFIP - Responsable Inscripto", formaJuridica: "SRL", organismo: "AFIP", jurisdiccion: "Nación", fechaRealizacion: "2024-01-10", documentacion: `**Documentación requerida:** - DNI del representante legal - Estatuto social actualizado - Constancia de inscripción en IGJ - Comprobante de domicilio fiscal - Formulario 460/F completo - Certificado de habilitación municipal **Requisitos adicionales:** - Clave fiscal nivel 3 o superior - Domicilio fiscal habilitado`, requiereCertificaciones: true, certificacionesDetalle: "Certificación de firma por escribano público para el representante legal", pasoAPaso: `**Procedimiento paso a paso:** 1. Ingresar a [AFIP con Clave Fiscal](https://auth.afip.gob.ar) 2. Seleccionar "Sistema Registral" → "Registro Tributario" 3. Completar Formulario 460/F con los datos de la sociedad 4. Adjuntar documentación digitalizada 5. Enviar solicitud y aguardar número de trámite 6. Descargar constancia de inicio de trámite 7. Aguardar resolución (5-10 días hábiles) 8. Descargar constancia de inscripción definitiva 9. Verificar datos en el sistema`, costos: [ { descripcion: "Tasa administrativa AFIP", monto: "15000", moneda: "ARS", observacion: "Pago único al momento de inscripción", }, { descripcion: "Certificación escribano", monto: "25000", moneda: "ARS", observacion: "Varía según escribanía", }, { descripcion: "Tasa municipal", monto: "8000", moneda: "ARS", observacion: "Solo para CABA", }, ], comentariosInternos: "Recordar que el trámite puede demorar más en época de vencimientos. Verificar siempre que el domicilio fiscal esté habilitado antes de iniciar. Actualizado con nuevos requisitos 2024.", linkGuia: "https://www.afip.gob.ar/genericos/guiavirtual/inscripcion_2024.asp", dondeSeRealiza: "Virtual", adjuntos: [ { id: "1", tipo: "Modelo", titulo: "Formulario 460F - Modelo completo.pdf" }, { id: "2", tipo: "Normativa", titulo: "RG AFIP 4120 - Inscripción RI.pdf" }, { id: "3", tipo: "Interno", titulo: "Checklist interno - Inscripción AFIP.xlsx" }, { id: "4", tipo: "Normativa", titulo: "RG AFIP 5250 - Actualización 2024.pdf" }, ], } const versionAnteriorEjemplo: TramiteVersion = { id: "v2", versionNro: "2.0", nombre: "Inscripción AFIP - Responsable Inscripto", formaJuridica: "SRL", organismo: "AFIP", jurisdiccion: "Nación", fechaRealizacion: "2023-11-10", documentacion: `**Documentación requerida:** - DNI del representante legal - Estatuto social actualizado - Constancia de inscripción en IGJ - Comprobante de domicilio fiscal - Formulario 460/F completo **Requisitos adicionales:** - Clave fiscal nivel 3 o superior - Domicilio fiscal habilitado`, requiereCertificaciones: true, certificacionesDetalle: "Certificación de firma por escribano público para el representante legal", pasoAPaso: `**Procedimiento paso a paso:** 1. Ingresar a [AFIP con Clave Fiscal](https://auth.afip.gob.ar) 2. Seleccionar "Sistema Registral" → "Registro Tributario" 3. Completar Formulario 460/F con los datos de la sociedad 4. Adjuntar documentación digitalizada 5. Enviar solicitud y aguardar número de trámite 6. Descargar constancia de inicio de trámite 7. Aguardar resolución (5-10 días hábiles) 8. Descargar constancia de inscripción definitiva`, costos: [ { descripcion: "Tasa administrativa AFIP", monto: "12000", moneda: "ARS", observacion: "Pago único al momento de inscripción", }, { descripcion: "Certificación escribano", monto: "20000", moneda: "ARS", observacion: "Varía según escribanía", }, ], comentariosInternos: "Recordar que el trámite puede demorar más en época de vencimientos. Verificar siempre que el domicilio fiscal esté habilitado antes de iniciar.", linkGuia: "https://www.afip.gob.ar/genericos/guiavirtual/", dondeSeRealiza: "Virtual", adjuntos: [ { id: "1", tipo: "Modelo", titulo: "Formulario 460F - Modelo completo.pdf" }, { id: "2", tipo: "Normativa", titulo: "RG AFIP 4120 - Inscripción RI.pdf" }, { id: "3", tipo: "Interno", titulo: "Checklist interno - Inscripción AFIP.xlsx" }, ], } const versionesDisponiblesEjemplo: VersionOption[] = [ { id: "v2", versionNro: "2.0", fecha: "2023-11-10" }, { id: "v1", versionNro: "1.0", fecha: "2023-06-15" }, ] // Función para detectar diferencias en texto function detectarDiferenciasTexto(textoAnterior: string, textoActual: string) { const lineasAnteriores = textoAnterior.split("\n") const lineasActuales = textoActual.split("\n") const resultado = { anterior: [] as Array<{ texto: string; tipo: "igual" | "eliminado" | "modificado" }>, actual: [] as Array<{ texto: string; tipo: "igual" | "agregado" | "modificado" }>, } const maxLineas = Math.max(lineasAnteriores.length, lineasActuales.length) for (let i = 0; i < maxLineas; i++) { const lineaAnterior = lineasAnteriores[i] || "" const lineaActual = lineasActuales[i] || "" if (lineaAnterior === lineaActual) { resultado.anterior.push({ texto: lineaAnterior, tipo: "igual" }) resultado.actual.push({ texto: lineaActual, tipo: "igual" }) } else if (!lineaActual && lineaAnterior) { resultado.anterior.push({ texto: lineaAnterior, tipo: "eliminado" }) } else if (!lineaAnterior && lineaActual) { resultado.actual.push({ texto: lineaActual, tipo: "agregado" }) } else { resultado.anterior.push({ texto: lineaAnterior, tipo: "modificado" }) resultado.actual.push({ texto: lineaActual, tipo: "modificado" }) } } return resultado } // Componente para mostrar texto con diferencias function TextoDiferencias({ lineas, }: { lineas: Array<{ texto: string; tipo: "igual" | "eliminado" | "agregado" | "modificado" }> }) { return (
{versionActual.nombre}
Versión anterior
Versión actual
{versionComparar.dondeSeRealiza}
{versionComparar.certificacionesDetalle}
{versionActual.dondeSeRealiza}
{versionActual.certificacionesDetalle}
{costo.descripcion}
{costo.moneda} ${Number(costo.monto).toLocaleString("es-AR")}
{costo.observacion}
)}{costoAnterior?.descripcion}
{costoAnterior?.moneda} ${Number(costoAnterior?.monto).toLocaleString("es-AR")}
{costoAnterior.observacion}
)}{costoActual.descripcion}
{costoActual.moneda} ${Number(costoActual.monto).toLocaleString("es-AR")}
{costoActual.observacion}
)}{costo.descripcion}
{costo.moneda} ${Number(costo.monto).toLocaleString("es-AR")}
{costo.observacion}
)}{adjunto.titulo}
{adjunto.titulo}
{adjunto.titulo}
{adjunto.titulo}