Den entsprechenden Code finden Sie in der Klasse Mage_Sales_Model_Order_Creditmemo_Total_Tax
.
Die Codezeile $part = $creditmemo->getShippingAmount()/$orderShippingAmount;
(in Zeile 116) zeigt deutlich, dass diese speziell codiert ist, um nur die Steuern gemäß dem Feld Versandbetrag aus dem creditMemo-Formular zu berechnen.
Die offensichtliche Änderung besteht darin, diesen Code so anzupassen, dass auch das Feld "Anpassungsrückerstattung" verwendet wird.
Sie können diese Klasse nicht neu schreiben, da Magento sie in den CreditMemo-Berechnungen als Teil des Summensammler-Subsystems instanziiert.
Sie können den Kollektor jedoch so anpassen, dass er Ihre eigene Version der Klasse verwendet, damit nicht alles verloren geht.
In Ihrem eigenen Modul platzieren Sie den folgenden Code in der Datei config.xml. Es geht in die <global>
Elemente hinein
<global>
<sales>
<order_creditmemo>
<totals>
<tax>
<class>NAMESPACE_MODULE/order_creditmemo_total_tax</class>
<after>subtotal</after>
</tax>
</totals>
</order_creditmemo>
</sales>
<global>
Jetzt erstellen Sie die Klassendatei NAMESPACE/MODULE/Model/Order/Creditmemo/Total/Tax
, die die Kerndatei erweitert.
class NAMESPACE_MODULE_Model_Order_Creditmemo_Total_Tax extends Mage_Sales_Model_Order_Creditmemo_Total_Tax
Sie müssen die gesamte Methode "collect" aus der Kernklasse in Ihre neue Datei kopieren.
Fügen Sie den folgenden Code in Zeile 114 hinzu (direkt nach dem Code $shippingDelta = $baseOrderShippingAmount - $baseOrderShippingRefundedAmount
).
/** adjust to also calculate tax on the adjustment value **/
$adjustment = ($creditmemo->getAdjustment() > 0)?$creditmemo->getAdjustment():$creditmemo->getShippingAmount();
if($creditmemo->getAdjustment() > 0 && $creditmemo->getShippingAmount() > 0) {
$adjustment = $creditmemo->getAdjustment() + $creditmemo->getShippingAmount();
}
/** end adjustment **/
und stellen Sie die Linie 116 von $part = $creditmemo->getShippingAmount()/$orderShippingAmount;
bis ein$part = $adjustment/$orderShippingAmount;
Dadurch wird entweder der Versandbetrag oder der Anpassungsbetrag effektiv in die Berechnung einbezogen.