2017-05-11 24 views
0

我正在制作一个应该复制现有订单的脚本。 我可以营造整体秩序,与此代码:如何使用Prestashop复制现有订单(核心,php)1.6.1

$order = new Order($_GET["id_order"]); 
$order->add(); 

但有顺序没有产品 - 我想这一点:

$order_detail = new OrderDetail($_GET["id_order"]); 
$order_detail->add(); 

什么我做错了,我怎么能复制现有订单?

回答

0

您可以使用ObjectModel类中的duplicateObject()方法复制订单。

这是应该做的伎俩功能:

function duplicateOrder($id_order) 
{ 
    $order = new Order($id_order); 
    $duplicatedOrder = $order->duplicateObject(); 

    $orderDetailList = $order->getOrderDetailList(); 
    foreach ($orderDetailList as $detail) { 
     $orderDetail = new orderDetail($detail['id_order_detail']); 
     $duplicatedOrderDetail = $orderDetail->duplicateObject(); 
     $duplicatedOrderDetail->id_order = $duplicatedOrder->id; 
     $duplicatedOrderDetail->save(); 
    } 

    $orderHistoryList = $order->getHistory(Configuration::get('PS_LANG_DEFAULT')); 
    foreach ($orderHistoryList as $history) { 
     $orderHistory = new OrderHistory($history['id_order']); 
     $duplicatedOrderHistory = $orderHistory->duplicateObject(); 
     $duplicatedOrderHistory->id_order = $duplicatedOrder->id; 
     $duplicatedOrderHistory->save(); 
    } 
} 
+0

谢谢!奇迹般有效! –