In my Magento custom module I'm trying to go through array of some orders and re-order each. However, I'm facing strange issue.
The first order from that array is well reordered, but all other orders are not reordered correctly. Precisely, items from my first order are also copied to second order, then items from first and second orders are copied to third order, and so on. Moreover, all Order Total prices (Subtotal, Shipping & Handling, Tax, Grand Total, …) are zero (for all orders except for the first one which are correct).
This is the code i have so far:
$orderIds = /* ARRAY OF ORDER ID's */
foreach($orderIds as $orderId) {
$origOrder = Mage::getModel('sales/order')->load($orderId);
// clear the session data
Mage::getSingleton('adminhtml/session_quote')->clear();
Mage::unregister('rule_data');
$orderModel = Mage::getSingleton('adminhtml/sales_order_create');
//I also tried $orderModel = Mage::getModel('adminhtml/sales_order_create'); but without success
$orderModel->getSession()->clear();
$origOrder->setReordered(true);
$orderModel->setRecollect(true)->saveQuote();
Mage::getSingleton('adminhtml/session_quote')->setUseOldShippingMethod(true);
$reorder = $orderModel->initFromOrder($origOrder);
try {
$reorder->createOrder();
$orderModel->getSession()->clear();
} catch (Exception $e) {
Mage::log("Not Reordered! Error: ".$e->getMessage());
}
}
Similar question has been raised here, but without answer: Auto reorder loop – Second order errors out
I'm using Magento versions 1.6 and 1.7. I would greatly appreciate any help!
Best Answer
I had same problem. But i resolved this by resetting new quote to adminhtml quote session. So it will not take items from previous orders.
Here is your solution.