[RBAC-001] feat: Add permissions seed for complete RBAC system
- Add 07a-permissions-seed.sql with ~150 permissions covering all ERP modules - Permissions for: auth, billing, inventory, sales, purchases, partners, products, financial, hr, crm, projects, reports, system - Add new roles: accountant, sales, warehouse - Map ERP profiles to roles Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
e964ff4812
commit
b682fdaaf3
396
ddl/07a-permissions-seed.sql
Normal file
396
ddl/07a-permissions-seed.sql
Normal file
@ -0,0 +1,396 @@
|
|||||||
|
-- =============================================================
|
||||||
|
-- ARCHIVO: 07a-permissions-seed.sql
|
||||||
|
-- DESCRIPCION: Seed de permisos para sistema RBAC completo
|
||||||
|
-- VERSION: 1.0.0
|
||||||
|
-- PROYECTO: ERP-Core V2
|
||||||
|
-- FECHA: 2026-01-30
|
||||||
|
-- EPIC: SAAS-CORE-AUTH (EPIC-SAAS-001)
|
||||||
|
-- TAREA: Propagacion RBAC template-saas a erp-core
|
||||||
|
-- =============================================================
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- PERMISOS ADICIONALES ERP
|
||||||
|
-- =====================
|
||||||
|
|
||||||
|
-- Nota: El archivo 07-users-rbac.sql ya contiene permisos base de auth.
|
||||||
|
-- Este archivo extiende con permisos especificos de ERP.
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: AUTH (adicionales)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('users', 'activate', 'tenant', 'Activar usuarios', 'Activar usuarios suspendidos', 'auth'),
|
||||||
|
('users', 'deactivate', 'tenant', 'Desactivar usuarios', 'Suspender usuarios', 'auth'),
|
||||||
|
('users', 'export', 'tenant', 'Exportar usuarios', 'Exportar lista de usuarios', 'auth'),
|
||||||
|
('permissions', 'read', 'tenant', 'Ver permisos', 'Ver catalogo de permisos', 'auth'),
|
||||||
|
('permissions', 'update', 'tenant', 'Modificar permisos', 'Modificar asignacion de permisos a roles', 'auth'),
|
||||||
|
('api_keys', 'create', 'tenant', 'Crear API keys', 'Crear claves de API', 'auth'),
|
||||||
|
('api_keys', 'read', 'tenant', 'Ver API keys', 'Ver claves de API', 'auth'),
|
||||||
|
('api_keys', 'delete', 'tenant', 'Eliminar API keys', 'Revocar claves de API', 'auth'),
|
||||||
|
('sessions', 'read', 'tenant', 'Ver sesiones', 'Ver sesiones activas de usuarios', 'auth'),
|
||||||
|
('sessions', 'delete', 'tenant', 'Cerrar sesiones', 'Forzar cierre de sesiones', 'auth')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: BILLING (facturacion)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('invoices', 'create', 'tenant', 'Crear facturas', 'Crear nuevas facturas', 'billing'),
|
||||||
|
('invoices', 'update', 'tenant', 'Editar facturas', 'Modificar facturas en borrador', 'billing'),
|
||||||
|
('invoices', 'delete', 'tenant', 'Eliminar facturas', 'Eliminar facturas en borrador', 'billing'),
|
||||||
|
('invoices', 'validate', 'tenant', 'Validar facturas', 'Timbrar facturas CFDI', 'billing'),
|
||||||
|
('invoices', 'cancel', 'tenant', 'Cancelar facturas', 'Cancelar facturas timbradas', 'billing'),
|
||||||
|
('payments', 'create', 'tenant', 'Registrar pagos', 'Registrar pagos recibidos', 'billing'),
|
||||||
|
('payments', 'read', 'tenant', 'Ver pagos', 'Ver historial de pagos', 'billing'),
|
||||||
|
('payments', 'update', 'tenant', 'Editar pagos', 'Modificar pagos no aplicados', 'billing'),
|
||||||
|
('payments', 'delete', 'tenant', 'Eliminar pagos', 'Eliminar pagos no aplicados', 'billing'),
|
||||||
|
('payments', 'apply', 'tenant', 'Aplicar pagos', 'Aplicar pagos a facturas', 'billing'),
|
||||||
|
('credit_notes', 'create', 'tenant', 'Crear notas de credito', 'Crear notas de credito', 'billing'),
|
||||||
|
('credit_notes', 'read', 'tenant', 'Ver notas de credito', 'Ver notas de credito', 'billing'),
|
||||||
|
('credit_notes', 'validate', 'tenant', 'Validar notas de credito', 'Timbrar notas de credito', 'billing'),
|
||||||
|
('credit_notes', 'cancel', 'tenant', 'Cancelar notas de credito', 'Cancelar notas de credito', 'billing')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: INVENTORY (inventario)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('inventory', 'read', 'tenant', 'Ver inventario', 'Ver stock de productos', 'inventory'),
|
||||||
|
('inventory', 'update', 'tenant', 'Actualizar inventario', 'Modificar cantidades', 'inventory'),
|
||||||
|
('inventory', 'adjust', 'tenant', 'Ajustar inventario', 'Realizar ajustes de inventario', 'inventory'),
|
||||||
|
('inventory', 'transfer', 'tenant', 'Transferir inventario', 'Transferir entre almacenes', 'inventory'),
|
||||||
|
('inventory', 'export', 'tenant', 'Exportar inventario', 'Exportar reporte de inventario', 'inventory'),
|
||||||
|
('warehouses', 'create', 'tenant', 'Crear almacenes', 'Crear nuevos almacenes', 'inventory'),
|
||||||
|
('warehouses', 'read', 'tenant', 'Ver almacenes', 'Ver lista de almacenes', 'inventory'),
|
||||||
|
('warehouses', 'update', 'tenant', 'Editar almacenes', 'Modificar configuracion de almacenes', 'inventory'),
|
||||||
|
('warehouses', 'delete', 'tenant', 'Eliminar almacenes', 'Eliminar almacenes vacios', 'inventory'),
|
||||||
|
('stock_moves', 'create', 'tenant', 'Crear movimientos', 'Registrar entradas/salidas', 'inventory'),
|
||||||
|
('stock_moves', 'read', 'tenant', 'Ver movimientos', 'Ver historial de movimientos', 'inventory'),
|
||||||
|
('stock_moves', 'validate', 'tenant', 'Validar movimientos', 'Aprobar movimientos pendientes', 'inventory'),
|
||||||
|
('stock_moves', 'cancel', 'tenant', 'Cancelar movimientos', 'Cancelar movimientos no aplicados', 'inventory'),
|
||||||
|
('stock_count', 'create', 'tenant', 'Crear conteos', 'Iniciar conteo de inventario', 'inventory'),
|
||||||
|
('stock_count', 'read', 'tenant', 'Ver conteos', 'Ver conteos de inventario', 'inventory'),
|
||||||
|
('stock_count', 'update', 'tenant', 'Editar conteos', 'Registrar cantidades contadas', 'inventory'),
|
||||||
|
('stock_count', 'validate', 'tenant', 'Validar conteos', 'Aprobar conteos y aplicar ajustes', 'inventory')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: SALES (ventas)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('sales', 'create', 'tenant', 'Crear ventas', 'Crear ordenes de venta', 'sales'),
|
||||||
|
('sales', 'read', 'tenant', 'Ver ventas', 'Ver ordenes de venta', 'sales'),
|
||||||
|
('sales', 'read', 'own', 'Ver mis ventas', 'Ver solo ventas propias', 'sales'),
|
||||||
|
('sales', 'update', 'tenant', 'Editar ventas', 'Modificar ordenes de venta', 'sales'),
|
||||||
|
('sales', 'delete', 'tenant', 'Eliminar ventas', 'Eliminar ventas en borrador', 'sales'),
|
||||||
|
('sales', 'approve', 'tenant', 'Aprobar ventas', 'Aprobar ordenes de venta', 'sales'),
|
||||||
|
('sales', 'cancel', 'tenant', 'Cancelar ventas', 'Cancelar ordenes de venta', 'sales'),
|
||||||
|
('sales', 'export', 'tenant', 'Exportar ventas', 'Exportar reportes de ventas', 'sales'),
|
||||||
|
('quotations', 'create', 'tenant', 'Crear cotizaciones', 'Crear cotizaciones', 'sales'),
|
||||||
|
('quotations', 'read', 'tenant', 'Ver cotizaciones', 'Ver cotizaciones', 'sales'),
|
||||||
|
('quotations', 'read', 'own', 'Ver mis cotizaciones', 'Ver solo cotizaciones propias', 'sales'),
|
||||||
|
('quotations', 'update', 'tenant', 'Editar cotizaciones', 'Modificar cotizaciones', 'sales'),
|
||||||
|
('quotations', 'delete', 'tenant', 'Eliminar cotizaciones', 'Eliminar cotizaciones', 'sales'),
|
||||||
|
('quotations', 'convert', 'tenant', 'Convertir cotizaciones', 'Convertir cotizacion a venta', 'sales'),
|
||||||
|
('pos', 'access', 'tenant', 'Acceder a POS', 'Acceder al punto de venta', 'sales'),
|
||||||
|
('pos', 'refund', 'tenant', 'Hacer devoluciones POS', 'Procesar devoluciones en POS', 'sales'),
|
||||||
|
('pos', 'discount', 'tenant', 'Aplicar descuentos POS', 'Aplicar descuentos en POS', 'sales')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: PURCHASES (compras)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('purchases', 'create', 'tenant', 'Crear compras', 'Crear ordenes de compra', 'purchases'),
|
||||||
|
('purchases', 'read', 'tenant', 'Ver compras', 'Ver ordenes de compra', 'purchases'),
|
||||||
|
('purchases', 'update', 'tenant', 'Editar compras', 'Modificar ordenes de compra', 'purchases'),
|
||||||
|
('purchases', 'delete', 'tenant', 'Eliminar compras', 'Eliminar compras en borrador', 'purchases'),
|
||||||
|
('purchases', 'approve', 'tenant', 'Aprobar compras', 'Aprobar ordenes de compra', 'purchases'),
|
||||||
|
('purchases', 'cancel', 'tenant', 'Cancelar compras', 'Cancelar ordenes de compra', 'purchases'),
|
||||||
|
('purchases', 'receive', 'tenant', 'Recibir compras', 'Registrar recepcion de mercancia', 'purchases'),
|
||||||
|
('purchases', 'export', 'tenant', 'Exportar compras', 'Exportar reportes de compras', 'purchases'),
|
||||||
|
('purchase_orders', 'create', 'tenant', 'Crear requisiciones', 'Crear ordenes de compra internas', 'purchases'),
|
||||||
|
('purchase_orders', 'read', 'tenant', 'Ver requisiciones', 'Ver requisiciones', 'purchases'),
|
||||||
|
('purchase_orders', 'update', 'tenant', 'Editar requisiciones', 'Modificar requisiciones', 'purchases'),
|
||||||
|
('purchase_orders', 'approve', 'tenant', 'Aprobar requisiciones', 'Aprobar requisiciones', 'purchases'),
|
||||||
|
('purchase_orders', 'reject', 'tenant', 'Rechazar requisiciones', 'Rechazar requisiciones', 'purchases'),
|
||||||
|
('supplier_invoices', 'create', 'tenant', 'Registrar facturas proveedor', 'Registrar facturas de proveedor', 'purchases'),
|
||||||
|
('supplier_invoices', 'read', 'tenant', 'Ver facturas proveedor', 'Ver facturas de proveedor', 'purchases'),
|
||||||
|
('supplier_invoices', 'validate', 'tenant', 'Validar facturas proveedor', 'Aprobar facturas de proveedor', 'purchases')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: PARTNERS (clientes/proveedores)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('partners', 'create', 'tenant', 'Crear contactos', 'Crear clientes/proveedores', 'partners'),
|
||||||
|
('partners', 'read', 'tenant', 'Ver contactos', 'Ver clientes/proveedores', 'partners'),
|
||||||
|
('partners', 'update', 'tenant', 'Editar contactos', 'Modificar clientes/proveedores', 'partners'),
|
||||||
|
('partners', 'delete', 'tenant', 'Eliminar contactos', 'Eliminar clientes/proveedores', 'partners'),
|
||||||
|
('partners', 'export', 'tenant', 'Exportar contactos', 'Exportar lista de contactos', 'partners'),
|
||||||
|
('customers', 'create', 'tenant', 'Crear clientes', 'Crear nuevos clientes', 'partners'),
|
||||||
|
('customers', 'read', 'tenant', 'Ver clientes', 'Ver lista de clientes', 'partners'),
|
||||||
|
('customers', 'update', 'tenant', 'Editar clientes', 'Modificar datos de clientes', 'partners'),
|
||||||
|
('customers', 'delete', 'tenant', 'Eliminar clientes', 'Eliminar clientes', 'partners'),
|
||||||
|
('suppliers', 'create', 'tenant', 'Crear proveedores', 'Crear nuevos proveedores', 'partners'),
|
||||||
|
('suppliers', 'read', 'tenant', 'Ver proveedores', 'Ver lista de proveedores', 'partners'),
|
||||||
|
('suppliers', 'update', 'tenant', 'Editar proveedores', 'Modificar datos de proveedores', 'partners'),
|
||||||
|
('suppliers', 'delete', 'tenant', 'Eliminar proveedores', 'Eliminar proveedores', 'partners'),
|
||||||
|
('contacts', 'create', 'tenant', 'Crear contactos adicionales', 'Agregar contactos a partners', 'partners'),
|
||||||
|
('contacts', 'read', 'tenant', 'Ver contactos adicionales', 'Ver contactos de partners', 'partners'),
|
||||||
|
('contacts', 'update', 'tenant', 'Editar contactos adicionales', 'Modificar contactos de partners', 'partners'),
|
||||||
|
('contacts', 'delete', 'tenant', 'Eliminar contactos adicionales', 'Eliminar contactos de partners', 'partners')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: PRODUCTS (productos)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('products', 'create', 'tenant', 'Crear productos', 'Crear nuevos productos', 'products'),
|
||||||
|
('products', 'read', 'tenant', 'Ver productos', 'Ver catalogo de productos', 'products'),
|
||||||
|
('products', 'update', 'tenant', 'Editar productos', 'Modificar productos', 'products'),
|
||||||
|
('products', 'delete', 'tenant', 'Eliminar productos', 'Eliminar productos', 'products'),
|
||||||
|
('products', 'export', 'tenant', 'Exportar productos', 'Exportar catalogo de productos', 'products'),
|
||||||
|
('products', 'import', 'tenant', 'Importar productos', 'Importar productos masivamente', 'products'),
|
||||||
|
('categories', 'create', 'tenant', 'Crear categorias', 'Crear categorias de productos', 'products'),
|
||||||
|
('categories', 'read', 'tenant', 'Ver categorias', 'Ver categorias de productos', 'products'),
|
||||||
|
('categories', 'update', 'tenant', 'Editar categorias', 'Modificar categorias', 'products'),
|
||||||
|
('categories', 'delete', 'tenant', 'Eliminar categorias', 'Eliminar categorias', 'products'),
|
||||||
|
('price_lists', 'create', 'tenant', 'Crear listas de precios', 'Crear listas de precios', 'products'),
|
||||||
|
('price_lists', 'read', 'tenant', 'Ver listas de precios', 'Ver listas de precios', 'products'),
|
||||||
|
('price_lists', 'update', 'tenant', 'Editar listas de precios', 'Modificar listas de precios', 'products'),
|
||||||
|
('price_lists', 'delete', 'tenant', 'Eliminar listas de precios', 'Eliminar listas de precios', 'products')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: FINANCIAL (contabilidad)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('accounts', 'create', 'tenant', 'Crear cuentas', 'Crear cuentas contables', 'financial'),
|
||||||
|
('accounts', 'read', 'tenant', 'Ver cuentas', 'Ver catalogo de cuentas', 'financial'),
|
||||||
|
('accounts', 'update', 'tenant', 'Editar cuentas', 'Modificar cuentas contables', 'financial'),
|
||||||
|
('accounts', 'delete', 'tenant', 'Eliminar cuentas', 'Eliminar cuentas sin movimientos', 'financial'),
|
||||||
|
('journal_entries', 'create', 'tenant', 'Crear polizas', 'Crear polizas contables', 'financial'),
|
||||||
|
('journal_entries', 'read', 'tenant', 'Ver polizas', 'Ver polizas contables', 'financial'),
|
||||||
|
('journal_entries', 'update', 'tenant', 'Editar polizas', 'Modificar polizas en borrador', 'financial'),
|
||||||
|
('journal_entries', 'delete', 'tenant', 'Eliminar polizas', 'Eliminar polizas en borrador', 'financial'),
|
||||||
|
('journal_entries', 'post', 'tenant', 'Contabilizar polizas', 'Contabilizar polizas', 'financial'),
|
||||||
|
('journal_entries', 'reverse', 'tenant', 'Reversar polizas', 'Crear polizas de reverso', 'financial'),
|
||||||
|
('fiscal_periods', 'create', 'tenant', 'Crear periodos fiscales', 'Crear periodos contables', 'financial'),
|
||||||
|
('fiscal_periods', 'read', 'tenant', 'Ver periodos fiscales', 'Ver periodos contables', 'financial'),
|
||||||
|
('fiscal_periods', 'close', 'tenant', 'Cerrar periodos', 'Cerrar periodos contables', 'financial'),
|
||||||
|
('fiscal_periods', 'reopen', 'tenant', 'Reabrir periodos', 'Reabrir periodos cerrados', 'financial'),
|
||||||
|
('bank_reconciliation', 'create', 'tenant', 'Crear conciliaciones', 'Crear conciliaciones bancarias', 'financial'),
|
||||||
|
('bank_reconciliation', 'read', 'tenant', 'Ver conciliaciones', 'Ver conciliaciones bancarias', 'financial'),
|
||||||
|
('bank_reconciliation', 'update', 'tenant', 'Editar conciliaciones', 'Modificar conciliaciones', 'financial'),
|
||||||
|
('bank_reconciliation', 'validate', 'tenant', 'Validar conciliaciones', 'Aprobar conciliaciones', 'financial'),
|
||||||
|
('cost_centers', 'create', 'tenant', 'Crear centros de costo', 'Crear centros de costo', 'financial'),
|
||||||
|
('cost_centers', 'read', 'tenant', 'Ver centros de costo', 'Ver centros de costo', 'financial'),
|
||||||
|
('cost_centers', 'update', 'tenant', 'Editar centros de costo', 'Modificar centros de costo', 'financial'),
|
||||||
|
('cost_centers', 'delete', 'tenant', 'Eliminar centros de costo', 'Eliminar centros de costo', 'financial'),
|
||||||
|
('budgets', 'create', 'tenant', 'Crear presupuestos', 'Crear presupuestos', 'financial'),
|
||||||
|
('budgets', 'read', 'tenant', 'Ver presupuestos', 'Ver presupuestos', 'financial'),
|
||||||
|
('budgets', 'update', 'tenant', 'Editar presupuestos', 'Modificar presupuestos', 'financial'),
|
||||||
|
('budgets', 'approve', 'tenant', 'Aprobar presupuestos', 'Aprobar presupuestos', 'financial')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: HR (recursos humanos)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('employees', 'create', 'tenant', 'Crear empleados', 'Crear registros de empleados', 'hr'),
|
||||||
|
('employees', 'read', 'tenant', 'Ver empleados', 'Ver informacion de empleados', 'hr'),
|
||||||
|
('employees', 'update', 'tenant', 'Editar empleados', 'Modificar datos de empleados', 'hr'),
|
||||||
|
('employees', 'delete', 'tenant', 'Eliminar empleados', 'Dar de baja empleados', 'hr'),
|
||||||
|
('employees', 'export', 'tenant', 'Exportar empleados', 'Exportar lista de empleados', 'hr'),
|
||||||
|
('payroll', 'create', 'tenant', 'Crear nominas', 'Crear periodos de nomina', 'hr'),
|
||||||
|
('payroll', 'read', 'tenant', 'Ver nominas', 'Ver nominas', 'hr'),
|
||||||
|
('payroll', 'update', 'tenant', 'Editar nominas', 'Modificar nominas en borrador', 'hr'),
|
||||||
|
('payroll', 'approve', 'tenant', 'Aprobar nominas', 'Aprobar nominas para pago', 'hr'),
|
||||||
|
('payroll', 'export', 'tenant', 'Exportar nominas', 'Exportar reportes de nomina', 'hr'),
|
||||||
|
('attendance', 'create', 'tenant', 'Registrar asistencia', 'Registrar entradas/salidas', 'hr'),
|
||||||
|
('attendance', 'read', 'tenant', 'Ver asistencia', 'Ver registros de asistencia', 'hr'),
|
||||||
|
('attendance', 'read', 'own', 'Ver mi asistencia', 'Ver asistencia propia', 'hr'),
|
||||||
|
('attendance', 'update', 'tenant', 'Editar asistencia', 'Modificar registros de asistencia', 'hr'),
|
||||||
|
('attendance', 'approve', 'tenant', 'Aprobar asistencia', 'Aprobar ajustes de asistencia', 'hr'),
|
||||||
|
('leaves', 'create', 'tenant', 'Crear ausencias', 'Registrar solicitudes de ausencia', 'hr'),
|
||||||
|
('leaves', 'read', 'tenant', 'Ver ausencias', 'Ver solicitudes de ausencia', 'hr'),
|
||||||
|
('leaves', 'read', 'own', 'Ver mis ausencias', 'Ver ausencias propias', 'hr'),
|
||||||
|
('leaves', 'approve', 'tenant', 'Aprobar ausencias', 'Aprobar solicitudes de ausencia', 'hr'),
|
||||||
|
('contracts', 'create', 'tenant', 'Crear contratos', 'Crear contratos laborales', 'hr'),
|
||||||
|
('contracts', 'read', 'tenant', 'Ver contratos', 'Ver contratos laborales', 'hr'),
|
||||||
|
('contracts', 'update', 'tenant', 'Editar contratos', 'Modificar contratos', 'hr'),
|
||||||
|
('departments', 'create', 'tenant', 'Crear departamentos', 'Crear departamentos', 'hr'),
|
||||||
|
('departments', 'read', 'tenant', 'Ver departamentos', 'Ver departamentos', 'hr'),
|
||||||
|
('departments', 'update', 'tenant', 'Editar departamentos', 'Modificar departamentos', 'hr'),
|
||||||
|
('departments', 'delete', 'tenant', 'Eliminar departamentos', 'Eliminar departamentos', 'hr'),
|
||||||
|
('positions', 'create', 'tenant', 'Crear puestos', 'Crear puestos de trabajo', 'hr'),
|
||||||
|
('positions', 'read', 'tenant', 'Ver puestos', 'Ver puestos de trabajo', 'hr'),
|
||||||
|
('positions', 'update', 'tenant', 'Editar puestos', 'Modificar puestos', 'hr'),
|
||||||
|
('positions', 'delete', 'tenant', 'Eliminar puestos', 'Eliminar puestos', 'hr')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: CRM
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('leads', 'create', 'tenant', 'Crear leads', 'Crear prospectos', 'crm'),
|
||||||
|
('leads', 'read', 'tenant', 'Ver leads', 'Ver prospectos', 'crm'),
|
||||||
|
('leads', 'read', 'own', 'Ver mis leads', 'Ver prospectos propios', 'crm'),
|
||||||
|
('leads', 'update', 'tenant', 'Editar leads', 'Modificar prospectos', 'crm'),
|
||||||
|
('leads', 'delete', 'tenant', 'Eliminar leads', 'Eliminar prospectos', 'crm'),
|
||||||
|
('leads', 'convert', 'tenant', 'Convertir leads', 'Convertir prospecto a cliente', 'crm'),
|
||||||
|
('leads', 'assign', 'tenant', 'Asignar leads', 'Asignar prospectos a vendedores', 'crm'),
|
||||||
|
('opportunities', 'create', 'tenant', 'Crear oportunidades', 'Crear oportunidades de venta', 'crm'),
|
||||||
|
('opportunities', 'read', 'tenant', 'Ver oportunidades', 'Ver oportunidades', 'crm'),
|
||||||
|
('opportunities', 'read', 'own', 'Ver mis oportunidades', 'Ver oportunidades propias', 'crm'),
|
||||||
|
('opportunities', 'update', 'tenant', 'Editar oportunidades', 'Modificar oportunidades', 'crm'),
|
||||||
|
('opportunities', 'delete', 'tenant', 'Eliminar oportunidades', 'Eliminar oportunidades', 'crm'),
|
||||||
|
('opportunities', 'close', 'tenant', 'Cerrar oportunidades', 'Cerrar oportunidades ganadas/perdidas', 'crm'),
|
||||||
|
('activities', 'create', 'tenant', 'Crear actividades', 'Crear tareas y actividades CRM', 'crm'),
|
||||||
|
('activities', 'read', 'tenant', 'Ver actividades', 'Ver actividades', 'crm'),
|
||||||
|
('activities', 'read', 'own', 'Ver mis actividades', 'Ver actividades propias', 'crm'),
|
||||||
|
('activities', 'update', 'tenant', 'Editar actividades', 'Modificar actividades', 'crm'),
|
||||||
|
('activities', 'delete', 'tenant', 'Eliminar actividades', 'Eliminar actividades', 'crm'),
|
||||||
|
('campaigns', 'create', 'tenant', 'Crear campanas', 'Crear campanas de marketing', 'crm'),
|
||||||
|
('campaigns', 'read', 'tenant', 'Ver campanas', 'Ver campanas', 'crm'),
|
||||||
|
('campaigns', 'update', 'tenant', 'Editar campanas', 'Modificar campanas', 'crm'),
|
||||||
|
('campaigns', 'delete', 'tenant', 'Eliminar campanas', 'Eliminar campanas', 'crm')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: PROJECTS (proyectos)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('projects', 'create', 'tenant', 'Crear proyectos', 'Crear proyectos', 'projects'),
|
||||||
|
('projects', 'read', 'tenant', 'Ver proyectos', 'Ver proyectos', 'projects'),
|
||||||
|
('projects', 'read', 'own', 'Ver mis proyectos', 'Ver proyectos asignados', 'projects'),
|
||||||
|
('projects', 'update', 'tenant', 'Editar proyectos', 'Modificar proyectos', 'projects'),
|
||||||
|
('projects', 'delete', 'tenant', 'Eliminar proyectos', 'Eliminar proyectos', 'projects'),
|
||||||
|
('projects', 'close', 'tenant', 'Cerrar proyectos', 'Cerrar proyectos completados', 'projects'),
|
||||||
|
('tasks', 'create', 'tenant', 'Crear tareas', 'Crear tareas de proyecto', 'projects'),
|
||||||
|
('tasks', 'read', 'tenant', 'Ver tareas', 'Ver tareas', 'projects'),
|
||||||
|
('tasks', 'read', 'own', 'Ver mis tareas', 'Ver tareas asignadas', 'projects'),
|
||||||
|
('tasks', 'update', 'tenant', 'Editar tareas', 'Modificar tareas', 'projects'),
|
||||||
|
('tasks', 'delete', 'tenant', 'Eliminar tareas', 'Eliminar tareas', 'projects'),
|
||||||
|
('tasks', 'assign', 'tenant', 'Asignar tareas', 'Asignar tareas a usuarios', 'projects'),
|
||||||
|
('timesheets', 'create', 'tenant', 'Registrar tiempo', 'Registrar horas trabajadas', 'projects'),
|
||||||
|
('timesheets', 'read', 'tenant', 'Ver tiempos', 'Ver registros de tiempo', 'projects'),
|
||||||
|
('timesheets', 'read', 'own', 'Ver mis tiempos', 'Ver tiempo propio', 'projects'),
|
||||||
|
('timesheets', 'update', 'tenant', 'Editar tiempos', 'Modificar registros de tiempo', 'projects'),
|
||||||
|
('timesheets', 'approve', 'tenant', 'Aprobar tiempos', 'Aprobar registros de tiempo', 'projects')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: REPORTS (reportes)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('reports', 'read', 'tenant', 'Ver reportes', 'Acceder a reportes', 'reports'),
|
||||||
|
('reports', 'export', 'tenant', 'Exportar reportes', 'Exportar reportes a Excel/PDF', 'reports'),
|
||||||
|
('reports_sales', 'read', 'tenant', 'Ver reportes ventas', 'Acceder a reportes de ventas', 'reports'),
|
||||||
|
('reports_purchases', 'read', 'tenant', 'Ver reportes compras', 'Acceder a reportes de compras', 'reports'),
|
||||||
|
('reports_inventory', 'read', 'tenant', 'Ver reportes inventario', 'Acceder a reportes de inventario', 'reports'),
|
||||||
|
('reports_financial', 'read', 'tenant', 'Ver reportes contables', 'Acceder a reportes financieros', 'reports'),
|
||||||
|
('reports_hr', 'read', 'tenant', 'Ver reportes RRHH', 'Acceder a reportes de RRHH', 'reports'),
|
||||||
|
('dashboards', 'read', 'tenant', 'Ver dashboards', 'Acceder a dashboards', 'reports'),
|
||||||
|
('dashboards', 'create', 'tenant', 'Crear dashboards', 'Crear dashboards personalizados', 'reports'),
|
||||||
|
('dashboards', 'update', 'tenant', 'Editar dashboards', 'Modificar dashboards', 'reports')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MODULO: SYSTEM (sistema)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.permissions (resource, action, scope, display_name, description, category) VALUES
|
||||||
|
('system', 'manage', 'global', 'Administrar sistema', 'Acceso total al sistema', 'system'),
|
||||||
|
('settings', 'read', 'tenant', 'Ver configuracion', 'Ver configuracion del sistema', 'system'),
|
||||||
|
('settings', 'update', 'tenant', 'Editar configuracion', 'Modificar configuracion', 'system'),
|
||||||
|
('integrations', 'create', 'tenant', 'Crear integraciones', 'Configurar integraciones', 'system'),
|
||||||
|
('integrations', 'read', 'tenant', 'Ver integraciones', 'Ver integraciones', 'system'),
|
||||||
|
('integrations', 'update', 'tenant', 'Editar integraciones', 'Modificar integraciones', 'system'),
|
||||||
|
('integrations', 'delete', 'tenant', 'Eliminar integraciones', 'Eliminar integraciones', 'system'),
|
||||||
|
('webhooks', 'create', 'tenant', 'Crear webhooks', 'Configurar webhooks', 'system'),
|
||||||
|
('webhooks', 'read', 'tenant', 'Ver webhooks', 'Ver webhooks', 'system'),
|
||||||
|
('webhooks', 'update', 'tenant', 'Editar webhooks', 'Modificar webhooks', 'system'),
|
||||||
|
('webhooks', 'delete', 'tenant', 'Eliminar webhooks', 'Eliminar webhooks', 'system'),
|
||||||
|
('imports', 'create', 'tenant', 'Ejecutar importaciones', 'Importar datos masivamente', 'system'),
|
||||||
|
('imports', 'read', 'tenant', 'Ver importaciones', 'Ver historial de importaciones', 'system'),
|
||||||
|
('exports', 'create', 'tenant', 'Ejecutar exportaciones', 'Exportar datos masivamente', 'system'),
|
||||||
|
('exports', 'read', 'tenant', 'Ver exportaciones', 'Ver historial de exportaciones', 'system')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- ASIGNACION DE PERMISOS A ROLES BASE
|
||||||
|
-- =====================
|
||||||
|
|
||||||
|
-- Rol: admin (todo excepto system:manage)
|
||||||
|
INSERT INTO users.role_permissions (role_id, permission_id)
|
||||||
|
SELECT '10000000-0000-0000-0000-000000000002', p.id
|
||||||
|
FROM users.permissions p
|
||||||
|
WHERE NOT (p.resource = 'system' AND p.action = 'manage')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- Rol: manager (CRUD en areas operativas)
|
||||||
|
INSERT INTO users.role_permissions (role_id, permission_id)
|
||||||
|
SELECT '10000000-0000-0000-0000-000000000003', p.id
|
||||||
|
FROM users.permissions p
|
||||||
|
WHERE p.category IN ('sales', 'purchases', 'partners', 'inventory', 'products', 'crm', 'projects')
|
||||||
|
OR (p.category = 'billing' AND p.action IN ('read', 'create', 'update'))
|
||||||
|
OR (p.category = 'reports' AND p.action = 'read')
|
||||||
|
OR (p.category = 'hr' AND p.action = 'read' AND p.scope = 'tenant')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- Rol: accountant (nuevo rol para contadores)
|
||||||
|
INSERT INTO users.roles (id, tenant_id, name, display_name, description, is_system, hierarchy_level, icon, color)
|
||||||
|
VALUES ('10000000-0000-0000-0000-000000000006', NULL, 'accountant', 'Contador', 'Acceso completo a facturacion y contabilidad', TRUE, 2, 'calculator', '#059669')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
INSERT INTO users.role_permissions (role_id, permission_id)
|
||||||
|
SELECT '10000000-0000-0000-0000-000000000006', p.id
|
||||||
|
FROM users.permissions p
|
||||||
|
WHERE p.category IN ('billing', 'financial')
|
||||||
|
OR (p.category = 'invoices')
|
||||||
|
OR (p.category = 'reports' AND p.resource IN ('reports', 'reports_financial'))
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- Rol: sales (vendedor)
|
||||||
|
INSERT INTO users.roles (id, tenant_id, name, display_name, description, is_system, hierarchy_level, icon, color)
|
||||||
|
VALUES ('10000000-0000-0000-0000-000000000007', NULL, 'sales', 'Vendedor', 'Rol de vendedor con acceso a clientes y ventas', TRUE, 3, 'shopping-cart', '#8b5cf6')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
INSERT INTO users.role_permissions (role_id, permission_id)
|
||||||
|
SELECT '10000000-0000-0000-0000-000000000007', p.id
|
||||||
|
FROM users.permissions p
|
||||||
|
WHERE (p.resource = 'customers' AND p.action IN ('create', 'read', 'update'))
|
||||||
|
OR (p.resource IN ('sales', 'quotations') AND p.scope = 'own')
|
||||||
|
OR (p.resource IN ('sales', 'quotations') AND p.action IN ('create', 'read', 'update'))
|
||||||
|
OR (p.resource = 'products' AND p.action = 'read')
|
||||||
|
OR (p.resource = 'pos')
|
||||||
|
OR (p.resource IN ('leads', 'opportunities', 'activities') AND p.scope = 'own')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- Rol: warehouse (almacenista)
|
||||||
|
INSERT INTO users.roles (id, tenant_id, name, display_name, description, is_system, hierarchy_level, icon, color)
|
||||||
|
VALUES ('10000000-0000-0000-0000-000000000008', NULL, 'warehouse', 'Almacenista', 'Rol de almacen con acceso a inventario', TRUE, 3, 'package', '#f59e0b')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
INSERT INTO users.role_permissions (role_id, permission_id)
|
||||||
|
SELECT '10000000-0000-0000-0000-000000000008', p.id
|
||||||
|
FROM users.permissions p
|
||||||
|
WHERE p.category = 'inventory'
|
||||||
|
OR (p.resource = 'products' AND p.action = 'read')
|
||||||
|
OR (p.resource = 'warehouses' AND p.action = 'read')
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- MAPEO DE PERFILES ERP A ROLES (actualizacion)
|
||||||
|
-- =====================
|
||||||
|
INSERT INTO users.profile_role_mapping (profile_code, role_id) VALUES
|
||||||
|
('CNT', '10000000-0000-0000-0000-000000000006'), -- Contador -> accountant
|
||||||
|
('VNT', '10000000-0000-0000-0000-000000000007'), -- Ventas -> sales
|
||||||
|
('ALM', '10000000-0000-0000-0000-000000000008') -- Almacen -> warehouse
|
||||||
|
ON CONFLICT (profile_code, role_id) DO NOTHING;
|
||||||
|
|
||||||
|
-- =====================
|
||||||
|
-- COMENTARIOS
|
||||||
|
-- =====================
|
||||||
|
COMMENT ON TABLE users.permissions IS 'Permisos granulares del sistema RBAC - seed extendido para ERP';
|
||||||
Loading…
Reference in New Issue
Block a user