2012-02-21 34 views
2

我想知道是否有任何方法在Magento中創建自定義訂單狀態。我正在開發一個Magento擴展,其中我必須將一些自定義訂單狀態添加到磁貼訂單中。如何使用Magento中的擴展/模塊創建自定義訂單狀態

我GOOGLE了很多,但沒有找到任何好的資源。

任何人都可以解釋如何做到這一點,任何資源引用。

回答

7

假設您要將「授權付款」狀態添加爲「授權」代碼。

添加以下到下配置您的模塊/全球的config.xml文件:

<sales> 
     <order> 
      <statuses> 
       <authorized translate="label"> 
        <label>Authorized Payment</label> 
       </authorized> 
      </statuses> 
      <states> 
       <authorized translate="label"> 
        <label>Authorized Payment</label> 
        <statuses> 
         <authorized default="1"/> 
        </statuses> 
        <visible_on_front>1</visible_on_front>      
       </authorized> 
      </states> 
     </order> 
    </sales> 

早些時候,這是相當足夠的,但在最近的版本(1.5.xx如果我沒有記錯),還需要以下位。將以下內容添加到您的擴展的mysql安裝/更新文件中:

<?php 

$installer = $this; 

$statusTable  = $installer->getTable('sales/order_status'); 
$statusStateTable = $installer->getTable('sales/order_status_state'); 
$statusLabelTable = $installer->getTable('sales/order_status_label'); 

$data = array(
    array('status' => 'authorized', 'label' => 'Authorized Payment') 
); 
$installer->getConnection()->insertArray($statusTable, array('status', 'label'), $data); 

$data = array(
    array('status' => 'authorized', 'state' => 'authorized', 'is_default' => 1) 
); 
$installer->getConnection()->insertArray($statusStateTable, array('status', 'state', 'is_default'), $data); 

?> 

這在技術上爲您的系統增加了新的狀態。現在您可以將其設置爲您的訂單,如下所示:

$order->setState('authorized', true, 'Status history message') 
     ->save(); 

如果您有任何問題,請讓我知道。

0

這樣的狀態可見在需要面前:

<config> <modules> <MyCompany_MyModule> <active>true</active> <codePool>local</codePool> <depends> <Mage_Sales/> </depends> </MyCompany_MyModule> </modules> </config>

相關問題