// For both order complete and ship
<?php $orderId = 100000821; // you're order Id gaOrderCompShip($orderId); // define function function gaOrderCompShip($orderId){ // function definition $email = true; $trackingNum = ''; $carrier = 'custom'; $includeComment = false; $comment = "Order Completed And Shipped"; $order = Mage::getModel('sales/order')->loadByIncrementId($orderId); $convertor = Mage::getModel('sales/convert_order'); $shipment = $convertor->toShipment($order); foreach ($order->getAllItems() as $orderItem) { if (!$orderItem->getQtyToShip()) { continue; } if ($orderItem->getIsVirtual()) { continue; } $item = $convertor->itemToShipmentItem($orderItem); $qty = $orderItem->getQtyToShip(); $item->setQty($qty); $shipment->addItem($item); } $carrierTitle = NULL; if ($carrier == 'custom') { $carrierTitle = 'courier Service name'; } $data = array(); $data['carrier_code'] = $carrier; $data['title'] = $carrierTitle; $data['number'] = $trackingNum; $track = Mage::getModel('sales/order_shipment_track')->addData($data); $shipment->addTrack($track); $shipment->register(); $shipment->addComment($comment, $email && $includeComment); $shipment->setEmailSent(true); $shipment->getOrder()->setIsInProcess(true); $transactionSave = Mage::getModel('core/resource_transaction') ->addObject($shipment) ->addObject($shipment->getOrder()) ->save(); $shipment->sendEmail($email, ($includeComment ? $comment : '')); $order->setStatus('Complete'); $order->addStatusToHistory($order->getStatus(), $comment, false); $shipment->save(); } ?>