![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/app/code/Cnc/Catalog/Plugin/Block/Product/View/ |
<?php /** * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @author Radosław Łańcucki <[email protected]> * @copyright Copyright (c) 2022 KDC (https://digitalcommerce.kaliop.com) */ declare(strict_types=1); namespace Cnc\Catalog\Plugin\Block\Product\View; use Ecombricks\InventoryCatalog\Block\Product\View\Estimate as Subject; use Ecombricks\InventoryInventorySales\Model\SourceItemManagement; use Magento\GroupedProduct\Model\Product\Type\Grouped; class Estimate { /** * @var SourceItemManagement */ private $sourceItemManagement; /** * @param SourceItemManagement $sourceItemManagement */ public function __construct(SourceItemManagement $sourceItemManagement) { $this->sourceItemManagement = $sourceItemManagement; } /** * @param Subject $subject * @param $result * @return bool|mixed */ public function afterHasSources(Subject $subject, $result) { $product = $subject->getProduct(); if ($product && $product->getTypeId() === Grouped::TYPE_CODE) { $associatedProducts = $product->getTypeInstance()->getAssociatedProducts($product); if ($this->hasAnyProductWithSource($associatedProducts)) { $result = true; } } return $result; } /** * @param array $products * @return bool */ public function hasAnyProductWithSource(array $products) { /** @var \Magento\Catalog\Model\Product $product */ foreach ($products as $product) { if ($this->hasProductSource($product)) { return true; } } return false; } /** * @param \Magento\Catalog\Model\Product $product * @return bool */ public function hasProductSource(\Magento\Catalog\Model\Product $product) { return (bool)(count($this->sourceItemManagement->getProductCurrentStockSalableSourceCodes($product))); } }