-- =============================================
-- Author:      System
-- Create date: 2025-12-31
-- Description: Adds permissions for new financial reports with hierarchy.
-- =============================================

DO $$
DECLARE
    v_reportes_id INT;
    v_financieros_id INT;
BEGIN
    -- 1. Ensure Root Module 'Reportes' exists
    SELECT id INTO v_reportes_id FROM modulos WHERE nombre = 'Reportes';
    
    IF v_reportes_id IS NULL THEN
        INSERT INTO modulos (nombre, icono, orden, activo) 
        VALUES ('Reportes', 'bi bi-file-earmark-text', 90, true)
        RETURNING id INTO v_reportes_id;
    END IF;

    -- 2. Create Sub-Module 'Reportes Financieros'
    SELECT id INTO v_financieros_id FROM modulos WHERE nombre = 'Reportes Financieros' AND parent_id = v_reportes_id;

    IF v_financieros_id IS NULL THEN
        INSERT INTO modulos (nombre, icono, orden, activo, parent_id) 
        VALUES ('Reportes Financieros', 'bi bi-cash-coin', 1, true, v_reportes_id)
        RETURNING id INTO v_financieros_id;
    END IF;

    -- 3. Add Permissions (Menu Items) linked to 'Reportes Financieros'
    
    -- Arqueo de Caja (Move if exists or insert)
    IF EXISTS (SELECT 1 FROM permisos WHERE codigo = 'reportes.arqueo') THEN
        UPDATE permisos SET modulo_id = v_financieros_id WHERE codigo = 'reportes.arqueo';
    ELSE
        INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu)
        VALUES (v_financieros_id, 'reportes.arqueo', 'Arqueo de Caja', 'Cierre diario de caja', '/Reportes/ArqueoCaja', 'bi bi-calculator', 1, true);
    END IF;

    -- Movimientos
    IF EXISTS (SELECT 1 FROM permisos WHERE codigo = 'reportes.movimientos') THEN
        UPDATE permisos SET modulo_id = v_financieros_id WHERE codigo = 'reportes.movimientos';
    ELSE
        INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu)
        VALUES (v_financieros_id, 'reportes.movimientos', 'Movimientos de Caja', 'Detalle de ingresos y egresos', '/Reportes/Movimientos', 'bi bi-list-check', 2, true);
    END IF;

    -- Histórico de Saldos
    IF EXISTS (SELECT 1 FROM permisos WHERE codigo = 'reportes.saldos') THEN
        UPDATE permisos SET modulo_id = v_financieros_id WHERE codigo = 'reportes.saldos';
    ELSE
        INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu)
        VALUES (v_financieros_id, 'reportes.saldos', 'Histórico de Saldos', 'Evolución diaria del saldo', '/Reportes/HistoricoSaldos', 'bi bi-graph-up', 3, true);
    END IF;

    -- Gastos por Categoría
    IF EXISTS (SELECT 1 FROM permisos WHERE codigo = 'reportes.gastos') THEN
        UPDATE permisos SET modulo_id = v_financieros_id WHERE codigo = 'reportes.gastos';
    ELSE
        INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu)
        VALUES (v_financieros_id, 'reportes.gastos', 'Gastos por Categoría', 'Análisis de gastos', '/Reportes/GastosCategoria', 'bi bi-pie-chart', 4, true);
    END IF;

    -- Reposiciones
    IF EXISTS (SELECT 1 FROM permisos WHERE codigo = 'reportes.reposiciones') THEN
        UPDATE permisos SET modulo_id = v_financieros_id WHERE codigo = 'reportes.reposiciones';
    ELSE
        INSERT INTO permisos (modulo_id, codigo, nombre, descripcion, url, icono, orden, es_menu)
        VALUES (v_financieros_id, 'reportes.reposiciones', 'Reposiciones', 'Reporte de reintegros', '/Reportes/Reposiciones', 'bi bi-cash-stack', 5, true);
    END IF;

END $$;
