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 wird
Sie 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.
public function collectTotals()
{
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_before', array($this->_eventObject => $this));
foreach ($this->getTotalCollector()->getCollectors() as $model) {
mage::log($model->getCode()); // <===== ADD THIS LINE
$model->collect($this);
}
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_after', array($this->_eventObject => $this));
return $this;
}
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)
2015-12-21T05:54:12+00:00 DEBUG (7): nominal
2015-12-21T05:54:12+00:00 DEBUG (7): subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): msrp
2015-12-21T05:54:12+00:00 DEBUG (7): freeshipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): weee
2015-12-21T05:54:12+00:00 DEBUG (7): shipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_shipping
2015-12-21T05:54:12+00:00 DEBUG (7): discount
2015-12-21T05:54:12+00:00 DEBUG (7): tax
2015-12-21T05:54:12+00:00 DEBUG (7): grand_total
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:
<sales>
<quote>
<totals>
<nominal>
<sort_order>100</sort_order>
</nominal>
<subtotal>
<sort_order>200</sort_order>
</subtotal>
<msrp>
<sort_order>300</sort_order>
</msrp>
<freeshipping>
<sort_order>400</sort_order>
</freeshipping>
......
insert each collector model with a sort directive
......
</totals>
</quote>
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:
<order_invoice>
<order_creditmemo>
<pdf>
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