ใบลดหนี้ - คืนค่าเริ่มต้นเป็น 0 ผลิตภัณฑ์


13

กรณีการใช้งานทั่วไปของฉันสำหรับใบลดหนี้คือการปรับราคา (ปรับการจัดส่งการลดความเอื้อเฟื้อและอื่น ๆ ) มันหายากที่ฉันใช้มันเพื่อผลตอบแทนโดยรวม

เป็นเรื่องแปลกสำหรับฉันที่พฤติกรรมเริ่มต้นของ Magento คือ CreditMemo ส่งคืนผลิตภัณฑ์ทั้งหมดและคืนเงินค่าจัดส่งทั้งหมด แม้ว่าจะมีการส่งคืนก็ยากที่การจัดส่งจะได้รับคืน

มันจะดีกว่า (และปลอดภัยกว่า) หาก CreditMemo มีค่าเริ่มต้นเป็น $ 0 (ไม่มีผลิตภัณฑ์ที่คืนเงินและไม่มีการคืนเงินสำหรับการจัดส่ง) ดังนั้นผู้ดูแลระบบจะชัดเจนเกี่ยวกับสิ่งที่จะได้รับคืน (ไม่มีค่าเริ่มต้น) ตัวอย่างเช่นมิเช่นนั้นง่ายเกินไปที่จะสร้างใบลดหนี้ที่ตั้งใจจะคืนเงินค่าจัดส่ง แต่คืนเงินสำหรับการสั่งซื้อทั้งหมด!

มีการกำหนดค่าหรือการปรับแต่งใด ๆ ที่จะสนับสนุนการเริ่มต้น CreditMemo เป็น $ 0 หรือไม่


ไม่มีคำตอบใหม่: โซลูชันการกำหนดค่า สิ่งนี้สามารถทำได้โดยการขยาย? นั่นคือตั้งค่าเริ่มต้นในใบลดหนี้หรือไม่
MarkE

คำตอบ:


2

ไม่แน่ใจว่าคุณสามารถทำสิ่งที่คุณต้องการได้โดยไม่ต้องเพิ่มฟังก์ชั่นพื้นฐานของคุณภาพเยี่ยม ฉันต้องทำสิ่งที่คล้ายกันและนี่คือสิ่งที่ฉันทำ: ก่อนอื่นฉันเขียน sales_order_creditmemo_totals สำหรับ creditmemos อัตโนมัติ (บางทีคุณอาจไม่ต้องการสิ่งนี้ดังนั้นคุณสามารถไปที่ส่วนที่สอง):

ในโมดูล 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;
    }
}

อย่างที่คุณเห็นฉันทำสิ่งนี้เพื่อสร้าง creditmemos สำหรับคำสั่งซื้อด้วยเครดิตลูกค้าดังนั้นฉันจึงเขียน sales_order_totals และ sales_order_invoice_totals อีกครั้ง แต่ฉันคิดว่าคุณไม่จำเป็นต้องทำเช่นนี้

ที่สอง: ฉันยังเพิ่มเทมเพลตของตัวเองเพื่อเพิ่มฟังก์ชันการทำงานบางอย่างระหว่างการสร้างเครดิตคู่มือดังนั้นผู้ดูแลระบบสามารถตัดสินใจได้ว่าจะสร้างมันอย่างไร สำหรับสิ่งที่ฉันสร้าง items.phtml ภายใต้แอพ / design / adminhtml / default / default / template / MODULE_NAME / order / creditmemo / create / 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.