我目前正在创建一个模块,要求我接受一个订单对象并使其自行重新排序。因此,在后端创建一个具有完全相同的项目和凭据的新订单。
这是我到目前为止的代码......它似乎没有重新排序项目或创建并添加另一个后端订单。
$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();
*/
非常感谢任何帮助!!
答案 0 :(得分:7)
$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();
答案 1 :(得分:3)
我的第一个想法是你应该在第2行使用$order->getIncrementId()
而不是$order['model_order_id']
,但我不确定你从哪里开始$order
。您是否检查过$order['model_order_id']
实际上是否返回了有效的增量ID?我没有在任何地方看到model_order_id
作为数据库中的字段......
我建议您让IDE和XDebug正常工作,这样您就可以在使用它们时检查对象并了解正在发生的事情。
干杯, JD
答案 2 :(得分:1)
如果您第一次放置的订单也是通过编码创建的,而不是从商店前面创建的,那么您需要确保在sales_flat_quote_item
表中添加了一个条目。否则该订单无法重新排序。因此,请确保您的订单创建不是这样。