Ich habe ein ziemlich seltsames Problem, ich hoffe, jemand kann mir dabei helfen.
Hier sind die wichtigsten Konfigurationseinstellungen, die mein Problem beeinflussen:
Alles funktioniert soweit gut. Das Problem liegt in einem benutzerdefinierten Ajax-Mini-Cart-Modul. Ich nehme die Sammlung von Artikeln aus dem Warenkorb, aber da ich den Preis aus dem Warenkorb-Artikel erhalte, erhalte ich ihn ohne Steuer.
Hier ist ein Code, um zu veranschaulichen, was ich meine. Ich nehme eine 20% Steuer und ein Produkt an, dessen Verwaltungspreis (einschließlich Steuern) auf 120 $ festgelegt ist, eine Option, die 60 $ kostet (einschließlich Steuern). Ohne Steuern wären dies 100 $ und 50 $ . Ich möchte den Preis + Option + Steuer bekommen => 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: Die benutzerdefinierte Option, über die ich spreche, ist vom Benutzer ausgewählt, z. B. ein Kontrollkästchen zum Installieren, das den Preis des Produkts um + 50 $ erhöht.
Ich habe keine Lösung für mein genaues Problem gefunden, aber ich habe die Einstellungen geändert, um genau diese Funktionalität nachzuahmen, und das Problem, auf das ich gestoßen bin, war nicht mehr vorhanden.
Zunächst entfernte ich alle Steuern auf der Website und teilte Magento mit, dass alle Preise ohne Steuern sind (auch wenn sie Steuern enthalten).
Die Steuerermäßigung erfolgt nun über eine Aktion, die auf eine benutzerdefinierte Gruppe angewendet wird, z
$tax = 20; // percent
Ich füge eine Reduzierung von
(1 - (1 / ($tax / 100 + 1)))*100
// for 20% tax => 16.6667% reduction
// for 24% tax => 19.3548% reduction
mit 4 Dezimalstellen (das ist so viel, wie Magento akzeptiert). Es kann von Zeit zu Zeit einen Fehler von 1 Cent geben - also, wenn dies kein Problem ist, probieren Sie es aus!
Jetzt werden die Preise auf der gesamten Website genau für das Produkt angezeigt (da die Aktion pro Warenkorb und nicht pro Produkt gilt).
- 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();
was ist die Ausgabe von $item->getOptions()
? Haben Sie $item->getData('price')
ausprobiert? Wie wenden Sie Ihre benutzerdefinierten Optionen an? Was ist die Ausgabe von $item->debug()
? Vielleicht finden Sie dort, was Sie brauchen.
Grüße Simon
Hast du es versucht:
$product->getFinalPrice();
// or this?
$product->getPriceModel()->getFinalPrice($qty, $product);
zeige die Menge eines Einkaufswagens in meinem 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)');
}
}
Zeige den Gesamtpreis eines Einkaufswagens in meiner Kopfzeile
$grandTotal = $this->helper('checkout/cart')->getQuote()->getGrandTotal();
echo $text .= $this->__(' Total: %s', $this->helper('core')->formatPrice($grandTotal, false));
Sie können Folgendes versuchen:
$grandTotal = $this->helper('checkout/cart')->getQuote()->getGrandTotal();
echo $text .= $this->__(' Total: %s', $this->helper('core')->formatPrice($grandTotal, false));