/** * Convert applied tax from array to data object * * @param TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory * @param array $itemAppliedTax * @param AppliedTax $existingAppliedTax * @return AppliedTax */ protected function convertToAppliedTaxDataObject(TaxDetailsDataObjectFactory $appliedTaxDataObjectFactory, $itemAppliedTax, AppliedTax $existingAppliedTax = null) { // if there is an existingAppliedTax, include its amount and baseAmount $amount = $baseAmount = 0; if ($existingAppliedTax !== null) { $amount = $existingAppliedTax->getAmount(); $baseAmount = $existingAppliedTax->getBaseAmount(); } return $appliedTaxDataObjectFactory->create()->setCode($itemAppliedTax['code'])->setTitle($itemAppliedTax['title'])->setPercent($itemAppliedTax['tax_percent'])->setAmount($itemAppliedTax['real_amount'] + $amount)->setBaseAmount($itemAppliedTax['real_base_amount'] + $baseAmount); }
/** * @param array $orderItemAppliedTaxes * @return void * @dataProvider getOrderTaxDetailsDataProvider */ public function testGetOrderTaxDetails($orderItemAppliedTaxes) { $orderId = 1; $data = $orderItemAppliedTaxes[0]; $this->orderFactoryMock->expects($this->atLeastOnce())->method('create')->will($this->returnValue($this->orderMock)); $this->orderMock->expects($this->once())->method('load')->with($orderId)->will($this->returnSelf()); $this->taxItemFactoryMock->expects($this->once())->method('create')->willReturn($this->taxItemResourceMock); $this->taxItemResourceMock->expects($this->once())->method('getTaxItemsByOrderId')->with($orderId)->will($this->returnValue($orderItemAppliedTaxes)); $this->assertEquals($this->orderTaxDetailsDataObject, $this->taxManagement->getOrderTaxDetails($orderId)); $this->assertEquals($data['code'], $this->appliedTaxDataObject->getCode()); $this->assertEquals($data['title'], $this->appliedTaxDataObject->getTitle()); $this->assertEquals($data['tax_percent'], $this->appliedTaxDataObject->getPercent()); $this->assertEquals($data['real_amount'], $this->appliedTaxDataObject->getAmount()); $this->assertEquals($data['real_base_amount'], $this->appliedTaxDataObject->getBaseAmount()); }