// data/herramientasData.js
import Acta from "@/views/herramientas/componentes/acta_constitucion";
import LiquidadorGananciaOcasional from "@/views/herramientas/componentes/liquidador-ganancia-ocasional";
import LiquidadorLaboral from "@/views/herramientas/componentes/LiquidadorLaboral";

export const herramientasData = {
    actas: [
        {
            slug: 'acta-constitucion',
            icon: 'description',
            title: 'Generador de Actas de Constitución',
            description: 'Crea actas de constitución personalizadas para diferentes tipos societarios en Colombia',
            categoria: 'actas',
            status: 'active',
            color: 'blue',
            componente: Acta,
            config: {
                tipos_sociedad: ['SAS', 'LTDA', 'SA', 'SCS'],
                tienePlantillas: true,
                permiteDescarga: true,
                formatoSalida: ['pdf', 'docx'],
                campos_requeridos: ['razon_social', 'tipo_sociedad', 'capital', 'socios']
            }
        },
        {
            slug: 'acta-modificatoria',
            icon: 'edit_document',
            title: 'Acta Modificatoria',
            description: 'Genera actas para modificar estatutos, capital social o representación legal',
            categoria: 'actas',
            status: 'soon',
            color: 'indigo',
            config: {
                tipos_modificacion: ['capital_social', 'estatutos', 'representante_legal', 'objeto_social'],
                requiere_acta_original: true
            }
        },
        {
            slug: 'acta-asamblea',
            icon: 'groups',
            title: 'Acta de Asamblea',
            description: 'Crea actas de asamblea de accionistas o junta directiva',
            categoria: 'actas',
            status: 'soon',
            color: 'purple',
            config: {
                tipos_asamblea: ['ordinaria', 'extraordinaria'],
                campos: ['fecha', 'lugar', 'asistentes', 'decisiones']
            }
        }
    ],
    liquidadores: [
        {
            slug: 'liquidador-ganancia-ocasional',
            icon: 'real_estate_agent',
            title: 'Liquidador de Ganancia Ocasional',
            description: 'Calcula el impuesto por ganancias ocasionales en venta de inmuebles para personas naturales no obligadas a llevar contabilidad',
            categoria: 'liquidadores',
            status: 'active',
            color: 'teal',
            componente: LiquidadorGananciaOcasional,
            config: {
                campos: [
                    'tipo_inmueble',
                    'valor_venta',
                    'valor_adquisicion',
                    'fecha_adquisicion',
                    'fecha_venta',
                    'mejoras',
                    'gastos_notariales',
                    'otros_gastos',
                    'ica_pagado'
                ],
                calculos: [
                    'ganancia_bruta',
                    'costo_total',
                    'impuesto_ganancia',
                    'impuesto_neto',
                    'ganancia_neta',
                    'tiempo_posesion'
                ],
                tasas: {
                    'habitacional': 0.10,
                    'comercial': 0.15,
                    'industrial': 0.15,
                    'rural': 0.10,
                    'lote': 0.15
                },
                aplica_para: 'personas_naturales_sin_contabilidad',
                formulario_dian: '210'
            }
        },
        {
            slug: 'liquidador-laboral',
            icon: 'calculate',
            title: 'Liquidador Laboral',
            description: 'Calcula la liquidación de un empleado según la legislación laboral colombiana',
            categoria: 'liquidadores',
            status: 'active',
            color: 'green',
            componente: LiquidadorLaboral,
            config: {
                prestaciones_sociales: [
                    'cesantias',
                    'intereses_cesantias',
                    'prima_servicios',
                    'vacaciones'
                ],
                deducciones: [
                    'salud',
                    'pension',
                    'fondo_solidaridad',
                    'retencion_fuente'
                ],
                topes: {
                    'fondo_solidaridad': 4 // salarios mínimos
                }
            }
        },
        {
            slug: 'liquidador-impuestos',
            icon: 'account_balance',
            title: 'Liquidador de Impuestos',
            description: 'Calcula impuestos nacionales y municipales: IVA, renta, industria y comercio',
            categoria: 'liquidadores',
            status: 'soon',
            color: 'blue',
            config: {
                impuestos: [
                    'iva',
                    'renta_personas_naturales',
                    'renta_personas_juridicas',
                    'industria_comercio',
                    'predial',
                    'vehiculos'
                ],
                periodos: ['mensual', 'bimestral', 'anual'],
                formularios: ['100', '110', '210', '300']
            }
        },
        {
            slug: 'liquidador-prestaciones',
            icon: 'payments',
            title: 'Liquidador de Prestaciones Sociales',
            description: 'Calcula cesantías, primas, vacaciones e intereses según la ley laboral colombiana',
            categoria: 'liquidadores',
            status: 'soon',
            color: 'amber',
            config: {
                prestaciones: [
                    'cesantias',
                    'intereses_cesantias',
                    'prima_servicios',
                    'vacaciones',
                    'liquidacion_contrato'
                ],
                formulas: {
                    'cesantias': 'salario * dias_trabajados / 360',
                    'intereses_cesantias': 'cesantias * 0.12 * dias_trabajados / 360',
                    'prima_servicios': 'salario * dias_trabajados / 360',
                    'vacaciones': 'salario * dias_trabajados / 720'
                }
            }
        },
        {
            slug: 'liquidador-parafiscales',
            icon: 'trending_up',
            title: 'Liquidador de Parafiscales',
            description: 'Calcula aportes parafiscales: SENA, ICBF y cajas de compensación familiar',
            categoria: 'liquidadores',
            status: 'soon',
            color: 'lime',
            config: {
                entidades: [
                    'sena',
                    'icbf',
                    'cajas_compensacion'
                ],
                tasas: {
                    'sena': 0.02,
                    'icbf': 0.03,
                    'cajas_compensacion': 0.04
                }
            }
        }
    ],
    varias: [
        {
            slug: 'recordatorios-tributarios',
            icon: 'schedule',
            title: 'Recordatorios Tributarios',
            description: 'Never misses fechas importantes de declaraciones y pagos tributarios',
            categoria: 'varias',
            status: 'soon',
            color: 'fuchsia',
            config: {
                recordatorios: [
                    'declaracion_renta',
                    'iva_bimestral',
                    'industria_comercio',
                    'retencion_fuente',
                    'nomina_mensual',
                    'parafiscales'
                ],
                notificaciones: ['email', 'push', 'sms']
            }
        },
        {
            slug: 'validador-documentos',
            icon: 'verified_user',
            title: 'Validador de Documentos',
            description: 'Verifica la validez de documentos contables y legales',
            categoria: 'varias',
            status: 'soon',
            color: 'red',
            config: {
                documentos_validables: [
                    'facturas_electronicas',
                    'retenciones',
                    'actas',
                    'estatutos',
                    'rut',
                    'camara_comercio'
                ],
                integracion_dian: true
            }
        }
    ]
};

// Función helper para obtener herramienta por slug
export const getHerramientaBySlug = (slug) => {
    for (const categoria in herramientasData) {
        const herramienta = herramientasData[categoria].find(h => h.slug === slug);
        if (herramienta) return herramienta;
    }
    return null;
};

// Obtener todas las herramientas activas
export const getHerramientasActivas = () => {
    const activas = [];
    Object.keys(herramientasData).forEach(categoria => {
        herramientasData[categoria].forEach(herramienta => {
            if (herramienta.status === 'active') {
                activas.push(herramienta);
            }
        });
    });
    return activas;
};

// Obtener herramientas por categoría
export const getHerramientasPorCategoria = (categoria) => {
    return herramientasData[categoria]?.filter(h => h.status === 'active') || [];
};

// Obtener todas las categorías disponibles
export const getCategorias = () => {
    return Object.keys(herramientasData);
};

// Verificar si una herramienta existe
export const existeHerramienta = (slug) => {
    for (const categoria in herramientasData) {
        if (herramientasData[categoria].some(h => h.slug === slug)) {
            return true;
        }
    }
    return false;
};