仅将跟踪编号添加到特定的送货方式

时间:2014-04-29 09:15:07

标签: php magento

你好基于这个帖子: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()

也许还有其他方法我如何检查它是我的运营商然后添加跟踪号码;因为此代码添加了跟踪号,但是对于所有订单,我想要的是它将跟踪号添加到我自己创建的运输方式

任何帮助都会很棒

3 个答案:

答案 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,你从一开始就是对的,我只是不明白。