No Magento 1, as informações de inventário são armazenadas em um objeto Item de estoque. Cada objeto de item de estoque está associado a um objeto de produto. O Magento persiste os objetos de Item de Estoque na cataloginventory_stock_item
tabela.
No entanto, cada objeto Item de estoque tem um objeto Status de estoque relacionado. O status do estoque parece ser uma tabela (índice | cache | desnormalizada) que armazena o status do estoque de um produto como uma constante inteira e permite associar vários itens e produtos de estoque a um diferente website_id
. O Magento persiste objetos de status de estoque para o cataloginventory_stock_status
. As constantes de classe e o esquema da tabela para isso estão abaixo.
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)
No entanto , por motivos que não são totalmente claros, também há uma qty
coluna nesta tabela.
Qual é a relação entre essas duas qty
colunas?
Qual é a fonte da verdade qty
e qual é o valor indexado / em cache? O valor está stock_status
simplesmente em uma versão em cache do que está na tabela de itens de estoque? Ou existe uma maneira de configurar o Magento para gerenciar o estoque no nível de um site? Ou o relacionamento é algo diferente do que eu descrevi?
Respostas:
Parece-me que qty in
cataloginventory_stock_item
é a fonte da verdade e qty incataloginventory_stock_status
é o valor em cache / indexado. A recriação do índice de status da ação parece sempre copiar o valor decataloginventory_stock_item
paracataloginventory_stock_status
. Se houver vários sites, também haverá um registro para cada combinação product_id / website_idcataloginventory_stock_status
. Isso sugere a possibilidade de diferentes níveis de estoque por site, mas até onde eu sei, o valor da quantidade é sempre o mesmo para cada um.Acho que esse pode ser o começo de um recurso de várias ações, conforme sugerido por Marius neste post: O objetivo da tabela cataloginventory_stock
fonte