|
- <?php
-
- namespace Lc\ShopBundle\Model ;
-
- use Lc\ShopBundle\Context\UnitInterface;
-
- trait PriceTrait
- {
-
-
- protected $price;
-
-
-
- protected $unit;
-
-
-
- protected $taxRate;
-
- public function getPrice(): ?float
- {
- return $this->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 ;
- }
- }
|