| Current Path : /home/rtorresani/www/vendor/magento/module-catalog-rule/Model/ResourceModel/Rule/Product/ |
| Current File : //home/rtorresani/www/vendor/magento/module-catalog-rule/Model/ResourceModel/Rule/Product/Price.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
/**
* Catalog Rule Product Aggregated Price per date Resource Model
*
* @author Magento Core Team <core@magentocommerce.com>
*/
namespace Magento\CatalogRule\Model\ResourceModel\Rule\Product;
class Price extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
/**
* Initialize connection and define main table
*
* @return void
* @codeCoverageIgnore
*/
protected function _construct()
{
$this->_init('catalogrule_product_price', 'rule_product_price_id');
}
/**
* Apply price rule price to price index table
*
* @param \Magento\Framework\DB\Select $select
* @param array|string $indexTable
* @param string $entityId
* @param string $customerGroupId
* @param string $websiteId
* @param array $updateFields the array of fields for compare with rule price and update
* @param string $websiteDate
* @return \Magento\CatalogRule\Model\ResourceModel\Rule\Product\Price
*/
public function applyPriceRuleToIndexTable(
\Magento\Framework\DB\Select $select,
$indexTable,
$entityId,
$customerGroupId,
$websiteId,
$updateFields,
$websiteDate
) {
if (empty($updateFields)) {
return $this;
}
if (is_array($indexTable)) {
foreach ($indexTable as $k => $v) {
if (is_string($k)) {
$indexAlias = $k;
} else {
$indexAlias = $v;
}
break;
}
} else {
$indexAlias = $indexTable;
}
$select->join(
['rp' => $this->getMainTable()],
"rp.rule_date = {$websiteDate}",
[]
)->where(
"rp.product_id = {$entityId} AND rp.website_id = {$websiteId} AND rp.customer_group_id = {$customerGroupId}"
);
foreach ($updateFields as $priceField) {
$priceCond = $this->getConnection()->quoteIdentifier([$indexAlias, $priceField]);
$priceExpr = $this->getConnection()->getCheckSql(
"rp.rule_price < {$priceCond}",
'rp.rule_price',
$priceCond
);
$select->columns([$priceField => $priceExpr]);
}
$query = $select->crossUpdateFromSelect($indexTable);
$this->getConnection()->query($query);
return $this;
}
}