2012-10-15 53 views
2

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

希望有人能帮助!

+0

看看@ http://stackoverflow.com/questions/9981315/magento-add-custom-mass-action-pdf –

回答

3

假设你要添加的质量行动发票电网(销售>在管理发票),你需要做到以下几点:

重写Mage_Adminhtml_Block_Sales_Invoice_Grid类,并用自己的替换它。你的新班级应该是自己的扩展,并继承Mage_Adminhtml_Block_Sales_Invoice_Grid。如果你不确定如何重写块,this blog post should help你出来。 注意:您可以将网格块复制到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; 
    } 
} 

addItem()称之为“URL”参数应该指向你自己的控制器,你可以实现你自己的逻辑生成PDF文件。如果您想要一些灵感,标准的批量操作PDF生成器可以在app/code/core/Mage/Adminhtml/Controller/Sales/Invoice.php的129行找到。

+0

我试着照你说的去做,但不是为我工作。有什么建议? –

+0

我需要发票网格中的两个批量操作(销售>发票,一个是默认的“打印发票”,这是好的,所以我需要第二个“打印发票2” 我已经完成修改app/code /本地/法师/销售/型号/订单/ Pdf为“打印发票”(这是好的)和应用程序/代码/本地/法师/销售/型号/订单/ Pdfn为“打印发票2” 我有问题,因为我不知道,如何以及我必须做什么,“打印发票2”将与本地/法师/销售/型号/订单/ Pdfn中的文件一起工作 在我开始修改发票之前,我复制本地/法师/销售/型号/订单/ PDF到本地/法师/销售/型号/订单/ Pdfn –