<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Index;
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;
/**
* ProductCommission
*
* @Table(name="products__commissions", indexes={
* @Index(name="status", columns={"status"})
* })
* @Entity(repositoryClass="App\AtechNet\CoreBundle\Repository\ProductCommissionRepository")
*/
class ProductCommission extends AbstractSignedEntity
{
public const Status_AtPartner = 1;
public const Status_Sold = 2;
public const Status_Returned_Not_Verified = 3;
public const Status_Returned = 4;
public static function getStatusChoices()
{
return [
self::Status_AtPartner => 'At partner',
self::Status_Sold => 'Sold',
self::Status_Returned_Not_Verified => 'Returned, not verified',
self::Status_Returned => 'Returned',
];
}
/**
* @var Customer
*
* @ManyToOne(targetEntity="Customer", inversedBy="commissions")
* @JoinColumn(name="customer_id", referencedColumnName="id")
*/
private $customer;
/**
* @var Product
*
* @ManyToOne(targetEntity="Product", inversedBy="commissions")
* @JoinColumn(name="product_id", referencedColumnName="id")
*/
private $product;
/**
* @var integer
*
* @Column(name="status", type="integer")
*/
private $status;
/**
* @var string
*
* @Column(name="serial_number", type="string", length=255)
*/
private $serialNumber;
/**
* @var string
*
* @Column(name="aiken_code", type="string", length=32, nullable=true )
*/
private $aikenCode;
/**
* @var string
*
* @Column(name="invoice_number", type="string", length=255, nullable=true)
*/
private $invoiceNumber;
/**
* @var StockMovement
*
* @ManyToOne(targetEntity="StockMovement", inversedBy="commissions")
* @JoinColumn(name="stock_movement_id", referencedColumnName="id", nullable=true)
*/
private $stockMovement;
/**
* @var ProductCommission
*
* @ManyToOne(targetEntity="ProductCommission", inversedBy="children")
* @JoinColumn(name="parent_id", referencedColumnName="id", nullable=true)
*/
private $parent;
/**
* @var ArrayCollection
*
* @OneToMany(targetEntity="ProductCommission", mappedBy="parent", orphanRemoval=true)
* @OrderBy({"created" = "ASC"})
**/
private $children;
/**
* @var bool
*
* @Column(name="container", type="boolean")
*/
private $container = false;
/**
* @var ArrayCollection
*
* @OneToMany(targetEntity="ProductCommissionAccessory", mappedBy="productCommission", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $accessories;
/**
* @return Customer
*/
public function getCustomer()
{
return $this->customer;
}
/**
* @param Customer $customer
*/
public function setCustomer($customer)
{
$this->customer = $customer;
}
/**
* @return Product
*/
public function getProduct()
{
return $this->product;
}
/**
* @param Product $product
*/
public function setProduct($product)
{
$this->product = $product;
}
/**
* Set status
*
* @param integer $status
* @return ProductCommission
*/
public function setStatus($status)
{
$this->status = $status;
return $this;
}
/**
* Get status
*
* @return integer
*/
public function getStatus()
{
return $this->status;
}
/**
* @return string
* @internal param $key
*/
public function getStatusTitle()
{
return self::getStatusChoices()[$this->status];
}
/**
* @return string
*/
public function getSerialNumber()
{
return $this->serialNumber;
}
/**
* @param string $serialNumber
*/
public function setSerialNumber($serialNumber)
{
$this->serialNumber = $serialNumber;
}
/**
* @return string
*/
public function getAikenCode()
{
return $this->aikenCode;
}
/**
* @param string $aikenCode
*/
public function setAikenCode($aikenCode)
{
$this->aikenCode = $aikenCode;
}
/**
* @return string
*/
public function getInvoiceNumber()
{
return $this->invoiceNumber;
}
/**
* @param string $invoiceNumber
*/
public function setInvoiceNumber($invoiceNumber)
{
$this->invoiceNumber = $invoiceNumber;
}
/**
* @return StockMovement
*/
public function getStockMovement()
{
return $this->stockMovement;
}
/**
* @param StockMovement $stockMovement
*/
public function setStockMovement($stockMovement)
{
$this->stockMovement = $stockMovement;
}
/**
* @return ProductCommission
*/
public function getParent()
{
return $this->parent;
}
/**
* @param ProductCommission $parent
*/
public function setParent($parent)
{
$this->parent = $parent;
}
/**
* @return ArrayCollection
*/
public function getChildren()
{
return $this->children;
}
/**
* @return bool
*/
public function isContainer()
{
return $this->container;
}
/**
* @param bool $container
*/
public function setContainer($container)
{
$this->container = $container;
}
/**
* @return Collection
*/
public function getAccessories(): Collection
{
return $this->accessories;
}
}