Inventário ou salable não aparece no grid de produtos após conversão para magento 2

Depois de feita uma migração de uma loja Magento 1.9.x para Magento 2.3.7, no grid de produtos, não aparecia quantidade na coluna “salable quantity”, isto produz um erro no front end quando vamos adicionar um produto ao carrinho, o erro é:
“Product that you are trying to add is not available.”

Claro que fui verificar se tinha estoque, se o produto estava habilitado, depois de vários posts, onde alguns diziam que a VIEW inventory_stok_1 estaria vazia, no caso não estava.
O problema é que a tabela inventory_source_item estava vazia e nela deveria ter o saldo para a venda.

No meu caso é uma loja simples, com estoque apenas nela e um website só, pois o Magento 2 tem uma poderosa forma de controle de estoque/inventário, que não se aplica ao meu caso, mais sobre o MSI temos os posts abaixo:

https://docs.magento.com/user-guide/catalog/inventory-management.html
https://community.magento.com/t5/Magento-2-x-Admin-Configuration/Explanation-for-Default-stock-and-Salable-Qty/td-p/321304
https://www.atwix.com/magento-2/multi-source-inventory-in-magento-2-3/
https://github.com/magento/inventory/wiki/Salable-Quantity-Calculation-and-Mechanism-of-Reservations

Bom, voltando ao nosso problema, mais simples, entre vários posts achei um caminho que resolveu o problema, que foi:

A tabela inventory_source_item estava vazia após a migração e precisava então populá-la e e aproveitei para rever duas configurações no admin, vamos começar por elas, elas precisam estar configuradas.

Vá em “lojas” -> “inventário” -> “sources” devemos ter esta entrada.

Clicando em “Editar” , se não existir crie esta entrada “default” e preencha os campos em todas as abas.
Deixei em branco a latitude/longitude e o fax e depois “salvar”.

Depois vá em “lojas” -> “inventário” -> “stocks” deve ter esta entrada:

Clicando em editar, teremos:

Agora temos que rodar um comando sql para popular a tabela, se procurar vai encontrar algumas variações, mas esta funcionou muito bem.

INSERT IGNORE INTO `inventory_source_item` (source_code, sku, quantity, status) SELECT
'default', catalog_product_entity.sku , cataloginventory_stock_item.qty, 1 FROM
`catalog_product_entity` INNER JOIN `cataloginventory_stock_item` ON
 catalog_product_entity.entity_id = cataloginventory_stock_item.product_id;

Caso suas tabelas tenham prefixo, incluir no comando acima.

Depois rodar:

bin/magento cache:flush
bin/magento index:reindex

Com isto consegui comprar produtos no front e no grid de produtos já temos a coluna “Salable Quantity”.

Resolveu para o meu caso.

Espero ter ajudado,

Alfredo

main.CRITICAL: Notice: Undefined offset: 1 in vendor/magento/framework/Filter/DirectiveProcessor/DependDirective.php
Após data-migration url amigável não funciona no Magento 2

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *