Magento 1: Relation entre la «quantité» dans l'article en stock et les tableaux d'état des stocks

8

Dans Magento 1, les informations d'inventaire sont stockées dans un objet Article en stock. Chaque objet de stock est associé à un objet produit. Magento persiste les objets Article Stock dans la cataloginventory_stock_itemtable.

Cependant, chaque objet Article de stock a un objet État de stock associé. L'état du stock semble être une table (index | cache | dénormalisée) qui stocke l'état du stock d'un produit sous la forme d'une constante entière et vous permet d'associer plusieurs articles en stock et produits à un autre website_id. Magento conserve les objets d'état des stocks dans le cataloginventory_stock_status. Les constantes de classe et le schéma de table pour cela sont ci-dessous.

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)

Cependant , pour des raisons qui ne sont pas entièrement claires, il existe également une qtycolonne dans ce tableau.

Quelle est la relation entre ces deux qtycolonnes?

Quelle est la source de vérité qtyet quelle est la valeur indexée / mise en cache? La valeur est-elle stock_statussimplement une version mise en cache de ce qui est dans la table des articles en stock? Ou existe-t-il un moyen de configurer Magento pour gérer les stocks au niveau du site Web? Ou la relation est-elle autre chose que ce que j'ai décrit?

Alan Storm
la source
1
De plus, le champ is_in_stock de la table stock-article est ignoré dans la page d'affichage du produit.
MagePsycho
Juste pour noter - une chose que j'ai remarquée est que si un produit est en rupture de stock, la quantité peut aller <0 dans cataloginventory_stock_item, mais cataloginventory_stock_status ne descendra jamais en dessous de 0. Je ne sais pas pourquoi il se comporte comme ça, cependant.
mpchadwick

Réponses:

7

Il me semble que qty in cataloginventory_stock_itemest la source de la vérité et qty in cataloginventory_stock_statusest la valeur mise en cache / indexée. La reconstruction de l'index de l'état du stock semble toujours copier la valeur de cataloginventory_stock_itemdans cataloginventory_stock_status. S'il existe plusieurs sites Web, il y aura également un enregistrement pour chaque combo product_id / website_id dans cataloginventory_stock_status. Cela suggère la possibilité de différents niveaux de stock par site Web, mais pour autant que je sache, la valeur de la quantité est toujours la même pour chacun.

Je pense que cela peut être le début d'une fonctionnalité multi-stock comme suggéré par Marius dans cet article: Le but de la table cataloginventory_stock

Zeke Farwell
la source