Skip to content

Commit 477622c

Browse files
committed
BUG#7632: Creditmemo for an order that contains only one configurable product is not generated correctly
1 parent 6310791 commit 477622c

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

app/code/Magento/Sales/Model/Order/Creditmemo.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -563,8 +563,7 @@ public function isLast()
563563
{
564564
$items = $this->getAllItems();
565565
foreach ($items as $item) {
566-
$orderItem = $item->getOrderItem();
567-
if ($orderItem->isDummy()) {
566+
if ($item->getOrderItem()->isDummy()) {
568567
continue;
569568
}
570569

app/code/Magento/Sales/Test/Unit/Model/Order/CreditmemoTest.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Magento\Sales\Model\Order\Creditmemo\CommentFactory;
2121
use Magento\Sales\Model\Order\Creditmemo\Config;
2222
use Magento\Sales\Model\Order\Creditmemo\Item;
23+
use Magento\Sales\Model\Order\Item as OrderItem;
2324
use Magento\Sales\Model\ResourceModel\Order\Creditmemo\Item\Collection as ItemCollection;
2425
use Magento\Sales\Model\ResourceModel\Order\Creditmemo\Item\CollectionFactory;
2526
use Magento\Store\Model\StoreManagerInterface;
@@ -201,4 +202,40 @@ public function testGetItemsCollectionWithoutId()
201202
$itemsCollection = $this->creditmemo->getItemsCollection();
202203
$this->assertEquals($items, $itemsCollection);
203204
}
205+
206+
public function testIsLastForLastCreditMemo(): void
207+
{
208+
$item = $this->getMockBuilder(Item::class)->disableOriginalConstructor()->getMock();
209+
$orderItem = $this->getMockBuilder(OrderItem::class)->disableOriginalConstructor()->getMock();
210+
$orderItem
211+
->expects($this->once())
212+
->method('isDummy')
213+
->willReturn(true);
214+
$item->expects($this->once())
215+
->method('getOrderItem')
216+
->willReturn($orderItem);
217+
$this->creditmemo->setItems([$item]);
218+
$this->assertTrue($this->creditmemo->isLast());
219+
}
220+
221+
public function testIsLastForNonLastCreditMemo(): void
222+
{
223+
$item = $this->getMockBuilder(Item::class)->disableOriginalConstructor()->getMock();
224+
$orderItem = $this->getMockBuilder(OrderItem::class)->disableOriginalConstructor()->getMock();
225+
$orderItem
226+
->expects($this->once())
227+
->method('isDummy')
228+
->willReturn(false);
229+
$item->expects($this->once())
230+
->method('getOrderItem')
231+
->willReturn($orderItem);
232+
$item->expects($this->once())
233+
->method('getOrderItem')
234+
->willReturn($orderItem);
235+
$item->expects($this->once())
236+
->method('isLast')
237+
->willReturn(false);
238+
$this->creditmemo->setItems([$item]);
239+
$this->assertFalse($this->creditmemo->isLast());
240+
}
204241
}

0 commit comments

Comments
 (0)