<?php

namespace AppBundle\Entity\Billing;

use AppBundle\Entity\Product\EquipmentLoan;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use AppBundle\Entity\Traits\TimestampableEntity;
use AppBundle\Entity\Traits\CreatorUpdaterEntity;

/**
 * BillingIntangibleExcludeDate.
 * Indique les produits (BillingIntangible) déjà facturés
 */
#[ORM\Entity]
class BillingIntangibleExcludeDate
{
    use TimestampableEntity;
    use CreatorUpdaterEntity;
    /**
     * @var int
     */
    #[ORM\Column(type: 'integer')]
    #[ORM\Id]
    #[ORM\GeneratedValue(strategy: 'AUTO')]
    #[Groups(['billingintangibleexcludedate'])]
    private $id;
    /**
     * @var \DateTime
     */
    #[ORM\Column(type: 'date', nullable: false)]
    #[Assert\Date]
    #[Groups(['billingintangibleexcludedate'])]
    private $excludeDate;
    /**
     * @var AccessIntangible
     */
    #[ORM\ManyToOne(targetEntity: 'AccessIntangible', cascade: ['persist'], inversedBy: 'billingIntangibleExcludeDates')]
    #[Groups(['billingintangibleexcludedate'])]
    private $accessIntangible;
    /**
     * @var AccessFictionalIntangible
     */
    #[ORM\ManyToOne(targetEntity: 'AccessFictionalIntangible', cascade: ['persist'], inversedBy: 'billingIntangibleExcludeDates')]
    #[Groups(['billingintangibleexcludedate'])]
    private $accessFictionalIntangible;
    /**
     * @var EducationalProjectIntangible
     */
    #[ORM\ManyToOne(targetEntity: 'EducationalProjectIntangible', cascade: ['persist'], inversedBy: 'billingIntangibleExcludeDates')]
    #[Groups(['billingintangibleexcludedate'])]
    private $educationalProjectIntangible;
    /**
     * @var EquipmentLoan
     */
    #[ORM\ManyToOne(targetEntity: 'AppBundle\Entity\Product\EquipmentLoan', cascade: ['persist'], inversedBy: 'billingIntangibleExcludeDates')]
    #[Groups(['billingintangibleexcludedate'])]
    private $equipmentLoan;
    /**
     * @var Bill
     */
    #[ORM\ManyToOne(targetEntity: 'Bill', cascade: ['persist'], inversedBy: 'billingIntangibleExcludeDates')]
    #[Groups(['billingintangibleexcludedate'])]
    private $bill;
    public function __construct()
    {

    }
    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Sets id.
     *
     * @param int $id
     *
     * @return $this
     */
    public function setId($id)
    {
        $this->id = $id;

        return $this;
    }
    /**
     * Set excludeDate
     *
     * @param \DateTime $excludeDate
     *
     * @return BillingIntangibleExcludeDate
     */
    public function setExcludeDate($excludeDate)
    {
        $this->excludeDate = $excludeDate;

        return $this;
    }
    /**
     * Get excludeDate
     *
     * @return \DateTime
     */
    public function getExcludeDate()
    {
        return $this->excludeDate;
    }
    /**
     * Set accessIntangible
     *
     * @param \AppBundle\Entity\Billing\AccessIntangible $accessIntangible
     *
     * @return BillingIntangibleExcludeDate
     */
    public function setAccessIntangible(\AppBundle\Entity\Billing\AccessIntangible $accessIntangible = null)
    {
        $this->accessIntangible = $accessIntangible;

        return $this;
    }
    /**
     * Get accessIntangible
     *
     * @return \AppBundle\Entity\Billing\AccessIntangible
     */
    public function getAccessIntangible()
    {
        return $this->accessIntangible;
    }
    /**
     * Set bill
     *
     * @param \AppBundle\Entity\Billing\Bill $bill
     *
     * @return BillingIntangibleExcludeDate
     */
    public function setBill(\AppBundle\Entity\Billing\Bill $bill = null)
    {
        $this->bill = $bill;

        return $this;
    }
    /**
     * Get bill
     *
     * @return \AppBundle\Entity\Billing\Bill
     */
    public function getBill()
    {
        return $this->bill;
    }
    /**
     * Set accessFictionalIntangible
     *
     * @param \AppBundle\Entity\Billing\AccessFictionalIntangible $accessFictionalIntangible
     *
     * @return BillingIntangibleExcludeDate
     */
    public function setAccessFictionalIntangible(\AppBundle\Entity\Billing\AccessFictionalIntangible $accessFictionalIntangible = null)
    {
        $this->accessFictionalIntangible = $accessFictionalIntangible;

        return $this;
    }
    /**
     * Get accessFictionalIntangible
     *
     * @return \AppBundle\Entity\Billing\AccessFictionalIntangible
     */
    public function getAccessFictionalIntangible()
    {
        return $this->accessFictionalIntangible;
    }
    /**
     * Set educationalProjectIntangible
     *
     * @param \AppBundle\Entity\Billing\EducationalProjectIntangible $educationalProjectIntangible
     *
     * @return BillingIntangibleExcludeDate
     */
    public function setEducationalProjectIntangible(\AppBundle\Entity\Billing\EducationalProjectIntangible $educationalProjectIntangible = null)
    {
        $this->educationalProjectIntangible = $educationalProjectIntangible;

        return $this;
    }
    /**
     * Get educationalProjectIntangible
     *
     * @return \AppBundle\Entity\Billing\EducationalProjectIntangible
     */
    public function getEducationalProjectIntangible()
    {
        return $this->educationalProjectIntangible;
    }
    /**
     * Set equipmentLoan
     *
     * @param \AppBundle\Entity\Product\EquipmentLoan $equipmentLoan
     *
     * @return BillingIntangibleExcludeDate
     */
    public function setEquipmentLoan(\AppBundle\Entity\Product\EquipmentLoan $equipmentLoan = null)
    {
        $this->equipmentLoan = $equipmentLoan;

        return $this;
    }
    /**
     * Get equipmentLoan
     *
     * @return \AppBundle\Entity\Product\EquipmentLoan
     */
    public function getEquipmentLoan()
    {
        return $this->equipmentLoan;
    }
}
