OdooWiki OCA HUB
Extra Tools Licencia: AGPL-3

Este módulo proporciona una interfaz de escaneo de códigos de barras para operaciones de stock: recepciones, entregas, transferencias internas, reubicaciones y ajustes de inventario.

Está diseñado para escáneres de cuña de teclado (USB/Bluetooth) y funciona en navegadores de escritorio y móviles, sin requerir la aplicación de códigos de barras de Odoo Enterprise.

Características principales:

  • Una pantalla de escaneo para pickings y tipos de operación, en modo libre o guiado (la pantalla propone un movimiento pendiente a la vez y valida lo que escanea el operador).
  • Una pantalla de escaneo para ajustes de inventario que escribe las cantidades contadas en los stock quants.
  • Reconocimiento de códigos de barras de producto, empaquetado de producto, lote/serie, paquete y ubicación.
  • Un diálogo de información del producto con las cantidades on hand, entrantes, salientes y previstas y el stock por ubicación, que también se usa para elegir la ubicación de origen o destino entre las que tienen stock.
  • Grupos de opciones de códigos de barras: una configuración basada en datos del comportamiento de la pantalla por tipo de operación (campos a escanear, obligatorios, precargados, forzados, limpiados tras cada lectura, pasos, gestión de backorder, gestión de putaway, etc.).
  • Un menú principal Barcodes con acciones de códigos de barras configurables e imprimibles (escanea un código de barras de acción para abrirlo).
  • Un asistente abstracto base (wiz.stock.barcodes.read) que otros módulos extienden (GS1, batch picking, ...).

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 18.0

Añade una pantalla de escaneo de códigos de barras a las operaciones de stock de Odoo (recepciones, entregas, transferencias internas, reubicaciones y recuentos de inventario) para escáneres USB/Bluetooth, sin necesidad de la app barcode de Enterprise.

Este módulo permite al personal de almacén trabajar con un lector de códigos de barras de tipo keyboard-wedge directamente en Odoo. Desde una transferencia, un tipo de operación o un ajuste de inventario, se abre una pantalla de escaneo donde la lectura de un código de barras rellena el producto, lote/serie, paquete, embalaje o ubicación.

  • Las pantallas de escaneo están disponibles para los pickings (stock.picking) y los tipos de operación (stock.picking.type), y una pantalla independiente gestiona los recuentos de inventario en stock.quant.
  • Cada tipo de operación puede vincularse a un grupo de opciones de código de barras que controla el comportamiento: modo guiado (un movimiento pendiente a la vez), entrada manual, confirmación manual, mostrar movimientos pendientes, selección automática de lote, crear lotes o embalajes que aún no existen, permitir stock negativo, acumular lecturas repetidas y más.
  • Un diálogo de información del producto muestra las cantidades On Hand, Incoming, Outgoing y Forecasted, además del stock por ubicación, y permite al operador elegir la ubicación de origen o destino.
  • Las acciones de código de barras (stock.barcodes.action) se pueden configurar con un código de barras, tecla de acceso rápido, icono y ventana de destino; se pueden imprimir como etiquetas Code128.
  • El comportamiento de backorder se puede establecer por movimiento (barcode_backorder_action), y las líneas de operación detalladas obtienen un estado de escaneo (pending/done/done forced).
  • La validación desde la pantalla de escaneo puede colocar automáticamente las operaciones detalladas en un paquete y envía notificaciones de bus para refrescar la pantalla.

Menús que añade

Barcode actionsBarcodesBarcode options
Modelos y campos (19)
  • stock.move · amplía un modelo existentebarcode_backorder_action (Backorder action)
  • stock.quant · modelo nuevo
  • stock.picking · amplía un modelo existente
  • stock.move.line · amplía un modelo existentebarcode_scan_state (Scan State)
  • stock.picking.type · amplía un modelo existentebarcode_option_group_id, new_picking_barcode_option_group_id
  • stock.barcodes.action · modelo nuevoname, active, barcode, context, sequence, icon_class, key_shortcut, barcode_image (Barcode image), count_elements, action_window_id (Action window), key_char_shortcut
  • stock.barcodes.option · modelo nuevoname, step, forced, message, to_scan, required, sequence, field_name, filled_default, option_group_id, clean_after_done
  • wiz.stock.barcodes.read · modelo nuevostep, lot_id, res_id, barcode, message, auto_lot (Get lots automatically), lot_name (Lot/Serial Number Name), owner_id, action_ids, create_lot (Allow create lot), package_id, product_id, show_owner, show_stock, location_id, product_qty, display_menu, manual_entry (Manual), message_step, message_type, packaging_id, res_model_id, guided_lot_id, is_manual_qty, packaging_qty, product_uom_id, show_form_scan, confirmed_moves (Confirmed moves), option_group_id, location_dest_id (Location dest.)
  • wiz.stock.barcodes.new.lot · modelo nuevolot_name (Lot name), product_id
  • stock.barcodes.option.group · modelo nuevocode, name, auto_lot (Get lots automatically), create_lot (Create lots if not match), option_ids, show_owner, show_stock, manual_entry (Manual entry), is_manual_qty, show_form_scan, confirmed_moves (Confirmed moves), auto_put_in_pack (Auto put in pack), is_manual_confirm, display_read_quant (Read items on inventory mode), keep_screen_values, show_pending_moves (Show pending moves), barcode_guided_mode (Mode), allow_negative_quant, display_notification (Display Odoo notifications), fill_fields_from_lot, ignore_filled_fields (Ignore filled fields), manual_entry_on_edit (Manual entry on edit), no_increase_qty_done (Replace quantity on each reading), source_pending_moves, ignore_quant_location, location_field_to_sort, accumulate_read_quantity (Accumulate repeated readings), manual_entry_field_focus, show_detailed_operations, show_fixed_location_dest (Show fixed dest. location)
  • stock.backorder.confirmation · amplía un modelo existente
  • wiz.stock.barcodes.read.todo · modelo nuevoname, state (Scan State), lot_id, uom_id, res_ids, line_ids, qty_done (Done), package_id, partner_id (Partner), product_id, location_id, picking_code (Type of Operation), res_model_id, is_extra_line, location_name, picking_state, qty_done_rest, position_index, stock_move_ids, wiz_barcode_id, product_uom_qty (Demand), location_dest_id, result_package_id, location_dest_name (Destination Name), show_location_dest, package_product_qty, product_qty_reserved (Reserved), is_stock_move_line_origin
  • barcodes.barcode_events_mixin · amplía un modelo existente
  • wiz.stock.barcodes.product.info · modelo nuevores_id, line_ids, res_model, product_id, incoming_qty (Incoming), outgoing_qty (Outgoing), qty_available (On Hand), location_field, product_uom_id, show_product_info, virtual_available (Forecasted)
  • wiz.stock.barcodes.read.picking · modelo nuevocompany_id, partner_id, picking_id (Picking), picking_ids (Pickings), partner_name, picking_mode, picking_note, todo_line_id, move_line_ids, picking_state, qty_available, todo_line_ids (To Do Lines), forced_todo_key, pending_move_ids, picking_type_code, enable_add_product, keep_screen_values, picking_location_id, picking_product_qty (Picking quantities), todo_line_display_ids, total_product_uom_qty, total_product_qty_done, todo_line_is_extra_line, picking_location_dest_id, selected_pending_move_id, show_detailed_operations
  • wiz.stock.barcodes.new.packaging · modelo nuevoname, barcode, product_id
  • wiz.stock.barcodes.read.inventory · modelo nuevoproduct_id, display_read_quant (Read items), inventory_quant_ids, inventory_product_qty (Inventory quantities), count_inventory_quants, edit_inventory_quant_id
  • wiz.stock.barcodes.product.info.location · modelo nuevowiz_id, quantity, sequence, location_id, product_uom_id
  • report.stock_barcodes.report_barcode_actions · modelo nuevo

Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 6 confirmadas, 3 sin información de 9 versiones.

Fuentes · Odoo 13.0

Confirmado el 2026-11-03 en la rama 13.0 de OCA/stock-logistics-barcode.

terminal Instalación y uso

Documentación de OCA · Odoo 18.0

Códigos de barras en datos maestros

La interfaz reconoce cuatro tipos de códigos de barras. Asígnalos primero:

Ubicaciones de almacén

  • Necesitas el permiso Manage Multiple Stock Locations para ver el menú.
  • Ve a Inventory > Configuration > Locations.
  • Selecciona la ubicación y rellena el campo Barcode.

Empaquetados de producto

  • Necesitas el permiso Manage Product Packaging para ver el menú.
  • Ve a Inventory > Configuration > Product Packagings.
  • Crea o selecciona un empaquetado y rellena el campo Barcode. Al escanear un empaquetado se selecciona su producto y se propone la cantidad del empaquetado.

Productos

  • Ve a Inventory > Products > Products.
  • Rellena el campo Barcode de cada producto.

Lotes / números de serie

El nombre del lote actúa como su código de barras, por lo que no se necesita configuración adicional (requiere Lots & Serial Numbers activado).

Los paquetes se emparejan por su nombre, por lo que al escanear la etiqueta de un paquete se selecciona el contenido del paquete (requiere Packages activado).

Grupos de opciones de código de barras

Ve a Inventory > Configuration > Barcodes > Barcode Option Groups para definir cómo se comporta la pantalla de escaneo. La primera tarea de una implementación es analizar con el cliente el flujo de cada operación (qué se etiqueta, qué lee el operario y en qué orden, si las lecturas se confirman una a una) y ajustar a él las opciones siguientes. El módulo incluye seis grupos de ejemplo: Picking IN, Picking OUT, Picking Internal, Relocation, Inventory y un Operation genérico de reserva. El grupo Inventory es siempre el que utiliza la pantalla de escaneo de inventario.

Pasos para escanear

Las etiquetas GS1-128 (stock_barcodes_gs1) se decodifican como un todo: el producto, el lote y la cantidad que contienen se establecen independientemente de los pasos.

La lista Steps to scan define, por campo de la pantalla (location, product, packaging, lot, package, destination, destination package, quantity, owner, ...):

  • Step: orden en el que se piden los campos. El paso actual es el paso del primer campo obligatorio que sigue vacío, y solo los campos a escanear de ese paso se comparan con un código de barras.
  • To scan: el campo se puede rellenar leyendo un código de barras.
  • Required: no se procesa una lectura mientras el campo esté vacío.
  • Filled default: el campo se rellena desde el movimiento pendiente (modo guiado) o desde el picking o el tipo de operación cuando se abre la pantalla.
  • Forced (modo guiado): se rechaza un valor distinto del movimiento pendiente (Wrong product, Wrong lot, Wrong location).
  • Clean after done: el campo se vacía después de cada lectura procesada.

Un campo que es obligatorio pero no escaneable en su paso solo se puede rellenar por defecto, desde el stock de un lote o paquete escaneado, o a mano en entrada manual.

Pantalla y confirmación

  • Mode: Guided propone un movimiento pendiente a la vez; vacío significa modo libre, en el que los códigos de barras se leen en cualquier orden.
  • Manual entry: abre la pantalla con campos editables; Manual entry on edit cambia a ella cuando se edita un movimiento pendiente con el lápiz; Manual entry field focus es el campo enfocado al cambiar.
  • Is manual confirm: los escaneos solo rellenan la pantalla y el operario confirma cada lectura. En caso contrario, una lectura se procesa en cuanto se rellenan los campos obligatorios.
  • Is manual qty: el operario siempre teclea la cantidad; los escaneos no la establecen.
  • Ignore filled fields: un código de barras omite los campos obligatorios que ya tienen un valor, por ejemplo para que un segundo código de barras de ubicación establezca el destino.
  • Keep screen values: mantiene los valores de la pantalla hasta que se completa el movimiento pendiente.
  • Show form scan: mantiene los campos de escaneo siempre visibles; en caso contrario solo se muestran en entrada manual.
  • Show stock y Show owner: muestran en la pantalla la cantidad disponible en la ubicación y el campo owner.
  • Display Odoo notifications: notifica también cuando a una lectura le falta un campo obligatorio.

Movimientos pendientes

  • Show pending moves: none, only pending o all (pending y done), construidos a partir de las operaciones o de las operaciones detalladas (Source pending moves).
  • Group key for todo records: expresión que agrupa los movimientos pendientes, por ejemplo object.picking_id,object.product_id.
  • Location field to sort: ordena por ubicación de origen o de destino (posición X, Y, Z y nombre). Por defecto se usa el destino para recepciones y transferencias internas y el origen para el resto.
  • Show detailed operations: muestra en la pantalla las operaciones detalladas ya leídas.
  • Confirmed moves: trabaja también con movimientos sin reserva.

Cantidades

  • Replace quantity on each reading: una lectura confirmada reemplaza la cantidad ya registrada (cantidad hecha de la operación detallada, cantidad contada del inventario) en lugar de sumarse a ella. Editar una línea de inventario contada desde la lista siempre la reemplaza.
  • Accumulate repeated readings: con confirmación manual, leer de nuevo el mismo producto, lote o empaquetado antes de confirmar añade una unidad (o empaquetado) a la cantidad a confirmar. Combinado con la opción anterior, las unidades se pueden contar una a una en la pantalla y el resultado reemplaza la cantidad contada.
  • Allow not demanded product: acepta productos fuera de la demanda del picking, añadiendo un movimiento para ellos.
  • Allow negative quant: acepta cantidades por encima del stock disponible en la ubicación, y lotes sin stock.

Lotes, paquetes y ubicaciones

  • Fill fields from lot: leer un lote o un producto rellena product, lot, package, owner y location desde su stock (no en recepciones).
  • Ignore quant location: al rellenar desde el stock, mantiene la ubicación de la pantalla.
  • Get lots automatically (pickings): propone el lote reservado, o el primero según la estrategia de extracción (no en recepciones).
  • Create lots if not match: acepta nombres de lote nuevos; el lote se crea con la lectura en inventarios y al validar en transferencias.
  • Auto put in pack: al validar un picking de un tipo de operación que usa el grupo, pone sus líneas en un paquete nuevo si ninguna tiene uno.
  • Use location dest. putaway: cuando el destino es obligatorio y está vacío, lo calcula a partir de la estrategia de putaway.
  • Show fixed dest. location: muestra en cada movimiento pendiente el destino ya planificado por un putaway fijo, y hace que los escaneos reutilicen esa línea de movimiento (ver Usage).

Otros

  • Search picking from product: cuando la pantalla se abre desde un tipo de operación, leer un producto abre el primer o el último picking listo que lo contenga.
  • Read items on inventory mode: abre la pantalla de inventario listando los artículos ya contados en lugar de los pendientes.
  • Code: algunos códigos cambian el comportamiento. IN no toma la ubicación de origen del stock de un lote o paquete escaneado, OUT no propone su cantidad en stock, y REL acepta cantidades por encima de la demanda sin preguntar.

Tipos de operación

En cada tipo de operación (Inventory > Configuration > Operation Types) puedes seleccionar:

  • Barcode option group: se usa al escanear el tipo de operación o sus pickings.
  • New picking barcode option group: se usa al crear un picking no planificado desde la interfaz de códigos de barras (botón New).

Los mosaicos de Barcodes y el botón de escáner de las tarjetas de Inventory > Overview solo listan los tipos de operación con un grupo de opciones de código de barras. El botón Scan barcodes de una transferencia usa el grupo genérico Operation cuando su tipo de operación no tiene ninguno.

Acciones de código de barras

Inventory > Configuration > Barcodes > Barcode Actions define los mosaicos que se muestran en el menú principal de Barcodes. Cada acción puede tener su propio código de barras: escanearlo desde el menú principal abre la acción directamente.

Selecciona acciones y pulsa Print barcodes para generar un PDF con sus códigos de barras Code128, por ejemplo para una hoja de menú plastificada.

Parámetros del sistema

El parámetro del sistema stock_barcodes.limit_product_qty (por defecto

  • rechaza cantidades absurdas causadas por escanear un código de barras en una

entrada de cantidad.

Las pantallas de escaneo de códigos de barras reconocen, tanto en modo libre como guiado:

  • Ubicaciones de almacén (campo barcode).
  • Embalajes de producto (campo barcode).
  • Productos (campo barcode).
  • Lotes / números de serie (el código de barras es el nombre del lote).
  • Paquetes (emparejados por nombre).

Un sonido de campana confirma un escaneo correcto y un sonido de error señala uno rechazado. Los mensajes de estado bajo el campo de código de barras explican qué está esperando la pantalla y por qué se rechazó un escaneo. El botón Manual alterna la entrada manual para escribir valores sin un escáner.

Interfaz de códigos de barras para operaciones de picking

Puedes abrir la pantalla de escaneo desde tres lugares:

  • Menú principal Barcodes (app Barcodes): selecciona un mosaico de operación y luego elige uno de los traslados listos de la lista.
  • Una tarjeta de tipo de operación en Inventory > Overview (botón de escáner): escanea productos para cualquier picking listo de ese tipo. Con Search picking from product, leer un producto abre un picking listo que lo contiene.
  • Un traslado específico (botón Scan barcodes en Inventory > Transfers): el picking queda bloqueado y cada escaneo se aplica a él.

Modo libre

Escanea en cualquier orden; la pantalla reacciona al tipo de código de barras leído:

  • Producto: añade 1 unidad (o espera un lote si el producto está trackeado). La ubicación de origen se resuelve automáticamente a partir de las líneas reservadas pendientes.
  • Embalaje: selecciona el producto y añade la cantidad del embalaje.
  • Lote: escanea primero el producto cuando varios lotes comparten el mismo nombre. Cuando fill fields from lot está activo, escanear un lote rellena producto, paquete, propietario y ubicación desde el stock disponible.
  • Paquete: rellena todos los campos desde el contenido del paquete.
  • Ubicación: establece el origen (o el destino, según la configuración) para los siguientes escaneos.

Las cantidades que superan la demanda del picking o el stock disponible no se escriben en silencio: la pantalla pide confirmación (force done) o rechaza el escaneo, según el grupo de opciones.

Información del producto y stock por ubicación

Una vez leído un producto, el botón de información junto a él abre un diálogo con las cantidades on hand, incoming, outgoing y forecasted del producto y su stock en cada ubicación. Las entregas y los traslados internos listan primero las ubicaciones de las que la estrategia de extracción toma stock; las recepciones las listan en orden inverso. Tocar una ubicación rellena la ubicación de origen, o la ubicación de destino en las recepciones.

Los botones junto a los campos de ubicación de origen y destino abren la misma lista sin las cantidades del producto, para elegir una ubicación rápidamente: la de origen en orden de estrategia de extracción, la de destino (recepciones y traslados internos) en orden inverso.

En pantallas pequeñas, donde las etiquetas de los campos se sustituyen por iconos, estos botones se ocultan y los iconos de producto y ubicación se convierten en botones que los abren en su lugar.

Modo guiado

La pantalla muestra el siguiente movimiento pendiente (producto, lote, cantidades, ubicaciones) y guía al operador paso a paso (p. ej. Scan Source, luego Scan Product, Lot). Escanear algo distinto de lo esperado se rechaza con un mensaje explícito (Wrong product, Wrong lot, Wrong location).

En la lista de movimientos pendientes puedes:

  • Saltar a otra línea (flechas o tocar una tarjeta).
  • Editar una línea con el icono del lápiz.
  • Poner toda la cantidad restante con el botón +N (p. ej. +120). Una vez definido, este botón desaparece; usa el icono de edición para cambiar la cantidad.
  • Mostrar las líneas ya escaneadas con el icono del ojo.
  • Decidir el comportamiento del backorder por línea cuando las cantidades son incompletas (create backorder / no backorder / keep pending).

Validación

El botón Validate confirma el traslado usando las cantidades escaneadas. Se muestra un asistente para confirmar la acción; tras la validación vuelves a la lista de pickings listos.

Si algunas líneas no tienen cantidad, el asistente de confirmación estándar pregunta si procesar todas las cantidades.

Con Auto put in pack activado, las líneas no empaquetadas se empaquetan automáticamente antes de validar.

Productos extra, nuevos lotes y embalajes

  • Pulsa el botón + Product para añadir un artículo que no está en la demanda (cuando el grupo de opciones permite productos no demandados). Al seleccionar un producto, se muestra un campo numérico para añadir la cantidad. El icono de la papelera restablece los valores del formulario (excepto la ubicación) sin cerrarlo; Clean values restablece todo y cierra el formulario; Confirm añade el nuevo artículo.
  • Si un lote escaneado no existe en una recepción, se puede crear al vuelo (Create lots if not match) o mediante el diálogo de nuevo lote.
  • Los embalajes desconocidos se pueden registrar desde la pantalla de escaneo con el diálogo de nuevo embalaje: escanea el código de barras del embalaje, establece el nombre y confirma.

Interfaz de códigos de barras para ajustes de inventario

Abre Barcodes > Inventory (o el botón Scan barcodes de un ajuste de inventario).

La pantalla usa el grupo de opciones Inventory. Con la ubicación rellenada por defecto, se abre en la ubicación de stock del primer almacén; haz que la ubicación sea escaneable para contar otras ubicaciones. Luego escanea productos, lotes, embalajes o paquetes:

  • Cada escaneo de producto añade 1 unidad a la cantidad contada (o la cantidad del embalaje cuando se escanea un embalaje). Con Replace quantity on each reading, una nueva lectura sobrescribe la cantidad contada.
  • Con Accumulate repeated readings and manual confirmation, escanear de nuevo el mismo producto, lote o embalaje antes de confirmar añade una unidad más (o embalaje) a la cantidad a confirmar.
  • Los productos trackeados por número de serie aceptan exactamente una unidad por número de serie; una segunda lectura del mismo número de serie se rechaza.
  • El icono del ojo alterna entre los artículos ya contados por ti y los pendientes.
  • Cada línea de la lista se puede editar (lápiz), incrementar/decrementar (+/-) o borrar (papelera). Confirmar una línea editada reemplaza su cantidad contada.
  • El botón Apply se muestra cuando hay artículos contados. Abre la confirmación estándar del ajuste de inventario (con motivo), aplica tus quants contados y vuelve al menú principal.

Acciones de códigos de barras

  • Go to Barcodes.
  • Escanea un código de barras de acción (ver Configuration) para abrir la acción correspondiente directamente, o toca su mosaico.

Mostrar la ubicación de destino planificada en los movimientos pendientes

Por defecto, la lista de movimientos pendientes en la pantalla de códigos de barras muestra la ubicación de origen y el lote de cada movimiento. Cuando el grupo de opciones tiene Show fixed dest. location activado, la lista también muestra la ubicación de destino ya planificada en la línea de movimiento de stock, de modo que el operador ve dónde deben almacenarse las mercancías en cuanto se abre el picking, sin escanear nada.

Esto solo lee el destino resuelto aguas arriba cuando se preparó el movimiento (p. ej. la estrategia de putaway aplicada en la recepción). Nunca recalcula el putaway: el putaway es una decisión de almacén que se toma cuando se crea el movimiento, no algo que concierna a la pantalla de códigos de barras (ver Use location dest. putaway para el comportamiento opuesto, de recálculo al escanear).

Además, con esta opción activada, escanear un producto reutiliza la línea de movimiento ya enrutada por putaway y conserva su destino, en lugar de crear una nueva línea en el destino genérico del picking. De este modo, la recepción por código de barras mantiene las mercancías en su ubicación de putaway planificada.

Para mantener fiable el valor mostrado, solo se muestra para movimientos cuyo destino no tiene categoría de almacenamiento, es decir, un putaway fijo cuya ubicación no depende de la cantidad recibida. Para el putaway basado en capacidad (categorías de almacenamiento), la ubicación final aún puede cambiar en una recepción parcial, por lo que intencionadamente no se muestra.

Actívalo en Inventory > Configuration > Barcode Option Groups, en el grupo de opciones usado por el tipo de operación, con la casilla Show fixed dest. location.

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.