Credit Memo - default ke 0 produk dikembalikan


13

Kasus penggunaan khas saya untuk memo kredit adalah penyesuaian harga (menyesuaikan pengiriman, diskon sopan, dll.). Jarang saya menggunakannya untuk pengembalian total.

Sangat aneh bagi saya bahwa perilaku default Magento adalah bahwa CreditMemo mengembalikan semua produk dan mengembalikan semua biaya pengiriman. Bahkan ketika ada pengembalian, jarang pengiriman juga dikembalikan.

Akan lebih baik (dan lebih aman) jika CreditMemo default ke $ 0 (tidak ada produk dikembalikan, dan tidak ada pengiriman dikembalikan) jadi admin eksplisit tentang apa yang dikembalikan (tidak ada secara default). Kalau tidak, terlalu mudah untuk, misalnya, membuat memo kredit yang dimaksudkan untuk mengembalikan uang pengiriman tetapi mengembalikan seluruh pesanan!

Apakah ada konfigurasi, atau kustomisasi, yang akan mendukung default CreditMemo menjadi $ 0?


Tidak ada jawaban re: solusi konfigurasi. Mungkinkah ini dicapai melalui ekstensi? Artinya, atur pengaturan awal pada Credit Memo?
MarkE

Jawaban:


2

Tidak yakin apakah Anda dapat mencapai apa yang Anda inginkan tanpa memperluas fungsionalitas dasar magento. Saya harus melakukan sesuatu yang serupa dan inilah yang saya lakukan: Pertama saya menulis ulang sales_order_creditmemo_totals untuk creditmemos otomatis (mungkin Anda tidak memerlukan ini, sehingga Anda dapat pergi ke bagian kedua):

Di modul saya config.xml:

    <blocks>
        <adminhtml>
            <rewrite>
                ...
                <sales_order_creditmemo_totals>Bla_Customercredit_Block_Adminhtml_Sales_Creditmemo</sales_order_creditmemo_totals>
            </rewrite>
        </adminhtml>

        <sales>
            <rewrite>
                ...
                <order_creditmemo_totals>Bla_Customercredit_Block_Sales_Creditmemo</order_creditmemo_totals>
            </rewrite>
        </sales>
    </blocks>

Kemudian di Blok / Adminhtml / Penjualan / Creditmemo.php

class Bla_Customercredit_Block_Adminhtml_Sales_Creditmemo extends Mage_Sales_Block_Order_Creditmemo_Totals 
{
    protected $_code = 'credit';

    protected function _initTotals() 
    {
        $helper = $this->getCreditsHelper();
        parent::_initTotals();
        $baseAmount = $this->getOrder()->getBaseCustomerCredit();

        $this->addTotal(
            new Varien_Object(
                array(
                    'code' => $this->_code,
                    'value' => -$creditAmount,
                    'base_value' => -$baseAmount,
                    'label' => $helper->__('Bla Credit'),
                )
            ), 
            'discount'
        );

        return $this;
    }
}

Seperti yang Anda lihat saya melakukan ini untuk membuat creditmemos untuk pesanan dengan kredit pelanggan, jadi saya juga menulis ulang sales_order_totals dan sales_order_invoice_totals tapi saya pikir Anda tidak perlu melakukan ini.

Kedua: Saya juga menambahkan templat saya sendiri untuk menambahkan beberapa fungsionalitas selama cretion creditmemo manual, sehingga admin dapat memutuskan bagaimana membuatnya. Untuk itu saya membuat items.phtml di app / design / adminhtml / default / default / template / MODULE_NAME / order / creditmemo / create / items.phtml, dalam phtml ini saya menambahkan beberapa kolom input untuk mengubah nilai efault. Saya juga menambahkan di modul saya di pengontrol admin di bawah Company_CustomerCredit_Adminhtml_CustomerController

require_once 'Mage/Adminhtml/controllers/CustomerController.php';
class Bla_Customercredit_Adminhtml_CustomerController extends Mage_Adminhtml_CustomerController
{
    /**
     * Overload to save customer credits, then call 
     * parent::saveAction() 
     */
    public function saveAction()
    {
        $data = $this->getRequest()->getPost();
        if($data && $data['bla_credits'])
        {
            if(!empty($data['bla_credits']['id']))
            {
                $model = Mage::getModel('credits/credits')->load($data['bla_credits']['id']);
            }
            else
            {
                unset($data['bla_credits']['id']);
                $model = Mage::getModel('credits/credits');
            }

            try
            {
                $model->setData($data['bla_credits']);
                $model->save();
            }
            catch(Exception $e)
            {
            }
        }

        parent::saveAction();
    }
}

Terima kasih, saya menghargai tanggapan Anda dan akan melihat apakah saya dapat menerapkan solusi Anda untuk persyaratan saya.
MarkE
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.