2015-11-02 3 views
0

Я пытаюсь отредактировать сетку заказов, чтобы я мог экспортировать данные в XML с количеством каждого предмета, проданного на каждой строке. Теперь я могу получить доступ только к общей сумме заказа, чего недостаточно. Я хотел бы построить Grid с информацией, доступной для каждого заказа в представлении Order> Information> Ordered items.Magento Order Grid: Получить количество и продукты по заказу

Возможно ли это с несколькими строками кода?

Вот что я сделал сейчас: функция

Я попытался вручную добавить столбцы в _prepareColumns() от Grid.php.

В принципе, я пытался добавить колонку количество:

$this->addColumn('total_qty_ordered', array(
     'header' => Mage::helper('sales')->__('Qty'), 
     'index' => 'total_qty_ordered', 
     'filter_index' => 'sales_flat_order.total_qty_ordered', 
     )); 

Однако я не получаю никакого общего количества, и, конечно, я не получаю разделение продукта в каждом заказе. Я не знаю, где искать реализацию этого продукта.

Спасибо заранее.

EDIT:

Вот что я получаю благодаря расширению

Order grid

Однако, я не могу экспортировать этот продукт раскол, потому что последний столбец является своего рода «встроенные» в другой Информация. Поэтому я получаю пустой столбец в XML.

ответ

0

Я обычно не рекомендую расширения - Я полагаю, что большинство из них может быть немного больше неприятностей, чем они стоят, но в этом случае я рекомендую этот один:

http://www.magentocommerce.com/magento-connect/enhanced-admin-grids-editor.html

Это free-code довольно чист, и вы можете добавить это, нажав кнопку настройки сетки на странице заказов, нажав дополнительные параметры, затем найдите пункты и выложите эти столбцы. Покажет вам таблицу всех элементов.

Если вы хотите опубликовать код, написанный вами по-своему, я могу помочь вам настроить его для выполнения задания.

+0

Привет, большое спасибо за ваш ответ. Я рассмотрю это расширение. Я обновил свой вопрос тем, что я пытался сделать в Grid.php;) – Iuqnod

+0

Я вижу - можете ли вы опубликовать весь файл Grid.php? Вы уверены, что добавили эту строку выше строки $ this-> setCollection в методе _prepareCollection? $ collection-> getSelect() -> joinLeft ('sales_flat_order', 'main_table.entity_id = sales_flat_order.entity_id', array ('total_qty_ordered')); – espradley

+0

Да, это сработало, теперь я получаю общее количество, связанное с заказом. Я также попробовал ваше продление. Мне удалось добавить раскол продукта для каждого заказа, который я хотел, однако я не могу экспортировать его в XML. Я покажу тебе. – Iuqnod

0

Мы опубликовали сообщение в блоге о том, как добавить данные в вашу сетку заказов. Надеюсь, что это поможет вам! https://grafzahl-io.blogspot.de/2016/11/how-to-display-m2e-order-data-or.html

Таким образом, решение было бы скопировать Sales Сетки блок для локального модуля и добавить столбец как в этом примере:

$this->addColumn('order_type', array(
    'header' => Mage::helper('sales')->__('Order Type'), 
    'width' => '100px', 
    'align' => 'left', 
    'index' => 'order_type', 
    'renderer' => 'yourmodule/adminhtml_sales_grid_renderer_m2eAttribute', 
    'filter_condition_callback' => array($this, '_filterM2eConditionCallback') 
)); 

filter_condition_callback является метод в грид блоке. Средство рендеринга - это другой класс, который вы можете видеть в пространстве имен. В рендерере вы можете определить, что отображается в вашем столбце. Фильтр_condition_callback определяет, как должна работать сетка, если кто-то будет фильтровать ваш собственный столбец.

Это будет выглядеть следующим образом:

/** 
* filter callback to find the order_type 
* of orders through m2e (amazon, ebay, ...) 
* 
* @param object $collection 
* @param object $column 


* @return Yourname_Yourmodule_Block_Adminhtml_Sales_Order_Grid 
*/ 
public function _filterM2eConditionCallback($collection, $column) { 
    if (!$value = $column->getFilter()->getValue()) { 
     return $this; 
    } 
    if (!empty($value) && strtolower($value) != 'magento') { 
     $this->getCollection()->getSelect() 
      // join to the m2mepro order table and select component_mode 
      ->join(
       'm2epro_order', 
       'main_table.entity_id=m2epro_order.magento_order_id', 
       array('component_mode') 
       ) 
      ->where(
      'm2epro_order.component_mode = "' . strtolower($value) . '"'); 
    } elseif(strtolower($value) == 'magento') { 
     $this->getCollection()->getSelect() 
      ->join(
       'm2epro_order', 
       'main_table.entity_id=m2epro_order.magento_order_id', 
       array('component_mode') 
       ) 
      ->where(
      'm2epro_order.component_mode = NULL'); 
    } 

    return $this; 
} 

Как вы можете видеть, есть два присоединяется собрать данные, необходимые для фильтрации.

Это как рендер выглядит, который будет отображать данные в сетке:

class Yourname_Yourmodule_Block_Adminhtml_Sales_Grid_Renderer_M2eAttribute 
extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract 
{ 
public function render(Varien_Object $row) 
{ 
    // do whatever you need, to display your data 
    // get the id of the row order data 
    $orderId = $row->getEntityId(); 
    // get the related m2e order data 
    $orders = Mage::getModel('M2ePro/Order') 
     ->getCollection() 
     ->addFieldToSelect('component_mode') 
     ->addFieldToFilter('magento_order_id', $orderId); 

    if($orders) { 
     $data = $orders->getFirstItem()->getData(); 
     if(isset($data['component_mode'])) { 
      return ucfirst($data['component_mode']); 
     } 
    } 
    // return the string "magento" if there is no m2e relation 
    return 'Magento'; 
} 
} 

Ссылка покажет вам другой пример, как показать данные в сетке заказа.

Смежные вопросы