<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\OneToMany;
use Doctrine\ORM\Mapping\OrderBy;
use Doctrine\ORM\Mapping\Table as Table;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Company
*
* @Table(name="company")
* @Entity(repositoryClass="App\AtechNet\CoreBundle\Repository\CompanyRepository")
* @HasLifecycleCallbacks
*/
class Company extends AbstractSortableEntity
{
public const int COMPANY_ID_FURBIFY_SRO = 1;
public const int COMPANY_ID_FURBIFY_HUNGARY_KFT = 2;
public const int COMPANY_ID_NEXTIT_SRO = 3;
/**
* @var int
*
* @Assert\NotNull
*
* @Column(name="code", type="decimal", unique=true)
*/
private $code;
/**
* @var Language
*
* @Assert\NotNull
*
* @ManyToOne(targetEntity="Language")
* @JoinColumn(name="language_id", referencedColumnName="id")
*/
private $language;
/**
* @var string
*
* @Assert\NotNull
*
* @Column(name="name", type="text")
*/
private $name;
/**
* @var string
*
* @Assert\NotNull
*
* @Column(name="currency", type="text")
*/
private $currency;
/**
* @var float
*
* @Column(name="vat", type="decimal", precision=10, scale=2)
*/
private $vat;
/**
* @var int
*
* @Assert\NotNull
*
* @Column(name="warranty", type="integer")
*/
private $warranty;
/**
* @var string
*
* @Column(name="business_id", type="string", length=16, nullable=false)
*/
private $businessId;
/**
* @var string
*
* @Column(name="tax_id", type="string", length=16, nullable=false)
*/
private $taxId;
/**
* @var string
*
* @Column(name="vat_id", type="string", length=16, nullable=false)
*/
private $vatId;
/**
* @var string
*
* @Column(name="street", type="string", length=32, nullable=false)
*/
private $street;
/**
* @var string
*
* @Column(name="city", type="string", length=32, nullable=false)
*/
private $city;
/**
* @var string
*
* @Column(name="zip", type="string", length=16, nullable=false)
*/
private $zip;
/**
* @var string
*
* @Column(name="country", type="string", length=2, nullable=false)
*/
private $country;
/**
* @var string
*
* @Column(name="ship_street", type="string", length=32, nullable=true)
*/
private $shipStreet;
/**
* @var string
*
* @Column(name="ship_city", type="string", length=32, nullable=true)
*/
private $shipCity;
/**
* @var string
*
* @Column(name="ship_zip", type="string", length=16, nullable=true)
*/
private $shipZip;
/**
* @var string
*
* @Column(name="ship_country", type="string", length=2, nullable=true)
*/
private $shipCountry;
/**
* @var string
*
* @Column(name="iban", type="string", length=34, nullable=true)
*/
private $iban;
/**
* @var string
*
* @Column(name="swift", type="string", length=10, nullable=true)
*/
private $swift;
/**
* @var ArrayCollection
*
* @OneToMany(targetEntity="Stock", mappedBy="company", orphanRemoval=true)
* @OrderBy({"title" = "DESC"})
**/
private $stocks;
/**
* @var ArrayCollection
*
* @OneToMany(targetEntity="DocumentYear", mappedBy="company", orphanRemoval=true)
* @OrderBy({"created" = "DESC"})
**/
private $documentYears;
public function __construct()
{
parent::__construct();
$this->stocks = new ArrayCollection();
}
/**
* @return Language
*/
public function getLanguage()
{
return $this->language;
}
/**
* @param Language $language
*/
public function setLanguage($language)
{
$this->language = $language;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getCurrency()
{
return $this->currency;
}
/**
* @param string $currency
*/
public function setCurrency($currency)
{
$this->currency = $currency;
}
/**
* @return float
*/
public function getVat()
{
return $this->vat;
}
/**
* @param float $vat
*/
public function setVat($vat)
{
$this->vat = $vat;
}
/**
* @Assert\IsTrue
*/
public function isVatValid()
{
return $this->vat >= 0;
}
/**
* @return int
*/
public function getCode()
{
return $this->code;
}
/**
* @param int $code
*/
public function setCode($code)
{
$this->code = $code;
}
/**
* @return int
*/
public function getWarranty()
{
return $this->warranty;
}
/**
* @param int $warranty
*/
public function setWarranty($warranty)
{
$this->warranty = $warranty;
}
/**
* @return string
*/
public function getBusinessId()
{
return $this->businessId;
}
/**
* @param string $businessId
*/
public function setBusinessId($businessId)
{
$this->businessId = $businessId;
}
/**
* @return string
*/
public function getTaxId()
{
return $this->taxId;
}
/**
* @param string $taxId
*/
public function setTaxId($taxId)
{
$this->taxId = $taxId;
}
/**
* @return string
*/
public function getVatId()
{
return $this->vatId;
}
/**
* @param string $vatId
*/
public function setVatId($vatId)
{
$this->vatId = $vatId;
}
/**
* @return string
*/
public function getStreet()
{
return $this->street;
}
/**
* @param string $street
*/
public function setStreet($street)
{
$this->street = $street;
}
/**
* @return string
*/
public function getCity()
{
return $this->city;
}
/**
* @param string $city
*/
public function setCity($city)
{
$this->city = $city;
}
/**
* @return string
*/
public function getZip()
{
return $this->zip;
}
/**
* @param string $zip
*/
public function setZip($zip)
{
$this->zip = $zip;
}
/**
* @return string
*/
public function getCountry()
{
return $this->country;
}
/**
* @param string $country
*/
public function setCountry($country)
{
$this->country = $country;
}
/**
* @return string
*/
public function getShipStreet()
{
return $this->shipStreet;
}
/**
* @param string $shipStreet
*/
public function setShipStreet($shipStreet)
{
$this->shipStreet = $shipStreet;
}
/**
* @return string
*/
public function getShipCity()
{
return $this->shipCity;
}
/**
* @param string $shipCity
*/
public function setShipCity($shipCity)
{
$this->shipCity = $shipCity;
}
/**
* @return string
*/
public function getShipZip()
{
return $this->shipZip;
}
/**
* @param string $shipZip
*/
public function setShipZip($shipZip)
{
$this->shipZip = $shipZip;
}
/**
* @return string
*/
public function getShipCountry()
{
return $this->shipCountry;
}
/**
* @param string $shipCountry
*/
public function setShipCountry($shipCountry)
{
$this->shipCountry = $shipCountry;
}
/**
* @return ArrayCollection
*/
public function getStocks()
{
return $this->stocks;
}
/**
* @return string
*/
public function getIban()
{
return $this->iban;
}
/**
* @param string $iban
*/
public function setIban($iban)
{
$this->iban = $iban;
return $this;
}
/**
* @return string
*/
public function getSwift()
{
return $this->swift;
}
/**
* @param string $swift
*/
public function setSwift($swift)
{
$this->swift = $swift;
return $this;
}
/**
* @return ArrayCollection
*/
public function getDocumentYears()
{
return $this->documentYears;
}
/**
* @param string $price
* @param int $vat
* @return string
*/
public function createVatPrice($price, $vat)
{
return number_format($price * $this->getVatMultiplier($vat), 2, '.', '');
}
/**
* @param int $vat
* @return int
*/
public function getVatMultiplier($vat)
{
return $vat != 0 ? 1 + ($vat / 100) : 1;
}
}