Wir arbeiten in einer 1.9 & php7; Dieses Problem wurde aufgrund eines mutmaßlichen Betrugs mit Paypal festgestellt (aufgrund des Differenzbetrags).
Alles korrekt im Frontend (Steuern anwenden); Aber beim Bezahlen und Berechnen verwendet Magento die Gesamtsumme ohne Steuern.
Tatsächliche falsche Auftragsberechnung:
Produktpreis ohne Steuern + Versand mit Steuern = Gesamtbetrag zur Zahlung
Wechseln Sie zu PHP5 und die Berechnung ist korrekt.
Irgendeine Idee?
Vielen Dank!
magento-1.9
tax
php-7
Joan M
quelle
quelle
Antworten:
Lösung
Ich habe ein Magento-Modul erstellt, um Magento-Probleme mit der Summenberechnung für PHP7 zu lösen. Ich habe insbesondere festgestellt, dass der Gesamtsumme für die Bezahlung mit dem amazon- Modul auf der Checkout-Seite von amazonpayments zweimal Steuern hinzugefügt wurden .
Credits
Die Antwort von archigrafix in diesem Beitrag ( /magento//a/97107/35665 ) löste meine Probleme - das ist also einfach der Fix, der in ein Modul gepackt ist.
Modul:
https://github.com/hartmut-ltd/magento-php7-totals-fix
quelle
Ich weiß wirklich nicht, ob dies in irgendeiner Weise helfen wird, aber es gibt etwas zu untersuchen.
Es ist möglich, dass Ihre
collecttotals
Modellbestellung anders ist und die Steuer nach grand_total bestellt / angewendet wirdSie können wie folgt testen, ob dies das Problem ist. (Beachten Sie, dass dies das Anpassen einer Core-Datei beinhaltet, um einige Debug-Informationen zu erhalten. Bitte versuchen Sie dies nicht auf einer Live-Site!)
Bearbeiten Sie die Methode in:
Mage_Sales_Model_Quote_Address::collecttotals
und fügen Sie der Methode eine Zeile hinzu, damit Sie die Modelle während der Verarbeitung ausgeben können.
Stellen Sie sicher, dass die Protokollierung aktiviert ist.
Schließen Sie die Protokolldatei über die Konsole:
tail -f system.log
Reproduzieren Sie das Problem über das Frontend.
Sie erhalten Einträge wie folgt in Ihrem Protokoll (dies stammt aus einer Vanille 1.9.2.2 - möglicherweise haben Sie andere Einträge)
Sie werden sehen, dass es sich wiederholt. Sehen Sie also einfach, wo es beginnt und endet. Das Muster sollte leicht zu erkennen sein
Beachten Sie die letzten beiden Einträge oben: Steuer kommt vor grand_total. Es kann möglich sein , diese Reihenfolge ist aus dem Gleichgewicht geraten, und Steuer nach grand_total wird erscheinen, so grand_total nicht Steuern hat angewandt.
BEARBEITEN:
Ok, also ich habe nicht gesehen, dass die angesprochene Frage tatsächlich auf die Sortierung der Collectotals hinweist, um das Problem zu sein. Ich vermutete, dass dies das Problem sein könnte, habe dies jedoch nicht selbst in PHP7 getestet
Es gibt eine Lösung, aber es ist nicht sehr schön. Jede neue Erweiterung, die im Geschäft platziert wird und Modelle in den Collector einfügt, muss notiert und zusätzlich zur Sortierung hinzugefügt werden, da sonst möglicherweise noch mehr Probleme auftreten. Kann ein Wartungsproblem für die Zukunft sein.
Erzwingen Sie einfach die Sortierreihenfolge, indem Sie ein bestimmtes
<sort_order>
Element in die Summenkonfiguration einfügen. Sie können dies über Ihre eigene Erweiterung tun, die nur eine config.xml hat, in der Sie die Reihenfolge für jeden Kollektor angeben.In der config.xml haben Direktive als solche:
Verwenden Sie große Lücken zwischen den einzelnen Sortieranweisungen, damit zukünftig zusätzlicher Platz eingefügt werden kann.
Wie bereits erwähnt, nicht sehr elegant, kann aber Ihr unmittelbares Problem lösen.
Beachten Sie auch, dass das System andere Collector-Direktiven enthält, sodass diese möglicherweise auch falsch sind oder angepasst werden müssen
Überprüfen Sie die Hauptvertriebserweiterung config.xml und suchen Sie nach
<totals>
Dort finden Sie:
Es kann andere in anderen Erweiterungen geben, sei es Core / 3rd Party
Ich hoffe, das hilft.
PS: Ich habe nichts davon in PHP7 getestet. Ich weiß, dass das Platzieren der sort_order-Direktive unter php5.x funktioniert
quelle
Auf Magento 1.6.2 und PHP 7.0.2 habe ich das folgendermaßen gelöst:
1 - Zuerst eine lokale config.xml erstellt: /app/code/core/Mage/Sales/etc/config.xml in /app/code/local/Mage/Sales/etc/config.xml kopiert
2 - Änderte es so
Jetzt rechnet es richtig:
quelle