Troverai il codice che si occupa di questo nella classe Mage_Sales_Model_Order_Creditmemo_Total_Tax
.
La riga di codice $part = $creditmemo->getShippingAmount()/$orderShippingAmount;
(situata alla riga 116) mostra chiaramente che questo è specificamente codificato per calcolare solo le tasse secondo il campo shippingAmount dal modulo creditMemo.
L'ovvia modifica è quella di adattare quel codice per usare anche il campo "Rimborso della rettifica".
In realtà non puoi riscrivere questa classe, a causa di come Magento la crea un'istanza come parte del sottosistema collector totali, nei calcoli di creditmemo.
Puoi comunque adattare il raccoglitore per usare la tua versione della classe, quindi non tutto è perduto.
Quindi, nel tuo modulo inserirai il seguente codice in config.xml. Va dentro gli <global>
elementi
<global>
<sales>
<order_creditmemo>
<totals>
<tax>
<class>NAMESPACE_MODULE/order_creditmemo_total_tax</class>
<after>subtotal</after>
</tax>
</totals>
</order_creditmemo>
</sales>
<global>
Ora creerai il file di classe NAMESPACE/MODULE/Model/Order/Creditmemo/Total/Tax
, che estende il file principale.
class NAMESPACE_MODULE_Model_Order_Creditmemo_Total_Tax extends Mage_Sales_Model_Order_Creditmemo_Total_Tax
Dovrai copiare l'intero metodo `collect 'dalla classe principale al tuo nuovo file.
Aggiungi il seguente codice alla riga 114 (subito dopo il codice $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 **/
e regola la linea 116 da $part = $creditmemo->getShippingAmount()/$orderShippingAmount;
a$part = $adjustment/$orderShippingAmount;
In tal modo, nel calcolo verranno effettivamente utilizzati l'ammontare della spedizione o l'importo della rettifica.