📦 BodegApp
Manual de Usuario
World-Class Warehouse Management

BodegApp — El WMS chileno simple, poderoso y confiable.

Este manual es tu guía completa: desde el primer escaneo de un operario hasta la torre de control del supervisor y la configuración del administrador. Cada módulo incluye su descripción funcional, el paso a paso de uso y su fundamento técnico — porque un sistema de clase mundial se opera con confianza cuando se entiende de verdad.

Bienvenido a BodegApp

BodegApp digitaliza tu bodega de punta a punta: recepción con etiquetas inteligentes, ubicaciones trazadas, picking guiado, despacho con ruteo optimizado y entrega con prueba fotográfica — todo sincronizado en tiempo real con tu ERP y con trazabilidad total de cada unidad.

El sistema está construido sobre tres principios que lo distinguen:

  • La realidad física manda. El inventario del sistema refleja siempre dónde está la mercadería de verdad: lo que se prepara sigue en su bodega de origen, lo que viaja está "en tránsito", y nada aparece en destino antes de ser recepcionado.
  • Trazabilidad inmutable. El Kardex nunca se borra ni se edita. Deshacer una operación genera su movimiento inverso, con usuario, motivo y hora. Cada saldo se puede reconstruir movimiento a movimiento.
  • Doble registro sincronizado. Cada operación se escribe simultáneamente en la base del WMS y en tu sistema on-premise (ERP), con verificaciones de consistencia y un chequeo de integridad automático cada 6 horas.

¿Por qué BodegApp? — Los diferenciadores

Hay muchos sistemas que "controlan inventario". Estos cinco atributos son los que separan a BodegApp de ellos — y los puedes verificar tú mismo operando el sistema.

🏦 Integridad transaccional dual verificada

Cada operación sensible se escribe primero en el sistema on-premise y se verifica; si algo no calza, se aborta completa — nunca a medias. El Kardex es inmutable (deshacer = movimiento inverso), las reversas son idempotentes (reintentar jamás duplica) y un auditor automático revisa la salud de los datos cada 6 horas.

Disciplina de sistema financiero aplicada a inventario — los ERP PyME no la tienen.
📍 Modelo físico honesto

El inventario del sistema refleja siempre la realidad: lo que se prepara sigue siendo del origen (EN_PREPARACION), lo que viaja está EN_TRÁNSITO con su destino documentado, lo auto-recepcionado en sucursal queda POR_VERIFICAR hasta el conteo. La bodega de un bulto cambia solo cuando se recepciona físicamente.

La mayoría de los WMS PyME muestran stock fantasma en destino apenas se despacha. Aquí, cero fantasmas.
📵 Chofer offline-first

La consola del conductor funciona sin señal: cada entrega, foto y firma se encola localmente con su hora real y se sincroniza sola al volver la cobertura. La operación de reparto no depende de la cobertura rural.

Estándar de las plataformas de última milla dedicadas — inexistente en los WMS del segmento.
📐 KPIs con rigor de auditoría

Una sola taxonomía de movimientos gobierna todos los indicadores; se excluye el ruido (cargas del sistema, correcciones, datos de prueba, productos eliminados) y cada tarjeta muestra su fórmula con el badge ⓘ. Los números del dashboard reconcilian entre sí — y contra la bodega.

Transparencia de cálculo rara incluso en sistemas enterprise.
🚀 Onboarding productizado

Lo que mata a los WMS en la PyME es el costo de implementarlos. BodegApp lo resolvió como producto: import masivo de catálogo y stock, asistente de puesta en marcha con checklist en vivo, inventario negativo por bodega (opera desde el día uno mientras cargas), y activación de sucursales con verificación ítem a ítem.

De cero a operando en días, no en meses de consultoría.
🔗 Un solo sistema, toda la cadena

WMS + ruteo optimizado + prueba de entrega + tracking del cliente + WhatsApp + sincronización ERP, integrados de fábrica. La alternativa del mercado es contratar dos o tres productos distintos y pagarle a alguien para pegarlos.

El bundle completo que el segmento no ofrece integrado.

Arquitectura y seguridad

Cómo está construido

  • Aplicación web responsiva — funciona en computador, tablet y teléfono, sin instalar nada. Los escáneres usan la cámara del dispositivo o pistolas lectoras.
  • Doble base de datos: PostgreSQL como motor del WMS (ubicaciones, manifiestos, rutas, kardex) y escritura dual al MySQL on-premise (APP_STOCK), que sigue siendo la base compartida con los sistemas históricos de la empresa. Sincronización automática cada 30 segundos en ambos sentidos.
  • Multi-empresa y multi-bodega: varias razones sociales operan las mismas bodegas físicas con inventarios lógicamente separados y KPIs consolidables.

Seguridad

  • Sesiones con token firmado (JWT) de 8 horas. Al expirar, la app muestra el aviso de desconexión y vuelve sola a la pantalla de login.
  • Permisos en tres dimensiones: empresa, bodega y módulo — un usuario solo ve y opera lo que le corresponde.
  • Las credenciales de integraciones (API keys, WooCommerce, WhatsApp) se guardan cifradas u ocultas tras escritura ("write-only": se ingresan una vez y no vuelven a mostrarse).
  • Respaldo automático diario (03:00) de base de datos y código, con retención de 7 días.
Pantalla de acceso: sesión segura con selección de empresa activa y opción de ver la contraseña.
Pantalla de acceso: sesión segura con selección de empresa activa y opción de ver la contraseña.

Roles y permisos

Niveles de acceso diseñados para que cada persona tenga exactamente las herramientas de su responsabilidad — ni más, ni menos. Y cuando los roles estándar no calzan con tu organización, creas tus propios perfiles a medida.

RolPara quiénQué puede hacer
ADMINGerente / jefe de operacionesTodo lo de su(s) empresa(s): usuarios, configuración, corrección de inventario, reversas, todos los módulos.
SUPERVISORJefe de turnoToda la operación (incluye Catálogo y Mi Ruta) + las reversas operativas. Sin acceso a Configuración.
OPERATOROperario de bodegaOperación diaria: recepción, picking, packing, putaway, consultas.
CHOFERConductorSolo su consola "Mi Ruta": entregas, evidencias, navegación.

⭐ Perfiles personalizados: el acceso a la medida de tu organización

Además de los roles estándar, cada empresa puede crear perfiles propios con distintos niveles de acceso según su requerimiento (Configuración → Perfiles). Un perfil define exactamente qué módulos del menú ve y opera cada usuario — nada más, nada menos:

  • Ejemplos reales: "Recepcionista" (solo Recepción + Consulta de Stock), "Jefe de Despacho" (Picking, Packing, Despacho y Monitor), "Analista" (solo Dashboard y Kardex, sin operación), "Encargado de Sucursal" (Recepción de Traslado + Putaway + Consultas).
  • Los perfiles se asignan por usuario y por empresa — la misma persona puede tener perfiles distintos en empresas distintas.
  • Se combinan con el alcance de bodegas de cada usuario: los KPIs, las colas de trabajo y las búsquedas respetan automáticamente ambas dimensiones.
  • Los cambios de perfil aplican al instante en el menú del usuario, sin reinstalar ni reiniciar sesión.

Conceptos clave: B-, PL- y MN-

Tres códigos gobiernan toda la trazabilidad:

  • B-00000000 — Etiqueta de SKU (bulto unitario). Identifica una cantidad concreta de un producto. Nace en la recepción con su etiqueta QR imprimible y acompaña al stock toda su vida: putaway, picking, fraccionamiento, traslado. Es la unidad mínima de trazabilidad.
  • PL-00000000 — Pallet / bulto de salida. Agrupa etiquetas B- en la estación de packing para viajar juntas. Es lo que se escanea al recibir un traslado.
  • MN-000000 — Manifiesto. El documento que ordena el trabajo: qué se mueve, de dónde a dónde, en qué estado del flujo va (picking → packing → despacho → entrega/recepción).

Regla de oro: escanea, no digites. Cada etiqueta tiene QR; el escáner integrado identifica automáticamente si leíste un B-, un PL-, un SKU o una ubicación, y actúa en consecuencia.

Escaneo y Lectura QR

El escáner es el teclado de la bodega: cada pantalla operativa lee QRs con la cámara del dispositivo o con pistola lectora, identifica solo qué le mostraste — etiqueta, pallet, SKU, serial o ubicación — y actúa sin que tengas que elegir nada.

Dos formas de escanear, cero configuración

  • 📷 Cámara del dispositivo (teléfono, tablet o notebook): el botón de escaneo abre el visor con enfoque automático. Funciona en Chrome, Edge y Safari; el navegador pedirá permiso de cámara la primera vez.
  • 🔫 Pistola lectora (hardware): cualquier lector USB o Bluetooth en modo teclado ("keyboard wedge") funciona de inmediato — dispara la lectura en el campo activo, sin drivers ni configuración. Es la opción recomendada para estaciones fijas de alta frecuencia.

Despacho inteligente de códigos

El lector es contextual: la misma acción de escanear hace lo correcto según la pantalla y el patrón del código leído:

Código leídoPatrónQué hace el sistema
Etiqueta de SKUB-00000000 o ID numéricoCarga el bulto: picking, putaway, consulta, reversa.
PalletPL-00000000Opera el bulto completo: recepción de traslado, putaway de pallet, consulta.
SKU / código de barrasCódigo del maestro o EANIdentifica el producto en recepción y búsquedas.
N° de serie genéricoDefinido por productoResuelve el SKU automáticamente (recepción y maestro).
Serial del fabricanteLibre (captura de datos)Registra el serial único de la unidad para garantía y trazabilidad.
UbicaciónEtiqueta de rackConfirma el destino en putaway.
Nota técnicaLectura por cámara con html5-qrcode (getUserMedia) y contextos de escaneo por pantalla (inbound_sku, master_serial, pm_serial, etc.). Los QRs de las etiquetas codifican el identificador puro (B-/PL-), lo que hace la lectura robusta incluso con etiquetas parcialmente dañadas.

Impresión y Etiquetas

Etiquetas térmicas impresas directo desde el navegador a tu impresora Bluetooth — sin drivers, sin software intermedio, sin cables al servidor. Cada empresa define su formato una vez y toda la operación imprime igual.

Conectar y sincronizar la impresora (cada dispositivo)

  1. Toca el ícono de impresora 🖨️ en la barra superior (junto al selector de empresa): se abre el selector de impresoras.
  2. Presiona "📡 Escanear Dispositivos Bluetooth": el navegador muestra las impresoras al alcance; elige la tuya y empareja (una sola vez por dispositivo).
  3. El punto de estado del ícono pasa a activo. La impresora queda recordada en ese dispositivo — cada estación o teléfono se vincula con la suya, y varias estaciones imprimen en paralelo sin interferirse.

Requisito: Google Chrome (Android o escritorio) con Bluetooth activo — usa Web Bluetooth (BLE). También se soporta conexión USB/red según el modelo configurado.

Selector de impresora
Selector de impresora: emparejamiento Bluetooth directo desde el navegador, recordado por dispositivo.

Configuración de etiquetas por empresa

En Configuración → Empresas, cada razón social define su perfil de impresión — y toda la operación lo hereda automáticamente:

ParámetroOpcionesCuándo usar
Tipo de impresoraESC/POS (térmica)El estándar de las térmicas portátiles y de mesón.
ConexiónBluetooth BLE · USB/RedBluetooth para operación móvil; USB para estaciones fijas.
Tamaño de etiqueta54×84 mm (configurable)Debe calzar con el rollo instalado.
Fin de etiquetacorte · gap · avance (feed)Corte para impresoras con guillotina; gap para rollos pre-troquelados; avance con N líneas configurables para modelos sin corte.
Modo rasteractivado / desactivadoEl modo "a prueba de impresoras": envía la etiqueta como imagen fija (ancho configurable en puntos, 384 = 203 dpi) en lugar de comandos de texto. Actívalo si tu modelo imprime caracteres corridos, tildes mal o QRs deformes.

Anatomía de las etiquetas

  • Etiqueta B- (SKU): QR grande del código B-, razón social y RUT, SKU y descripción, cantidad y unidad, bodega, fecha de emisión y — si el producto exige captura de datos — la fila S/N con el serial del fabricante. Color de acento y subtítulo personalizables al fraccionar.
  • Etiqueta PL- (pallet): QR del código PL-, tipo de documento y folio, tipo de movimiento, bodega destino, operador, fecha, total de ítems y unidades — la "carátula" que viaja pegada al bulto y que se escanea en la recepción del destino.
Nota técnicaLas etiquetas se generan como SVG (pantalla/reimpresión) y como bytes ESC/POS nativos para la térmica. El perfil de impresión vive en la ficha de la empresa (printerType, printerConnection, printerSize, labelFinish, escposRaster, rasterWidthDots, labelFeedLines). El diseño térmico está calibrado para las impresoras portátiles en uso (QR + texto, sin comandos de corte ni espaciado no soportados) y el modo raster garantiza fidelidad de impresión en cualquier firmware. La reimpresión de cualquier etiqueta está disponible desde el detalle del bulto.

Recepción (Inbound) e Inventario Inicial

Del camión al sistema en segundos: cada ingreso genera su etiqueta B- con QR, queda registrado en el Kardex y disponible para ubicar — con impresión térmica directa desde el navegador.

Cómo se usa

  1. Menú → Recepción. Selecciona bodega y tipo de ingreso.
  2. Escanea o busca el SKU (también puedes escanear su N° de serie genérico si el producto lo tiene configurado en el maestro).
  3. Indica cantidad. Si el producto exige captura de datos, escanea el serial único del fabricante de cada unidad (garantía y trazabilidad unitaria).
  4. Confirma: se crea la etiqueta B- y se imprime en la térmica (ESC/POS por Bluetooth/USB, formato configurable por empresa).
  5. El stock queda en la ubicación genérica 00-00-00 de la bodega, listo para putaway.
OPERATOR+

Inventario Inicial (carga base de una bodega)

La puerta de entrada de una bodega nueva a BodegApp: carga el inventario existente etiquetándolo pieza a pieza — sin detener la operación y sin depender de que los saldos históricos estén perfectos.

  1. En la misma pantalla de Recepción, cambia el tipo de ingreso a "Inventario inicial (carga base)" — la opción solo aparece en bodegas habilitadas para carga inicial.
  2. Presiona "▶ Iniciar carga de inventario inicial" y trabaja en modo sesión: escanea SKU, ingresa la cantidad contada, imprime la etiqueta B- y pégala — repite producto por producto o zona por zona.
  3. Cada carga es aditiva: crea una etiqueta B- nueva con las unidades ingresadas y las suma al saldo (nunca pisa lo anterior) — puedes cargar el mismo SKU en varias pasadas o desde varios dispositivos a la vez.
  4. La carga masiva alternativa: sube un CSV/Excel con SKU y cantidades por bodega (Configuración, con plantilla descargable) — ideal para el arranque cuando ya existe un conteo digitado.
  5. Mientras la carga avanza, la bodega puede operar con inventario negativo: si se pickea algo aún no cargado, el saldo queda negativo y visible en el reporte de Inventarios Negativos; el ajuste posterior (fijar el saldo al conteo real) lo regulariza con auditoría.

Requisito: la bodega debe tener habilitado "Permitir picking con inventario negativo" (Configuración → Bodegas) — es el flag que marca a una bodega como "en proceso de carga inicial".

OPERATOR+ carga · ADMIN+ carga masiva y ajustes
Nota técnicaEscritura dual inmediata: la fila nace en APP_STOCK (on-premise) y su espejo en PostgreSQL con el mismo correlativo B-. El inventario inicial usa el movimiento INVENTARIO_INICIAL en el Kardex, deja el stock en la genérica 00-00-00 (para putaway posterior) y muestra el saldo previo y nuevo en cada carga. La regularización de negativos usa reconcileSkuToCount, que fija el saldo exactamente al conteo con su movimiento de ajuste. También existe recepción contra orden de compra (RECEPCION_INBOUND) que genera manifiesto con cierre. Distinción clave: inventario inicial = aditivo (suma lo contado) · ajuste = absoluto (fija el saldo al conteo).
Recepción: escaneo de SKU, cantidad y generación de la etiqueta B- con impresión térmica.
Recepción: escaneo de SKU, cantidad y generación de la etiqueta B- con impresión térmica.

Almacenamiento (Putaway)

Cada bulto a su ubicación exacta — pasillo, columna y nivel — para que después el picking sea un paseo y no una búsqueda del tesoro.

  1. Menú → Almacenamiento. Escanea la etiqueta del bulto (B- o PL-).
  2. Escanea la etiqueta de la ubicación física destino (ej: A-01-02).
  3. Confirmado: el bulto sale de la genérica y el KPI de "stock sin ubicar" baja en tiempo real.
OPERATOR+
Nota técnicaLas ubicaciones se modelan en 3D (pasillo/columna/nivel) con generación masiva desde Configuración → Bodegas. Cada movimiento queda como PUTAWAY_PALLET en el Kardex con origen y destino. La clasificación ABC por rotación está disponible por ubicación.

Picking Manual

Extrae exactamente lo que el documento pide, con validación de saldo, seriales y bodega — y con la libertad de deshacer al instante si algo se escaneó de más.

  1. Menú → Picking Manual. Define el documento (tipo de movimiento, folio, bodega, destino si es traslado).
  2. Escanea el bulto origen (B- o ID) y la cantidad a extraer hacia el pallet de salida.
  3. Extracción parcial: se genera un B- hijo con la cantidad extraída (el padre conserva el saldo). Extracción total: viaja la misma etiqueta.
  4. ¿Te equivocaste? El botón deshacer de la sesión revierte la extracción completa: el stock vuelve a su ubicación y bodega originales, con su reversa registrada en Kardex.
  5. Al finalizar, el picking se convierte en manifiesto y avanza a packing.
OPERATOR+
Nota técnicaDesde julio 2026 rige el Diseño B: el picking deja los bultos en estado EN_PREPARACION en la bodega de origen — el estado final (EN_TRANSITO / DESPACHADO) lo asigna el despacho, y la bodega cambia recién en la recepción del destino. Bodegas con inventario negativo habilitado permiten pickear sin stock registrado (carga inicial gradual), acumulando saldo negativo visible en su reporte. La reversa es autoritativa e idempotente: deriva cantidades y ubicaciones de la genealogía y el Kardex, nunca de lo que envía la pantalla.
Picking Manual: definición del documento y extracción guiada bulto a bulto.
Picking Manual: definición del documento y extracción guiada bulto a bulto.

Packing

La estación donde el pedido toma forma física: etiquetas B- agrupadas en pallets PL- con su propia etiqueta madre, listas para subir al camión.

  1. Menú → Packing: la cola muestra los manifiestos LISTO_PARA_PACKING.
  2. Escanea cada etiqueta B- del manifiesto y asígnala a un pallet PL- (se genera e imprime su etiqueta madre con resumen).
  3. ¿Un bulto es muy grande? Fracciona en packing: divide un B- en dos sin salir de la estación (con reversa disponible).
  4. Cierra el packing: el manifiesto avanza a DESPACHO.
OPERATOR+ · desarmar un PL- cerrado requiere SUPERVISOR+
Nota técnicaEl vínculo B-→PL- se escribe en ambas bases (columna PALLET on-premise y bultoCode en los ítems del manifiesto). "Desarmar PL-" (Monitor, supervisores) es la inversa exacta: libera etiquetas sin tocar su estado ni ubicación, con Kardex REVERSA_PACKING.

Despacho

El momento de la verdad, documentado: patente, conductor y transportista quedan grabados, el cliente recibe su link de seguimiento y el inventario pasa a "en tránsito" o "despachado" en ambas bases a la vez.

  1. Menú → Despacho: manifiestos en estado DESPACHO listos para salir.
  2. Ingresa los datos de transporte (patente, conductor, RUT, transportista — se recuerdan para reutilizar).
  3. Confirma: los bultos pasan de EN_PREPARACION a su estado final — EN_TRANSITO (traslados) o DESPACHADO (despachos y retiros) — y se disparan las notificaciones al cliente.
OPERATOR+
Nota técnicadispatch-complete propaga el estado a los bultos en PostgreSQL y APP_STOCK simultáneamente, registra el Kardex por SKU y activa el hook de WhatsApp "pedido en ruta" con el link de tracking. La bodega física NO cambia en este paso (Diseño B).

Traslados entre Bodegas

Mercadería que viaja con pasaporte: sale del origen como "en preparación", cruza como "en tránsito" con su destino documentado en el manifiesto, y solo al escanearse en destino pasa a ser inventario de la nueva bodega. Cero stock fantasma.

Ciclo de vida completo

EtapaEstado del bultoBodega
Picking del trasladoEN_PREPARACIONOrigen
Despacho (datos transporte)EN_TRANSITOOrigen
Recepción escaneada en destinoSTOCKDestino (recién aquí cambia)

Recepción de Traslado

  1. Menú → Recepción de Traslado en la bodega destino.
  2. Escanea el QR del bulto (PL-): el sistema resuelve el destino desde el manifiesto, deja el stock disponible en la genérica y cierra el manifiesto como RECIBIDO cuando llega el último bulto.
  3. Luego ubica con putaway normal. ¿Escaneaste por error? Un supervisor puede anular la recepción (mientras no haya putaway) y el bulto vuelve a tránsito.

Bodegas "solo destino" (sucursales sin BodegApp)

Las bodegas que aún operan con el sistema antiguo se marcan como no operativas en Configuración → Bodegas. Los traslados hacia ellas se auto-recepcionan al confirmar la entrega en ruteo (o por barrido tras 24 h) al estado POR_VERIFICAR: aislado, visible, pero no disponible. Cuando la sucursal se implemente, el asistente de puesta en marcha exige resolver cada ítem uno a uno (✅ a stock / ➗ parcial / ❌ cerrar con motivo) antes de activarla — el día uno parte con inventario real, no heredado.

OPERATOR+ recepción · SUPERVISOR+ anulaciones · ADMIN+ puesta en marcha
Nota técnicaEl destino del tránsito se lee de manifests.dest_warehouse vía el PALLET (con fallback al modo anterior para traslados en vuelo). La auto-recepción respeta el flag wmsOperated por bodega y solo procesa filas creadas por BodegApp.

Fraccionamiento

Divide un bulto padre en hijos con genealogía completa: cada fracción sabe de dónde viene, y el árbol de trazabilidad se puede recorrer entero desde cualquier etiqueta.

  1. Menú → Fraccionamiento. Escanea el bulto padre (el producto debe estar marcado fraccionable en el maestro).
  2. Indica la cantidad a separar y la ubicación destino; personaliza la etiqueta (color, subtítulo, QR).
  3. Se genera el B- hijo vinculado al padre. La reversa devuelve la cantidad al padre y anula el hijo conservando su historial.
OPERATOR+ (módulo asignable por perfil)
Nota técnicaGenealogía por parentBatchId; productos de unidad discreta exigen fracciones enteras. La conversión de unidades (transformables) usa el mismo motor con Kardex CONVERSIÓN.

Inventario Cíclico

Exactitud de inventario de clase mundial sin detener la operación: conteos por ubicación o SKU, diferencias al instante y ajustes auditados.

  1. Menú → Inventario Cíclico: crea una sesión de conteo (por bodega, ubicación o SKU).
  2. Cuenta físico vs. sistema; las diferencias se muestran al cerrar.
  3. El ajuste fija el saldo al conteo real, con movimiento de Kardex y auditoría. La exactitud alimenta el KPI del dashboard (meta world-class: ≥98%).
OPERATOR+

Consulta de Stock

Una sola búsqueda, toda la verdad: dónde está cada unidad, en qué estado y en qué bulto — unificando el WMS y el sistema on-premise en una vista.

  1. Menú → Consulta de Stock. Busca por SKU, nombre, etiqueta B- o bulto PL-.
  2. El resumen agrupa por bodega; toca una tarjeta para el detalle de bultos y ubicaciones.

El stock no disponible se muestra en grupos propios, nunca mezclado con el disponible:

  • 📦 En preparación — pickeado en un pallet, aún no despachado (cuenta en su bodega de origen).
  • 🚚 En tránsito — viajando, con su destino ("→ Temuco") tomado del manifiesto.
  • 📋 Por verificar — auto-recepcionado en sucursal, pendiente de conteo físico.
OPERATOR+
Consulta de Stock: búsqueda con autocompletado y resumen por bodega — con los grupos
Consulta de Stock: búsqueda con autocompletado y resumen por bodega — con los grupos "por verificar" y "en tránsito" claramente aislados del disponible.

Kardex (Trazabilidad)

La caja negra de tu inventario: cada movimiento de cada unidad, con quién, cuándo, desde dónde y hacia dónde. Inmutable por diseño — las correcciones suman movimientos, jamás borran historia.

  1. Menú → Kardex. Busca por SKU, nombre, etiqueta B-, bulto PL-, tipo de movimiento o documento.
  2. Cada fila muestra tipo, cantidad, bodega/ubicación origen y destino, usuario, fecha y notas.
Nota técnicaLos movimientos de bultos eliminados por corrección se conservan "desanclados" (el historial del SKU sigue cuadrando) y las reversas referencian su operación original. La genealogía de fraccionamientos es navegable como árbol.
Kardex: historial completo de movimientos de un SKU con origen, destino, usuario y documento.
Kardex: historial completo de movimientos de un SKU con origen, destino, usuario y documento.

Monitor de Manifiestos

El pulso de la operación en un tablero Kanban vivo: cada manifiesto en su columna de estado, con filtros por bodega, alertas y las herramientas de supervisión a un clic.

  • Vista Kanban o lista, con filtros por bodega y estado, y refresco automático.
  • Acciones por manifiesto: PDF, envío por correo, y para supervisores la reversa ↩️ (retroceder un paso del flujo con motivo).
  • Herramientas de supervisión en el encabezado: Desarmar PL-, Anular ingreso, Anular recepción.
  • Los flujos de estados son configurables por empresa y tipo de movimiento (Configuración → Flujos).
  • Display Público opcional: pantalla para TV de bodega con los manifiestos activos.
OPERATOR+ visualización · SUPERVISOR+ reversas
Monitor de Manifiestos: tablero Kanban en vivo con filtros y herramientas de supervisión.
Monitor de Manifiestos: tablero Kanban en vivo con filtros y herramientas de supervisión.

Dashboard de KPIs

Métricas de operación calculadas con rigor de auditoría: solo trabajo físico real, consolidadas por bodega entre todas tus empresas, y con la fórmula de cada indicador a la vista.

  • Resumen: movimientos, ocupación, manifiestos, SKUs activos, tipos de movimiento (Entradas/Salidas/Internos por SKUs con movimiento) y estado de manifiestos.
  • Productividad: operaciones físicas por operador (recepciones, pickings, posicionamientos, transformaciones) con ranking. Excluye estados, correcciones y cargas del sistema.
  • Inventario: unidades por bodega, top SKUs, ocupación de ubicaciones.
  • Nivel de Servicio: completitud por tipo de documento.
  • KPIs Avanzados: OTIF, tiempo de ciclo recepción→putaway, rotación, stock sin ubicar, edad del stock, líneas/día, exactitud de inventario — con semáforos world-class.
  1. Filtros globales: período (por defecto 7 días), bodega y empresa — el consolidado multi-empresa es el default si tienes acceso a varias.
  2. Pasa el mouse por el badge de cualquier tarjeta o gráfico para ver qué mide y su fórmula exacta.
Nota técnicaTaxonomía canónica de movimientos única para todos los KPIs; se excluyen productos en papelera, registros desanclados, importaciones del sistema (SYNC_LEGACY) y pedidos de prueba de integraciones. Las bodegas compartidas consolidan físicamente (la ocupación reconcilia con las unidades).
Dashboard de KPIs: tarjetas con fórmula explicativa (ⓘ), consolidación multi-empresa y gráficos de operación.
Dashboard de KPIs: tarjetas con fórmula explicativa (ⓘ), consolidación multi-empresa y gráficos de operación.

Avance ERP

El termómetro de tu implementación: cuánto del inventario del ERP ya vive gobernado por BodegApp, bodega por bodega, familia por familia, valorizado a precio de lista.

  1. Dashboard → 🎯 Avance ERP. Filtra por bodega, familia o SKU.
  2. Tiles: avance global SKU×bodega, SKUs 100% cuadrados, unidades y valorización BodegApp vs ERP (valores resumidos en K/M).
  3. Barras duales por bodega, % cuadrado por familia (peor primero) y tabla de mayores diferencias valorizadas.
  4. Exporta el detalle a Excel (columnas separadas de stock BodegApp y ERP), con opción de incluir SKUs sin diferencias.
Nota técnicaEl lado BodegApp se lee directo del APP_STOCK on-premise (cache 60 s, fallback al espejo); el lado ERP desde las vistas homologadas por empresa. Solo cuentan bodegas creadas en BodegApp. En modo consolidado, cada empresa compara contra su propio ERP por RUT y los agregados suman.
Avance ERP: avance global, valorización K/M, barras duales BodegApp vs ERP y export a Excel.
Avance ERP: avance global, valorización K/M, barras duales BodegApp vs ERP y export a Excel.

Transporte y Ruteo

Optimización de rutas al nivel de los grandes: ventanas horarias, prioridades, tráfico real por carretera, torre de control con alertas en vivo y reprogramación de fallidos en dos clics.

Planificación

  1. Menú → Transporte y Ruteo. Toma manifiestos despachables de la cola y créales un documento de transporte con chofer y vehículo.
  2. Define por parada: ventana horaria y prioridad (normal/alta/urgente).
  3. Optimizar: el motor ordena las paradas minimizando el costo real del recorrido, respetando ventanas y priorizando urgentes. Reordenamiento manual por arrastre disponible (con recálculo de ETAs).

Torre de control

  • Mapa en vivo con cada camión (posición GPS del chofer) y cada parada con su ETA.
  • Alertas automáticas: sin señal >10 min, ruta atrasada, ritmo lento, ventana en riesgo/perdida, cliente respondió por WhatsApp.
  • Paradas fallidas: reprogramar a la cola de despacho o directamente a otra ruta.
  • Posición de todos los choferes activos visible según tu alcance de empresa/bodega, tengan o no ruta asignada.
OPERATOR+ con módulo transporte · alertas y edición para despachadores
Nota técnicaRuteo por carretera con OSRM + heurística de inserción y 2-opt sobre una simulación de reloj (esperas y penalización por atraso, en hora de Chile). Tracking a nivel usuario (lastLat/lastLng) con actualización continua. Proveedor de optimización externo conectable por API key.
Transporte y Ruteo: mapa vivo con rutas, paradas y torre de control con alertas.
Transporte y Ruteo: mapa vivo con rutas, paradas y torre de control con alertas.

Mi Ruta (Consola del Chofer)

Una consola de reparto que funciona hasta donde no llega la señal: offline-first, con navegación a Waze en un toque, prueba de entrega con foto y firma, y un mapa que gira contigo.

  1. El chofer entra con su usuario (rol CHOFER aterriza directo en Mi Ruta) y activa el GPS.
  2. Cada parada trae: dirección, contacto (botón llamar), Waze y WhatsApp con iconos oficiales, y el botón "Llegué" (check-in con hora).
  3. Entregar: nombre de quien recibe + foto de evidencia + firma. No entregar: motivo tipificado (cliente ausente, dirección incorrecta, rechazado, sin acceso, fuera de horario) + foto.
  4. ¿Sin señal? La app encola todo localmente y sincroniza sola al volver la cobertura, con la hora real de cada evento. Banner 📵 y marcadores ⏳ indican lo pendiente.

El mapa que acompaña

  • Rotación heading-up: el mapa gira para que el camión siempre apunte hacia arriba, con movimiento continuo (sin saltos).
  • Seguimiento inteligente: encuadre automático mientras te mueves; al detenerte más de 10 s, el mapa se libera. Tocar una parada la centra 30 s.
  • La pantalla no se bloquea mientras Mi Ruta está activa (Wake Lock).
CHOFER · también visible para SUPERVISOR+
Nota técnicaCola offline en IndexedDB con endpoints idempotentes (reintentar jamás duplica) y timestamp real del evento. Ruta cacheada localmente para operar sin red. Fotos comprimidas en el dispositivo antes de enviar.

Tracking del Cliente

Tu cliente sigue su pedido como si fuera un delivery premium: página blanca con tu marca, línea de tiempo, hora estimada, cuántas paradas faltan y el camión moviéndose en el mapa en vivo.

  • Cada parada genera un link único /t/… que se envía por WhatsApp al salir la ruta.
  • Muestra: estado (preparando / en ruta / entregado / no entregado), ETA, paradas restantes, quién recibió, y botón "Escríbenos" al WhatsApp de la empresa.
  • Mapa en vivo con la posición del vehículo (actualización cada 25 s). El link expira 48 h después de terminado el pedido.
Nota técnicaPágina pública sin datos sensibles (solo primer nombre del receptor), con rate-limiting y posición cacheada 15 s en servidor. White-label por empresa.

Notificaciones WhatsApp

Comunicación proactiva con plantillas aprobadas de WhatsApp Business: "va en camino", "entregado", "no pudimos entregar" — y las respuestas del cliente llegan directo a la torre de control.

  1. Configuración → 💬 WhatsApp (por empresa): URL del conector, API key, canal, número de contacto y las 3 plantillas.
  2. Los envíos se disparan solos: al iniciar ruta, al entregar y al fallar — siempre "best-effort" (jamás bloquean la operación).
  3. Si el cliente responde, su mensaje queda anotado en la parada y genera la alerta 💬 en la torre de control.
ADMIN+ configuración
Nota técnicaIntegración con oomnichat vía tokens de conector, webhook de vuelta firmado con HMAC-SHA256 y referencia por folio de manifiesto.

Catálogo Maestro SKU

Un maestro de productos que es fuente de verdad: fotos importadas de tu tienda WooCommerce, precio y stock ERP sincronizados, seriales, fraccionabilidad y papelera reversible — todo gobernado desde una pantalla.

  • Ficha completa: SKU, nombre, unidad, proveedor, familia, código de barras, serial genérico, fraccionable, captura de datos, stock mín/máx, foto y PDFs adjuntos.
  • Sincronizado con el ERP: precio de lista y stock ERP por bodega se refrescan cada 5 minutos y se muestran en la grilla.
  • Fotos desde WooCommerce: Configuración → 🛒 importa las imágenes publicadas en tu tienda cruzando por SKU (normalizadas y livianas). La foto manual siempre puede reemplazarlas.
  • Papelera (borrado lógico): eliminar exige stock cero en ambas bases; lo borrado no cuenta en ninguna estadística y es restaurable con su historial íntegro.
  • Protecciones: la unidad de medida no se puede cambiar con stock vigente; renombrar un SKU (operación restringida de administración) propaga el cambio al on-premise con auditoría.
  • Carga masiva por CSV/Excel con plantilla descargable.
SUPERVISOR+ ver/editar · ADMIN+ papelera y renombrado de SKU

Reversas Operativas

Equivocarse es humano; deshacer con trazabilidad es world-class. Cada proceso tiene su reversa guiada: el sistema solo ofrece el paso atrás válido para el estado actual, exige motivo y lo graba todo en el Kardex.

ReversaQué haceDónde
Deshacer pickingDevuelve la extracción a su ubicación y bodega originales (parcial o total).Picking Manual (misma sesión)
Reabrir manifiesto ↩️Retrocede UN paso del flujo (ej: DESPACHO→PACKING), con motivo. Bloqueado si ya salió a transporte o está en estado final.Monitor
Desarmar PL-Libera las etiquetas B- de un pallet armado (pre-despacho).Monitor
Anular ingresoEtiqueta ingresada por error, disponible y sin historia → queda ANULADA (nunca se borra).Monitor
Anular recepción de trasladoBulto escaneado por error (sin putaway) → vuelve a EN_TRÁNSITO junto con su manifiesto.Monitor
SUPERVISOR+ todas (el deshacer de sesión de picking es del propio operador)
Nota técnicaPrincipio rector: Kardex append-only — deshacer = registrar el movimiento inverso (REVERSA_*), sumando cero contra el original. Orden on-premise-primero con guardas de idempotencia: reintentar una reversa jamás duplica stock.

Corrección de Inventario (Registros Erróneos)

El bisturí del administrador para alinear el inventario cuando algo quedó mal — con doble confirmación en estados sensibles, consistencia garantizada entre ambas bases y huella completa en Kardex y auditoría.

  1. Configuración → 🧹 Registros Erróneos. Busca por B-, PL-, SKU o descripción (la grilla muestra la bodega de cada registro).
  2. Revisa el detalle (stock, movimientos, manifiestos, genealogía) y elimina de raíz.
  3. Si el registro está en estado sensible (en tránsito, despachado, en manifiesto abierto) el sistema lo advierte y sugiere la reversa como vía correcta antes de permitir continuar.
  4. El historial de eliminaciones se consulta bajo demanda con filtros (código/SKU/usuario/fechas) y exporta a CSV.
ADMIN+
Nota técnicaEl borrado ejecuta on-premise primero y aborta si no calza lo esperado (imposible la "resurrección" por sincronización). El Kardex se conserva desanclado y se registra CORRECCION_INVENTARIO con la cantidad negativa — el saldo del SKU siempre reconcilia.

Integridad de Datos

Un auditor incansable trabaja para ti cada 6 horas: busca registros viudos, tránsitos olvidados, preparaciones colgadas y negativos anómalos — y te lo muestra en un panel de salud con ejemplos concretos.

  • Panel 🩺 Integridad de datos en Configuración → Registros Erróneos, con ejecución bajo demanda.
  • Chequeos: ítems de manifiesto sin etiqueta, paradas sin manifiesto, transitorios >7 días, stock de productos en papelera, tránsitos >7 días sin recepción, negativos en bodegas sin inventario negativo habilitado.
  • Guardas estructurales activas: no se puede desactivar/eliminar una bodega con stock; los cambios manuales de estado de manifiesto solo aceptan transiciones válidas del flujo.
ADMIN+
Integridad de Datos: panel de salud con los chequeos automáticos y sus hallazgos.
Integridad de Datos: panel de salud con los chequeos automáticos y sus hallazgos.

Configuración

SecciónQué gobiernas
EmpresasRazones sociales, planes y límites, datos de facturación, impresoras y formato de etiquetas por empresa.
BodegasCreación, geolocalización (origen de rutas), generación masiva de ubicaciones, empresas asociadas, inventario negativo y "Opera BodegApp" (recepción escaneada vs solo-destino).
Usuarios y PerfilesAltas, roles, acceso por empresa y bodega, perfiles de menú personalizados por empresa.
Flujos de ManifiestoSecuencia de estados por tipo de movimiento, configurable por empresa.
💬 WhatsAppConector, plantillas y número de contacto por empresa.
🛒 Fotos WooCommerceCredenciales de la tienda e importación de imágenes al maestro.
🔌 API IntegracionesAPI keys externas (lectura) para sistemas de venta: productos, stock dual, bodegas, usuarios.
✉️ CorreoProveedor de envío (Resend/SMTP) para manifiestos y notificaciones.
🧹 Registros ErróneosCorrección de inventario, historial de eliminaciones e integridad de datos.
Display PúblicoPantalla de TV con manifiestos activos, por token.
ADMIN+ (algunas secciones reservadas a la administración de la plataforma)
Configuración → Bodegas: estado operativo, inventario negativo y empresas asociadas por bodega.
Configuración → Bodegas: estado operativo, inventario negativo y empresas asociadas por bodega.

Integraciones y API

BodegApp no vive aislado: conversa con tu ERP on-premise cada 30 segundos, alimenta a tu sistema de ventas por API y recibe pedidos del POS — un ecosistema, no una isla.

  • ERP on-premise (dual-write): toda operación se escribe también en APP_STOCK; la sincronización bidireccional corre cada 30 s y los precios/stock ERP cada 5 min desde vistas homologadas por empresa.
  • API externa de solo lectura (/api/ext/v1): productos (con precio y stock ERP), stock dual BodegApp+ERP por bodega, bodegas y usuarios. Autenticación por API key con hash, scopes y rate-limit; gestión y rotación desde Configuración.
  • Pedidos desde el POS (oomnisale): ingresan como manifiestos. Mientras la integración esté en modo prueba, sus pedidos quedan aislados de KPIs y colas operativas (interruptor OOMNISALE_TEST_MODE).
  • WooCommerce: importación de fotos del catálogo por SKU.
  • oomnichat: WhatsApp Business API con plantillas y webhook de respuestas.

Arquitectura Técnica Detallada

Para el equipo de TI y los evaluadores técnicos: cómo está construido BodegApp por dentro, por qué se tomaron esas decisiones y qué garantías entrega cada capa.

Las cuatro capas

CapaTecnologíaResponsabilidad
PresentaciónAplicación web SPA (HTML5/JS), responsiva, sin instalaciónTodas las pantallas, escaneo QR por cámara, impresión Web Bluetooth, mapas (Leaflet/OSM), gráficos (Chart.js), operación offline del chofer (IndexedDB).
APINode.js + Express, ~180 endpoints RESTReglas de negocio, máquina de estados, validaciones, autenticación JWT, permisos por empresa/bodega/módulo, rate-limiting en endpoints públicos.
DatosPostgreSQL (Prisma ORM) + MySQL on-premisePostgreSQL: modelo relacional completo del WMS. MySQL APP_STOCK: base histórica compartida con los sistemas legados — escritura dual en cada operación.
InfraestructuraDocker Compose · HTTPS (Let's Encrypt) · nginxContenedores de app y base de datos, puertos internos solo en localhost, certificados automáticos, respaldos diarios con retención.

Flujo de una operación (ejemplo: picking de traslado)

  1. Escaneo → la SPA envía la operación al API con el token del usuario.
  2. Validación → el API verifica permisos (empresa + bodega + módulo), estado del bulto y saldo.
  3. Escritura dual → primero el on-premise (APP_STOCK), luego PostgreSQL en transacción; si el on-premise no calza con lo esperado, la operación aborta sin efectos parciales.
  4. Kardex → se registra el movimiento con usuario, origen, destino y documento (append-only).
  5. Convergencia → los ciclos de sincronización reconcilian cualquier desfase residual entre bases.

Ciclos automáticos del sistema

ProcesoFrecuenciaQué hace
Sincronización de stock30 segundosBidireccional con APP_STOCK: altas, bajas, cantidades y democión de disponibilidad. Preserva los estados internos en curso (EN_PICKING/EN_PACKING/EN_PREPARACION).
Precios y stock ERP5 minutosImporta precio de lista y stock ERP por bodega desde las vistas homologadas por empresa (alimenta Maestro y Avance ERP).
Auto-recepción de trasladosal confirmar entrega + barrido cada 30 minTraslados a bodegas "solo destino" > 24 h en tránsito pasan a POR_VERIFICAR.
Chequeo de integridadal arranque + cada 6 horasBusca huérfanos, transitorios colgados, tránsitos vencidos y negativos anómalos; publica el reporte en Configuración.
Respaldodiario 03:00Dump completo de PostgreSQL + código, retención de 7 días.

Modelo de datos principal

EntidadRol en el modelo
CompanyTenant: razón social, plan, perfil de impresión/etiquetas, configuración de integraciones.
Warehouse → Zone → LocationBodega física en 3 niveles; ubicaciones con código escaneable, clase ABC y bloqueo. Flags por bodega: inventario negativo, "Opera BodegApp".
ProductMaestro por empresa: unidad, seriales, fraccionable, captura de datos, foto, precio y stock ERP sincronizados, papelera (soft-delete).
InventoryBatch (B-)La etiqueta: lote con genealogía (padre/hijos de fraccionamiento) y serial opcional.
StockItemEl saldo: cantidad + estado + ubicación de cada etiqueta.
StockMovementEl Kardex: movimiento inmutable con tipo, cantidad, origen/destino, usuario y documento. Sobrevive a la eliminación de su etiqueta.
Manifest + ItemsEl documento de trabajo con su flujo de estados configurable y el vínculo etiqueta↔pallet.
TransportDocument + StopsLa ruta: chofer, vehículo, paradas con ventana/prioridad/ETA, evidencias de entrega y token público de tracking.
ApiKey · AppSetting · AuditsIntegraciones con hash y scopes; configuración por empresa; auditorías de productos y eliminaciones.

Decisiones de diseño (el porqué)

  • On-premise primero, con verificación: en operaciones sensibles (correcciones, reversas, recepciones) se escribe primero la base compartida y se verifica el resultado esperado; si no calza, nada se modifica. Elimina de raíz las divergencias silenciosas.
  • Kardex append-only: deshacer = movimiento inverso. El historial de cualquier SKU siempre suma cero contra la realidad — auditable por construcción.
  • Idempotencia: las operaciones del chofer offline y las reversas usan guardas de estado — reintentar una operación jamás la duplica.
  • Diseño B de traslados: la mercadería pertenece a su bodega de origen hasta la recepción física en destino; el destino viaja en el manifiesto, no en el stock.
  • Taxonomía canónica de KPIs: una sola clasificación de movimientos para todos los indicadores, que excluye ruido (estados, correcciones, cargas del sistema, datos de prueba).
  • Estados desconocidos = no disponibles: cualquier estado fuera de STOCK/EN_PALLET queda automáticamente fuera del stock vendible — el sistema falla hacia el lado seguro.

Mapa funcional (módulo → capa de datos)

Recepción e Inventario Inicial crean etiquetas · Putaway y Fraccionamiento las reorganizan · Picking/Packing/Despacho las comprometen a un manifiesto · Traslados y Ruteo las mueven entre bodegas y hacia clientes · Recepción de Traslado y las Reversas las devuelven a disponibilidad · Kardex, Consulta de Stock y KPIs las observan sin tocarlas · Corrección e Integridad las gobiernan.

Referencia de Estados

Estados del stock (bultos B-)

EstadoSignificado¿Disponible?
STOCKDisponible en su ubicación.
EN_PALLETDisponible, agrupado en un pallet.
EN_PREPARACIONPickeado hacia un pallet de salida; aún en bodega de origen.No
EN_PICKING / EN_PACKINGEn proceso dentro de la estación.No
EN_TRANSITOViajando entre bodegas (destino en el manifiesto).No
POR_VERIFICARAuto-recepcionado en sucursal; pendiente de conteo físico.No
DESPACHADO / ENTREGADOSalió hacia el cliente / entregado con evidencia.No
CERRADO / ANULADOCiclo terminado / anulado por reversa (evidencia histórica).No

Estados del manifiesto (MN-)

LISTO_PARA_PICKING → EN_PICKING → LISTO_PARA_PACKING → PACKING → DESPACHO → EN_TRANSITO / LISTO_PARA_RETIRO → ENTREGADO / RECIBIDO → CERRADO — configurable por empresa y tipo de movimiento. Retroceder es siempre vía reversa supervisada (↩️), un paso a la vez.

¿Quieres ver todo esto operando en tu bodega?
Agenda una demostración en vivo y te mostramos BodegApp funcionando con un caso como el tuyo — sin compromiso.
📅 Agenda una demo
o escríbenos a hablemos@bodegapp.cl