web-dev-qa-db-fra.com

Magento obtenir le panier Prix unitaire TTC impôt

J'ai un problème assez étrange, j'espère que quelqu'un pourra m'aider avec cela.

Voici les principaux paramètres de configuration qui influencent mon problème:

  • Les prix de catalogue dans le panneau d'administration sont affichés TTC
  • Les prix catalogue en front-end sont affichés TTC
  • Les articles du panier d'achat sont affichés hors taxe (ils sont donc affichés séparément près du sous-total).

Tout fonctionne bien jusqu'à présent. Le problème vient d'un module personnalisé ajax mini cart. J'attrape la collection d'articles du panier, mais comme je reçois le prix du produit du panier, je le reçois sans taxe.

Voici un code pour illustrer ce que je veux dire. Je supposerai un 20% taxe et un produit dont le prix administratif (incluant les taxes) est fixé à 120 $ , option qui coûte 60 $ (taxes également). Hors taxe, ce serait 100 $ et 50 $ . Je veux obtenir le prix + option + taxe => 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: L'option personnalisée dont je parle est celle sélectionnée par l'utilisateur, par exemple une case d'installation qui ajoute + 50 $ au prix du produit.

10
Vlad Preda

Je n'ai pas trouvé de solution à mon problème exact, mais j'ai modifié les paramètres pour imiter cette fonctionnalité exacte. Le problème rencontré n'était plus là.

Tout d’abord, j’ai retiré toutes les taxes du site et dit à Magento que tous les prix sont hors taxes (même s’ils incluent les taxes).

La réduction d’impôt s’effectue désormais par le biais d’une promotion appliquée à un groupe personnalisé.

$tax = 20; // percent 

J'ajoute une réduction de 

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

avec 4 décimales (c'est autant que magento accepte). Il peut y avoir une erreur de 1 centime de temps en temps - alors si ce n'est pas un problème, foncez!

Désormais, les prix sur l'ensemble du site Web seront affichés exactement pour le produit (car la promotion est appliquée par panier et non par produit).

1
Vlad Preda
- 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();
2
Gaurang

quelle est la sortie de $item->getOptions()? Avez-vous essayé $item->getData('price')? Comment appliquez-vous vos options personnalisées? Quelle est la sortie de $item->debug()? Peut-être que vous pouvez trouver ce dont vous avez besoin ici.

Cordialement Simon

1
simonthesorcerer

As-tu essayé: 

$product->getFinalPrice();

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

montre la quantité d'un panier dans mon en-tête

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

montre le prix total d'un panier dans mon en-tête

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

Vous pouvez essayer ceci:

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