Magento 1: Beziehung zwischen "Menge" im Lagerartikel und Lagerstatus-Tabellen

8

In Magento 1 werden Inventarinformationen in einem Lagerartikelobjekt gespeichert. Jedes Lagerartikelobjekt ist einem Produktobjekt zugeordnet. Magento behält Stock Item-Objekte in der cataloginventory_stock_itemTabelle bei.

Jedes Lagerartikelobjekt verfügt jedoch über ein zugehöriges Lagerstatusobjekt. Lagerstatus erscheint ein sein (Index | Cache | de-normalisiert) Tisch speichert ein Lagerbestand des Produktes als in Integer - Konstante, und ermöglicht es Ihnen , mehr verfügbaren Teile und Produkte mit einem anderen zu verbinden website_id. Magento behält Lagerstatusobjekte bei cataloginventory_stock_status. Die Klassenkonstanten und das Tabellenschema hierfür sind unten aufgeführt.

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)

Aus Gründen, die nicht ganz klar sind, enthält diese Tabelle jedoch auch eine qtySpalte.

Welche Beziehung besteht zwischen diesen beiden qtySpalten?

Welches ist die Quelle der Wahrheit qtyund welches ist der indizierte / zwischengespeicherte Wert? Ist der Wert in stock_statuseiner zwischengespeicherten Version von dem, was in der Lagerartikeltabelle enthalten ist? Oder gibt es eine Möglichkeit, Magento für die Verwaltung von Lagerbeständen auf Website-Ebene zu konfigurieren? Oder ist die Beziehung etwas anderes als das, was ich beschrieben habe?

Alan Storm
quelle
1
Außerdem wird das Feld is_in_stock aus der Bestandsartiktabelle auf der Produktansichtseite ignoriert.
MagePsycho
Nur um eine Notiz zu machen - eine Sache, die mir aufgefallen ist, ist, dass wenn ein Produkt nachbestellbar ist, die Menge in cataloginventory_stock_item <0 gehen kann, cataloginventory_stock_status jedoch niemals unter 0 fällt. Ich weiß jedoch nicht, warum es sich so verhält.
mpchadwick

Antworten:

7

Es sieht für mich so aus, als ob Menge in cataloginventory_stock_itemdie Quelle der Wahrheit ist und Menge in cataloginventory_stock_statusder zwischengespeicherte / indizierte Wert. Das Neuerstellen des Bestandsstatusindex scheint immer den Wert von cataloginventory_stock_itemnach zu kopieren cataloginventory_stock_status. Wenn mehrere Websites vorhanden sind, wird für jede Kombination aus product_id / website_id ein Datensatz erstellt cataloginventory_stock_status. Dies deutet auf die Möglichkeit unterschiedlicher Lagerbestände pro Website hin, aber soweit ich das beurteilen kann, ist der Mengenwert für jeden immer gleich.

Ich denke, dies könnten die Anfänge eines Multi-Stock-Features sein, wie von Marius in diesem Beitrag vorgeschlagen: Der Zweck der Tabelle cataloginventory_stock

Zeke Farwell
quelle