2010-08-18 88 views
7

我目前正在制作一个模块,要求我接收订单对象并使其重新排序。因此,在后端创建一个具有完全相同的项目和凭证的新订单。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

我的第一个想法是,你应该在第2行使用$order->getIncrementId()而不是$order['model_order_id'],但我不确定你从哪里得到$order。你有没有检查$order['model_order_id']实际上是否返回一个有效的增量ID?我没有看到model_order_id作为数据库中的任何一个字段...

我会建议你让IDE和XDebug工作,以便在你使用它们时了解对象并理解正在发生的事情。

干杯, JD

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

如果您已经放置在第一时间周围的秩序也通过编码产生,而不是从店面,那么你需要确保你已经在增加了一个入口sales_flat_quote_item表。否则,该订单不能重新排序。所以请确保您的订单不是这种情况。

相关问题