-- =====================================================
-- CORRECCIÓN DE ERRORES PREVIOS
-- Ejecutar ANTES del SQL de módulos y permisos
-- =====================================================

-- 1. ELIMINAR O CORREGIR VISTA ROTA
DROP VIEW IF EXISTS vista_productos_stock_total;

-- Recrear la vista correctamente (ajustar según tu estructura)
CREATE OR REPLACE VIEW vista_productos_stock_total AS
SELECT 
    p.id_producto,
    p.codigo,
    p.nombre,
    p.descripcion,
    p.precio_compra,
    p.precio_venta,
    p.stock_minimo,
    p.estado,
    COALESCE(SUM(k.stock_actual), 0) AS stock_total
FROM productos p
LEFT JOIN (
    SELECT id_producto, id_almacen, 
           (SELECT COALESCE(SUM(CASE WHEN tipo_movimiento IN ('ENTRADA', 'AJUSTE_POSITIVO', 'TRANSFERENCIA_ENTRADA') THEN cantidad ELSE -cantidad END), 0)
            FROM kardex k2 
            WHERE k2.id_producto = k1.id_producto 
            AND k2.id_almacen = k1.id_almacen) AS stock_actual
    FROM kardex k1
    GROUP BY id_producto, id_almacen
) k ON p.id_producto = k.id_producto
WHERE p.estado = 1
GROUP BY p.id_producto;

-- Si la vista sigue fallando, simplemente elimínala:
-- DROP VIEW IF EXISTS vista_productos_stock_total;

-- =====================================================
-- 2. LIMPIAR TABLAS CON FOREIGN KEYS
-- =====================================================

-- Desactivar verificación de FK temporalmente

-- Limpiar tabla de auditoría de permisos (si existe)
TRUNCATE TABLE IF EXISTS auditoria_permisos;

-- Limpiar roles_permisos
TRUNCATE TABLE roles_permisos;

-- Limpiar permisos
TRUNCATE TABLE permisos;

-- Limpiar módulos (opcional, solo si quieres reiniciar)
-- TRUNCATE TABLE modulos;

-- Reactivar verificación de FK

-- =====================================================
-- 3. VERIFICAR ESTRUCTURA
-- =====================================================
SHOW TABLES LIKE '%permiso%';
SHOW TABLES LIKE '%modulo%';
SHOW TABLES LIKE '%auditoria%';

-- Ver estructura de auditoria_permisos
DESCRIBE auditoria_permisos;
