src/Entity/BCData.php line 10
<?php
namespace App\Entity;
use App\Repository\BCDataRepository;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: BCDataRepository::class)]
class BCData
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\ManyToOne(inversedBy: 'BCData')]
#[ORM\JoinColumn(nullable: false)]
private ?BCFacteur $facteur = null;
#[ORM\ManyToOne(inversedBy: 'BCData')]
#[ORM\JoinColumn(nullable: false)]
private ?BCCompany $BCCompany = null;
#[ORM\Column]
private ?int $depreciation = null;
#[ORM\ManyToOne]
private ?BCMix $mix = null;
#[ORM\Column(nullable: true)]
private ?float $consommation = null;
#[ORM\Column(nullable: true)]
private ?int $quantityNew = null;
#[ORM\Column(nullable: true)]
private ?int $quantityOccasion = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $comment = null;
public function getId(): ?int
{
return $this->id;
}
public function getFacteur(): ?BCFacteur
{
return $this->facteur;
}
public function setFacteur(?BCFacteur $facteur): self
{
$this->facteur = $facteur;
return $this;
}
public function getBCCompany(): ?BCCompany
{
return $this->BCCompany;
}
public function setBCCompany(?BCCompany $BCCompany): self
{
$this->BCCompany = $BCCompany;
return $this;
}
public function getDepreciation(): ?int
{
return $this->depreciation;
}
public function setDepreciation(int $depreciation): self
{
$this->depreciation = $depreciation;
return $this;
}
public function getMix(): ?BCMix
{
return $this->mix;
}
public function setMix(?BCMix $mix): self
{
$this->mix = $mix;
return $this;
}
public function getConsommation(): ?float
{
return $this->consommation;
}
public function setConsommation(?float $consommation): self
{
$this->consommation = $consommation;
return $this;
}
public function getQuantityNew(): ?int
{
return $this->quantityNew;
}
public function setQuantityNew(?int $quantityNew): self
{
$this->quantityNew = $quantityNew;
return $this;
}
public function getQuantityOccasion(): ?int
{
return $this->quantityOccasion;
}
public function setQuantityOccasion(?int $quantityOccasion): self
{
$this->quantityOccasion = $quantityOccasion;
return $this;
}
// Assurez-vous que les propriétés comme $quantityNew, $quantityOccasion, $facteur, etc. existent bien.
/**
* Calcul de l'impact d'usage
*
* @return float|null
*/
public function getUsageImpact(): ?float
{
$quantity = $this->getQuantityNew() + $this->getQuantityOccasion();
if ($this->getConsommation() && $this->getMix()) {
return $this->getConsommation() * $this->getMix()->getCoefficient() * $quantity;
}
return null;
}
/**
* Calcul de l'impact de fabrication pour le neuf
*
* @return float|null
*/
public function getImpactFabricationNeuf(): ?float
{
return $this->getQuantityNew() ? $this->getFacteur()->getImpactGlobal() * $this->getQuantityNew() : null;
}
/**
* Calcul de l'impact de fabrication pour l'occasion
*
* @return float|null
*/
public function getImpactFabricationOccasion(): ?float
{
return $this->getQuantityOccasion() ? $this->getFacteur()->getImpactGlobal() * $this->getQuantityOccasion() * 0.4 : null;
}
/**
* Calcul de l'impact total (fabrication + usage)
*
* @return float|null
*/
public function getTotalImpact(): ?float
{
$impactFabrication = $this->getImpactFabricationNeuf() + $this->getImpactFabricationOccasion();
$impactUsage = $this->getUsageImpact();
if ($impactUsage !== null) {
return ($impactFabrication / $this->getDepreciation()) + $impactUsage;
}
return $impactFabrication / $this->getDepreciation();
}
/**
* Calcul de l'impact de fabrication minimum (avec incertitude)
*
* @return float|null
*/
public function getImpactFabricationMin(): ?float
{
$impactFabrication = $this->getImpactFabricationNeuf() + $this->getImpactFabricationOccasion();
$incertitude = $this->getFacteur()->getIncertitude() / 100;
return $impactFabrication * (1 - $incertitude);
}
/**
* Calcul de l'impact de fabrication maximum (avec incertitude)
*
* @return float|null
*/
public function getImpactFabricationMax(): ?float
{
$impactFabrication = $this->getImpactFabricationNeuf() + $this->getImpactFabricationOccasion();
$incertitude = $this->getFacteur()->getIncertitude() / 100;
return $impactFabrication * (1 + $incertitude);
}
/**
* Calcul de l'impact d'usage minimum (avec incertitude)
*
* @return float|null
*/
public function getImpactUsageMin(): ?float
{
$impactUsage = $this->getUsageImpact();
if ($impactUsage === null) {
return null;
}
$incertitude = $this->getFacteur()->getIncertitude() / 100;
return $impactUsage * (1 - $incertitude);
}
/**
* Calcul de l'impact d'usage maximum (avec incertitude)
*
* @return float|null
*/
public function getImpactUsageMax(): ?float
{
$impactUsage = $this->getUsageImpact();
if ($impactUsage === null) {
return null;
}
$incertitude = $this->getFacteur()->getIncertitude() / 100;
return $impactUsage * (1 + $incertitude);
}
/**
* Calcul de l'impact total minimum (fabrication + usage avec incertitude)
*
* @return float|null
*/
public function getTotalImpactMin(): ?float
{
$totalImpact = $this->getTotalImpact();
$incertitude = $this->getFacteur()->getIncertitude() / 100;
return $totalImpact * (1 - $incertitude);
}
/**
* Calcul de l'impact total maximum (fabrication + usage avec incertitude)
*
* @return float|null
*/
public function getTotalImpactMax(): ?float
{
$totalImpact = $this->getTotalImpact();
$incertitude = $this->getFacteur()->getIncertitude() / 100;
return $totalImpact * (1 + $incertitude);
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
}