Arbeiten mit Preisen in MagentoDruckversion

09.01.2015

Die Preisbildung ist einer der kompliziertesten Mechanismen in Magento. Die Preise werden an unterschiedlichen Stellen gebildet, angefangen bei der Berechnung der Mehrwertsteuer bis hin zur Anzeige des Preises für die Produktoption auf der Produktansichtsseite.

Bevor Sie sich mit der Preisbildung beschäftigen, sollten Sie Folgendes bedenken:

  • Für die Änderung der Preisberechnungsfunktion sind mindestens 24 Stunden erforderlich.
  • Beim Testen der Preisbildungsfunktion sollte am besten ein Debugger verwendet werden, um die Stelle zu finden, an der die Preise gebildet werden.
  • Der Code muss mittels Magento-Methoden umgeschrieben werden (die Originaldateien des Systems dürfen auf keinen Fall geändert werden). Dafür muss die Klasse erweitert und die entsprechenden Informationen in die Datei config.xml eingetragen werden. Weitere Informationen, s. http://www.magentocommerce.com/wiki/modules_reference/german/klassen .

Angenommen, in der Datenbank wurden Preise mit vier Zeichen nach Komma gespeichert und es ist erforderlich, dass beim Berechnen der Mehrwertsteuer nicht der bis auf zwei Zeichen aufgerundete Preis, sondern der Preis mit den vier Nachkommazeichen aus der Datenbank verwendet wird. Leider gibt es in Magento keine einheitliche Stelle, an der die Logik der Preisbildung geändert werden kann. Die Preise werden schrittweise gebildet. Hier sind die wichtigsten Phasen der Preisbildung:

1. Methoden der Steuerberechnung

Die Steuerberechnungsmethoden werden im Admin-Menü konfiguriert:

System > Configuration > Sales > Tax > Calculation Settings

Das zentrale Objekt, das die gesamte Preisbildungslogik enthält, befindet sich in

Mage_Tax_Model_Sales_Total_Quote_Subtotal

Jede Steuerberechnungsmethode, die im Admin-Menü angepasst wird, hat eine entsprechende Methode in dieser Klasse:

Tax Calculation Method Based On

  • Unit Price - _unitBaseCalculation()
  • Row Total -  _rowBaseCalculation()
  • Total - _totalBaseCalculation()

2. Finale Steuerberechnung

Die Höhe der Steuern kann im Objekt Mage_Tax_Model_Calculation mittels der Methode calcTaxAmount() umgeschrieben werden.

3. Berechnung der Warenkorbsumme

Der Gesamtpreis des Warenkorbs wird im Objekt  Mage_Sales_Model_Quote_Address_Total_Grand mittels collect() berechnet. Genau hier können alle Änderungen entsprechend der neuen Logik eingetragen werden.

4. Preisansicht

Die Preisansicht wird im Objekt Mage_Core_Model_Store mittels der Methode roundPrice() gebildet.

Bei der Aufgabe mit den 4 Nachkommazeichen gehen Sie wie folgt vor:

public function roundPrice($price)

{

return round($price, 4);

}

5. Dynamische Preisberechnung

Auf der Produktansichtsseite, wenn das Produkt über Optionen verfügt, wird der Preis mithilfe von Javascript-Methoden geändert. Das heißt, dass bei der Auswahl einer Option der Endpreis des Produkts sich entsprechend der ausgewählten Option ändert. Im Javascript-Code wird die auf der PHP-Seite geschriebene Preisberechnung dupliziert. Wenn sich etwas an der Preisbildungslogik in den PHP-Dateien ändert, muss überprüft werden, ob die Berechnung in Javascript korrekt ausgeführt wird.

Dazu muss die Methode Product.OptionsPrice in der Datei js/varien/product.js umgeschrieben werden.

Das gesamte Javascript in Magento basiert auf der prototype-Bibliothek. Für die Erweiterung der Methoden in prototype muss die Methode wrap() verwendet werden. Weitere Informationen zu prototype API

http://prototypejs.org/doc/latest/language/Function/prototype/wrap/ .

<- Zurück zu: Technikerblog


Arbeiten

Webvisitenkarte eines urologischen Ambulanzzentrums
Webvisitenkarte eines urologischen Ambulanzzentrums
Website eines urologischen Ambulanzzentrums. Cross-Browser-fähiges und W3C-konformes Layout. Grundfunktionen: Detailliertes Kontaktformular...
Soziales Netzwerk für Versicherungsvertreter
Soziales Netzwerk für Versicherungsvertreter
Ein soziales Netzwerk als Treffpunkt für Versicherungsvertreter bietet diesen eine gute Gelegenheit, sich ihren potenziellen Kunden...