2

我有疑问,如何添加批量操作以打印 PDF 发票。我需要两张不同的 PDF 发票(一张是默认的“打印发票”),所以我想添加额外的操作“打印发票 2”。我怎样才能开始打印“打印发票 2”?

希望有人能帮忙!

4

1 回答 1

3

假设您要将批量操作添加到发票网格(管理员中的销售 > 发票),您需要执行以下操作:

重写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 生成器。

于 2012-10-15T21:17:37.373 回答