<?php
namespace App\Entity\Fournisseurs;
use App\Entity\Adresses\Adresse;
use App\Entity\Articles\Article;
use App\Entity\Articles\Compta;
use App\Entity\Articles\ConditionAchat;
use App\Entity\Articles\Devise;
use App\Entity\Articles\MouvementStock;
use App\Entity\Articles\prixAchat;
use App\Entity\GestionComerciale\CommandeFournisseur;
use App\Entity\GestionComerciale\ModeReglement;
use App\Entity\GestionComerciale\MouvementCaisse;
use App\Entity\GestionComerciale\Reception;
use App\Entity\GestionComerciale\RetourFournisseur;
use App\Entity\Litiges\Litige;
use App\Entity\Utilisateur\contact;
use App\Entity\Utilisateur\Utilisateur;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use App\Annotations\SecuredEntity;
/**
* Fournisseur
*
* @ORM\Table("fournisseur__fournisseur")
* @ORM\Entity(repositoryClass="App\Repository\Fournisseurs\FournisseurRepository")
* @Gedmo\SoftDeleteable(fieldName="dateSuppression",timeAware=false)
* @UniqueEntity(fields={"reference"}, message="Cette référence existe déjà")
* @SecuredEntity(name="Fournisseur", group="FOURNISSEURS")
*/
class Fournisseur
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Fournisseurs\FournisseurCategorie", mappedBy="fournisseur")
*/
private $fournisseurCategorie;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GestionComerciale\RetourFournisseur", mappedBy="fournisseur")
*/
private $retoursFournisseurs;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Litiges\Litige", mappedBy="fournisseur")
*/
private $litiges;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Fournisseurs\Categorie", inversedBy="fournisseurs")
* @ORM\JoinColumn(nullable=true)
*/
private $categorie;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\GestionComerciale\ModeReglement", cascade={"persist"})
* @ORM\JoinColumn(nullable=true)
*/
private $modereglement;
/**
* @ORM\Column(name="jours_livraison", type="string", length=255, nullable=true)
*/
private $joursLivraison;
/**
* @ORM\Column(name="code_comptable", type="string", length=255, nullable=true)
*/
private $codeComptable;
/**
* @ORM\Column(name="donnees_import", type="text", nullable=true)
*/
private $donnesImport;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Utilisateur\Utilisateur", inversedBy="fournisseurs")
* @ORM\JoinColumn(nullable=true)
*/
private $utilisateur;
/**
* @ORM\Column(name="id_import", type="string",length=255, nullable=true)
*/
private $idImport;
/**
* @ORM\Column(name="delai_reception", type="integer",length=255, nullable=true)
*/
private $delaiReception;
/**
* @ORM\Column(name="libelle", type="string", length=255, nullable=true)
* @Assert\NotBlank(message="Libellé obligatoire")
*/
private $libelle;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Articles\ConditionAchat", mappedBy="fournisseur")
*/
private $conditionsAchat;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GestionComerciale\MouvementCaisse", mappedBy="fournisseur")
*/
private $mouvementsCaisse;
/**
* @ORM\Column(name="statut", type="boolean", nullable=true)
*/
private $statut;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Utilisateur\Contact", mappedBy="fournisseur")
*/
private $contacts;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Adresses\Adresse", mappedBy="fournisseur")
*/
private $adresses;
/**
* @ORM\Column(name="logo", type="string", length=255, nullable=true)
*/
private $logo;
/**
* @ORM\Column(name="reference", type="string", length=255, nullable=true, unique=true)
* @Assert\NotBlank(message="Référence obligatoire")
*/
private $reference;
/**
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @ORM\Column(name="dateMaj", type="datetime", nullable=true)
* @Gedmo\Timestampable(on="update")
*/
private $dateMaj;
/**
* @ORM\Column(name="telephone", type="string", length=255, nullable=true)
*/
private $telephone;
/**
* @ORM\Column(name="telephone2", type="string", length=255, nullable=true)
*/
private $telephone2;
/**
* @ORM\Column(name="email", type="string", length=255, nullable=true)
*/
private $email;
/**
* @ORM\Column(name="site_web", type="string", length=255, nullable=true)
*/
private $siteWeb;
/**
* @ORM\Column(name="dateSuppression", type="datetime", nullable=true)
*/
private $dateSuppression;
/**
* @ORM\Column(name="fax", type="string", length=255, nullable=true)
*/
private $fax;
/**
* @ORM\Column(name="tva", type="string", length=255, nullable=true)
* @Assert\NotBlank(message="Fournisseur : N° tva obligatoire", groups={"articleDivers"})
*/
private $tva;
/**
* @ORM\Column(name="commentaire", type="text", nullable=true)
*/
private $commentaire;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Articles\MouvementStock", mappedBy="fournisseur")
*/
private $mouvementStocks;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GestionComerciale\Reception", mappedBy="fournisseur")
*/
private $receptions;
/**
* @ORM\OneToMany(targetEntity="App\Entity\GestionComerciale\CommandeFournisseur", mappedBy="fournisseur")
*/
private $commandesFournisseur;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Articles\PrixAchat", cascade={"persist"},mappedBy="fournisseur")
*/
private $prixAchat;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Articles\Article", mappedBy="fournisseurDefaut")
* @ORM\JoinColumn(nullable=true)
*/
private $articles;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Articles\Devise", inversedBy="fournisseurs")
* @ORM\JoinColumn(nullable=true)
*/
private $devise;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Articles\Compta", cascade={"persist"},inversedBy="fournisseurs")
* @ORM\JoinColumn(nullable=true)
*/
private $compta;
/**
* @ORM\Column(name="code_client", type="string", length=255, nullable=true)
*/
private $codeClient;
/**
* @ORM\Column(name="minimum_facturation", type="float", nullable=true)
*/
private $minimumFacturation;
/**
* @ORM\Column(name="franco", type="float", nullable=true)
*/
private $franco;
/**
* @ORM\Column(name="frais_fixe", type="float", nullable=true)
*/
private $fraisFixe;
/**
* @ORM\Column(name="divers", type="boolean", nullable=true)
*/
private $divers;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Fournisseurs\Fournisseur")
* @ORM\JoinColumn(nullable=true)
*/
private $parent;
/**
* @ORM\Column(name="archive", type="boolean", nullable=true)
*/
private $archive;
/**
* @ORM\Column(name="taux_escompte", type="float", nullable=true)
*/
private $tauxEscompte;
public function __construct()
{
$this->date = new Datetime();
$this->retoursFournisseurs = new ArrayCollection();
$this->litiges = new ArrayCollection();
$this->fournisseurCategorie = new ArrayCollection();
$this->mouvementsCaisse = new ArrayCollection();
$this->receptions = new ArrayCollection();
$this->articles = new ArrayCollection();
$this->conditionsAchat = new ArrayCollection();
$this->prixAchat = new ArrayCollection();
$this->commandesFournisseur = new ArrayCollection();
$this->mouvementStocks = new ArrayCollection();
$this->adresses = new ArrayCollection();
$this->contacts = new ArrayCollection();
}
public function getId(): int
{
return $this->id;
}
public function setReference(?string $reference): Fournisseur
{
$this->reference = $reference;
return $this;
}
public function getReference(): ?string
{
return $this->reference;
}
public function setDate(DateTime $date): Fournisseur
{
$this->date = $date;
return $this;
}
public function getDate(): DateTime
{
return $this->date;
}
public function setDateMaj(DateTime $dateMaj): Fournisseur
{
$this->dateMaj = $dateMaj;
return $this;
}
public function getDateMaj(): ?DateTime
{
return $this->dateMaj;
}
public function setTelephone(?string $telephone): Fournisseur
{
$this->telephone = $telephone;
return $this;
}
public function getTelephone(): ?string
{
return $this->telephone;
}
public function setTelephone2(?string $telephone2): Fournisseur
{
$this->telephone2 = $telephone2;
return $this;
}
public function getTelephone2(): ?string
{
return $this->telephone2;
}
public function setEmail(?string $email): Fournisseur
{
$this->email = $email;
return $this;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setDateSuppression(?DateTime $dateSuppression): Fournisseur
{
$this->dateSuppression = $dateSuppression;
return $this;
}
public function getDateSuppression(): ?DateTime
{
return $this->dateSuppression;
}
public function setFax(string $fax): Fournisseur
{
$this->fax = $fax;
return $this;
}
public function getFax(): ?string
{
return $this->fax;
}
public function setTva(?string $tva): Fournisseur
{
$this->tva = $tva;
return $this;
}
public function getTva(): ?string
{
return $this->tva;
}
public function getContactAutre(): ?string
{
return $this->contactAutre;
}
public function setCommentaire(?string $commentaire): Fournisseur
{
$this->commentaire = $commentaire;
return $this;
}
public function getCommentaire(): ?string
{
return $this->commentaire;
}
public function setUtilisateur(?Utilisateur $utilisateur): Fournisseur
{
$this->utilisateur = $utilisateur;
return $this;
}
public function getUtilisateur(): ?Utilisateur
{
return $this->utilisateur;
}
public function setLogo(?string $logo): ?string
{
$this->logo = $logo;
return $this;
}
public function getLogo(): ?string
{
return $this->logo;
}
public function getLogoDir(): string
{
return 'uploads/logos/fournisseur';
}
public function addContact(contact $contacts): Fournisseur
{
$this->contacts[] = $contacts;
return $this;
}
public function removeContact(contact $contacts)
{
$this->contacts->removeElement($contacts);
}
public function getContacts(): Collection
{
return $this->contacts;
}
public function addAdress(Adresse $adresses): Fournisseur
{
$this->adresses[] = $adresses;
return $this;
}
public function removeAdress(Adresse $adresses)
{
$this->adresses->removeElement($adresses);
}
public function getAdresses(): Collection
{
return $this->adresses;
}
public function addMouvementStock(MouvementStock $mouvementStocks): Fournisseur
{
$this->mouvementStocks[] = $mouvementStocks;
return $this;
}
public function removeMouvementStock(MouvementStock $mouvementStocks)
{
$this->mouvementStocks->removeElement($mouvementStocks);
}
public function getMouvementStocks(): Collection
{
return $this->mouvementStocks;
}
public function setLibelle(?string $libelle): Fournisseur
{
$this->libelle = $libelle;
return $this;
}
public function getLibelle(): ?string
{
return $this->libelle;
}
public function setStatut(?bool $statut): Fournisseur
{
$this->statut = $statut;
return $this;
}
public function getStatut(): ?bool
{
return $this->statut;
}
public function addCommandesFournisseur(CommandeFournisseur $commandesFournisseur): Fournisseur
{
$this->commandesFournisseur[] = $commandesFournisseur;
return $this;
}
public function removeCommandesFournisseur(CommandeFournisseur $commandesFournisseur)
{
$this->commandesFournisseur->removeElement($commandesFournisseur);
}
public function getCommandesFournisseur(): Collection
{
return $this->commandesFournisseur;
}
public function addPrixAchat(prixAchat $prixAchat): Fournisseur
{
$this->prixAchat[] = $prixAchat;
return $this;
}
public function removePrixAchat(prixAchat $prixAchat)
{
$this->prixAchat->removeElement($prixAchat);
}
public function getPrixAchat(): Collection
{
return $this->prixAchat;
}
public function __toString()
{
return $this->libelle.' ('.$this->reference.')';
}
public function addConditionsAchat(ConditionAchat $conditionsAchat): Fournisseur
{
$this->conditionsAchat[] = $conditionsAchat;
return $this;
}
public function removeConditionsAchat(ConditionAchat $conditionsAchat)
{
$this->conditionsAchat->removeElement($conditionsAchat);
}
public function getConditionsAchat(): Collection
{
return $this->conditionsAchat;
}
public function addArticle(Article $articles): Fournisseur
{
$this->articles[] = $articles;
return $this;
}
public function removeArticle(Article $articles)
{
$this->articles->removeElement($articles);
}
public function getArticles(): Collection
{
return $this->articles;
}
public function setIdImport(?string $idImport): Fournisseur
{
$this->idImport = $idImport;
return $this;
}
public function getIdImport(): ?string
{
return $this->idImport;
}
public function setCategorie(?Categorie $categorie): Fournisseur
{
$this->categorie = $categorie;
return $this;
}
public function getCategorie(): ?Categorie
{
return $this->categorie;
}
public function setDonnesImport(?string $donnesImport): Fournisseur
{
$this->donnesImport = $donnesImport;
return $this;
}
public function getDonnesImport(): ?string
{
return $this->donnesImport;
}
public function setTauxChange(float $tauxChange): Fournisseur
{
$this->tauxChange = $tauxChange;
return $this;
}
public function getTauxChange(): float
{
return $this->tauxChange;
}
public function setDevise(?Devise $devise): Fournisseur
{
$this->devise = $devise;
return $this;
}
public function getDevise(): ?Devise
{
return $this->devise;
}
public function setCodeComptable(?string $codeComptable): Fournisseur
{
$this->codeComptable = $codeComptable;
return $this;
}
public function getCodeComptable(): ?string
{
return $this->codeComptable;
}
public function setCompta(?Compta $compta): Fournisseur
{
$this->compta = $compta;
return $this;
}
public function getCompta(): ?Compta
{
return $this->compta;
}
public function addReception(Reception $reception): Fournisseur
{
$this->receptions[] = $reception;
return $this;
}
public function removeReception(Reception $reception)
{
$this->receptions->removeElement($reception);
}
public function getReceptions(): Collection
{
return $this->receptions;
}
public function setCodeClient(?string $codeClient): Fournisseur
{
$this->codeClient = $codeClient;
return $this;
}
public function getCodeClient(): ?string
{
return $this->codeClient;
}
public function setFranco(?float $franco): Fournisseur
{
$this->franco = $franco;
return $this;
}
public function getFranco(): ?float
{
return $this->franco;
}
public function setFraisFixe(?float $fraisFixe): Fournisseur
{
$this->fraisFixe = $fraisFixe;
return $this;
}
public function getFraisFixe(): ?float
{
return $this->fraisFixe;
}
public function setMinimumFacturation(?float $minimumFacturation): Fournisseur
{
$this->minimumFacturation = $minimumFacturation;
return $this;
}
public function getMinimumFacturation():?float
{
return $this->minimumFacturation;
}
public function setModereglement(?ModeReglement $modereglement): Fournisseur
{
$this->modereglement = $modereglement;
return $this;
}
public function getModereglement(): ?ModeReglement
{
return $this->modereglement;
}
public function setDivers(?bool $divers): Fournisseur
{
$this->divers = $divers;
return $this;
}
public function getDivers(): ?bool
{
return $this->divers;
}
public function setParent(?Fournisseur $parent): Fournisseur
{
$this->parent = $parent;
return $this;
}
public function getParent(): ?Fournisseur
{
return $this->parent;
}
public function addMouvementsCaisse(MouvementCaisse $mouvementsCaisse): Fournisseur
{
$this->mouvementsCaisse[] = $mouvementsCaisse;
return $this;
}
public function removeMouvementsCaisse(MouvementCaisse $mouvementsCaisse)
{
$this->mouvementsCaisse->removeElement($mouvementsCaisse);
}
public function getMouvementsCaisse(): Collection
{
return $this->mouvementsCaisse;
}
public function setDelaiReception(?int $delaiReception): Fournisseur
{
$this->delaiReception = $delaiReception;
return $this;
}
public function getDelaiReception(): ?int
{
return $this->delaiReception;
}
public function addFournisseurCategorie(FournisseurCategorie $fournisseurCategorie): Fournisseur
{
$this->fournisseurCategorie[] = $fournisseurCategorie;
return $this;
}
public function removeFournisseurCategorie(FournisseurCategorie $fournisseurCategorie)
{
$this->fournisseurCategorie->removeElement($fournisseurCategorie);
}
public function getFournisseurCategorie(): Collection
{
return $this->fournisseurCategorie;
}
public function addLitige(Litige $litige): Fournisseur
{
$this->litiges[] = $litige;
return $this;
}
public function removeLitige(Litige $litige)
{
$this->litiges->removeElement($litige);
}
public function getLitiges(): Collection
{
return $this->litiges;
}
public function addRetoursFournisseur(RetourFournisseur $retoursFournisseur): Fournisseur
{
$this->retoursFournisseurs[] = $retoursFournisseur;
return $this;
}
public function removeRetoursFournisseur(RetourFournisseur $retoursFournisseur)
{
$this->retoursFournisseurs->removeElement($retoursFournisseur);
}
public function getRetoursFournisseurs(): Collection
{
return $this->retoursFournisseurs;
}
public function setJoursLivraison(?string $joursLivraison): Fournisseur
{
$this->joursLivraison = $joursLivraison;
return $this;
}
public function getJoursLivraison(): ?array
{
return unserialize($this->joursLivraison);
//return $this->joursLivraison;
}
public function setSiteWeb(?string $siteWeb): Fournisseur
{
$this->siteWeb = $siteWeb;
return $this;
}
public function getSiteWeb(): ?string
{
return $this->siteWeb;
}
public function setArchive(?bool $archive): Fournisseur
{
$this->archive = $archive;
return $this;
}
public function getArchive(): ?bool
{
return $this->archive;
}
public function setTauxEscompte(?float $tauxEscompte): Fournisseur
{
$this->tauxEscompte = $tauxEscompte;
return $this;
}
public function getTauxEscompte(): ?float
{
return $this->tauxEscompte;
}
}