Magento

Alterando o estoque e status de um Produto – Magento

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();

 

Resumo
Nome do Artigo
Alterando o estoque e status de um produto no Magento
Descrição
Como alterar o estoque, status e visibilidade de um produto no Magento programaticamente utilizando o model do produto carregado por ID ou Sku.
Autor
Editor
Roger Mauricio Takemiya
Logo do Editor

Post Recentes

Cron do Magento 2 não roda: status missed e pending no cron_schedule

Pedido que não fatura e e-mail que não sai porque todo job fica missed: como ler a cron_schedule, conferir o…

13 horas atrás

Gerar slug de URL em PHP: acento, espaço e símbolo fora do endereço

Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.

1 dia atrás

Log de consentimento LGPD: a tabela MySQL que guarda a prova do aceite

O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…

2 dias atrás

Comando CLI Magento 2: criar a classe e registrar no di.xml

A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…

3 dias atrás

Traduzir o pt_BR.csv do Magento 2 em lote sem perder a coluna de origem

Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…

3 dias atrás

Variação não está disponível no WooCommerce: limpar transients e lookup

Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…

4 dias atrás