/** * @param array $orderItemAppliedTaxes * @param array $expected * @return void * @dataProvider getOrderTaxDetailsDataProvider */ public function testGetOrderTaxDetails($orderItemAppliedTaxes, $expected) { $orderId = 1; $this->orderMock->expects($this->once())->method('load')->with($orderId)->will($this->returnSelf()); $this->taxItemResourceMock->expects($this->once())->method('getTaxItemsByOrderId')->with($orderId)->will($this->returnValue($orderItemAppliedTaxes)); $this->assertEquals($this->orderTaxDetailsDataObject, $this->taxManagement->getOrderTaxDetails($orderId)); $this->assertEquals($expected['code'], $this->appliedTaxDataObject->getCode()); $this->assertEquals($expected['title'], $this->appliedTaxDataObject->getTitle()); $this->assertEquals($expected['tax_percent'], $this->appliedTaxDataObject->getPercent()); $this->assertEquals($expected['real_amount'], $this->appliedTaxDataObject->getAmount()); $this->assertEquals($expected['real_base_amount'], $this->appliedTaxDataObject->getBaseAmount()); }
/** * 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); }