Dicas e Soluções

Estoque errado no Magento 2? Corrija a salable quantity sem editar o banco

Especialista analisando divergência entre estoque físico e disponibilidade de venda em servidores de e-commerce

Estoque errado no Magento 2? Corrija a salable quantity sem editar o banco

Estoque errado no Magento 2 pode fazer um item disponível aparecer como esgotado, permitir a venda acima da quantidade esperada ou exibir números diferentes no catálogo e no painel. O problema geralmente não está em um único campo: o Magento pode combinar quantidade física, fontes de estoque, reservas de pedidos e limites de venda para calcular a disponibilidade.

Antes de alterar quantidades ou reindexar tudo, descubra qual número está divergente. Este roteiro ajuda a identificar a camada responsável e corrigir a causa sem editar diretamente as tabelas do banco de dados.

Primeiro: qual quantidade está errada?

No Magento com gerenciamento de múltiplas fontes, a quantidade registrada em uma fonte não representa necessariamente o total que pode ser vendido. A plataforma trabalha com conceitos diferentes:

  • Source quantity: quantidade física atribuída a uma fonte, como depósito, loja ou centro de distribuição.
  • Salable quantity: quantidade disponível para venda, calculada considerando estoque, reservas e configurações comerciais.
  • Stock status: condição que determina se o produto está disponível ou indisponível para compra.
  • Reservations: ajustes associados ao fluxo de pedidos, usados para evitar que diferentes compras consumam a mesma disponibilidade.

Por isso, um produto pode ter dez unidades em uma fonte e apresentar uma salable quantity menor. Isso não comprova uma falha: pode haver pedidos ainda não compensados, limite mínimo de estoque ou outras regras aplicadas ao stock vinculado ao canal de venda.

Registre o SKU, o website afetado, as fontes atribuídas, a quantidade mostrada no Admin, a salable quantity e o comportamento observado na loja. Se o item não aparece apenas na busca ou na categoria, o problema também pode envolver indexação e o mecanismo de pesquisa. Nesse cenário, consulte o diagnóstico sobre Magento e OpenSearch.

7 verificações para corrigir estoque errado no Magento 2

1. Confirme o SKU, o website e o stock correto

Lojas com vários websites podem usar stocks diferentes. Verifique se o canal de vendas está associado ao stock esperado e se as fontes corretas participam dele. Uma fonte com quantidade positiva não disponibiliza automaticamente seus produtos em todos os websites.

Confira também se a fonte está habilitada, se o SKU foi atribuído a ela e se o produto está marcado como disponível. Em produtos configuráveis, faça a verificação nos itens simples, pois são eles que normalmente carregam quantidade e disponibilidade.

2. Compare quantidade física e salable quantity

Abra o produto no Admin e compare as quantidades por fonte com o valor disponível para venda. Uma diferença coerente com pedidos recentes pode ser esperada. Uma diferença crescente, negativa ou sem correspondência comercial exige a análise das reservas.

Não tente igualar os números manualmente antes de entender a diferença. Aumentar a quantidade física para compensar uma reserva incorreta pode liberar itens inexistentes e esconder a origem da inconsistência.

3. Procure pedidos interrompidos no fluxo

Reservas podem ficar inconsistentes quando pedidos são importados, removidos de forma inadequada ou alterados por integrações que não completam o ciclo esperado. Falhas entre pagamento, criação do pedido, faturamento, cancelamento e envio também merecem atenção.

Pesquise pedidos do SKU dentro do período em que a divergência surgiu. Compare estado, status, itens, cancelamentos, remessas e reembolsos. Se o provedor confirma a cobrança, mas o pedido não está visível no Magento, siga primeiro as verificações de pagamento aprovado sem pedido no Magento 2. Criar compensações de estoque antes de esclarecer essa transação pode aumentar a divergência.

4. Liste inconsistências de reservas sem modificar dados

Em um ambiente compatível com os módulos de inventário instalados, o Magento disponibiliza um comando para identificar inconsistências. Execute inicialmente apenas a consulta:

php bin/magento inventory:reservation:list-inconsistencies -r

Revise a saída por pedido, SKU e quantidade. Faça isso com o mesmo usuário do sistema utilizado na manutenção da aplicação e preserve o resultado no registro do incidente.

Não envie automaticamente toda a listagem para um comando de compensação. Antes de criar ajustes, valide os pedidos envolvidos, faça backup consistente e teste o procedimento em staging. A compensação corrige o efeito encontrado, mas uma integração defeituosa pode recriar o problema.

5. Verifique indexadores antes de reindexar

Se as quantidades estão corretas no Admin, mas a vitrine continua exibindo disponibilidade antiga, consulte o estado dos indexadores:

php bin/magento indexer:status
php bin/magento indexer:show-mode
php bin/magento indexer:info

Procure indexadores inválidos, suspensos ou acumulados. Os códigos disponíveis variam conforme a versão e os módulos instalados; por isso, use a saída de indexer:info antes de escolher o que será processado.

Reindexe somente os índices relacionados ao incidente, quando possível. Uma reindexação completa em uma loja grande pode elevar o consumo de CPU, banco e mecanismo de busca. Se a informação já foi atualizada nos índices, mas a página continua antiga, avalie as camadas descritas no guia de cache do Magento 2.

6. Confirme cron e consumidores de fila

Indexadores configurados para atualização agendada dependem do cron. Filas e integrações assíncronas também podem atrasar a propagação de mudanças. Verifique se existem execuções recentes, tarefas com erro recorrente e processos presos.

php bin/magento cron:run
php bin/magento queue:consumers:list

O primeiro comando pode iniciar tarefas pendentes, mas não substitui a correção do agendamento no servidor. Também não inicie consumidores indiscriminadamente em produção: identifique como eles são gerenciados pelo ambiente, por exemplo por um supervisor de processos ou pelo sistema operacional.

7. Revise integrações que alteram estoque

ERPs, hubs, marketplaces, sistemas de depósito e módulos de pagamento podem atualizar quantidades ou interferir no ciclo dos pedidos. Procure chamadas repetidas, SKUs inexistentes, escopo incorreto, atrasos e respostas de erro nos logs da integração.

Uma pista importante é a periodicidade: se a correção manual funciona, mas o número errado retorna após a próxima sincronização, a origem provavelmente está fora do cadastro realizado no Admin. Corrija o mapeamento ou a rotina responsável antes de aplicar novos ajustes.

O que não fazer durante a correção

  • Não altere diretamente tabelas de fontes, reservas ou índices no banco.
  • Não apague reservas apenas porque apresentam valores negativos; esse comportamento pode fazer parte do cálculo normal.
  • Não aumente o estoque físico somente para fazer a salable quantity ficar positiva.
  • Não execute reindexação completa repetidamente sem consultar status e logs.
  • Não teste compras com clientes reais nem reutilize transações de produção.
  • Não limpe Redis, Varnish e todos os caches como primeira tentativa.

Alterações diretas no banco ignoram regras de domínio e podem deixar índices, pedidos e quantidades em estados incompatíveis. Prefira os serviços da plataforma, o Admin, APIs documentadas e comandos próprios do módulo de inventário.

Como validar a correção

Após tratar a causa, valide o mesmo SKU em todas as etapas relevantes:

  1. Confirme as quantidades por fonte e a salable quantity.
  2. Verifique o produto simples e seu configurável, quando aplicável.
  3. Abra a página em sessão anônima e selecione a variação afetada.
  4. Adicione uma quantidade controlada ao carrinho de teste.
  5. Realize o fluxo em staging ou com um método de pagamento apropriado para homologação.
  6. Confira o efeito após criação, cancelamento, faturamento e envio do pedido.
  7. Monitore a sincronização seguinte do ERP ou integrador.

Documente os valores anteriores e posteriores. Isso permite comprovar se a correção permaneceu válida ou se algum processo voltou a gravar informações inconsistentes.

Perguntas frequentes

Por que a salable quantity é diferente da quantidade em estoque?

A salable quantity considera fontes, reservas e configurações de venda. Por isso, ela pode ser menor ou maior que a quantidade visualizada em uma fonte específica, dependendo da composição do stock e dos ajustes pendentes.

Posso apagar registros da tabela inventory_reservation?

Não é recomendável. A exclusão direta pode romper o histórico esperado pelo cálculo de disponibilidade. Liste inconsistências, valide os pedidos e use os mecanismos de compensação da plataforma com backup e teste prévio.

Reindexar corrige qualquer erro de estoque?

Não. A reindexação ajuda quando os dados corretos não chegaram aos índices. Ela não corrige fonte mal atribuída, reserva inconsistente, cron inoperante ou integração que continua enviando quantidades erradas.

Por que o estoque volta a ficar errado depois da correção?

Isso costuma indicar que a causa continua ativa, como uma sincronização de ERP, um consumidor parado, pedidos incompletos ou um mapeamento incorreto entre website, stock e source.

Conclusão

Estoque errado no Magento 2 deve ser tratado como uma divergência entre camadas, não como um simples campo a ser sobrescrito. Comece pelo SKU e pelo canal afetado, compare quantidade física e salable quantity, revise reservas, indexadores, cron e integrações.

Se a divergência envolve muitos produtos, retorna após cada sincronização ou afeta vendas reais, preserve os logs e evite alterações diretas no banco. Uma análise técnica do ambiente pode localizar o processo responsável e permitir uma correção controlada. Para suporte especializado, fale com a equipe do SuporteMagento.com.br.