<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
/**
* @ORM\Entity(repositoryClass="App\Repository\PricelistRepository")
* @ORM\EntityListeners({"App\Listener\EntityListener"})
*/
class Pricelist
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Product", inversedBy="pricelists")
*/
private $product;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Variant", inversedBy="pricelists")
*/
private $variant;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Payment", inversedBy="pricelists")
*/
private $payment;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Transport", inversedBy="pricelists")
*/
private $transport;
/**
* @ORM\Column(type="float")
*/
private $tax;
/**
* @Serializer\Groups({"api"})
* @Serializer\SerializedName("discount")
*
* @ORM\Column(type="float")
*/
private $discountPercent = 0;
/**
* @Serializer\Groups({"api"})
* @Serializer\SerializedName("price")
*
* @ORM\Column(type="float")
*/
private $price;
/**
* @Serializer\Groups({"api"})
* @Serializer\SerializedName("priceOriginal")
* @ORM\Column(type="float", nullable=true)
*/
private $priceOriginal;
/**
* @ORM\Column(type="string", length=3)
*/
private $currency;
/**
* @ORM\Column(type="datetime")
*/
private $createts;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumn(nullable=false)
*/
private $createUser;
public function __construct($currency = null)
{
if(!empty($currency)){
$this->setCurrency($currency);
}
$this->setTax(21);
}
public function getId(): ?int
{
return $this->id;
}
public function getProduct(): ?Product
{
return $this->product;
}
public function setProduct(?Product $product): self
{
$this->product = $product;
return $this;
}
public function getPayment(): ?Payment
{
return $this->payment;
}
public function setPayment(?Payment $payment): self
{
$this->payment = $payment;
return $this;
}
public function getTransport(): ?Transport
{
return $this->transport;
}
public function setTransport(?Transport $transport): self
{
$this->transport = $transport;
return $this;
}
public function getTax(): ?float
{
return $this->tax;
}
public function setTax(float $tax): self
{
$this->tax = $tax;
return $this;
}
public function getPrice(): ?float
{
return $this->price;
}
public function setPrice(float $price): self
{
$this->price = round($price,2);
return $this;
}
public function getPriceOriginal(): ?float
{
return $this->priceOriginal;
}
public function setPriceOriginal(?float $priceOriginal): self
{
$this->priceOriginal = round($priceOriginal,2);
return $this;
}
public function getCurrency(): ?string
{
return $this->currency;
}
public function setCurrency(string $currency): self
{
$this->currency = $currency;
return $this;
}
public function getVariant(): ?Variant
{
return $this->variant;
}
public function setVariant(?Variant $variant): self
{
$this->variant = $variant;
return $this;
}
public function getCreatets(): ?\DateTimeInterface
{
return $this->createts;
}
public function setCreatets(\DateTimeInterface $createts): self
{
$this->createts = $createts;
return $this;
}
public function getCreateUser(): ?User
{
return $this->createUser;
}
public function setCreateUser(?User $createUser): self
{
$this->createUser = $createUser;
return $this;
}
public function getEditts(): ?\DateTimeInterface
{
return $this->editts;
}
public function setEditts(?\DateTimeInterface $editts): self
{
$this->editts = $editts;
return $this;
}
public function getEditUser(): ?User
{
return $this->editUser;
}
public function setEditUser(?User $editUser): self
{
$this->editUser = $editUser;
return $this;
}
/**
* Get DiscountPercent
*
* @return null|float
*/
public function getDiscountPercent(): ?float
{
return str_replace(',','.',$this->discountPercent);
}
/**
* Set DiscountPercent
*
* @param mixed $discountPercent
*/
public function setDiscountPercent( $discountPercent )
{
$this->discountPercent = $discountPercent;
}
public function calcDiscountPercent( )
{
if( !empty($this->getPrice()) && !empty($this->getPriceOriginal()) ){
$this->setDiscountPercent(round(100 - (($this->getPrice()/$this->getPriceOriginal())*100)));
}else{
$this->setDiscountPercent(0);
}
}
}