-- =============================================================
-- 20260828_sync_modulos_permisos_roles_admin.sql
-- =============================================================
-- Sincroniza modulos nuevos y permisos base para roles Administrador
-- en empresas ya creadas. El script es idempotente.

INSERT INTO modulos (codigo, nombre, categoria, estado, created_at)
SELECT 'guias', 'Guias de remision', 'CORE', 1, NOW()
WHERE NOT EXISTS (SELECT 1 FROM modulos WHERE codigo = 'guias');

INSERT INTO modulos (codigo, nombre, categoria, estado, created_at)
SELECT 'reportes', 'Reportes', 'CORE', 1, NOW()
WHERE NOT EXISTS (SELECT 1 FROM modulos WHERE codigo = 'reportes');

INSERT INTO permisos (rol_id, modulo_id, accion_id, permitido, created_at)
SELECT r.id, m.id, a.id, 1, NOW()
FROM roles r
INNER JOIN modulos m ON m.estado = 1 AND m.deleted_at IS NULL
INNER JOIN acciones a ON a.estado = 1
LEFT JOIN permisos p
  ON p.rol_id = r.id
 AND p.modulo_id = m.id
 AND p.accion_id = a.id
WHERE r.deleted_at IS NULL
  AND r.nombre = 'Administrador'
  AND m.codigo IN (
    'usuarios',
    'empresas',
    'facturacion',
    'cotizaciones',
    'guias',
    'reportes',
    'inventario',
    'auditoria',
    'catalogos_sunat',
    'terceros',
    'productos',
    'ventas',
    'compras',
    'caja'
  )
  AND p.id IS NULL;
