configuration = $stockConfiguration; $this->resourceConnection = $resourceConnection; } /** * @param Select $select * @return void */ public function execute(Select $select) { $configManageStock = $this->configuration->getManageStock(); $configNotifyStockQty = $this->configuration->getNotifyStockQty(); $connection = $this->resourceConnection->getConnection(); $qtyCondition = $connection->getIfNullSql( 'source_item_config.notify_stock_qty', $configNotifyStockQty ); $globalManageStockEnabledCondition = implode( [ $connection->prepareSqlCondition('legacy_stock_item.use_config_manage_stock', 1), $connection->prepareSqlCondition($configManageStock, 1), $connection->prepareSqlCondition('main_table.quantity', ['lt' => $qtyCondition]), ], ' ' . Select::SQL_AND . ' ' ); $globalManageStockDisabledCondition = implode( [ $connection->prepareSqlCondition('legacy_stock_item.use_config_manage_stock', 0), $connection->prepareSqlCondition('legacy_stock_item.manage_stock', 1), $connection->prepareSqlCondition('main_table.quantity', ['lt' => $qtyCondition]), ], ' ' . Select::SQL_AND . ' ' ); $condition = implode( [ $globalManageStockEnabledCondition, $globalManageStockDisabledCondition, ], ') ' . Select::SQL_OR . ' (' ); $select->where('(' . $condition . ')'); } }