2013-07-26 24 views
7

Ödeme Yöntemi Ekle ve ben koleksiyonuna katılmak ve sütun eklemiş, ancak sütun boş gösterir. Ben filtrelemek çalıştığınızda Ayrıca, bu hatayı alıyorum: Sütun bulunamadı: 1054 Bilinmeyen sütun 'yöntem' 'maddesinin' içinde. Kodum, oradaki öğreticilerin çoğunda olduğu gibi görünüyor, bu nedenle sütümün neden ödeme verisinden yoksun olduğunu anlayamıyorum. Son SQL sorgusunu yineledim ve MySQL Workbench'da çalıştırdım ve sonuçlar ve sözdizimi iyi görünüyor. Bir şey mi eksik? Sales_flat_order_grid tablosuna bir sütun eklemem gerekir mi? "Güzel" ödeme yöntemi adlarının filtreye girdiğimde sütunda görüntülediğim ödeme koduyla iyi bir şekilde örtüşmeyebileceğinin farkındayım, ancak filtre seçeneklerinde ödeme kodunu kullanırken de aynı sorunları yaşıyorum. Sütun verisi aldıktan sonra bu detayı daha sonra vuracağımı düşündüm. Enterprise 1.12.0.2 kullanıyorum.Magento ben Satış Sipariş şebekeye özel bir sütun eklemek çalışıyorum Yönetici al Şebeke

app/kod/yerel/MyModule/adminhtml/blok/satış/sipariş/ızgara:

 protected function _prepareCollection() 
{ 
    $collection = Mage::getResourceModel($this->_getCollectionClass()); 
    $collection->getSelect()->joinLeft(array('sfop'=>'sales_flat_order_payment'), 'main_table.entity_id = sfop.parent_id',array('sfop.method')); 
    $this->setCollection($collection); 
    return parent::_prepareCollection(); 
} 

    protected function _prepareColumns() 
{ //edited for brevity...only my additions below![enter image description here][1] 
     $payments = Mage::getSingleton('payment/config')->getActiveMethods(); 
    $methods = array(); 
    foreach ($payments as $paymentCode=>$paymentModel) 
    { 
     $paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title'); 
     $methods[$paymentCode] = $paymentTitle; 
    } 

    $this->addColumn('method', array(
     'header' => Mage::helper('sales')->__('Payment Method'), 
     'index' => 'method', 
     'filter_index' => 'sfop.method', 
     'type' => 'options', 
     'width' => '70px', 
     'options' => $methods, 
    )); 

} 

Admin Screen

cevap

7

Sen sınıfın değil ebeveyn Yönetici Grid ebeveyni dönmek gerekiyor yeniden yazıyorsun

aşağıdaki yöntem _prepareCollection() değiştirin: -

protected function _prepareCollection() 
{ 
    $collection = Mage::getResourceModel($this->_getCollectionClass()); 
    $collection->join(array('payment'=>'sales/order_payment'),'main_table.entity_id=parent_id','method'); 
    $this->setCollection($collection); 
    return Mage_Adminhtml_Block_Widget_Grid::_prepareCollection(); 
} 
+1

teşekkür çalışmak! Ben SQL hatası "belirsiz sütun parent_id" aldın ama ben 'main_table.entity_id = payment.parent_id' için 'main_table.entity_id = parent_id' değiştirmek zorunda kaldı. Ayrıca, tablo takma adını "sfop" den "ödeme" ye değiştirdiğinizde, addColumn() öğesine yapılan çağrıda "filter_index" seçeneğine karşılık gelen değişikliği uyarmalısınız. –

1
$collection->getSelect()->joinLeft('sales_flat_order_payment', 'main_table.entity_id = sales_flat_order_payment.parent_id',array('method')); 
$this->addColumn('method', array(
     'header' => Mage::helper('sales')->__('Method'), 
     'index' => 'method', 
     'filter_index' => 'sales_flat_order_payment.method', 
     )); 
+0

işe yaramazsa, eklemeniz gerekir: 'filter_index' => 'payment.method' -> ödeme, birleşim içinde belirttiğimiz tablo için takma addır. – jruzafa

2

çözeltisi önermiştir:

http://www.atwix.com/magento/column-to-orders-grid/

daha temiz. ödeme yöntemleri Web sitesi kapsamı etkinleştirilmiş olsaydı arka uç ızgara için seçenekler olarak $ yöntemlerini almak için

Neyse yolu Multistore-hazır değil. Bu durumda yapın: render için

 $methods = array(); 
     foreach (Mage::app()->getStores() as $storeId => $store) { 
     $payments = Mage::getSingleton('payment/config')->getActiveMethods($storeId); 

     foreach ($payments as $paymentCode => $paymentModel) { 
      $paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title'); 
      if (!isset($methods[$paymentCode])) { 
       $methods[$paymentCode] = $paymentTitle; 
      } 
     } 
    } 
1

, tüm ödeme yöntemleri başlığı (TIG Postnl örneğin)

$payments = Mage::getSingleton('payment/config')->getActiveMethods(); 
$methods = array(); 
foreach ($payments as $paymentCode=>$paymentModel) 
{ 
    $paymentTitle = Mage::getStoreConfig('payment/'.$paymentCode.'/title', 1); 
    if(empty($paymentTitle)) { 
     $paymentTitle = Mage::helper('payment')->getMethodInstance($paymentCode)->getTitle(); 
    } 
    $methods[$paymentCode] = $paymentTitle; 
} 
İlgili konular