<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* CotationMultisite
*
* @ORM\Table(name="cotation_multisite")
* @ORM\Entity(repositoryClass="App\Repository\CotationMultisiteRepository")
*/
class CotationMultisite
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
*/
private $name;
/**
* @var bool|null
*
* @ORM\Column(name="electricity", type="boolean", nullable=true)
*/
private $electricity = false;
/**
* @var bool|null
*
* @ORM\Column(name="gas", type="boolean", nullable=true)
*/
private $gas = false;
/**
* @var string|null
*
* @ORM\Column(name="siret", type="string", length=255, nullable=true)
*/
private $siret;
/**
* @var string|null
*
* @ORM\Column(name="company_name", type="string", length=255, nullable=true)
*/
private $companyName;
/**
* @var string|null
*
* @ORM\Column(name="ape_code", type="string", length=255, nullable=true)
*/
private $apeCode;
/**
* @var string|null
*
* @ORM\Column(name="sector", type="string", length=255, nullable=true)
*/
private $sector;
/**
* @var string|null
*
* @ORM\Column(name="first_name", type="string", length=255, nullable=true)
*/
private $firstName;
/**
* @var string|null
*
* @ORM\Column(name="last_name", type="string", length=255, nullable=true)
*/
private $lastName;
/**
* @var string|null
*
* @ORM\Column(name="position", type="string", length=255, nullable=true)
*/
private $position;
/**
* @var string|null
*
* @ORM\Column(name="phone", type="string", length=255, nullable=true)
*/
private $phone;
/**
* @var string|null
*
* @ORM\Column(name="email", type="string", length=255, nullable=true)
*/
private $email;
/**
* @var int|null
*
* @ORM\Column(name="elipro_note", type="integer", nullable=true)
*/
private $eliproNote = 0;
/**
* @var \DateTime|null
*
* @ORM\Column(name="creation_date", type="datetime", nullable=true)
*/
private $creationDate;
/**
* @var \DateTime|null
*
* @ORM\Column(name="edit_date", type="datetime", nullable=true)
*/
private $editDate;
/**
* @var \DateTime|null
*
* @ORM\Column(name="appointment_date", type="datetime", nullable=true)
*/
private $appointmentDate;
/**
* @var string|null
*
* @ORM\Column(name="tenue_offre", type="string", length=255, nullable=true)
*/
private $tenueOffre;
/**
* @var string|null
*
* @ORM\Column(name="tarif_type", type="string", length=255, nullable=true)
*/
private $tarifType;
/**
* @var string|null
*
* @ORM\Column(name="desired_margin", type="string", length=255, nullable=true)
*/
private $desiredMargin;
/**
* @var string|null
*
* @ORM\Column(name="liasse_fiscale", type="string", length=255, nullable=true)
*/
private $liasseFiscale;
/**
* @var string|null
*
* @ORM\Column(name="sge_elec", type="string", length=255, nullable=true)
*/
private $sgeElec;
/**
* @var string|null
*
* @ORM\Column(name="omega_gas", type="string", length=255, nullable=true)
*/
private $omegaGas;
/**
* @var string|null
*
* @ORM\Column(name="old_invoice", type="string", length=255, nullable=true)
*/
private $oldInvoice;
/**
* @var string|null
*
* @ORM\Column(name="acd_file", type="string", length=255, nullable=true)
*/
private $acdFile;
/**
* @var \DateTime|null
*
* @ORM\Column(name="acd_sign_date", type="datetime", length=255, nullable=true)
*/
private $acdSignDate;
/**
* @var \DateTime|null
*
* @ORM\Column(name="pricing_sent_date", type="datetime", nullable=true)
*/
private $pricingSentDate;
/**
* @var Company
*
* @ORM\ManyToOne(targetEntity="Company")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="company_id", referencedColumnName="id")
* })
*/
private $company;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $user;
/**
* @var Manager
*
* @ORM\ManyToOne(targetEntity="Manager")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="manager_id", referencedColumnName="id")
* })
*/
private $manager;
/**
* @var CotationState
*
* @ORM\ManyToOne(targetEntity="CotationState")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="state_id", referencedColumnName="id")
* })
*/
private $state;
/**
* @var int|null
*
* @ORM\Column(name="etude_solution_elec", type="integer", nullable=false)
*/
private $etudeSolutionElec;
/**
* @var int|null
*
* @ORM\Column(name="etude_solution_gaz", type="integer", nullable=false)
*/
private $etudeSolutionGaz;
/**
* @var string|null
*
* @ORM\Column(name="etude_commentaire_elec", type="string", nullable=true)
*/
private $etudeCommentaireElec;
/**
* @var string|null
*
* @ORM\Column(name="etude_commentaire_gaz", type="string", nullable=true)
*/
private $etudeCommentaireGaz;
/**
* @ORM\OneToMany(targetEntity="Cotation", mappedBy="cotationMultisite", cascade={"persist", "remove"}, orphanRemoval=true)
*/
private $cotations;
public function __construct()
{
$this->cotations = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function setId(?int $id): void
{
$this->id = $id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): void
{
$this->name = $name;
}
public function getElectricity(): ?bool
{
return $this->electricity;
}
public function setElectricity(?bool $electricity): void
{
$this->electricity = $electricity;
}
public function getGas(): ?bool
{
return $this->gas;
}
public function setGas(?bool $gas): void
{
$this->gas = $gas;
}
public function getSiret(): ?string
{
return $this->siret;
}
public function setSiret(?string $siret): void
{
$this->siret = $siret;
}
public function getCompanyName(): ?string
{
return $this->companyName;
}
public function setCompanyName(?string $companyName): void
{
$this->companyName = $companyName;
}
public function getApeCode(): ?string
{
return $this->apeCode;
}
public function setApeCode(?string $apeCode): void
{
$this->apeCode = $apeCode;
}
public function getSector(): ?string
{
return $this->sector;
}
public function setSector(?string $sector): void
{
$this->sector = $sector;
}
public function getFirstName(): ?string
{
return $this->firstName;
}
public function setFirstName(?string $firstName): void
{
$this->firstName = $firstName;
}
public function getLastName(): ?string
{
return $this->lastName;
}
public function setLastName(?string $lastName): void
{
$this->lastName = $lastName;
}
public function getPosition(): ?string
{
return $this->position;
}
public function setPosition(?string $position): void
{
$this->position = $position;
}
public function getPhone(): ?string
{
return $this->phone;
}
public function setPhone(?string $phone): void
{
$this->phone = $phone;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(?string $email): void
{
$this->email = $email;
}
public function getEliproNote(): ?int
{
return $this->eliproNote;
}
public function setEliproNote(?int $eliproNote): void
{
$this->eliproNote = $eliproNote;
}
public function getCreationDate(): ?\DateTime
{
return $this->creationDate;
}
public function setCreationDate(?\DateTime $creationDate): void
{
$this->creationDate = $creationDate;
}
public function getEditDate(): ?\DateTime
{
return $this->editDate;
}
public function setEditDate(?\DateTime $editDate): void
{
$this->editDate = $editDate;
}
public function getAppointmentDate(): ?\DateTime
{
return $this->appointmentDate;
}
public function setAppointmentDate(?\DateTime $appointmentDate): void
{
$this->appointmentDate = $appointmentDate;
}
public function getTenueOffre(): ?string
{
return $this->tenueOffre;
}
public function setTenueOffre(?string $tenueOffre): void
{
$this->tenueOffre = $tenueOffre;
}
public function getTarifType(): ?string
{
return $this->tarifType;
}
public function setTarifType(?string $tarifType): void
{
$this->tarifType = $tarifType;
}
public function getDesiredMargin(): ?string
{
return $this->desiredMargin;
}
public function setDesiredMargin(?string $desiredMargin): void
{
$this->desiredMargin = $desiredMargin;
}
public function getLiasseFiscale(): ?string
{
return $this->liasseFiscale;
}
public function setLiasseFiscale(?string $liasseFiscale): void
{
$this->liasseFiscale = $liasseFiscale;
}
public function getSgeElec(): ?string
{
return $this->sgeElec;
}
public function setSgeElec(?string $sgeElec): void
{
$this->sgeElec = $sgeElec;
}
public function getOmegaGas(): ?string
{
return $this->omegaGas;
}
public function setOmegaGas(?string $omegaGas): void
{
$this->omegaGas = $omegaGas;
}
public function getOldInvoice(): ?string
{
return $this->oldInvoice;
}
public function setOldInvoice(?string $oldInvoice): void
{
$this->oldInvoice = $oldInvoice;
}
public function getAcdFile(): ?string
{
return $this->acdFile;
}
public function setAcdFile(?string $acdFile): void
{
$this->acdFile = $acdFile;
}
public function getAcdSignDate(): ?\DateTime
{
return $this->acdSignDate;
}
public function setAcdSignDate(?\DateTime $acdSignDate): void
{
$this->acdSignDate = $acdSignDate;
}
public function getPricingSentDate(): ?\DateTime
{
return $this->pricingSentDate;
}
public function setPricingSentDate(?\DateTime $pricingSentDate): void
{
$this->pricingSentDate = $pricingSentDate;
}
public function getCompany(): Company
{
return $this->company;
}
public function setCompany(Company $company): void
{
$this->company = $company;
}
public function getUser(): User
{
return $this->user;
}
public function setUser(User $user): void
{
$this->user = $user;
}
public function getManager(): Manager
{
return $this->manager;
}
public function setManager(Manager $manager): void
{
$this->manager = $manager;
}
public function getState(): CotationState
{
return $this->state;
}
public function setState(CotationState $state): void
{
$this->state = $state;
}
public function getEtudeSolutionElec(): ?int
{
return $this->etudeSolutionElec;
}
public function setEtudeSolutionElec(?int $etudeSolutionElec): void
{
$this->etudeSolutionElec = $etudeSolutionElec;
}
public function getEtudeSolutionGaz(): ?int
{
return $this->etudeSolutionGaz;
}
public function setEtudeSolutionGaz(?int $etudeSolutionGaz): void
{
$this->etudeSolutionGaz = $etudeSolutionGaz;
}
public function getEtudeCommentaireElec(): ?string
{
return $this->etudeCommentaireElec;
}
public function setEtudeCommentaireElec(?string $etudeCommentaireElec): void
{
$this->etudeCommentaireElec = $etudeCommentaireElec;
}
public function getEtudeCommentaireGaz(): ?string
{
return $this->etudeCommentaireGaz;
}
public function setEtudeCommentaireGaz(?string $etudeCommentaireGaz): void
{
$this->etudeCommentaireGaz = $etudeCommentaireGaz;
}
public function getCotations()
{
return $this->cotations;
}
public function addCotation(Cotation $cotation)
{
if (!$this->cotations->contains($cotation)) {
$this->cotations[] = $cotation;
$cotation->setCotationMultisite($this);
}
}
public function removeCotation(Cotation $cotation)
{
if ($this->cotations->removeElement($cotation)) {
$cotation->setCotationMultisite(null);
}
}
public function isAcdValid(): bool
{
if (!$this->getAcdFile()) {
return false;
}
$signDate = $this->getAcdSignDate();
if (!$signDate) {
// On prends arbitrairement la date de création de la cotation + 6 mois
$signDate = clone $this->getCreationDate();
$signDate->modify("+6 months");
$this->setAcdSignDate($signDate);
}
$expiredDate = clone $signDate;
// 10 mois moins 1 jour
$expiredDate->modify("+10 months");
$expiredDate->modify("-1 day");
return $expiredDate > new \DateTime('now');
}
}