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 Status “Desabilitado” para listar todos os produtos que deseja selecionar. Marque o checkbox dos itens que deseja habilitar e na sequência clique em Ações “Atualizar atributos“, e Enviar.
Ao carregar a nova página basta marcar o checkbox “Alterar” 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!