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:
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.
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).
- 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();
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
As-tu essayé:
$product->getFinalPrice();
// or this?
$product->getPriceModel()->getFinalPrice($qty, $product);
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));
Vous pouvez essayer ceci:
$grandTotal = $this->helper('checkout/cart')->getQuote()->getGrandTotal();
echo $text .= $this->__(' Total: %s', $this->helper('core')->formatPrice($grandTotal, false));