2012-01-23 1 views
0

주문 및 송장 (백엔드)의 그리드에 지불 옵션을 표시하려고합니다.Magento - 가입 후 필터링 주문/송장 수집 및 일부 맞춤 작업

내가 핵심 파일을 로컬 폴더에

app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php 
app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php 

후 편집 기능 _prepareCollection()와 _prepareColumns를 복사 한(). 컬럼 준비는 생각할 필요가 없다. 문제는 콜렉션에있다.

내 변경 :

파일 : 응용 프로그램/코드/코어/마법사/Adminhtml/차단/판매/주문/Grid.php

protected function _prepareCollection(){ 
    $collection = Mage::getResourceModel($this->_getCollectionClass()); 

    $collection->getSelect()->joinLeft('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id',array('total_qty_ordered', 'shipping_description')); 
    $collection->getSelect()->joinLeft('sales_flat_order_payment', 'sales_flat_order_payment.parent_id = main_table.entity_id',array('method'));  


    // this is custom function that retrieves an array with payment option and its label 
    $metode = $this->getActivePaymentMethods(); 

    // we get labels of payment options 
    foreach ($collection as $afn) { 
     foreach ($metode as $method) { 
      if ($method['value'] == $afn['method']) { 
       $afn->setData('method', $method['label']); 
      } 
     } 
    } 

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

이 코드가 실제로 어떻게해야 무엇 않습니다. 이 주문에 사용 된 지불 및 운송 옵션을 검색합니다. 그러나 컬렉션에 '메소드'를 추가하면 페이지 매김과 순서가 깨집니다.

모든 주문을 한 페이지에 표시하며 주문하지 않습니다. 송장과 동일합니다.

나는 운이없이 한 시간 동안 지금 봤어. 너 어디 좀 봐 줄래?

감사합니다.

+0

내가 이미 얻었다. 적절한 값을 표시합니다. 문제는 페이지 매김이 깨져 있다는 것입니다. –

+0

이게 맞는 것 같습니다. 나는 그것을 이해하지 못했습니다. 감사! –

답변

0

나는 당신을 올바르게 이해했다면, 당신은 그것의 레이블로 대체하는 방법 id를 필요로한다. 당신은 다음 방법으로 그리드에 _prepareColumns() 방법을 수행해야합니다

$this->addColumn('method', array(
     ... 
     'type' => 'options', 
     'options' => array('method_id1' => 'label1', 'method_id2' => 'label2', ...), 
    )); 
+0

내 친구, 너는 생명의 은인이야! @Cags가 이미 말했듯이, 나는 이해하지 못했다. 당신은 그가 말하고있는 것을 보였습니다. 고맙습니다. –