Magento 1: Relación entre `qty` en Stock Item, y Stock Status Tables

8

En Magento 1, la información de inventario se almacena en un objeto de artículo de stock. Cada objeto de artículo de stock está asociado con un objeto de producto. Magento persiste en los objetos Stock Item en la cataloginventory_stock_itemtabla.

Sin embargo, cada objeto Artículo de stock tiene un objeto de Estado de stock relacionado. El estado de existencias parece ser una tabla (índice | caché | desnormalizada) que almacena el estado de existencias de un producto como en una constante entera, y le permite asociar múltiples artículos y productos de existencias con un producto diferente website_id. Magento persiste los objetos de estado de stock en cataloginventory_stock_status. Las constantes de clase y el esquema de tabla para esto están a continuación.

class Mage_CatalogInventory_Model_Stock_Status extends Mage_Core_Model_Abstract
{
    const STATUS_OUT_OF_STOCK       = 0;
    const STATUS_IN_STOCK           = 1;
}

mysql> describe cataloginventory_stock_status;
+--------------+----------------------+------+-----+---------+-------+
| Field        | Type                 | Null | Key | Default | Extra |
+--------------+----------------------+------+-----+---------+-------+
| product_id   | int(10) unsigned     | NO   | PRI | NULL    |       |
| website_id   | smallint(5) unsigned | NO   | PRI | NULL    |       |
| stock_id     | smallint(5) unsigned | NO   | PRI | NULL    |       |
| qty          | decimal(12,4)        | NO   |     | 0.0000  |       |
| stock_status | smallint(5) unsigned | NO   |     | NULL    |       |
+--------------+----------------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

Sin embargo , por razones que no están del todo claras, también hay una qtycolumna en esta tabla.

¿Cuál es la relación entre estas dos qtycolumnas?

¿Cuál es la fuente de la verdad qtyy cuál es el valor indexado / en caché? ¿Es el valor stock_statussimplemente una versión en caché de lo que está en la tabla de artículos de stock? ¿O hay una manera de configurar Magento para administrar las existencias a nivel de sitio web? ¿O es la relación algo diferente a lo que he descrito?

Alan Storm
fuente
1
Además, el campo is_in_stock de la tabla de artículos en existencia se ignora en la página de vista del producto.
MagePsycho
Solo para hacer una nota: una cosa que noté es que si un producto es pendiente de pedido, la cantidad puede ir <0 en cataloginventory_stock_item, sin embargo, cataloginventory_stock_status nunca irá por debajo de 0. Sin embargo, no sé por qué se comporta así.
mpchadwick

Respuestas:

7

Me parece que qty in cataloginventory_stock_itemes la fuente de la verdad, y qty in cataloginventory_stock_statuses el valor en caché / indexado. La reconstrucción del índice de estado de stock parece copiar siempre el valor de cataloginventory_stock_itemen cataloginventory_stock_status. Si hay varios sitios web, también habrá un registro para cada combo product_id / website_id en cataloginventory_stock_status. Esto sugiere la posibilidad de diferentes niveles de existencias por sitio web, pero por lo que puedo decir, el valor de cantidad es siempre el mismo para cada uno.

Creo que este puede ser el comienzo de una característica de varias existencias como lo sugiere Marius en esta publicación: El propósito de la tabla cataloginventory_stock

Zeke Farwell
fuente