Alex Rivera | Logout

Mark a Magento order as complete programmatically

Asked 2012-01-18T07:35:43.207
8

I'm trying to mark a "Processing" order as Complete when I get a certain response back from a third party service. I've got everything set up for this, but the only problem is that orders are staying in the Processing state.

I'm generating an invoice (I don't think I need this though, as each item is marked as "invoiced" in the Magento backend) and a shipment like so:

$order = Mage::getModel('sales/order')... (etc)
$shipment = $order->prepareShipment($quantities);
$shipment->register();
$shipment->setOrder($order);
$shipment->save();

$invoice = $order->prepareInvoice($quantities);
$invoice->register();
$invoice->setOrder($order);
$invoice->save();

This doesn't seem to be doing it though - I get no errors back from this code, but the order remains as processing. In the backend I can still see the "Ship" button at the top of the order, and each item is in the "invoiced" state.

Any tips would be greatly appreciated.

Edit
Report

1 Answer

3

I'm doing this that way:

$order->setState('complete', true, $this->__('Your Order History Message Here.'))
      ->save();
answered 2012-01-18T08:37:30.773

Your Answer