erp-core/docs/05-user-stories/mgn-010/US-MGN-010-002-001-crud-contratos-laborales.md

2.0 KiB

US-MGN-010-002-001: CRUD Contratos Laborales

RF Asociado: RF-MGN-010-003 Módulo: MGN-010 - RRHH Básico Epic: Contratos Prioridad: P0 Story Points: 5 Sprint: Sprint 22 Estado: Ready for Development Fecha: 2025-11-24


User Story

Como gerente de RRHH, Quiero gestionar contratos laborales de empleados, Para controlar vigencia y términos contractuales.

Criterios de Aceptación

Escenario 1: Crear contrato

Dado que empleado existe, Cuando creo contrato: employee_id=1, type="indefinido", start_date="2024-01-01", salary=50000, Entonces sistema crea contrato con state=active.

Escenario 2: Un solo contrato activo por empleado

Dado que empleado ya tiene contrato active, Cuando intento crear otro active, Entonces error 400 "Empleado ya tiene contrato activo. Debe finalizar el anterior primero".

Escenario 3: Finalizar contrato

Dado que contrato está active, Cuando lo finalizo con end_date="2024-12-31", Entonces state=terminated, permite crear nuevo contrato.

Reglas de Negocio

  • RN-1: Un solo contrato activo por empleado.
  • RN-2: Tipo: indefinido, temporal, practicante.
  • RN-3: Salario obligatorio > 0.

Tareas Técnicas

Backend

  • Endpoint: POST/GET/PUT/DELETE /api/v1/hr/contracts
  • Validar un solo contrato activo
  • Unit tests

Frontend

  • Página: ContractsPage.tsx
  • Formulario contrato
  • Lista de contratos del empleado

Database

  • Tabla: hr.contracts (employee_id, type, start_date, end_date, salary, state)
  • Enum: contract_type, contract_state

Estimación Detallada

| Tarea | Horas | Backend | 2 | Frontend | 2.5 | Testing | 1.5 | TOTAL | 6 horas = 5 SP |

Definition of Done

  • CRUD completo
  • Validación un solo activo
  • Tests >80%
  • QA/PO aprobado

Referencias