Habilitando produtos

Escrito por Mario SAM

Muitas vezes uma tarefa aparentemente simples, como habilitar um produto no sistema pode se tornar um problema por não apresentar uma solução rápida e fácil.

Podemos citar diversos cenários para exemplificar. Um destes cenários poderia acontecer quando você faz o upload de uma centena de produtos por importação ou integração de sistemas. Ao finalizar a importação, todos os produtos estão desabilitados, e agora? Vai habilitar um à um?

A solução do sistema

Como já foi mostrado aqui no blog, existe uma solução no backend para isso. Da mesma forma como foi feito para Atualização de preços em grupo, podemos atualizar o status dos produtos em massa também. Acesse:

Catálogo > Gerenciar Produtos

Você pode usar o filtro de StatusDesabilitado” para listar todos os produtos que deseja selecionar. Marque o checkbox dos itens que deseja habilitar e na sequência clique em AçõesAtualizar atributos“, e Enviar.

habilitar varios produtos ao mesmo tempo

Ao carregar a nova página basta marcar o checkboxAlterar” do atributo Status, marcar como Habilitado e salvar.

Dica! Você também pode fazer o processo contrário. Desabilitar vários produtos ao mesmo tempo, caso queira retirar do seu catálogo de exibição sem a necessidade de excluir os cadastros.

A solução alternativa

Sim. A solução de backend do sistema funciona, mas caímos no mesmo problema da alteração de preços citadas no outro post. Que seria a seleção de muitos produtos para determinada categoria.

Digamos que você subiu 5.000 produtos em 7 categorias diferentes, e deseja habilitar (ou desabilitar) apenas os produtos categoria “Telefonia“, como faz? Não tem como filtrar isso na listagem de produtos.

Então precisamos recorrer ao SQL. Abra seu SGBD (Sequel Pro ou phpMyAdmin) e digite:

UPDATE `cataloginventory_stock_item` SET `is_in_stock` = '1';

O valor 1 (um) habilita os produtos em estoque, e o valor 0 (zero) desabilita. O código acima afeta todos os produtos do sistema. Caso você queira filtrar por categoria, deve usar a cláusula WHERE:

UPDATE `cataloginventory_stock_item` AS estoque
    SET estoque.`is_in_stock` = '1'
WHERE EXISTS (
    SELECT *
        FROM `catalog_category_product` AS categoria
    WHERE categoria.`product_id`=estoque.`product_id`
        AND categoria.`category_id` = 2
);

Lembrando sempre de usar o ID da sua categoria (neste exemplo foi usado 2), que pode ser obtido acessando o backend do sistema e olhando sua categoria.

Outro detalhe importante aqui, é que este código SQL habilita/desabilita os produtos em estoque, diferente de habilitar/desabilitar o produto no sistema.

O problema de desabilitar em estoque, é que o sistema pode estar
configurado para exibir os produtos mesmo que não tenha estoque.

Ao final de todo processo, você precisa reindexar os índices das tabelas em:

Sistema > Gerenciar Indices

Feito isso, basta realizar seus testes.

Sucesso!

O Autor

Mario SAM

Desenvolvedor Magento com certificação M1 Developer e M1 FrontEnd Developer. Graduado em Web Design e Programação, pós-graduado em Gestão de Projetos e TI. Não sou matemático mas estou aqui para somar.