2014-10-08 49 views
2

我需要sales_order_create表格顯示的特殊價格,我已通過添加這樣做:Magento sales_order_create grid - 可以添加if語句嗎?

->addAttributeToSelect('special_price') 

到_prepareCollection()函數,然後補充說:

$this->addColumn('special_price', array(
    'header' => Mage::helper('sales')->__('Special Price'), 
    'column_css_class' => 'price', 
    'align'  => 'center', 
    'type'  => 'currency', 
    'currency_code' => $this->getStore()->getCurrentCurrencyCode(), 
    'rate'  => $this->getStore()->getBaseCurrency()->getRate($this->getStore()->getCurrentCurrencyCode()), 
    'index'  => 'special_price', 
    'renderer' => 'adminhtml/sales_order_create_search_grid_renderer_price', 
)); 

到_prepareColumns ()函數。

這個工程,現在有一個價格欄和一個special_price欄。

我的問題是,是否有可能將2列與if語句或類似的東西結合起來?

理想情況下,我想要一個價格欄,如果有一個顯示special_price,如果不顯示正常價格,則顯示爲bold。

IF special_price IS NOT NULL然後special_price ELSE價格< <那種事

希望我已經說清楚了!

編輯:根據要求,這裏是全_prepareCollection()函數:

(我說的唯一路線是 - > addAttributeToSelect( 'special_price'))

protected function _prepareCollection() 
{ 
    $attributes = Mage::getSingleton('catalog/config')->getProductAttributes(); 
    /* @var $collection Mage_Catalog_Model_Resource_Product_Collection */ 
    $collection = Mage::getModel('catalog/product')->getCollection(); 
    $collection 
     ->setStore($this->getStore()) 
     ->addAttributeToSelect($attributes) 
     ->addAttributeToSelect('product_size') 
     ->addAttributeToSelect('special_price') 
     ->addAttributeToSelect('sku') 
     ->addStoreFilter() 
     ->addAttributeToFilter('type_id', array_keys(
      Mage::getConfig()->getNode('adminhtml/sales/order/create/available_product_types')->asArray() 
     )) 
     ->addAttributeToSelect('gift_message_available'); 

    Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($collection); 

    $this->setCollection($collection); 
    return parent::_prepareCollection(); 
} 
+0

好問題。你是如何在收藏中添加特殊價格的?顯示代碼 – 2014-10-08 11:50:52

+0

嗨,我已經添加了整個_prepareCollection()函數到我原來的問題,我希望這是你的意思! – Lee 2014-10-08 11:59:33

回答

0

想法是好的。但我認爲根據我的理解,這是完全不可能的。這是因爲special_price和正常價格是兩個不同的屬性。 _prepareColumn()所做的是,它只是爲在該方法內使用addColumn指定的每個屬性創建一個列。

現在假設你有兩個訂單。讓它成爲Order AOrder B。對於訂單A,我們有特殊的價格,對於訂單B,我們沒有特殊的產品。現在,如果我們試圖單獨顯示這些列,它會破壞網格列表。即

NAME  SPECIAL PRICE NORMAL PRICE 
    ......................................... 
    Order A  $10    nope 

    Order B  nope    $5 
    .......................................... 

第一行嘗試隱藏正常價格列,而第二行嘗試隱藏特殊價格列。這絕對是一個模棱兩可的情況。所以你不能簡單地從多個屬性中只顯示一個屬性,因爲你正在處理一個集合。

希望你能找到我!

+0

這很有道理!我認爲這會很棘手。沒有辦法添加單個列,並在該列中輸入IF語句? – Lee 2014-10-08 12:17:22

+0

不..不存在我的知識。你試圖實現的是不可能的 – 2014-10-08 12:24:51