<?php

namespace Lc\ShopBundle\Model;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Lc\ShopBundle\Services\Price;

trait ProductPropertyTrait
{
        use PriceTrait ;

        /**
         * @ORM\Column(type="float", nullable=true)
         */
        protected $buyingPriceByRefUnit;

        /**
         * @ORM\Column(type="float", nullable=true)
         */
        protected $priceByRefUnit;

        /**
         * @ORM\Column(type="float", nullable=true)
         */
        protected $quantity;

        /**
         * @ORM\Column(type="float", nullable=true)
         */
        protected $availableQuantity;

        /**
         * @ORM\Column(type="float", nullable=true)
         */
        protected $availableQuantityDefault;

        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        protected $propertyExpirationDate;




        public function getBuyingPriceByRefUnit(): ?float
        {
                return $this->buyingPriceByRefUnit;
        }

        public function setBuyingPriceByRefUnit(?float $buyingPriceByRefUnit): self
        {
                $this->buyingPriceByRefUnit = $buyingPriceByRefUnit;

                return $this;
        }

        public function getPriceByRefUnit(): ?float
        {
                return $this->priceByRefUnit;
        }

        public function getPriceByRefUnitInherited(): ?float
        {
                return $this->getPriceByRefUnit();
        }

        public function setPriceByRefUnit(?float $priceByRefUnit): self
        {
                $this->priceByRefUnit = $priceByRefUnit;

                return $this;
        }


        public function getQuantity(): ?float
        {
                return $this->quantity;
        }

        public function setQuantity(?float $quantity): self
        {
                $this->quantity = $quantity;

                return $this;
        }

        public function getQuantityInherited(): ?float
        {
                return $this->getQuantity() ;
        }

        public function getAvailableQuantity(): ?float
        {
                return $this->availableQuantity;
        }

        public function setAvailableQuantity(?float $availableQuantity): self
        {
                $this->availableQuantity = $availableQuantity;

                return $this;
        }

        public function getAvailableQuantityDefault(): ?float
        {
                return $this->availableQuantityDefault;
        }

        public function setAvailableQuantityDefault(?float $availableQuantityDefault): self
        {
                $this->availableQuantityDefault = $availableQuantityDefault;

                return $this;
        }

        public function getPropertyExpirationDate(): ?string
        {
                return $this->propertyExpirationDate;
        }

        public function setPropertyExpirationDate(?string $propertyExpirationDate): self
        {
                $this->propertyExpirationDate = $propertyExpirationDate;

                return $this;
        }

}
