INSERT IGNORE INTO role_permissions (role_id, permission_id) SELECT r.id, p.id FROM ( SELECT 'warehouse_admin' AS role_code, 'master.material.read' AS permission_code UNION ALL SELECT 'warehouse_admin', 'inventory.stock.read' UNION ALL SELECT 'warehouse_admin', 'inventory.warning.write' UNION ALL SELECT 'warehouse_admin', 'inventory.inbound.write' UNION ALL SELECT 'warehouse_admin', 'inventory.outbound.write' UNION ALL SELECT 'purchaser', 'master.material.read' UNION ALL SELECT 'purchaser', 'partner.supplier.read' UNION ALL SELECT 'purchaser', 'partner.supplier.write' UNION ALL SELECT 'purchaser', 'inventory.stock.read' UNION ALL SELECT 'purchaser', 'inventory.warning.write' UNION ALL SELECT 'technician', 'master.material.read' UNION ALL SELECT 'technician', 'master.material.write' UNION ALL SELECT 'technician', 'master.config.write' UNION ALL SELECT 'technician', 'inventory.stock.read' UNION ALL SELECT 'production', 'master.material.read' UNION ALL SELECT 'production', 'inventory.stock.read' UNION ALL SELECT 'production', 'inventory.outbound.write' UNION ALL SELECT 'sales', 'master.material.read' UNION ALL SELECT 'sales', 'partner.customer.read' UNION ALL SELECT 'sales', 'partner.customer.write' UNION ALL SELECT 'sales', 'inventory.stock.read' ) AS defaults JOIN roles r ON r.code = defaults.role_code JOIN permissions p ON p.code = defaults.permission_code;