<?php

namespace Lc\ShopBundle\Model;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\MappedSuperclass()
 */
abstract class CartProduct extends AbstractEntity
{

        /**
         * @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\CartInterface", inversedBy="cartProducts")
         * @ORM\JoinColumn(nullable=false)
         */
        protected $cart;

        /**
         * @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\ProductInterface")
         * @ORM\JoinColumn(nullable=false)
         */
        protected $product;

        /**
         * @ORM\ManyToOne(targetEntity="Lc\ShopBundle\Context\TaxRateInterface")
         * @ORM\JoinColumn(nullable=false)
         */
        protected $taxRate;

        /**
         * @ORM\Column(type="float")
         */
        protected $price;

        /**
         * @ORM\Column(type="string", length=31)
         */
        protected $unit;

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

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


        public function getCart(): ?Cart
        {
                return $this->cart;
        }

        public function setCart(?Cart $cart): self
        {
                $this->cart = $cart;

                return $this;
        }

        public function getProduct(): ?Product
        {
                return $this->product;
        }

        public function setProduct(?Product $product): self
        {
                $this->product = $product;

                return $this;
        }

        public function getTaxRate(): ?TaxRate
        {
                return $this->taxRate;
        }

        public function setTaxRate(?TaxRate $taxRate): self
        {
                $this->taxRate = $taxRate;

                return $this;
        }

        public function getPrice(): ?float
        {
                return $this->price;
        }

        public function setPrice(float $price): self
        {
                $this->price = $price;

                return $this;
        }

        public function getUnit(): ?string
        {
                return $this->unit;
        }

        public function setUnit(string $unit): self
        {
                $this->unit = $unit;

                return $this;
        }

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

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

                return $this;
        }

        public function getTitle(): ?string
        {
                return $this->title;
        }

        public function setTitle(string $title): self
        {
                $this->title = $title;

                return $this;
        }
}