src/Entity/Product/ProductVariant.php line 19

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity\Product;
  4. use App\Entity\StockFamily\StockFamily;
  5. use Brille24\SyliusTierPricePlugin\Entity\ProductVariantInterface;
  6. use Brille24\SyliusTierPricePlugin\Traits\TierPriceableTrait;
  7. use App\Entity\Configurator\Model;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Sylius\Component\Core\Model\ProductVariant as BaseProductVariant;
  10. use Sylius\Component\Product\Model\ProductVariantTranslationInterface;
  11. /**
  12.  * @ORM\Entity
  13.  * @ORM\Table(name="sylius_product_variant")
  14.  */
  15. class ProductVariant extends BaseProductVariant implements ProductVariantInterface
  16. {
  17.     use TierPriceableTrait;
  18.     public function __construct()
  19.     {
  20.         parent::__construct();
  21.         $this->initTierPriceableTrait();
  22.     }
  23.     /**
  24.      * @ORM\Column(name="old_id", type="integer", nullable=true)
  25.      */
  26.     private ?int $oldId;
  27.     /**
  28.      * @ORM\Column(name="minimal_quantity", type="integer", nullable=false, options={"default":1})
  29.      */
  30.     private ?int $minimalQuantity 1;
  31.     /**
  32.      * @ORM\OneToOne(targetEntity=Model::class, inversedBy="productVariant")
  33.      * @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
  34.      */
  35.     private ?Model $model null;
  36.     /**
  37.      * @ORM\ManyToOne(targetEntity=StockFamily::class,cascade={"persist"},  inversedBy="productVariants")
  38.      * @ORM\JoinColumn(name="stock_family_id", referencedColumnName="id", nullable=true)
  39.      */
  40.     private ?StockFamily $stockFamily null;
  41.     /**
  42.      * @ORM\OneToMany(
  43.      *   targetEntity="Brille24\SyliusTierPricePlugin\Entity\TierPriceInterface",
  44.      *   mappedBy="productVariant",
  45.      *   cascade={"all"},
  46.      *   orphanRemoval = true
  47.      * )
  48.      * @ORM\OrderBy({"customerGroup" = "ASC", "qty" = "ASC"})
  49.      *
  50.      */
  51.     protected $tierPrices;
  52.     /**
  53.      * @ORM\Column(name="international_description", type="string", length=70, nullable=true)
  54.      * description en anglais pour les envois à l'international (max 70 caractères))
  55.      */
  56.     private ?string $internationalDescription null;
  57.     protected function createTranslation(): ProductVariantTranslationInterface
  58.     {
  59.         return new ProductVariantTranslation();
  60.     }
  61.     public function getDescription(): ?string
  62.     {
  63.         return $this->getTranslation()->getDescription();
  64.     }
  65.     /**
  66.      * @return Model|null
  67.      */
  68.     public function getModel(): ?Model
  69.     {
  70.         return $this->model;
  71.     }
  72.     public function setModel(?Model $model): void
  73.     {
  74.         $this->model $model;
  75.     }
  76.     /**
  77.      * @return StockFamily|null
  78.      */
  79.     public function getStockFamily(): ?StockFamily
  80.     {
  81.         return $this->stockFamily;
  82.     }
  83.     /**
  84.      * @param StockFamily|null $stockFamily
  85.      */
  86.     public function setStockFamily(?StockFamily $stockFamily): void
  87.     {
  88.         $this->stockFamily $stockFamily;
  89.     }
  90.     /**
  91.      * @return int|null
  92.      */
  93.     public function getOldId(): ?int
  94.     {
  95.         return $this->oldId;
  96.     }
  97.     /**
  98.      * @param int|null $oldId
  99.      */
  100.     public function setOldId(?int $oldId): void
  101.     {
  102.         $this->oldId $oldId;
  103.     }
  104.     /**
  105.      * @return int|null
  106.      */
  107.     public function getMinimalQuantity(): ?int
  108.     {
  109.         return $this->minimalQuantity;
  110.     }
  111.     /**
  112.      * @param int|null $minimalQuantity
  113.      */
  114.     public function setMinimalQuantity(?int $minimalQuantity): void
  115.     {
  116.         $this->minimalQuantity $minimalQuantity;
  117.     }
  118.     public function getInternationalDescription(): ?string
  119.     {
  120.         return $this->internationalDescription;
  121.     }
  122.     public function setInternationalDescription(?string $internationalDescription): void
  123.     {
  124.         if ($internationalDescription !== null) {
  125.             $internationalDescription mb_substr($internationalDescription070);
  126.         }
  127.         $this->internationalDescription $internationalDescription;
  128.     }
  129. }