你好基于这个帖子:add tracking number automatically
我已设法在按下“发货”按钮时向订单添加跟踪号
但问题是我可以在添加跟踪号码之前以某种方式检查吗?因为我只想将追踪号码添加到特定的送货方式(承运人)
我该怎么做?
我尝试在添加跟踪号之前添加if语句:
public function salesOrderShipmentSaveBefore($observer)
{
$rate = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingRatesCollection();
$method = $rate->getCarrier();
if ($method == 'mycompany_mycarrier'){
$trackNumber='123456789';
$shipment = $observer->getEvent()->getShipment();
$track = Mage::getModel('sales/order_shipment_track')
->setNumber($trackNumber)
->setCarrierCode('mycompany_mycarrier')
->setTitle('My Carrier');
$shipment->addTrack($track);
}
但是当我按下发货按钮错误说我正在调用未定义的方法 - Mage_Sales_Model_Resource_Quote_Address_Rate_Collection :: getCarrier()
也许还有其他方法我如何检查它是我的运营商然后添加跟踪号码;因为此代码添加了跟踪号,但是对于所有订单,我想要的是它将跟踪号添加到我自己创建的运输方式
任何帮助都会很棒
答案 0 :(得分:0)
该方法是否存在? 它告诉你,你错过了一段代码。
答案 1 :(得分:0)
//订购地点活动
$iOrderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$oOrder = Mage::getModel('sales/order')->loadByIncrementId($iOrderId);
$oOrder->getShippingDescription();
答案 2 :(得分:0)
解决了我的问题,Observer.php:
public function salesOrderShipmentSaveBefore($observer)
{
$trackNumber='987654321';
$shipment = $observer->getEvent()->getShipment();
$order = $shipment->getOrder();
$orderIncrementId=$order->getIncrementId();
$oOrder = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
$shipping = $oOrder->getShippingDescription();
if($shipping =='My Carrier - My Method')
{
$track = Mage::getModel('sales/order_shipment_track')
->setNumber($trackNumber)
->setCarrierCode('mycompnay_mycarrier')
->setTitle('My Carrier');
$shipment->addTrack($track);
}
}
现在一切正常,就像我想要的那样,跟踪号码只会添加到我的运输公司。 谢谢Kingshuk Deb,你从一开始就是对的,我只是不明白。