Ir al contenido

Crear Tipo de Empleado

Crea un nuevo tipo de empleado con permisos personalizados para cada módulo del sistema.

  1. En Configuración → Empleados, clic en ”+ Nuevo Tipo” — se abre el formulario.
  2. Completa los campos de información básica.
  3. Selecciona un icono representativo del tipo.
  4. Configura permisos para cada módulo (Ninguno, Ver o Editar).
  5. Clic en “Guardar” — el tipo queda disponible para asignar.
CampoObligatorioDescripciónEjemplo
NombreIdentificador del tipoComercial
DescripciónNoResponsabilidades del rolGestión de clientes y presupuestos
IconoRepresentación visualbriefcase, users, calculator
PermisosNivel de acceso por móduloVer en Clientes, Editar en Presupuestos

Para cada módulo del sistema, selecciona:

NivelComportamiento
NingunoNo aparece en el menú del empleado
VerPuede consultar pero no crear/editar/eliminar
EditarAcceso completo: crear, editar, eliminar

Módulos disponibles:

  • Facturas
  • Gastos
  • Presupuestos
  • Clientes
  • Productos
  • RRHH
  • Fichaje (Time Clock)
  • Informes
  • Configuración
  • El tipo aparece en la lista con badge verde “Activo”.
  • Toast de confirmación: “Tipo de empleado creado correctamente”.
  • Al invitar empleados, el tipo está disponible en el selector.
MensajeCausaSolución
”El nombre es obligatorio”Campo vacíoEscribe un nombre para el tipo
”Selecciona al menos un permiso”Todos los módulos en “Ninguno”Activa al menos un módulo con Ver o Editar
”Ya existe un tipo con ese nombre”Nombre duplicadoUsa un nombre diferente

Detalles técnicos — Crear Tipo de Empleado

Sección titulada «Detalles técnicos — Crear Tipo de Empleado»
Detalles técnicos

Tabla: employee_types

Campos clave:

interface EmployeeType {
id: string;
business_id: string;
name: string;
description?: string;
module_permissions: ModulePermissions; // JSONB
hr_role?: 'hr_admin' | 'hr_manager' | 'hr_viewer' | 'department_manager';
icon?: string;
is_system: boolean; // true para tipos predefinidos
is_active: boolean; // true por defecto
created_at: timestamp;
updated_at: timestamp;
}
interface ModulePermissions {
invoices?: 'none' | 'read' | 'edit';
expenses?: 'none' | 'read' | 'edit';
quotes?: 'none' | 'read' | 'edit';
customers?: 'none' | 'read' | 'edit';
products?: 'none' | 'read' | 'edit';
hr?: 'none' | 'read' | 'edit';
time_clock?: 'none' | 'read' | 'edit';
reports?: 'none' | 'read' | 'edit';
settings?: 'none' | 'read' | 'edit';
}

Componente: src/features/settings/components/EmployeeTypeEditor.tsx

Hook: src/features/hr/hooks/useEmployeeTypes.ts

Query de validación:

-- Verificar tipos activos de un negocio
SELECT name, description, module_permissions, is_active
FROM employee_types
WHERE business_id = '<business_id>'
AND is_active = true
ORDER BY name;