Как получить скидку


Я создаю правило цены каталога в admin. Теперь это применяется в интерфейсе. Но я хочу показать фактическую цену в корзине покупок. Поэтому я сделал приведенный ниже код в файле abstract.php. После этого я вызываю его в default.phtml. Теперь я вижу, что цена продукта отображается так, как я хочу. Но теперь мне нужно показать одну строку со сниженной ценой перед надписью "Общая сумма".

    public function getPriceWithoutDiscount()
    {/*Edit by Yesh*/
       if ($this->getProductId()) {
             $productID = $this->_getData('product');
             $productID = $this->getProductId();
             $product = Mage::getModel('catalog/product')->load($productID);
             $price = $product->getPrice();
       }
    return $price;
    }

Есть какие-нибудь предложения?


Пожалуйста, посмотрите мой скриншот

enter image description here

Author: Fabian Schmengler, 2014-02-07

4 answers

Если вы хотите, чтобы скидка применялась в итоговых суммах, вам следует использовать правила цен корзины покупок, а не правила цен каталога. Можно указать правила ценообразования в корзине покупок на основе товаров в корзине, а также применять скидки только к определенным товарам.

Тогда остается единственная проблема - отобразить исходную цену со скидкой на странице сведений о продукте, которую намного проще решить, чем то, что вы пробовали изначально (только внешний интерфейс, никаких изменений во внутренней цене и общей сумме расчет)

 3
Author: Fabian Schmengler, 2014-11-11 11:14:34

Для одного продукта, я думаю, вы можете использовать $product->getPrice() - $product->getFinalPrice()

(https://stackoverflow.com/questions/13587968/magento-what-is-the-difference-between-getprice-and-getfinalprice).

Для всего заказа используйте это: $order->getBaseDiscountAmount(). Пожалуйста, обратите внимание, что значение, возвращаемое этим методом, является отрицательным. Итак, допустим, у вас есть скидка в 60 долларов. Это даст вам -60, поэтому имеет смысл использовать его так: abs($order->getBaseDiscountAmount()). Для использования, отличного от базовой валюты $order->getDiscountAmount().

В первый шаблон, который вам нужно адаптировать, находится по адресу: app/design/frontend/base/default/template/checkout/cart/item/default.phtml. Также взгляните на app/design/frontend/base/default/template/checkout/cart/cart.phtml в строке 131 (Magento 1.8.0.0), запускается процесс рендеринга для каждого отдельного элемента.

Вот подробное описание: в app/design/frontend/base/default/template/checkout/cart/item/default.phtml их несколько. Именно здесь вам нужно внести изменения. Также НЕ РЕДАКТИРУЙТЕ ОСНОВНЫЕ ФАЙЛЫ.
Для получения подробной информации о ценах при оформлении заказа ознакомьтесь с этой статьей: http://nikunjvadariya.wordpress.com/2013/06/17/magento-get-checkout-cart-total-details-subtotalgrandtotaldiscounttax/

 1
Author: Evgeni Ivanov, 2017-05-23 12:37:16

Попробуйте это.

Следующий код показывает, как получить сумму скидки, если она применяется.

$totalItemsInCart = Mage::helper(‘checkout/cart’)->getItemsCount(); //total items in cart
$totals = Mage::getSingleton(‘checkout/session’)->getQuote()->getTotals(); //Total object
$subtotal = round($totals["subtotal"]->getValue()); //Subtotal value
$grandtotal = round($totals["grand_total"]->getValue()); //Grandtotal value

if(isset($totals['discount']) && $totals['discount']->getValue()) {
$discount = round($totals['discount']->getValue()); //Discount value if applied
} else {
    $discount = '';
}

Функция renderTotals() в app/code/core/Mage/Checkout/Block/Cart/Totals.php отвечает за отображение того раздела, который вы выделили на своем изображении. Если вы проверите эту функцию, то увидите, что этот метод возвращает итоговые значения в виде фрагмента html-кода.

Вы можете переопределить этот класс и добавить значение скидки внутри этой функции.

ПРИМЕЧАНИЕ: Не редактируйте основные файлы

 1
Author: Sukeshini, 2014-02-10 07:00:34

Метод, который вы ищете, - это

$product->getOriginalPrice()
 0
Author: roman204, 2014-02-07 16:01:52