Soporte y documentación

Manual de Micaela

Cómo operar la plataforma de abastecimiento DDMRP: del sugerido de pedido de cada tienda a la orden de compra al proveedor, pasando por los datos, los parámetros del amortiguador, la administración de usuarios y la API de los servicios.

Soporte

Cómo pedir ayuda

Micaela la construye un equipo pequeño, así que escribes directamente a quien conoce el producto por dentro. No hay formularios ni niveles de escalamiento.

Escríbenos

Dudas de uso, un dato que no cuadra o una idea para el producto.

brccesar@hotmail.com

Antes de escribir

Muchas dudas frecuentes ya están resueltas con su causa y su solución.

Ver solución de problemas

Integrar con tus sistemas

El contrato completo de los tres servicios, generado del código fuente.

Ir a la referencia de la API

Qué incluir en tu mensaje

Con estos cuatro datos casi siempre se resuelve en la primera respuesta:

  • La pantalla donde pasa, y la tienda o el producto concreto si aplica.
  • Qué esperabas que ocurriera y qué ocurrió en su lugar.
  • El mensaje de error completo, si apareció alguno.
  • La fecha y hora aproximada: con eso ubicamos el evento en la auditoría.
Tú mismo puedes ver el rastro

Si tienes permiso de administrador, la pantalla de Auditoría registra cada acción con su usuario, su resultado y su detalle técnico. Suele responder sola la pregunta de «quién cambió esto».

Empezar

Qué es Micaela

Micaela calcula, tienda por tienda y producto por producto, cuánto hay que pedir hoy para no quedarse sin mercancía ni acumular inventario muerto. El motor es DDMRP (Demand Driven MRP): en vez de un mínimo/máximo fijo, cada ítem tiene un amortiguador de tres zonas que se recalcula con la demanda real.

Pantalla de inicio de Micaela con el resumen de la operación
Figura 1 La pantalla de inicio: accesos rápidos, estado de los amortiguadores y cifras de la compañía.

La plataforma se organiza en siete grupos de pantallas, que son los mismos del menú lateral:

Pedidos

Sugerido de reposición de CEDI a tienda, carrito por tienda y analítica del proceso.

Compras

Sugerido de compra al proveedor desde el CEDI, órdenes de compra y forecast de venta/compra.

Inteligencia

Copiloto conversacional sobre tus datos y motor de pronóstico que recalcula los amortiguadores.

Datos

Conexión al ERP, datasets sincronizables y cargue de archivos planos.

Configuración

Parámetros del amortiguador, bloques que se piden por estiba y fechas especiales.

Administración

Geografía, tiendas, productos, buffers, usuarios, roles, auditoría y licencia.

Plataforma

Gestión de licencias de todas las empresas cliente. Solo para el proveedor.

El menú no es igual para todos

Cada ítem del menú está atado a un permiso de página. Si no ves una pantalla que aparece en este manual, es porque tu rol no tiene ese permiso o porque la funcionalidad no está incluida en la licencia de tu compañía. En la sección Roles predefinidos está el detalle de qué ve cada rol.

Sobre las capturas de este manual

Todas las imágenes son de la aplicación real ejecutándose con la compañía de demostración. Haz clic en cualquiera para verla ampliada.

Empezar

Conceptos DDMRP

Todo lo que hace la plataforma se apoya en cinco ideas. Vale la pena leerlas una vez: los nombres se repiten en cada pantalla.

El amortiguador y sus zonas

Cada combinación de producto + tienda (o producto + CEDI, en compras) tiene un amortiguador con tres zonas apiladas. La suma de las tres es el nivel objetivo (Top of Green), que es a donde el sugerido busca llevar el inventario.

Zona roja

Seguridad. Cubre la variabilidad de la demanda durante el lead time. Entrar aquí es riesgo real de quiebre.

Zona amarilla

Consumo durante el lead time. Estar aquí es normal: es la señal de que toca reponer.

Zona verde

Tamaño de lote y frecuencia de pedido. Define cada cuánto se pide y cuánto.

Exceso

Por encima del nivel objetivo. No es una zona DDMRP: es la señal de sobre-inventario.

Posición de inventario

Es lo que la plataforma compara contra las zonas. No es el stock físico: incluye lo que ya viene en camino.

Posición = existencia en tienda + en tránsito

En el sugerido verás dos semáforos por línea: el buffer actual (con la posición de hoy) y el buffer posterior al pedido (sumando lo que estás pidiendo). El segundo cambia en vivo mientras editas la cantidad, y es la forma de ver si tu ajuste manual deja el ítem donde debería.

Estados que muestra la interfaz

EstadoCuándo apareceQué significa para el analista
Sin parámetroEl nivel objetivo es cero o no está calculado.El ítem no tiene amortiguador. Revisa Parametrización de buffers.
CríticoPosición dentro de la zona roja.Quiebre inminente. Es lo primero que hay que despachar.
AlertaPosición en la zona amarilla.Hay que reponer. Es el estado normal de un ítem que rota.
ÓptimoPosición en la zona verde.Cubierto. Normalmente no necesita pedido.
ExcesoEntre el nivel objetivo y 1,5 veces el objetivo.Sobra inventario. Evita pedir más.
Sobre-stockMás de 1,5 veces el nivel objetivo.Inventario inmovilizado. Candidato a traslado o promoción.

ADU y variabilidad

El ADU (Average Daily Usage) es la demanda diaria promedio que el motor aprende del historial de ventas. El CV (coeficiente de variación) mide qué tan errática es esa demanda. Entre los dos determinan el tamaño de las zonas: más demanda o más variabilidad, amortiguador más grande.

Sin ventas no hay amortiguador

El ADU sale del historial de ventas. Si nunca cargaste ventas, los amortiguadores arrancan en cero y el sugerido no propone nada. Cárgalas en Cargar datos o sincronízalas desde el ERP en Datos maestros.

Cascada de parámetros

Los factores del cálculo se resuelven en cascada: global → categoría → producto. Lo más específico gana. Además, la Parametrización de buffers permite fijar valores por nivel geográfico (empresa, zona, región, minirregión o tienda).

Empezar

Unidades de pedido

Un mismo producto se pide de formas distintas según cómo se mueva físicamente. La plataforma calcula siempre en unidades de inventario y después convierte a la unidad operativa que elijas por línea.

UnidadQué esDónde está disponible
UIUnidad de inventario. Es la unidad interna del cálculo y la que siempre se envía al ERP.Siempre. No se elige: es el resultado.
UEUnidad de empaque (caja). Es la unidad por defecto del sugerido.Pedidos y compras. Siempre disponible.
EstibaPallet completo. Se calcula con el factor de estiba del producto.Solo si el producto paletiza (tiene factor de estiba).
Media estibaMedio pallet.Solo en pedidos y solo si el producto admite media. Nunca se propone por defecto: la decide el analista.
Peso (kg)Cantidad en kilos, convertida a UI con el peso por unidad.Pedidos y compras, si el producto maneja peso.

Qué unidad se propone por defecto

  • En pedidos: estiba si el producto paletiza y además es de alta rotación (clase AA o A) o su bloque está marcado como «bloque de estiba» en Parámetros globales. En cualquier otro caso, UE.
  • En compras: estiba si el producto paletiza; si no, peso cuando maneja peso; si no, UE. La estiba de compra siempre es completa.

Redondeo por umbral

Al pasar de UI a estibas la cantidad casi nunca da exacta. El sistema aplica un umbral (por defecto configurado a nivel de empresa, con posibilidad de anularlo por producto): si el sobrante supera el umbral, se sube a la siguiente estiba; si no, se recorta. Cuando el ítem está en zona roja crítica y el redondeo lo dejaría en cero, se fuerza la unidad mínima. Pasa el cursor sobre la celda Estiba / media para ver el desglose del redondeo de esa línea.

Empezar

Ingreso y sesión

ruta /login
Pantalla de inicio de sesión de HardSupply Micaela
Figura 2 Ingreso con correo y contraseña, y los botones de SSO cuando están configurados.

Hay tres formas de entrar:

  • Correo y contraseña. La contraseña tiene mínimo 8 caracteres. El ojo del campo permite verla mientras la escribes.
  • Google o Microsoft (SSO). Los botones solo se habilitan si el administrador configuró las credenciales del proveedor en el backend. Si no, aparecen deshabilitados con la explicación.
  • Enlace desde la app principal. Si llegas embebido desde otra aplicación corporativa, la sesión se canjea automáticamente y entras sin volver a autenticarte.

Tras entrar, la plataforma carga tus permisos y arma el menú. El avatar del encabezado muestra tus iniciales y desde ahí se cierra la sesión.

Si el ingreso falla

«No se pudo conectar con el servidor» significa que el backend no responde, no que tus datos estén mal. «Credenciales inválidas» sí es usuario o contraseña incorrectos.

Empezar

Términos y condiciones

ruta /terminos permiso ninguno — accesible para todos

Cuando el proveedor publica una versión nueva de los términos, la plataforma bloquea todas las escrituras hasta que la firmes. Puedes seguir consultando información, pero no registrar cambios. Al intentar guardar algo, el sistema te lleva a esta pantalla.

Pantalla de términos y condiciones dentro del producto
Figura 3 El documento vigente. Cuando no hay versión publicada, la pantalla lo dice y deja seguir trabajando.
  1. Lee el documento. El botón de aceptar permanece deshabilitado hasta que te desplaces al final del texto.
  2. Pulsa Acepto la versión X. Queda registrada la firma con fecha.
  3. Vuelves automáticamente a la pantalla donde estabas.

La pantalla también se puede abrir a mano para releer el documento vigente. En ese caso muestra qué versión firmaste y cuándo. Si estás al día, el único botón es Volver a trabajar.

No hay «más tarde»

A propósito no existe la opción de posponer: mientras no firmes, ninguna acción de escritura funciona en toda la plataforma.

Empezar

Avisos de licencia

Bajo el encabezado puede aparecer una franja permanente con el estado del licenciamiento. Es informativa, pero cambia lo que puedes hacer.

AvisoSituaciónEfecto
RojoLicencia vencida, suspendida, cancelada o no configurada.Modo solo lectura: puedes consultar, no guardar.
Ámbar (demo)Licencia de tipo demo activa.Indica los días que quedan.
Ámbar (por vencer)Faltan 15 días o menos para el vencimiento.Recordatorio de renovación.

Además, la licencia decide qué funcionalidades están habilitadas (Pedidos, Compras, Pronóstico, Copiloto, Datos maestros, Parámetros DDMRP). Una funcionalidad no licenciada no aparece en el menú aunque tu rol tenga el permiso. Consulta el detalle en Mi licencia.

General

Inicio

ruta /dashboard permiso page:dashboard.view

La pantalla de aterrizaje. Resume el estado del abastecimiento y ofrece los accesos que más se usan a diario.

Qué muestra

  • Accesos rápidos al sugerido de pedidos, al carrito (con líneas y valor actuales) y a los parámetros DDMRP.
  • Estado de buffers. Una barra con el reparto de los amortiguadores entre quiebre, reponer, óptimo y exceso, calculado con los buffers reales de la compañía.
  • Tu compañía. Conteos de productos, tiendas, pedidos (con los pendientes), órdenes de compra y usuarios.
  • Productos recientes. Las últimas seis referencias del maestro, con categoría y precio.
  • Insights con IA y accesos rápidos a cargar datos, parámetros, reportes y copiloto.
Sobre los indicadores del panel

El reparto de buffers y el conteo de productos en riesgo salen de datos reales. En cambio, los indicadores Nivel de servicio (OTIF) y Precisión del pronóstico, junto con los textos de las tarjetas de insights, son valores representativos: todavía no hay un endpoint de KPIs que los alimente. Para cifras operativas confiables usa Analítica de pedidos y Analítica de compras.

Pedidos

Analítica de pedidos

ruta /pedidos-analitica permiso page:pedidos.view

El tablero de control del proceso de reposición. Va primero en el menú del módulo a propósito: se mira antes de entrar a operar el sugerido.

Tablero de analítica de pedidos DDMRP
Figura 4 Tarjetas KPI con tendencia, evolución de pedidos y valor, y el reparto de referencias por zona.

Bloques del tablero

BloqueQué responde
Tarjetas KPICifras clave del período con miniatura de tendencia y variación contra el período anterior. La flecha y el color indican si el movimiento es favorable.
Evolución de pedidos y valorCombinación de barras (valor pedido) y línea (unidades) sobre doble eje.
Estado de buffersDona con el reparto de referencias por zona.
Flujo neto del bufferEvolución del flujo neto con las bandas verde, amarilla y roja de fondo y la línea de reposición.
Pedidos por prioridadDona con el reparto de pedidos según la prioridad DDMRP.
Cobertura del bufferDías de demanda cubiertos.
Quiebres de bufferTotal del período con tendencia.
Exactitud de reabastecimientoMedidor de aguja con el porcentaje de acierto.
Tiempo de reposiciónLead time promedio ponderado, con tendencia.
Referencias críticasTabla por referencia: % de pedidos urgentes, cobertura actual, estado del buffer, último pedido y lead time real.
Desempeño de proveedoresOTIF por proveedor, pedidos a tiempo sobre totales y lead time promedio.

La granularidad de las series (diaria, semanal o mensual) la define la consulta que alimenta el tablero; la carga inicial es diaria.

Pedidos

Sugerido de pedidos

ruta /pedidos permiso page:pedidos.view

La pantalla central de la operación diaria. Responde una sola pregunta — qué le pido hoy a esta tienda — y deja ver el porqué de cada cifra. Toda la matemática DDMRP se calcula en el servidor; aquí se revisa, se ajusta y se envía.

Sugerido de pedidos con una fila expandida mostrando el detalle del ítem y sus movimientos
Figura 5 El sugerido con la fila de Arroz Blanco 500g expandida: abastecimiento en estibas, indicadores del ítem, zonas del amortiguador y movimientos recientes.

El flujo, paso a paso

  1. Elige la región y la tienda en los selectores del encabezado. Al cambiar de tienda se recarga el sugerido y se limpia la selección.
  2. Filtra para acotar el trabajo: por bloque, categoría, clase de rotación, días de inventario o «solo con pedido».
  3. Revisa cada línea. Compara el buffer actual con el posterior al pedido; expande las que no cuadren para ver de dónde sale la cifra.
  4. Ajusta las cantidades donde el criterio comercial lo pida, y excluye lo que no va.
  5. Envía al carrito. Si hay líneas seleccionadas se envían solo esas; si no hay ninguna seleccionada, se envía todo el sugerido con cantidad mayor que cero.

El encabezado: contexto y cifras del pedido

Arriba a la izquierda, el código y el nombre de la tienda con su ruta geográfica (zona · región — minirregión); a la derecha, los dos selectores y el botón Enviar al carrito. Debajo, cinco tarjetas que resumen el pedido y que responden al filtro activo, no al catálogo completo:

TarjetaQué cuentaPara qué sirve
Ítems en portafolioReferencias visibles con el filtro actual.El tamaño del trabajo que tienes enfrente.
Con pedidoCuántas de esas llevan cantidad mayor que cero.Si es muy inferior al portafolio, casi todo está cubierto.
Unidades a pedirTotal en unidades de inventario.El volumen que va a mover el despacho.
Valor estimadoCantidad × precio, sumado.El costo del pedido antes de enviarlo.
Estado del amortiguadorCuántas referencias hay en cada zona: roja, amarilla, verde y exceso.La foto de salud del surtido de esa tienda.

Filtros

Se combinan entre sí y afectan tanto a la tabla como a las cinco tarjetas:

  • Bloque y Categoría — para trabajar por sección de la góndola.
  • Pareto — clase de rotación. Útil para atender primero AA y A.
  • Días de inventario — bajo (menos de 3 días), medio (entre 3 y 7) o alto (más de 7).
  • Solo con pedido — esconde todo lo que el sistema no propone pedir.
  • Buscar PLU o ítem — texto libre sobre código y descripción.

El botón Excluir, a la derecha, se activa cuando hay líneas seleccionadas con las casillas.

Columnas de la tabla

La tabla tiene dos grupos: Información ítem (el estado de hoy) y Pedido hoy (lo que se va a pedir, sobre fondo destacado).

ColumnaGrupoQué es
PLUÍtemCódigo del producto.
Nombre del ítemÍtemDescripción del producto.
CategoríaÍtemCategoría comercial.
UEÍtemUnidad de empaque del producto.
BloqueÍtemAgrupación operativa. La etiqueta es configurable por empresa.
ParetoÍtemClase de rotación (AA, A, B, C por defecto). La etiqueta y las clases son configurables.
Días inv. actualÍtemCobertura en días con la existencia de hoy.
Existencia tiendaÍtemStock físico en la tienda.
Cant. ofc. despachoÍtemCantidad ya oficializada para despacho.
En tránsitoÍtemMercancía en camino a la tienda.
Cantidad UEPedidoCantidad a pedir en unidades de empaque. Cuando la línea se pide en estiba, esta cifra queda derivada de las estibas y no se edita directamente.
UnidadesPedidoEquivalente en unidades de inventario. Es lo que llega al ERP.
Estiba / mediaPedidoSelector de unidad operativa y el control de cantidad en esa unidad, con el equivalente en UI debajo.
Días con pedidoPedidoCobertura resultante si se pide esa cantidad.
Fecha de entregaPedidoCuándo llegaría a la tienda.
Buffer actualPedidoSemáforo con la posición de hoy.
Buffer pos. pedidoPedidoSemáforo con la posición tras el pedido. Cambia en vivo al editar.

Al final de cada fila hay dos botones: el globo de diálogo, que abre la explicación del sugerido, y la flecha, que despliega el detalle del ítem.

El orden de la tabla ya está priorizado

Las filas no vienen alfabéticas ni por código: llegan ordenadas por estado del amortiguador — primero lo crítico, después la alerta, y así — y dentro de cada estado, por volumen de mayor a menor. Trabajar de arriba hacia abajo es atender primero lo que está a punto de quebrarse.

Editar cantidades y cambiar de unidad

Cada línea tiene un control de más/menos y un campo numérico. Al modificar una cantidad respecto al sugerido original aparece la marca editado, y el tooltip muestra cuál era el valor propuesto. Los días de cobertura y el semáforo posterior se recalculan al instante.

El desplegable de la columna Estiba / media ofrece solo las unidades que el producto admite. Al cambiarla, el sistema vuelve a proponer la cantidad en esa unidad aplicando el redondeo por umbral; al volver a UE se restaura el sugerido original de la línea. Bajo el control se lee siempre el equivalente en UI, que es lo que viaja al ERP.

El detalle del ítem

Es la parte que explica el número. Se abre con la flecha del final de la fila y muestra, para ese producto y esa tienda, de dónde sale el sugerido. La cabecera indica el ítem y la ventana de análisis usada para los promedios (8 días en el ejemplo).

Abastecimiento en estibas

Solo aparece si el producto paletiza. Muestra primero los factores del maestro y luego la conversión completa, que se lee de izquierda a derecha:

Dato del ejemploQué significa
factores UA 12 · estiba 30 · media 15Una unidad de agrupación trae 12 UI; una estiba son 30 UA; una media, 15 UA.
Sugerido 624 UILo que pide el cálculo DDMRP, antes de redondear a una unidad transportable.
→ 4 medias estibasLa unidad operativa elegida y la cantidad ya redondeada.
(4 × 180 UI = 720 UI al ERP)El desglose: 180 UI por media estiba (12 × 15), y el total que recibe el ERP.
umbral 25%El umbral de redondeo aplicado. Por encima de él se sube a la siguiente unidad; por debajo se recorta.

Cuando corresponde, la línea añade una marca: mínimo forzado (zona roja) si el redondeo habría dejado en cero un ítem crítico, u omitido si el sugerido no alcanza la unidad mínima. Si el producto se maneja por peso, en lugar de este bloque —o además de él— aparece Compra por peso, con los kilos por UI y el costo por kilo.

Indicadores del ítem

IndicadorQué mideCómo leerlo
Promedio de participaciónQué porcentaje de las unidades vendidas de su bloque se lleva este ítem.Un valor alto señala la referencia que sostiene el bloque: quebrarla duele más. Da 100 % cuando es la única del bloque.
Unidades vendidasVenta del período de análisis.La base del promedio diario.
Promedio diario unidadesEl ADU observado en la ventana.Es el motor del tamaño del amortiguador. Contrástalo con el ADU del pronóstico.
Total unidad de empaqueConsumo diario expresado en unidades de empaque.Traduce el ADU al lenguaje del despacho.
Vendido (ventana)Salidas por venta en el período.Debe parecerse a «unidades vendidas»; si difiere mucho, revisa los movimientos.
Mermado (ventana)Unidades perdidas por merma. Se resalta en ámbar.Una merma alta explica por qué el inventario baja sin venta que lo respalde.
En tránsitoLo que ya viene en camino.Cuenta dentro de la posición de inventario: por eso a veces no hay que pedir aunque el stock esté bajo.
Última vez pedidoFecha y cantidad del pedido anterior.Evita pedir dos veces lo mismo en días seguidos.
Mín / MáxLos límites de pedido del ítem.Acotan lo que el sistema puede proponer.
AmortiguadorEl nivel objetivo: la suma de las tres zonas.Es el techo al que apunta la reposición.
Zonas (R / A / V)Barra con el tamaño relativo de las zonas roja, amarilla y verde.Muestra cómo está repartido el amortiguador. Al hacer clic abre la evolución.

Evolución del amortiguador

El enlace ver evolución, sobre la barra de zonas, despliega una gráfica de los últimos 45 días: cómo se movió la posición de inventario respecto a las zonas. Es la forma de distinguir un quiebre puntual de un amortiguador mal dimensionado — si la línea vive pegada al rojo, el problema no es el pedido de hoy sino la parametrización.

Movimientos de inventario recientes

Cierra el detalle con el movimiento día a día: fecha, tipo (venta, insumo, merma, baja…), cantidad — negativa en rojo cuando sale, positiva en verde cuando entra — y la referencia del documento que lo originó. Es el último nivel de detalle antes de ir al ERP: si una cifra no cuadra, aquí se ve exactamente qué la movió.

Cómo usar el detalle en la práctica

Cuando una línea te sorprenda, el orden que más rápido resuelve es: mira el promedio diario (¿el ADU tiene sentido?), luego en tránsito (¿ya viene en camino?), después mermado (¿se está perdiendo?) y por último los movimientos (¿qué pasó exactamente?).

Explicación del sugerido

El botón ¿Por qué este sugerido? de cada línea abre un chat que explica el cálculo con los datos DDMRP reales de esa fila: stock, zonas, posición del buffer y cantidad propuesta. Trae preguntas sugeridas: por qué este sugerido, cómo se calcula la cantidad, qué pasa si no se pide y cuándo llega.

Excluir y enviar

Las casillas de la izquierda seleccionan líneas; la del encabezado marca toda la página. Con una selección activa, Excluir saca esos ítems de la vista y los deja en cero, y Enviar al carrito manda solo los seleccionados. Sin selección, el envío arrastra todo el sugerido con cantidad mayor que cero.

Paginación

La tabla pagina de 20 en 20, ajustable a 50 o 100. El cambio de página no pierde las cantidades que hayas editado ni la selección.

Pedidos

Carrito de pedidos

ruta /carrito permiso page:carrito.view acción carrito.enviar_siesa

Reúne lo que enviaste desde el sugerido, agrupado por tienda, para una última revisión antes de confirmar.

Carrito de pedidos con líneas agrupadas por tienda, resumen e indicadores por bloque
Figura 6 Líneas agrupadas por tienda, resumen a la derecha e indicadores por bloque con barra proporcional.

Qué puedes hacer

  • Ajustar cantidades con el control de más/menos o escribiendo el valor. Poner cero elimina la línea.
  • Quitar líneas una por una, o vaciar el carrito completo.
  • Confirmar y enviar a Siesa. El botón solo aparece si tu rol tiene el permiso carrito.enviar_siesa; si no, verás el aviso de que no lo tienes.

Paneles laterales

  • Resumen: tiendas, líneas, unidades de empaque y valor total.
  • Indicadores por bloque: líneas, unidades y valor de cada bloque, con barra proporcional para ver de un vistazo dónde se concentra el pedido.
Alcance actual de la confirmación

El carrito vive en la sesión del navegador: si recargas la página se pierde. Y «Confirmar y enviar a Siesa» hoy registra la confirmación en pantalla; la integración que empuja el pedido al ERP todavía no está conectada en esta pantalla. Para documentos que sí se persisten, mira Órdenes de compra.

Compras

Analítica de compras

ruta /compras-analitica permiso page:compras.view

El tablero del área de compras, organizado en seis pestañas. Los datos se cargan con granularidad mensual.

Tablero de analítica de compras con sus pestañas
Figura 7 Pestaña «Resumen general»: KPIs, gasto contra ahorro y reparto por categoría.
PestañaContenido
Resumen generalKPIs principales y secundarios, combinado de gasto y ahorro sobre doble eje, dona de gasto por categoría y línea de cumplimiento de entregas.
Eficiencia del procesoKPIs de eficiencia y tendencia del tiempo de ciclo de compra.
Ahorro y gastoKPIs de ahorro, dona de fuentes de ahorro y combinado de gasto contra presupuesto.
ProveedoresKPIs de proveedores, reparto del gasto entre ellos y tabla de desempeño con puntaje (alto ≥ 90, medio ≥ 80, bajo por debajo).
CumplimientoKPIs de cumplimiento de las entregas comprometidas.
Categorías y artículosKPIs de producto, urgencias por categoría con barra proporcional y ranking de artículos más pedidos.

Compras

Sugerido de compras

ruta /compras permiso page:compras.view acción purchase.create

El mismo oficio que el sugerido de pedidos, pero un eslabón antes: qué comprarle al proveedor para reponer el CEDI, consolidando la demanda que vienen generando las tiendas. La mecánica de la tabla es idéntica; cambian el contexto, los datos y el resultado.

Sugerido de compras con una fila expandida mostrando el detalle del amortiguador y la conversión a estibas
Figura 8 El sugerido de compras con la fila de Gaseosa Cola 1.5L expandida: detalle del amortiguador y desglose de la compra en estibas.

Diferencias con el sugerido de pedidos

AspectoPedidosCompras
ContextoUna tienda.El CEDI. No hay selector de tienda.
Filtro principalBloque, categoría, rotación.Proveedor y categoría.
UnidadesUE, estiba, media estiba y peso.UE, estiba y peso. No hay media estiba: la estiba de compra es siempre completa.
Unidad por defectoEstiba si paletiza y rota alto; si no, UE.Estiba si paletiza; si no, peso cuando aplica; si no, UE.
ResultadoUn carrito por tienda.Órdenes de compra consolidadas por proveedor.
Detalle expandibleIndicadores de venta, evolución del amortiguador y movimientos.Datos del amortiguador y del costo, más el desglose de la conversión.

El encabezado: contexto y cifras de la compra

A la izquierda, la insignia del CEDI y el subtítulo que recuerda de qué va la pantalla. A la derecha, Ver órdenes —que lleva al listado de órdenes ya generadas— y Generar órdenes de compra, que cambia a Generar órdenes (N) cuando hay líneas seleccionadas, para que sea evidente que solo se van a emitir esas.

Debajo, seis tarjetas que responden al filtro activo:

TarjetaQué cuentaPara qué sirve
ÍtemsReferencias visibles con el filtro actual.El tamaño del trabajo.
Con compraCuántas llevan cantidad mayor que cero.Cuánto de eso realmente hay que comprar hoy.
ProveedoresProveedores distintos entre las líneas con compra.Anticipa cuántas órdenes se van a generar: una por proveedor.
UnidadesTotal en unidades de inventario.El volumen que va a recibir el CEDI.
Costo estimadoCantidad × costo, sumado.El desembolso antes de emitir.
AmortiguadorReferencias en cada zona: roja, amarilla, verde y exceso.La salud del inventario del CEDI de un vistazo.

Filtros

  • Proveedor — la lista se arma con los proveedores que aparecen en el sugerido. Filtrar por uno es la forma natural de preparar su orden.
  • Categoría — para revisar por familia de producto.
  • Solo con compra — esconde lo que no hay que comprar.
  • Buscar PLU o ítem — texto libre sobre código y descripción.

Cuando hay algún filtro activo aparece Limpiar. Excluir se habilita al seleccionar líneas e indica cuántas afectará.

Columnas de la tabla

Tres grupos: Información ítem, Estado CEDI (la situación de hoy en el centro de distribución) y Compra sugerida.

ColumnaGrupoQué es
PLU · Nombre · CategoríaÍtemIdentificación del producto.
ProveedorÍtemProveedor preferente. Es el criterio de consolidación de la orden.
UEÍtemUnidad de empaque.
Exist. CEDICEDIStock en el centro de distribución.
En tránsitoCEDIMercancía ya pedida al proveedor y en camino.
Demanda/díaCEDIConsumo diario del CEDI, es decir lo que le piden las tiendas.
Días inv.CEDICobertura actual en días.
Cantidad UECompraCantidad a comprar en unidades de empaque. Queda derivada cuando la línea se pide en estiba.
UnidadesCompraEquivalente en unidades de inventario: lo que viaja al ERP.
Estiba / cajaCompraSelector de unidad operativa y cantidad, con el equivalente en UI debajo.
Días compraCompraCobertura resultante tras recibir la compra.
Tren ent.CompraDías de tránsito del proveedor (su lead time).
Fecha reciboCompraFecha estimada de recepción en el CEDI.
Buffer actualCompraSemáforo con la posición de hoy en el CEDI.
Buffer pos. compraCompraSemáforo tras sumar lo que se está comprando. Cambia en vivo al editar.

Igual que en pedidos, cada fila termina con el globo de diálogo, que explica el sugerido, y la flecha, que abre el detalle.

Cómo se calculan aquí los semáforos

El CEDI no guarda las tres zonas por separado como sí ocurre en tienda: solo tiene el valor del amortiguador. La pantalla las deriva repartiéndolo en 40 % roja, 35 % amarilla y 25 % verde. Es una aproximación razonable para priorizar de un vistazo, pero si necesitas las zonas exactas del CEDI, el dato bueno es el de Pronóstico, no el color de esta tabla.

Editar cantidades y cambiar de unidad

Control de más/menos y campo numérico por línea, con la marca editado cuando te apartas del sugerido. El desplegable ofrece solo las unidades que el producto admite; al cambiarla, la cantidad se vuelve a proponer en esa unidad con el redondeo por umbral, y al volver a UE se restaura el sugerido original.

El detalle de la línea

Se abre con la flecha del final de la fila y tiene dos bloques.

Detalle del amortiguador

DatoQué esCómo leerlo
ProveedorProveedor preferente de la referencia.Confirma en qué orden va a caer esta línea.
AmortiguadorEl nivel objetivo del CEDI para el ítem.El techo al que apunta la compra.
Mín / MáxLímites de compra del ítem.Acotan lo que el sistema puede proponer.
Costo unitarioCosto por unidad de inventario.La base del costo estimado.
En tránsitoLo que ya viene del proveedor.Cuenta en la posición: por eso a veces no hay que comprar aunque el stock esté bajo.
Costo de la compraCantidad de esta línea × costo unitario.Se actualiza al editar la cantidad: es el impacto en pesos de tu ajuste.

Compra en estibas

Aparece si el producto paletiza, con los factores del maestro en la cabecera. Los seis campos cuentan la conversión completa; con el ejemplo de la figura:

CampoEjemploQué significa
factoresUA 6 · estiba 20 · media 10Una unidad de agrupación trae 6 UI; una estiba son 20 UA.
Sugerido (UI)245Lo que pide el cálculo DDMRP antes de redondear.
Unidad2 estibasLa unidad operativa elegida y la cantidad ya redondeada.
Paso (UI/unidad)120Cuántas UI trae cada unidad: 6 × 20.
Equivalente (UI → ERP)240Lo que realmente se le pide al proveedor: 2 × 120.
Sobrante descartado5La diferencia entre el sugerido y lo que cabe en unidades completas (245 − 240).
Umbral25 %Por encima de él se sube a la siguiente estiba; por debajo se recorta, como aquí.

Bajo los campos puede aparecer una lista de avisos: mínimo forzado por zona roja crítica cuando el redondeo habría dejado en cero un ítem urgente, o que el sugerido quedó por debajo de la unidad mínima y se omite — en ese caso DDMRP lo volverá a proponer cuando la necesidad crezca lo suficiente.

Si la referencia se compra por peso, en su lugar aparece Compra por peso, con los kilos por unidad de inventario, el costo por kilo, el peso resultante y el equivalente en UI.

Por qué mirar «sobrante descartado»

Es el indicador de si el redondeo te está costando servicio. Un sobrante pequeño frente al sugerido es sano. Uno grande y repetido en la misma referencia significa que la estiba le queda grande a esa rotación: la conversación es con el proveedor sobre el tamaño de la unidad de despacho, no con el sugerido de hoy.

Explicación del sugerido

El globo de diálogo abre el mismo tipo de chat que en pedidos, con los datos DDMRP de esa línea del CEDI: existencia, tránsito, demanda diaria, amortiguador y cantidad propuesta.

Generar las órdenes

  1. Ajusta cantidades y excluye lo que no va.
  2. Si vas a emitir solo la orden de un proveedor, fíltralo o selecciona sus líneas.
  3. Pulsa Generar órdenes de compra. Con líneas seleccionadas se generan solo con esas; sin selección, con todo lo que tenga cantidad mayor que cero.
  4. Se crea una orden por proveedor y quedan listadas en Órdenes de compra.
Si el guardado falla

El aviso lo dice de forma explícita: «Las órdenes se ven en pantalla pero NO se guardaron», seguido del motivo. Si eso ocurre, no des la orden por emitida: corrige la causa y vuelve a generar.

Compras

Órdenes de compra

ruta /ordenes-compra permiso page:ordenes-compra.view acciones purchase.approve · purchase.send

Las órdenes consolidadas por proveedor, listas para confirmar, exportar y enviar al ERP.

Órdenes de compra consolidadas por proveedor con sus indicadores y acciones
Figura 9 Indicadores de cabecera y una tarjeta por orden, con su detalle de ítems y las acciones de exportación.

Ciclo de vida de una orden

EstadoAcción disponibleResultado
BorradorConfirmarPasa a Confirmada.
ConfirmadaEnviar al ERPPasa a Enviada.
EnviadaCerrada. Se marca con el check de enviada.

Cualquier orden puede eliminarse desde el pie de su tarjeta.

Exportación

Cada orden se descarga en dos formatos:

  • .txt (Siesa) — archivo plano delimitado por barras, con la cabecera de la orden y una línea por ítem: orden, PLU, cantidad, unidad de empaque, costo, unidad operativa, cantidad en esa unidad y equivalente en UI.
  • CSV — con las mismas columnas más descripción y subtotal, para análisis en hoja de cálculo.
Invariante de integración

Sin importar en qué unidad se haya pedido — UE, estiba, media, caja o kilos — la cantidad que viaja al ERP es siempre el equivalente en unidades de inventario. La unidad operativa se transporta como información adicional.

En el encabezado hay cuatro indicadores: número de órdenes, proveedores distintos, unidades totales y costo total. Cada tarjeta muestra proveedor, fecha y hora de entrega, fecha de recibo en CEDI y el detalle de ítems con subtotales.

Persistencia

Este listado se arma en la sesión del navegador a partir de lo que generaste en el sugerido de compras: al recargar la página se vacía. Las órdenes sí quedan guardadas en el backend en el momento de generarlas.

Compras

Forecast de venta y compra

ruta /forecast permiso page:compras.view

Proyección por producto de la venta esperada y de la compra necesaria para sostenerla, con la posibilidad de intervenir a mano cada período.

Pantalla de forecast de venta y compra por producto
Figura 10 Serie histórica y proyectada del producto seleccionado, con la tabla de períodos ajustables.

Cómo se usa

  1. Selecciona el producto en el desplegable. Se cargan sus dos series: venta y compra.
  2. Revisa la gráfica: histórico real, venta proyectada y compra proyectada sobre los mismos períodos.
  3. Ajusta los períodos futuros que lo necesiten escribiendo un valor. Dejar el campo vacío devuelve el valor base calculado.
  4. Si el ajuste debe afectar el abastecimiento, usa Realimentar buffer: actualiza el ADU del amortiguador y queda registrado en auditoría.

Controles

  • Unidades / Valor. Alterna la vista entre cantidades y pesos, multiplicando por el precio de venta del producto.
  • Recalcular. Recalcula el forecast del producto seleccionado o de toda la compañía.
  • Plan de compra. Consolidado de los próximos seis períodos.
  • Exportar CSV. Descarga período, tipo, venta base, ajuste, venta final, uplift, venta real y compra final.

El campo uplift refleja el multiplicador aplicado por las fechas especiales que caen en ese período.

Inteligencia

Copiloto (IA)

ruta /copiloto permiso page:copiloto.view

Un asistente conversacional que consulta la API real de tu compañía. No inventa cifras: llama a herramientas del sistema y responde con lo que devuelven.

Pantalla del copiloto con preguntas sugeridas
Figura 11 El copiloto con sus preguntas de arranque. Cuando no hay credenciales del modelo, avisa cómo conectarlo.

Qué puede hacer

El copiloto tiene acceso a cuatro herramientas, y cada respuesta muestra cuáles usó:

HerramientaPara qué
buffersConsultar el estado de los amortiguadores, por ejemplo qué productos están en zona roja.
recálculo IADisparar el recálculo de buffers desde la conversación.
datos maestrosListar los datasets configurados y cuándo se sincronizaron.
resumenDar un panorama general de la compañía.

La pantalla ofrece preguntas de arranque y el botón Nueva conversación para empezar de cero. En el título se indica el proveedor activo: Claude vía Vertex AI o la API de Claude.

Si aparece «Copiloto no configurado»

Significa que el backend no tiene credenciales del modelo. Es una tarea de administración de la plataforma: hay que definir el proyecto y la región de Vertex AI (o una clave de API), autenticar y reiniciar el servicio.

Inteligencia

Pronóstico (IA)

ruta /pronostico permiso page:pronostico.view acción ddmrp.recalcular_buffers

Aquí es donde el amortiguador se pone al día. El motor aprende la demanda del historial de ventas y vuelve a dimensionar las zonas de cada buffer.

Tabla de buffers con ADU, variabilidad, zonas y nivel objetivo
Figura 12 Un renglón por buffer: ADU, variabilidad, método, tamaño de cada zona, nivel objetivo y zona actual.

Recalcular

  1. Pulsa Recalcular buffers (IA).
  2. El motor estima el ADU y la variabilidad de cada ítem y redimensiona zona roja, amarilla y verde y el nivel objetivo.
  3. La tabla se actualiza con los valores nuevos, el método usado y la marca de tiempo del último cálculo.

Métodos de pronóstico

MétodoCuándo lo elige el motor
Croston (intermitente)Demanda esporádica, con muchos días en cero. Típico de referencias de baja rotación.
Suavizado exponencialDemanda continua con tendencia.
Media móvilDemanda estable, sin patrón marcado.

Historial demo

El botón Generar historial demo crea 90 días de ventas sintéticas para poder probar el recálculo sin datos reales. Es una herramienta de demostración y pruebas: en un ambiente productivo el historial debe venir del ERP o de un cargue real.

Datos

Datos maestros

ruta /datos-maestros permiso page:datos-maestros.view acción data.sync

La conexión viva con el ERP. Aquí se define una consulta SQL por cada conjunto de datos que la plataforma debe traer, y con qué frecuencia refrescarlo.

Pantalla de datos maestros con el catálogo de datasets
Figura 13 Catálogo de datasets con su estado de sincronización y las acciones de previsualizar, sincronizar y ver registros.

Configurar la conexión

  1. Abre el editor de conexión e ingresa host, puerto, base de datos, usuario y contraseña del SQL Server.
  2. Pulsa Probar. El resultado dice si conectó y con qué motor, o el error exacto.
  3. Guarda. La contraseña se almacena cifrada y no se vuelve a mostrar: el campo queda vacío y solo se envía si escribes una nueva.

El botón Cargar presets siembra un juego de datasets predefinidos para no empezar de cero; después solo hace falta configurar la contraseña de la conexión.

Anatomía de un dataset

CampoPara qué sirve
ClaveIdentificador estable del dataset. Obligatorio.
Nombre y descripciónCómo se presenta en el listado.
ConsultaEl SELECT que se ejecuta contra el ERP. Obligatorio.
Clave naturalColumnas que identifican de forma única cada registro. Separadas por comas.
Modo de sincronizaciónUpsert actualiza e inserta; Replace reemplaza el contenido.
Destino del feedA qué entidad DDMRP alimenta: productos, tiendas, en tránsito, ventas — o solo almacén.
Mapeo del feedJSON que asocia el campo DDMRP con la columna de tu consulta.

Ejemplos de mapeo, según el destino:

  • Productos: { "sku": "item", "name": "desc_item" }
  • Ventas: { "productSku": "item", "storeCode": "CO", "date": "fecha", "quantity": "cantidad" }

Acciones sobre cada dataset

  • Previsualizar. Ejecuta la consulta y muestra hasta 25 filas sin escribir nada. Es el paso para validar el SQL y el mapeo.
  • Sincronizar. Trae los datos y los almacena; si tiene destino de feed, además alimenta DDMRP. El aviso informa cuántos registros se almacenaron y cuántos pasaron al modelo.
  • Ver registros. Navega el contenido almacenado con búsqueda y paginación.
  • Editar y eliminar (esto último borra también sus registros; pide confirmación).
Los datasets de ventas se comportan distinto

El historial de ventas no se guarda en el almacén genérico, así que Ver registros no está disponible para ellos. Lo que reporta la sincronización es cuántos días de demanda entraron, que es lo que realmente alimenta el ADU.

Datos

Cargar datos

ruta /cargar-datos permiso page:cargar-datos.view acción data.import

La vía manual: subir archivos o configurar conexiones puntuales por entidad, sin pasar por el catálogo de datasets.

Pantalla de cargue de datos con selector de entidad y pestañas de origen
Figura 14 Selector de entidad, pestañas de origen (archivo, base de datos, REST) y la estructura de columnas esperada.

Entidades

GrupoEntidades
MaestrosProductos · Tiendas · Inventario
TransaccionalVentas · Insumo / Recepción · Merma · Baja

Cargar un archivo

  1. Elige la entidad. La pantalla muestra las columnas obligatorias y opcionales que espera.
  2. Descarga la plantilla CSV. Trae los encabezados correctos y se abre bien en Excel con tildes.
  3. Llena el archivo y súbelo.
  4. Usa Validar primero: informa cuántos registros son válidos y cuántos tienen error, sin escribir nada.
  5. Cuando esté limpio, carga. El mensaje distingue con precisión entre «cargados N de M registros» y una validación que no escribió nada.

El caso especial de las ventas

Las ventas viajan por un importador propio de historial, porque la fecha de cada venta es el dato esencial y no debe descontar inventario. Su plantilla tiene columnas propias:

productSku, storeCode, date, quantity, unitCost

  • La fecha admite AAAA-MM-DD o DD/MM/AAAA (día primero).
  • El importador agrupa por producto, tienda y día, y netea las devoluciones.
  • Reemplaza el rango de fechas que traiga el archivo, así que volver a cargar el mismo archivo no duplica la demanda.
  • El resultado informa días cargados, unidades, productos, tiendas y el rango de fechas.

Conexiones a base de datos o API REST

Además del archivo, cada entidad admite dos orígenes conectados:

  • Base de datos: host, puerto, base, usuario, contraseña y la consulta SQL.
  • API REST: URL, método, jsonPath para ubicar el arreglo dentro de la respuesta y la autenticación por cabecera.

En ambos casos el flujo es el mismo: Probar conexiónPrevisualizar (hasta 20 filas, con sus columnas) → Guardar conexión. Las conexiones guardadas quedan listadas por entidad y se pueden importar con un clic o eliminar.

Configuración

Parámetros globales DDMRP

ruta /parametros permiso page:parametros.view acción params.update

Los factores que gobiernan el tamaño del amortiguador y la forma del sugerido, con resolución en cascada: global → categoría → producto.

Pantalla de parámetros globales DDMRP
Figura 15 Bloques que se piden por estiba, factores del cálculo del amortiguador y sobrescrituras por categoría.

Bloques que se piden por estiba

La primera tarjeta lista los bloques del maestro de productos. Los que marques quedan configurados para que sus productos se sugieran por estiba por defecto (junto con los de alta rotación por clase AA o A). Pulsa Guardar bloques de estiba para persistir el cambio.

Las medias estibas no tienen regla automática: las decide el analista línea por línea según la demanda.

Cálculo del amortiguador

ParámetroQué controla
Días de inventario objetivoCobertura deseada por ítem.
Tren de entrega (días)Lead time logístico de CEDI a tienda.
Factor de variabilidadMultiplicador de la zona roja: cuánta seguridad ante demanda errática.
Factor zona verdeTamaño de lote y frecuencia de reposición.
Factor de seguridadColchón adicional sobre el cálculo base.
Ventana de ventas (días)Días de historia que se usan para los promedios de demanda.
Redondear a unidad de empaqueSi se activa, el sugerido se ajusta al múltiplo de empaque más cercano.

Parámetros por categoría

La tabla inferior permite sobrescribir, por categoría, los días de inventario objetivo, el factor de variabilidad y el factor de zona verde, y activar o desactivar cada sobrescritura con su interruptor.

Alcance del guardado

Los bloques de estiba se guardan en el servidor y afectan a toda la compañía. En cambio, los factores globales y por categoría de esta pantalla se conservan en la sesión del navegador: sirven para simular escenarios, pero se pierden al recargar. Para valores que persisten por producto y por geografía usa Parametrización de buffers.

Configuración

Fechas especiales

ruta /fechas-especiales permiso page:parametros.view

Los eventos que alteran la demanda — quincenas, fin de año, día de la madre, ferias locales — y el multiplicador que se aplica a la proyección durante esos días.

Listado de fechas especiales con su alcance y factor de uplift
Figura 16 Cada fecha con su rango, alcance de producto, alcance geográfico y multiplicador de demanda.

Campos de una fecha especial

CampoValoresNota
NombreTexto libreObligatorio.
Fecha inicio / finRango de díasObligatorias.
Recurrencia anualSí / NoSi se activa, el evento se repite cada año en las mismas fechas.
AlcanceCompañía · Categoría · Bloque · ProductoA qué productos aplica. Salvo «Compañía», hay que indicar la referencia.
Alcance geográficoCompañía · Región · CEDI · TiendaDónde aplica. Salvo «Compañía», hay que indicar la referencia.
Factor de upliftNúmeroMultiplicador de la demanda. Por defecto 2 (el doble).
ActivoSí / NoPermite desactivar sin borrar.

Cada fecha se puede crear, editar y eliminar (con confirmación). El listado resume el alcance en lenguaje llano: «Toda la compañía» / «Todas las tiendas» cuando no hay restricción. El efecto se ve en la columna uplift del forecast.

Configuración

Cargue de parametrización

ruta /cargar-parametrizacion permiso page:cargar-parametrizacion.view

Carga masiva de parámetros DDMRP por archivo, con tres plantillas descargables y un histórico de cargues.

Pantalla de cargue de parametrización con plantillas y zona de carga
Figura 17 Las tres plantillas con sus columnas, la zona para arrastrar el archivo y el histórico de cargues.

Plantillas

PlantillaColumnas
Productossku, nombre, categoria, bloque, pareto, unidad_medida, costo, precio_venta, lead_time_dias, cantidad_minima, multiplo_empaque
Parámetros DDMRP por productosku, dias_inventario_objetivo, factor_variabilidad, factor_zona_verde, factor_seguridad, lead_time_personalizado, pedido_minimo, pedido_maximo, multiplo
Configuración por categoríacategoria, factor_variabilidad, factor_seguridad, lead_time_dias, pedido_minimo, pedido_maximo, multiplo

Cada plantilla incluye una fila de ejemplo — bórrala antes de subir. Se pueden descargar una por una o todas de una vez. El archivo se sube arrastrándolo a la zona de carga o con el selector; formatos aceptados CSV y XLSX, hasta 10 MB.

El histórico de cargues registra identificador, fecha, archivo, registros procesados, errores y estado (Procesado, Con errores, En proceso).

Estado de esta pantalla

Las plantillas son reales y utilizables, pero el procesamiento del archivo todavía está simulado: genera un resultado y una entrada en el histórico sin escribir los parámetros en la base. Mientras tanto, para carga masiva efectiva usa Importar en el maestro de productos (para el catálogo) y Parametrización de buffers (para los valores del amortiguador).

Administración

Empresa

ruta /admin/empresa permiso page:admin.empresa.view
Resumen de parametrización de la compañía
Figura 18 Conteos de la jerarquía geográfica, roles y usuarios, con accesos a cada pantalla de parametrización.

El resumen del estado de parametrización de tu compañía: cuántos países, zonas, regiones, minirregiones y tiendas ubicadas hay en la jerarquía, más el número de roles y usuarios. Debajo, accesos directos a Geografía, Tiendas, Usuarios, Roles, Parámetros DDMRP y Alta de compañía.

Es un buen punto de partida cuando llegas a una implantación nueva: si «Tiendas ubicadas» está en cero, la geografía todavía no está armada y el sugerido no podrá agruparse por región.

Administración

Geografía

ruta /admin/geografia permiso page:admin.geografia.view

La jerarquía territorial de la compañía. Tiene cuatro niveles fijos, y de ellos cuelgan las tiendas.

Árbol geográfico y formulario de alta de nodos
Figura 19 El árbol País → Zona → Región → MiniRegión, con el conteo de tiendas, y el formulario de alta.

País → Zona → Región → MiniRegión → (tiendas)

La pantalla se divide en el árbol, a la izquierda, y el formulario de alta, a la derecha. Para crear un nodo: elige el nivel, selecciona el padre (excepto para país), escribe el código y el nombre, y agrega. El árbol muestra el conteo de tiendas de cada minirregión.

Por qué importa

La geografía no es decorativa: es lo que permite dar a un usuario alcance sobre una zona o una tienda concreta, y lo que agrupa el sugerido de pedidos por región. Sin ella, todos los alcances tienen que ser globales.

Administración

Tiendas

ruta /admin/tiendas permiso page:admin.tiendas.view
Listado de tiendas con asignación de minirregión
Figura 20 Cada tienda con su código, nombre y el desplegable de minirregión.

Un listado con buscador por código o nombre. Cada fila muestra el código, el nombre, la región (campo heredado) y un desplegable para asignar la minirregión a la que pertenece la tienda. El cambio se guarda al seleccionar; también se puede dejar «sin asignar».

Las opciones del desplegable se muestran con la ruta completa zona / región / minirregión, para no confundir nombres repetidos.

Administración

Maestro de productos

ruta /admin/productos permiso page:admin.productos.view datos products.create · update · delete

El catálogo de ítems de la compañía con su clasificación DDMRP y sus factores de estibado.

Maestro de productos con búsqueda, filtro por categoría y la tabla del catálogo
Figura 21 El catálogo con clasificación, precios, factores de estibado y estado de cada referencia.

El listado

Buscador por SKU o nombre y filtro por categoría. Cada fila muestra SKU, nombre, categoría, proveedor preferente, bloque, clase de rotación, unidad de medida, costo, precio, lead time, pedido mínimo, múltiplo de empaque, los factores de estibado y el estado activo/inactivo. Desde la fila se edita o se elimina el producto.

La columna Estiba resume los factores: unidad de agrupación, factor de estiba y factor de media. Si el producto se compra por peso, aparece además el peso por unidad. Un producto sin factor de estiba se maneja «solo empaque».

Crear o editar un producto

El formulario recoge:

  • Identificación: SKU (no editable una vez creado) y nombre.
  • Clasificación: categoría, bloque, clase de rotación y proveedor preferente.
  • Comercial: unidad de medida, costo, precio de venta.
  • Abastecimiento: lead time en días, pedido mínimo, múltiplo de empaque.
  • Estado: activo o inactivo.

Importar productos

El botón Importar abre un asistente de tres pasos con tres orígenes:

  1. Elige el origen. Archivo plano CSV (pegado o subido), base de datos (PostgreSQL o SQL Server, con consulta SELECT) o API REST (URL, método, jsonPath y cabeceras).
  2. Mapea las columnas. El asistente detecta las columnas y una muestra de filas, y propone la correspondencia. Si usas los nombres de las plantillas (sku, name, category, block, pareto, costPrice, sellPrice…) el mapeo es automático.
  3. Revisa el resultado: productos creados, actualizados y filas con error sobre el total.

Administración

Parametrización de buffers

ruta /admin/buffers permiso page:admin.buffers.view

La herramienta de parametrización masiva de amortiguadores. Permite fijar valores a cualquier nivel geográfico o copiar la parametrización de una tienda a otras.

Parametrización de buffers por geografía
Figura 22 Los tres pasos: ámbito geográfico, alcance de productos y valores a aplicar, con previsualización de impacto.

Pestaña «Aplicar por geografía»

  1. Elige el ámbito: toda la empresa, una zona, una región, una minirregión o una tienda.
  2. Elige los productos: todos, los de una categoría, o un producto concreto.
  3. Escribe los valores. Los campos que dejes en blanco no se tocan: solo se aplica lo que llenes.
  4. Previsualiza el impacto. El sistema responde cuántas tiendas por cuántos productos equivalen a cuántos buffers afectados. Revisa esa cifra antes de aplicar.
  5. Aplica.

Valores parametrizables

CampoEfecto
Zona roja / amarilla / verdeFija el tamaño de cada zona del amortiguador.
Lead time (días)Tiempo de reposición usado en el cálculo.
Factor variabilidadAjusta la seguridad de la zona roja.
Factor seguridadColchón adicional.
Pedido mínimo / máximoAcota la cantidad que puede sugerir el sistema.
Múltiplo de pedidoObliga a pedir en múltiplos de esa cifra.

Pestaña «Clonar parametrización»

  • Copiar de una tienda a otras. Se elige una tienda plantilla y se copia toda su parametrización por producto a las tiendas destino, sea a todas las demás o a una selección concreta. Útil cuando abres tiendas nuevas con el mismo formato.
  • Uniformar dentro de una tienda. Aplica los mismos valores base a todos los productos de una tienda.
Es una operación masiva

Aplicar por geografía a nivel «Toda la empresa» y «Todos los productos» toca todos los amortiguadores de la compañía. Previsualiza siempre el impacto antes de confirmar.

Administración

Usuarios y asignaciones

ruta /admin/usuarios permiso page:admin.usuarios.view acción users.manage

Aquí se decide dos cosas por cada persona: qué puede hacer (el rol) y sobre qué información (el alcance geográfico). Son independientes.

Usuarios con sus asignaciones de rol y alcance
Figura 23 Lista de usuarios, sus asignaciones actuales y el formulario de nueva asignación.

Cómo asignar

  1. Selecciona el usuario en la lista de la izquierda. A la derecha aparecen sus asignaciones actuales.
  2. En Nueva asignación, elige el rol.
  3. Elige el nivel de alcance. Si no es GLOBAL, selecciona el nodo concreto.
  4. Pulsa Asignar. La asignación aparece en la tabla y se puede quitar en cualquier momento.

Niveles de alcance

NivelEl usuario ve…
GLOBALToda la compañía.
COUNTRYUn país completo.
ZONEUna zona.
REGIONUna región.
MINIREGIONUna minirregión.
STOREUna sola tienda.

Un mismo usuario puede tener varias asignaciones: por ejemplo, rol de Analista sobre una zona y rol de Consulta a nivel global.

Administración

Roles y permisos

ruta /admin/roles permiso page:admin.roles.view acción roles.manage

La matriz de qué puede hacer cada rol. Los roles de sistema vienen predefinidos y no se editan; para necesidades propias se crean roles de la compañía.

Roles del sistema y su matriz de permisos por módulo
Figura 24 Lista de roles con su conteo de permisos y asignaciones, y la matriz agrupada por módulo.

Crear un rol

  1. Pulsa + Nuevo rol.
  2. Define la clave (por ejemplo GERENTE_REGION), el nombre visible, la descripción y el alcance por defecto.
  3. Créalo. El rol nace sin permisos.
  4. Marca los permisos en la matriz y pulsa Guardar permisos.

La matriz agrupa los permisos por módulo y muestra el código y la descripción de cada uno. Un rol de sistema aparece marcado como solo lectura: sus casillas están deshabilitadas. La lista lateral indica, por rol, cuántos permisos tiene y cuántas asignaciones existen — útil antes de eliminarlo.

Administración

Auditoría del sistema

ruta /admin/auditoria permiso page:admin.auditoria.view

El rastro de quién hizo qué, cuándo, desde dónde y con qué resultado. Registra mutaciones, autenticación y errores, siempre acotado a tu compañía.

Bitácora de auditoría con filtros y resumen de los últimos 7 días
Figura 25 Resumen de 7 días, filtros y la bitácora; cada fila se expande para ver ruta, request id y metadata.

Resumen de los últimos 7 días

Tres indicadores: eventos totales, eventos fallidos (resaltados si hay alguno) y el reparto por categoría.

CategoríaQué registra
AUTHInicios de sesión, cierres y fallos de autenticación.
DATACreación, edición y borrado de datos de negocio.
CONFIGCambios de parametrización.
SECURITYRoles, permisos, accesos denegados.
SYSTEMEventos del propio sistema.

Filtros y detalle

Se puede filtrar por categoría, resultado (éxito o fallo), entidad, texto libre (acción, ruta o correo) y rango de fechas. La tabla muestra fecha y hora, categoría, acción, usuario, entidad, código HTTP, estado, IP y duración en milisegundos; las filas fallidas se resaltan.

Al hacer clic en una fila se expande el detalle: ruta completa con el método, identificador de la petición, entidad e identificador afectados, user agent y la metadata en formato JSON. La paginación admite 25, 50 o 100 registros por página.

Administración

Alta de compañía

ruta /admin/onboarding permiso company.parametrize

Crea una compañía nueva completa en un solo formulario de cuatro bloques. Es la vía asistida, la que usa el equipo de implantación.

Formulario de alta de compañía con sus cuatro bloques
Figura 26 Compañía, administrador inicial, geografía opcional y licencia con sus funcionalidades.
BloqueCampos¿Obligatorio?
1 · CompañíaNombre, NIT, correo, teléfono.Nombre y NIT.
2 · Administrador inicialNombre, correo, contraseña (mínimo 8 caracteres).Sí, los tres.
3 · Geografía inicialPaís, zona, región y minirregión (código y nombre de cada uno).Opcional. Se crea en cascada: solo se envían los niveles completos.
4 · Licencia inicialTipo, plan, asientos y funcionalidades.Sí.

Licencia inicial

  • Tipo Demo → planes de 15, 30 o 60 días.
  • Tipo Paga → planes mensual, semestral o anual.
  • Asientos: número de usuarios, o la casilla de usuarios ilimitados.
  • Funcionalidades: Pedidos, Compras, Pronóstico (IA), Copiloto (IA), Datos maestros y Parámetros DDMRP. Vienen todas activas y se desmarcan las que no apliquen.

Al crear, la pantalla confirma con el nombre y el NIT de la compañía y el correo del administrador, y ofrece crear otra.

Administración

Términos y condiciones (administración)

ruta /admin/terminos permiso page:admin.terminos.view

Gestión de las versiones del documento legal y del registro de firmas.

Administración de versiones de términos y condiciones
Figura 27 Las versiones con su estado, las acciones de editar, publicar o borrar, y el acceso al registro de firmas.

Ciclo de una versión

  1. Nueva versión. Se crea como borrador, con su número de versión, título y contenido.
  2. Editar. Mientras sea borrador, el texto se puede modificar o el borrador se puede eliminar.
  3. Publicar. A partir de ese momento la versión es la vigente y todos los usuarios deben firmarla para poder escribir.

De las versiones ya publicadas solo se puede ver el texto. El botón de firmas abre el registro de aceptaciones: quién firmó, qué versión y cuándo.

Publicar bloquea a todo el mundo

Publicar una versión nueva deja a cada usuario de la compañía en modo consulta hasta que la acepte. Publica cuando el texto esté definitivo.

Administración

Mi licencia

ruta /mi-licencia permiso page:mi-licencia.view

El estado del licenciamiento de tu propia compañía y, cuando está habilitado, el camino para ampliarlo o renovarlo sin pasar por ventas.

Estado de la licencia de la compañía con sus funcionalidades habilitadas
Figura 28 Estado, tipo, plan, vencimiento, días restantes, asientos y funcionalidades habilitadas.

Lo que muestra

  • Una franja con el estado (verde si está activa, roja si está en solo lectura).
  • Cinco tarjetas: tipo (demo o paga), plan, fecha de vencimiento, días restantes y asientos.
  • Las funcionalidades habilitadas por la licencia.

Prueba piloto de 3 meses

Si tu operación supera las 10 tiendas, puede aparecer la oferta de activar una prueba de tres meses sin costo, con hasta 10 tiendas y todas las funcionalidades. No pide tarjeta y se activa una sola vez.

Pagar o renovar

Cuando el módulo de pagos está habilitado para tu compañía:

  1. Elige la duración del plan.
  2. Elige la forma de pago entre los proveedores disponibles.
  3. Compara los planes. Cada tarjeta muestra la cobertura y el precio.
  4. Pulsa Pagar este plan. Te redirige al proveedor y, al volver, la pantalla informa si el pago se aplicó.
Sobre la moneda

El precio de lista está en dólares. Si el cobro se hace en pesos, la pantalla indica la TRM usada y su fecha de vigencia. Para operaciones de 500 tiendas o más existe el plan Enterprise, con precio a convenir por el canal de ventas.

Si el módulo de pagos no está habilitado, la pantalla simplemente indica que para ampliar o renovar hay que contactar al proveedor.

Plataforma

Licencias

ruta /admin/licencias permiso page:admin.licencias.view

Pantalla del proveedor (HardSupply), no del cliente: emite, renueva y suspende las licencias de todas las empresas.

Administración de licencias de las empresas cliente
Figura 29 Listado de compañías con su estado y el panel de gestión de plan, asientos y funcionalidades.

El listado muestra cada compañía con su NIT, estado, plan, fecha de vencimiento y asientos. Al gestionar una, el panel lateral permite:

ControlEfecto
TipoDemo (15, 30, 60 o 90 días) o Paga (mensual, semestral, anual).
AsientosNúmero de usuarios permitidos, o ilimitado.
Días de graciaMargen tras el vencimiento antes de entrar en solo lectura.
FuncionalidadesQué módulos habilita la licencia.
Pagos habilitadosMuestra el CTA de pago en «Mi licencia» y en el onboarding de esa compañía.

Las acciones disponibles son emitir o guardar cambios, renovar por el término elegido, suspender (deja a la compañía en solo lectura), reactivar una suspendida o cancelada y cancelar de forma definitiva.

Plataforma

Alta autogestionada

El camino por el que una empresa se da de alta sola, sin intervención del equipo de implantación. Corre en un servicio aparte y termina entregando una compañía operativa.

Registro

  1. La empresa se registra y acepta los términos de la plataforma, que se muestran antes de crear la cuenta.
  2. Recibe un correo y verifica la cuenta. Si no llega, se puede reenviar.
  3. Al activarse, se emite un token de sesión del asistente y empieza el recorrido guiado.

Pasos del asistente

#PasoQué hace¿Se puede omitir?
1GeografíaCrea el primer País → Zona → Región → MiniRegión.No
2TiendasCrea una tienda o un lote completo. Informa creadas y fallidas por separado: el éxito parcial es válido y no revierte lo que ya entró.No
3CatálogoAlta manual producto a producto o importación por CSV (actualiza por SKU).Sí, no bloquea el alta.
4Historial de ventasCarga desde archivo o desde una consulta al ERP. Antes se puede previsualizar el mapeo sin escribir nada. Alimenta el ADU.Sí, pero el paso no queda listo: sin ventas los amortiguadores arrancan en cero.
5Parámetros DDMRPDefine los factores del amortiguador y si la compañía maneja estibas.No
6ProveedoresAlta de proveedores, admite lote con informe de éxito parcial.
7EquipoCrea los usuarios con su rol y su alcance geográfico, activos de inmediato.
8Diagnóstico inicialEncuesta de línea base autoreportada.Sí, enviarla vacía equivale a omitirla.

En todo momento hay un progreso con la lista de verificación y el porcentaje completado, y una pantalla de licencia que confirma con qué plan queda la compañía. Los endpoints de cada paso están en el explorador OpenAPI, bajo el servicio Onboarding.

API y servicios

Arquitectura y Swagger

Micaela expone su funcionalidad como API REST documentada con OpenAPI 3. Son tres servicios desacoplados, cada uno con su propia especificación y su propia interfaz Swagger.

Swagger UI del backend DDMRP SaaS con las operaciones agrupadas por tag
Figura 30 La interfaz Swagger del backend, servida por el propio servicio en /api/docs.

Los tres servicios

ServicioQué exponePuertoSwaggerContrato
DDMRP SaaS API
backend
El núcleo: autenticación, autorización, productos, tiendas, inventario, pedidos, compras, sugeridos DDMRP, forecast, datos maestros, licencias, términos y auditoría. 3000 /api/docs /api/docs-json
Onboarding API
onboarding-service
El alta autogestionada: registro, verificación de cuenta y los pasos del asistente. 3200 /api/docs /api/docs-json
Payments API
payments-service
Pagos y donaciones de licencia: catálogo de planes, checkout, intentos de pago y webhooks de los proveedores. 3100 /api/docs /api/docs-json

Los tres montan sus rutas bajo el prefijo global /api, con la excepción de /health, que responde sin prefijo para las sondas de disponibilidad.

Swagger no se publica en producción

La interfaz Swagger se habilita en todos los entornos excepto producción, salvo que se fuerce con la variable SWAGGER_ENABLED. Su ruta se puede cambiar con SWAGGER_PATH. Para consultar el contrato sin desplegar nada, usa el explorador de este manual.

API y servicios

Autenticación y multi-tenencia

El flujo de token

  1. Obtén el token con POST /api/auth/login, enviando correo y contraseña.
  2. Envíalo en cada petición como Authorization: Bearer <token>.
  3. Renuévalo con POST /api/auth/refresh antes de que expire.

En Swagger UI se autoriza una sola vez con el botón Authorize, pegando el token del paso 1; la sesión queda persistida entre recargas de la página.

curl -s http://localhost:3000/api/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"...","password":"..."}'

curl -s http://localhost:3000/api/products \
  -H "Authorization: Bearer $TOKEN"

Aislamiento por compañía

Todos los endpoints filtran automáticamente por la compañía del token: no hace falta — ni se permite — pasar el identificador de compañía a mano. El alcance geográfico del usuario acota además qué tiendas ve dentro de esa compañía.

Dos particularidades

  • Onboarding. Sus pasos no se autorizan con JWT sino con la cabecera X-Onboarding-Session, el token de sesión del asistente que se emite al activar la cuenta. Es deliberado: la compañía todavía no existe cuando empieza el recorrido.
  • Webhooks de pagos. No llevan token de usuario: los firma el proveedor de pago y el servicio valida esa firma.
Escrituras bloqueadas

Dos condiciones devuelven error en cualquier endpoint de escritura, con independencia de los permisos: una licencia en modo solo lectura, y unos términos y condiciones sin firmar (código TERMS_ACCEPTANCE_REQUIRED).

API y servicios

Explorador OpenAPI

El contrato completo de los tres servicios, generado directamente del código. Elige el servicio, filtra por texto y despliega cualquier operación para ver sus parámetros, cuerpo y respuestas.

API y servicios

Regenerar el contrato

La especificación no se escribe a mano: se deriva de los controladores y los DTO. Cuando cambie el código, se vuelve a generar.

El backend trae el generador listo, y produce openapi.json sin necesidad de base de datos ni de levantar el servidor:

cd backend
npm run swagger:json     # → backend/openapi.json

Funciona porque arranca Nest en modo preview: construye el grafo de módulos y lee los metadatos de rutas y DTO, pero no instancia los proveedores ni ejecuta los hooks de ciclo de vida, así que el cliente de base de datos nunca intenta conectarse.

Con los servicios en ejecución, el contrato también se descarga en vivo:

curl -s http://localhost:3000/api/docs-json  -o backend-openapi.json
curl -s http://localhost:3200/api/docs-json  -o onboarding-openapi.json
curl -s http://localhost:3100/api/docs-json  -o payments-openapi.json

El archivo resultante se puede cargar en cualquier herramienta compatible con OpenAPI 3: Postman, Insomnia, Bruno, o un generador de clientes como openapi-generator.

Referencia

Catálogo de permisos

Los permisos son de cuatro tipos. Entender la diferencia ayuda a diagnosticar por qué alguien no ve o no puede hacer algo.

TipoFormatoControla
PAGEpage:pedidos.viewQue la pantalla aparezca en el menú y se pueda abrir.
ACTIONcarrito.enviar_siesaQue un botón o una operación concreta esté disponible.
DATAproducts.updateLeer, crear, editar o borrar una entidad.
FIELDfield:product.cost:readVer un campo sensible, como el costo o el margen.

Acciones más usadas

CódigoPermite
carrito.enviar_siesaEnviar el carrito a Siesa.
orders.create · update · approveCrear, editar y aprobar pedidos.
purchase.create · send · approveCrear, enviar y aprobar órdenes de compra.
ddmrp.recalcular_buffersRecalcular los amortiguadores.
data.import · data.syncImportar archivos y sincronizar fuentes.
params.updateModificar los parámetros DDMRP.
users.manage · roles.manageGestionar usuarios y roles.
company.parametrizeCrear y parametrizar compañías.
licenses.request_pilotActivar la prueba piloto. Funciona incluso en modo solo lectura, porque quien la pide suele tener la licencia vencida.

Licencia y permisos: dos filtros encadenados

Para que puedas hacer algo se tienen que cumplir las dos condiciones: que tu rol tenga el permiso y que la funcionalidad esté incluida en la licencia. Cada funcionalidad licenciable agrupa un conjunto de permisos:

FuncionalidadHabilita
PedidosSugerido de pedidos, carrito y envío a Siesa.
ComprasSugerido de compras y órdenes de compra a proveedor.
Pronóstico (IA)Pronóstico de demanda y recálculo asistido de buffers.
Copiloto (IA)Asistente conversacional sobre los datos de la operación.
Datos maestrosDatasets dinámicos, ingesta y sincronización de fuentes.
Parámetros DDMRPParametrización y cargue de parametrización.

Lo que no está en ninguna funcionalidad es núcleo y está siempre disponible: inicio, administración, lecturas de catálogo. Y en modo solo lectura se conservan las lecturas — ver pantallas y consultar datos — y caen todas las escrituras.

Referencia

Solución de problemas

Los síntomas más habituales y qué hacer con cada uno.

SíntomaCausa probableQué hacer
El sugerido no propone nada, o todo sale en cero.No hay historial de ventas, así que el ADU es cero y los amortiguadores no tienen tamaño.Carga ventas en Cargar datos o sincronízalas desde el ERP, y luego recalcula los buffers.
Una línea muestra el estado «Sin parámetro».Ese producto/tienda no tiene amortiguador definido.Aplica valores desde Parametrización de buffers, o clona la parametrización de una tienda plantilla.
Guardo algo y no pasa nada, o sale un aviso de solo lectura.La licencia está vencida, suspendida, cancelada o sin configurar.Revisa Mi licencia y renueva; el proveedor la reactiva desde la administración de licencias.
Me manda a la pantalla de términos cada vez que intento guardar.Hay una versión nueva de los términos sin firmar.Léela hasta el final y acéptala. Es la única salida del bloqueo.
No veo una pantalla que aparece en este manual.Falta el permiso de página, o la funcionalidad no está en la licencia.Verifica tu rol en Roles y permisos y las funcionalidades en Mi licencia.
No veo los costos en pedidos o productos.Tu rol no tiene los permisos de campo sensible.Se otorgan con field:product.cost:read y equivalentes desde la matriz de permisos.
«Copiloto no configurado».El backend no tiene credenciales del modelo de IA.Es configuración de plataforma: definir el proyecto y la región de Vertex AI (o una clave de API) y reiniciar el servicio.
Generé órdenes pero el aviso dice que no se guardaron.El backend rechazó la persistencia; el aviso incluye el motivo exacto.No des la orden por emitida. Corrige la causa y vuelve a generar.
Recargué la página y el carrito o las órdenes desaparecieron.Ambos listados viven en la sesión del navegador.Trabaja el carrito en una sola sesión. Las órdenes ya generadas sí quedaron guardadas en el backend.
Cargué el mismo archivo de ventas dos veces. ¿Se duplicó la demanda?No. El importador reemplaza el rango de fechas que trae el archivo.Nada que hacer: recargar el mismo archivo es seguro.
La sincronización de un dataset de ventas dice «0 almacenados».Los datasets de ventas no guardan en el almacén genérico.Fíjate en el otro número: los días de ventas cargados. Ese es el que cuenta.
El sugerido propone estibas donde no debería (o al revés).El bloque está marcado como «bloque de estiba», o el producto es de clase AA/A.Ajusta la selección en Parámetros globales, o cambia la unidad línea por línea en el sugerido.
La API devuelve 401 en todas las llamadas.Token ausente, mal formado o vencido.Vuelve a pedirlo en /api/auth/login y envíalo como Authorization: Bearer. En Swagger UI, usa el botón Authorize.
Swagger UI no carga en el servidor desplegado.Está deshabilitado en producción por defecto.Consulta el explorador de este manual, o habilita SWAGGER_ENABLED en un entorno no productivo.