2012-11-14 72 views
0

我需要自定義貸項憑證頁面以存儲項目是否已退回庫存。Magento - 在貸項憑證上註明是否已將項目退回庫存

我已經確定了觀測站:

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 

給我這個: custom column added to credit memo product attributes

我已經硬編碼了你在那裏看到的「YES」值。我需要找到一些方法使其成爲可寫/可讀的信用備忘錄產品屬性。

+0

在數據庫或html輸入字段中的額外字段? –

+0

我需要保存它,所以數據庫。 這樣我就可以在信用備忘錄上顯示它,就像文本重新打開時一樣。 – elMarquis

+0

我想一個更好的方式是,我需要將一個returned_to_stock屬性添加到貸項通知單項目。 – elMarquis

回答

2

您需要在安裝腳本中將屬性和列添加到您的creditmemo項目實體中。請確保您的安裝類別爲Mage_Eav_Model_Entity_Setup,因爲Mage_Core_Model_Resource_Setup中沒有addAttribute()函數。

$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); 
     } 
    } 
} 
相關問題