Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
creditmemo_items_for_search.php
Go to the documentation of this file.
1 <?php
11 use Magento\Sales\Model\Order\Creditmemo\ItemFactory;
13 use Magento\Sales\Model\Order\Item as OrderItem;
15 
16 require 'default_rollback.php';
17 require __DIR__ . '/order.php';
18 
19 $orderCollection = Bootstrap::getObjectManager()->create(Order::class)->getCollection();
21 $order = $orderCollection->getFirstItem();
22 
24 $creditmemoItemFactory = Bootstrap::getObjectManager()->create(ItemFactory::class);
26 $creditmemoFactory = Bootstrap::getObjectManager()->get(CreditmemoFactory::class);
28 $creditmemo = $creditmemoFactory->createByOrder($order, $order->getData());
29 $creditmemo->setOrder($order);
30 $creditmemo->setState(Creditmemo::STATE_OPEN);
31 $creditmemo->save();
32 
33 $items = [
34  [
35  'name' => 'item 1',
36  'base_price' => 10,
37  'price' => 10,
38  'row_total' => 10,
39  'product_type' => 'simple',
40  'qty' => 10,
41  'qty_invoiced' => 10,
42  'qty_refunded' => 1,
43  ],
44  [
45  'name' => 'item 2',
46  'base_price' => 20,
47  'price' => 20,
48  'row_total' => 20,
49  'product_type' => 'simple',
50  'qty' => 10,
51  'qty_invoiced' => 10,
52  'qty_refunded' => 1,
53  ],
54  [
55  'name' => 'item 3',
56  'base_price' => 30,
57  'price' => 30,
58  'row_total' => 30,
59  'product_type' => 'simple',
60  'qty' => 10,
61  'qty_invoiced' => 10,
62  'qty_refunded' => 1,
63  ],
64  [
65  'name' => 'item 4',
66  'base_price' => 40,
67  'price' => 40,
68  'row_total' => 40,
69  'product_type' => 'simple',
70  'qty' => 10,
71  'qty_invoiced' => 10,
72  'qty_refunded' => 1,
73  ],
74  [
75  'name' => 'item 5',
76  'base_price' => 50,
77  'price' => 50,
78  'row_total' => 50,
79  'product_type' => 'simple',
80  'qty' => 2,
81  'qty_invoiced' => 20,
82  'qty_refunded' => 2,
83  ],
84 ];
85 
87 $creditmemoItemRepository = $objectManager->get(CreditmemoItemRepositoryInterface::class);
88 
89 foreach ($items as $data) {
91  $orderItem = $objectManager->create(OrderItem::class);
92  $orderItem->setProductId($product->getId())->setQtyOrdered(10);
93  $orderItem->setBasePrice($data['base_price']);
94  $orderItem->setPrice($data['price']);
95  $orderItem->setRowTotal($data['row_total']);
96  $orderItem->setProductType($data['product_type']);
97  $orderItem->setQtyRefunded(1);
98  $orderItem->setQtyInvoiced(10);
99  $orderItem->setOriginalPrice(20);
100 
101  $order->addItem($orderItem);
102  $order->save();
103 
105  $creditmemoItem = $creditmemoItemFactory->create();
106  $creditmemoItem->setCreditmemo($creditmemo)
107  ->setName($data['name'])
108  ->setOrderItemId($orderItem->getItemId())
109  ->setQty($data['qty'])
110  ->setPrice($data['price']);
111 
112  $creditmemoItemRepository->save($creditmemoItem);
113 }
$objectManager
Definition: bootstrap.php:17
$orderItem
Definition: order.php:30
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60