Magento - 以编程方式重新排序

时间:2010-08-18 15:21:46

标签: php magento

我目前正在创建一个模块,要求我接受一个订单对象并使其自行重新排序。因此,在后端创建一个具有完全相同的项目和凭据的新订单。

这是我到目前为止的代码......它似乎没有重新排序项目或创建并添加另一个后端订单。

$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();
*/

非常感谢任何帮助!!

3 个答案:

答案 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表中添加了一个条目。否则该订单无法重新排序。因此,请确保您的订单创建不是这样。