Ejemplo n.º 1
0
 /**
  * Adds filtering for collection to return only in stock products
  *
  * @param \Magento\Catalog\Model\ResourceModel\Product\Link\Product\Collection $collection
  * @return void
  */
 public function addInStockFilterToCollection($collection)
 {
     $manageStock = $this->scopeConfig->getValue(\Magento\CatalogInventory\Model\Configuration::XML_PATH_MANAGE_STOCK, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
     $cond = ['{{table}}.use_config_manage_stock = 0 AND {{table}}.manage_stock=1 AND {{table}}.is_in_stock=1', '{{table}}.use_config_manage_stock = 0 AND {{table}}.manage_stock=0'];
     if ($manageStock) {
         $cond[] = '{{table}}.use_config_manage_stock = 1 AND {{table}}.is_in_stock=1';
     } else {
         $cond[] = '{{table}}.use_config_manage_stock = 1';
     }
     $collection->joinField('inventory_in_stock', 'cataloginventory_stock_item', 'is_in_stock', 'product_id=entity_id', '(' . join(') OR (', $cond) . ')');
 }