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