クレジットメモ-デフォルトで返される商品は0


13

クレジットメモの私の典型的な使用例は、価格の調整(配送料の調整、礼儀割引など)です。トータルリターンのために使用することはまれです。

Magentoのデフォルトの動作は、CreditMemoがすべての製品を返品し、すべての配送料を返金するということです。返品がある場合でも、送料が返金されることはまれです。

CreditMemoのデフォルトが$ 0(製品の払い戻しなし、配送料の払い戻しなし)の場合、管理者は払い戻し対象を明示する(デフォルトでは何もしない)方が良い(そして安全です)。それ以外の場合、たとえば、配送料の払い戻しを目的としたクレジットメモを作成し、注文全体を払い戻すのは簡単です!

CreditMemoを$ 0にデフォルト設定することをサポートする構成またはカスタマイズはありますか?


再回答なし:構成ソリューション。これは拡張機能で実現できますか?つまり、クレジットメモに初期設定を設定しますか?
MarkE

回答:


2

magentoの基本機能を拡張せずに、目的を達成できるかどうかはわかりません。私は似たようなことをしなければならなかったので、これが私がやったことです: 最初にsales_order_creditmemo_totalsを自動クレジットメモに書き直しました(たぶんこれは必要ないので、2番目のパートに行くことができます):

私のモジュール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>

次に、Block / Adminhtml / Sales / 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;
    }
}

ご覧のとおり、これは顧客のクレジットを含む注文のクレジットメモを作成するために行ったため、sales_order_totalsとsales_order_invoice_totalsも書き直しましたが、これを行う必要はないと思います。

2番目: 手動のクレジットメモ作成時にいくつかの機能を追加するための独自のテンプレートも追加したため、管理者がその作成方法を決定できます。そのために、app / design / adminhtml / default / default / template / MODULE_NAME / order / creditmemo / create / items.phtmlの下にitems.phtmlを作成しました。このphtmlでは、efault値を変更するための入力フィールドをいくつか追加しました。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();
    }
}

おかげで、私はあなたの応答に感謝し、私の要件にあなたのソリューションを適用できるかどうかを確認します。
MarkE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.