Magento - Как проверить, какую скидку получит товар, если положить его в корзину - PullRequest
0 голосов
/ 15 ноября 2011

Я бы хотел, чтобы Magento сообщал мне о любых скидках, которые получил бы продукт, если бы он был помещен в корзину. Каков наилучший способ сделать это? Существуют ли какие-либо модели или помощники, которым я могу передать товар, и он возвращает сумму скидки?

Спасибо

С уважением Gabriel

1 Ответ

3 голосов
/ 15 ноября 2011

Я реализовал нечто подобное в расширении Shipping Estimator.Для вас доступно несколько вариантов:

  1. Создание временного объекта квоты, добавление к нему товара, пересчет итогов и проверка скидок элемента квоты.
  2. Использование существующего объекта цитаты, который используетсяклиент и добавить продукт к нему.Но в этом случае будут применяться все правила скидок, включая товары, которые уже есть в корзине.

Вот пример кода, который используется для оценщика доставки :

    $request = new Varien_Object($addToCartInfo);

    if ($product->getStockItem()) {
        $minimumQty = $product->getStockItem()->getMinSaleQty();
        if($minimumQty > 0 && $request->getQty() < $minimumQty){
            $request->setQty($minimumQty);
        }
    }

    $result = $quote->addProduct($product, $request);

    if (is_string($result)) {
        Mage::throwException($result);
    }

    Mage::dispatchEvent('checkout_cart_product_add_after',
                        array('quote_item' => $result, 'product' => $product));

    $quote->collectTotals();
    $result = $quote->getShippingAddress()->getGroupedAllShippingRates();

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

  1. Новая цитата:

    $quote = Mage::getModel('sales/quote');
    
  2. Существующий клиентЦитата:

    $quote = Mage::getSingleton('checkout/session')->getQuote();
    

Что касается получения скидки от предмета цитаты, это будет ваша домашняя работа:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...