Как Определить Цену Товара, Которую Клиент Фактически Платит После Применения Скидок
Включая каждую специальную цену, цену уровня, цену группы покупателей, скидку по каталогу, скидку в корзине и все остальное, что могло изменить цену. Только то, что клиент на самом деле платит и напечатано на счете. Прямо сейчас у меня есть
$product->getFinalPrice()
Но это не включает купоны. Это должно включать купоны, но для меня пусто:
Mage::getModel('catalogrule/rule')->calcProductPriceRule($product,$product->getPrice());
КСТАТИ: я являюсь наблюдателем, прикрепленным к событию sales_order_save_after
.
Мой текущий обходной путь состоит в том, чтобы прочитать discount_description
и примените скидку вручную:
if (strcasecmp($order['discount_description'], 'WELCOME') == 0)
{
$item->price = round($product->getFinalPrice() * 0.9, 2);
}
Но это некрасиво, и вам нужно реализовать это для каждой скидки.
Обновление
Я не смог найти правильную цену или какую-либо информацию о продукте в $order->debug()
, поэтому я звоню $quote->getItemsCollection()->getItems()
.
1 answers
Следующий Комментарий Алекса Я создал свалку продуктов
$items = $quote->getItemsCollection()->getItems();
foreach ($items as $order_item)
{
Mage::Log($order_item->debug());
}
Там я нашел много полей с ценами, но ни одно из них не было правильным. Наконец я рассчитал цену отсюда вот так: $order_item['row_total_incl_tax'] - $order_item['discount_amount']
.