Ghi nhớ tín dụng - mặc định là 0 sản phẩm được trả lại


13

Trường hợp sử dụng điển hình của tôi cho ghi nhớ tín dụng là điều chỉnh giá (điều chỉnh vận chuyển, giảm giá lịch sự, v.v.). Thật hiếm khi tôi sử dụng nó cho tổng lợi nhuận.

Điều kỳ lạ với tôi là hành vi mặc định của Magento là CreditMemo đang trả lại tất cả các sản phẩm và hoàn trả tất cả vận chuyển. Ngay cả khi có hàng trả lại, rất hiếm khi vận chuyển cũng được hoàn trả.

Sẽ tốt hơn (và an toàn hơn) nếu CreditMemo mặc định là 0 đô la (không hoàn lại sản phẩm và không hoàn lại tiền vận chuyển) để quản trị viên rõ ràng về những gì được hoàn trả (không có gì theo mặc định). Nếu không, quá dễ dàng, ví dụ, tạo một bản ghi nhớ tín dụng nhằm hoàn trả tiền vận chuyển nhưng hoàn lại toàn bộ đơn hàng!

Có bất kỳ cấu hình hoặc tùy chỉnh nào sẽ hỗ trợ mặc định CreditMemo thành $ 0 không?


Không có câu trả lời lại: giải pháp cấu hình. Điều này có thể được thực hiện thông qua một phần mở rộng? Đó là, đặt cài đặt ban đầu trên Ghi nhớ tín dụng?
MarkE 27/2/2015

Câu trả lời:


2

Không chắc chắn nếu bạn có thể đạt được những gì bạn muốn mà không cần mở rộng chức năng cơ bản của magento. Tôi đã phải làm một cái gì đó tương tự và đây là những gì tôi đã làm: Đầu tiên tôi viết lại sales_order_creditmemo_totals cho tín dụng tự động (có thể bạn không cần điều này, vì vậy bạn có thể đi đến phần thứ hai):

Trong mô-đun cấu hình của tôi:

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

Sau đó, trong Khối / adminhtml / Bán hàng / 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;
    }
}

Như bạn có thể thấy tôi đã làm điều này để tạo ra các khoản tín dụng cho các đơn đặt hàng bằng tín dụng của khách hàng, vì vậy tôi cũng viết lại sales_order_totals và sales_order_invoice_totals nhưng tôi nghĩ bạn không cần phải làm điều này.

Thứ hai: Tôi cũng đã thêm một mẫu của riêng mình để thêm một số chức năng trong quá trình xác nhận tín dụng thủ công, để quản trị viên có thể quyết định cách tạo mẫu. Vì vậy, tôi đã tạo ra một vật phẩm. Tôi cũng đã thêm vào mô-đun của mình trong trình điều khiển quản trị trong Company_CustomerCredit_Adminhtml_CustomerCont điều khiển

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

Cảm ơn, tôi đánh giá cao phản hồi của bạn và sẽ xem liệu tôi có thể áp dụng giải pháp của bạn cho yêu cầu của mình không.
Đánh dấu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.