Правило цены в каталоге по сравнению с ценой уровня
-
16-10-2019 - |
Вопрос
Для продукта у меня есть правило цены каталога и цена уровня.
Когда я добавляю товар в корзину Magento всегда требует наименьшей цены. Есть ли способ настроить его, чтобы всегда принимать цену в соответствии с правилом цены каталога?
Я искал, но не получил решения для этого. Есть ли настройки администратора для этого?
Решение
Код, который управляет ценой, можно найти в mage_catalog_model_product_type_price
public function getFinalPrice($qty=null, $product)
{
if (is_null($qty) && !is_null($product->getCalculatedFinalPrice())) {
return $product->getCalculatedFinalPrice();
}
$finalPrice = $product->getPrice();
$finalPrice = $this->_applyTierPrice($product, $qty, $finalPrice);
$finalPrice = $this->_applySpecialPrice($product, $finalPrice);
$product->setFinalPrice($finalPrice);
Mage::dispatchEvent('catalog_product_get_final_price', array('product'=>$product, 'qty' => $qty));
$finalPrice = $product->getData('final_price');
$finalPrice = $this->_applyOptionsPrice($product, $qty, $finalPrice);
return max(0, $finalPrice);
}
В _applytierprice
$finalPrice = min($finalPrice, $tierPrice);
и через _applyspecialprice
$finalPrice = min($finalPrice, $specialPrice);
Там нет вариантов, и это вернет минимальную цену.
По моему мнению, это также соответствует ожиданию клиента!
Если вы хотите изменить это поведение, вы можете наблюдать за Catalog_product_get_final_price и использовать $ product-> setData ('final_price', x.yz); до желаемой стоимости.