Skip to content

Modulo Bodega

Jose Navarro edited this page Aug 12, 2026 · 1 revision

Módulo bodega

Catálogo de bodegas/almacenes. Es el catálogo más referenciado de todo el backend: usuario, tarea, convenio, entrega, inventario y dashboard lo consultan.

Endpoints

Método Path Rol Request Response
GET /api/bodegas autenticado (cualquier rol — único GET exento) query filtros RespuestaPagina<RespuestaBodega>
GET /api/bodegas/{id} ADMIN RespuestaBodega
GET /api/bodegas/{id}/usuarios ADMIN List<RespuestaUsuarioBodega>
POST /api/bodegas ADMIN CuerpoBodega RespuestaBodega (201)
PUT /api/bodegas/{id} ADMIN CuerpoBodega RespuestaBodega
PATCH /api/bodegas/{id}/estado ADMIN ?valor=EstadoBodega RespuestaBodega

Flujo de negocio

flowchart TD
    POST["POST /api/bodegas"] --> SAVE["crea Bodega\nestado=ACTIVA (default)"]
    PUT["PUT /{id}"] --> UPD["actualiza campos\n(NO toca estado)"]
    ESTADO["PATCH /{id}/estado"] --> FREE["set directo, SIN validar transición\n(ACTIVA/INACTIVA/MANTENIMIENTO)"]

    USUARIOS["GET /{id}/usuarios"] --> CROSS["★ BodegaController llama directo a\nUsuarioService.listarPorBodega(id)\n(cross-module EN EL CONTROLLER,\nno en BodegaServiceImpl)"]

    style FREE fill:#fde9c8
    style CROSS fill:#fde9c8
Loading

Secuencia HTTP: trabajadores de una bodega

sequenceDiagram
    participant C as Cliente (ADMIN)
    participant BC as BodegaController
    participant US as UsuarioService (módulo usuario)

    C->>BC: GET /api/bodegas/{id}/usuarios
    Note over BC: BodegaController inyecta UsuarioService directamente<br/>— no pasa por BodegaServiceImpl
    BC->>US: listarPorBodega(id)
    US-->>BC: List&lt;RespuestaUsuarioBodega&gt;
    BC-->>C: 200
Loading

Quién referencia bodega

flowchart LR
    BODEGA["bodega"]
    USUARIO["usuario: bodegaId obligatorio\nal registrar trabajador"] --> BODEGA
    TAREA["tarea: bodegaId opcional"] --> BODEGA
    CONVENIO["convenio: bodegaId opcional"] --> BODEGA
    ENTREGA["entrega: bodegaId obligatorio"] --> BODEGA
    INVENTARIO["inventario: bodegaId obligatorio\n(clave de LineaInventario)"] --> BODEGA
    DASHBOARD["dashboard: conteos ACTIVA/total"] --> BODEGA
Loading

Notas

  • EstadoBodega (ACTIVA, INACTIVA, MANTENIMIENTO) no tiene máquina de transición — cualquier PATCH es aceptado, igual que proveedor.
  • GET /api/bodegas (listado, sin /**) es el único endpoint de todo el módulo accesible a cualquier rol autenticado; todo lo demás (incluido GET /{id}) exige ADMIN.

Clone this wiki locally