Magento的 - 说明信贷备忘项是否被送回股票(Magento - Indicate on cr

2019-10-17 09:14发布

我需要自定义贷项通知单页面存储项目是否被退回到仓库。

我已经确定在观察报:

app\code\core\Mage\CatalogInventory\Model\Observer.php
refundOrderInventory()

它获取时,管理员提交信用备忘录与“返回到股票”复选框勾选触发。 所以,我知道我可以添加自己的观察者写/保存的东西。

但我无法弄清楚如何将一个额外的属性添加到贷项通知单产品项目。

任何人都可以给我一些指点?

更新:我还可以添加通过编辑退回到仓库表格单元格额外的:

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”的价值。 我需要找到使之成为一个可写入/读取的信用备忘录产品属性的某种方式。

Answer 1:

您将要在属性名和列添加到您的贷记通知单的项目实体,在一个安装脚本。 请确保您的设置类是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');

然后,在您的观察者(请不要修改你所列的观察者),将该值设置像这样是真实的,(我只是复制你列出的功能,并修改了它稍微证明我的观点):

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


文章来源: Magento - Indicate on credit memo whether items were returned to stock
标签: magento