<?php
namespace App\Entity\Partner;
use App\Annotation\__Partner\CreatePartnerFormValidator;
use App\Annotation\__Partner\PartnerWebsiteManagementFormValidator;
use App\Annotation\__Partner\UpdatePartnerFormValidator;
use App\Entity\__Accounting\PartnerAllowance\Allowance;
use App\Entity\__Accounting\PartnerAllowance\PartnerAllowance;
use App\Entity\__Accounting\PartnerParticipation\Participation;
use App\Entity\__Accounting\PartnerParticipation\PartnerParticipation;
use App\Entity\__Accounting\PartnerTemplate\PartnerTemplate;
use App\Entity\ApplicationFilter;
use App\Entity\Booking\BookingPartnerTurnover;
use App\Entity\Booking\ProspectRequest;
use App\Entity\Booking\Quote;
use App\Entity\Booking\QuoteParticipant;
use App\Entity\Cruise\Cruise\CruiseTag;
use App\Entity\Cruise\Cruise\CruiseTagAssociationHistory;
use App\Entity\Discount\AttributedDiscount;
use App\Entity\Selling\SellingSegment;
use Crea\ToolsBundle\Entity\Geographic\Address;
use Crea\ToolsBundle\Entity\LifecycleTrait;
use Croisiland\CommonBundle\Model\AbstractPartner;
use DateTimeInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass="App\Repository\Partner\PartnerRepository")
* @UniqueEntity(
* fields={"name"},
* errorPath="name",
* message="partner.name.unique_constraint",
* ignoreNull=true,
* )
* @PartnerWebsiteManagementFormValidator(groups={"partner_website_management_form_validator"})
* @CreatePartnerFormValidator(groups={"create_partner_form_validator"})
* @UpdatePartnerFormValidator(groups={"update_partner_form_validator"})
*/
class Partner extends AbstractPartner
{
use LifeCycleTrait;
/**
* @var Collection|PartnerByContact[]
*
* @ORM\OneToMany(targetEntity=PartnerByContact::class, mappedBy="partner")
*/
private $partnerByContacts;
/**
* @var Collection|PartnerByContactHistory[]
*
* @ORM\OneToMany(targetEntity=PartnerByContactHistory::class, mappedBy="partner")
*/
private $partnerByContactHistories;
/**
* @ORM\OneToOne(targetEntity=Address::class, cascade={"all"}, orphanRemoval=true)
*/
private ?Address $address = null;
/**
* @var Collection|ContactPartner[]
*
* @ORM\OneToMany(targetEntity=ContactPartner::class, mappedBy="partner", cascade={"persist", "remove"})
*/
private $contactPartners;
/**
* @var Collection|PartnerCompanyDiscount[]
*
* @ORM\OneToMany(targetEntity=PartnerCompanyDiscount::class, mappedBy="partner")
* @ORM\OrderBy({"company" = "ASC", "cabinType" = "ASC"})
*/
private $partnerCompanyDiscounts;
/**
* @var Collection|PartnerFollowUp[]
*
* @ORM\OneToMany(targetEntity=PartnerFollowUp::class, mappedBy="partner")
*/
private $partnerFollowUps;
/**
* @var Collection|Quote[]
*
* @ORM\OneToMany(targetEntity=Quote::class, mappedBy="partner")
*/
private $quotes;
/**
* @var Collection|QuoteParticipant[]
*
* @ORM\OneToMany(targetEntity=QuoteParticipant::class, mappedBy="partner")
*/
private $quoteParticipants;
/**
* @var Collection|AttributedDiscount[]
*
* @ORM\OneToMany(targetEntity=AttributedDiscount::class, mappedBy="partner", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $attributedDiscounts;
/**
* @var Collection|ApplicationFilter[]
*
* @ORM\ManyToMany(targetEntity=ApplicationFilter::class, mappedBy="partners")
*/
private $applicationFilters;
/**
* @ORM\ManyToOne(targetEntity=SellingSegment::class, inversedBy="partners")
* @ORM\JoinColumn(nullable=true)
*/
private ?SellingSegment $sellingSegment = null;
/**
* @var Collection|CruiseTag[]
*
* @ORM\ManyToMany(targetEntity=CruiseTag::class, mappedBy="partners")
*/
private Collection $cruiseTags;
/**
* @var Collection|CruiseTagAssociationHistory[]
*
* @ORM\OneToMany(targetEntity=CruiseTagAssociationHistory::class, mappedBy="partner")
*/
private Collection $cruiseTagAssociationHistories;
/**
* @var Collection|ProspectRequest[]
*
* @ORM\OneToMany(targetEntity=ProspectRequest::class, mappedBy="partner")
*/
private Collection $prospectRequests;
/**
* @ORM\Column(type="boolean", options={"default":0})
*/
protected bool $showLogo = false;
/**
* @ORM\Column(type="boolean", options={"default":0})
*/
protected bool $payer = false;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
protected ?DateTimeInterface $closingDate = null;
/**
* @ORM\Column(type="text", nullable=true)
*/
protected ?string $closingDateNote = null;
/**
* @ORM\Column(type="text", nullable=true)
*/
protected ?string $comment = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected ?string $partnerSiteUrl = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected ?string $partnerSiteLogin = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected ?string $partnerSiteComment = null;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
protected ?DateTimeInterface $deactivationDate = null;
/**
* @ORM\Column(type="integer", nullable=true)
*/
protected ?int $currentSize = null;
/**
* @ORM\Column(type="boolean", options={"default":0})
*/
protected bool $hasContacts = false;
/********************************** Accounting ********************************************************************/
/**
* @var Collection|Allowance[]
*
* @ORM\OneToMany(targetEntity=Allowance::class, mappedBy="partner", cascade={"remove", "persist"}, orphanRemoval=true)
*/
private $allowances;
/**
* @var Collection|PartnerAllowance[]
*
* @ORM\OneToMany(targetEntity=PartnerAllowance::class, mappedBy="partner", cascade={"remove", "persist"}, orphanRemoval=true)
*/
private $partnerAllowances;
/**
* @var Collection|Participation[]
*
* @ORM\OneToMany(targetEntity=Participation::class, mappedBy="partner", cascade={"remove", "persist"}, orphanRemoval=true)
*/
private $participations;
/**
* @var Collection|PartnerParticipation[]
*
* @ORM\OneToMany(targetEntity=PartnerParticipation::class, mappedBy="partner", cascade={"remove", "persist"}, orphanRemoval=true)
*/
private $partnerParticipations;
/**
* @var Collection|BookingPartnerTurnover[]
*
* @ORM\OneToMany(targetEntity=BookingPartnerTurnover::class, mappedBy="partner", cascade={"remove", "persist"}, orphanRemoval=true)
*/
private $bookingPartnerTurnovers;
/**
* @ORM\Column(type="float", nullable=true)
*/
protected ?float $currentYearTurnover = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
protected ?float $previousYearTurnover = null;
/**
* @var Collection|PartnerTemplate[]
*
* @ORM\OneToMany(targetEntity=PartnerTemplate::class, mappedBy="partner", cascade={"remove", "persist"}, orphanRemoval=true)
*/
private $partnerTemplates;
public function __construct()
{
parent::__construct();
$this->partnerByContacts = new ArrayCollection();
$this->partnerByContactHistories = new ArrayCollection();
$this->contactPartners = new ArrayCollection();
$this->partnerCompanyDiscounts = new ArrayCollection();
$this->partnerFollowUps = new ArrayCollection();
$this->quotes = new ArrayCollection();
$this->quoteParticipants = new ArrayCollection();
$this->attributedDiscounts = new ArrayCollection();
$this->applicationFilters = new ArrayCollection();
$this->cruiseTags = new ArrayCollection();
$this->cruiseTagAssociationHistories = new ArrayCollection();
$this->prospectRequests = new ArrayCollection();
$this->allowances = new ArrayCollection();
$this->partnerAllowances = new ArrayCollection();
$this->participations = new ArrayCollection();
$this->partnerParticipations = new ArrayCollection();
$this->bookingPartnerTurnovers = new ArrayCollection();
$this->partnerTemplates = new ArrayCollection();
}
public function setId(int $id): self
{
$this->id = $id;
return $this;
}
/**
* @return Collection|PartnerByContact[]
*/
public function getPartnerByContacts(): Collection
{
return $this->partnerByContacts;
}
public function addPartnerByContact(PartnerByContact $partnerByContact): self
{
if (!$this->partnerByContacts->contains($partnerByContact)) {
$this->partnerByContacts[] = $partnerByContact;
$partnerByContact->setPartner($this);
}
return $this;
}
/**
* @return PartnerByContactHistory[]|Collection
*/
public function getPartnerByContactHistories()
{
return $this->partnerByContactHistories;
}
/**
* @param PartnerByContactHistory[]|Collection $partnerByContactHistories
* @return Partner
*/
public function setPartnerByContactHistories($partnerByContactHistories): self
{
$this->partnerByContactHistories = $partnerByContactHistories;
return $this;
}
/**
* @param PartnerByContactHistory $partnerByContactHistory
* @return Partner
*/
public function addPartnerByContactHistory(PartnerByContactHistory $partnerByContactHistory): self
{
if (!$this->partnerByContactHistories->contains($partnerByContactHistory)) {
$this->partnerByContactHistories[] = $partnerByContactHistory;
$partnerByContactHistory->setPartner($this);
}
return $this;
}
public function getAddress(): ?Address
{
return $this->address;
}
public function setAddress(?Address $address): self
{
$this->address = $address;
return $this;
}
/**
* @return Collection|ContactPartner[]
*/
public function getContactPartners(): Collection
{
return $this->contactPartners;
}
public function addContactPartner(ContactPartner $contactPartner): self
{
if (!$this->contactPartners->contains($contactPartner)) {
$this->contactPartners[] = $contactPartner;
$contactPartner->setPartner($this);
}
return $this;
}
public function removeContactPartner(ContactPartner $contactPartner): self
{
if ($this->contactPartners->removeElement($contactPartner)) {
// set the owning side to null (unless already changed)
if ($contactPartner->getPartner() === $this) {
$contactPartner->setPartner(null);
}
}
return $this;
}
/**
* @return Collection|PartnerCompanyDiscount[]
*/
public function getPartnerCompanyDiscounts(): Collection
{
return $this->partnerCompanyDiscounts;
}
public function addPartnerCompanyDiscount(PartnerCompanyDiscount $partnerCompanyDiscount): self
{
if (!$this->partnerCompanyDiscounts->contains($partnerCompanyDiscount)) {
$this->partnerCompanyDiscounts[] = $partnerCompanyDiscount;
$partnerCompanyDiscount->setPartner($this);
}
return $this;
}
public function removePartnerCompanyDiscount(PartnerCompanyDiscount $partnerCompanyDiscount): self
{
if ($this->partnerCompanyDiscounts->removeElement($partnerCompanyDiscount)) {
// set the owning side to null (unless already changed)
if ($partnerCompanyDiscount->getPartner() === $this) {
$partnerCompanyDiscount->setPartner(null);
}
}
return $this;
}
/**
* @return Collection|PartnerFollowUp[]
*/
public function getPartnerFollowUps(): Collection
{
return $this->partnerFollowUps;
}
public function addPartnerFollowUp(PartnerFollowUp $partnerFollowUp): self
{
if (!$this->partnerFollowUps->contains($partnerFollowUp)) {
$this->partnerFollowUps[] = $partnerFollowUp;
$partnerFollowUp->setPartner($this);
}
return $this;
}
public function removePartnerFollowUp(PartnerFollowUp $partnerFollowUp): self
{
if ($this->partnerFollowUps->removeElement($partnerFollowUp)) {
// set the owning side to null (unless already changed)
if ($partnerFollowUp->getPartner() === $this) {
$partnerFollowUp->setPartner(null);
}
}
return $this;
}
public function getTurnover(): float
{
$turnover = 0;
foreach ($this->getPartnerByContacts() as $partnerByContact) {
foreach ($partnerByContact->getContact()->getParticipants() as $participant) {
if ($participant->getBooking() && $participant->getBooking()->getContract()) {
$turnover += (float) $participant->getBooking()->getContract()->getInvoicesWithoutDiscountsAmount();
}
}
}
return $turnover;
}
public function getBookingCount(): int
{
$count = 0;
foreach ($this->getPartnerByContacts() as $partnerByContact) {
$count += count($partnerByContact->getContact()->getParticipants());
}
return $count;
}
/**
* @return Collection|Quote[]
*/
public function getQuotes(): Collection
{
return $this->quotes;
}
public function addQuote(Quote $quote): self
{
if (!$this->quotes->contains($quote)) {
$this->quotes[] = $quote;
$quote->setPartner($this);
}
return $this;
}
public function removeQuote(Quote $quote): self
{
if ($this->quotes->removeElement($quote)) {
// set the owning side to null (unless already changed)
if ($quote->getPartner() === $this) {
$quote->setPartner(null);
}
}
return $this;
}
public function getQuoteParticipants(): Collection
{
return $this->quoteParticipants;
}
public function addQuoteParticipant(QuoteParticipant $quoteParticipant): self
{
if (!$this->quoteParticipants->contains($quoteParticipant)) {
$this->quoteParticipants[] = $quoteParticipant;
$quoteParticipant->setPartner($this);
}
return $this;
}
public function removeQuoteParticipant(QuoteParticipant $quoteParticipant): self
{
if ($this->quoteParticipants->removeElement($quoteParticipant)) {
// set the owning side to null (unless already changed)
if ($quoteParticipant->getPartner() === $this) {
$quoteParticipant->setPartner(null);
}
}
return $this;
}
public function getAttributedDiscounts(): Collection
{
return $this->attributedDiscounts;
}
public function addAttributedDiscount(AttributedDiscount $attributedDiscount): self
{
if (!$this->attributedDiscounts->contains($attributedDiscount)) {
$this->attributedDiscounts[] = $attributedDiscount;
$attributedDiscount->setPartner($this);
}
return $this;
}
public function removeAttributedDiscount(AttributedDiscount $attributedDiscount): self
{
if ($this->attributedDiscounts->removeElement($attributedDiscount)) {
// set the owning side to null (unless already changed)
if ($attributedDiscount->getPartner() === $this) {
$attributedDiscount->setPartner(null);
}
}
return $this;
}
/**
* @return Collection|ApplicationFilter[]
*/
public function getApplicationFilters(): Collection
{
return $this->applicationFilters;
}
public function addApplicationFilter(ApplicationFilter $applicationFilter): self
{
if (!$this->applicationFilters->contains($applicationFilter)) {
$this->applicationFilters[] = $applicationFilter;
}
return $this;
}
public function removeApplicationFilter(ApplicationFilter $applicationFilter): self
{
$this->applicationFilters->removeElement($applicationFilter);
return $this;
}
public function getSellingSegment(): ?SellingSegment
{
return $this->sellingSegment;
}
public function setSellingSegment(?SellingSegment $sellingSegment): self
{
$this->sellingSegment = $sellingSegment;
return $this;
}
public function getCruiseTags(): Collection
{
return $this->cruiseTags;
}
public function setCruiseTags(Collection $cruiseTags): self
{
$this->cruiseTags = $cruiseTags;
return $this;
}
/**
* @param CruiseTag $cruiseTag
* @return Partner
*/
public function addCruiseTag(CruiseTag $cruiseTag): self
{
if (!$this->cruiseTags->contains($cruiseTag)) {
$this->cruiseTags[] = $cruiseTag;
}
return $this;
}
/**
* @param CruiseTag $cruiseTag
* @return Partner
*/
public function removeCruiseTag(CruiseTag $cruiseTag): self
{
$this->cruiseTags->removeElement($cruiseTag);
return $this;
}
public function getCruiseTagAssociationHistories(): Collection
{
return $this->cruiseTagAssociationHistories;
}
public function setCruiseTagAssociationHistories(Collection $cruiseTagAssociationHistories): self
{
$this->cruiseTagAssociationHistories = $cruiseTagAssociationHistories;
return $this;
}
/**
* @param CruiseTagAssociationHistory $cruiseTagAssociationHistory
* @return Partner
*/
public function addCruiseTagAssociationHistory(CruiseTagAssociationHistory $cruiseTagAssociationHistory): self
{
if (!$this->cruiseTagAssociationHistories->contains($cruiseTagAssociationHistory)) {
$this->cruiseTagAssociationHistories[] = $cruiseTagAssociationHistory;
$cruiseTagAssociationHistory->setPartner($this);
}
return $this;
}
/**
* @param CruiseTagAssociationHistory $cruiseTagAssociationHistory
* @return Partner
*/
public function removeCruiseTagAssociationHistory(CruiseTagAssociationHistory $cruiseTagAssociationHistory): self
{
if ($this->cruiseTagAssociationHistories->removeElement($cruiseTagAssociationHistory)) {
if ($cruiseTagAssociationHistory->getPartner() === $this) {
$cruiseTagAssociationHistory->setPartner(null);
}
}
return $this;
}
public function getProspectRequests(): Collection
{
return $this->prospectRequests;
}
public function setProspectRequests(Collection $prospectRequests): self
{
$this->prospectRequests = $prospectRequests;
return $this;
}
/**
* @param ProspectRequest $prospectRequest
* @return Partner
*/
public function addProspectRequest(ProspectRequest $prospectRequest): self
{
if (!$this->prospectRequests->contains($prospectRequest)) {
$this->prospectRequests[] = $prospectRequest;
$prospectRequest->setPartner($this);
}
return $this;
}
/**
* @param ProspectRequest $prospectRequest
* @return Partner
*/
public function removeProspectRequest(ProspectRequest $prospectRequest): self
{
if ($this->prospectRequests->removeElement($prospectRequest)) {
if ($prospectRequest->getPartner() === $this) {
$prospectRequest->setPartner(null);
}
}
return $this;
}
/**
* @return bool
*/
public function isShowLogo(): bool
{
return $this->showLogo;
}
/**
* @param bool $showLogo
* @return Partner
*/
public function setShowLogo(bool $showLogo): Partner
{
$this->showLogo = $showLogo;
return $this;
}
/**
* @return bool
*/
public function isPayer(): bool
{
return $this->payer;
}
/**
* @param bool $payer
* @return Partner
*/
public function setPayer(bool $payer): Partner
{
$this->payer = $payer;
return $this;
}
/**
* @return DateTimeInterface|null
*/
public function getClosingDate(): ?DateTimeInterface
{
return $this->closingDate;
}
/**
* @param DateTimeInterface|null $closingDate
* @return Partner
*/
public function setClosingDate(?DateTimeInterface $closingDate): Partner
{
$this->closingDate = $closingDate;
return $this;
}
/**
* @return string|null
*/
public function getClosingDateNote(): ?string
{
return $this->closingDateNote;
}
/**
* @param string|null $closingDateNote
* @return Partner
*/
public function setClosingDateNote(?string $closingDateNote): Partner
{
$this->closingDateNote = $closingDateNote;
return $this;
}
/**
* @return string|null
*/
public function getComment(): ?string
{
return $this->comment;
}
/**
* @param string|null $comment
* @return Partner
*/
public function setComment(?string $comment): Partner
{
$this->comment = $comment;
return $this;
}
/**
* @return string|null
*/
public function getPartnerSiteUrl(): ?string
{
return $this->partnerSiteUrl;
}
/**
* @param string|null $partnerSiteUrl
* @return Partner
*/
public function setPartnerSiteUrl(?string $partnerSiteUrl): Partner
{
$this->partnerSiteUrl = $partnerSiteUrl;
return $this;
}
/**
* @return string|null
*/
public function getPartnerSiteLogin(): ?string
{
return $this->partnerSiteLogin;
}
/**
* @param string|null $partnerSiteLogin
* @return Partner
*/
public function setPartnerSiteLogin(?string $partnerSiteLogin): Partner
{
$this->partnerSiteLogin = $partnerSiteLogin;
return $this;
}
/**
* @return string|null
*/
public function getPartnerSiteComment(): ?string
{
return $this->partnerSiteComment;
}
/**
* @param string|null $partnerSiteComment
* @return Partner
*/
public function setPartnerSiteComment(?string $partnerSiteComment): Partner
{
$this->partnerSiteComment = $partnerSiteComment;
return $this;
}
/**
* @return DateTimeInterface|null
*/
public function getDeactivationDate(): ?DateTimeInterface
{
return $this->deactivationDate;
}
/**
* @param DateTimeInterface|null $deactivationDate
* @return Partner
*/
public function setDeactivationDate(?DateTimeInterface $deactivationDate): Partner
{
$this->deactivationDate = $deactivationDate;
return $this;
}
/**
* @return int|null
*/
public function getCurrentSize(): ?int
{
return $this->currentSize;
}
/**
* @param int|null $currentSize
* @return Partner
*/
public function setCurrentSize(?int $currentSize): Partner
{
$this->currentSize = $currentSize;
return $this;
}
/**
* @return bool
*/
public function hasContacts(): bool
{
return $this->hasContacts;
}
/**
* @param bool $hasContacts
* @return Partner
*/
public function setHasContacts(bool $hasContacts): Partner
{
$this->hasContacts = $hasContacts;
return $this;
}
/**
* @return Allowance[]|Collection
*/
public function getAllowances()
{
return $this->allowances;
}
/**
* @param Allowance[]|Collection $allowances
* @return Partner
*/
public function setAllowances($allowances): self
{
$this->allowances = $allowances;
return $this;
}
/**
* @param Allowance $allowance
* @return Partner
*/
public function addAllowance(Allowance $allowance): self
{
if (!$this->allowances->contains($allowance)) {
$this->allowances[] = $allowance;
$allowance->setPartner($this);
}
return $this;
}
/**
* @param Allowance $allowance
* @return Partner
*/
public function removeAllowance(Allowance $allowance): self
{
if ($this->allowances->removeElement($allowance)) {
if ($allowance->getPartner() === $this) {
$allowance->setPartner(null);
}
}
return $this;
}
/**
* @return PartnerAllowance[]|Collection
*/
public function getPartnerAllowances()
{
return $this->partnerAllowances;
}
/**
* @param PartnerAllowance[]|Collection $partnerAllowances
* @return Partner
*/
public function setPartnerAllowances($partnerAllowances): self
{
$this->partnerAllowances = $partnerAllowances;
return $this;
}
/**
* @param PartnerAllowance $partnerAllowance
* @return Partner
*/
public function addPartnerAllowance(PartnerAllowance $partnerAllowance): self
{
if (!$this->partnerAllowances->contains($partnerAllowance)) {
$this->partnerAllowances->add($partnerAllowance);
$partnerAllowance->setPartner($this);
}
return $this;
}
/**
* @param PartnerAllowance $partnerAllowance
* @return Partner
*/
public function removePartnerAllowance(PartnerAllowance $partnerAllowance): self
{
$this->partnerAllowances->removeElement($partnerAllowance);
return $this;
}
/**
* @return Participation[]|Collection
*/
public function getParticipations()
{
return $this->participations;
}
/**
* @param Participation[]|Collection $participations
* @return Partner
*/
public function setParticipations($participations): self
{
$this->participations = $participations;
return $this;
}
/**
* @param Participation $participation
* @return Partner
*/
public function addParticipation(Participation $participation): self
{
if (!$this->participations->contains($participation)) {
$this->participations->add($participation);
$participation->setPartner($this);
}
return $this;
}
/**
* @param Participation $participation
* @return Partner
*/
public function removeParticipation(Participation $participation): self
{
if ($this->participations->removeElement($participation)) {
if ($participation->getPartner() === $this) {
$participation->setPartner(null);
}
}
return $this;
}
/**
* @return PartnerParticipation[]|Collection
*/
public function getPartnerParticipations()
{
return $this->partnerParticipations;
}
/**
* @param PartnerParticipation[]|Collection $partnerParticipations
* @return Partner
*/
public function setPartnerParticipations($partnerParticipations): self
{
$this->partnerParticipations = $partnerParticipations;
return $this;
}
/**
* @param PartnerParticipation $partnerParticipation
* @return Partner
*/
public function addPartnerParticipation(PartnerParticipation $partnerParticipation): self
{
if (!$this->partnerParticipations->contains($partnerParticipation)) {
$this->partnerParticipations[] = $partnerParticipation;
$partnerParticipation->setPartner($this);
}
return $this;
}
/**
* @param PartnerParticipation $partnerParticipation
* @return Partner
*/
public function removePartnerParticipation(PartnerParticipation $partnerParticipation): self
{
$this->partnerParticipations->removeElement($partnerParticipation);
return $this;
}
/**
* @return BookingPartnerTurnover[]|Collection
*/
public function getBookingPartnerTurnovers()
{
return $this->bookingPartnerTurnovers;
}
/**
* @param BookingPartnerTurnover[]|Collection $bookingPartnerTurnovers
* @return Partner
*/
public function setBookingPartnerTurnovers($bookingPartnerTurnovers): self
{
$this->bookingPartnerTurnovers = $bookingPartnerTurnovers;
return $this;
}
/**
* @param BookingPartnerTurnover $bookingPartnerTurnover
* @return Partner
*/
public function addBookingPartnerTurnover(BookingPartnerTurnover $bookingPartnerTurnover): self
{
if (!$this->bookingPartnerTurnovers->contains($bookingPartnerTurnover)) {
$this->bookingPartnerTurnovers[] = $bookingPartnerTurnover;
$bookingPartnerTurnover->setPartner($this);
}
return $this;
}
/**
* @param BookingPartnerTurnover $bookingPartnerTurnover
* @return Partner
*/
public function removeBookingPartnerTurnover(BookingPartnerTurnover $bookingPartnerTurnover): self
{
if ($this->bookingPartnerTurnovers->removeElement($bookingPartnerTurnover)) {
if ($bookingPartnerTurnover->getPartner() === $this) {
$bookingPartnerTurnover->setPartner(null);
}
}
return $this;
}
/**
* @return float|null
*/
public function getCurrentYearTurnover(): ?float
{
return $this->currentYearTurnover;
}
/**
* @param float|null $currentYearTurnover
* @return Partner
*/
public function setCurrentYearTurnover(?float $currentYearTurnover): Partner
{
$this->currentYearTurnover = $currentYearTurnover;
return $this;
}
/**
* @return float|null
*/
public function getPreviousYearTurnover(): ?float
{
return $this->previousYearTurnover;
}
/**
* @param float|null $previousYearTurnover
* @return Partner
*/
public function setPreviousYearTurnover(?float $previousYearTurnover): Partner
{
$this->previousYearTurnover = $previousYearTurnover;
return $this;
}
/**
* @return PartnerTemplate[]|Collection
*/
public function getPartnerTemplates()
{
return $this->partnerTemplates;
}
/**
* @param PartnerTemplate[]|Collection $partnerTemplates
* @return Partner
*/
public function setPartnerTemplates($partnerTemplates): self
{
$this->partnerTemplates = $partnerTemplates;
return $this;
}
/**
* @param PartnerTemplate $partnerTemplate
* @return Partner
*/
public function addPartnerTemplate(PartnerTemplate $partnerTemplate): self
{
if (!$this->partnerTemplates->contains($partnerTemplate)) {
$this->partnerTemplates[] = $partnerTemplate;
$partnerTemplate->setPartner($this);
}
return $this;
}
/**
* @param PartnerTemplate $partnerTemplate
* @return Partner
*/
public function removePartnerTemplate(PartnerTemplate $partnerTemplate): self
{
if ($this->partnerTemplates->removeElement($partnerTemplate)) {
if ($partnerTemplate->getPartner() === $this) {
$partnerTemplate->setPartner(null);
}
}
return $this;
}
}