<?php
namespace App\Entity\Gestiform\Formations\Financement;
use App\Entity\AbstractEntity;
use App\Entity\Common\Upload;
use App\Entity\Gestiform\Admin\MasterListe\Masterlistelg;
use App\Entity\Gestiform\Formations\Actions\BondeCommandeParcour;
use App\Entity\Gestiform\Formations\Devis\Devis;
use App\Entity\Gestiform\Formations\Dossier\Dossier;
use App\Entity\Gestiform\Formations\Financeur\Financeur;
use App\Entity\Gestiform\Formations\Entreprise\Entreprise;
use App\Entity\Gestiform\Formations\Session\Session;
use App\Repository\Gestiform\Formations\Financement\FinancementRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=FinancementRepository::class)
*/
class Financement extends AbstractEntity
{
/**
* @ORM\ManyToOne(targetEntity=Dossier::class, inversedBy="financements", cascade={"persist"})
*/
private ?Dossier $dossier = null;
/**
* @ORM\ManyToOne(targetEntity=Entreprise::class, inversedBy="financements", cascade={"persist"})
*/
private ?Entreprise $entreprise = null;
/**
* @ORM\ManyToOne(targetEntity=Financeur::class, inversedBy="financements", cascade={"persist"})
*/
private ?Financeur $financeur = null;
/**
* @ORM\ManyToOne(targetEntity=Devis::class, inversedBy="financements", cascade={"persist"})
*/
private ?Devis $devis = null;
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $montantHt = null;
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $tauxHoraire = null; // en €
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $affectationHoraire = null; // en %
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?\DateTime $start = null;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?\DateTime $end = null;
/**
* @ORM\ManyToOne(targetEntity=Masterlistelg::class)
* @ORM\JoinColumn(nullable=true)
*/
private ?Masterlistelg $codeTva = null;
/**
* @ORM\Column( type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $tauxTva = null;
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $montantTva = null;
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $montantTtc = null;
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $montantRegleHt = null;
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $montantRegleTtc = null;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $subrogation = false;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $financementTotal = false;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $financementPrincipal = false;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $numDossier = null;
/**
* @ORM\ManyToOne(targetEntity=Masterlistelg::class)
*/
private ?Masterlistelg $typeFinancement = null;
/**
* @ORM\ManyToOne(targetEntity=BondeCommandeParcour::class)
*/
private ?BondeCommandeParcour $bdcParcours = null;
/**
* @ORM\ManyToOne(targetEntity=Session::class)
*/
private ?Session $session = null;
/**
* @ORM\ManyToOne(targetEntity=Masterlistelg::class)
*/
private ?Masterlistelg $echeancier = null;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $concerneFrais = false;
/**
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
*/
private ?float $montantEcheances = null;
/**
* @ORM\OneToOne(targetEntity=Upload::class, cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=true)
*/
private ?Upload $document = null;
/**
* @ORM\OneToMany(targetEntity=Echeancier::class, mappedBy="financement",cascade={"persist","remove"})
*/
private Collection $echeances;
public function __construct()
{
$this->echeances = new ArrayCollection();
}
public function getMontantHt(): ?string
{
return $this->montantHt;
}
public function setMontantHt(?string $montantHt): self
{
$this->montantHt = $montantHt;
return $this;
}
public function getTauxHoraire(): ?string
{
return $this->tauxHoraire;
}
public function setTauxHoraire(?string $tauxHoraire): self
{
$this->tauxHoraire = $tauxHoraire;
return $this;
}
public function getAffectationHoraire(): ?string
{
return $this->affectationHoraire;
}
public function setAffectationHoraire(?string $affectationHoraire): self
{
$this->affectationHoraire = $affectationHoraire;
return $this;
}
public function getStart(): ?\DateTime
{
return $this->start;
}
public function setStart(?\DateTime $start): self
{
$this->start = $start;
return $this;
}
public function getEnd(): ?\DateTime
{
return $this->end;
}
public function setEnd(?\DateTime $end): self
{
$this->end = $end;
return $this;
}
public function getTauxTva(): ?string
{
return $this->tauxTva;
}
public function setTauxTva(?string $tauxTva): self
{
$this->tauxTva = $tauxTva;
return $this;
}
public function getMontantTva(): ?string
{
return $this->montantTva;
}
public function setMontantTva(?string $montantTva): self
{
$this->montantTva = $montantTva;
return $this;
}
public function getMontantTtc(): ?string
{
return $this->montantTtc;
}
public function setMontantTtc(?string $montantTtc): self
{
$this->montantTtc = $montantTtc;
return $this;
}
public function getMontantRegleHt(): ?string
{
return $this->montantRegleHt;
}
public function setMontantRegleHt(?string $montantRegleHt): self
{
$this->montantRegleHt = $montantRegleHt;
return $this;
}
public function getMontantRegleTtc(): ?string
{
return $this->montantRegleTtc;
}
public function setMontantRegleTtc(?string $montantRegleTtc): self
{
$this->montantRegleTtc = $montantRegleTtc;
return $this;
}
public function isSubrogation(): ?bool
{
return $this->subrogation;
}
public function setSubrogation(?bool $subrogation): self
{
$this->subrogation = $subrogation;
return $this;
}
public function isFinancementTotal(): ?bool
{
return $this->financementTotal;
}
public function setFinancementTotal(?bool $financementTotal): self
{
$this->financementTotal = $financementTotal;
return $this;
}
public function isFinancementPrincipal(): ?bool
{
return $this->financementPrincipal;
}
public function setFinancementPrincipal(?bool $financementPrincipal): self
{
$this->financementPrincipal = $financementPrincipal;
return $this;
}
public function isConcerneFrais(): ?bool
{
return $this->concerneFrais;
}
public function setConcerneFrais(?bool $concerneFrais): self
{
$this->concerneFrais = $concerneFrais;
return $this;
}
public function getDossier(): ?Dossier
{
return $this->dossier;
}
public function setDossier(?Dossier $dossier): self
{
$this->dossier = $dossier;
return $this;
}
public function getEntreprise(): ?Entreprise
{
return $this->entreprise;
}
public function setEntreprise(?Entreprise $entreprise): self
{
$this->entreprise = $entreprise;
return $this;
}
public function getDevis(): ?Devis
{
return $this->devis;
}
public function setDevis(?Devis $devis): self
{
$this->devis = $devis;
return $this;
}
public function getCodeTva(): ?Masterlistelg
{
return $this->codeTva;
}
public function setCodeTva(?Masterlistelg $codeTva): self
{
$this->codeTva = $codeTva;
return $this;
}
public function getTypeFinancement(): ?Masterlistelg
{
return $this->typeFinancement;
}
public function setTypeFinancement(?Masterlistelg $typeFinancement): self
{
$this->typeFinancement = $typeFinancement;
return $this;
}
public function getFinanceur(): ?Financeur
{
return $this->financeur;
}
public function setFinanceur(?Financeur $financeur): self
{
$this->financeur = $financeur;
return $this;
}
public function getBdcParcours(): ?BondeCommandeParcour
{
return $this->bdcParcours;
}
public function setBdcParcours(?BondeCommandeParcour $bdcParcours): self
{
$this->bdcParcours = $bdcParcours;
return $this;
}
public function getSession(): ?Session
{
return $this->session;
}
public function setSession(?Session $session): self
{
$this->session = $session;
return $this;
}
public function getEcheancier(): ?Masterlistelg
{
return $this->echeancier;
}
public function setEcheancier(?Masterlistelg $echeancier): self
{
$this->echeancier = $echeancier;
return $this;
}
public function getNumDossier(): ?string
{
return $this->numDossier;
}
public function setNumDossier(?string $numDossier): self
{
$this->numDossier = $numDossier;
return $this;
}
/**
* @return Collection<int, Echeancier>
*/
public function getEcheances(): Collection
{
return $this->echeances;
}
public function addEcheance(Echeancier $echeance): static
{
if (!$this->echeances->contains($echeance)) {
$this->echeances->add($echeance);
$echeance->setFinancement($this);
}
return $this;
}
public function removeEcheance(Echeancier $echeance): static
{
if ($this->echeances->removeElement($echeance)) {
// set the owning side to null (unless already changed)
if ($echeance->getFinancement() === $this) {
$echeance->setFinancement(null);
}
}
return $this;
}
public function getDocument(): ?Upload
{
return $this->document;
}
public function setDocument(?Upload $document): self
{
$this->document = $document;
return $this;
}
public function getMontantEcheances(): ?float
{
return $this->montantEcheances;
}
public function setMontantEcheances(?float $montantEcheances): self
{
$this->montantEcheances = $montantEcheances;
return $this;
}
}