Home » Php » php – Magento – Programmatically reorder

php – Magento – Programmatically reorder

Posted by: admin July 12, 2020 Leave a comment

Questions:

I am currently making a module that requires me to take an order object and make it reorder itself.. thus, creating a new order in the backend with the exact same items and credentials.

This is the code that i have thus far… it doesn’t seem to reorder the item or create and add another backend order.

$personsOrder = Mage::getModel(’sales/order’);
$personsOrder->loadByIncrementId($order[’model_order_id’]);

$order_model = Mage::getSingleton(’adminhtml/sales_order_create’);
$personsOrder->setReordered(true);

$order_model->initFromOrder($personsOrder);

/*
$order_model->save();

$order_model->place();
$order_model->sendNewOrderEmail();
*/

Any help is greatly appreciated!!

How to&Answers:
$orderId= $YOUR_ORDER_NUMBER;
$personsOrder = Mage::getModel('sales/order')->load($orderId);
$order_model = Mage::getSingleton('adminhtml/sales_order_create');
$personsOrder->setReordered(true);
$order_model->initFromOrder($personsOrder);
$order_model->createOrder();

Answer:

My first thought is that you should be using $order->getIncrementId() on line 2 rather than $order['model_order_id'], but I’m not sure where you’re getting $order from in the first place. Have you checked that $order['model_order_id'] is actually returning a valid increment ID? I don’t see model_order_id as a field in the database anywhere…

I’d be suggesting that you getting your IDE and XDebug working so that you can inspect the objects as you work with them and understand what’s going on.

Cheers,
JD

Answer:

If the order that you have placed the first time around is also created through coding and not from store front then you need to make sure that you have added an entry in the sales_flat_quote_item table. Otherwise that order cannot be reordered. So make sure it’s not the case with your order creation.