Documentación: Solicitudes de Órdenes de Compra

API para gestionar solicitudes de órdenes de compra en el sistema

Descripción General

Este módulo permite gestionar solicitudes de órdenes de compra, desde su creación hasta su procesamiento por parte de los administradores. Las solicitudes pueden incluir múltiples productos y pasar por diferentes estados durante su ciclo de vida.

Estructura de Datos

Tabla Descripción
tbl_solicitudes_orden_de_compras Almacena la información principal de las solicitudes de órdenes de compra
tbl_solicitudes_orden_de_compras_detalle Almacena los productos incluidos en cada solicitud

Estados de Solicitud

0 - Pendiente Solicitud creada, esperando revisión
1 - Procesada Solicitud aprobada y procesada
2 - Rechazada Solicitud rechazada por el administrador

Flujo de Trabajo

graph TD A[Usuario] -->|Crea solicitud| B[Solicitud Pendiente] style B fill:#f0ad4e,color:white B -->|Revisión por administrador| C{Decisión} C -->|Aprueba| D[Solicitud Procesada] style D fill:#5cb85c,color:white C -->|Rechaza| E[Solicitud Rechazada] style E fill:#d9534f,color:white D -->|Genera| F[Orden de Compra] F -->|Recepción de productos| G[Actualización de inventario]

Endpoints de la API

GET /proveedores/solicitudes-ordenes

Obtiene todas las solicitudes de órdenes de compra activas.

Respuesta

[ { "id_solicitud_orden": 1, "id_usuario": 5, "id_administrador": 2, "estado": 1, "fecha_orden_compra": "2025-05-20", "fecha_recepcion": "2025-05-25", "activo": 1, "createdAt": "2025-05-12T12:30:00.000Z", "updatedAt": "2025-05-12T14:15:00.000Z", "usuario_solicitante": { "id_usuario": 5, "nombre": "Juan Pérez" }, "administrador": { "id_usuario": 2, "nombre": "Ana Gómez" }, "DetalleSolicitudOrdenCompras": [ { "id_solicitud_orden_detalle": 1, "id_solicitud_orden": 1, "id_producto": 15, "unidades": 10.00, "activo": 1, "Producto": { "id_producto": 15, "nombre": "Producto A", "codigo": "PA001" } } ] } ]

GET /proveedores/solicitudes-ordenes/:solicitudId

Obtiene una solicitud de orden de compra específica por su ID.

Parámetros

Nombre Ubicación Descripción
solicitudId path ID de la solicitud a consultar

Respuesta

{ "id_solicitud_orden": 1, "id_usuario": 5, "id_administrador": 2, "estado": 1, "fecha_orden_compra": "2025-05-20", "fecha_recepcion": "2025-05-25", "activo": 1, "createdAt": "2025-05-12T12:30:00.000Z", "updatedAt": "2025-05-12T14:15:00.000Z", "usuario_solicitante": { "id_usuario": 5, "nombre": "Juan Pérez" }, "administrador": { "id_usuario": 2, "nombre": "Ana Gómez" }, "DetalleSolicitudOrdenCompras": [ { "id_solicitud_orden_detalle": 1, "id_solicitud_orden": 1, "id_producto": 15, "unidades": 10.00, "activo": 1, "Producto": { "id_producto": 15, "nombre": "Producto A", "codigo": "PA001" } } ] }

GET /proveedores/solicitudes-ordenes/where

Filtra solicitudes de órdenes de compra por diferentes criterios.

Parámetros de Consulta

Nombre Tipo Descripción
id_usuario number ID del usuario solicitante
id_administrador number ID del administrador
estado number Estado de la solicitud (0, 1, 2)

POST /proveedores/solicitudes-ordenes

Crea una nueva solicitud de orden de compra.

Cuerpo de la Solicitud

{ "id_usuario": 5, "fecha_orden_compra": "2025-05-20", "fecha_recepcion": "2025-05-25", "detalle_solicitud": [ { "id_producto": 15, "unidades": 10 }, { "id_producto": 22, "unidades": 5 } ] }

Respuesta

{ "title": "Registro Exitoso", "msg": "La solicitud de orden de compra fue registrada con éxito", "type": "success", "solicitud": { "id_solicitud_orden": 1, "id_usuario": 5, "estado": 0, "fecha_orden_compra": "2025-05-20", "fecha_recepcion": "2025-05-25", "activo": 1, "createdAt": "2025-05-12T12:30:00.000Z", "updatedAt": "2025-05-12T12:30:00.000Z", "usuario_solicitante": { "id_usuario": 5, "nombre": "Juan Pérez" }, "DetalleSolicitudOrdenCompras": [ { "id_solicitud_orden_detalle": 1, "id_solicitud_orden": 1, "id_producto": 15, "unidades": 10.00, "activo": 1, "Producto": { "id_producto": 15, "nombre": "Producto A", "codigo": "PA001" } }, { "id_solicitud_orden_detalle": 2, "id_solicitud_orden": 1, "id_producto": 22, "unidades": 5.00, "activo": 1, "Producto": { "id_producto": 22, "nombre": "Producto B", "codigo": "PB002" } } ] } }

PUT /proveedores/solicitudes-ordenes/:solicitudId

Actualiza una solicitud de orden de compra existente.

Parámetros

Nombre Ubicación Descripción
solicitudId path ID de la solicitud a actualizar

Cuerpo de la Solicitud

{ "id_administrador": 2, "estado": 1, "fecha_orden_compra": "2025-05-22", "fecha_recepcion": "2025-05-27", "detalle_solicitud": [ { "id_solicitud_orden_detalle": 1, "id_producto": 15, "unidades": 12 }, { "id_producto": 30, "unidades": 8 } ] }

Respuesta

{ "title": "Actualización Exitosa", "msg": "La solicitud de orden de compra fue actualizada con éxito", "type": "success", "solicitud": { "id_solicitud_orden": 1, "id_usuario": 5, "id_administrador": 2, "estado": 1, "fecha_orden_compra": "2025-05-22", "fecha_recepcion": "2025-05-27", "activo": 1, "createdAt": "2025-05-12T12:30:00.000Z", "updatedAt": "2025-05-12T14:15:00.000Z", "usuario_solicitante": { "id_usuario": 5, "nombre": "Juan Pérez" }, "administrador": { "id_usuario": 2, "nombre": "Ana Gómez" }, "DetalleSolicitudOrdenCompras": [ { "id_solicitud_orden_detalle": 1, "id_solicitud_orden": 1, "id_producto": 15, "unidades": 12.00, "activo": 1, "Producto": { "id_producto": 15, "nombre": "Producto A", "codigo": "PA001" } }, { "id_solicitud_orden_detalle": 3, "id_solicitud_orden": 1, "id_producto": 30, "unidades": 8.00, "activo": 1, "Producto": { "id_producto": 30, "nombre": "Producto C", "codigo": "PC003" } } ] } }

DELETE /proveedores/solicitudes-ordenes/:solicitudId

Elimina una solicitud de orden de compra (marcándola como inactiva).

Parámetros

Nombre Ubicación Descripción
solicitudId path ID de la solicitud a eliminar

Respuesta

{ "id_solicitud_orden": 1, "msg": "Solicitud de orden de compra eliminada correctamente", "type": "success" }

DELETE /proveedores/solicitudes-ordenes/detalle/:detalleId

Elimina un detalle específico de una solicitud de orden de compra.

Parámetros

Nombre Ubicación Descripción
detalleId path ID del detalle a eliminar

Respuesta

{ "id_solicitud_orden_detalle": 1, "msg": "Detalle de solicitud de orden de compra eliminado correctamente", "type": "success" }

Estructura de la Base de Datos

-- Tabla principal de solicitudes de órdenes de compra CREATE TABLE IF NOT EXISTS tbl_solicitudes_orden_de_compras ( id_solicitud_orden BIGINT(11) NOT NULL AUTO_INCREMENT, id_usuario BIGINT(11) NOT NULL, id_administrador BIGINT(11), estado TINYINT DEFAULT 0, fecha_orden_compra DATE, fecha_recepcion DATE, activo TINYINT DEFAULT 1, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id_solicitud_orden), FOREIGN KEY (id_usuario) REFERENCES tbl_usuarios(id_usuario), FOREIGN KEY (id_administrador) REFERENCES tbl_usuarios(id_usuario) ); -- Tabla de detalle de solicitudes de órdenes de compra CREATE TABLE IF NOT EXISTS tbl_solicitudes_orden_de_compras_detalle ( id_solicitud_orden_detalle BIGINT(11) NOT NULL AUTO_INCREMENT, id_solicitud_orden BIGINT(11) NOT NULL, id_producto BIGINT(11) NOT NULL, unidades DECIMAL(10,2) NOT NULL, activo TINYINT DEFAULT 1, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id_solicitud_orden_detalle), FOREIGN KEY (id_solicitud_orden) REFERENCES tbl_solicitudes_orden_de_compras(id_solicitud_orden), FOREIGN KEY (id_producto) REFERENCES tbl_productos(id_producto) );