Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CreateOnlineCreditMemoStep.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\Mtf\TestStep\TestStepInterface;
12 use Magento\Sales\Test\Page\Adminhtml\OrderCreditMemoNew;
13 use Magento\Sales\Test\Page\Adminhtml\OrderIndex;
14 use Magento\Sales\Test\Page\Adminhtml\OrderInvoiceView;
15 use Magento\Sales\Test\Page\Adminhtml\SalesOrderView;
16 use Magento\Sales\Test\TestStep\Utils\CompareQtyTrait;
17 
21 class CreateOnlineCreditMemoStep implements TestStepInterface
22 {
23  use CompareQtyTrait;
24 
30  private $orderIndex;
31 
37  private $salesOrderView;
38 
44  private $orderCreditMemoNew;
45 
51  private $order;
52 
58  private $orderInvoiceView;
59 
65  private $cart;
66 
75  public function __construct(
76  Cart $cart,
77  OrderIndex $orderIndex,
78  SalesOrderView $salesOrderView,
79  OrderInjectable $order,
80  OrderInvoiceView $orderInvoiceView,
81  OrderCreditMemoNew $orderCreditMemoNew
82  ) {
83  $this->cart = $cart;
84  $this->orderIndex = $orderIndex;
85  $this->salesOrderView = $salesOrderView;
86  $this->order = $order;
87  $this->orderInvoiceView = $orderInvoiceView;
88  $this->orderCreditMemoNew = $orderCreditMemoNew;
89  }
90 
96  public function run()
97  {
98  $this->orderIndex->open();
99  $this->orderIndex->getSalesOrderGrid()->searchAndOpen(['id' => $this->order->getId()]);
100  $refundsData = $this->order->getRefund();
101  foreach ($refundsData as $refundData) {
103  $invoicesGrid = $this->salesOrderView->getOrderForm()->getTab('invoices')->getGridBlock();
104  $this->salesOrderView->getOrderForm()->openTab('invoices');
105  $invoicesGrid->viewInvoice();
106  $this->salesOrderView->getPageActions()->orderInvoiceCreditMemo();
107 
108  $items = $this->cart->getItems();
109  $this->orderCreditMemoNew->getFormBlock()->fillProductData($refundData, $items);
110  if ($this->compare($items, $refundData)) {
111  $this->orderCreditMemoNew->getFormBlock()->updateQty();
112  }
113 
114  $this->orderCreditMemoNew->getFormBlock()->submit();
115  }
116 
117  return ['ids' => ['creditMemoIds' => $this->getCreditMemoIds()]];
118  }
119 
125  private function getCreditMemoIds()
126  {
127  $this->salesOrderView->getOrderForm()->openTab('creditmemos');
128  return $this->salesOrderView->getOrderForm()->getTab('creditmemos')->getGridBlock()->getIds();
129  }
130 }
$order
Definition: order.php:55
__construct(Cart $cart, OrderIndex $orderIndex, SalesOrderView $salesOrderView, OrderInjectable $order, OrderInvoiceView $orderInvoiceView, OrderCreditMemoNew $orderCreditMemoNew)
$items