从电子邮件更改订单状态

时间:2017-09-17 09:53:20

标签: magento magento-1.9

我添加了电子邮件模板,以便在订购Magento时通知管理员。

我需要在电子邮件中添加一个按钮或链接,以允许管理员将订单状态更改为处理状态,而无需从电子邮件转到后端。

如何做到这一点?

1 个答案:

答案 0 :(得分: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();

以上代码将更新除COMPLETE状态以外的所有状态。只有在创建发票和发货时,订单才会完成。创建发票和发货后,订单将自动更改为完成。

所以你可以使用下面的代码。

创建发票

$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);