如何在点击时在销售订单中的自定义操作中获取所选订单ID

时间:2014-07-22 10:11:22

标签: magento invoice sales

我在销售订单中添加了名为发票的新批量操作。我想点击此操作创建发票。如何从列表中选择订单时获取订单ID,而不是在销售订单的操作中选择发票。我的新批量操作发票显示在操作中,但是当我选择发票操作并提交时,我无法为所选订单制作发票。我的代码是: -

app / code / local / MagePsycho / Newmodule / Block / Sales / Order / Grid.php

<?php
class MagePsycho_Newmodule_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{   
    protected function _prepareMassaction()
    {
        parent::_prepareMassaction();

        // Append new mass action option 
        $this->getMassactionBlock()->addItem(
            'newmodule',
            array('label' => $this->__('New Mass Action Title'), 
                  'url'   => $this->getUrl('newmodule/controller/action') //this should be the url where there will be mass operation
            )
        );
    }
}

app / code / local / MagePsycho / Newmodule / etc: -

 <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <sales_order_grid>MagePsycho_Newmodule_Block_Sales_Order_Grid</sales_order_grid>
                </rewrite>

<events>
        <core_block_abstract_prepare_layout_before>
            <observers>
                <newmodule_core_block_abstract_prepare_layout_before>
                    <class>newmodule/observer</class>
                    <method>addMassAction</method>
                </newmodule_core_block_abstract_prepare_layout_before>
            </observers>
        </core_block_abstract_prepare_layout_before>
    </events>
            </adminhtml>
        </blocks> 
    </global>

app / code / local / MagePsycho / Newmodule / Model / Observer.php: -

<?php
class MagePsycho_Newmodule_Model_Observer
{
    public function addMassAction($observer)
    {
        echo 'hello magento';
        $block = $observer->getEvent()->getBlock();
        if(get_class($block) =='Mage_Adminhtml_Block_Widget_Grid_Massaction'
            && $block->getRequest()->getControllerName() == 'sales_order')
        {
            $block->addItem('newmodule', array(
                'label' => 'New Mass Action Title',
                'url' => Mage::app()->getStore()->getUrl('newmodule/controller/action'),
            ));
        }
    }
}

请建议,我该如何为我的行动开具发票。

1 个答案:

答案 0 :(得分:1)

您可以通过自定义控制器操作的getParam方法中的getRequest获取此信息,如下所示

  public function massChangeTypeAction()
    {
      $orderIds = (array)$this->getRequest()->getParam('order_ids');        
    }

您可以打印此$orderIds以从网格中获取所选订单

希望这对您有用。