Экспорт счета-фактуры в Magento - Как изменить поля? - PullRequest
2 голосов
/ 31 марта 2011

Я хочу экспортировать некоторые счета в Microsoft Excel / XML.Стандартный формат работает не очень хорошо, потому что мне нужны дополнительные столбцы.

Мой вопрос: где генерируется файл?Где я могу установить эти специальные столбцы?

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 01 апреля 2011

Экспорт в Excel выполняется, когда InvoiceController вызывает getExcelFile() на Mage_Adminhtml_Block_Sales_Invoice_Grid. Сетка счетов-фактур начинается с Mage_Adminhtml_Block_Widget_Grid, который, в свою очередь, вызывает _exportExcelItem в каждом ряду сетки.

Метод _exportExcelItem использует закрытую переменную сетки _columns для экспорта столбцов электронной таблицы.

Все это говорит о том, что ... метод _prepareColumns() в Mage_Adminhtml_Block_Sales_Invoice_Grid устанавливает столбцы, отображаемые в сетке, и точно такие же столбцы при экспорте в Excel.

Если вы хотите добавить дополнительные столбцы, вы можете переписать Mage_Adminhtml_Block_Sales_Invoice_Grid и переопределить метод _exportExcelItem() примерно так:

$this->addColumn('your_extra_field_name', array(
        'header'    => Mage::helper('sales')->__('Field Title'),
        'index'     => 'your_extra_field_name',
        'type'      => 'relevant_data_type',
    ));
... rinse and repeat ... then finish with
parent::_exportIterateCollection($callback, array $args);

В StackOverflow и Intertubes есть множество постов, посвященных написанию пользовательского модуля для расширения блока, использования его, а затем применения указанных выше особенностей.

Это ключевой фрагмент XML, который вам нужен в вашем config.xml:

 <blocks>
        <adminhtml>
            <rewrite>
                 <sales_invoice_grid>Namespace_Modulename_Block_Rewrite_AdminhtmlSalesInvoiceGrid</sales_invoice_grid>
.... 

НТН,
JD

2 голосов
/ 01 апреля 2011

Вы можете написать собственный отчет, который расширяет Mage_Adminhtml_Block_Sales_Invoice_Grid (и контейнер, Mage_Adminhtml_Block_Sales_Invoice).

Единственное отличие, которое нужно сделать, это вызвать parent::_prepareColumns() и добавить свои собственные столбцы.Вы также можете использовать его addColumnsOrder(), чтобы перемещать их.

Вам также потребуется создать контроллер, который будет работать как Mage_Adminhtml_Report_SalesController::invoicedAction().

0 голосов
/ 19 апреля 2011

Я написал совершенно новое соединение и класс для БД, потому что я не получил нужные файлы.Спасибо за вашу помощь, но это решение было намного проще, оно сэкономило мне около 5 дней работы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...