Vlad Preda
Vlad Preda

Reputation: 9910

Magento get cart single item price incl. tax

I have a pretty weird issue, I hope someone can help me with this.

Here are the major config settings that influence my problem:

Everything is working fine so far. The problem comes in a custom ajax mini cart module. I grab the collection of items from the cart, but, since I'm getting the price from the shopping cart item, I get it without tax.

Here is some code to exemplify what I mean. I will assume a 20% tax and a product that has the admin price (including tax) set to 120$, an option that costs 60$ (also including tax). Excluding tax these would be 100$ and 50$. I want to get the price + option + tax => 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: The custom option I am talking about is user selected, for example an install checkbox that adds +50$ to the price of the product.

Upvotes: 10

Views: 34543

Answers (6)

Vlad Preda
Vlad Preda

Reputation: 9910

I didn't find a solution to my exact problem, but I changed the settings to mimic this exact functionality, and the problem I encountered was no longer there.

First of all, I removed all the taxes on the site, and told magento all the prices are excluding tax (even though they are including tax).

The tax reduction is now made through a promotion applied on a custom group, so for

$tax = 20; // percent 

I add a reduction of

(1 - (1 / ($tax / 100 + 1)))*100 
// for 20% tax => 16.6667% reduction
// for 24% tax => 19.3548% reduction

with 4 decimals (that's as much as magento accepts). It may have an error of 1 cent from time to time - so if this is not an issue, go for it!

Now the prices all over the website will be shown exactly for the product (because the promotion is applied per cart, not per product).

Upvotes: 1

Gaurang
Gaurang

Reputation: 1948

- 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();

Upvotes: 2

Gaurang
Gaurang

Reputation: 1948

show the quantity of a cart in my header

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)');
}
}

show the total price of a cart in my header

$grandTotal = $this->helper('checkout/cart')->getQuote()->getGrandTotal();
echo $text .= $this->__(' Total: %s', $this->helper('core')->formatPrice($grandTotal, false));

Upvotes: 0

punit
punit

Reputation: 182

You can try This :

$grandTotal = $this->helper('checkout/cart')->getQuote()->getGrandTotal();
echo $text .= $this->__(' Total: %s', $this->helper('core')->formatPrice($grandTotal, false));

Upvotes: 0

simonthesorcerer
simonthesorcerer

Reputation: 559

what is the ouput of $item->getOptions()? Have you tried $item->getData('price')? How do you apply your custom options? What is the ouput of $item->debug()? Maybe you can find what you need there.

Regards Simon

Upvotes: 1

Andrew
Andrew

Reputation: 12809

Have you tried:

$product->getFinalPrice();

// or this?
$product->getPriceModel()->getFinalPrice($qty, $product);

Upvotes: 1

Related Questions