Hello Magento Friends,
Today I am going to solve the issue of product salable quantity 0 being shown in stock in Magento 2.
Preserving customer faith in your store is extremely important. Managing inventory and displaying the correct quantity status to customers is significant to provide a better user experience. Admin can immediately get the list of products that are out of stock and accordingly add more quantity by integrating Out of Stock Products List Extension for Magento 2.
At times Magento 2 store owners face issue of quantity availability showing in stock even if the salable quantity is 0. This has a negative experience on your store customers. So, when the salable quantity becomes 0 it should show out of stock in the frontend to customers in Magento 2.
Let’s see how you can solve the issue of a Product with a Salable Qty 0 not considered Out of Stock in Magento 2.
Contents
Steps to Solve the Issue of Product with Salable Qty 0 is not considered Out of Stock in Magento 2:
Step 1: Create default.phtml in the below path
app\design\frontend\Themes\Yourtheme\Magento_Catalog\templates\product\view\type\
Now add the below code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php /* @var $block \Magento\Catalog\Block\Product\View\AbstractView */?> <?php $_product = $block->getProduct() ?> <?php $stockstate = \Magento\Framework\App\ObjectManager::getInstance()->get('\Magento\InventorySalesApi\Api\GetProductSalableQtyInterface'); $sale_qty = $stockstate->execute($_product->getSku(), 1); ?> <?php if ($block->displayProductStockStatus()): ?> <?php if ($_product->isAvailable() && $sale_qty > 0): ?> <div class="stock available" title="<?php /* @escapeNotVerified */ echo __('Availability') ?>"> <span class="label"><?php /* @escapeNotVerified */ echo __('Availability:') ?></span> <span><?php /* @escapeNotVerified */ echo __('In stock') ?></span> </div> <?php else: ?> <div class="stock unavailable" title="<?php /* @escapeNotVerified */ echo __('Availability') ?>"> <span class="label"><?php /* @escapeNotVerified */ echo __('Availability:') ?></span> <span><?php /* @escapeNotVerified */ echo __('Out of stock') ?></span> </div> <?php endif; ?> <?php endif; ?> |
Results:
Once you apply the above code, the stock availability status in the frontend shows properly based on the scalable quantity in the backend.
Admin Catalog Product Grid
Frontend Product View Page
Conclusion:
As simple as that! Try out the above solution to figure out the issue of Product with Scalable Qty 0 is showing in stock in Magento 2. For any help, you can freely reach out to us via the comment box.
If you found the solution useful, share it with your friends and colleagues. Stay in touch with us for more.
Happy Coding!
This would only work for the product page, not anywhere else it is shown – category grids, widgets, etc.
Yes this code is for product view page only. If you want to show on other pages like category, search etc. then just do same code into respective files.
Hello,
I tried your solution and it seems to work only in the product page, in category view the products still are listed as “in stock”. Is there any way to apply also in the product grid?
Thanks in advance,
Jon
If the backorder is enabled then you need to modify the code according to your requirements what you want to show.
I like the setup but how would this work with backorders being available on some items?