Flujo de Aprobacion
Diagrama de Estados
stateDiagram-v2
[*] --> DRAFT: Crear
DRAFT --> PENDING_MANAGER: Enviar (empleado regular)
DRAFT --> PENDING_DIRECTOR: Enviar (gerente de depto)
DRAFT --> APPROVED: Enviar (director) / auto
DRAFT --> CANCELLED: Cancelar
PENDING_MANAGER --> PENDING_DIRECTOR: Gerente aprueba
PENDING_MANAGER --> APPROVED: Director aprueba (salta nivel)
PENDING_MANAGER --> RETURNED: Devolver
PENDING_DIRECTOR --> APPROVED: Director aprueba
PENDING_DIRECTOR --> RETURNED: Devolver
RETURNED --> PENDING_MANAGER: Reenviar (empleado regular)
RETURNED --> PENDING_DIRECTOR: Reenviar (gerente de depto)
RETURNED --> APPROVED: Reenviar (director) / auto
APPROVED --> PARTIALLY_FULFILLED: Despacho parcial
APPROVED --> AWAITING_PROCUREMENT: Todo a procura
APPROVED --> FULFILLED: Despacho total
PARTIALLY_FULFILLED --> FULFILLED: Completar despacho
AWAITING_PROCUREMENT --> READY_FOR_DISPATCH: OC recibida
READY_FOR_DISPATCH --> FULFILLED: Despacho final
READY_FOR_DISPATCH --> PARTIALLY_FULFILLED: Despacho parcial
FULFILLED --> [*]
CANCELLED --> [*]
Aprobacion Multinivel
El sistema implementa un flujo de aprobacion en dos niveles:
Nivel 1: Gerente de Departamento
- Estado:
PENDING_MANAGER - Aprobador: El gerente del departamento del solicitante (
Department.managerId) - Accion: Puede aprobar (avanza a PENDING_DIRECTOR) o devolver (regresa a RETURNED)
Nivel 2: Director Tecnico
- Estado:
PENDING_DIRECTOR - Aprobador: Empleado con Position.level=1 e isSupervisory=true
- Accion: Puede aprobar (estado final APPROVED) o devolver (regresa a RETURNED)
Un Director Tecnico puede aprobar directamente desde PENDING_MANAGER, saltando al gerente. En ese caso, la requisicion pasa de PENDING_MANAGER a APPROVED en un solo paso.
Quien Revisa?
El sistema busca el aprobador en este orden:
- Gerente del departamento (
Department.managerId) -- si no es el mismo solicitante (segregacion de funciones) - Director tecnico (Position.level=1, isSupervisory=true) -- como aprobador final o alternativa
- Supervisor directo del empleado (
Employee.supervisorId) -- si no hay gerente de departamento
El solicitante nunca puede aprobar su propia requisicion. Si el gerente del departamento es el mismo solicitante, la requisicion se envia directamente al director.
Como Aprobar
- Navegue a Requisiciones y use la pestana Pendientes de Aprobacion, o haga clic en la notificacion recibida
- Revise los detalles de la requisicion: items, cantidades, justificacion, prioridad
- Haga clic en Aprobar
- Opcionalmente agregue notas de aprobacion
- El solicitante recibe notificacion del resultado

Seccion de Aprobacion
Al aprobar, la vista de detalle muestra los nombres reales de quienes aprobaron en cada nivel:

Devolucion y Reenvio
A diferencia del rechazo (que es terminal), la devolucion permite un ciclo de correccion:
Devolver una Requisicion
- El aprobador (gerente o director) hace clic en Devolver
- Debe escribir un comentario obligatorio explicando que debe corregirse
- La requisicion cambia a estado
RETURNED - El solicitante recibe notificacion con el motivo

Editar y Reenviar
Cuando una requisicion esta en estado RETURNED, el solicitante puede:
- Ver el motivo de la devolucion en una alerta destacada
- Hacer clic en Editar para modificar la requisicion
- Modificar cantidades, agregar o eliminar items, cambiar justificacion
- Hacer clic en Reenviar para enviar de nuevo al flujo de aprobacion


Solo el creador original puede editar la requisicion, y solo en los estados DRAFT o RETURNED. Al reenviar, se usan las mismas reglas de enrutamiento que al enviar por primera vez.
Ciclo de Devolucion
PENDING_MANAGER/PENDING_DIRECTOR
|
[Devolver con comentario]
|
RETURNED
|
[Solicitante edita]
|
[Reenviar]
|
PENDING_MANAGER/PENDING_DIRECTOR/APPROVED
(segun rol del solicitante)
El ciclo de devolucion-reenvio puede repetirse las veces necesarias.
Notificaciones
Al enviar
- Destinatario: Aprobador del siguiente nivel (gerente o director)
- Prioridad: High (Urgent si la requisicion es urgente)
- Contenido: Nombre del solicitante, departamento, codigo y titulo de la requisicion
Al aprobar por gerencia (PENDING_MANAGER -> PENDING_DIRECTOR)
- Destinatario 1: Director tecnico -- requisicion pendiente de aprobacion final
- Destinatario 2: Solicitante original -- notificacion de avance intermedio
Al aprobar finalmente (-> APPROVED)
- Destinatario 1: Solicitante original -- confirmacion de aprobacion
- Destinatario 2: Personal de logistica (usuarios con permiso
requisitions:fulfill) -- requisicion lista para despacho
Al devolver (-> RETURNED)
- Destinatario: Solicitante original
- Contenido: Incluye el motivo/comentario de devolucion
Al reenviar
- Destinatario: Aprobador del siguiente nivel
- Contenido: Indica que fue reenviada despues de correcciones
Despues de la Aprobacion
Una vez aprobada, la requisicion pasa a ser responsabilidad del equipo de logistica/almacen:
- Verificar disponibilidad de stock en todos los almacenes
- Despachar materiales disponibles (despacho multi-almacen)
- Registrar items de texto libre en el catalogo de inventario
- Enrutar a procura los items sin stock
Consulte la guia de Despacho de Almacen para mas detalles.