1. Fist, Add a shipped status in backend

?
2.rewrite Mage_Adminhtml_Sales_Order_ShipmentController
class="xml" name="code"><config>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<Bysoft_Mysales before="Mage_Adminhtml">Bysoft_Mysales</Bysoft_Mysales>
</modules>
</args>
</adminhtml>
</routers>
</admin>
?
<?php
include_once("Mage/Adminhtml/controllers/Sales/Order/ShipmentController.php");
class Bysoft_Mysales_Sales_Order_ShipmentController extends Mage_Adminhtml_Sales_Order_ShipmentController {
protected function _saveShipment($shipment)
{
$shipment->getOrder()->setIsInProcess(true);
$order = $shipment->getOrder();
$order = Mage::getModel('sales/order')->loadByIncrementId($order->getIncrementId());
$state = 'processing';
$status = 'shipped';
$comment = 'Changing state to Processing and status to shipped Status';
$isCustomerNotified = false;
$order->setState($state, $status, $comment, $isCustomerNotified);
$order->save();
$transactionSave = Mage::getModel('core/resource_transaction')
->addObject($shipment)
->save();
return $this;
}
}
?3. add a confirm controller for frontend , make cusotmer to confirm the order
<config>
<frontend>
<routers>
<mysales>
<use>standard</use>
<args>
<module>Bysoft_Mysales</module>
<frontName>mysales</frontName>
</args>
</mysales>
</routers>
</frontend>
?
<?php
class Bysoft_Mysales_ConfirmController extends Mage_Core_Controller_Front_Action {
public function saveAction() {
$order_id = Mage::app()->getRequest()->getParam('order_id');
if(Mage::getSingleton('customer/session')->isLoggedIn()) {
$customerData = Mage::getSingleton('customer/session')->getCustomer();
$customer_id = $customerData->getId();
$order = Mage::getModel('sales/order')->load($order_id);
if ( $order->getCustomerId() == $customer_id) {
$order->setData('state', "complete");
$order->setStatus("complete");
$history = $order->addStatusHistoryComment('Order status to complete by customer confirm.', false);
$history->setIsCustomerNotified(false);
$order->save();
$message = $this->__('You have confirmed the order.');
Mage::getSingleton('core/session')->addSuccess($message);
$this->_redirectReferer();
} else {
return ;
}
} else {
return ;
}
}
}
?