Ich bin mir nicht sicher, ob Sie das erreichen können, was Sie wollen, ohne die Magento-Basisfunktionalität zu erweitern. Ich musste etwas Ähnliches tun und das habe ich getan:
Zuerst habe ich sales_order_creditmemo_totals für automatische Gutschriften umgeschrieben (vielleicht brauchst du das nicht, damit du zum zweiten Teil gehen kannst):
In meinem Modul 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>
Dann in 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;
}
}
Wie Sie sehen, habe ich dies getan, um Gutschriften für Bestellungen mit Kundenguthaben zu erstellen. Daher habe ich auch sales_order_totals und sales_order_invoice_totals umgeschrieben, aber ich denke, Sie müssen dies nicht tun.
Zweitens:
Ich habe auch eine eigene Vorlage hinzugefügt, um einige Funktionen während der manuellen Erstellung der Gutschrift hinzuzufügen, sodass der Administrator entscheiden kann, wie diese generiert werden sollen. Dafür habe ich eine items.phtml unter app / design / adminhtml / default / default / template / MODUL_NAME / order / creditmemo / create / items.phtml erstellt. In dieser phtml habe ich einige Eingabefelder hinzugefügt, um die Standardwerte zu ändern. Ich habe in meinem Modul auch einen Admin-Controller unter Company_CustomerCredit_Adminhtml_CustomerController hinzugefügt
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();
}
}