Como alterar o estoque ou status de um produto no Magento.
Tanto a quantidade em estoque ou o status são atributos importantes para gerenciar a visibilidade e disponibilidade do produto.
É importante observar que o atributo status sobrepõem as regras de “estoque” ou “visibilidade” do produto, desabilitando totalmente do “frontend” da loja.
Carregando o produto
Para realizar a atualização do produto, precisamos primeiramente carregar o objeto do produto.
$id = Mage::getModel('catalog/product')->getIdBySku($sku); $product = Mage::getModel('catalog/product')->load($id);
No exemplo acima, estou recuperando o ID do produto utilizando o “Sku”.
Após feito isso, utilizo o ID no método “load()” do Model “catalog/product” para carregar o objeto.
Obviamente, se você já tiver o ID disponível no seu código, pular a parte do “Sku”.
Alterando o Status
Valores que podem ser utilizados:
- 1 – Habilitado
- 2 – Desabilitado
$product->setStatus($status); $product->save();
Alterando o Estoque
Com o ID do produto, carregamos o objeto “stock_item” utilizando método “loadByProduct()”.
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct( $id ); $stockItem->setData('qty', $stock); $stockItem->save();
Alterando todas as configurações de estoque
$stock_data=array( 'use_config_manage_stock' => 1, 'qty' => $stock_qty, 'min_qty' => $stock_min_qty , 'use_config_min_qty'=>1, 'min_sale_qty' => 1, 'use_config_min_sale_qty'=>1, 'max_sale_qty' => $stock_max_sale_qty, 'use_config_max_sale_qty'=>1, 'is_qty_decimal' => 0, 'backorders' => 0, 'notify_stock_qty' => 1, 'is_in_stock' => $is_in_stock ); $product->setData('stock_data',$stock_data); $product->save();
No array “stock_data” passamos todos os parâmetros de configuração.
- “qty” – quantidade disponível em estoque
- “min_qty” – limite da quantidade minima disponível em estoque
- “use_config_min_qty” – com o valor “1”, caso a quantidade “min_qty” seja atingida o produto muda a situação do estoque para “Fora de Estoque”, utilize o valor “0” para desabilitado.
- “min_sale_qty” – limite da quantidade minima por pedido
- “use_config_min_sale_qty” – com o valor “1” os clientes terão que atingir a quantidade minima de unidades do parâmetro “min_sale_qty” para adicionar este item no carrinho, utilize o valor “0” para desabilitado.
- “max_sale_qty” – limite máximo da quantidade permitida por pedido
- “use_config_max_sale_qty” – com o valor “1” os clientes não poderão ter uma quantidade superior ao parâmetro “max_sale_qty” no carrinho deste item, utilize o valor “0” para desabilitado.
- “is_qty_decimal” – estoque contabilizado em quantidades decimais, “0” para desabilitado ou “1” para habilitado (padrão valor “0”).
- “is_qty_decimal” – estoque contabilizado em quantidades decimais, “0” para desabilitado ou “1” para habilitado (padrão valor “0”).
- “backorders” – permitir pedidos em espera, “0” para desabilitado ou “1” para habilitado.
- “notify_stock_qty” – notificar por e-mail quando produto atingir a quantidade minima de estoque.
- “is_in_stock” – “0” para fora de estoque e “1” para produto em estoque.
Alterando a Visibilidade
Valores que podem ser utilizados:
- 1 – Não Exibir Individualmente (não é exibido em nenhum lugar na loja)
- 2 – Catálogo (mostra dentro das categorias)
- 3 – Busca (aparece nos resultados de busca)
- 4 – Catálogo, Busca
$product->setVisibility($visibility); $product->save();