Wir hatten das selbe Problem und leider konnte uns niemand dabei helfen dies so umzubiegen. Im Magento selbst gibt es soviel ich weiss leider keine Einstellmöglichkeiten.
Falls sich das in der Zwischenzeit geändert haben soll, wäre ich auch an einer Lösung interessiert!
Na so wie es oben von den anderen beschrieben wurde wäre nicht schlecht.
Bzw. gibt es eine Art zentrale Preisrundung und wenn ja, wo ist die?
Habe schonn des öfteren gehört das es hier und da zu nicht gewünschten Ergebnissen kommt
und ich würde den Leuten hier wenn sie das auf Ihre speziellen Bedürfnisse anpassen wollen
wenigstens sagen können wo man es findet.
Selbst würde ich aber auch liebend gerne mal dran drumspielen um ein Paar Sachen auszuprobieren.
jo welche totals? hängt ganz davon ab welcher wert gerundet werden soll, mal wirds aus dem core/store->roundPrice mal checkout/helper oder so gerundet, aber hauptsächlich wird für die totals und steuer die rundungsfunktionen des core/store models verwendet. das ist aber nicht auslöser der allgemeinen rundungsprobleme bei steuern z.B. wenn viele klein oder großpreisige produkte im wk liegen, da differiert die steuer bei mir zum teil bis zu 10 cent. eine geisel.
Bei mir ist es so, dass die Rundung eigentlich schon beim einzelnen Produkt geschehen muss. Das heisst wenn ich ein Produkt erfasse exkl. MwSt. z. Bsp CHF 11.50 und dann den Preis im Katalog inkl. MwSt. anzeige, erhlate ich den Betrag von CHF 12.73. Dieser Betrag ist in der Schweiz eigentlich nicht möglich, da unsere Währung dies nicht zulässt. Das kleinste Geldstück ist 5 Rappen.
Das gleiche ist auch umgekehrt genauso, wenn ich den Preis inkl. im Katalog erfasse z. BSP. CHF 11.50 und dann beide Preise inkl. und exkl. MwSt. anzeigen möchte, dann habe ich im Frontend auf der Anzeige CHF 10.68 exkl. und 11.50 inkl. MwSt.
Also egal wo, das Problem ist im ganzen System immer wieder anzutreffen. Vor allem auch im Warenkorb, sobald man mit Rabatten in % arbeiten möchte.
In der Schweiz wird normalerweise nach folgendem Schema gerundet:
1 und 2 Rappen werden abgerundet auf 0 Rappen
3 und 4 Rappen werden aufgerundet auf 5 Rappen
Ich hoffe dass ich mich da verständlich ausdrucken konnte.
wer hats erfunden? die Schwizer.... :D. Komisches system das ihr da habt. Aber man zahlt im Shop ja nicht bar? oder?
Denke das wird etwas schwieriger, aber schau dir mal den tax helper an, da sind die methoden die die anzeige steuern. da könntest du ansetzen. wobei ich glaube dann kommt die komplette steuerberechung und rabattebrechnung durcheinander.
Das gleiche ist auch umgekehrt genauso, wenn ich den Preis inkl. im Katalog erfasse z. BSP. CHF 11.50 und dann beide Preise inkl. und exkl. MwSt. anzeigen möchte, dann habe ich im Frontend auf der Anzeige CHF 10.68 exkl. und 11.50 inkl. MwSt.
In einem Endkundenshop bist du eigentlich verpflichtet die Preise inkl. MwSt anzuzeigen. Daher könnte man die Brutto-Preise am Schluss wie gewohnt zusammenzählen und danach anzeigen, wieviel MwSt in diesem Betrag enthalten ist. Wenn nun bei der MwSt ein Betrag von z.B. 10.68 rauskommt, so muss man diesen nicht runden. Hauptsache der Endpreis ist auf 5 Rappen gerundet und dies sollte gewährleistet sein, solange man gerundete Bruttopreise im Shop definiert.
Ein Problem wird das ganze aus meiner Sicht erst, wenn man Rabatte (egal ob auf Produkte oder den Endpreis) geben will. Bei Rabatten auf Produkteebene muss der Produktepreis gerundet werden. Der Endpreis sollte automatisch stimmen. Bei Abzügen am Endpreis muss dann halt dieser gerundet werden.
Müsste man den Preis echt runden, sobald ein Produkt in den Warenkorb gelegt wird?
Das stimmt solange Du nur Endkunden belieferst und keine Schnittstelle zu einem ERP System hast. Wenn du aber einen Shop für Endkunden und Händler hast und dieser dann noch an einem ERP System angebunden ist, dann kommst Du leider nicht drum rum.
Bei der Anbindung ans ERP System kommen dann schon die nächsten Probleme. Wenn ich dort einen Händlerpreis habe, ist der immer Netto exkl. MwSt. Bei der Übergabe an Magento kannst Du dann entweder im Vorfeld schon beim Import die Berechnung der MwSt. machen und runden oder du importierst alles exkl. MwSt. und solltest dann im Shop runden können.
Leider funktioniert keines von beidem, denn spätestens beim zurückschreiben der Bestellungen hast Du wieder überall Differenzen und falsche Preisberechnungen.
Aus diesem Grund müssen aus meiner Sicht nicht nur der Endpreis sondern alle Preise gerundet werden können.
jo welche totals? hängt ganz davon ab welcher wert gerundet werden soll, mal wirds aus dem core/store->roundPrice mal checkout/helper oder so gerundet, aber hauptsächlich wird für die totals und steuer die rundungsfunktionen des core/store models verwendet. das ist aber nicht auslöser der allgemeinen rundungsprobleme bei steuern z.B. wenn viele klein oder großpreisige produkte im wk liegen, da differiert die steuer bei mir zum teil bis zu 10 cent. eine geisel.
grüsse
Alles klar, vielen Dank!
Jetzt habe ich wenigstens eine Richtung wo man da was machen kann und vor allem
wo da wann welche Dinge berechnet werden.
cool das sich so viele beteiligen und vesuchen zu helfen.... dafür ein grosses dankeschön:) ei
wenn ihr ne coole lösung habt um es zu beheben auf saubere und elegante weise bin ich dankbar dafür....
Eine Möglichkeit global alle Franken-Beträge kaufmännisch zu runden, bietet sich mit folgendem (programmiertechnisch nicht sehr schönen;-) Eingriff in die Zend-Bibliothek.
Nach Zeile 171 diesen Code einfügen. Eine Zeile bevor “$value = Zend_Locale_Format::toNumber($value, array.....”
// Kaufmaennisches Runden von Schweizer Franken if ($options['format'] == "de_CH") { $value = round(($value+0.000001)*20)/20; }
Der neue Code sieht dann so aus:
public function toCurrency($value, array $options = array()) { // Validate the passed number if ((isset($value) === false) or (is_numeric($value) === false)) { #require_once 'Zend/Currency/Exception.php'; throw new Zend_Currency_Exception("Value '$value' has to be numeric"); }
Beispiel:
Sfr. 1.91 sollte sein Sfr. 1.90
Sfr. 1.94 sollte sein Sfr. 1.95
wo kann man sowas einstellen?
Danke für Feedback
Machen kann man natürlich alles, wenn man in die PHP-Programmierung einsteigt. Aber als core-Funktion scheint es das nicht zu geben.
Ich denke auch, dass wir hier in der Schweiz längst die 5 Rappengrenze übersprungen haben. Tatsächlich gibt es viele Läden, die ihre Produkte rappengenau kalkulieren.
Aldi CH macht es z.B. so, dass er ein Total berechnet, wie z.B. 123.14 und dann 4 Rappen (!) Gutschrift abzieht und nur noch 123.10 kassiert. D.h. immer abrundet!
Meine CH-Raiffeisenbank führt für mich ein Konto, wo einzelne Rappen aufgeführt sind und abgebucht werden können.
Warum sollte man also als Endpreis nicht einfach 123.14 Fr angeben und der Kunde überweist genau diesen Betrag?!
Und falls er wirklich mal vorbeikommt und bar bezahlt, dann kann man immer noch runden.
Oder wenn er selbst überweist und aus Gewohnheit doch auf- oder abrundet kann man das immer noch als Bezahlt ansehen.
Und die Kreditkartenbezahlung kümmert sich sowieso nicht um die CH-Rundung auf 5 Rappen.
Eine Möglichkeit global alle Franken-Beträge kaufmännisch zu runden, bietet sich mit folgendem (programmiertechnisch nicht sehr schönen;-) Eingriff in die Zend-Bibliothek.