Я задал аналогичный вопрос, но я не представил достаточных подробностей, и у меня нет ответов, поэтому я попробую еще раз.
Основная задача состоит в том, чтобы добавить поля в файл CSV, который экспортируется под рассылкой magento admin sales-> invoices. Я нашел основной файл для редактирования:
app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php
У этого есть опции addColumn:
$this->addColumn('increment_id', array( 'header' => Mage::helper('sales')->__('Invoice #'), 'index' => 'increment_id', 'type' => 'text', ));
Теперь, когда я пытаюсь добавить новый столбец, я меняю индекс на соответствующее поле базы данных, например «сумма налога». Единственная проблема заключается в том, что это новое значение не входит в мою коллекцию Magento, поэтому оно просто заполняет пустой столбец в таблице.
Я довольно новичок в Magento, поэтому я не совсем понимаю, как работает коллекция Magento или как я могу получить к ней доступ в области grid.php. Может кто-нибудь, пожалуйста, дайте мне какое-то направление в том, как добавить в коллекцию?
Я действительно застрял и буду благодарен за помощь.
Вам в основном нужно изменить модель ресурса, чтобы включить поля, которые вы хотите включить. Вы можете редактировать ресурс в коде, я не уверен, какую версию вы используете, но в файле 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', ));
Это как непроверенный, так как я ушел от своей машины Dev и не имею Мага, но это должно работать или, по крайней мере, указывать вам в правильном направлении.
Редактировать:
В противном случае вы можете попробовать заменить весь ваш _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, так что он немного старый, но вполне уверен, что он должен работать.