<?php
declare(strict_types=1);
namespace App\Infrastructure\Doctrine\Entity;
use App\Domain\Common\Entity\IzOrderColor;
use App\Domain\Common\Entity\IzOrderProduct;
use App\Domain\Common\Entity\IzOrderProductDivision;
use App\Domain\Common\Entity\IzOrderProductRange;
use App\Domain\Common\Entity\IzOrderTvaParameter;
use App\Infrastructure\Doctrine\Entity\Traits\DeletableTrait;
use App\Infrastructure\Resolver\ProductPictureResolver;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass="App\Infrastructure\Doctrine\Repository\DoctrineIzOrderProductRepository")
*
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=false)
*/
class DoctrineIzOrderProduct implements IzOrderProduct
{
use DeletableTrait;
/**
* @ORM\Id
* @ORM\Column(type="string", length=32, unique=true)
*/
private string $codeArticle1 = '';
/**
* @ORM\Column(type="string", length=32, nullable=true)
*/
private ?string $cleDeRecherche = null;
/**
* @ORM\Column(type="string", length=191, nullable=true)
*/
private ?string $descriptionCourte = null;
/**
* @ORM\ManyToOne(targetEntity="App\Infrastructure\Doctrine\Entity\DoctrineIzOrderProductDivision", inversedBy="products")
* @ORM\JoinColumn(name="code_division", referencedColumnName="code_division")
*/
private ?IzOrderProductDivision $divisionProduit = null;
/**
* @ORM\ManyToOne(targetEntity="App\Infrastructure\Doctrine\Entity\DoctrineIzOrderProductRange", inversedBy="products")
* @ORM\JoinColumn(name="code_gamme", referencedColumnName="code_gamme")
*/
private ?IzOrderProductRange $codeGamme = null;
/**
* @ORM\Column(type="string", length=191, nullable=true)
*/
private ?string $codeBarre = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
private ?float $poids = null;
/**
* @ORM\Column(type="integer")
*/
private int $stockPhysique = 0;
/**
* @ORM\Column(type="integer")
*/
private int $stockDisponible = 0;
/**
* @ORM\ManyToOne(
* targetEntity="App\Infrastructure\Doctrine\Entity\DoctrineIzOrderColor",
* inversedBy="products",
* cascade={"PERSIST"},
* )
* @ORM\JoinColumn(onDelete="SET NULL")
*/
private ?IzOrderColor $codeCouleur = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
private ?float $hauteur = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
private ?float $largeur = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
private ?float $profondeur = null;
/**
* @ORM\Column(type="string", length=191, nullable=true)
*/
private ?string $designation = null;
/**
* @ORM\Column(type="text", nullable=true)
*/
private ?string $caracteristique = null;
/**
* @ORM\Column(type="string", length=191, nullable=true)
*/
private ?string $composition = null;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private ?int $colisage = null;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private ?int $quantiteParCarton = null;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private ?int $codeDeGestion = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
private ?float $discountPrice = null;
/**
* @ORM\Column(type="float", nullable=true)
*/
private ?float $discountPercent = null;
/**
* @ORM\ManyToOne(targetEntity="App\Infrastructure\Doctrine\Entity\DoctrineIzOrderTvaParameter")
*/
private ?IzOrderTvaParameter $codeTva = null;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $pictures = [];
public function getCodeArticle1(): string
{
return $this->codeArticle1;
}
public function setCodeArticle1(string $codeArticle1): void
{
$this->codeArticle1 = $codeArticle1;
}
public function getCleDeRecherche(): ?string
{
return $this->cleDeRecherche;
}
public function setCleDeRecherche(?string $cleDeRecherche): void
{
$this->cleDeRecherche = $cleDeRecherche;
}
public function getDescriptionCourte(): ?string
{
return $this->descriptionCourte;
}
public function setDescriptionCourte(?string $descriptionCourte): void
{
$this->descriptionCourte = $descriptionCourte;
}
public function getDivisionProduit(): ?IzOrderProductDivision
{
return $this->divisionProduit;
}
public function setDivisionProduit(?IzOrderProductDivision $divisionProduit): void
{
$this->divisionProduit = $divisionProduit;
}
public function getCodeGamme(): ?IzOrderProductRange
{
return $this->codeGamme;
}
public function setCodeGamme(?IzOrderProductRange $codeGamme): void
{
$this->codeGamme = $codeGamme;
}
public function getCodeBarre(): ?string
{
return $this->codeBarre;
}
public function setCodeBarre(?string $codeBarre): void
{
$this->codeBarre = $codeBarre;
}
public function getPoids(): ?float
{
return $this->poids;
}
public function setPoids(?float $poids): void
{
$this->poids = $poids;
}
public function getStockPhysique(): int
{
return $this->stockPhysique;
}
public function setStockPhysique(int $stockPhysique): void
{
$this->stockPhysique = $stockPhysique;
}
public function getStockDisponible(): int
{
return $this->stockDisponible;
}
public function setStockDisponible(int $stockDisponible): void
{
$this->stockDisponible = $stockDisponible;
}
public function getCodeCouleur(): ?IzOrderColor
{
return $this->codeCouleur;
}
public function setCodeCouleur(?IzOrderColor $codeCouleur): void
{
$this->codeCouleur = $codeCouleur;
}
public function getHauteur(): ?float
{
return $this->hauteur;
}
public function setHauteur(?float $hauteur): void
{
$this->hauteur = $hauteur;
}
public function getLargeur(): ?float
{
return $this->largeur;
}
public function setLargeur(?float $largeur): void
{
$this->largeur = $largeur;
}
public function getProfondeur(): ?float
{
return $this->profondeur;
}
public function setProfondeur(?float $profondeur): void
{
$this->profondeur = $profondeur;
}
public function getDesignation(): ?string
{
return $this->designation;
}
public function setDesignation(?string $designation): void
{
$this->designation = $designation;
}
public function getCaracteristique(): ?string
{
return $this->caracteristique;
}
public function setCaracteristique(?string $caracteristique): void
{
$this->caracteristique = $caracteristique;
}
public function getComposition(): ?string
{
return $this->composition;
}
public function setComposition(?string $composition): void
{
$this->composition = $composition;
}
public function getColisage(): ?int
{
return $this->colisage;
}
public function setColisage(?int $colisage): void
{
$this->colisage = $colisage;
}
public function getQuantiteParCarton(): ?int
{
return $this->quantiteParCarton;
}
public function setQuantiteParCarton(?int $quantiteParCarton): void
{
$this->quantiteParCarton = $quantiteParCarton;
}
public function getCodeDeGestion(): ?int
{
return $this->codeDeGestion;
}
public function setCodeDeGestion(?int $codeDeGestion): void
{
$this->codeDeGestion = $codeDeGestion;
}
public function getDiscountPrice(): ?float
{
return $this->discountPrice;
}
public function setDiscountPrice(?float $discountPrice): void
{
$this->discountPrice = $discountPrice;
}
public function getDiscountPercent(): ?float
{
return $this->discountPercent;
}
public function setDiscountPercent(?float $discountPercent): void
{
$this->discountPercent = $discountPercent;
}
public function getCodeTva(): ?IzOrderTvaParameter
{
return $this->codeTva;
}
public function setCodeTva(?IzOrderTvaParameter $codeTva): void
{
$this->codeTva = $codeTva;
}
public function getPictures(): array
{
if (empty($this->pictures)) {
return [ProductPictureResolver::PICTURE_PLACEHOLDER => null];
}
return $this->pictures;
}
public function getFirstPicture(): string
{
return array_keys($this->getPictures())[0];
}
public function setPictures(array $pictures): void
{
$this->pictures = $pictures;
}
}