我需要自定义「贷项凭证」页面,以存储物料是否已退回库存。
我已经确定了观察员:
app\code\core\Mage\CatalogInventory\Model\Observer.php
refundOrderInventory()
当管理员提交带有“返回股票”复选框的贷项通知单时,会触发该操作。所以我知道我可以添加自己的观察者来写/保存一些东西。
但是我无法弄清楚如何在Credit Memo产品项目中添加额外的属性。
有人可以给我一些指示吗?
更新: 我还可以通过编辑:
添加额外的返回库存表格单元格app\design\adminhtml\default\default\template\sales\order\creditmemo\view\items.phtml
和
app\design\adminhtml\default\default\template\sales\order\creditmemo\view\items\renderer\default.phtml
给我这个:
我已经硬编码了你在那里看到的“YES”值。我需要找到一些方法使这个可写/可读的信用备忘录产品属性。</ p>
答案 0 :(得分:2)
您需要在安装脚本中将属性和列添加到creditmemo项目实体。由于Mage_Eav_Model_Entity_Setup
中没有addAttribute()
功能,请确保您的设置类为Mage_Core_Model_Resource_Setup
。
$installer->addAttribute('creditmemo_item', 'returned_to_stock', array('type' => 'int', 'grid' => true, 'source' => 'adminhtml/system_config_source_yesno'));
$installer->getConnection()->addColumn($installer->getTable('sales/creditmemo_item'), 'returned_to_stock', 'TINYINT(1) unsigned DEFAULT 0');
然后,在您的观察者中(请不要修改您在那里列出的观察者),将值设置为true,就像这样(我只是复制了您列出的函数,并稍微修改它以证明我的观点):< / p>
public function refundOrderInventory($observer)
{
$creditmemo = $observer->getEvent()->getCreditmemo();
$items = array();
foreach ($creditmemo->getAllItems() as $item) {
$return = false;
if ($item->hasBackToStock()) {
if ($item->getBackToStock() && $item->getQty()) {
$return = true;
}
} elseif (Mage::helper('cataloginventory')->isAutoReturnEnabled()) {
$return = true;
}
if ($return) {
$item->setReturnedToStock(1);
}
}
}