Я реализовал нечто подобное в расширении Shipping Estimator.Для вас доступно несколько вариантов:
- Создание временного объекта квоты, добавление к нему товара, пересчет итогов и проверка скидок элемента квоты.
- Использование существующего объекта цитаты, который используетсяклиент и добавить продукт к нему.Но в этом случае будут применяться все правила скидок, включая товары, которые уже есть в корзине.
Вот пример кода, который используется для оценщика доставки :
$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();
Как я уже говорил, цитату можно инициализировать двумя различными способами:
Новая цитата:
$quote = Mage::getModel('sales/quote');
Существующий клиентЦитата:
$quote = Mage::getSingleton('checkout/session')->getQuote();
Что касается получения скидки от предмета цитаты, это будет ваша домашняя работа:)