Search code examples
magentoorders

In magento, how to add shipment and track number to order


I need to dynamically add a shipment and shipment track into an order, it needs to be dynamically because we will do it in batch, can you guys give me some help on this?

EDIT:
The user will see a page with a list of orders, then he will input the track number for each and submit the form, so I need to get a known carrier and send all orders via this carrier.


Solution

  • If you have a list of order ids and corresponding tracking numbers you can,

    $shipment_collection = Mage::getResourceModel('sales/order_shipment_collection');
    $shipment_collection->addAttributeToFilter('order_id', $order_id);
    

    Then you can go through all the shipments and add the tracking like,

    foreach($shipment_collection as $sc) {
        $shipment = Mage::getModel('sales/order_shipment');
        $shipment->load($sc->getId());
        if($shipment->getId() != '') { 
            $track = Mage::getModel('sales/order_shipment_track')
                     ->setShipment($shipment)
                     ->setData('title', 'ShippingMethodName')
                     ->setData('number', $track_no)
                     ->setData('carrier_code', 'ShippingCarrierCode')
                     ->setData('order_id', $shipment->getData('order_id'))
                     ->save();
        }
    }
    

    You would need to have a nested loop of order ID and tracking ID on top of this code.