Publisher Posted March 25, 2013 Share Posted March 25, 2013 Hallo Miteinander Presta 1.4.9.0 Wie es aussieht wird im Shop zuerst die Steuer berechnet und dann den Rabatt berechnet. Im Paypal wird zuerst der Rabatt mitberechnet und dann die Steuer berechnet. Aus dem Grund ist es im PayPal ein bisschen billiger. Kann man das irgendwie beheben? Einige Käufer sind dadurch irritiert. Danke schon im Voraus für die Antworten! Link to comment Share on other sites More sharing options...
eleazar Posted March 25, 2013 Share Posted March 25, 2013 (edited) Ja, da hätte ich was für dich, das mal vor anderhalb Jahren im englischen Forum als Lösung vorgeschlagen wurde und wohl auch mit PrestaShop 1.4.9 klappen sollte, da sich hier am Programmcode nichts geändert hat. Es sei denn, so etwas wie die in Frankreich geltende Ökosteuer wird auch in der Schweiz erhoben. Dann sollten diese Änderungen nicht angewandt werden oder man müsste sie zumindest abändern. Die Steuerberechnung wird in /classes/Cart.php vorgenommen, und zwar in der Funktion getOrderTotal. Um die von dir monierte Berechnungsmethode zu ändern, sind zwei Schritte nötig: 1. Zeile 936 mit /* vorn und */ hinten auf Kommentar setzen: /* $total_price = ($total_price - $total_ecotax) * (1 + (float)(Tax::getProductTaxRate((int)$product['id_product'], (int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})) / 100); */ 2. Ziemlich am Ende der Funktion, bevor alle Steuerarten übergeben und der Gesamtbetrag errechnet und gerundet wird, ab Zeile Zeile 1011 (nach der geschweiften Klammer) folgenden Code einfügen: if ($withTaxes) { $order_total = $order_total * (1 + (float)(Tax::getProductTaxRate((int)$product['id_product'], (int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})) / 100); } Dann sieht der Schluss der Funktion so aus: // Hier Steuerberechnung einfügen if ($withTaxes) { $order_total = $order_total * (1 + (float)(Tax::getProductTaxRate((int)$product['id_product'], (int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})) / 100); } // Jetzt mit Core fortfahren ... if ($type == Cart::ONLY_SHIPPING) return $shipping_fees; if ($type == Cart::ONLY_WRAPPING) return $wrapping_fees; if ($type == Cart::BOTH) $order_total += $shipping_fees + $wrapping_fees; if ($order_total < 0 && $type != Cart::ONLY_DISCOUNTS) return 0; if ($type == Cart::ONLY_DISCOUNTS && isset($order_total_discount)) return Tools::ps_round((float)$order_total_discount, 2); return Tools::ps_round((float)$order_total, 2); } } Und damit es nicht so komplizert wird und du auch nichts am Quellcode ändern musst, habe ich diesem Post ein Override für diese Funktion angehängt. Mit dieser Datei, die auch Cart.php heißt, aber nur die geänderte Funktion enthält, bitte im Verzeichnis /override/classes die dort vorhandene Cart.php überschreiben. Edited March 25, 2013 by eleazar (see edit history) Link to comment Share on other sites More sharing options...
Jabe-Luxury Posted March 10, 2014 Share Posted March 10, 2014 Hello, can`t find the attachment. Please can I have this one? Thanks! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now