MÓDULO OMS
Gestión de Órdenes de Pedido
Proyecto de Gestión de Cadena de Suministro aplicado a un supermercado.
Juan Mamani Pari
Mayk Oliver Pilco Supo
Ronald Vargas Ccoa

Justificación: el problema no es guardar pedidos, sino coordinarlos
En un supermercado, una orden atraviesa varias áreas. Si atención, inventario y almacén trabajan con información distinta, aparecen errores: se promete mercadería que ya estaba reservada, se pierde el seguimiento del estado o se prepara primero un pedido que tiene un plazo menos urgente.
El módulo OMS mantiene un registro común y aplica reglas antes de modificar el inventario. Esto permite saber qué se pidió, qué se confirmó, qué quedó pendiente, qué está en preparación y qué ya fue despachado o entregado.
Objetivo del proyecto y qué debe demostrar
El OMS dentro de la cadena de suministro
El OMS mantiene la orden del cliente coherente mientras pasa por distintas áreas. Atención registra la solicitud, Inventario informa la disponibilidad, Almacén prepara y despacha, Transporte continúa la entrega y Abastecimiento repone existencias cuando aparecen faltantes.
Determina si el pedido puede confirmarse sin comprometer unidades ya reservadas
AportaSKU, precio, stock físico y stock reservado.
El OMS registrareservas al confirmar y salidas al despachar.
ReglaDisponible = Físico − Reservado.
Análisis del problema: actores, entradas, salidas y alcance
Actores
Operador de atención: registra, consulta y cancela dentro de las reglas. Almacén y despacho: consulta la lista de preparación y actualiza preparación, despacho y entrega. Administrador: carga catálogo, actualiza existencias y revisa resúmenes.
Entradas
Cliente, momento de registro, límite de preparación, SKU, cantidades, catálogo, ID de pedido, acción y responsable.
Salidas
ID correlativo, total, estado, motivo de faltante, lista ordenada de confirmados, historial y resumen por estado.
Alcance
Una sola sede, datos simulados y pedidos completos. El OMS coordina con inventario, almacén, despacho y el traspaso hacia transporte; quedan fuera pagos, compra a proveedores, optimización de rutas y vehículos, lotes, vencimientos, devoluciones posteriores al despacho y concurrencia entre varias cajas.
Requerimientos y restricciones que condicionan el diseño
Requerimientos funcionales
RF01–RF03. Registrar un ID único, validar el detalle y localizar SKU en un catálogo ordenado.
RF04–RF07. Calcular total, reservar todo o nada, ordenar confirmados y consultar pedidos por ID.
RF08–RF12. Controlar estados, cancelar con liberación, despachar una sola vez, reintentar pendientes y guardar consistentemente.
Restricciones e invariantes
Hasta 2 000 productos, 1 000 pedidos y 50 líneas por pedido; de 1 a 999 unidades por SKU agrupado.
No se permiten entregas parciales ni sustituciones automáticas. Si falta un producto, el pedido queda pendiente.
0 ≤ reservado ≤ físico
disponible = físico − reservado
Estructuras de datos y ciclo de vida de la orden
Vector ordenado por SKU con nombre, precio, stock físico y stock reservado.
Cabecera, detalle normalizado e historial; conserva el orden de registro.
Una línea por SKU después de agrupar productos repetidos.
Referencias a pedidos confirmados, ordenadas sin copiar el pedido completo.
Memoria temporal usada durante la mezcla de Merge Sort.
Diseño algorítmico del OMS
El diseño combina secuencia para registrar, condiciones para aceptar o rechazar operaciones, ciclos para recorrer productos y pedidos, y recursividad para ordenar. Merge Sort no decide quién recibe stock escaso: la reserva ocurre antes; el ordenamiento organiza únicamente los pedidos ya confirmados.
Localiza un SKU en el catálogo de productos ordenado.
O(log m)Merge Sort por SKU + recorrido para unificar repetidos.
O(k log k)Comprueba todo y después reserva todo.
O(u)Construye la lista de preparación desde el registro de pedidos.
O(N)Ordena la lista de preparación por límite y registro de forma estable.
O(q log q)Localiza un pedido por ID en el registro de pedidos.
O(N)Autoriza únicamente cambios de estado permitidos.
O(1)*Pseudocódigo de registro y diagrama de flujo
Lógica del registro antes de modificar inventario
El pseudocódigo resume la secuencia principal del módulo: validar, normalizar, localizar productos, calcular el total, intentar confirmar y guardar un estado coherente.
REGISTRAR_PEDIDO(datos, catalogo, pedidos)
validar cabecera y líneas
detalle = NORMALIZAR_DETALLE(datos.detalle)
para cada línea de detalle:
pos = BUSCAR_PRODUCTO(catalogo, línea.SKU)
fijar precio y acumular total
crear pedido con estado RECIBIDO
INTENTAR_CONFIRMAR(pedido, catalogo)
guardar pedido, inventario e ID siguiente
devolver ID, estado, total y observaciones
Un dato incorrecto termina la operación antes de tocar existencias o reservas.
Si falta un SKU, el pedido queda pendiente y no se inmoviliza una parte del pedido.
Pedido, inventario e identificador siguiente deben conservarse como un mismo estado lógico.
Búsqueda binaria
Uso en el OMS: localizar un SKU dentro del catálogo de productos previamente ordenado.
Cada comparación toma el elemento central. Según el resultado, el OMS descarta la mitad que ya no puede contener el SKU.
Normalización de detalle
Usa Merge Sort por SKU y después un recorrido para consolidar productos repetidos.
El pedido puede repetir un producto en líneas distintas. Validarlas por separado puede ocultar la cantidad total solicitada.
Validación y reserva en dos pasadas
Primero verifica todos los SKU; solo después modifica las reservas.
Primero se comprueba el pedido completo. Solo si no existe ningún faltante se modifica el stock reservado.
Filtro de pedidos confirmados
Construye la lista de preparación con los pedidos que realmente pueden pasar a almacén.
Merge Sort no debe considerar cancelados, pendientes ni pedidos que ya están en preparación. El filtro entrega únicamente los confirmados vigentes.
Merge Sort
Uso en el OMS: ordenar la lista de preparación por límite de preparación y luego por momento de registro.
El OMS toma solo pedidos confirmados y prioriza el límite de preparación; el registro sirve de desempate.
Búsqueda lineal
Uso en el OMS: localizar un pedido por ID dentro del vector de pedidos.
La búsqueda compara cada identificador hasta encontrar el objetivo o llegar al final.
Control de transiciones de estado
Autoriza únicamente cambios definidos por las reglas del pedido.
Los estados resaltados son los únicos destinos permitidos desde el estado actual.
Eficiencia y estructura tecnológica
Estructura tecnológica
C++: implementación de los algoritmos, estructuras de datos y reglas principales del OMS.
ASP.NET Core + Blazor (.NET 10): interfaz interactiva, manejo de estado y eventos táctiles.
HTML + CSS: estructura visual, distribución de las diapositivas y adaptación a pantalla grande.
JavaScript: pantalla completa, ampliación de diagramas y desplazamientos automáticos.
Visual Studio: edición, compilación y depuración del proyecto.
Ubuntu 26.04 + Nginx: entorno de ejecución y servidor web para la aplicación.
Plan de pruebas y criterios de aceptación
Cronograma de actividades y diagrama de Gantt
Presupuesto actualizado para implementación y demostración
Esta estimación corresponde a la etapa completa del proyecto: análisis, implementación, pruebas, integración de la interfaz interactiva y recursos técnicos de demostración. Se diferencia el desembolso previsto del aporte humano valorizado.
Referencias y anexos: cómo se documenta el funcionamiento del OMS
Amorim, Eng-Larsson & Rooderkerk
Fallas en el cumplimiento de pedidos y efecto sobre compras posteriores. Journal of Retailing, 101(3), 382–408.
10.1016/j.jretai.2025.04.008Paira, Chandra & Alam
Trabajo sobre el proceso de división y mezcla de Merge Sort. Procedia Computer Science, 93, 982–987.
10.1016/j.procs.2016.07.292Prencipe et al.
Relación entre datos de pedidos, OMS, almacén y distribución de compras de alimentos. Research in Transportation Economics, 104, 101429.
10.1016/j.retrec.2024.101429
Gracias por su atención
Pasemos a la demostración
Escanea para abrir la demostración