-- =====================================================
-- 00c_extraer_menu_tarjetas_tablas_antiguas.sql
-- Ejecutar en la BD ANTERIOR para obtener INSERTs
-- del módulo de tarjetas (semenuprincipal / semenu / sesubmenu)
-- =====================================================

USE [Sis2000]; -- Cambiar si la BD anterior tiene otro nombre
GO

-- =====================================================
-- PASO 1: INSERT para semenuprincipal (cmenu_principal=16)
-- =====================================================
SELECT
    'IF NOT EXISTS (SELECT 1 FROM semenuprincipal WHERE cmenu_principal = ' + 
    CAST(cmenu_principal AS VARCHAR) + ') ' +
    'INSERT INTO semenuprincipal (cmenu_principal, u_version, xmenu, xicono, xruta, istatus, fingreso) VALUES (' +
    CAST(cmenu_principal AS VARCHAR) + ', ' +
    CASE WHEN u_version IS NULL THEN 'NULL' ELSE '''' + REPLACE(LTRIM(RTRIM(u_version)), '''', '''''') + '''' END + ', ' +
    '''' + REPLACE(LTRIM(RTRIM(ISNULL(xmenu,''))),  '''', '''''') + ''', ' +
    '''' + REPLACE(LTRIM(RTRIM(ISNULL(xicono,''))), '''', '''''') + ''', ' +
    '''' + REPLACE(LTRIM(RTRIM(ISNULL(xruta,''))),  '''', '''''') + ''', ' +
    '''' + ISNULL(LTRIM(RTRIM(istatus)),'V') + ''', ' +
    'GETDATE());' AS insert_sql
FROM semenuprincipal
WHERE cmenu_principal = 16;
GO

-- =====================================================
-- PASO 2: INSERT para semenu (cmenu=61, módulo tarjetas)
-- =====================================================
SELECT
    'IF NOT EXISTS (SELECT 1 FROM semenu WHERE cmenu = ' + 
    CAST(cmenu AS VARCHAR) + ') ' +
    'INSERT INTO semenu (cmenu, cmenu_principal, u_version, xmenu, xruta, istatus, fingreso) VALUES (' +
    CAST(cmenu AS VARCHAR) + ', ' +
    CAST(cmenu_principal AS VARCHAR) + ', ' +
    CASE WHEN u_version IS NULL THEN 'NULL' ELSE '''' + REPLACE(LTRIM(RTRIM(u_version)), '''', '''''') + '''' END + ', ' +
    '''' + REPLACE(LTRIM(RTRIM(ISNULL(xmenu,''))), '''', '''''') + ''', ' +
    '''' + REPLACE(LTRIM(RTRIM(ISNULL(xruta,''))), '''', '''''') + ''', ' +
    '''V'', ' +
    'GETDATE());' AS insert_sql
FROM semenu
WHERE cmenu_principal = 16;
GO

-- =====================================================
-- PASO 3: INSERTs para sesubmenu (submenús de tarjetas)
-- =====================================================
SELECT
    'IF NOT EXISTS (SELECT 1 FROM sesubmenu WHERE csubmenu = ' + 
    CAST(csubmenu AS VARCHAR) + ') ' +
    'INSERT INTO sesubmenu (csubmenu, cmenu_principal, cmenu, u_version, xsubmenu, xruta, istatus, fingreso) VALUES (' +
    CAST(csubmenu AS VARCHAR) + ', ' +
    CAST(cmenu_principal AS VARCHAR) + ', ' +
    CAST(cmenu AS VARCHAR) + ', ' +
    CASE WHEN u_version IS NULL THEN 'NULL' ELSE '''' + REPLACE(LTRIM(RTRIM(u_version)), '''', '''''') + '''' END + ', ' +
    '''' + REPLACE(LTRIM(RTRIM(ISNULL(xsubmenu,''))), '''', '''''') + ''', ' +
    '''' + REPLACE(LTRIM(RTRIM(ISNULL(xruta,''))),    '''', '''''') + ''', ' +
    '''V'', ' +
    'GETDATE());' AS insert_sql
FROM sesubmenu
WHERE cmenu_principal = 16
   OR cmenu IN (SELECT cmenu FROM semenu WHERE cmenu_principal = 16);
GO

-- =====================================================
-- PASO 4: Distribución de permisos por usuario/rol
--         (ver si hay tabla de permisos de menú)
-- =====================================================
IF OBJECT_ID('sePermisosMenu') IS NOT NULL
    SELECT * FROM sePermisosMenu WHERE cmenu_principal = 16 OR cmenu = 61;
GO

IF OBJECT_ID('seMenuUsuario') IS NOT NULL
    SELECT * FROM seMenuUsuario WHERE cmenu_principal = 16 OR cmenu = 61;
GO

-- Ver si seVmenu (vista) incluye tarjetas para algún usuario de prueba
-- Reemplaza 1 por el cusuario de tu usuario de prueba en BD nueva
IF OBJECT_ID('seVmenu') IS NOT NULL
    SELECT TOP 5 * FROM seVmenu WHERE cmenu_principal = 16;
GO
