在Magento中,创建配送单并填写运单号,是订单处理的基本流程之一。创建配送单并添加运单号的操作都可以在订单管理页面完成。但是有时候,可能需要在第三方程序中完成订单的这些流程,如ERP。那如何通过代码来完成上述操作呢?
在最近的一个Magento项目中,需要为客户批量导入订单的物流运单号,如下所示,首先从csv文件中读取数据,根据获取的订单号创建订单对象。通过sales/service_order类的prepareShipment()方法,传递需要配送的商品数量。最后实例化Mage_Sales_Model_Order_Shipment_Api,调用create即可创建配送单。
创建配送单的同时,外贸网站模板需要写入物流公司的名称和运单号。下面代码中最后一段,通过调用addTrack()方法即可实现。
$orderId = $importData['order_id'];
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
if (!$order->getId()) {
$message = Mage::helper('catalog')->__('Order Does Not Exist.');
Mage::throwException($message);
}
if(!$order->canShip()) {
$message = Mage::helper('catalog')->__('Order Can Not Ship ATM.');
Mage::throwException($message);
} else {
$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);
$shipment->addTrack($shipmentId, 'custom', $importData['title'], $importData['number']);
}
(责任编辑:好模板) |