대변 ​​메모-기본적으로 0 개 제품 반환


13

신용 메모의 일반적인 사용 사례는 가격 조정 (배송 조정, 예의 할인 등)입니다. 내가 총 수익을 위해 그것을 사용하는 것은 드 rare니다.

Magento의 기본 동작은 CreditMemo가 모든 제품을 반환하고 모든 배송비를 환불한다는 것입니다. 반품이있는 경우에도 배송비가 환불되는 경우는 드 rare니다.

CreditMemo의 기본값이 $ 0 (환불 된 제품이없고 배송비가 환불되지 않은)이면 더 좋으며 더 안전 할 것입니다. 따라서 관리자는 환불 대상에 대해 명시 적입니다 (기본적으로 아무것도 아님). 그렇지 않으면 배송비를 환불하지만 전체 주문을 환불하기위한 대변 메모를 작성하는 것이 너무 쉽습니다.

CreditMemo의 기본 설정을 $ 0으로 설정하는 구성 또는 사용자 정의가 있습니까?


답변 없음 : 구성 솔루션. 확장을 통해이 작업을 수행 할 수 있습니까? 즉, 대변 메모의 초기 설정을 설정 하시겠습니까?
MarkE

답변:


2

magento 기본 기능을 확장하지 않고 원하는 것을 얻을 수 있는지 확실하지 않습니다. 나는 비슷한 일을해야했고 이것이 내가 한 일입니다. 먼저 자동 신용 메모에 대해 sales_order_creditmemo_totals를 다시 작성했습니다 (필요하지 않을 수도 있으므로 두 번째 부분으로 이동할 수 있습니다).

내 모듈 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도 다시 작성했지만 그렇게 할 필요는 없다고 생각합니다.

둘째 : 수동 신용 메모 생성 중에 일부 기능을 추가하기 위해 자체 템플릿을 추가하여 관리자가 템플릿 생성 방법을 결정할 수있었습니다. 이를 위해 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.