Alacak Dekontu - varsayılan olarak 0 ürün iade edilir


13

Kredi notu için tipik kullanım durumum fiyat ayarlamalarıdır (nakliye, nezaket indirimi vb.). Toplam getiri için kullanıyorum nadirdir.

Magento'nun varsayılan davranışı, CreditMemo'nun tüm ürünleri iade etmesi ve tüm nakliyeyi iade etmesi benim için tuhaf. İade olsa bile, nakliye de iade edilir.

CreditMemo varsayılan olarak 0 $ (ürün iade edilmez ve nakliye ücreti iade edilmez) ise daha iyi (ve daha güvenli) olacaktır, bu nedenle yöneticiler neyin iade edileceği konusunda açıktır (varsayılan olarak hiçbir şey). Aksi takdirde, örneğin, nakliye ücretini iade etmek, ancak tüm siparişi iade etmek için bir alacak dekontu oluşturmak çok kolaydır!

Bir CreditMemo'yu 0 $ 'a ayarlamayı destekleyen herhangi bir yapılandırma veya özelleştirme var mı?


Yanıt yok: yapılandırma çözümü. Bu bir uzantı ile yapılabilir mi? Yani, Alacak Dekontu'ndaki başlangıç ​​ayarları?
MarkE

Yanıtlar:


2

Magento temel işlevlerini genişletmeden istediğiniz şeyi başarabileceğinizden emin değilsiniz. Ben benzer bir şey yapmak zorunda kaldım ve ben de bunu yaptım: İlk olarak sales_order_creditmemo_totals otomatik creditmemos için yeniden yazdım (belki buna ihtiyacınız yok, bu yüzden ikinci bölüme gidebilirsiniz):

Benim modül 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>

Sonra Block / Adminhtml / Sales / Creditmemo.php içinde

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;
    }
}

Gördüğünüz gibi müşteri kredisi ile sipariş için kredi notları oluşturmak için bunu yaptım, bu yüzden ayrıca sales_order_totals ve sales_order_invoice_totals yeniden yazdım ama bence bunu yapmanıza gerek yok.

İkincisi: Ayrıca, elle kredi oluşturma sırasında bazı işlevsellik eklemek için kendi şablonumu ekledim, böylece yönetici bunu nasıl oluşturacağına karar verebilir. Bunun için app / design / adminhtml / default / default / template / MODULE_NAME / order / creditmemo / create / items.phtml altında bir items.phtml oluşturdum, bu phtml'de efault değerlerini değiştirmek için bazı giriş alanları ekledim. Ayrıca modülümü Company_CustomerCredit_Adminhtml_CustomerController altındaki bir yönetici denetleyicisine ekledim

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();
    }
}

Teşekkürler, yanıtınızı takdir ediyorum ve çözümünüzü gereksinimlerime uygulayıp uygulayamayacağımı göreceğim.
MarkE
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.