price; } public function getPriceInherited(): ?float { return $this->getPrice() ; } public function getUnitInherited(): ?Unit { return $this->getUnit() ; } public function getTaxRateInherited(): ?TaxRate { return $this->getTaxRate() ; } public function getPriceWithTax(): ?float { return $this->calculatePriceWithTax($this->getPriceInherited(), $this->getTaxRateInherited()->getValue()) ; } public function getPriceByUnitRef(): ?float { return ($this->getPriceInherited() * $this->getUnitInherited()->getCoefficient()) / $this->getQuantityInherited() ; } public function getPriceByUnitRefWithTax(): ?float { return $this->calculatePriceWithTax($this->getPriceByUnitRef(), $this->getTaxRateInherited()->getValue()) ; } public function setPrice(float $price): self { $this->price = $price; return $this; } public function getUnit(): ?Unit { return $this->unit; } public function setUnit(Unit $unit): self { $this->unit = $unit; return $this; } public function getTaxRate(): ?TaxRate { return $this->taxRate; } public function setTaxRate(?TaxRate $taxRate): self { $this->taxRate = $taxRate; return $this; } private function calculatePriceWithTax($priceWithoutTax, $taxRateValue): ?float { $price = floatval($priceWithoutTax) * ($taxRateValue/100 + 1) ; $price = round(( ($price * 100)) / 100, 2) ; return $price ; } }