<?php
namespace App\Entity;
use App\Repository\DeviceSaleRepository;
use Doctrine\ORM\Mapping as ORM;
use Wits\PaymentBundle\Entity\PayableInterface;
use Wits\PaymentBundle\Entity\Payment;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass=DeviceSaleRepository::class)
*/
class DeviceSale implements PayableInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="float")
*/
private $amount;
/**
* @ORM\Column(type="float")
*/
private $commission;
/**
* @ORM\ManyToOne(targetEntity=ProspectOnStore::class, inversedBy="deviceSales")
* @ORM\JoinColumn(nullable=false)
* @Assert\NotBlank
*/
private $prospectOnStore;
/**
* @ORM\OneToOne(targetEntity=Payment::class, cascade={"persist", "remove"})
*/
private $payment;
/**
* @ORM\Column(type="datetime")
*/
private $soldAt;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $description;
/**
* @ORM\OneToOne(targetEntity=Invoice::class, inversedBy="deviceSale", cascade={"persist", "remove"})
*/
private $invoice;
public function getId(): ?int
{
return $this->id;
}
/**
* Représente l'entité dans le BO
* @return string
*/
public function getLabel(){
return '#'.$this->getId().' ('.$this->amount.'€ | '.$this->commission.'€)';
}
public function getAmount(): ?float
{
return $this->amount;
}
public function setAmount(float $amount): self
{
$this->amount = $amount;
return $this;
}
public function getCommission(): ?float
{
return $this->commission;
}
public function getCommissionTTC(): ?float
{
return $this->commission;
}
public function getCommissionHT(): ?float
{
return round($this->commission/1.2,2);
}
public function setCommission(float $commission): self
{
$this->commission = $commission;
return $this;
}
public function setPercentageCommission(float $percentage): self
{
$commissionHT = round($this->getAmount()*$percentage/100, 2);
$this->commission = round($commissionHT*1.2, 2);
return $this;
}
public function getProspectOnStore(): ?ProspectOnStore
{
return $this->prospectOnStore;
}
public function setProspectOnStore(?ProspectOnStore $prospectOnStore): self
{
$this->prospectOnStore = $prospectOnStore;
return $this;
}
public function getPayment(): ?Payment
{
return $this->payment;
}
public function setPayment(?Payment $payment): self
{
$this->payment = $payment;
return $this;
}
public function getSoldAt(): ?\DateTimeInterface
{
return $this->soldAt;
}
public function setSoldAt(\DateTimeInterface $soldAt): self
{
$this->soldAt = $soldAt;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getLineItems(): array
{
return [];
}
public function getInvoice(): ?Invoice
{
return $this->invoice;
}
public function setInvoice(?Invoice $invoice): self
{
$this->invoice = $invoice;
return $this;
}
}