我有疑问,如何添加批量操作以打印 PDF 发票。我需要两张不同的 PDF 发票(一张是默认的“打印发票”),所以我想添加额外的操作“打印发票 2”。我怎样才能开始打印“打印发票 2”?
希望有人能帮忙!
假设您要将批量操作添加到发票网格(管理员中的销售 > 发票),您需要执行以下操作:
重写Mage_Adminhtml_Block_Sales_Invoice_Grid
类并用你自己的替换它。您的新类应该在它自己的扩展中并继承自Mage_Adminhtml_Block_Sales_Invoice_Grid
. 如果你不确定如何重写一个块,这篇博文应该可以帮助你。 注意:您可以将网格块复制到,app/code/local/
但这会使 Magento 升级变得困难。更好的方法是重写并覆盖尽可能少的功能。
你的类应该提供它自己的_prepareMassaction
函数,然后添加新的动作。以下代码(虽然完全未经测试)应该这样做:
class MyNamspace_Extension_Block_Adminhtml_Invoice_Grid extends Mage_Adminhtml_Block_Sales_Invoice_Grid {
protected function _prepareMassaction() {
parent::_prepareMassaction();
$this->getMassactionBlock()->addItem('pdfinvoices_order2', array(
'label'=> Mage::helper('myextension')->__('PDF Invoices2'),
'url' => $this->getUrl('myroute/mycontroller/myaction'),
));
return $this;
}
}
调用中的“url”参数addItem()
应该指向您自己的控制器,您可以在其中实现自己的逻辑来生成 PDF。app/code/core/Mage/Adminhtml/Controller/Sales/Invoice.php
如果您想获得一些灵感,可以在第 129 行找到标准质量动作 PDF 生成器。