Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ApplyConfigurationCondition.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
13 
15 {
19  private $configuration;
20 
24  private $resourceConnection;
25 
30  public function __construct(
31  StockConfigurationInterface $stockConfiguration,
32  ResourceConnection $resourceConnection
33  ) {
34  $this->configuration = $stockConfiguration;
35  $this->resourceConnection = $resourceConnection;
36  }
37 
42  public function execute(Select $select)
43  {
44  $configManageStock = $this->configuration->getManageStock();
45  $configNotifyStockQty = $this->configuration->getNotifyStockQty();
46 
47  $connection = $this->resourceConnection->getConnection();
48  $qtyCondition = $connection->getIfNullSql(
49  'source_item_config.notify_stock_qty',
50  $configNotifyStockQty
51  );
52 
53  $globalManageStockEnabledCondition = implode(
54  [
55  $connection->prepareSqlCondition('legacy_stock_item.use_config_manage_stock', 1),
56  $connection->prepareSqlCondition($configManageStock, 1),
57  $connection->prepareSqlCondition('main_table.quantity', ['lt' => $qtyCondition]),
58  ],
59  ' ' . Select::SQL_AND . ' '
60  );
61  $globalManageStockDisabledCondition = implode(
62  [
63  $connection->prepareSqlCondition('legacy_stock_item.use_config_manage_stock', 0),
64  $connection->prepareSqlCondition('legacy_stock_item.manage_stock', 1),
65  $connection->prepareSqlCondition('main_table.quantity', ['lt' => $qtyCondition]),
66  ],
67  ' ' . Select::SQL_AND . ' '
68  );
69 
70  $condition = implode(
71  [
72  $globalManageStockEnabledCondition,
73  $globalManageStockDisabledCondition,
74  ],
75  ') ' . Select::SQL_OR . ' ('
76  );
77 
78  $select->where('(' . $condition . ')');
79  }
80 }
__construct(StockConfigurationInterface $stockConfiguration, ResourceConnection $resourceConnection)
const SQL_AND
Definition: Select.php:77
$connection
Definition: bulk.php:13
const SQL_OR
Definition: Select.php:79