2017-09-17 3 views
0

Magentoで注文があったときに管理者に通知するための電子メールテンプレートを追加しました。メールからオーダーステータスを変更する

電子メールのバックエンドに行かずに、管理者が注文のステータスを処理に変更できるように、電子メールにボタンまたはリンクを追加する必要があります。

どうすればいいですか?以下は

+0

の作成は要求を認証し、レコードを更新トークンでMagentoの上、電子メールのURLと同じに変数を追加しますか? – Syfer

+0

あなたは私がMagentoで新しい時にそれを始める方法を知ることができます。 –

答えて

0

は、ステータスのあなたが状況を更新するための

const STATE_NEW    = 'new'; 
const STATE_PENDING_PAYMENT = 'pending_payment'; 
const STATE_PROCESSING  = 'processing'; 
const STATE_CLOSED   = 'closed'; 
const STATE_CANCELED  = 'canceled'; 
const STATE_HOLDED   = 'holded'; 
const STATE_PAYMENT_REVIEW = 'payment_review'; 

コードを使用することができます。

$order = Mage::getModel('sales/order')->load($orderid, 'increment_id'); 
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true); 
$order->save(); 

上記のコードでは、完全なステータス以外のすべてのステータスが更新されます。請求書と出荷が作成された場合にのみ注文が完了します。請求書と出荷が作成されると、注文は自動的に完了に変更されます。

ですので、以下のコードを使用することができます。

請求書

$invoice = $order->prepareInvoice() 
       ->setTransactionId($order->getId()) 
       ->addComment($comment) 
       ->register() 
       ->pay(); 

$transaction_save = Mage::getModel('core/resource_transaction') 
       ->addObject($invoice) 
       ->addObject($invoice->getOrder()); 
$transaction_save->save(); 
create shipmnet 

$itemQty = $order->getItemsCollection()->count(); 
$shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); 
$shipment = new Mage_Sales_Model_Order_Shipment_Api(); 
$shipmentId = $shipment->create($orderId); 
+0

このコードは電子メールテンプレートにのみ追加されますか? –

+0

このプロセスを完了するには、まず、カスタムURL ex:domain.com/controller/action/order_id/123を使用して電子メールテンプレートにボタンを作成します。作成されたボタンをクリックするたびに、order_idパラメータを取得するカスタムURLが呼び出されます。このorder_idを使用すると、前述の追加コードを実行して注文ステータスを変更できます。 –

関連する問題