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