Magento - Фильтрация порядка / коллекции счетов после объединения и некоторых пользовательских действий - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь отобразить способ оплаты в сетке заказов и счетов-фактур (в конце).

Я скопировал основные файлы

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

в локальную папку, а затем отредактируйте функции _prepareCollection () и _prepareColumns (). Готовить колонки не составляет труда, проблема в сборе.

Мои изменения:

Файл: app / code / core / Mage / Adminhtml / Block / Sales / Order / 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();
}

Этот код фактически делает то, что должен делать. Он возвращает способ оплаты и доставки, который использовался в этом заказе. Но после добавления «метода» в коллекцию он разбивает нумерацию страниц и порядок.

Отображает все заказы на одной странице, и заказы не работают. То же самое и со счетами.

Я уже час гуглю без удачи. Не могли бы вы дать мне направление, где искать?

Спасибо.

1 Ответ

0 голосов
/ 24 января 2012

Если я вас правильно понял, вам нужно заменить идентификатор метода на его метку. Вы должны сделать это в вашей сетке _prepareColumns() методом следующим образом:

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