in magento how to add shipment and track number to order

in magento how to add shipment and track number to order  using -'magento,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?  

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.


asked Oct 23, 2015 by yogeshplv
0 votes

2 Answers

0 votes

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');
    if($shipment->getId() != '') { 
        $track = Mage::getModel('sales/order_shipment_track')
                 ->setData('title', 'ShippingMethodName')
                 ->setData('number', $track_no)
                 ->setData('carrier_code', 'ShippingCarrierCode')
                 ->setData('order_id', $shipment->getData('order_id'))

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

answered Oct 23, 2015 by rajeshujade
0 votes

here you go :)

    private function _createShipment($shipment, $itemsQty)
        $itemsQtyArr = array();
        foreach ($itemsQty as $item)
            $itemsQtyArr[$item->iExternalOrderId] = $item->dQtyShipped;

            $shipmentIncrementId = Mage::getModel('sales/order_shipment_api')->create($shipment->sOrderNumber, $itemsQtyArr, $shipment->sShipmentComment, true, true);

            if ($shipmentIncrementId)
                Mage::getModel('sales/order_shipment_api')->addTrack($shipmentIncrementId, $shipment->sCarrierCode, $shipment->sTrackingTitle, $shipment->sTrackingNumber);
        catch(Exception $e)
            Mage::log('Exception: ' . $e->getMessage());

        return $shipmentIncrementId ? true : false;
answered Oct 23, 2015 by thiru