У меня довольно странная проблема, я надеюсь, что кто-то может мне помочь.
Вот основные параметры конфигурации, которые влияют на мою проблему:
Пока все работает нормально. Проблема возникает в пользовательском модуле мини-тележки ajax. Я хватаю коллекцию предметов из корзины, но, поскольку я получаю цену от товара в корзине, я получаю ее без налога.
Вот какой код, чтобы показать, что я имею в виду. Я возьму 20% налог и продукт, у которого цена администратора (включая налог) установлена на 120 $ , вариант, который стоит 60 $ (включая налоги). Исключая налог, это будет 100 $ и 50 $ . Я хочу получить цену + вариант + налог => 180 $
$quote = Mage::getSingleton('checkout/session')->getQuote(); $items = $quote->getAllVisibleItems(); foreach ($items as $item) { echo $item->getPrice(); // 150$ - price excluding tax echo $item->getPriceInclTax(); // 150$ - price excluding tax echo $item->getProduct()->getPrice(); // 120$ price including tax, BUT without the customer selected options. }
PS: Пользовательский параметр, о котором я говорю, выбран пользователем, например, установить флажок, который добавляет + 50 $ к цене продукта.
- Get products id, name, price, quantity, etc. present in your cart. - Get number of items in cart and total quantity in cart. - Get base total price and grand total price of items in cart. Get all items information in cart // $items = Mage::getModel('checkout/cart')->getQuote()->getAllItems(); $items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems(); foreach($items as $item) { echo 'ID: '.$item->getProductId().'<br />'; echo 'Name: '.$item->getName().'<br />'; echo 'Sku: '.$item->getSku().'<br />'; echo 'Quantity: '.$item->getQty().'<br />'; echo 'Price: '.$item->getPrice().'<br />'; echo "<br />"; } Get total items and total quantity in cart $totalItems = Mage::getModel('checkout/cart')->getQuote()->getItemsCount(); $totalQuantity = Mage::getModel('checkout/cart')->getQuote()->getItemsQty(); Get subtotal and grand total price of cart $subTotal = Mage::getModel('checkout/cart')->getQuote()->getSubtotal(); $grandTotal = Mage::getModel('checkout/cart')->getQuote()->getGrandTotal();
Ты пробовал:
$product->getFinalPrice(); // or this? $product->getPriceModel()->getFinalPrice($qty, $product);
Что такое $item->getOptions()
? Вы пробовали $item->getData('price')
? Как вы применяете свои собственные параметры? Что такое $item->debug()
? Возможно, вы можете найти то, что вам нужно.
С уважением, Саймон
Я не нашел решения для моей точной проблемы, но я изменил настройки, чтобы имитировать эту точную функциональность, и проблема, с которой я столкнулась, больше не существует.
Прежде всего, я удалил все налоги на сайте и сказал magento, что все цены исключают налог (даже если они включают налог).
Снижение налогов теперь осуществляется посредством поощрения, применяемого в пользовательской группе, поэтому для
$tax = 20; // percent
Я добавляю сокращение
(1 - (1 / ($tax / 100 + 1)))*100 // for 20% tax => 16.6667% reduction // for 24% tax => 19.3548% reduction
с 4 десятичными знаками (это столько же, сколько пурпурный). Время от времени у него может быть ошибка 1 цент – так что если это не проблема, иди за ней!
Теперь цены на всем сайте будут показаны точно для продукта (потому что поощрение применяется в корзине, а не за продукт).
Вы можете попробовать это:
$grandTotal = $this->helper('checkout/cart')->getQuote()->getGrandTotal(); echo $text .= $this->__(' Total: %s', $this->helper('core')->formatPrice($grandTotal, false));
показать количество телеги в моем заголовке
if ($parentBlock = $this->getParentBlock()) { $count = $this->helper('checkout/cart')->getSummaryCount(); if( $count == 1 ) { echo $text = $this->__('My Cart (%s item)', $count); } elseif( $count > 0 ) { echo $text = $this->__('My Cart (%s items)', $count); } else { echo $text = $this->__('My Cart (0 items)'); } }
показать общую стоимость корзины в моем заголовке
$grandTotal = $this->helper('checkout/cart')->getQuote()->getGrandTotal(); echo $text .= $this->__(' Total: %s', $this->helper('core')->formatPrice($grandTotal, false));