/** * @dataProvider calcRowTotalDataProvider */ public function testCalcRowTotal($qty) { $creditmemoMock = $this->getMockBuilder('\\Magento\\Sales\\Model\\Order\\Creditmemo')->disableOriginalConstructor()->getMock(); $creditmemoMock->expects($this->exactly(4))->method('roundPrice')->will($this->returnCallback(function ($arg) { return round($arg, 2); })); $qtyInvoiced = 10; $qtyRefunded = 2; $qtyAvailable = $qtyInvoiced - $qtyRefunded; $rowInvoiced = 5; $amountRefunded = 2; $expectedRowTotal = ($rowInvoiced - $amountRefunded) / $qtyAvailable * $qty; $expectedRowTotal = round($expectedRowTotal, 2); $orderItemMock = $this->getMockBuilder('Magento\\Sales\\Model\\Order\\Item')->disableOriginalConstructor()->getMock(); $orderItemMock->expects($this->once())->method('getQtyInvoiced')->willReturn($qtyInvoiced); $orderItemMock->expects($this->once())->method('getQtyRefunded')->willReturn($qtyRefunded); $orderItemMock->expects($this->once())->method('getRowInvoiced')->willReturn($rowInvoiced); $orderItemMock->expects($this->once())->method('getAmountRefunded')->willReturn($amountRefunded); $orderItemMock->expects($this->once())->method('getBaseRowInvoiced')->willReturn($rowInvoiced); $orderItemMock->expects($this->once())->method('getBaseAmountRefunded')->willReturn($amountRefunded); $orderItemMock->expects($this->once())->method('getRowTotalInclTax')->willReturn(1); $orderItemMock->expects($this->once())->method('getBaseRowTotalInclTax')->willReturn(1); $orderItemMock->expects($this->once())->method('getQtyRefunded')->willReturn(1); $orderItemMock->expects($this->once())->method('getQtyOrdered')->willReturn(1); $orderItemMock->expects($this->any())->method('getQtyToRefund')->willReturn($qtyAvailable); $this->item->setData('qty', $qty); $this->item->setCreditmemo($creditmemoMock); $this->item->setOrderItem($orderItemMock); $result = $this->item->calcRowTotal(); $this->assertInstanceOf('Magento\\Sales\\Model\\Order\\Creditmemo\\Item', $result); $this->assertEquals($expectedRowTotal, $this->item->getData('row_total')); $this->assertEquals($expectedRowTotal, $this->item->getData('base_row_total')); }
public function testCalcRowTotal() { $creditmemoMock = $this->getMockBuilder('\\Magento\\Sales\\Model\\Order\\Creditmemo')->disableOriginalConstructor()->getMock(); $creditmemoMock->expects($this->exactly(4))->method('roundPrice')->willReturnMap([[0.375, 'regular', false, 0.4], [0.375, 'base', false, 0.4], [1, 'including', false, 1.0], [1, 'including_base', false, 1.0]]); $orderItemMock = $this->getMockBuilder('Magento\\Sales\\Model\\Order\\Item')->disableOriginalConstructor()->getMock(); $orderItemMock->expects($this->once())->method('getQtyInvoiced')->willReturn(10); $orderItemMock->expects($this->once())->method('getQtyRefunded')->willReturn(2); $orderItemMock->expects($this->once())->method('getRowInvoiced')->willReturn(5); $orderItemMock->expects($this->once())->method('getAmountRefunded')->willReturn(2); $orderItemMock->expects($this->once())->method('getBaseRowInvoiced')->willReturn(5); $orderItemMock->expects($this->once())->method('getBaseAmountRefunded')->willReturn(2); $orderItemMock->expects($this->once())->method('getRowTotalInclTax')->willReturn(1); $orderItemMock->expects($this->once())->method('getBaseRowTotalInclTax')->willReturn(1); $orderItemMock->expects($this->once())->method('getQtyRefunded')->willReturn(1); $orderItemMock->expects($this->once())->method('getQtyOrdered')->willReturn(1); $this->item->setData('qty', 1); $this->item->setCreditmemo($creditmemoMock); $this->item->setOrderItem($orderItemMock); $result = $this->item->calcRowTotal(); $this->assertInstanceOf('Magento\\Sales\\Model\\Order\\Creditmemo\\Item', $result); }
/** * @param \Magento\Sales\Model\Order\Creditmemo\Item $item * @return $this */ public function addItem(\Magento\Sales\Model\Order\Creditmemo\Item $item) { $item->setCreditmemo($this)->setParentId($this->getId())->setStoreId($this->getStoreId()); if (!$item->getId()) { $this->setItems(array_merge($this->getItems(), [$item])); } return $this; }
/** * @param \Magento\Sales\Model\Order\Creditmemo\Item $item * @return $this */ public function addItem(\Magento\Sales\Model\Order\Creditmemo\Item $item) { $item->setCreditmemo($this)->setParentId($this->getId())->setStoreId($this->getStoreId()); if (!$item->getId()) { $this->getItemsCollection()->addItem($item); } return $this; }