Skip to content

Commit cb7cd87

Browse files
committed
Merge remote-tracking branch 'origin/BUG#AC-7632' into spartans_pr_13062023
2 parents c22c108 + 477622c commit cb7cd87

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,10 @@ public function isLast()
563563
{
564564
$items = $this->getAllItems();
565565
foreach ($items as $item) {
566+
if ($item->getOrderItem()->isDummy()) {
567+
continue;
568+
}
569+
566570
if (!$item->isLast()) {
567571
return false;
568572
}

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)