Operaciones multialmacén

Las empresas que almacenan los mismos productos en más de un almacén necesitan tres cosas que Odoo estándar no ofrece por completo de fábrica: una forma controlada de mover mercancía entre almacenes a través de un número arbitrario de pasos de recogida/embalaje/envío, la capacidad de abastecer líneas de pedido de venta individuales desde distintos almacenes en lugar de un solo almacén por pedido, y una tienda web cuya disponibilidad se calcule a partir de varios almacenes (o de reglas de existencias explícitas) en lugar de un único almacén. Los módulos multialmacén de eYssen añaden las tres cosas, además de la lógica de dirección de recogida/entrega específica de transportista para los traslados internos enviados a través de las integraciones de envío Custom y GLS de eYssen.

Funciones principales

Traslados entre almacenes

screenshot: inventory-multi-warehouse-transfer-draft
menu
Inventory ‣ Transfers ‣ Internal Transfers ‣ New
shows
A draft internal transfer form with the Source Warehouse, Destination Warehouse and Carrier filled in, and the "Create Picking", "Create Orders" and "Start Transfer" buttons in the header.
highlight
The header buttons (red frame).
data
Source "YourCompany HU", destination "Store", carrier "GLS"; transfer reference IT000001.
module
eyssen_stock_multi_warehouse
notes
English UI, light theme, 1440px width, crop to the header and the main fields.

Un registro de Traslado interno representa un envío de mercancía desde un almacén de origen a un almacén de destino, ambos deben estar marcados como aptos para tránsito interno (véase Configuración). El registro se clasifica automáticamente como Traslado intraempresa o Traslado interempresa según si los dos almacenes pertenecen a la misma empresa, y lleva un Transportista obligatorio, una referencia de traslado basada en secuencia (IT000001, …), una Descripción opcional y un resumen de las cantidades trasladadas (Cant. total).

Un traslado interno pasa por los siguientes estados: BorradorEsperando almacén de origenProcesando origenEn tránsitoProcesando destinoHecho (con un estado lateral Requiere conciliación y un estado Cancelado). Los traslados en borrador no se pueden eliminar una vez que salen del estado de borrador.

  • Para un traslado intraempresa, Crear preparación genera directamente la primera preparación de existencias, utilizando el primer paso de salida configurado del almacén de origen.

  • Para un traslado interempresa, Crear pedidos crea en su lugar un Pedido de origen vinculado (un pedido de venta en la empresa de origen) y un Pedido de destino (un pedido de compra en la empresa de destino), resolviendo automáticamente los registros de contacto entre empresas siempre que sea posible.

  • Iniciar traslado confirma la primera preparación y pasa el traslado a Esperando almacén de origen.

screenshot: inventory-multi-warehouse-transfer-list
menu
Inventory ‣ Transfers ‣ Internal Transfers
shows
The Internal Transfers list with records in different states (Draft, Waiting for Source Warehouse, In Transit, Done), so the coloured state badges are visible, next to the transfer reference, the source and destination warehouse and the carrier.
highlight
The "State" column (red frame).
data
Four internal transfers, one per state.
module
eyssen_stock_multi_warehouse
notes
English UI, light theme, 1440px width, full list view.

Enrutamiento multietapa entre almacenes

screenshot: inventory-multi-warehouse-warehouse-steps
menu
Inventory ‣ Configuration ‣ Warehouses ‣ (a warehouse) ‣ Inter Warehouse Transfer tab
shows
The "Inter Warehouse Transfer" tab with "Can be used for internal transit" ticked, a populated Out Steps list and In Steps list, and the validity banner below them.
highlight
The two step lists and the validity banner (red frames).
data
Two out steps (Pick, Ship) and two in steps (Receive, Store) on the warehouse "YourCompany HU"; the banner reads "Step settings are valid."
module
eyssen_stock_multi_warehouse
notes
English UI, light theme, 1440px width, crop to the tab.

Cada almacén que puede actuar como origen o destino de un traslado interno define su propia cadena de Pasos de salida (cómo sale la mercancía del almacén hacia la ubicación de tránsito) y Pasos de entrada (cómo llega la mercancía desde la ubicación de tránsito hasta el almacén). Cada paso apunta a un Tipo de operación, y la ubicación de origen y de destino del paso se leen de ese tipo de operación.

El sistema renumera y valida automáticamente la cadena cada vez que se añaden, editan o eliminan pasos:

  • el primer paso de salida debe comenzar en la ubicación de existencias del almacén, y el último paso de salida debe terminar en una ubicación de tránsito;

  • el primer paso de entrada debe comenzar en una ubicación de tránsito, y el último paso de entrada debe terminar en la ubicación de existencias del almacén;

  • los pasos consecutivos deben conectarse (el destino de cada paso debe coincidir con el origen del siguiente), y la cadena no puede contener bucles.

El formulario del almacén muestra un aviso de validez en tiempo real que resume cualquier problema detectado; los campos de Transferencia entre almacenes distintos del interruptor permanecen ocultos hasta que se marca Se puede usar para tránsito interno. A medida que se validan uno a uno los albaranes de la transferencia, el siguiente albarán de la cadena se crea automáticamente (trasladando los movimientos pendientes y los paquetes) hasta que la mercancía llega a la ubicación de existencias del almacén de destino, momento en el que la transferencia se marca como Hecho, o Requiere conciliación si alguna cantidad se entregó de forma incompleta durante el trayecto.

screenshot: inventory-multi-warehouse-pickings-chain
menu
Inventory ‣ Transfers ‣ Internal Transfers ‣ (an in-progress transfer) ‣ Pickings tab
shows
The Pickings tab of a confirmed internal transfer, listing one picking per step with different statuses, ending with a Done picking at the destination warehouse.
highlight
The chain of pickings and their statuses (red frame).
data
Four pickings: two Done at the source, one In Transit, one Ready at the destination.
module
eyssen_stock_multi_warehouse
notes
English UI, light theme, 1440px width, crop to the tab.
screenshot: inventory-multi-warehouse-warehouse-steps-list
menu
Inventory ‣ Configuration ‣ Warehouse Steps
shows
The standalone "Warehouse Steps" list with rows for several warehouses, showing the Warehouse, Direction (In/Out), Operation Type, Source Location and Destination Location columns.
highlight
None.
data
Two warehouses, each with two out steps and two in steps.
module
eyssen_stock_multi_warehouse
notes
English UI, light theme, 1440px width, full list view.

Nota

Está previsto un modelo de pasos para rellenar de antemano la cadena de pasos de un almacén a partir de una definición reutilizable, pero por ahora solo está implementado el Nombre del modelo; el selector Crear pasos desde modelo del formulario del almacén todavía no rellena los pasos.

Empaquetado, desempaquetado y albaranes inversos

screenshot: inventory-multi-warehouse-operation-type-options
menu
Inventory ‣ Configuration ‣ Operations Types ‣ (an operation type)
shows
The operation type form scrolled to the "Package In", "Package Out", "All In Packing" and "Allow Reverse Picking" checkboxes, with the "Reverse Picking Type" field visible because "Allow Reverse Picking" is ticked.
highlight
The four checkboxes and the "Reverse Picking Type" field (red frame).
data
Operation type used as an out step; Package In and Allow Reverse Picking ticked.
module
eyssen_stock_multi_warehouse
notes
English UI, light theme, 1440px width, crop to the option block near "Show Entire Packs".

Cada Tipo de operación obtiene cuatro opciones adicionales que utiliza la cadena de la transferencia:

  • Empaquetar en entrada — el albarán solo se puede validar cuando todos los movimientos están cubiertos por un paquete; cuando esta opción está activada en el paso, el transportista de la transferencia se copia automáticamente en el albarán.

  • Desempaquetar en salida — el albarán debe estar completamente desempaquetado (sin niveles de paquete restantes) antes de poder validarse.

  • Todo en empaquetado — reservado para futuras reglas de empaquetado; todavía no tiene ningún efecto.

  • Permitir albarán inverso y Tipo de albarán inverso — cuando un albarán se valida con un déficit (cantidad entregada inferior a la solicitada), el déficit se divide automáticamente en un albarán inverso en el tipo de operación elegido (o en el mismo si no se ha definido ninguno), devolviendo la cantidad faltante a la ubicación o ubicaciones de origen originales. Si la cantidad faltante procedía de más de una ubicación de origen en el albarán original, se programa una actividad en el albarán inverso pidiendo a un usuario del almacén que verifique la división.

Entrega Custom y GLS para transferencias internas

screenshot: inventory-multi-warehouse-picking-header
menu
Inventory ‣ Transfers ‣ Internal Transfers ‣ (a transfer) ‣ Pickings tab ‣ (a picking)
shows
A picking that belongs to an internal transfer, with the transfer-specific header buttons ("Mark as Todo", "Check Availability", "Validate", "Print") and the "View Int.Transfer" smart button in the button box.
highlight
The header buttons and the "View Int.Transfer" smart button (red frames).
data
One leg of the transfer IT000001.
module
eyssen_stock_multi_warehouse
notes
English UI, light theme, 1440px width, crop to the header and button box.

Los albaranes que pertenecen a una transferencia interna usan un encabezado propio (Marcar como todo, Comprobar disponibilidad, Validar, Imprimir) en lugar del estándar, y muestran un botón inteligente Ver transf. int.; el mismo botón se añade a los formularios de pedido de venta y pedido de compra siempre que estén vinculados a una transferencia.

Cuando los módulos de entrega Custom o GLS generan la etiqueta de envío de un albarán que pertenece a una transferencia interna, las direcciones de recogida y entrega se toman de los contactos de los almacenes de origen y destino de la transferencia, en lugar del cliente del pedido de venta:

  • eyssen_stock_multi_warehouse_delivery_custom obtiene la dirección de recogida y entrega a partir del contacto de los almacenes de origen y destino para el transportista Custom de eYssen.

  • eyssen_stock_multi_warehouse_delivery_gls hace lo mismo para GLS y, además, antepone al nombre la empresa del almacén (<Empresa> - <Contacto>) para que la etiqueta de GLS muestre claramente qué sede de la empresa envía o recibe.

screenshot: inventory-multi-warehouse-gls-package
menu
Inventory ‣ Transfers ‣ Internal Transfers ‣ (a transfer) ‣ Pickings tab ‣ (a GLS leg) ‣ (package)
shows
A package of an internal-transfer outgoing picking shipped through GLS, showing its GLS parcel number and tracking status.
highlight
The GLS parcel number and tracking status (red frame).
data
One package with a GLS parcel number; use a throw-away parcel number, not a real one.
module
eyssen_stock_multi_warehouse_delivery_gls
notes
English UI, light theme, 1440px width, crop to the package fields.

Para GLS, en cuanto todos los paquetes de un albarán alcanzan el estado de seguimiento GLS entregado al transportista, el albarán se valida automáticamente, de modo que un tramo de una transferencia con varios pasos se completa por sí solo tan pronto como GLS confirma que todos los paquetes se han movido, sin que un usuario del almacén haga clic en Validar. Los identificadores de paquete de GLS se trasladan al paquete reempaquetado creado para el siguiente paso, y una transferencia interna se puede buscar por su Número de paquete o su Número de seguimiento en la lista de transferencias.

Dividir pedidos de venta entre varios almacenes

screenshot: inventory-multi-warehouse-so-line-warehouse
menu
Sales ‣ Orders ‣ Quotations ‣ New
shows
A quotation whose order-line list shows the per-line "Warehouse" column, with two lines set to two different warehouses.
highlight
The "Warehouse" column (red frame).
data
Line 1 from "YourCompany HU", line 2 from "Store".
module
eyssen_sale_multiple_warehouse
notes
English UI, light theme, 1440px width, crop to the order lines. The column requires the Multiple Warehouses group.

eyssen_sale_multiple_warehouse añade un campo Almacén obligatorio directamente en las líneas del pedido de venta, con el almacén predeterminado del vendedor como valor por defecto. Esto permite que un mismo pedido se entregue desde varios almacenes a la vez (por ejemplo, una línea del pedido enviada desde el almacén principal y otra desde uno regional) en lugar de obligar a todo el pedido a usar un único Almacén a nivel de cabecera:

  • cambiar el campo Almacén a nivel de pedido propaga ese almacén a todas las líneas del pedido existentes;

  • cada línea genera su entrega desde su propio almacén; y

  • el indicador Bajo pedido de una línea sigue la ruta del almacén propio de esa línea, no la del pedido.

La columna Almacén solo se muestra a los usuarios del grupo Varios almacenes, que Odoo activa automáticamente en cuanto una empresa tiene más de un almacén, y pasa a ser de solo lectura en cuanto el pedido sale de la etapa Presupuesto / Presupuesto enviado.

Disponibilidad de existencias en la tienda web

eyssen_website_sale_advanced_stock decide qué disponibilidad muestra la tienda web, a partir de las cifras preagregadas por almacén de Existencias avanzadas (véase Control de existencias y disponibilidad). Un campo Modo de existencias en el sitio web permite elegir entre dos modos:

  • Por almacén — la disponibilidad es el total de los almacenes indicados en el campo Almacenes del sitio web. Esto sustituye al Almacén único estándar de la tienda web, y recurre a él cuando la lista está vacía.

  • Basado en reglas — la disponibilidad se calcula a partir de filtros de existencias explícitos, lo que permite distinguir lo que se puede enviar ahora de lo que está en camino.

screenshot: inventory-multi-warehouse-website-stock-mode
menu
Website ‣ Configuration ‣ Settings
shows
The "Shop - Products" section of the website settings with the standard "Warehouse" field, the eYssen "Stock Mode" selector set to "Per Warehouse", and the "Warehouses" tags field below it holding two warehouses.
highlight
The "Stock Mode" selector and the "Warehouses" field (red frames).
data
Website "eYssen Shop"; warehouses "YourCompany HU" and "Store".
module
eyssen_website_sale_advanced_stock
notes
English UI, light theme, 1440px width, crop to the Shop - Products section. The Stock Mode selector is only visible to users in the Multiple Warehouses group.

Modo basado en reglas

En el modo Basado en reglas, el sitio web define hasta cuatro niveles de disponibilidad. Cada nivel tiene su propio filtro de existencias y su propio Tipo de cantidad: Libre para uso (existencias - reservado), Existencias o Previsto:

  • Disponible — siempre activo; es la cantidad que la tienda web trata como vendible.

  • Inmediato, Corto plazo y Largo plazo — cada uno se activa por separado, para mostrar plazos de entrega más largos junto a la cantidad vendible de inmediato.

Una quinta regla, independiente, cubre a los clientes empresariales:

  • Existencias B2B — al activarse, se calcula una disponibilidad independiente a partir de las Categorías de almacenamiento seleccionadas, que se puede acotar aún más con una Anulación de dominio opcional.

screenshot: inventory-multi-warehouse-website-stock-rules
menu
Website ‣ Configuration ‣ Settings
shows
The website settings with "Stock Mode" set to "Rule-based", showing the "Available" block with its Quantity Type and filter, the "Immediate", "Short Term" and "Long Term" toggles, the "B2B Stock" toggle with its Storage Categories field, and the "Recompute Stock" button at the bottom.
highlight
The "Available" block and the "Recompute Stock" button (red frames).
data
Available = Free to Use with no extra filter; Immediate enabled with Forecasted; B2B Stock enabled with the storage category "Wholesale".
module
eyssen_website_sale_advanced_stock
notes
English UI, light theme, 1440px width, crop to the rule blocks.

Importante

Cambiar cualquiera de estos ajustes no recalcula las cifras almacenadas. Aparece un aviso de advertencia en los ajustes hasta que se utiliza el botón Recalcular existencias.

Nota

La disponibilidad que se muestra en la página de un producto y la comprobación que se realiza al añadir una cantidad al carrito se leen en tiempo real de las existencias, por lo que una reserva realizada por un pedido de venta confirmado se refleja de inmediato incluso entre dos recálculos.

Nota

Requiere eyssen_stock_advanced_stock. El módulo anterior eyssen_website_sale_multiple_warehouse, que solo agrupaba las existencias previstas entre los almacenes de un sitio web, queda sustituido por este y ya no se distribuye.

Configuración

  1. Active el modo multialmacén. Se trata de un mecanismo estándar de Odoo, no de un ajuste de eYssen: crear un segundo almacén para una empresa (Inventario ‣ Configuración ‣ Almacenes ‣ Nuevo) activa automáticamente el ajuste Ubicaciones de almacenamiento y concede el grupo de acceso Varios almacenes a los usuarios internos. La columna Almacén por línea de los pedidos de venta y el campo Modo de existencias del sitio web solo son visibles para los usuarios de este grupo.

  2. Marque los almacenes usados para transferencias internas. En cada almacén de origen y destino (Inventario ‣ Configuración ‣ Almacenes), abra la pestaña Transferencia entre almacenes y marque Se puede usar para tránsito interno.

  3. Configure la cadena de pasos de salida/entrada para cada uno de esos almacenes en la misma pestaña (o de forma global en Inventario ‣ Configuración ‣ Pasos de almacén), eligiendo un Tipo de operación por paso. El aviso del formulario del almacén debe ponerse en verde (La configuración de los pasos es válida.) antes de que el almacén pueda usarse como origen o destino de una transferencia; stock.internal.transfer restringe sus campos Almacén de origen / Almacén de destino a los almacenes con una cadena de pasos válida y habilitada para tránsito.

  4. Configure el comportamiento de empaquetado en los tipos de operación pertinentes (Inventario ‣ Configuración ‣ Tipos de operación): active Empaquetar en entrada en los pasos de salida que deben empaquetarse antes del envío (por ejemplo, antes de entregarlos a GLS), Desempaquetar en salida en los pasos de entrada que deben desempaquetarse por completo, y Permitir albarán inverso (con un Tipo de albarán inverso específico opcional) en los casos en los que las entregas incompletas deban generar un albarán inverso automáticamente.

  5. Instale el módulo de entrega correspondiente si los albaranes de transferencia interna deben llevar direcciones de recogida/entrega específicas del transportista: eyssen_stock_multi_warehouse_delivery_custom para el transportista Custom de eYssen, eyssen_stock_multi_warehouse_delivery_gls para GLS. Ambos simplemente amplían eyssen_stock_multi_warehouse y requieren que el módulo de entrega base correspondiente (eyssen_delivery_custom / eyssen_delivery_gls) ya esté instalado.

  6. Active los almacenes por línea en los presupuestos instalando eyssen_sale_multiple_warehouse; no hay ninguna pantalla de ajustes adicional: la columna Almacén de la línea del pedido aparece en cuanto el grupo Varios almacenes (paso 1) está activo.

  7. Configure la disponibilidad de la tienda web instalando eyssen_website_sale_advanced_stock (que requiere eyssen_stock_advanced_stock); a continuación, vaya a Sitio web ‣ Configuración ‣ Ajustes, desplácese hasta la sección Tienda - Productos, defina el Modo de existencias y, o bien indique los Almacenes del sitio web, o bien defina las reglas de disponibilidad. Termine con Recalcular existencias.

Uso

Ejecutar una transferencia interna

  1. Vaya a Inventario ‣ Transferencias ‣ Transferencias internas y cree un nuevo registro.

  2. Defina el Almacén de origen, el Almacén de destino y el Transportista. El Tipo (Transferencia intracompañía / Transferencia intercompañía) se calcula automáticamente a partir de las empresas de los dos almacenes.

  3. Para una transferencia intracompañía, haga clic en Crear albarán, luego abra el albarán y añada los productos y las cantidades que mover; para una transferencia intercompañía, haga clic en Crear pedidos para generar en su lugar los pedidos de venta/compra vinculados.

  4. Haga clic en Iniciar transferencia para confirmar el primer albarán. La transferencia pasa a Esperando al almacén de origen.

  5. Procese y valide cada albarán por turno desde la pestaña Albaranes (o desde el propio botón inteligente Ver transf. int. del albarán). Cada albarán validado genera automáticamente el albarán del siguiente paso hasta que la mercancía llega al almacén de destino, momento en el que la transferencia alcanza el estado Hecho.

  6. Si un albarán se entrega de forma incompleta en un tipo de operación con Permitir albarán inverso activado, se crea automáticamente un albarán inverso para el déficit; si requiere atención manual (varias ubicaciones de origen), se programa una actividad pendiente en ese albarán inverso.

Vender desde varios almacenes en un mismo pedido

  1. En un pedido de venta, añada líneas de pedido como de costumbre. Cada línea usa por defecto el almacén predeterminado del vendedor.

  2. Muestre o edite la columna Almacén en la lista de líneas del pedido (o defínala en el formulario de cada línea) para dirigir líneas concretas a un almacén distinto, siempre que el pedido siga siendo un presupuesto.

  3. Confirme el pedido: cada línea genera su entrega desde su propio almacén.

Vender a través de varios almacenes en la tienda web

  1. Defina el Modo de existencias del sitio web y sus Almacenes (o las reglas de disponibilidad) como se describe en Configuración, luego haga clic en Recalcular existencias.

  2. En la tienda, la disponibilidad que se muestra para un producto almacenable refleja los almacenes o reglas configurados en lugar de un único almacén.

  3. Cuando un cliente añade una cantidad al carrito, esta se valida contra la misma cifra.

Alcance y módulos

  • eyssen_stock_multi_warehouse — el modelo stock.internal.transfer, la configuración de los pasos de almacén, los menús Transferencias internas y Pasos de almacén, y las opciones de empaquetado/albarán inverso del tipo de operación.

  • eyssen_stock_multi_warehouse_delivery_custom — dirige las direcciones de recogida/entrega de las transferencias internas a través de los almacenes de la transferencia para el transportista Custom de eYssen.

  • eyssen_stock_multi_warehouse_delivery_gls — el mismo enrutamiento de direcciones para GLS, además de la validación automática basada en los paquetes de GLS y la recreación de paquetes a lo largo de la cadena de la transferencia.

  • eyssen_sale_multiple_warehouse — añade el campo Almacén por línea de pedido en los pedidos de venta.

  • eyssen_website_sale_advanced_stock — disponibilidad de la tienda web por almacén o a partir de reglas de existencias explícitas, con cuatro niveles de disponibilidad y una regla B2B independiente.