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¶
- 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: Borrador → Esperando almacén de origen → Procesando origen → En tránsito → Procesando destino → Hecho (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.
- 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¶
- 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.
- 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.
- 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¶
- 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¶
- 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_customobtiene 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_glshace 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.
- 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¶
- 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.
- 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.
- 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¶
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 () 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.
Marque los almacenes usados para transferencias internas. En cada almacén de origen y destino (), abra la pestaña Transferencia entre almacenes y marque Se puede usar para tránsito interno.
Configure la cadena de pasos de salida/entrada para cada uno de esos almacenes en la misma pestaña (o de forma global en ), 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.transferrestringe 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.Configure el comportamiento de empaquetado en los tipos de operación pertinentes (): 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.
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_custompara el transportista Custom de eYssen,eyssen_stock_multi_warehouse_delivery_glspara GLS. Ambos simplemente amplíaneyssen_stock_multi_warehousey requieren que el módulo de entrega base correspondiente (eyssen_delivery_custom/eyssen_delivery_gls) ya esté instalado.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.Configure la disponibilidad de la tienda web instalando
eyssen_website_sale_advanced_stock(que requiereeyssen_stock_advanced_stock); a continuación, vaya a , 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¶
Vaya a y cree un nuevo registro.
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.
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.
Haga clic en Iniciar transferencia para confirmar el primer albarán. La transferencia pasa a Esperando al almacén de origen.
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.
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¶
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.
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.
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¶
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.
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.
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 modelostock.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.