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.
Das wesentliche Problem ist, dass Magento nicht weiß, welchen Steuerfaktor es verwenden soll. Wenn es keine Produkte gibt, die erstattet werden, gibt es keinen Steuerprozentsatz.
Ich habe das Problem behoben, indem ich nur den höchsten Steuerprozentsatz verwendet habe, den ich in den Produkten finden kann. Sie können sich jederzeit an Ihren Anwendungsfall anpassen.
Die Steuer wird in berechneTaxForRefundAdjustment am Ende der Klasse berechnet.
config.xml
app / code / local / Project / RefundPartialCreditmemoWithTax / Model / Order / Creditmemo / Total / Tax.php
quelle
Da es an Antworten mangelt und das Kopfgeld morgen abläuft, arbeite ich wie folgt:
Geben Sie die
Adjustment Refund
mit Steuern enthalten.Beachten Sie die Aufschlüsselung in den Kommentaren für Ihre Referenz und die Kunden.
quelle