/** * @throws \InvalidArgumentException * * @return Money */ private function priceFromRelative() : Money { if ($this->offer->isPriced()) { // Relative price offer (i.e. a set discount). return $this->offer->price->negative(); } // Relative percentage offer (i.e. a percentage discount). return $this->originalPrice()->multiply($this->offer->percentage / 100)->negative(); }