Estado: BORRADOR (revisión intensiva 02-sep) · Material de consulta. La app trabaja con pistola (entrada tipo teclado). No hay lector de cámara.
A.10.1 El modelo de códigos (lo que hay que entender primero)
- Cada artículo puede tener varios códigos de barras (unitario, caja de 6, palé…), y cada código lleva sus unidades por disparo: escanear la caja de 6 suma 6. En los modales de códigos se ve como «Uds/código: N». Si el catálogo no indica unidades, un disparo vale 1.
- La comparación es de cadena exacta: los ceros iniciales importan (
0841…≠841…) y no se valida longitud ni checksum — valen EAN-13, EAN-8 y códigos internos por igual. - Los portes no se escanean: son un servicio y la app los recoge y empaqueta sola.
- El foco vuelve solo al campo de escaneo tras cada operación: se puede disparar en cadena sin tocar la pantalla.
![]()
A.10.2 Qué dispara un escaneo, pantalla a pantalla
| Dónde escaneas | Qué ocurre | Hasta dónde llega solo |
|---|---|---|
| Picking — campo principal | Localiza el artículo pendiente; en preparación con varios candidatos pregunta «Seleccionar pedido»; si el pack cabe, lo aplica al instante («PED/N · artículo: +N — aplicado/completado») con evento «Cantidad aplicada por escaneo»; si no cabe o quedan pendientes, abre el modal de códigos. | Si el pedido queda al 100 % y ya existe su traspaso: se cierra el picking solo — estado «picking completado», cambio de estado en ALO y push a los administradores. Nunca genera traspaso ni albarán. |
| Picking — campo EAN del modal de artículo | Igual que el principal, con el campo coloreado en verde/rojo y el EAN coincidente resaltado en los badges. | Ídem. |
| Picking — modal «Añadir por código de barras» | Cada disparo aplica el pack al momento; si el código es de otro artículo, avisa «Código pertenece a otro artículo. Cambiando…» y salta a él; al completar la línea cierra el modal solo. El botón + auto-aplica al igualar lo pendiente. | Ídem. |
| Packing — campo principal | Con el pack exacto aplica y salta al pedido correcto («… — COMPLETADO»); con pack menor abre el modal de códigos; con pack mayor avisa y registra el exceso como error en el historial. Un código desconocido también queda registrado como error. Nota: el disparo automático exige 8+ caracteres (Enter procesa cualquiera). | Marca la línea. Con el pedido completo, solo habilita «Finalizar». |
| Packing — modal «Empaquetado DropShipping» | El código localiza el artículo y el pedido más antiguo que lo necesita (FIFO), entra en él, suma el pack, deja rastro («Entrada dropshipping por EAN…») y cierra el modal desbloqueando la edición. Marco verde/rojo según resultado. | Deja el pedido activo empaquetándose. Al completarlo solo habilita «Finalizar pedido». |
| Packing — modal «Añadir por código de barras» (mismo título que el de picking, ver A.10.5) | Acumula «veces escaneado» por código y auto-confirma al llegar a lo pendiente (cerrando el modal). A diferencia del de picking, no aplica nada hasta ese momento. Cambia de artículo/pedido si el código es de otro. | Ídem packing. |
| Entradas — recepción de compra | Suma las unidades del código a la línea («Añadidas N unidades al artículo X (P/M uds)»); puede exceder el pedido solo si la empresa lo permite. Si el artículo está en dos líneas, suma siempre a la primera. | Solo la línea. El albarán de compra es siempre manual. |
Dónde NO funciona el escaneo (para no intentarlo): el buscador global no indexa códigos de barras (sí el código de artículo), y devoluciones no tiene campo de escaneo.
![]()
A.10.3 Lo que un escaneo NUNCA hace
Ni el albarán ni las etiquetas se disparan por escaneo. El primer eslabón siempre es el botón «Finalizar» / «Finalizar pedido» (→ serie → albarán → modal de impresión). El único automatismo de impresión es en pedido individual: tras finalizar el packing, al volver a la ficha se auto-genera la etiqueta de envío.
Nota histórica importante: el auto-cierre por escaneo del packing dropshipping (que generaba el albarán solo al completarse el pedido) existió y se eliminó en jul-2026 por generar albaranes duplicados. Hoy la finalización es siempre manual.
A.10.4 Avisos de escaneo más comunes (literales)
- «EAN no asociado a ningún artículo de esta preparación» / «Código no encontrado en esta preparación» — el código no es de este trabajo (¿ceros iniciales? ¿producto equivocado?).
- «Este artículo ya está completo» / «Artículo ya completamente empaquetado».
- «No hay stock suficiente para este código (aporta N, disponible M).» — el pack no cabe por stock.
- «El pack de N uds excede lo pendiente (M)» — estás escaneando una caja donde caben menos.
- «Código pertenece a otro artículo. Cambiando…» — la app salta sola al artículo correcto.
- «Vas muy rápido: marca un poco más despacio para no saturar el guardado.» (packing).
- «Código no asociado a artículos pendientes de esta preparación» (modal dropshipping).
A.10.5 El modal «Añadir por código de barras» (la pantalla auxiliar)
Es la pantalla del escaneo múltiple y la que resuelve «piden 5 y el código vale 1». No se invoca desde ningún botón: la abre la app cuando un disparo deja unidades pendientes.
Cuándo se abre (picking, procesarScanEAN): tras localizar el artículo destino,
| Situación | Qué hace |
|---|---|
| El pack cabe y completa la línea | Aplica y se queda en la pantalla principal. No abre el modal. |
| El pack cabe pero quedan pendientes | Aplica el pack y abre el modal (sin preseleccionar el código ya aplicado). Es el caso de «piden 5, el código vale 1». |
| El pack no cabe (excede lo pendiente o el stock) | No aplica nada y abre el modal con el aviso, y ese código sin preseleccionar. |
![]()
- Cabecera: nombre e imagen del artículo y el «EAN inicial», el código que abrió el modal.
![]()
- Cuatro métricas y una barra: Recogidas · Necesarias · Restantes · Tras aplicar (
N/total). «Restantes» y «Tras aplicar» son en vivo: cuentan lo seleccionado y todavía sin aplicar. - «Códigos disponibles»: un renglón por código del artículo, ordenados de menor a mayor pack, con el badge «Uds/código: N» y los botones
−/+. - Al pie, un campo para seguir escaneando dentro del modal, y «Cancelar» / «Aplicar (N)».
![]()
+ se deshabilita si al sumar se pasaría de lo pendiente; un código cuyo pack ya excede lo pendiente al abrir el modal sale en rojo con «Excede pendientes». El + auto- aplica en cuanto lo seleccionado iguala exactamente lo pendiente.
«Necesarias» no siempre es lo que pide el pedido: es el techo real mín(unidades necesarias, stock) salvo que la empresa permita stock negativo. Con stock corto, el modal enseña un número menor que la cantidad pedida.
Los dos modales son gemelos pero NO se comportan igual al escanear dentro:
| Picking | Packing | |
|---|---|---|
| Un disparo dentro del modal | Aplica al momento (evento en el historial) y sigue abierto | Solo selecciona; no aplica hasta llegar a lo pendiente |
Campo seleccionado de cada código |
Cuenta unidades | Cuenta veces escaneado (el total es veces × uds/código) |
| «Seleccionado: N» bajo cada código | No se pinta (comentado en la plantilla) | Sí se pinta |
| «Limpiar selección» y «Limpiar» del campo | No están | Sí están |
| Enter en el campo del modal | Enlazado | No enlazado (solo el debounce) |
| Métrica 2ª | «Necesarias» (techo del pedido) | «Empaquetadas» sobre lo recogido en picking |
![]()
|
← Anterior
|
Siguiente →
|