<?php
declare(strict_types=1);
namespace App\Entity\Product;
use App\Entity\StockFamily\StockFamily;
use Brille24\SyliusTierPricePlugin\Entity\ProductVariantInterface;
use Brille24\SyliusTierPricePlugin\Traits\TierPriceableTrait;
use App\Entity\Configurator\Model;
use Doctrine\ORM\Mapping as ORM;
use Sylius\Component\Core\Model\ProductVariant as BaseProductVariant;
use Sylius\Component\Product\Model\ProductVariantTranslationInterface;
/**
* @ORM\Entity
* @ORM\Table(name="sylius_product_variant")
*/
class ProductVariant extends BaseProductVariant implements ProductVariantInterface
{
use TierPriceableTrait;
public function __construct()
{
parent::__construct();
$this->initTierPriceableTrait();
}
/**
* @ORM\Column(name="old_id", type="integer", nullable=true)
*/
private ?int $oldId;
/**
* @ORM\Column(name="minimal_quantity", type="integer", nullable=false, options={"default":1})
*/
private ?int $minimalQuantity = 1;
/**
* @ORM\OneToOne(targetEntity=Model::class, inversedBy="productVariant")
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private ?Model $model = null;
/**
* @ORM\ManyToOne(targetEntity=StockFamily::class,cascade={"persist"}, inversedBy="productVariants")
* @ORM\JoinColumn(name="stock_family_id", referencedColumnName="id", nullable=true)
*/
private ?StockFamily $stockFamily = null;
/**
* @ORM\OneToMany(
* targetEntity="Brille24\SyliusTierPricePlugin\Entity\TierPriceInterface",
* mappedBy="productVariant",
* cascade={"all"},
* orphanRemoval = true
* )
* @ORM\OrderBy({"customerGroup" = "ASC", "qty" = "ASC"})
*
*/
protected $tierPrices;
/**
* @ORM\Column(name="international_description", type="string", length=70, nullable=true)
* description en anglais pour les envois à l'international (max 70 caractères))
*/
private ?string $internationalDescription = null;
protected function createTranslation(): ProductVariantTranslationInterface
{
return new ProductVariantTranslation();
}
public function getDescription(): ?string
{
return $this->getTranslation()->getDescription();
}
/**
* @return Model|null
*/
public function getModel(): ?Model
{
return $this->model;
}
public function setModel(?Model $model): void
{
$this->model = $model;
}
/**
* @return StockFamily|null
*/
public function getStockFamily(): ?StockFamily
{
return $this->stockFamily;
}
/**
* @param StockFamily|null $stockFamily
*/
public function setStockFamily(?StockFamily $stockFamily): void
{
$this->stockFamily = $stockFamily;
}
/**
* @return int|null
*/
public function getOldId(): ?int
{
return $this->oldId;
}
/**
* @param int|null $oldId
*/
public function setOldId(?int $oldId): void
{
$this->oldId = $oldId;
}
/**
* @return int|null
*/
public function getMinimalQuantity(): ?int
{
return $this->minimalQuantity;
}
/**
* @param int|null $minimalQuantity
*/
public function setMinimalQuantity(?int $minimalQuantity): void
{
$this->minimalQuantity = $minimalQuantity;
}
public function getInternationalDescription(): ?string
{
return $this->internationalDescription;
}
public function setInternationalDescription(?string $internationalDescription): void
{
if ($internationalDescription !== null) {
$internationalDescription = mb_substr($internationalDescription, 0, 70);
}
$this->internationalDescription = $internationalDescription;
}
}