Manual de usuario
Centro de ayuda/Manual de usuario/Picking: olas, tareas y PICK-STAGE

Picking: olas, tareas y PICK-STAGE

Última actualización 2026-10-13

Libere olas (manual o programada), genere tareas por pedido y ejecute paso a paso en el móvil, con picks parciales, omisiones y shorts.

Liberación de olas#

Una ola agrupa envíos de salida por merchant × filtro, los divide por cantidad de pedidos y los libera como ola; cada envío recibe luego su tarea de picking. Dos entradas: liberación manual (wave/manual) y programada (scheduler + cron externo). Solo envíos con estado commit/draft/ready; los bloqueados por una ola sin terminar quedan excluidos.

  • Wave Filter: conditions [{field, operator, values[]}], operadores in/not_in/eq/ne/gt/lt/gte/lte (wave/filter).
  • Dispatch Setting: customer_filters [{merchant_id, filter_id}], max/min por plan, default_pick_method (order/batch/wave/wave_by_item, por defecto order), is_active (wave/settings).
  • Scheduler: work_days (1=lunes…7=domingo, por defecto 1–5), time_from/time_to, step_minutes, is_active (wave/scheduler).
  • Horas de corte: por merchant/carrier, HH:MM (wave/cutoff-time).
  1. Elija Cliente (merchant, obligatorio) + 1 o más Dispatch Settings → Vista previa: devuelve el conteo por setting y el detalle por grupo sin crear la ola.
  2. Opcionalmente ajuste min/max_qty_per_batch (se valida Min ≤ Max).
  3. Liberar: crea la ola — wave_no = WV-YYYYMMDD-NNNN, status=released (la ola nace liberada; no hay estado draft intermedio), shipment_ids guarda los envíos.
  4. Tras liberar, la página lista los envíos de la ola: Create Pick Task por envío (ver abajo).
  5. Liberación programada: un cron externo hace POST a /api/wms/wave/scheduler/run cada N minutos (con x-cron-secret). Solo ejecuta schedulers cuyo día esté en work_days, la hora actual en time_from~time_to y la última ejecución ≥ step_minutes atrás.

Generar tareas de picking#

  • Tres entradas: la página de la ola liberada, selección masiva en la lista de pedidos → Create Pick Task, o Create Pick Task en el detalle del pedido.
  • pick_method=order: una tarea por pedido. Líneas = líneas del pedido × ubicaciones asignadas por el sistema (zona pick primero; faltantes crean líneas con la cantidad asignable y el resto en warnings).
  • Planificación de ruta: cada línea recibe un seq por orden de recorrido; el móvil guía ubicación por ubicación.
  • Protección contra duplicados: un pedido con una tarea sin terminar que aún tenga líneas pending no puede regenerar; lo restante como short puede regenerarse después.
  • Tras generar, se escribe el campo de tarea en el pedido con enlace al detalle.

Ejecución en el móvil#

Un paso = un producto × una ubicación. Cada paso envía cuatro campos: ubicación origen, LPN del palé (solo ubicaciones storage), LPN destino (el tote objetivo), cantidad.

  1. Escanee/escriba la ubicación origen → Enter: inválida → error superior + entrada seleccionada; válida → una ubicación picking salta al to-LPN, una storage muestra primero el LPN del palé.
  2. Escanee/escriba el to LPN → validado (debe ser un tote asignado a la tarea) → pasar a cantidad.
  3. Ingrese cantidad (solo dígitos) → toque Pick para enviar → siguiente paso; si falla, se queda en el paso con el error.
  4. Pick parcial: pidió 10, recogió 5 → registra 5 y añade automáticamente un paso de 5 al final de la cola.
  5. Next: omite el paso actual; la cola volverá a él después.
  6. Force close (arriba a la derecha): cierra un pick parcial directamente; el sistema liquida con lo realmente recogido.
  7. Short: la ubicación no tiene stock o la mercancía está dañada → marcar short; la tarea puede completarse y el resto regenerarse después.

Totes objetivo y PICK-STAGE#

Los totes objetivo del picking pertenecen a la ubicación PICK-STAGE (una por almacén, location_type=staging; el sistema la crea si falta y está oculta en la UI). Genérelos en WMS → Pallets con «Batch generate LPN»: elija almacén (por defecto el actual) + cantidad N (1–200, por defecto 10). El backend genera LPN-{seq} (prefijo unificado; los PLT- existentes no cambian) con status=building y source_type=pick. Luego elija «Generate only» o «Generate and print». Nota: el picking cart (location_type=cart) es una ubicación móvil; un tote es un LPN (license_plate único por tenant) y el picking de totes contabiliza en el location_id del carro al que pertenece el tote. PICK-STAGE (staging) es el búfer por almacén; los palés objetivo deben pertenecer a él.

Estados de la tarea y revisión#

pending → in_progress (toque Iniciar, o automático en el primer pick; el envío pasa a picking) → completed (todas las líneas picked o short; el envío pasa a picked). Al completar se escribe picked_qty en las líneas y se dispara una verificación de reposición. Revisión: el detalle de la tarea en escritorio muestra todo lo enviado por el móvil (ubicación origen / LPN del palé / to LPN / cantidad / cada registro): aquí se verifica el picking; la verificación de empaque continúa en la estación de envío (pack-verify).

La ola nace liberada: no hay flujo de aprobación draft→released. wave_no se calcula como el máximo del día +1, así que en alta concurrencia podría repetirse; quien llama puede reintentar.