<?php
namespace App\Entity\Engagement;
use App\Entity\BonDeCommande;
use App\Entity\DocUpload;
use App\Repository\EngagementBudgetRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Annotation\CustomAnnotation;
/**
* @ORM\Entity(repositoryClass=EngagementBudgetRepository::class)
*/
class EngagementBudget
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="EngagementVersion", cascade={"persist"}, inversedBy="engagementBudget")
* @ORM\JoinColumn(name="engagement_version_id", referencedColumnName="id",nullable=true)
*/
private $engagementVersion;
/**
* @ORM\ManyToOne(targetEntity="EngagementBudgetEngage", cascade={"persist"})
* @ORM\JoinColumn(name="engagement_budget_engage_id", referencedColumnName="id",nullable=true)
*/
private $engagementBudgetEngage;
/**
* @ORM\ManyToOne(targetEntity="EngagementBudgetPrevisionel", cascade={"persist"})
* @ORM\JoinColumn(name="engagement_budget_previsionel_id", referencedColumnName="id",nullable=true)
*/
private $engagementBudgetPrevisionel;
/**
* @ORM\ManyToOne(targetEntity="EngagementBudgetEngageDetail", cascade={"persist"})
* @ORM\JoinColumn(name="engagement_budget_engage_detail_id", referencedColumnName="id",nullable=true)
*/
private $engagementBudgetEngageDetail;
/**
* Détails d'engagé rattachés à cette ligne budget (un par engagé) — permet plusieurs engagés
* sur une même dépense.
* @ORM\OneToMany(targetEntity="EngagementBudgetEngageDetail", mappedBy="engagementBudget")
*/
private $engagementBudgetEngageDetails;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $classificationErp;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $classificationBudget;
/**
* Référentiel hiérarchique du type de dépense (ligne de niveau 3).
* @ORM\ManyToOne(targetEntity="TypeDepense")
* @ORM\JoinColumn(name="type_depense_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
* @CustomAnnotation("Type de dépense")
*/
private $typeDepense;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("Budget prévisionnel")
*/
private $provisonnelMontant;
/**
* @ORM\Column(type="float", nullable=true)
* @CustomAnnotation("Budget facturé")
*/
private $factureMontant;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $categorie;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $createdAt;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $token;
public function __construct()
{
$this->createdAt = new \DateTime();
$this->token = md5(uniqid());
$this->engagementBudgetEngageDetails = new ArrayCollection();
}
/**
* @return Collection|EngagementBudgetEngageDetail[]
*/
public function getEngagementBudgetEngageDetails(): Collection
{
return $this->engagementBudgetEngageDetails;
}
public function addEngagementBudgetEngageDetail(EngagementBudgetEngageDetail $detail): self
{
if (!$this->engagementBudgetEngageDetails->contains($detail)) {
$this->engagementBudgetEngageDetails[] = $detail;
$detail->setEngagementBudget($this);
}
return $this;
}
public function removeEngagementBudgetEngageDetail(EngagementBudgetEngageDetail $detail): self
{
if ($this->engagementBudgetEngageDetails->removeElement($detail)) {
if ($detail->getEngagementBudget() === $this) {
$detail->setEngagementBudget(null);
}
}
return $this;
}
public function getId(): ?int
{
return $this->id;
}
public function getClassificationErp(): ?string
{
return $this->classificationErp;
}
public function setClassificationErp(?string $classificationErp): self
{
$this->classificationErp = $classificationErp;
return $this;
}
public function getClassificationBudget(): ?string
{
return $this->classificationBudget;
}
public function setClassificationBudget(?string $classificationBudget): self
{
$this->classificationBudget = $classificationBudget;
return $this;
}
public function getProvisonnelMontant(): ?float
{
return $this->provisonnelMontant;
}
public function setProvisonnelMontant(?float $provisonnelMontant): self
{
$this->provisonnelMontant = $provisonnelMontant;
return $this;
}
public function getEngageMontant(): ?float
{
return $this->engageMontant;
}
public function setEngageMontant(?float $engageMontant): self
{
$this->engageMontant = $engageMontant;
return $this;
}
public function getFactureMontant(): ?float
{
return $this->factureMontant;
}
public function setFactureMontant(?float $factureMontant): self
{
$this->factureMontant = $factureMontant;
return $this;
}
public function getCategorie(): ?string
{
return $this->categorie;
}
public function setCategorie(?string $categorie): self
{
$this->categorie = $categorie;
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 getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
public function getEngagementVersion(): ?EngagementVersion
{
return $this->engagementVersion;
}
public function setEngagementVersion(?EngagementVersion $engagementVersion): self
{
$this->engagementVersion = $engagementVersion;
return $this;
}
public function getDevis(): ?DocUpload
{
return $this->devis;
}
public function setDevis(?DocUpload $devis): self
{
$this->devis = $devis;
return $this;
}
public function getBonDeCommande(): ?BonDeCommande
{
return $this->bonDeCommande;
}
public function setBonDeCommande(?BonDeCommande $bonDeCommande): self
{
$this->bonDeCommande = $bonDeCommande;
return $this;
}
public function getEngagementBudgetEngage(): ?EngagementBudgetEngage
{
return $this->engagementBudgetEngage;
}
public function setEngagementBudgetEngage(?EngagementBudgetEngage $engagementBudgetEngage): self
{
$this->engagementBudgetEngage = $engagementBudgetEngage;
return $this;
}
public function getTypeDepense(): ?TypeDepense
{
return $this->typeDepense;
}
public function setTypeDepense(?TypeDepense $typeDepense): self
{
$this->typeDepense = $typeDepense;
return $this;
}
public function getEngagementBudgetEngageDetail(): ?EngagementBudgetEngageDetail
{
return $this->engagementBudgetEngageDetail;
}
public function setEngagementBudgetEngageDetail(?EngagementBudgetEngageDetail $engagementBudgetEngageDetail): self
{
$this->engagementBudgetEngageDetail = $engagementBudgetEngageDetail;
return $this;
}
public function getEngagementBudgetPrevisionel(): ?EngagementBudgetPrevisionel
{
return $this->engagementBudgetPrevisionel;
}
public function setEngagementBudgetPrevisionel(?EngagementBudgetPrevisionel $engagementBudgetPrevisionel): self
{
$this->engagementBudgetPrevisionel = $engagementBudgetPrevisionel;
return $this;
}
}