注文をエクスポートするための拡張機能である Blue Jalappeno Order Export を使用していますが、これはうまく機能します。フルフィルメント会社で機能するように出力形式オプションの 1 つを変更しましたが、うまく機能しています。
ここで、別の形式を使用する別のエクスポートが必要です。私はフォーマットをかなり釘付けにしています。私の問題は、注文グリッドで新しい massAction を呼び出すことです。これは、プルダウンに新しいアクション #2 を表示するために機能します。
class Webshopapps_Ordermanager_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
protected function _prepareMassaction()
{
parent::_prepareMassaction();
if (Mage::getStoreConfig("order_export/export_orders/active")) {
$this->getMassactionBlock()->addItem('ordermanager', array(
'label'=> Mage::helper('sales')->__('Export orders IFS'),
'url' => $this->getUrl('*/sales_order_export/csvexport'),
));
}
if (Mage::getStoreConfig("order_export/export_orders2/active")) {
$this->getMassactionBlock()->addItem('ordermanager2', array(
'label'=> Mage::helper('sales')->__('Export orders QB'),
'url' => $this->getUrl('*/sales_order_export/qbexport'),
));
}
}
}
最初の作業中のエクスポートは引き続き機能します。2 つ目は表示され、選択して送信できますが、動作が異なります。最初の URL (/admin/sales_order/index) は変更されていませんが、ダウンロード ボックスが表示されます。2 番目の URL が admin/sales_order_export/qbexport/ に変更され、白い画面が表示されます
私がやりたいのは、同じコントローラーで別のメソッドを呼び出すことです。または、パラメーターを 1 つのメソッドに渡します。
私が試していること: 最初の addItem に使用されたのと同じコントローラーにメソッドを追加しました。
class Webshopapps_Ordermanager_Sales_Order_ExportController extends Mage_Adminhtml_Controller_Action
{
public function csvexportAction() // First working mass action
{
$orders = $this->getRequest()->getPost('order_ids', array());
switch(Mage::getStoreConfig('order_export/export_orders/output_type')){
case 'Multi':
$file = Mage::getModel('webshopapps_ordermanager/export_multi')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
case 'Standard':
$file = Mage::getModel('webshopapps_ordermanager/export_csv')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
}
}
public function qbexportAction()
{
$orders = $this->getRequest()->getPost('order_ids', array());
switch(Mage::getStoreConfig('order_export/export_orders/output_type2')){
case 'Qb':
$file = Mage::getModel('webshopapps_ordermanager/export_qb')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
case 'Standard':
$file = Mage::getModel('webshopapps_ordermanager/export_csv')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
case 'Mscrm':
$file = Mage::getModel('webshopapps_ordermanager/export_mscrm')->exportOrders($orders);
$this->_prepareDownloadResponse($file, file_get_contents(Mage::getBaseDir('export').'/'.$file));
break;
}
}
そしてconfig.xml。最初の大虐殺が正しいコントローラーとアクションを呼び出す理由を見て、理解していませんが、2番目はそうではありません。私が修正する必要があるという私の理解の誤り。
<config>
<modules>
<Webshopapps_Ordermanager>
<version>0.0.1</version>
</Webshopapps_Ordermanager>
</modules>
<global>
<models>
<webshopapps_ordermanager>
<class>Webshopapps_Ordermanager_Model</class>
</webshopapps_ordermanager>
</models>
<helpers>
<webshopapps_ordermanager>
<class>Webshopapps_Ordermanager_Helper</class>
</webshopapps_ordermanager>
</helpers>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>Webshopapps_Ordermanager_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Webshopapps_Ordermanager before="Mage_Adminhtml">Webshopapps_Ordermanager</Webshopapps_Ordermanager>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<adminhtml>
<translate>
<modules>
<Webshopapps_Ordermanager>
<files>
<default>Webshopapps_Ordermanager.csv</default>
</files>
</Webshopapps_Ordermanager>
</modules>
</translate>
<default>
<ordermanager>
<condition_name>order_export</condition_name>
</ordermanager>
</default>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<order_export>
<title>Export Orders</title>
</order_export>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>