Добавление в Grid Selection для файла grid.php - PullRequest
2 голосов
/ 13 июля 2011

Я задал похожий вопрос, но не предоставил достаточных подробностей и не получил ответов, поэтому попробую еще раз.

Основная задача - добавить поля в файл CSV, который экспортируется под администратором magentoпродаж-> счета.Я нашел основной файл для редактирования:

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

У него есть опции для добавления столбцов, например:

    $this->addColumn('increment_id', array(
        'header'    => Mage::helper('sales')->__('Invoice #'),
        'index'     => 'increment_id',
        'type'      => 'text',
    ));

Теперь, когда я пытаюсь добавить новый столбец, я изменяю индекс на соответствующийполе базы данных, скажем, например, «сумма налога».Единственная проблема заключается в том, что это новое значение отсутствует в моей коллекции Magento, поэтому оно просто заполняет пустой столбец в таблице.

Я новичок в Magento, поэтому не до конца понимаю, как работает коллекция Magento.или как я могу получить к нему доступ в рамках grid.php.Может, кто-нибудь подскажет, как добавить в коллекцию?

Я действительно застрял и был бы признателен за помощь.

1 Ответ

4 голосов
/ 14 июля 2011

Вам необходимо отредактировать модель ресурса, чтобы включить поля, которые вы хотите включить.Вы можете редактировать ресурс в коде, я не уверен, какую версию вы используете, но в файле Grid.php вы увидите, что _prepareCollection найдет код, который выглядит следующим образом:

$collection = Mage::getResourceModel('sales/order_invoice_collection')
->addAttributeToSelect('order_id')
->addAttributeToSelect('increment_id')
->addAttributeToSelect('created_at')
->addAttributeToSelect('state')
->addAttributeToSelect('grand_total') ...and so on!

добавьте строку

->addAttributeToSelect('tax_amount')

к этому списку, и вы должны иметь возможность использовать

$this->addColumn('tax_amount', array(
    'header'    => Mage::helper('sales')->__('Tax'),
    'index'     => 'tax_amount',
    'type'      => 'number',
));

Это так же неприлично, как я далеко от своей машины и у меня нет Мага, но это должноработать или, по крайней мере, направить вас в правильном направлении.

Редактировать:

Если вы не сможете попытаться заменить всю свою _prepareCollection

protected function _prepareCollection()
{

$collection = Mage::getResourceModel('sales/order_invoice_collection')
->addAttributeToSelect('order_id')
->addAttributeToSelect('increment_id')
->addAttributeToSelect('created_at')
->addAttributeToSelect('state')
->addAttributeToSelect('grand_total')
->addAttributeToSelect('tax_amount')
->addAttributeToSelect('order_currency_code')
->joinAttribute('billing_firstname', 'order_address/firstname', 'billing_address_id', null, 'left')
->joinAttribute('billing_lastname', 'order_address/lastname', 'billing_address_id', null, 'left')
->joinAttribute('order_increment_id', 'order/increment_id', 'order_id', null, 'left')
->joinAttribute('order_created_at', 'order/created_at', 'order_id', null, 'left');

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

Опять же, это не проверено, изпамять это _prepareCollection из диапазона 1.3 magento, так что он немного староват, но вполне уверен, что он должен работать.

...