Control de existencias y disponibilidad¶
eYssen incluye un conjunto de módulos Stock pequeños y específicos que refuerzan la forma en que se controlan y se informan las transferencias y las cantidades en mano: un indicador de retención y un reinicio de la reserva en la propia transferencia, un bloqueo estricto de las existencias negativas, un desglose por almacén de las cantidades en mano, libres y previstas que se precalcula para que las vistas de lista, kanban y de pedido de venta sean rápidas, y un conjunto de atributos físicos de tamaño y carga en las ubicaciones de almacenamiento. Cada uno es opcional y se activa de forma independiente desde la pantalla de ajustes de eYssen.
Retener una transferencia y borrar cantidades¶
eyssen_stock es la capa compartida de Inventario de eYssen sobre la que se construyen los demás módulos de esta página. Por sí solo añade tres controles que cambian el comportamiento de una transferencia.
Retener¶
Un interruptor Retener en el formulario de la transferencia la marca como no se debe procesar. Retener una transferencia libera su reserva, de modo que las existencias vuelven a estar disponibles para otros pedidos; al liberar la retención se vuelve a reservar. Una cinta roja En espera marca una transferencia retenida, y un campo Motivo de la retención de solo lectura explica el motivo, rellenado automáticamente por lo que haya puesto la transferencia en espera. Ambos campos quedan registrados en el chatter.
El interruptor también está disponible como columna en la lista de Transferencias, y la barra de búsqueda incorpora los filtros En espera y Sin retención. Una transferencia que está en estado Hecho o Cancelado ya no se puede retener.
- menu
- Inventory ‣ Transfers ‣ (a ready transfer)
- shows
- A transfer form with the "Hold" toggle enabled, the read-only "Hold Reason" next to it and the red "On Hold" ribbon in the top-right corner.
- highlight
- The "Hold" toggle and the "On Hold" ribbon (red frames).
- data
- Delivery WH/OUT/00003 held with the reason "Waiting for payment".
- module
- eyssen_stock
- notes
- English UI, light theme, 1440px width, crop to the header and the ribbon.
Poner las cantidades a cero¶
Un botón Poner cantidades a cero situado encima de las líneas de operación borra con un solo clic las cantidades reservadas de una transferencia en estado Listo, lo que es la forma más rápida de empezar de nuevo una preparación. La Demanda se conserva, de modo que la transferencia se puede volver a reservar sin más; las líneas que ya están en un paquete no se modifican. El botón solo está disponible mientras la transferencia está en estado Listo; en cualquier otro estado, informa de que las cantidades solo se pueden borrar cuando la transferencia está lista.
- menu
- Inventory ‣ Transfers ‣ (a ready transfer) ‣ Operations tab
- shows
- A ready transfer with the "Set Quantities to Zero" button above the operation lines, whose quantities are still filled in.
- highlight
- The "Set Quantities to Zero" button (red frame).
- data
- Delivery WH/OUT/00004 with three reserved lines.
- module
- eyssen_stock
- notes
- English UI, light theme, 1440px width, crop to the button and the lines.
Reservar desde paquetes¶
Una opción Impedir reserva desde paquetes en el tipo de operación (), activada de forma predeterminada, evita que la reserva automática recurra a existencias que ya están dentro de un paquete: solo se reservan las existencias sin empaquetar. Los movimientos para los que se ha elegido explícitamente un paquete no se ven afectados. Desactive la opción en los tipos de operación en los que se espera abrir paquetes.
- menu
- Inventory ‣ Configuration ‣ Operations Types ‣ (an operation type)
- shows
- An operation type form showing the "Prevent Reservation from Packages" checkbox next to "Show Entire Packs".
- highlight
- The "Prevent Reservation from Packages" checkbox (red frame).
- data
- Operation type "YourCompany: Delivery Orders", option enabled.
- module
- eyssen_stock
- notes
- English UI, light theme, 1440px width, crop to the packages options.
Nota
El módulo también aumenta a 32 caracteres el límite de longitud del Nombre corto de un almacén, y muestra la cantidad prevista junto con la unidad de medida en la insignia de existencias en mano de las vistas kanban y de lista de productos.
Evitar las existencias negativas¶
Por defecto, Odoo permite que un quant de existencias sea negativo, lo cual resulta útil para algunos flujos de trabajo, pero a menudo es señal de un error de introducción de datos o de una reserva pasada por alto. El módulo eyssen_stock_disallow_negative_stock añade una comprobación de validación estricta: cualquier movimiento o ajuste de existencias que dejara un quant con una cantidad negativa en una ubicación interna o de tránsito se rechaza directamente, a menos que se haya activado una anulación explícita para ese producto, su categoría de producto o la propia ubicación.
- menu
- Settings ‣ eYssen ERP ‣ Stock
- shows
- The "Stock" block of the eYssen ERP settings page, with the "Disallow Negative Stock" setting row and its help text ("If you turn it on, the system will not allow the stock to go negative by default. Negative stock can be allowed on by stock location or by product.").
- highlight
- The "Disallow Negative Stock" setting row (red frame).
- data
- Demo company "YourCompany HU"; the setting enabled.
- module
- eyssen_base, eyssen_stock_disallow_negative_stock
- notes
- English UI, light theme, 1440px width, crop to the setting row.
La comprobación solo se aplica a los productos almacenables de tipo Bienes (type = 'consu' con is_storable activado); los servicios y los productos consumibles pero no almacenables nunca se comprueban.
Anulaciones¶
Se añade una casilla Permitir existencias negativas en tres lugares, y basta con que una cualquiera de ellas esté activada para permitir existencias negativas en esa combinación:
la pestaña Inventario del producto (visible solo para los bienes almacenables);
el grupo Logística de la categoría de producto; y
el formulario de la ubicación de existencias.
- menu
- Inventory ‣ Products ‣ Products ‣ (a storable product) ‣ Inventory tab
- shows
- The "Allow Negative Stock" checkbox on a storable product's Inventory tab, next to the other logistics fields.
- highlight
- The "Allow Negative Stock" checkbox (red frame).
- data
- A storable product of type Goods; the checkbox left unticked.
- module
- eyssen_stock_disallow_negative_stock
- notes
- English UI, light theme, 1440px width, crop to the field group. The checkbox is only shown for storable goods.
Si ninguna de las tres anulaciones está activada y una operación haría que la cantidad bajara de cero, Odoo bloquea la operación con un error de validación que indica el producto, su referencia interna y la ubicación.
- menu
- Inventory ‣ Delivery Orders ‣ (a delivery) ‣ Validate
- shows
- The validation error raised when an operation would push a quant negative: "You cannot validate this stock operation because the stock of the <product> (<reference>) at <location> would go negative!"
- highlight
- The error text (red frame).
- data
- A product with no override enabled, delivering more than the quantity on hand at WH/Stock.
- module
- eyssen_stock_disallow_negative_stock
- notes
- English UI, light theme, 1440px width, crop to the error dialog.
Nota
La comprobación solo tiene en cuenta los usos de ubicación internal y transit. Las ubicaciones de cliente, proveedor, pérdida de inventario y producción no están cubiertas por esta comprobación.
Datos de existencias por almacén (Existencias avanzadas)¶
El módulo eyssen_stock_advanced_stock precalcula, por variante de producto, la cantidad en mano, libre y prevista en cada almacén que se haya habilitado, y almacena el resultado en un modelo product.stock.data dedicado (una fila por combinación de producto/almacén/tipo de cantidad) en lugar de recalcularla en cada carga de página. Esto mantiene rápidas las vistas de lista, kanban y de pedido de venta de productos incluso en catálogos grandes, a la vez que se sigue reflejando automáticamente los cambios de existencias.
- menu
- Settings ‣ eYssen ERP ‣ Stock
- shows
- The "Advanced Stock" setting row, with the "Use Background Jobs (queue_job)" checkbox and the "Recompute All" button that appear underneath it once it is enabled.
- highlight
- The "Use Background Jobs (queue_job)" checkbox and the "Recompute All" button (red frames).
- data
- Advanced Stock enabled; queue_job installed.
- module
- eyssen_stock_advanced_stock
- notes
- English UI, light theme, 1440px width, crop to the setting rows.
Activación por almacén¶
Los datos de existencias solo se calculan para los almacenes que están activados explícitamente. En la pestaña Configuración del almacén de cada almacén, un grupo Existencias muestra dos interruptores:
Calcular existencias del almacén en el producto — activa el cálculo por almacén para ese almacén; y
Existencias del almacén visibles en el producto — además, expone las cifras de ese almacén como columnas opcionales dinámicas y filtros de búsqueda en las vistas de lista y de búsqueda de productos (solo disponible una vez activado el cálculo).
- menu
- Inventory ‣ Configuration ‣ Warehouses ‣ (a warehouse) ‣ Warehouse Configuration tab
- shows
- The "Stock" group of the Warehouse Configuration tab with the "Calculate WH Stock on Product" and "Visible WH Stock on Product" checkboxes, and the red banner with the "Update All" button shown after a switch was toggled.
- highlight
- The two checkboxes and the "Update All" button (red frames).
- data
- Warehouse "YourCompany HU" with calculation just enabled, so the banner is visible.
- module
- eyssen_stock_advanced_stock
- notes
- English UI, light theme, 1440px width, crop to the Stock group and the banner.
Al activar o desactivar cualquiera de los dos interruptores se crean o se eliminan, por almacén, tres campos técnicos de solo lectura tanto en product.template como en product.product — x_eyssen_wh_pt_<warehouse_id>_onhand / _free / _forecasted (y los equivalentes _pp_ en la variante) — y se regeneran las extensiones de las vistas de lista/búsqueda que las exponen como columnas opcionales y como filtros de búsqueda <tipo de cantidad> en <Almacén>. Como cambiar la configuración no rellena estos campos de forma retroactiva, aparece un aviso de advertencia rojo en el formulario del almacén hasta que se usa el botón Actualizar todo para recalcularlo todo.
Ver los datos¶
En el formulario del producto, un widget de solo lectura Datos de existencias en la pestaña Información general enumera las cantidades en mano, libres y previstas para cada almacén activado, con un pequeño botón de actualización junto a él para forzar un recálculo inmediato de ese producto. El mismo widget se muestra en las vistas kanban y de lista de productos (como columna opcional).
- menu
- Inventory ‣ Products ‣ Products ‣ (a product) ‣ General Information tab
- shows
- The read-only "Stock Data" widget on a product form, with one line per enabled warehouse showing the On Hand, Free and Forecasted quantity, and the small refresh icon next to it.
- highlight
- The "Stock Data" widget and its refresh icon (red frames).
- data
- Two warehouses opted in, both holding stock of the product.
- module
- eyssen_stock_advanced_stock
- notes
- English UI, light theme, 1440px width, crop to the widget.
- menu
- Inventory ‣ Products ‣ Products
- shows
- The products list with two per-warehouse columns enabled (e.g. "<Warehouse> On Hand" and "<Warehouse> Free"), and the optional-column drop-down open showing the available per-warehouse columns.
- highlight
- The open optional-column drop-down (red frame).
- data
- Two warehouses with "Visible WH Stock on Product" enabled; five or six products.
- module
- eyssen_stock_advanced_stock
- notes
- English UI, light theme, 1440px width, full list view with the drop-down open.
En un pedido de venta, al abrir la ventana emergente Cant. en fecha de una línea confirmada se muestra una tabla adicional Todos los almacenes con el mismo desglose de existencias en mano/libres/previstas, además del widget de existencias a nivel de línea.
- menu
- Sales ‣ Orders ‣ Orders ‣ (a confirmed order)
- shows
- The "Qty at Date" popover of a confirmed sales order line, extended at the bottom with the "All Warehouses" table listing the on-hand, free and forecasted quantity per warehouse.
- highlight
- The "All Warehouses" table (red frame).
- data
- A confirmed sales order line for a product stocked in two warehouses.
- module
- eyssen_stock_advanced_stock
- notes
- English UI, light theme, 1440px width, crop to the popover.
Recálculo automático¶
Las cifras precalculadas se mantienen sincronizadas automáticamente cada vez que cambian las existencias:
se crea un quant de existencias, o cambia su cantidad o su cantidad reservada;
se confirma o se cancela un movimiento de existencias, o se edita su cantidad de demanda o su ubicación de origen/destino (esto también detecta cambios de cantidad que no mueven ningún quant, como una reserva en un almacén sin existencias); y
se confirma o se cancela un pedido de compra.
Todo esto converge en un único «conjunto de cambios pendientes» por transacción con las plantillas de producto afectadas, de modo que varios disparadores sobre el mismo producto dentro de una transacción se agrupan en un solo recálculo. Por defecto, el recálculo se ejecuta justo después de confirmarse la transacción, en su propio cursor de base de datos, de forma que un fallo en el recálculo nunca convierte en error una operación que por lo demás fue correcta; queda registrado y se autorrepara en el siguiente cambio de existencias.
Truco
Al activar Usar trabajos en segundo plano (queue_job) en los ajustes, ese mismo recálculo por plantilla pasa a ejecutarse en trabajos queue_job asíncronos, lo que ayuda a evitar tiempos de espera agotados en la interfaz con albaranes de existencias grandes. Requiere que el módulo queue_job esté instalado previamente; de lo contrario, el ajuste se niega a guardarse.
Recálculo completo¶
Además de las actualizaciones incrementales automáticas, los datos se pueden reconstruir para todos los productos almacenables a la vez con el botón Recalcular todo de los ajustes, o con el propio botón Actualizar todo de un almacén (que delega en el mismo recálculo completo). Utilícelo después de cambios masivos de datos, o siempre que el aviso de advertencia lo solicite.
Tamaño y carga de la ubicación de almacenamiento¶
eyssen_stock_load añade atributos físicos de tamaño y carga a las ubicaciones de existencias, para llevar el control de las dimensiones utilizables y la capacidad de carga de una estantería, contenedor o ubicación de almacenamiento. Se añade un grupo Tamaño y carga al formulario de la ubicación de existencias (y las columnas correspondientes a la vista de lista de ubicaciones) con:
campos de longitud, anchura y altura/grosor, cada uno expresado en una unidad de medida de longitud configurable (que de forma predeterminada es la unidad de medida de longitud de referencia del sistema);
un campo Volumen con su propia unidad de medida de volumen; y
un campo Peso con su propia unidad de medida de peso.
- menu
- Inventory ‣ Configuration ‣ Locations ‣ (an internal location)
- shows
- The "Size & Load" group of a stock location form with the length, width, height/thickness fields and their dimensional unit of measure, the Volume field with its volume unit, and the Weight field with its weight unit.
- highlight
- The "Size & Load" group (red frame).
- data
- Location "WH/Stock/Shelf 1" with dimensions filled in and a weight capacity set.
- module
- eyssen_stock_load
- notes
- English UI, light theme, 1440px width, crop to the group. The length/width/height labels are currently Hungarian in the source code.
Nota
Los campos de unidad de medida de este grupo se filtran según el Tipo de unidad de medida introducido por el módulo de UdM avanzada (eyssen_uom), por lo que ese módulo también debe estar instalado para que se encuentren las unidades predeterminadas.
Nota
Los campos de longitud/anchura/altura vienen con etiquetas en húngaro codificadas de forma fija en el código fuente (Hosszúság (x), Szélesség (y), Magasság / Vastagság (z) — Longitud, Anchura y Altura/Grosor respectivamente) en lugar de cadenas traducibles, por lo que se muestran en húngaro sin importar el idioma de la interfaz hasta que se añada una traducción.
Importante
El campo Volumen todavía no se calcula a partir de las dimensiones de longitud/anchura/altura: el método de cálculo subyacente es un método provisional que siempre almacena 0. Considérelo un marcador de posición hasta que se implemente.
Configuración¶
Cada módulo se activa de forma independiente en :
No permitir existencias negativas — instala
eyssen_stock_disallow_negative_stock;Existencias avanzadas — instala
eyssen_stock_advanced_stock; yGestión de tamaño y carga — instala
eyssen_stock_load.
Importante
La misma página de ajustes todavía muestra un interruptor Calcular existencias del almacén. Pertenece a una implementación anterior de los datos de existencias por almacén que ha sido sustituida por Existencias avanzadas y ya no se distribuye, por lo que no debe activarse.
Una vez activada la opción Existencias avanzadas, active también Usar trabajos en segundo plano (queue_job) (justo debajo en los ajustes) si el módulo queue_job está disponible y no se desea que el recálculo de existencias se ejecute en línea con las operaciones de existencias.
Uso¶
Permita existencias negativas donde sea legítimo. Antes de confiar en la protección, revise los productos, categorías y ubicaciones que necesiten una excepción (por ejemplo, una ubicación usada únicamente para ajustes correctivos) y marque Permitir existencias negativas en el registro correspondiente.
Active los datos de existencias por almacén para los almacenes que lo necesiten. En cada almacén que deba reportar cifras separadas, marque Calcular existencias del almacén en el producto y, además, Existencias del almacén visibles en el producto si el desglose por almacén debe aparecer como columnas de lista y filtros de búsqueda opcionales.
Ejecute un recálculo completo después de activarlo. Use el botón Actualizar todo del almacén (o Recalcular todo en los ajustes) para que las cifras del nuevo almacén se completen de inmediato en lugar de esperar al siguiente movimiento de existencias.
Consulte las existencias desde el producto o desde el pedido de venta. Use el widget Datos de existencias en el formulario del producto, las columnas de lista opcionales por almacén, o el elemento emergente ampliado Cantidad en fecha de una línea del pedido de venta para ver las cantidades disponibles, libres y previstas por almacén sin salir del registro.
Registre el tamaño y la carga de la ubicación en las ubicaciones que lo necesiten, para que los informes o la lógica de ubicación posteriores dispongan de los datos de longitud, anchura, altura y peso con los que trabajar.
Alcance y módulos¶
eyssen_stock_disallow_negative_stock— bloquea las operaciones de existencias que harían negativo un quant en ubicaciones internas/de tránsito, con excepciones por producto, por categoría y por ubicación.eyssen_stock_advanced_stock— cálculo actual de existencias disponibles/libres/previstas por almacén, almacenado en el modelo consultableproduct.stock.data, con campos dinámicos por almacén, widgets en el producto y en la línea del pedido de venta, y recálculo automático/en segundo plano.eyssen_stock_load— añade atributos de longitud/anchura/altura, volumen y peso a las ubicaciones de existencias.