src/Entity/Product.php line 21
<?phpnamespace App\Entity;use App\Classes\AppConfig;use App\Classes\Data\StatusData;use App\Classes\Data\VatData;use App\Classes\Slugify;use App\Repository\ProductRepository;use DateTimeImmutable;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\DBAL\Types\Types;use Doctrine\ORM\Mapping as ORM;use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;#[ORM\Entity(repositoryClass: ProductRepository::class)]#[ORM\HasLifecycleCallbacks]#[ORM\Table(name: 'product', indexes: [new ORM\Index(columns: ['title'], name: 'title_index')])]#[UniqueEntity(fields: ['barcode'], message: 'U bazi već postoji proizvod sa ovim barkodom.')]class Product {#[ORM\Id]#[ORM\GeneratedValue]#[ORM\Column]private ?int $id = null;public function getImageUploadPath(): ?string {return $_ENV['PRODUCT_IMAGE_PATH'] . '/' . date('Y/m/d/') . Slugify::slugifyProductKey(trim($this->productKey)) . '/' ;}public function getAvatarUploadPath(): ?string {return $_ENV['PRODUCT_AVATAR_PATH'] . '/' . date('Y/m/d/') . Slugify::slugifyProductKey(trim($this->productKey)) . '/' ;}public function getThumbUploadPath(): ?string {return $_ENV['PRODUCT_THUMB_PATH'] . '/' . date('Y/m/d/') . Slugify::slugifyProductKey(trim($this->productKey)) . '/' ;}public function getImageUploadPathAdd(): ?string {return $_ENV['PRODUCT_IMAGE_PATH'] . '/manual/' ;}public function getThumbUploadPathAdd(): ?string {return $_ENV['PRODUCT_THUMB_PATH'] . '/manual/' ;}#[ORM\Column(length: 255)]private ?string $title = null;#[ORM\Column(length: 100, nullable: true)]private ?string $barcode = null;#[ORM\Column(length: 100, nullable: true)]private ?string $importCat = null;#[ORM\Column(length: 100, nullable: true)]private ?string $plainCategory = null;#[ORM\Column(length: 100, nullable: true)]private ?string $productKey = null;#[ORM\Column(length: 100, nullable: true)]private ?string $sku = null;#[ORM\Column]private ?int $vat = VatData::VAT_20;#[ORM\Column(nullable: true,)]private ?int $kolicina = null;#[ORM\Column(nullable: true,)]private ?int $sale = null;#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $weight = null;//aktuelna cena bez PDV#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $price = null;//aktuelna cena sa PDV#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $pricePDV = null;//prikaz kad je akcija#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $pricePrikaz = null;//nabavna cena bez PDV#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $priceNabavna = null;#[ORM\Column(nullable: true,)]private ?string $jedinicaMere = null;//cena kad je akcija sa PDV#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $priceDiscount = null;#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $percentDiscount = null;#[ORM\Column(type: Types::DECIMAL, precision: 15, scale: 2, nullable: true)]private ?string $priceDelivery = null;#[ORM\Column(nullable: true)]private ?string $daysDelivery = '7';#[ORM\ManyToMany(targetEntity: Label::class, fetch: "LAZY")]private Collection $label;#[ORM\ManyToOne(fetch: "LAZY", inversedBy: 'products')]private ?Factory $factory = null;#[ORM\ManyToOne(fetch: 'LAZY')]private ?Client $vendor = null;#[ORM\OneToMany(mappedBy: 'product', targetEntity: Comment::class, fetch: "LAZY")]private Collection $comment;#[ORM\Column(type: Types::TEXT, nullable: true,)]private ?string $options = null;#[ORM\Column(type: Types::TEXT, nullable: true,)]private ?string $deliveryDesc = null;#[ORM\Column(type: Types::TEXT, nullable: true,)]private ?string $description = null;#[ORM\Column(type: Types::TEXT, nullable: true,)]private ?string $metaTitle = null;#[ORM\Column(type: Types::TEXT, nullable: true,)]private ?string $metaDescription = null;#[ORM\Column(type: Types::TEXT, nullable: true,)]private ?string $metaKeywords = null;#[ORM\OneToMany(mappedBy: 'product', targetEntity: Image::class, cascade: ["persist", "remove"], fetch: "LAZY")]private Collection $image;#[ORM\OneToMany(mappedBy: 'product', targetEntity: Pdf::class, cascade: ["persist", "remove"], fetch: "LAZY")]private Collection $pdf;#[ORM\ManyToOne(targetEntity: self::class, fetch: "LAZY")]private ?self $editBy = null;#[ORM\ManyToOne(targetEntity: self::class, fetch: "LAZY")]private ?self $createdBy = null;#[ORM\Column]private bool $isSuspended = false;#[ORM\Column(nullable: true)]private ?bool $isXmlChange = null;#[ORM\Column]private bool $isShown = true;#[ORM\Column]private bool $isOutlet = false;#[ORM\Column]private bool $isOutOfStock = false;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockUspon = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockElementa = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockBb = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockDsc = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockEwe = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStock3g = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockPc = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockBtm = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockCt = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockVelteh = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockSim = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockMipal = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockIris = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockGembird = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockSpektar = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockVenera = null;#[ORM\Column(nullable: true)]private ?bool $isOutOfStockMs = null;#[ORM\Column]private bool $isNew = true;#[ORM\Column]private bool $isDiscount = false;#[ORM\Column]private bool $isBundle = false;#[ORM\Column]private bool $isSuperProduct = false;#[ORM\Column]private DateTimeImmutable $created;#[ORM\Column]private DateTimeImmutable $updated;#[ORM\OneToMany(mappedBy: 'product', targetEntity: Visit::class, cascade: ['persist', 'remove'], fetch: "LAZY")]private Collection $visits;#[ORM\OneToMany(mappedBy: 'product', targetEntity: Attribute::class, cascade: ['persist', 'remove'], fetch: "LAZY")]private Collection $attribute;#[ORM\ManyToOne(fetch: "LAZY", inversedBy: 'products')]private ?Image $mainImage = null;#[ORM\ManyToOne(targetEntity: self::class, fetch: "LAZY", inversedBy: 'products')]private ?self $connected = null;#[ORM\OneToMany(mappedBy: 'connected', targetEntity: self::class, fetch: "LAZY")]private Collection $products;#[ORM\ManyToOne(fetch: "LAZY", inversedBy: 'products')]private ?Category $category = null;#[ORM\ManyToMany(targetEntity: Sale::class, mappedBy: 'product', fetch: "LAZY")]private Collection $sales;#[ORM\ManyToOne(fetch: "LAZY", inversedBy: 'product')]private ?Choice $choice = null;#[ORM\OneToMany(mappedBy: 'product', targetEntity: Lagproduct::class, fetch: "LAZY")]private Collection $lagproducts;#[ORM\OneToMany(mappedBy: 'product', targetEntity: Supersale::class)]private Collection $supersales;#[ORM\PrePersist]public function prePersist(): void {$this->created = new DateTimeImmutable();$this->updated = new DateTimeImmutable();}#[ORM\PreUpdate]public function preUpdate(): void {$this->updated = new DateTimeImmutable();}public function __construct() {$this->label = new ArrayCollection();$this->image = new ArrayCollection();$this->pdf = new ArrayCollection();$this->comment = new ArrayCollection();$this->visits = new ArrayCollection();$this->attribute = new ArrayCollection();$this->products = new ArrayCollection();$this->sales = new ArrayCollection();$this->lagproducts = new ArrayCollection();$this->supersales = new ArrayCollection();}public function getId(): ?int {return $this->id;}/*** @return Collection<int, Label>*/public function getLabel(): Collection {return $this->label;}public function addLabel(Label $label): self {if (!$this->label->contains($label)) {$this->label->add($label);}return $this;}public function removeLabel(Label $label): self {$this->label->removeElement($label);return $this;}public function getVendor(): ?Client {return $this->vendor;}public function setVendor(?Client $vendor): self {$this->vendor = $vendor;return $this;}/*** @return Collection<int, Image>*/public function getImage(): Collection {return $this->image;}public function addImage(Image $image): self {if (!$this->image->contains($image)) {$this->image->add($image);$image->setProduct($this);}return $this;}public function removeImage(Image $image): self {if ($this->image->removeElement($image)) {// set the owning side to null (unless already changed)if ($image->getProduct() === $this) {$image->setProduct(null);}}return $this;}/*** @return Collection<int, Pdf>*/public function getPdf(): Collection {return $this->pdf;}public function addPdf(Pdf $pdf): self {if (!$this->pdf->contains($pdf)) {$this->pdf->add($pdf);$pdf->setProduct($this);}return $this;}public function removePdf(Pdf $pdf): self {if ($this->pdf->removeElement($pdf)) {// set the owning side to null (unless already changed)if ($pdf->getProduct() === $this) {$pdf->setProduct(null);}}return $this;}/*** @return string|null*/public function getBarcode(): ?string {return $this->barcode;}/*** @param string|null $barcode*/public function setBarcode(?string $barcode): void {$this->barcode = $barcode;}/*** @return string|null*/public function getProductKey(): ?string {return $this->productKey;}/*** @param string|null $productKey*/public function setProductKey(?string $productKey): void {$this->productKey = $productKey;}/*** @return Product|null*/public function getEditBy(): ?Product {return $this->editBy;}/*** @param Product|null $editBy*/public function setEditBy(?Product $editBy): void {$this->editBy = $editBy;}/*** @return Product|null*/public function getCreatedBy(): ?Product {return $this->createdBy;}/*** @param Product|null $createdBy*/public function setCreatedBy(?Product $createdBy): void {$this->createdBy = $createdBy;}/*** @return bool*/public function isSuspended(): bool {return $this->isSuspended;}/*** @param bool $isSuspended*/public function setIsSuspended(bool $isSuspended): void {$this->isSuspended = $isSuspended;}/*** @return DateTimeImmutable*/public function getCreated(): DateTimeImmutable {return $this->created;}/*** @param DateTimeImmutable $created*/public function setCreated(DateTimeImmutable $created): void {$this->created = $created;}/*** @return DateTimeImmutable*/public function getUpdated(): DateTimeImmutable {return $this->updated;}/*** @param DateTimeImmutable $updated*/public function setUpdated(DateTimeImmutable $updated): void {$this->updated = $updated;}public function getFactory(): ?Factory {return $this->factory;}public function setFactory(?Factory $factory): self {$this->factory = $factory;return $this;}/*** @return Collection<int, Comment>*/public function getComment(): Collection {return $this->comment;}public function addComment(Comment $comment): self {if (!$this->comment->contains($comment)) {$this->comment->add($comment);$comment->setProduct($this);}return $this;}public function removeComment(Comment $comment): self {if ($this->comment->removeElement($comment)) {// set the owning side to null (unless already changed)if ($comment->getProduct() === $this) {$comment->setProduct(null);}}return $this;}/*** @return Collection<int, Visit>*/public function getVisits(): Collection {return $this->visits;}public function addVisit(Visit $visit): self {if (!$this->visits->contains($visit)) {$this->visits->add($visit);$visit->setProduct($this);}return $this;}public function removeVisit(Visit $visit): self {if ($this->visits->removeElement($visit)) {// set the owning side to null (unless already changed)if ($visit->getProduct() === $this) {$visit->setProduct(null);}}return $this;}/*** @return string|null*/public function getTitle(): ?string {return $this->title;}/*** @param string|null $title*/public function setTitle(?string $title): void {$this->title = $title;}/*** @return float|null*/public function getWeight(): ?float {return $this->weight;}/*** @param float|null $weight*/public function setWeight(?float $weight): void {$this->weight = $weight;}/*** @return float|null*/public function getPrice(): ?float {return $this->price;}/*** @param float|null $price*/public function setPrice(?float $price): void {$this->price = $price;}/*** @return float|null*/public function getPriceDiscount(): ?float {return $this->priceDiscount;}/*** @param float|null $priceDiscount*/public function setPriceDiscount(?float $priceDiscount): void {$this->priceDiscount = $priceDiscount;}/*** @return float|null*/public function getPriceDelivery(): ?float {return $this->priceDelivery;}/*** @param float|null $priceDelivery*/public function setPriceDelivery(?float $priceDelivery): void {$this->priceDelivery = $priceDelivery;}/*** @return string|null*/public function getDaysDelivery(): ?string {return $this->daysDelivery;}/*** @param string|null $daysDelivery*/public function setDaysDelivery(?string $daysDelivery): void {$this->daysDelivery = $daysDelivery;}/*** @return string|null*/public function getOptions(): ?string {return $this->options;}/*** @param string|null $options*/public function setOptions(?string $options): void {$this->options = $options;}/*** @return string|null*/public function getDeliveryDesc(): ?string {return $this->deliveryDesc;}/*** @param string|null $deliveryDesc*/public function setDeliveryDesc(?string $deliveryDesc): void {$this->deliveryDesc = $deliveryDesc;}/*** @return string|null*/public function getDescription(): ?string {return $this->description;}/*** @param string|null $description*/public function setDescription(?string $description): void {$this->description = $description;}/*** @return string|null*/public function getMetaTitle(): ?string {return $this->metaTitle;}/*** @param string|null $metaTitle*/public function setMetaTitle(?string $metaTitle): void {$this->metaTitle = $metaTitle;}/*** @return string|null*/public function getMetaDescription(): ?string {return $this->metaDescription;}/*** @param string|null $metaDescription*/public function setMetaDescription(?string $metaDescription): void {$this->metaDescription = $metaDescription;}/*** @return string|null*/public function getMetaKeywords(): ?string {return $this->metaKeywords;}/*** @param string|null $metaKeywords*/public function setMetaKeywords(?string $metaKeywords): void {$this->metaKeywords = $metaKeywords;}/*** @return bool*/public function isShown(): bool {return $this->isShown;}/*** @param bool $isShown*/public function setIsShown(bool $isShown): void {$this->isShown = $isShown;}/*** @return bool*/public function isOutOfStock(): bool {return $this->isOutOfStock;}/*** @param bool $isOutOfStock*/public function setIsOutOfStock(bool $isOutOfStock): void {$this->isOutOfStock = $isOutOfStock;}/*** @return bool*/public function isNew(): bool {return $this->isNew;}/*** @param bool $isNew*/public function setIsNew(bool $isNew): void {$this->isNew = $isNew;}/*** @return bool*/public function isDiscount(): bool {return $this->isDiscount;}/*** @param bool $isDiscount*/public function setIsDiscount(bool $isDiscount): void {$this->isDiscount = $isDiscount;}/*** @return string|null*/public function getPercentDiscount(): ?string {return $this->percentDiscount;}/*** @param string|null $percentDiscount*/public function setPercentDiscount(?string $percentDiscount): void {$this->percentDiscount = $percentDiscount;}/*** @return int|null*/public function getVat(): ?int {return $this->vat;}/*** @param int|null $vat*/public function setVat(?int $vat): void {$this->vat = $vat;}/*** @return bool*/public function isSuperProduct(): bool {return $this->isSuperProduct;}/*** @param bool $isSuperProduct*/public function setIsSuperProduct(bool $isSuperProduct): void {$this->isSuperProduct = $isSuperProduct;}/*** @return Collection<int, Attribute>*/public function getAttribute(): Collection {return $this->attribute;}public function addAttribute(Attribute $attribute): self {if (!$this->attribute->contains($attribute)) {$this->attribute->add($attribute);$attribute->setProduct($this);}return $this;}public function removeAttribute(Attribute $attribute): self {if ($this->attribute->removeElement($attribute)) {// set the owning side to null (unless already changed)if ($attribute->getProduct() === $this) {$attribute->setProduct(null);}}return $this;}/*** @return string|null*/public function getJedinicaMere(): ?string {return $this->jedinicaMere;}/*** @param string|null $jedinicaMere*/public function setJedinicaMere(?string $jedinicaMere): void {$this->jedinicaMere = $jedinicaMere;}/*** @return int|null*/public function getKolicina(): ?int {return $this->kolicina;}/*** @param int|null $kolicina*/public function setKolicina(?int $kolicina): void {$this->kolicina = $kolicina;}public function getMainImage(): ?Image {return $this->mainImage;}public function setMainImage(?Image $mainImage): self {$this->mainImage = $mainImage;return $this;}public function getConnected(): ?self {return $this->connected;}public function setConnected(?self $connected): self {$this->connected = $connected;return $this;}/*** @return Collection<int, self>*/public function getProducts(): Collection {return $this->products;}public function addProduct(self $product): self {if (!$this->products->contains($product)) {$this->products->add($product);$product->setConnected($this);}return $this;}public function removeProduct(self $product): self {if ($this->products->removeElement($product)) {// set the owning side to null (unless already changed)if ($product->getConnected() === $this) {$product->setConnected(null);}}return $this;}public function getCategory(): ?Category {return $this->category;}public function setCategory(?Category $category): self {$this->category = $category;return $this;}/*** @return string|null*/public function getPricePDV(): ?string {return $this->pricePDV;}/*** @param string|null $pricePDV*/public function setPricePDV(?string $pricePDV): void {$this->pricePDV = $pricePDV;}/*** @return string|null*/public function getSku(): ?string {return $this->sku;}/*** @param string|null $sku*/public function setSku(?string $sku): void {$this->sku = $sku;}/*** @return string|null*/public function getPriceNabavna(): ?string {return $this->priceNabavna;}/*** @param string|null $priceNabavna*/public function setPriceNabavna(?string $priceNabavna): void {$this->priceNabavna = $priceNabavna;}/*** @return Collection<int, Sale>*/public function getSales(): Collection{return $this->sales;}public function addSale(Sale $sale): self{if (!$this->sales->contains($sale)) {$this->sales->add($sale);$sale->addProduct($this);}return $this;}public function removeSale(Sale $sale): self{if ($this->sales->removeElement($sale)) {$sale->removeProduct($this);}return $this;}public function getChoice(): ?Choice{return $this->choice;}public function setChoice(?Choice $choice): self{$this->choice = $choice;return $this;}/*** @return Collection<int, Lagproduct>*/public function getLagproducts(): Collection{return $this->lagproducts;}public function addLagproduct(Lagproduct $lagproduct): self{if (!$this->lagproducts->contains($lagproduct)) {$this->lagproducts->add($lagproduct);$lagproduct->setProduct($this);}return $this;}public function removeLagproduct(Lagproduct $lagproduct): self{if ($this->lagproducts->removeElement($lagproduct)) {// set the owning side to null (unless already changed)if ($lagproduct->getProduct() === $this) {$lagproduct->setProduct(null);}}return $this;}/*** @return bool*/public function isOutlet(): bool {return $this->isOutlet;}/*** @param bool $isOutlet*/public function setIsOutlet(bool $isOutlet): void {$this->isOutlet = $isOutlet;}/*** @return bool|null*/public function getIsOutOfStockUspon(): ?bool {return $this->isOutOfStockUspon;}/*** @param bool|null $isOutOfStockUspon*/public function setIsOutOfStockUspon(?bool $isOutOfStockUspon): void {$this->isOutOfStockUspon = $isOutOfStockUspon;}/*** @return bool|null*/public function getIsOutOfStockElementa(): ?bool {return $this->isOutOfStockElementa;}/*** @param bool|null $isOutOfStockElementa*/public function setIsOutOfStockElementa(?bool $isOutOfStockElementa): void {$this->isOutOfStockElementa = $isOutOfStockElementa;}/*** @return bool|null*/public function getIsOutOfStockBb(): ?bool {return $this->isOutOfStockBb;}/*** @param bool|null $isOutOfStockBb*/public function setIsOutOfStockBb(?bool $isOutOfStockBb): void {$this->isOutOfStockBb = $isOutOfStockBb;}/*** @return bool|null*/public function getIsOutOfStockDsc(): ?bool {return $this->isOutOfStockDsc;}/*** @param bool|null $isOutOfStockDsc*/public function setIsOutOfStockDsc(?bool $isOutOfStockDsc): void {$this->isOutOfStockDsc = $isOutOfStockDsc;}/*** @return bool|null*/public function getIsOutOfStockEwe(): ?bool {return $this->isOutOfStockEwe;}/*** @param bool|null $isOutOfStockEwe*/public function setIsOutOfStockEwe(?bool $isOutOfStockEwe): void {$this->isOutOfStockEwe = $isOutOfStockEwe;}/*** @return bool|null*/public function getIsOutOfStock3g(): ?bool {return $this->isOutOfStock3g;}/*** @param bool|null $isOutOfStock3g*/public function setIsOutOfStock3g(?bool $isOutOfStock3g): void {$this->isOutOfStock3g = $isOutOfStock3g;}/*** @return bool|null*/public function getIsOutOfStockBtm(): ?bool {return $this->isOutOfStockBtm;}/*** @param bool|null $isOutOfStockBtm*/public function setIsOutOfStockBtm(?bool $isOutOfStockBtm): void {$this->isOutOfStockBtm = $isOutOfStockBtm;}/*** @return bool|null*/public function getIsOutOfStockCt(): ?bool {return $this->isOutOfStockCt;}/*** @param bool|null $isOutOfStockCt*/public function setIsOutOfStockCt(?bool $isOutOfStockCt): void {$this->isOutOfStockCt = $isOutOfStockCt;}/*** @return bool|null*/public function getIsOutOfStockVelteh(): ?bool {return $this->isOutOfStockVelteh;}/*** @param bool|null $isOutOfStockVelteh*/public function setIsOutOfStockVelteh(?bool $isOutOfStockVelteh): void {$this->isOutOfStockVelteh = $isOutOfStockVelteh;}/*** @return bool|null*/public function getIsOutOfStockPc(): ?bool {return $this->isOutOfStockPc;}/*** @param bool|null $isOutOfStockPc*/public function setIsOutOfStockPc(?bool $isOutOfStockPc): void {$this->isOutOfStockPc = $isOutOfStockPc;}/*** @return string|null*/public function getPlainCategory(): ?string {return $this->plainCategory;}/*** @param string|null $plainCategory*/public function setPlainCategory(?string $plainCategory): void {$this->plainCategory = $plainCategory;}/*** @return string|null*/public function getImportCat(): ?string {return $this->importCat;}/*** @param string|null $importCat*/public function setImportCat(?string $importCat): void {$this->importCat = $importCat;}/*** @return string|null*/public function getPricePrikaz(): ?string {return $this->pricePrikaz;}/*** @param string|null $pricePrikaz*/public function setPricePrikaz(?string $pricePrikaz): void {$this->pricePrikaz = $pricePrikaz;}/*** @return bool|null*/public function getIsOutOfStockSim(): ?bool {return $this->isOutOfStockSim;}/*** @param bool|null $isOutOfStockSim*/public function setIsOutOfStockSim(?bool $isOutOfStockSim): void {$this->isOutOfStockSim = $isOutOfStockSim;}/*** @return bool|null*/public function getIsXmlChange(): ?bool {return $this->isXmlChange;}/*** @param bool|null $isXmlChange*/public function setIsXmlChange(?bool $isXmlChange): void {$this->isXmlChange = $isXmlChange;}/*** @return bool|null*/public function getIsOutOfStockMipal(): ?bool {return $this->isOutOfStockMipal;}/*** @param bool|null $isOutOfStockMipal*/public function setIsOutOfStockMipal(?bool $isOutOfStockMipal): void {$this->isOutOfStockMipal = $isOutOfStockMipal;}/*** @return bool|null*/public function getIsOutOfStockIris(): ?bool {return $this->isOutOfStockIris;}/*** @param bool|null $isOutOfStockIris*/public function setIsOutOfStockIris(?bool $isOutOfStockIris): void {$this->isOutOfStockIris = $isOutOfStockIris;}/*** @return int|null*/public function getSale(): ?int {return $this->sale;}/*** @param int|null $sale*/public function setSale(?int $sale): void {$this->sale = $sale;}/*** @return bool|null*/public function getIsOutOfStockGembird(): ?bool {return $this->isOutOfStockGembird;}/*** @param bool|null $isOutOfStockGembird*/public function setIsOutOfStockGembird(?bool $isOutOfStockGembird): void {$this->isOutOfStockGembird = $isOutOfStockGembird;}/*** @return Collection<int, Supersale>*/public function getSupersales(): Collection{return $this->supersales;}public function addSupersale(Supersale $supersale): self{if (!$this->supersales->contains($supersale)) {$this->supersales->add($supersale);$supersale->setProduct($this);}return $this;}public function removeSupersale(Supersale $supersale): self{if ($this->supersales->removeElement($supersale)) {// set the owning side to null (unless already changed)if ($supersale->getProduct() === $this) {$supersale->setProduct(null);}}return $this;}public function getIsOutOfStockSpektar(): ?bool {return $this->isOutOfStockSpektar;}public function setIsOutOfStockSpektar(?bool $isOutOfStockSpektar): void {$this->isOutOfStockSpektar = $isOutOfStockSpektar;}public function getIsOutOfStockVenera(): ?bool {return $this->isOutOfStockVenera;}public function setIsOutOfStockVenera(?bool $isOutOfStockVenera): void {$this->isOutOfStockVenera = $isOutOfStockVenera;}public function getIsOutOfStockMs(): ?bool {return $this->isOutOfStockMs;}public function setIsOutOfStockMs(?bool $isOutOfStockMs): void {$this->isOutOfStockMs = $isOutOfStockMs;}public function isBundle(): bool {return $this->isBundle;}public function setIsBundle(bool $isBundle): void {$this->isBundle = $isBundle;}}