<?php
namespace App\Entity;
use App\Entity\Bestelstatus;
use App\Repository\BestellingRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: BestellingRepository::class)]
class Bestelling
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $besteldatum = null;
#[ORM\ManyToOne(inversedBy: 'bestellings')]
private ?Leverancier $leverancier = null;
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $opmerkingen = null;
#[ORM\OneToMany(mappedBy: 'bestelling', targetEntity: Orderonderdeel::class)]
private Collection $orderonderdelen;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $invoerdatum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $leverdatum = null;
#[ORM\Column(nullable: true)]
private ?int $leverweek = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $bestelnr = null;
#[ORM\ManyToOne(inversedBy: 'bestellingen')]
#[ORM\JoinColumn(nullable: false)]
private ?bestelstatus $status = null;
#[ORM\Column(length: 255, nullable: true)]
private ?string $omschrijving = null;
#[ORM\ManyToOne]
private ?user $ingevoerd_door = null;
#[ORM\ManyToOne]
private ?user $gewijzigd_door = null;
#[ORM\ManyToOne]
private ?user $status_ingevoerd_door = null;
#[ORM\ManyToOne]
private ?user $status_te_controleren_door = null;
#[ORM\ManyToOne]
private ?user $status_te_verzenden_door = null;
#[ORM\ManyToOne]
private ?user $status_verzonden_door = null;
#[ORM\ManyToOne]
private ?user $status_bevestigd_door = null;
#[ORM\ManyToOne]
private ?user $status_deels_geleverd_door = null;
#[ORM\ManyToOne]
private ?user $status_geleverd_door = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $ingevoerd_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $gewijzigd_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $status_ingevoerd_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $status_te_controleren_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $status_te_verzenden_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $status_verzonden_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $status_bevestigd_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $status_deels_geleverd_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $status_geleverd_datum = null;
#[ORM\Column(type: Types::DATE_MUTABLE, nullable: true)]
private ?\DateTimeInterface $leverweekdatum = null;
#[ORM\Column(nullable: true)]
private ?bool $volgensafspraak = null;
public function __construct()
{
$this->orderonderdelen = new ArrayCollection();
}
public function __toString(): string
{
if ($this->getLeverancier()) {
return $this->id . ': ' . $this->getLeverancier()->getNaam();
}
return $this->id;
}
public function getId(): ?int
{
return $this->id;
}
public function getBesteldatum(): ?\DateTimeInterface
{
return $this->besteldatum;
}
public function setBesteldatum(?\DateTimeInterface $besteldatum): static
{
$this->besteldatum = $besteldatum;
return $this;
}
public function getLeverancier(): ?leverancier
{
return $this->leverancier;
}
public function setLeverancier(?leverancier $leverancier): static
{
$this->leverancier = $leverancier;
return $this;
}
public function getOpmerkingen(): ?string
{
return $this->opmerkingen;
}
public function setOpmerkingen(?string $opmerkingen): static
{
$this->opmerkingen = $opmerkingen;
return $this;
}
/**
* @return Collection<int, Orderonderdeel>
*/
public function getOrderonderdelen(): Collection
{
return $this->orderonderdelen;
}
public function addOrderonderdelen(Orderonderdeel $orderonderdelen): static
{
if (!$this->orderonderdelen->contains($orderonderdelen)) {
$this->orderonderdelen->add($orderonderdelen);
$orderonderdelen->setBestelling($this);
}
return $this;
}
public function removeOrderonderdelen(Orderonderdeel $orderonderdelen): static
{
if ($this->orderonderdelen->removeElement($orderonderdelen)) {
// set the owning side to null (unless already changed)
if ($orderonderdelen->getBestelling() === $this) {
$orderonderdelen->setBestelling(null);
}
}
return $this;
}
public function getInvoerdatum(): ?\DateTimeInterface
{
return $this->invoerdatum;
}
public function setInvoerdatum(?\DateTimeInterface $invoerdatum): static
{
$this->invoerdatum = $invoerdatum;
return $this;
}
public function getLeverdatum(): ?\DateTimeInterface
{
return $this->leverdatum;
}
public function setLeverdatum(?\DateTimeInterface $leverdatum): static
{
$this->leverdatum = $leverdatum;
return $this;
}
public function getLeverweek(): ?int
{
return $this->leverweek;
}
public function setLeverweek(?int $leverweek): static
{
$this->leverweek = $leverweek;
return $this;
}
public function getBestelnr(): ?string
{
return $this->bestelnr;
}
public function setBestelnr(?string $bestelnr): static
{
$this->bestelnr = $bestelnr;
return $this;
}
public function getStatus(): ?Bestelstatus
{
return $this->status;
}
public function setStatus(?bestelstatus $status): static
{
$this->status = $status;
return $this;
}
public function getOmschrijving(): ?string
{
return $this->omschrijving;
}
public function setOmschrijving(?string $omschrijving): static
{
$this->omschrijving = $omschrijving;
return $this;
}
public function getIngevoerdDoor(): ?user
{
return $this->ingevoerd_door;
}
public function setIngevoerdDoor(?user $ingevoerd_door): static
{
$this->ingevoerd_door = $ingevoerd_door;
return $this;
}
public function getGewijzigdDoor(): ?user
{
return $this->gewijzigd_door;
}
public function setGewijzigdDoor(?user $gewijzigd_door): static
{
$this->gewijzigd_door = $gewijzigd_door;
return $this;
}
public function getStatusIngevoerdDoor(): ?user
{
return $this->status_ingevoerd_door;
}
public function setStatusIngevoerdDoor(?user $status_ingevoerd_door): static
{
$this->status_ingevoerd_door = $status_ingevoerd_door;
return $this;
}
public function getStatusTeControlerenDoor(): ?user
{
return $this->status_te_controleren_door;
}
public function setStatusTeControlerenDoor(?user $status_te_controleren_door): static
{
$this->status_te_controleren_door = $status_te_controleren_door;
return $this;
}
public function getStatusTeVerzendenDoor(): ?user
{
return $this->status_te_verzenden_door;
}
public function setStatusTeVerzendenDoor(?user $status_te_verzenden_door): static
{
$this->status_te_verzenden_door = $status_te_verzenden_door;
return $this;
}
public function getStatusVerzondenDoor(): ?user
{
return $this->status_verzonden_door;
}
public function setStatusVerzondenDoor(?user $status_verzonden_door): static
{
$this->status_verzonden_door = $status_verzonden_door;
return $this;
}
public function getStatusBevestigdDoor(): ?user
{
return $this->status_bevestigd_door;
}
public function setStatusBevestigdDoor(?user $status_bevestigd_door): static
{
$this->status_bevestigd_door = $status_bevestigd_door;
return $this;
}
public function getStatusDeelsGeleverdDoor(): ?user
{
return $this->status_deels_geleverd_door;
}
public function setStatusDeelsGeleverdDoor(?user $status_deels_geleverd_door): static
{
$this->status_deels_geleverd_door = $status_deels_geleverd_door;
return $this;
}
public function getStatusGeleverdDoor(): ?user
{
return $this->status_geleverd_door;
}
public function setStatusGeleverdDoor(?user $status_geleverd_door): static
{
$this->status_geleverd_door = $status_geleverd_door;
return $this;
}
public function getIngevoerdDatum(): ?\DateTimeInterface
{
return $this->ingevoerd_datum;
}
public function setIngevoerdDatum(?\DateTimeInterface $ingevoerd_datum): static
{
$this->ingevoerd_datum = $ingevoerd_datum;
return $this;
}
public function getGewijzigdDatum(): ?\DateTimeInterface
{
return $this->gewijzigd_datum;
}
public function setGewijzigdDatum(?\DateTimeInterface $gewijzigd_datum): static
{
$this->gewijzigd_datum = $gewijzigd_datum;
return $this;
}
public function getStatusIngevoerdDatum(): ?\DateTimeInterface
{
return $this->status_ingevoerd_datum;
}
public function setStatusIngevoerdDatum(?\DateTimeInterface $status_ingevoerd_datum): static
{
$this->status_ingevoerd_datum = $status_ingevoerd_datum;
return $this;
}
public function getStatusTeControlerenDatum(): ?\DateTimeInterface
{
return $this->status_te_controleren_datum;
}
public function setStatusTeControlerenDatum(\DateTimeInterface $status_te_controleren_datum): static
{
$this->status_te_controleren_datum = $status_te_controleren_datum;
return $this;
}
public function getStatusTeVerzendenDatum(): ?\DateTimeInterface
{
return $this->status_te_verzenden_datum;
}
public function setStatusTeVerzendenDatum(\DateTimeInterface $status_te_verzenden_datum): static
{
$this->status_te_verzenden_datum = $status_te_verzenden_datum;
return $this;
}
public function getStatusVerzondenDatum(): ?\DateTimeInterface
{
return $this->status_verzonden_datum;
}
public function setStatusVerzondenDatum(\DateTimeInterface $status_verzonden_datum): static
{
$this->status_verzonden_datum = $status_verzonden_datum;
return $this;
}
public function getStatusBevestigdDatum(): ?\DateTimeInterface
{
return $this->status_bevestigd_datum;
}
public function setStatusBevestigdDatum(\DateTimeInterface $status_bevestigd_datum): static
{
$this->status_bevestigd_datum = $status_bevestigd_datum;
return $this;
}
public function getStatusDeelsGeleverdDatum(): ?\DateTimeInterface
{
return $this->status_deels_geleverd_datum;
}
public function setStatusDeelsGeleverdDatum(\DateTimeInterface $status_deels_geleverd_datum): static
{
$this->status_deels_geleverd_datum = $status_deels_geleverd_datum;
return $this;
}
public function getStatusGeleverdDatum(): ?\DateTimeInterface
{
return $this->status_geleverd_datum;
}
public function setStatusGeleverdDatum(\DateTimeInterface $status_geleverd_datum): static
{
$this->status_geleverd_datum = $status_geleverd_datum;
return $this;
}
public function getLeverweekdatum(): ?\DateTimeInterface
{
return $this->leverweekdatum;
}
public function setLeverweekdatum(?\DateTimeInterface $leverweekdatum): static
{
$this->leverweekdatum = $leverweekdatum;
return $this;
}
public function getVestigingen(): string
{
$values = array();
$orderOnderdelen = $this->getOrderonderdelen();
if ($orderOnderdelen !== null) {
foreach ($orderOnderdelen as $orderOnderdeel) {
if ($orderOnderdeel->getOrderid() !== null) {
$vestiging = $orderOnderdeel->getOrderid()->getVestiging();
$values[] = $vestiging;
}
}
}
$values = array_unique($values);
return implode(",", $values);
}
public function isVolgensafspraak(): ?bool
{
return $this->volgensafspraak;
}
public function getVolgensafspraak(): ?bool
{
return $this->volgensafspraak;
}
public function setVolgensafspraak(?bool $volgensafspraak): static
{
$this->volgensafspraak = $volgensafspraak;
return $this;
}
}