<?php
namespace App\Entity\Engagement;
use App\Entity\DocUpload;
use App\Repository\EngagementVersionRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Annotation\CustomAnnotation;
/**
* @ORM\Entity(repositoryClass=EngagementVersionRepository::class)
*/
class EngagementVersion
{
const CAT_Prospection = 1;
const CAT_Montage_Administratif = 2;
const CAT_Developpement = 3;
const CAT_Construction = 4;
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="EngagementProjet", cascade={"persist"}, inversedBy="engagementVersion")
* @ORM\JoinColumn(name="engagement_projet_id", referencedColumnName="id",nullable=true)
*/
private $engagementProjet;
/**
* @ORM\OneToMany(targetEntity="EngagementBudget",mappedBy="engagementVersion", cascade={"persist"})
*/
private $engagementBudget;
/**
* @ORM\ManyToOne(targetEntity="\App\Entity\DocUpload", cascade={"persist"})
* @ORM\JoinColumn(name="file_budget_id", referencedColumnName="id",nullable=true,onDelete="SET NULL")
* @CustomAnnotation("File budget")
*/
private $fileBudget;
/**
* @ORM\ManyToOne(targetEntity="\App\Entity\DocUpload", cascade={"persist"})
* @ORM\JoinColumn(name="file_business_plan_id", referencedColumnName="id",nullable=true,onDelete="SET NULL")
* @CustomAnnotation("Business plan")
*/
private $fileBusinessPlan;
/**
* Plusieurs versions peuvent référencer le même jalon (liste partagée) → ManyToOne.
* @ORM\ManyToOne(targetEntity="EngagementJalon", cascade={"persist"})
* @ORM\JoinColumn(name="engagement_jalon_id", referencedColumnName="id",nullable=true)
*/
private $engagementJalon;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("Prospection Montant")
*/
private $prospectionMontant;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("Montage administratif Montant")
*/
private $montageAdministratifMontant;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("Développement Montant")
*/
private $developpementMontant;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("Construction Montant")
*/
private $constructionMontant;
/**
* Ratios financiers (dernier tableau de la Fiche transfert).
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("EBE/CAPEX")
*/
private $ebeCapex;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("TRI Equity")
*/
private $equity;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("Dette")
*/
private $dette;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $comment;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $createdAt;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $token;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isVersion;
public function __construct()
{
$this->createdAt = new \DateTime();
$this->token = md5(uniqid());
$this->engagementBudget = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getProspectionMontant(): ?float
{
return $this->prospectionMontant;
}
public function setProspectionMontant(?float $prospectionMontant): self
{
$this->prospectionMontant = $prospectionMontant;
return $this;
}
public function getMontageAdministratifMontant(): ?float
{
return $this->montageAdministratifMontant;
}
public function setMontageAdministratifMontant(?float $montageAdministratifMontant): self
{
$this->montageAdministratifMontant = $montageAdministratifMontant;
return $this;
}
public function getDeveloppementMontant(): ?float
{
return $this->developpementMontant;
}
public function setDeveloppementMontant(?float $developpementMontant): self
{
$this->developpementMontant = $developpementMontant;
return $this;
}
public function getConstructionMontant(): ?float
{
return $this->constructionMontant;
}
public function setConstructionMontant(?float $constructionMontant): self
{
$this->constructionMontant = $constructionMontant;
return $this;
}
public function getEbeCapex(): ?float
{
return $this->ebeCapex;
}
public function setEbeCapex(?float $ebeCapex): self
{
$this->ebeCapex = $ebeCapex;
return $this;
}
public function getEquity(): ?float
{
return $this->equity;
}
public function setEquity(?float $equity): self
{
$this->equity = $equity;
return $this;
}
public function getDette(): ?float
{
return $this->dette;
}
public function setDette(?float $dette): self
{
$this->dette = $dette;
return $this;
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(?\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getToken(): ?string
{
return $this->token;
}
public function setToken(?string $token): self
{
$this->token = $token;
return $this;
}
public function getEngagementProjet(): ?EngagementProjet
{
return $this->engagementProjet;
}
public function setEngagementProjet(?EngagementProjet $engagementProjet): self
{
$this->engagementProjet = $engagementProjet;
return $this;
}
/**
* @return Collection|EngagementBudget[]
*/
public function getEngagementBudget(): Collection
{
return $this->engagementBudget;
}
public function addEngagementBudget(EngagementBudget $engagementBudget): self
{
if (!$this->engagementBudget->contains($engagementBudget)) {
$this->engagementBudget[] = $engagementBudget;
$engagementBudget->setEngagementVersion($this);
}
return $this;
}
public function removeEngagementBudget(EngagementBudget $engagementBudget): self
{
if ($this->engagementBudget->removeElement($engagementBudget)) {
// set the owning side to null (unless already changed)
if ($engagementBudget->getEngagementVersion() === $this) {
$engagementBudget->setEngagementVersion(null);
}
}
return $this;
}
public function getFileBusinessPlan(): ?DocUpload
{
return $this->fileBusinessPlan;
}
public function setFileBusinessPlan(?DocUpload $fileBusinessPlan): self
{
$this->fileBusinessPlan = $fileBusinessPlan;
return $this;
}
public function getFileBudget(): ?DocUpload
{
return $this->fileBudget;
}
public function setFileBudget(?DocUpload $fileBudget): self
{
$this->fileBudget = $fileBudget;
return $this;
}
public function getEngagementJalon(): ?EngagementJalon
{
return $this->engagementJalon;
}
public function setEngagementJalon(?EngagementJalon $engagementJalon): self
{
$this->engagementJalon = $engagementJalon;
return $this;
}
public function getIsVersion(): ?bool
{
return $this->isVersion;
}
public function setIsVersion(?bool $isVersion): self
{
$this->isVersion = $isVersion;
return $this;
}
}