<?phpnamespace Roothirsch\ShopBundle\Entity;use Doctrine\ORM\Mapping as ORM;use Gedmo\Translatable\Translatable;use Roothirsch\CoreBundle\Entity\Traits\TimetrackedTrait;use Symfony\Component\Serializer\Annotation\Groups;use Gedmo\Mapping\Annotation as Gedmo;/** * @ORM\Entity(repositoryClass="Roothirsch\ShopBundle\Repository\TaxRepository") * @ORM\Table(name="shop_tax") */class Tax implements Translatable{ use TimetrackedTrait; /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") * @Groups({"list"}) */ private $id; /** * @Gedmo\Translatable * @ORM\Column(type="string", length=255) * @Groups({"list"}) */ private $name; /** * @ORM\Column(type="decimal", precision=5, scale=2) * @Groups({"list"}) */ private $rate; /** * @ORM\Column(type="date") * @Groups({"list"}) */ private $startDate; /** * @ORM\Column(type="boolean", options={"default": true}) * @Groups({"list"}) */ private $active = true; public function getId(): ?int { return $this->id; } public function getName(): ?string { return $this->name; } public function setName(string $name): self { $this->name = $name; return $this; } public function getRate(): ?string { return $this->rate; } public function setRate(string $rate): self { $this->rate = $rate; return $this; } public function getStartDate(): ?\DateTimeInterface { return $this->startDate; } public function setStartDate(\DateTimeInterface $startDate): self { $this->startDate = $startDate; return $this; } public function isActive(): bool { return $this->active; } public function setActive(bool $active): self { $this->active = $active; return $this; } public function getRateAsFloat(): float { return (float) $this->rate; } public function asFraction(): float { return (float) $this->rate / 100; } public function __toString(): string { return sprintf('%s (%s%% from %s)', $this->name, $this->rate, $this->startDate ? $this->startDate->format('Y-m-d') : '' ); }}