Я хочу установить скидку (скажем, 10 долларов США) за элемент динамически, после нажатия пользовательской кнопки, на странице корзины покупок. Я проверил некоторые кодировки Magento, чтобы найти, что: -
- Преимущественно класс "
Mage_Sales_Model_Quote_Address
" затрагивается всегда, когда кто-либо (любой код Magento) говорит о скидке.
- Существует 2 экземпляра "
Mage_Sales_Model_Quote_Address
" - один для типа адреса " billing " и другой для типа адреса " shipping ", но последний в основном используется для скидок, связанных с кодом купона.
После проверки этой области я продолжил писать код, нацеленный на тип адреса " shipping " "Mage_Sales_Model_Quote_Address
", как: -
$cart = Mage::getSingleton('checkout/cart');
$objShippingAddress = $cart->getQuote()->getShippingAddress();
$discountAmount = 10;
$objShippingAddress->setDiscountDescription('any description');
$objShippingAddress->addTotal(array(
'code' => 'discount',
'title' => "Custom Discount",
'value' => -$discountAmount,
));
$totalDiscountAmount = $discountAmount;
$subtotalWithDiscount = $discountAmount;
$baseTotalDiscountAmount = $discountAmount;
$baseSubtotalWithDiscount = $discountAmount;
$objShippingAddress->setDiscountAmount($totalDiscountAmount);
$objShippingAddress->setSubtotalWithDiscount($subtotalWithDiscount);
$objShippingAddress->setBaseDiscountAmount($baseTotalDiscountAmount);
$objShippingAddress->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount);
$objShippingAddress->setGrandTotal($objShippingAddress->getGrandTotal() - $objShippingAddress->getDiscountAmount());
$objShippingAddress->setBaseGrandTotal($objShippingAddress->getBaseGrandTotal() - $objShippingAddress->getBaseDiscountAmount());
Но все равно я не получаю ни одной строки в разделе "totals
" моей страницы корзины покупок и в разделе обзора заказов на одной странице.
Кто-нибудь, пожалуйста, помогите. Я знаю, что это может быть выполнимо.
Спасибо всем заранее.