2016-02-11 2 views
0

Отмена заказа в Magento 2 Programatically:Magento 2 отменить заказ от MyAccount страницы

я реализовал модуль в Magento 1, в котором я буду отменить ожидающий заказ от клиента моей страницы счета.

Пожалуйста, обратитесь к ниже код, который я реализовал в Magento 1:

$order = Mage::getModel('sales/order')->load($orderId); 
$order_status=$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true)->save(); 

Я хочу реализовать ту же функциональность в Magento 2. Кто-нибудь знает, как это осуществить?

Я загрузил заказ с идентификатором заказа в magento 2, но не смог отменить заказ.

ответ

0

Вы должны использовать API (подробнее о magento2 API concepts) для того, пример того, как использовать его в своем классе:

<?php 

use Magento\Sales\Api\OrderManagementInterface; 

class A 
{ 
    /** 
    * @var OrderManagementInterface 
    */ 
    private $orderManagement; 

    /** 
    * @param OrderManagementInterface $orderManagement 
    */ 
    public function __construct(OrderManagementInterface $orderManagement) 
    { 
     $this->orderManagement = $orderManagement; 
    } 

    public function cancelOrderOne() 
    { 
     $orderId = 1; 
     $isCanceled = $this->orderManagement->cancel($orderId); 
    } 
} 
+0

работал как очарование. Спасибо. – user3124850

+0

@ Антон Огородник и @ user3124850 Можете ли вы указать точную файловую структуру. Могу ли я использовать этот код в своем переднем контроллере –

+0

, я сделал это так и отлично работает http://magentocodes.blogspot.in/2017/10/how-to-cancel-order-programatically-in.html –

0

Пожалуйста, посмотрите на код ниже, он будет также проверять ассоциации пользователей для того, также

<?php 
Nmaespace\Modulename\Controller\Action; 

class Cancelorder extends \Magento\Framework\App\Action\Action 
{ 
    protected $orderManagement; 
    public function __construct(
    \Magento\Framework\App\Action\Context $context, 
    \Magento\Sales\Api\OrderManagementInterface $orderManagement 

) { 
    $this->orderManagement = $orderManagement; 
    parent::__construct($context); 
} 

public function execute() 
{ 
     $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 

     $customerSession = $objectManager->get('Magento\Customer\Model\Session'); 
     if(!$customerSession->isLoggedIn()) { 
       $this->_redirect('/'); 
       die; 
     } 

     /*get request params */ 
     $get_customer_id = $customerSession->getCustomer()->getId(); 

     $get_order_id = $this->getRequest()->getParam('order_id'); 
     /*get request params */ 
     //die; 
     $order = $objectManager->create('Magento\Sales\Model\Order')->load($get_order_id); 
     $getcustomerid = $get_customer_id; 
     $orderdata = $order->getData(); 
     $order_status = $orderdata["status"]; 
     //print_r($orderdata); 
     $cus_id = $orderdata["customer_id"]; 
     if($getcustomerid != $cus_id){ 
      echo "We cant Cancel this order at this time" ; 
      //die("go back"); 
     } 
     if($order_status == "pending"){ 
      $this->orderManagement->cancel($get_order_id); 
      echo "Order Cancelled successfully" ; 
     } 
     else{ 
      echo "We cant Cancel this order at this time" ; 

     } 
} 


} 
Смежные вопросы