В Magento 1 информация инвентаризации сохраняется в объекте Stock Item. Каждый объект позиции товара связан с объектом продукта. Magento сохраняет объекты Stock Item на cataloginventory_stock_item
столе.
Однако у каждого объекта позиции товара есть связанный объект состояния запаса. Складской статус представляется таблицей (index | cache | de-normalized), в которой хранится товарный статус товара в виде целочисленной константы, и который позволяет связать несколько товарных позиций и товаров с разными website_id
. Magento сохраняет объекты состояния запасов в cataloginventory_stock_status
. Константы класса и схема таблицы для этого приведены ниже.
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)
Однако по причинам, которые не совсем понятны, в этой таблице также есть qty
столбец.
Какова связь между этими двумя qty
столбцами?
Для чего нужен источник правды, а для qty
чего индексированное / кэшированное значение? Является ли значение stock_status
просто в кешированной версии того, что находится в таблице товарных позиций? Или есть способ настроить Magento для управления запасами на уровне веб-сайта? Или эти отношения отличаются от того, что я описал?
Ответы:
Мне кажется, что qty in
cataloginventory_stock_item
является источником истины, а qty incataloginventory_stock_status
является кэшированным / проиндексированным значением. Похоже, перестройка индекса состояния запаса всегда копирует значение изcataloginventory_stock_item
вcataloginventory_stock_status
. Если существует несколько веб-сайтов, для каждой комбинации product_id / website_id также будет записьcataloginventory_stock_status
. Это предполагает возможность разных уровней запасов для каждого веб-сайта, но, насколько я могу судить, значение qty всегда одинаково для каждого.Я думаю, что это может быть началом использования нескольких акций, как это было предложено Мариусом в этом посте: Цель таблицы cataloginventory_stock
источник