Magento Forum

   
Gelöst: MwSt Rundungsfehler, wie ausgleichen
 
michak1975
Jr. Member
 
Total Posts:  13
Joined:  2011-11-13
 

Hallo, ich setze hier derzeit ein Magento in Version 1.6.2.0 ein und habe große Probleme mit der Rundung bei der MwSt Berechnung. Die Preise sind derzeit im Shop als Netto hinterlegt und werden dann im FE inkl. 7% MwSt ausgewiesen.
Zunächst würde mich interessieren ob sich bei Version 1.7.x dahingehend schon etwas getan hat und sich daher ein Upgrade lohnt.
Ansonsten habe ich schon so einiges versucht um dass mit dem Runden in den Griff zu bekommen.
Ich habe in der Datei Mage/core/Model/Store.php bei der Funktion roundPrice() den Wert für round() von 2 auf 4 gestellt. Und dies in der System --> Konfiguration bei Steuer --> “Steuerberechnungsmethode basiert auf” mit allen drei Varianten (Einheitspreis, Zeilensumme und Gesamtbetrag) probiert. Leider bringt dass alles nichts.

Hier mal eine Rechenbeispiel.

3,54 EUR <-- Nettopreis im BE hinterlegt
3,79 EUR <-- Bruttopreis im FE wird korrekt mit inkl. 7% ausgewiesen

Legt man sich hiervon nun einen Artikel in den Warenkorb ergibt sich folgende einfache Rechnung. wink

3,79 EUR Zwischensumme inkl. MwSt.
3,54 EUR Gesamtsumme exkl. MwSt.
0,25 EUR 7% MwSt. (7%)
3,79 EUR Gesamtsumme inkl. MwSt.

Anders sieht es jetzt aber aus wenn man sich 10 Stück dieses Artikels in den Warenkorb legt. :-(

37,90 EUR Zwischensumme inkl. MwSt.
35,40 EUR Gesamtsumme exkl. MwSt.
2,50 EUR 7% MwSt. (7%)
37,90 EUR Gesamtsumme inkl. MwSt.

Sieht erstmal gut aus, oder. Alles schön 10x so viel.
Mache ich nun aber die Gegenrechnung und rechne von den 37,90 EUR Gesamtsumme inkl. MwSt. die 7% MwSt. zurück ergibt ein ganz anderer Wert.

37,90 EUR / 1,07 = 35,42 EUR Netto <-- Und nicht 35,40 EUR
und
37,90 EUR - 35,42 EUR = 2,48 EUR MwSt. <-- Und nicht 2,50 EUR

Ich bin hier ein wenig irritiert. Was ist nun richtig. Irgend wo passiert doch da ein grober Schnitzer. Der Steuerberater meint, auf die obere Weise Spendet man dem Finanzamt 0,2 EUR/Cent.

Jetzt würde ich den Shop gerne wie folgt umstellen.
Im FE wird wie gehabt der Bruttopreis angezeigt. Dann rechnet der Shop alle Bruttopreise zusammen und zieht davon die MwSt. Derzeit scheint er es irgendwie anders zu machen.
Mir ist nicht klar wie sich der Shop bei den unterschiedlichen Varianten bei “Steuerberechnungsmethode basiert auf” (Einheitspreis, Zeilensumme und Gesamtbetrag) verhält.

 
Magento Community Magento Community
Magento Community
Magento Community
 
michak1975
Jr. Member
 
Total Posts:  13
Joined:  2011-11-13
 

Manchmal liegt die Lösung doch so nahe. grin

Nach dem ich ja die besagten Änderungen an der Datei Mage/core/Model/Store.php vorgenommen hatte, hatte ja der Shop noch immer nicht wie gewünscht gerundet. Eine Nacht darüber geschlafen, ist mir heute Morgen die Lösung eingefallen. Ich hatte ja die Nettopreise der Artikel lediglich mit zwei Stellen hinterm Komma im Shop hinterlegt. So fehlt dem Shop natürlich die Grundlage erfolgreich bis auf die 4te Stelle hinterm Komma zu Runden. Also habe ich nun alle Nettopreise mit 4 Stellen hinterm Komma eingepflegt. Wobei ich die 4 Stelle entsprechend Runde.

Bsp. 3,79 Brutto / 1,07 = 3,54205 (bis auf die 5 Stelle genau) Hieraus wird dann im Shop 3,5421 Netto

Um im Adminbereich in der Produktverwaltung auch Preise mit 4 Stellen hinter dem Komma eingeben zu könne muss noch zwei weiter Anpassung vornehmen.

Hier mal alle drei Anpassungen aufgeführt.

1. Mage/Adminhtml/Block/Catalog/Product/Helper/Form/Price.php
<-- Sucht hier die Funktion getEscapedValue und passt folgende Codezeile an.
aus

return number_format($value2null'');
wird
return number_format($value4null'');

2. Mage/Tax/Helper/Data.php
<-- Sucht hier nach folgenden Codezeilen

case Mage_Tax_Model_Config::DISPLAY_TYPE_INCLUDING_TAX:
    
$price $this->_calculatePrice($price$includingPercentfalse);
    
$price $this->_calculatePrice($price$percenttrue);
    break;
und ersetzt diese mit
case Mage_Tax_Model_Config::DISPLAY_TYPE_INCLUDING_TAX:
    if (
$includingPercent != $percent{
        $price 
$this->_calculatePrice($price$includingPercenttrue);
        
$price $this->_calculatePrice($price$percentfalse);
    
}
    
break;

3. Mage/Core/Model/Store.php
<-- Sucht hier die Funktion roundPrice und passt folgende Codezeile an.
aus

return round($price2);
wird
return round($price4);

Wichtig! Bitte vergesst nicht die geänderten Dateien in einem Unterordner von app/code/local/ statt in app/code/core/ abzuspeichern. Damit der Core von Magento nicht überschrieben wird. Macht euch auch ausführliche Dokumentationen zu euren Anpassungen.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top