2017-03-11 68 views
1

我碰到這個問題,有什麼辦法可以通過我的訂單細節和訂單id幫助恢復購物車。我想要做和Prestashop.In的重新訂購功能一樣。Magento有一個簡單的代碼來恢復車與去年訂單ID的幫助是這樣的:想要使用Prestashop中的訂單ID和詳細信息恢復購物車?

if ($lastQuoteId = Mage::getSingleton('checkout/session')->getLastQuoteId()) { 
      $quote = Mage::getModel('sales/quote')->load($lastQuoteId); 
      $quote->setIsActive(true)->save(); 
     } 

如果像上Prestashop.It這項工作將是對我有很大的幫助。 請給我你的寶貴建議。 在此先感謝。

+1

檢查關於如何從的Prestashop順序再現了車[此](https://github.com/PrestaShop/PrestaShop/blob/1.6.1.x/controllers/front/ParentOrderController.php#L80)碼ID。 – TheDrot

+0

謝謝,Drot,我從你在評論中提到的代碼中得到了我的答案。我正在更新它作爲這個問題的答案。 – Akash

回答

1

我在TheDrot.Thanks的幫助下找到了這個參考。

$order = new Order(Order::getOrderByCartId($id_cart)); 
if ($order) { 
     $oldCart = new Cart($id_cart); 
     $duplication = $oldCart->duplicate(); 
     if (!$duplication || !Validate::isLoadedObject($duplication['cart'])) { 
      $this->errors[] = Tools::displayError('Sorry. We cannot renew your order.'); 
     } elseif (!$duplication['success']) { 
      $this->errors[] = Tools::displayError('Some items are no longer available, and we are unable to renew your order.'); 
     } else { 
      $this->context->cookie->id_cart = $duplication['cart']->id; 
      $context = $this->context; 
      $context->cart = $duplication['cart']; 
      CartRule::autoAddToCart($context); 
      $this->context->cookie->write(); 
      if (Configuration::get('PS_ORDER_PROCESS_TYPE') == 1) { 
       Tools::redirect('index.php?controller=order-opc'); 
      } 
      Tools::redirect('index.php?controller=order'); 
     } 
    } 
相關問題