2016-11-02 12 views
0

こんにちは私はカスタム列をsales_flat_orderテーブルfinal_shipping_amountに作成しました。私はそれを私のカスタム列を表示する順序をロードしているとき。カスタムカラムに値を追加しようとしていますが、ここで値を追加しないことは自分のコードです。Magento sales_flat_orderテーブルのカスタム列に値を追加

$final_shipping = "1.33" 
$orderIid = $this->getRequest()->getParam('id'); 
$orderDataShip = Mage::getModel('sales/order')->load($orderIid); 
$orderDataShip->setFinalShippingAmount($final_shipping); 
$orderDataShip->save(); 

その値は保存されません。私もこの方法で試してみましたが、節約しません。

$final_shipping = "1.33" 
$orderIid = $this->getRequest()->getParam('id'); 
$orderDataShip = Mage::getModel('sales/order')->load($orderIid); 
$orderDataShip->setData('final_shipping_amount' , $final_shipping); 
$orderDataShip->save(); 

しかし、それは動作しません。

+0

イベントでこのコードを使用していますか? – Vky

+0

私は出荷フォームの送信にこのコードを使用しています。 – OBAID

+0

'sales_order_place_before'イベントを使用して、私のために働いたオブザーバーの関数でコードを使用しようとしました – Vky

答えて

0
あなたのモジュールのconfig.xmlファイルのユーザーで

このイベント

<sales_order_place_before> 
      <observers> 
       <Yournamespace_YourModuleName_model_observer> 
        <type>singleton</type> 
        <class>Yournamespace_YourModuleName_Model_Observer</class> 
        <method>example</method> 
       </Yournamespace_YourModuleName_model_observer> 
      </observers> 
</sales_order_place_before> 

そして、あなたのオブザーバーファイル内

public function example($observer) { 
     $final_shipping = "1.33"; 
     $event = $observer->getEvent(); 
     $order = $event->getOrder(); 


     $items = $order->getQuote()->getAllItems(); 
     //Mage::log($items->debug()); 

     $orderdata = Mage::getModel('sales/order')->load($order->getEntityId()); 
     $mn = $orderdata->setData('final_shipping_amount', $final_shipping); 
     $orderdata->save(); 

    } 

それはあなたを助けることができるかもしれませ。

0

magentoに属性を追加することはそれほど単純ではありません。

最初に注文エンティティを保存すると、magentoはこれをフラットオーダーテーブルではなくEAV構造体に保存します。あなたが最初に新しい属性を追加しましたMagentoのを指示する必要があり

は、例えばこれを行う方法についての情報の負荷があります:

http://stackoverflow.com/questions/12936470/adding-a-new-attribute-to-order-in-magento 

あなたはMagentoのをやった後は知っているであろう追加したので正しく保存する必要があります。

関連する問題