Как получить окончательную цену с применением ценового правила в Magento

Например

$_producte = Mage::getModel('catalog/product')->load(2974);
echo $_producte->getFinalPrice();

Я могу войти в интерфейс при вставке в .phtml

НО я не могу получить окончательную цену (со скидкой) в разделе администратора или в пользовательском файле экспорта продукта.


person Alex    schedule 13.03.2012    source источник


Ответы (2)


Расчет цены в Magento — это полный беспорядок. Вам необходимо загрузить область событий внешнего интерфейса, чтобы инициировать расчет правила (ссылка Mage_CatalogRule_Model_Observer::processFrontFinalPrice() настроена в Mage_CatalogRule config.xml).

Mage::app()->loadAreaPart(Mage_Core_Model_App_Area::AREA_FRONTEND,Mage_Core_Model_App_Area::PART_EVENTS);
person benmarks    schedule 13.03.2012
comment
Как насчет процесса AdminFinalPrice? - person Kamal Joshi; 25.03.2014
comment
Что насчет этого? Звучит как новый вопрос для меня :-) - возможно, здесь или на magento.stackexchange.com - person benmarks; 25.03.2014
comment
Что ж, это правда, но я был удивлен, почему вычисление правила запускается с помощью processFrontFinalPrice, разве это не возможно с помощью processAdminFinalPrice? Можно задать отдельным вопросом.. :) - person Kamal Joshi; 26.03.2014
comment
FWIW Я научился удивляться ничем, когда дело доходит до расчета цены/итогов Magento, к сожалению... - person benmarks; 26.03.2014

Я думаю, что нет необходимости загружать часть области событий внешнего интерфейса. Часто продукт неправильно инстансируется.

Пытаться:

$product
    ->setStoreId(1) //your store_id here
    ->setCustomerGroupId(1) //your favorite customer group id here
    ->load($productId)

а потом:

$product->getFinalPrice()

должен дать правильную окончательную цену.

В противном случае попробуйте решения, приведенные здесь: https://stackoverflow.com/a/14096072/2787671

person ahe_borriglione    schedule 01.09.2017