Anda akan menemukan kode yang berhubungan dengan ini di kelas Mage_Sales_Model_Order_Creditmemo_Total_Tax
.
Baris kode $part = $creditmemo->getShippingAmount()/$orderShippingAmount;
(terletak di baris 116) dengan jelas menunjukkan bahwa kode ini dikodekan khusus untuk hanya menghitung pajak sesuai dengan bidang shippingAmount dari formulir creditMemo.
Perubahan yang jelas adalah menyesuaikan kode itu untuk juga menggunakan bidang "Adjustment refund".
Anda tidak dapat benar-benar menulis ulang kelas ini, karena cara magento membuat instance sebagai bagian dari subsistem kolektor total, dalam perhitungan creditmemo.
Namun Anda dapat menyesuaikan kolektor untuk menggunakan versi kelas Anda sendiri, sehingga semuanya tidak hilang.
Jadi, dalam modul Anda sendiri, Anda akan menempatkan kode berikut di config.xml. Itu masuk ke dalam <global>
elemen
<global>
<sales>
<order_creditmemo>
<totals>
<tax>
<class>NAMESPACE_MODULE/order_creditmemo_total_tax</class>
<after>subtotal</after>
</tax>
</totals>
</order_creditmemo>
</sales>
<global>
Sekarang Anda akan membuat file kelas NAMESPACE/MODULE/Model/Order/Creditmemo/Total/Tax
, yang memperpanjang file inti.
class NAMESPACE_MODULE_Model_Order_Creditmemo_Total_Tax extends Mage_Sales_Model_Order_Creditmemo_Total_Tax
Anda perlu menyalin seluruh metode `kumpulkan 'dari kelas inti ke file baru Anda.
Tambahkan kode berikut di baris 114 (tepat setelah kode $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 **/
dan sesuaikan garis 116 dari $part = $creditmemo->getShippingAmount()/$orderShippingAmount;
ke$part = $adjustment/$orderShippingAmount;
Ini kemudian akan secara efektif menggunakan Jumlah Pengiriman atau Jumlah Penyesuaian dalam perhitungan.
Masalahnya adalah, Magento itu tidak tahu faktor pajak apa yang digunakan. Ketika tidak ada produk yang dikembalikan, tidak ada persentase pajak.
Saya memperbaiki masalah dengan hanya menggunakan persentase pajak tertinggi yang dapat saya temukan dalam produk, jangan ragu untuk menyesuaikan dengan kasus penggunaan Anda.
Pajak dihitung dalam CalculTaxForRefundAdjustment di akhir kelas.
config.xml
app / code / local / Project / RefundPartialCreditmemoWithTax / Model / Order / Creditmemo / Total / Tax.php
sumber
Dengan tidak adanya balasan dan karunia kedaluwarsa besok, pekerjaan saya adalah sebagai berikut:
Masukkan
Adjustment Refund
dengan termasuk pajak.Perhatikan rincian komentar untuk referensi Anda dan pelanggan.
sumber