<?php
namespace App\Entity\GestionComerciale;
use App\Entity\Utilisateur\Utilisateur;
use DateTime;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use App\Annotations\SecuredEntity;
/**
* Fabrication
*
* @ORM\Table("commerciale__fabrication_multiple")
* @ORM\Entity(repositoryClass="App\Repository\GestionComerciale\FabricationMultipleRepository")
* @Gedmo\SoftDeleteable(fieldName="dateSuppression",timeAware=false)
* @SecuredEntity (name="Fabrication Multiple", group="Gestion commerciale")
*/
class FabricationMultiple
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="reference", type="string", length=255, nullable=true)
*/
private $reference;
/**
* @ORM\Column(name="codeBarre", type="string", length=255, nullable=true)
* @Assert\NotBlank(groups={"LancerUsinage"},message="Le code barre est obligatoire")
*/
private $codeBarre;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\GestionComerciale\TailleDisque")
* @ORM\JoinColumn(nullable=true)
* @Assert\NotBlank(groups={"LancerUsinage"},message="La taille du disque est obligatoire")
*/
private $tailleDisque;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Utilisateur\Utilisateur", inversedBy="fabricationsMultiple")
* @ORM\JoinColumn(nullable=true)
*/
private $utilisateur;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Utilisateur\Utilisateur", inversedBy="fabricationsMagasinier")
* @ORM\JoinColumn(nullable=true)
*/
private $magasinier;
/**
* @ORM\Column(name="commentaire", type="text", nullable=true)
*/
private $commentaire;
/**
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @ORM\Column(name="date_fabrication", type="datetime")
*/
private $dateFabrication;
/**
* @ORM\Column(name="date_supression", type="datetime", nullable=true)
*/
private $dateSuppression;
/**
* @ORM\Column(name="date_maj", type="datetime", nullable=true)
* @Gedmo\Timestampable(on="update")
*/
private $dateMaj;
/**
* @ORM\Column(name="date_maj_prix", type="datetime", nullable=true)
*/
private $dateMajPrix;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GestionComerciale\Fabrication", cascade={"persist"}, mappedBy="fabricationMultiple")
*/
private $fabrications;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GestionComerciale\Fabrication", cascade={"persist"}, mappedBy="prestation")
*/
private $fabricationsPrestation;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\GestionComerciale\StatutFabrication", inversedBy="fabricationsMultiple")
* @ORM\JoinColumn(nullable=true)
*/
private $statutFabricationMultiple;
/**
* @ORM\Column(name="prestation", type="boolean", nullable=true)
*/
private $prestation;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GestionComerciale\ArticleCommande", mappedBy="fabricationMultiple")
*/
private $articleCommandes;
/**
* @ORM\Column(name="type_fabrication", type="smallint")
*/
private $typeFabrication = Fabrication::DEDUCTIVE;
public function __construct()
{
$this->date = new Datetime();
$this->dateFabrication = new Datetime();
$this->articleCommandes = new ArrayCollection();
$this->fabricationsPrestation = new ArrayCollection();
$this->fabrications = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function setReference(?string $reference): FabricationMultiple
{
$this->reference = $reference;
return $this;
}
public function getReference(): ?string
{
return $this->reference;
}
public function setCommentaire(?string $commentaire): FabricationMultiple
{
$this->commentaire = $commentaire;
return $this;
}
public function getCommentaire(): ?string
{
return $this->commentaire;
}
public function setDate(DateTime $date): FabricationMultiple
{
$this->date = $date;
return $this;
}
public function getDate(): DateTime
{
return $this->date;
}
public function setDateFabrication(DateTime $dateFabrication): FabricationMultiple
{
$this->dateFabrication = $dateFabrication;
return $this;
}
public function getDateFabrication(): DateTime
{
return $this->dateFabrication;
}
public function setDateSuppression(?DateTime $dateSuppression): FabricationMultiple
{
$this->dateSuppression = $dateSuppression;
return $this;
}
public function getDateSuppression(): ?DateTime
{
return $this->dateSuppression;
}
public function setDateMaj(?DateTime $dateMaj): FabricationMultiple
{
$this->dateMaj = $dateMaj;
return $this;
}
public function getDateMaj(): ?DateTime
{
return $this->dateMaj;
}
public function setDateMajPrix(?DateTime $dateMajPrix): FabricationMultiple
{
$this->dateMajPrix = $dateMajPrix;
return $this;
}
public function getDateMajPrix(): ?DateTime
{
return $this->dateMajPrix;
}
public function setUtilisateur(?Utilisateur $utilisateur): FabricationMultiple
{
$this->utilisateur = $utilisateur;
return $this;
}
public function getUtilisateur(): ?Utilisateur
{
return $this->utilisateur;
}
public function setMagasinier(?Utilisateur $magasinier): FabricationMultiple
{
$this->magasinier = $magasinier;
return $this;
}
public function getMagasinier(): ?Utilisateur
{
return $this->magasinier;
}
public function addFabrication(Fabrication $fabrication): FabricationMultiple
{
$this->fabrications[] = $fabrication;
$fabrication->setFabricationMultiple($this);
return $this;
}
public function removeFabrication(Fabrication $fabrication)
{
$this->fabrications->removeElement($fabrication);
}
public function getFabrications(): Collection
{
return $this->fabrications;
}
public function setPrestation(?bool $prestation): FabricationMultiple
{
$this->prestation = $prestation;
return $this;
}
public function getPrestation(): ?bool
{
return $this->prestation;
}
public function addFabricationsPrestation(Fabrication $fabricationsPrestation): FabricationMultiple
{
$this->fabricationsPrestation[] = $fabricationsPrestation;
$fabricationsPrestation->setPrestation($this);
return $this;
}
public function removeFabricationsPrestation(Fabrication $fabricationsPrestation)
{
$this->fabricationsPrestation->removeElement($fabricationsPrestation);
}
public function getFabricationsPrestation(): Collection
{
return $this->fabricationsPrestation;
}
public function addArticleCommande(ArticleCommande $articleCommande): FabricationMultiple
{
$this->articleCommandes[] = $articleCommande;
return $this;
}
public function removeArticleCommande(ArticleCommande $articleCommande)
{
$this->articleCommandes->removeElement($articleCommande);
}
public function getArticleCommandes(): Collection
{
return $this->articleCommandes;
}
public function setStatutFabricationMultiple(?StatutFabrication $statutFabricationMultiple): FabricationMultiple
{
$this->statutFabricationMultiple = $statutFabricationMultiple;
return $this;
}
public function getStatutFabricationMultiple(): ?StatutFabrication
{
return $this->statutFabricationMultiple;
}
public function getTypeFabrication() :int
{
return $this->typeFabrication;
}
public function setTypeFabrication( int $typeFabrication)
{
$this->typeFabrication = $typeFabrication;
return $this;
}
public function getCodeBarre(): ?string
{
return $this->codeBarre;
}
public function setCodeBarre(?string $codeBarre): self
{
$this->codeBarre = $codeBarre;
return $this;
}
public function isPrestation(): ?bool
{
return $this->prestation;
}
public function getTailleDisque(): ?TailleDisque
{
return $this->tailleDisque;
}
public function setTailleDisque(?TailleDisque $tailleDisque): self
{
$this->tailleDisque = $tailleDisque;
return $this;
}
}