INSERT INTO roles (nombre, slug, descripcion, activo, created_at) VALUES
('Superadmin', 'superadmin', 'Acceso global a todo el SaaS', 1, NOW()),
('Admin Empresa', 'admin_empresa', 'Administrador de la empresa cliente', 1, NOW()),
('Supervisor', 'supervisor', 'Supervisor operativo', 1, NOW()),
('Cajero', 'cajero', 'Usuario de caja y ventas', 1, NOW()),
('Inventario', 'inventario', 'Gestión de inventario', 1, NOW()),
('Contabilidad', 'contabilidad', 'Módulos de contabilidad y reportes', 1, NOW()),
('Consulta', 'consulta', 'Acceso de solo lectura', 1, NOW())
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre), descripcion = VALUES(descripcion), activo = VALUES(activo);

INSERT INTO permisos (nombre, codigo, modulo, created_at) VALUES
('Ver dashboard', 'dashboard.ver', 'dashboard', NOW()),
('Ver empresas', 'empresas.ver', 'empresas', NOW()),
('Crear empresas', 'empresas.crear', 'empresas', NOW()),
('Ver sucursales', 'sucursales.ver', 'sucursales', NOW()),
('Crear sucursales', 'sucursales.crear', 'sucursales', NOW()),
('Editar sucursales', 'sucursales.editar', 'sucursales', NOW()),
('Ver usuarios', 'usuarios.ver', 'usuarios', NOW()),
('Crear usuarios', 'usuarios.crear', 'usuarios', NOW()),
('Gestionar roles', 'roles.gestionar', 'usuarios', NOW()),
('Ver configuracion', 'configuracion.ver', 'configuracion', NOW()),
('Editar configuracion', 'configuracion.editar', 'configuracion', NOW()),
('Ver productos', 'productos.ver', 'productos', NOW()),
('Crear productos', 'productos.crear', 'productos', NOW()),
('Ver inventario', 'inventario.ver', 'inventario', NOW()),
('Ver movimientos inventario', 'movimientos_inventario.ver', 'inventario', NOW()),
('Solicitar ajustes de inventario', 'inventario.ajustar', 'inventario', NOW()),
('Aprobar ajustes de inventario', 'inventario.aprobar_ajuste', 'inventario', NOW()),
('Ver proveedores', 'proveedores.ver', 'proveedores', NOW()),
('Crear proveedores', 'proveedores.crear', 'proveedores', NOW()),
('Ver compras', 'compras.ver', 'compras', NOW()),
('Crear compras', 'compras.crear', 'compras', NOW()),
('Pagar compras', 'compras.pagar', 'compras', NOW()),
('Anular compras', 'compras.anular', 'compras', NOW()),
('Gestionar ordenes de compra', 'compras.ordenes', 'compras', NOW()),
('Registrar recepciones de compra', 'compras.recibir', 'compras', NOW()),
('Ver cuentas por pagar', 'cuentas_pagar.ver', 'compras', NOW()),
('Ver categorías', 'categorias.ver', 'productos', NOW()),
('Crear categorías', 'categorias.crear', 'productos', NOW()),
('Ver clientes', 'clientes.ver', 'clientes', NOW()),
('Crear clientes', 'clientes.crear', 'clientes', NOW()),
('Abrir caja', 'caja.abrir', 'caja', NOW()),
('Cerrar caja', 'caja.cerrar', 'caja', NOW()),
('Ver caja', 'caja.ver', 'caja', NOW()),
('Vender en POS', 'pos.vender', 'pos', NOW()),
('Ver ventas', 'ventas.ver', 'ventas', NOW()),
('Anular ventas', 'ventas.anular', 'ventas', NOW()),
('Emitir notas contables', 'facturacion.notas', 'facturacion', NOW()),
('Anular documento fiscal', 'facturacion.anular_documento', 'facturacion', NOW()),
('Ver reportes', 'reportes.ver', 'reportes', NOW()),
('Ver suscripciones', 'suscripciones.ver', 'suscripciones', NOW()),
('Acceso superadmin', 'superadmin.acceso', 'superadmin', NOW())
ON DUPLICATE KEY UPDATE nombre = VALUES(nombre), modulo = VALUES(modulo);

-- Asignar todos los permisos al superadmin
INSERT IGNORE INTO rol_permiso (rol_id, permiso_id, created_at)
SELECT r.id, p.id, NOW()
FROM roles r
CROSS JOIN permisos p
WHERE r.slug = 'superadmin';

-- Asignar permisos al admin_empresa (sin permisos de superadmin)
INSERT IGNORE INTO rol_permiso (rol_id, permiso_id, created_at)
SELECT r.id, p.id, NOW()
FROM roles r
CROSS JOIN permisos p
WHERE r.slug = 'admin_empresa'
  AND p.modulo <> 'superadmin'
  AND p.codigo NOT LIKE 'superadmin.%';

-- Permisos de cajero
INSERT IGNORE INTO rol_permiso (rol_id, permiso_id, created_at)
SELECT r.id, p.id, NOW()
FROM roles r
INNER JOIN permisos p ON p.codigo IN ('dashboard.ver', 'caja.ver', 'caja.abrir', 'caja.cerrar', 'pos.vender', 'ventas.ver', 'clientes.ver', 'clientes.crear')
WHERE r.slug = 'cajero';

-- Permisos para rol inventario
INSERT IGNORE INTO rol_permiso (rol_id, permiso_id, created_at)
SELECT r.id, p.id, NOW()
FROM roles r
INNER JOIN permisos p ON p.codigo IN (
    'dashboard.ver',
    'productos.ver',
    'productos.crear',
    'inventario.ver',
    'movimientos_inventario.ver',
    'inventario.ajustar',
    'inventario.aprobar_ajuste',
    'compras.ver',
    'compras.crear',
    'compras.pagar',
    'compras.anular',
    'compras.ordenes',
    'compras.recibir',
    'cuentas_pagar.ver',
    'proveedores.ver',
    'proveedores.crear'
)
WHERE r.slug = 'inventario';

-- Permisos para rol supervisor
INSERT IGNORE INTO rol_permiso (rol_id, permiso_id, created_at)
SELECT r.id, p.id, NOW()
FROM roles r
INNER JOIN permisos p ON p.codigo IN (
    'dashboard.ver',
    'reportes.ver',
    'ventas.ver',
    'caja.ver',
    'sucursales.ver',
    'configuracion.ver'
)
WHERE r.slug = 'supervisor';
