我想将一些发票导出到Microsoft Excel / XML。标准格式不能很好地工作,因为我需要一些额外的列。
我的问题是:文件生成在哪里?我在哪里设置这些特殊列?
提前致谢
答案 0 :(得分:3)
InvoiceController
在getExcelFile()
上调用Mage_Adminhtml_Block_Sales_Invoice_Grid
时,会执行导出到Excel。发票网格从Mage_Adminhtml_Block_Widget_Grid
延伸,而_exportExcelItem
又在网格的每一行上调用_exportExcelItem
。
_columns
方法使用网格的_prepareColumns()
私有变量导出电子表格列。
所有这些都说...... Mage_Adminhtml_Block_Sales_Invoice_Grid
中的Mage_Adminhtml_Block_Sales_Invoice_Grid
方法设置了网格中显示的列,并且Excel导出中的列完全相同。
如果您想添加额外的列,可以重写_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);
方法:
<blocks>
<adminhtml>
<rewrite>
<sales_invoice_grid>Namespace_Modulename_Block_Rewrite_AdminhtmlSalesInvoiceGrid</sales_invoice_grid>
....
StackOverflow和Intertubes上有很多帖子在写一个自定义模块来扩展一个Block,然后修改它们然后应用上面的细节。
这是config.xml中所需的关键XML:
{{1}}
HTH,
JD
答案 1 :(得分:2)
您可以编写扩展Mage_Adminhtml_Block_Sales_Invoice_Grid
(以及容器Mage_Adminhtml_Block_Sales_Invoice
)的自定义报告。
它需要做的唯一区别是调用parent::_prepareColumns()
然后添加自己的列。您也可以使用它addColumnsOrder()
来移动它们。
您还需要制作一个像Mage_Adminhtml_Report_SalesController::invoicedAction()
一样的控制器。
答案 2 :(得分:0)
我为数据库写了一个完整的新连接和类,因为我没有得到正确的文件。 感谢您的所有帮助,但这个解决方案更加简单,它为我节省了大约5天的工作量!