Ir al contenido

Empleados (`employees/`)

Ruta: /owner/hr/employees

El sistema permite gestionar empleados con datos personales, fiscales y laborales completos.

  • Datos Personales

    • Nombre, apellidos, DNI/NIE
    • Fecha de nacimiento
    • Dirección completa
    • Teléfono y email
  • Datos Fiscales

    • Número de Seguridad Social
    • Situación fiscal (IRPF)
    • Datos bancarios (IBAN)
  • Datos Laborales

    • Tipo de empleado (definido por negocio)
    • Puesto y departamento
    • Fecha de alta
    • Horario contractual
    • Salario base
1. Click en "Nuevo Empleado"
2. Rellenar formulario con datos obligatorios
3. Configurar tipo de empleado y horario
4. Asignar permisos de acceso
5. (Opcional) Enviar invitación digital
6. Guardar y crear registro

Validaciones Aplicadas:

  • DNI/NIE único en el sistema
  • Email válido y no duplicado
  • Número de SS válido (validación básica)
  • IBAN válido formato español
  • Fecha de alta no futura
Detalles Técnicos

Componentes:

NewEmployeeModal.tsx // Modal de creación
EmployeeSheet.tsx // Panel lateral de edición
EmployeeInvitationModal.tsx // Envío de invitaciones

Tabla: employees

Edge Functions:

  • send-employee-invitation - Envía email con token de invitación
  • accept-employee-invitation - Activa cuenta del empleado

Validaciones LOPD:

  • Consentimiento explícito para tratamiento de datos
  • Registro de acceso a datos sensibles (SS, DNI)
  • Cifrado de datos bancarios en BD

Los empleados pueden tener diferentes niveles de acceso al sistema.

  • Empleado: Acceso solo a su portal personal
  • Manager: Aprobación de ausencias y fichajes de su equipo
  • Administrador RRHH: Acceso completo al módulo
  • Auditor: Solo lectura de logs y registros
1. Editar empleado desde el directorio
2. Sección "Permisos y Accesos"
3. Seleccionar rol principal
4. (Opcional) Permisos granulares adicionales
5. Guardar cambios

Permisos Granulares Disponibles:

  • Ver nóminas de otros empleados
  • Aprobar ausencias
  • Modificar fichajes
  • Generar reportes
  • Exportar datos
  • Gestionar contratos
Detalles Técnicos

Implementación:

// Los permisos se verifican mediante RLS de Supabase
// Ejemplo de política RLS para fichajes:
CREATE POLICY "Employees can view own time entries"
ON time_entries FOR SELECT
USING (
auth.uid() = user_id
OR
auth.uid() IN (
SELECT user_id FROM employees
WHERE business_id = time_entries.business_id
AND role IN ('manager', 'hr_admin')
)
);

Tabla: employee_roles, employee_permissions