<?php
namespace App\Entity\Gos;
use App\Entity\Gos\Uniqskills\Certificate;
use App\Entity\Gos\Uniqskills\Course;
use App\Entity\Gos\Uniqskills\Package;
use App\Entity\Gos\VirtualCurrency\ProductVariantVirtualCurrencySettings;
use App\Enum\Product\ProductSourceSystem;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\OrderBy;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use JMS\Serializer\Annotation as JMS;
/**
* ProductVariant
*
* @ORM\Table(name="product_variant")
* @ORM\Entity(repositoryClass="App\Repository\ProductVariantRepository")
* @ORM\HasLifecycleCallbacks
* @Vich\Uploadable
*/
class ProductVariant
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @JMS\Groups({"PortalSettings"})
*/
private $id;
/**
* @var bool
*
* @ORM\Column(name="isVirtual", type="boolean", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $isVirtual;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $isTest;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $productVariantNo;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $productNumberNoTax;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $productNumberPartTax;
/**
* @var ProductVariant
*
* @ORM\ManyToOne(targetEntity=ProductVariant::class)
* @ORM\JoinColumn(name="bur_funding_product_variant_id", referencedColumnName="id", nullable=true)
*/
private $burFundingProductVariant;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $productVariantId;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true, unique=true)
* @JMS\Groups({"PortalSettings"})
*/
private $productVariantNoComplete;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $productVariantKey;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*/
private $variantState = 'active';
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*/
private $tittleOnInvoice;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
*/
private $workingTitle;
/**
* @var float
*
* @ORM\Column(type="float", precision=18, scale=2)
* @JMS\Groups({"PortalSettings"})
*/
private $priceNet = '0';
/**
* @var float
*
* @ORM\Column(type="float", precision=18, scale=2, nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $priceGross = '0';
/**
* @var string
*
* @ORM\Column(type="string", length=255)
* @JMS\Groups({"PortalSettings"})
*/
private $tradeName;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $altTradeName;
/**
* @var string
*
* @ORM\Column(type="text", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $technicalInformations;
/**
* @var string
*
* @ORM\Column(type="text", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $technicalInformationForMail;
/**
* @var string
*
* @ORM\Column(type="text", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $label;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $isGross;
/**
* @var string
*
* @ORM\Column(type="string", length=255)
* @JMS\Groups({"PortalSettings"})
*/
private $currencyCode = 'PLN';
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $postageType = 'Poczta Polska-wysyĆka AD';
/**
* @var float
*
* @ORM\Column(type="float", precision=18, scale=2)
* @JMS\Groups({"PortalSettings"})
*/
private $postageCost = '0';
/**
* @var int
*
* @ORM\Column(type="integer")
*/
private $totalWeight = '0';
/**
* @var int
*
* @ORM\Column(type="integer")
*/
private $seriesType = '0';
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $isDefault;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $taxFreeForBudgetUnit;
/**
* @ORM\Column(type="string", length=50, nullable=true)
*/
private $productNumberForBudgetUnit;
/**
* @ORM\Column(type="boolean")
* @JMS\Groups({"PortalSettings"})
*/
private $showGrossPrice;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $discountOnline;
/**
* @ORM\Column(type="float", precision=16, scale=4, nullable=true)
*/
private $discountValueOnline;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $stateIsAvailible;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $stateIsForcedReservation;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $stateIsProductTest;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
* @JMS\Groups({"PortalSettings"})
*/
private $stateIsTrialRecurring;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true, options={"default": 3})
*/
private $trialRecurringDuration = 3;
/**
* @var ProductVariant
*
* @ORM\ManyToOne(targetEntity=ProductVariant::class)
* @ORM\JoinColumn(name="product_variant_after_trial_recurring_end_id", referencedColumnName="id", nullable=true)
*/
private $productVariantAfterTrialRecurringEnd;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isAccessWithoutPayment = false;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $buyMaxOne;
/**
* @var bool
*
* @ORM\Column(type="boolean", nullable=true)
*/
private $isAddition;
/**
* @var int
*
* @ORM\Column(type="integer")
*/
private $maxUsers = '1';
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $quantity;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $orderQuantity;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $eventDate;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\Product", inversedBy="productVariant")
* @ORM\JoinTable(name="product_product_variant")
*/
private $product;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\ProductVariantMultiDiscount", mappedBy="productVariant", orphanRemoval=true, cascade={"persist"})
*/
private $multiDiscount;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\Coupon", mappedBy="productVariant")
*/
private $coupon;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ApplicationCoupon", mappedBy="productVariant")
*/
private $applicationCoupon;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\SalesManagoCoupon", mappedBy="productVariant")
*/
private $salesManagoCoupons;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\SalesManagoCatalog", inversedBy="productVariants")
*/
private $salesManagoCatalogs;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\Coupon", mappedBy="gratis")
*/
private $gratisCoupon;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\Coupon", mappedBy="bundleProducts")
*/
private $bundleCoupon;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\CouponPackProduct", mappedBy="productVariant")
*/
private $couponPack;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\SalesManagoCoupon", mappedBy="gratis")
*/
private $salesManagoGratisCoupons;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\PortalSettings", mappedBy="productVariant")
*/
private $portalSettings;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", mappedBy="physicalVariant")
*/
protected $virtualVariant;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", inversedBy="virtualVariant")
* @ORM\JoinTable(name="relations_product_variant",
* joinColumns={@ORM\JoinColumn(name="virtual_variant_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="physical_variant_id", referencedColumnName="id")}
* )
*/
protected $physicalVariant;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", mappedBy="exclusiveVariant")
*/
protected $normalVariant;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", inversedBy="normalVariant")
* @ORM\JoinTable(name="product_variant_exclusives",
* joinColumns={@ORM\JoinColumn(name="normal_variant_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="exclusive_variant_id", referencedColumnName="id")}
* )
*/
protected $exclusiveVariant;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", mappedBy="additionalCartVariant")
*/
protected $basicCartVariant;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", inversedBy="basicCartVariant")
* @ORM\JoinTable(name="product_variant_cart_additionals",
* joinColumns={@ORM\JoinColumn(name="basic_cart_variant_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="additional_cart_variant_id", referencedColumnName="id")}
* )
*/
protected $additionalCartVariant;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", mappedBy="additionalCartVariantUpselling")
*/
protected $basicCartVariantUpselling;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductVariant", inversedBy="basicCartVariantUpselling")
* @ORM\JoinTable(name="product_variant_cart_additionals_upselling",
* joinColumns={@ORM\JoinColumn(name="basic_cart_variant_upselling_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="additional_cart_variant_upselling_id", referencedColumnName="id")}
* )
*/
protected $additionalCartVariantUpselling;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\ProductCart", mappedBy="productVariant")
*/
private $productCart;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\PaymentMethod", inversedBy="productVariant")
* @ORM\JoinColumn()
*/
private $paymentMethod;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\PaymentSystem", inversedBy="productVariant")
* @ORM\JoinColumn()
*/
private $paymentSystem;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ClientType", inversedBy="productVariant")
* @ORM\JoinColumn()
* @OrderBy({"id" = "DESC"})
*/
private $clientType;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\Product", inversedBy="masterProductVariant")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $masterProduct;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\Term", mappedBy="productVariants")
*/
private $terms;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\AccessLevel", mappedBy="productVariant")
*/
private $accessLevel;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\OrderProductVariant", mappedBy="productVariant")
*/
private $orderProductVariant;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\ProductPackItem", mappedBy="productVariant")
*/
private $productPackItem;
/**
* @ORM\OneToMany(targetEntity="EventProductVariantGroupItem", mappedBy="productVariant")
*/
private $productVariantGroupItems;
/**
* @ORM\OneToMany(targetEntity="EventProductVariantGroup", mappedBy="productVariant", cascade={"persist"}, orphanRemoval=true)
*/
private $productVariantGroups;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\CartParticipant", mappedBy="primaryProductVariant")
*/
private $cartParticipantsPrimary;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\Participants", mappedBy="primaryProductVariant")
*/
private $participantsPrimary;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $updatedAt;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\ProductVariantDescription", mappedBy="productVariant", orphanRemoval=true, cascade={"persist"})
*/
private $productVariantDescriptions;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $subscriptionType;
/**
* @var string
*
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $subscriptionPlan;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @var string
*/
private $image;
/**
* @Vich\UploadableField(mapping="product_images", fileNameProperty="image")
* @var File
*/
private $imageFile;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $defaultProductAssociation = 0;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $promoted = 0;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\Alert", mappedBy="productVariant")
*/
private $alerts;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $isPublished = 0;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isGiftable;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isHidden;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $isPartialPaymentActive = 0;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\Country", inversedBy="productVariants")
* @ORM\JoinColumn()
*/
private $country;
/**
* @ORM\Column(type="integer", options={"default" : 1})
*/
private $installmentAmount;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\PaymentType", inversedBy="productVariant")
* @ORM\JoinTable()
*/
private $paymentType;
/**
* @ORM\Column(type="integer", options={"default": 0})
*/
private $extendedPaymentTime = 0;
/**
* @ORM\ManyToOne(targetEntity="ProductSubscriptionType", inversedBy="productVariant")
* @ORM\JoinColumn()
*/
private $productSubscriptionType;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $summaryUpsellingInfo;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\ProductAssociation", mappedBy="productVariants")
*/
private $productAssociation;
/**
* @ORM\ManyToMany(targetEntity="ProductVariantPack", mappedBy="productVariants")
*/
private $productVariantPacks;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $trialDuration;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\Uniqskills\Course", inversedBy="productVariants")
* @ORM\JoinTable(
* name="product_variant_course",
* joinColumns={@ORM\JoinColumn(name="product_variant_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="course_id", referencedColumnName="id")}
* )
*/
private $courses;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\Uniqskills\Package", inversedBy="productVariants")
* @ORM\JoinTable(
* name="product_variant_package",
* joinColumns={@ORM\JoinColumn(name="product_variant_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="package_id", referencedColumnName="id")}
* )
*/
private $packages;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $requiredPWZ;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $promoName;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Gos\File", inversedBy="productVariants")
* @ORM\JoinTable(
* name="product_variant_file",
* joinColumns={@ORM\JoinColumn(name="product_variant_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="file_id", referencedColumnName="id")}
* )
*/
private $files;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isDigital;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $blockAccess;
/**
* @var int
*
* @ORM\Column(type="integer", nullable=true)
*/
private $mantisUserId;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Gos\ProductVariant", inversedBy="originalProductVariant")
*/
private $productVariantEuVat;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Gos\ProductVariant", mappedBy="productVariantEuVat")
*/
private $originalProductVariant;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\GoogleMerchantFeed", inversedBy="associatedVariants", cascade={"persist"}, fetch="EAGER")
* @ORM\JoinColumn(name="feed_id", referencedColumnName="id")
*/
private $googleMerchantFeed;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $salesVariantBasedTrialDuration;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $salesVariantBasedTrialInfo;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $accessForPaidOnly;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $additionalTextInCart;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isRecurringSubscription;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $documentDistributionChannel;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hiddenInSBTillPaid;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $participantsAddress;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $participantsAnnouncement;
/**
* @ORM\Column(type="boolean", nullable=true, options={"default": 0})
*/
private $mustHaveAllExclusiveVariants = false;
/**
* @ORM\OneToOne(targetEntity=Events::class, inversedBy="productVariant", fetch="EAGER")
* @ORM\JoinColumn(name="events_id", referencedColumnName="id", onDelete="SET NULL")
*/
private $event;
/**
* @ORM\OneToMany(targetEntity=LeadFormResponse::class, mappedBy="productVariant")
*/
private $leadFormResponses;
/**
* @ORM\ManyToMany(targetEntity=LeadFormResponse::class, mappedBy="productVariantsValidation")
*/
private $leadFormResponseValidations;
/**
* @ORM\ManyToMany(targetEntity=NewsletterTemplate::class, mappedBy="productVariantsValidation")
*/
private $newsletterTemplateValidations;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $TradeNameSM;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $commentForMantis;
/**
* @ORM\OneToMany(targetEntity=CalendarEvent::class, mappedBy="productVariant")
*/
private $calendarEvents;
/**
* GOS-1481 [only for US] The time (in days) after which the price to be paid returns to the initial
* @ORM\Column(type="integer", nullable=true)
*/
private $couponLifetime;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $freshMailIntegration;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $freshMailRecipientListHash;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $orderOnSiteContent;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $manualUserVerification = 0;
/**
* @ORM\OneToOne(targetEntity=ProductVariantOrderQuantity::class, mappedBy="productVariant", cascade={"persist", "remove"})
*/
private $productVariantOrderQuantity;
/**
* @ORM\OneToOne(targetEntity=ProductVariantVirtualCurrencySettings::class, mappedBy="productVariant", cascade={"persist", "remove"})
*/
private $productVariantVirtualCurrencySettings;
/**
* @ORM\ManyToMany(targetEntity=PaymentReminders::class, mappedBy="productVariant", orphanRemoval=true, cascade={"persist"})
*/
private $paymentReminders;
/**
* @ORM\OneToMany(targetEntity=ProductVariantUpselling::class, mappedBy="productVariant", orphanRemoval=true, cascade={"persist"})
*/
private $productVariantUpsellings;
/**
* @ORM\OneToMany(targetEntity=ProductVariantUpselling::class, mappedBy="promotedProduct", orphanRemoval=true, cascade={"persist"})
*/
private $productVariantPromoted;
/**
* @ORM\OneToMany(targetEntity=FastLeadTemplate::class, mappedBy="productVariant")
*/
private $fastLeadTemplates;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $imageUrlUpselling;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $useUploadedImageUpselling;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @var string
*/
private $uploadedImageUpselling;
/**
* @Vich\UploadableField(mapping="upselling_image", fileNameProperty="uploadedImageUpselling")
*/
private $imageFileUpselling;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $descriptionUpselling;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $linkToProductUpselling;
/**
* @ORM\ManyToMany(targetEntity=Certificate::class, inversedBy="productVariants")
*/
private $certificates;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $showButtonAdditionalAddress;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\Omnibus", mappedBy="productVariant", orphanRemoval=true, cascade={"persist"})
*/
private $omnibus;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $maxQuantityInCart;
/**
* @ORM\ManyToMany(targetEntity=ShippingType::class, inversedBy="productVariants")
*/
private $shippingTypes;
/**
* @ORM\OneToOne(targetEntity=ProductVariantSize::class, cascade={"persist", "remove"})
*/
private $size;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $excludeDefaultShippingType = false;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $isCompletelyDigital = false;
/**
* @ORM\ManyToMany(targetEntity=CertificatePathElement::class, mappedBy="productVariants")
*/
private $certificatePathElements;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasPaperRelease;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $isNPWZRequired;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $isSaleDisabled = false;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $technicalInformationForMailTele;
/**
* @ORM\OneToMany(targetEntity=AdditionalFile::class, mappedBy="productVariant", orphanRemoval=true, cascade={"persist"}, fetch="EAGER")
*/
private $additionalFiles;
/**
* @ORM\OneToOne(targetEntity=SalesManagoProductVariant::class, mappedBy="productVariant", cascade={"persist", "remove"})
*/
private $salesManagoProductVariant;
/**
* @ORM\ManyToMany(targetEntity=UserFlag::class, mappedBy="productVariants")
*/
private $userFlags;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gos\ProductVariantReviewLink", mappedBy="productVariant", orphanRemoval=true, cascade={"persist"})
*/
private $productVariantReviewLinks;
/**
* @ORM\ManyToOne(targetEntity=ProductVariant::class, inversedBy="substitution")
*/
private $original;
/**
* @ORM\OneToMany(targetEntity=ProductVariant::class, mappedBy="original")
*/
private $substitution;
/**
* @ORM\OneToMany(targetEntity=AdditionalOptionsByClientType::class, mappedBy="productVariant", orphanRemoval=true, cascade={"persist"}, fetch="EAGER")
*/
private $additionalOptionsByClientTypes;
/**
* @ORM\OneToOne(targetEntity=ProductVariant::class, inversedBy="givenProductVariantForAdditionalAccess", cascade={"persist", "remove"})
*/
private $additionalAccessProductVariant;
/**
* @ORM\OneToOne(targetEntity=ProductVariant::class, mappedBy="additionalAccessProductVariant", cascade={"persist", "remove"})
*/
private $givenProductVariantForAdditionalAccess;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $additionalInformationForMail;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $descriptionUpsellingMaxHeight;
private bool $isPriceGrossCalculated = false;
private int $vatRate = 0;
public function setBCDefaultSettings(
?PaymentMethod $paymentMethod,
?PaymentType $paymentType
): self
{
$this
->setPriceGross(null) //dynamically calculated from net price and VAT rate
->setIsGross(false)
->setIsDefault(true)
->setShowGrossPrice(false)
->setMaxUsers(1)
->setBuyMaxOne(true)
->setPostageType(null)
->setDocumentDistributionChannel('E')
->addPaymentMethod($paymentMethod)
->setPaymentType($paymentType);
return $this;
}
/** @ORM\PrePersist() */
public function prePersist()
{
$this->createdAt = new \DateTime();
if (is_null($this->installmentAmount))
{
$this->installmentAmount = 1;
}
}
/** @ORM\PreUpdate() */
public function preUpdate()
{
foreach ($this->paymentMethod as $paymentMethod)
{
if (!$this->isActive()
|| ((($this->getCourses()->isEmpty() && $this->stateIsForcedReservation)
|| $this->stateIsProductTest) && $paymentMethod->getSlug() !== 'invoice')
)
{
$this->removePaymentMethod($paymentMethod);
}
}
$this->updatedAt = new \DateTime();
}
public function __toString()
{
if (empty($this->productVariantNoComplete))
{
return (string)$this->id . ' ' . $this->workingTitle;
}
else
{
return (string)$this->productVariantNoComplete . ' ' . $this->workingTitle;
}
}
public function checkIfIsDefaultChecked($isFirst = false)
{
if ($this->getDefaultProductAssociation())
{
return true;
}
if ($this->getMasterProduct()->getProductAssociation() instanceof ProductAssociation)
{
/** @var ProductVariant $productVariant */
foreach ($this->getMasterProduct()->getProductAssociation()->getPublishedVariants() as $productVariant)
{
if ($productVariant->getDefaultProductAssociation())
{
return false;
}
}
if ($isFirst)
{
return true;
}
}
return false;
}
public function getFullPrice($type = 'gross', $useCommaSeparator = false)
{
$price = $type == 'gross' ? $this->getPriceGross() : $this->getPriceNet();
foreach ($this->getVirtualVariant() as $additional)
{
$price += $type == 'gross' ? $additional->getPriceGross() : $additional->getPriceNet();
}
if ($useCommaSeparator)
{
$price = number_format($price, 2, ',', '');
}
return $price;
}
public function getFullPriceAfterCoupon($type = 'gross', ?Coupon $coupon, $useCommaSeparator = false)
{
$priceNet = $this->getFullPrice('net');
$priceGross = $this->getFullPrice('gross');
if ($coupon && $coupon->getCouponType()->getId() == 1)
{
if ($coupon->getIsGross())
{
$discount = (($this->getFullPrice('gross') * $coupon->getDiscount()) / 100);
$priceGross = $this->getFullPrice('gross') - $discount;
$priceNet = $priceGross - (($priceGross * $this->getVatRate()) / 100);
}
else
{
$discount = (($this->getFullPrice('net') * $coupon->getDiscount()) / 100);
$priceNet = $this->getFullPrice('net') - $discount;
$priceGross = (($priceNet * $this->getVatRate()) / 100) + $priceNet;
}
}
elseif ($coupon && $coupon->getCouponType()->getId() == 2)
{
if ($coupon->getIsGross())
{
$priceGross = $this->getFullPrice('gross') - $coupon->getDiscount();
$priceNet = $priceGross - (($priceGross * $this->getVatRate()) / 100);
}
else
{
$priceNet = $this->getFullPrice('net') - $coupon->getDiscount();
$priceGross = (($priceNet * $this->getVatRate()) / 100) + $priceNet;
}
}
$price = round(($type == 'gross') ? $priceGross : $priceNet, 2);
if ($useCommaSeparator)
{
$price = number_format($price, 2, ',', '');
}
return $price;
}
public function isUniqskillsMultiUserCourse()
{
return $this->getIsUniqskillsProduct()
&& $this->getMaxUsers() > 1
&& $this->getBuyMaxOne() === false;
}
public function isEvent()
{
return $this->getMasterProduct() && $this->getMasterProduct()->getIsEvent();
}
/**
* Check productVariant and AdditionalProductVariants is stateIsAvailible
*
* @return bool
*/
public function isActive()
{
// MT-948 - make partial payments work only with selected PVs
if ($this->hasPartialPayment() && !$this->getIsPartialPaymentActive())
{
return false;
}
if (!$this->checkPaymentMethod())
{
return false;
}
if (!$this->checkState())
{
return false;
}
if (!$this->checkQuantity())
{
return false;
}
if (!$this->checkQuantityVirtualVariant())
{
return false;
}
if ($this->isSaleDisabled())
{
return false;
}
return true;
}
public function checkState()
{
if (!$this->getStateIsAvailible())
{
return false;
}
foreach ($this->getVirtualVariant() as $virtualVariant)
{
if (!$virtualVariant->getStateIsAvailible())
{
return false;
}
}
return true;
}
public function hasPartialPayment(): bool
{
return ($this->getPaymentType() && $this->getPaymentType()->getSlug() === 'partial-payment');
}
public function checkPaymentMethod()
{
foreach ($this->getAdditionalOptionsByClientTypes() as $additionalOptionsByClientType)
{
if (count($additionalOptionsByClientType->getPaymentMethod()) > 0)
{
return true;
}
}
return false;
}
public function checkQuantity()
{
if ($this->getQuantity() == 0 || empty($this->getQuantity()))
{
return true;
}
if ($this->getQuantity() > $this->getOrderQuantity())
{
return true;
}
return false;
}
public function checkQuantityVirtualVariant()
{
foreach ($this->getVirtualVariant() as $virtualVariant)
{
if (
$virtualVariant->getQuantity() != 0
&& !empty($virtualVariant->getQuantity())
&& $virtualVariant->getQuantity() < $virtualVariant->getOrderQuantity()
)
{
return false;
}
}
return true;
}
public function incrementOrderQuantity(): self
{
$productVariantOrderQuantity = $this->getProductVariantOrderQuantity();
if (is_null($productVariantOrderQuantity))
{
$productVariantOrderQuantity = new ProductVariantOrderQuantity();
$this->setProductVariantOrderQuantity($productVariantOrderQuantity);
}
$productVariantOrderQuantity->incrementOrderQuantity();
return $this;
}
public function getQuantityProductsRemainingForSale()
{
if ($this->getQuantity() == 0 || empty($this->getQuantity()))
{
return null;
}
$result = $this->getQuantity() - $this->getOrderQuantity();
return $result > 0 ? $result : 0;
}
public function getPriceNetDiscountAmount($fullPriceGross, $discount, $isGross = true, $fullPriceNet = 0)
{
if ($isGross)
{
if (empty($fullPriceGross))
{
return 0;
}
$discountValue = ($this->getPriceGross() / $fullPriceGross) * $discount;
$priceGross = $this->getPriceGross() - $discountValue;
$vatRate = $this->getVatRate();
$vat = ($priceGross * $vatRate) / (100 + $vatRate);
$priceNet = $priceGross - $vat;
}
else
{
if (empty($fullPriceNet))
{
return 0;
}
$discountValue = ($this->getPriceNet() / $fullPriceNet) * $discount;
$priceNet = $this->getPriceNet() - $discountValue;
}
return round($priceNet, 2);
}
public function getPriceGrossDiscountAmount($fullPriceNet, $discount, $isGross = false, $fullPriceGross = 0)
{
if ($isGross)
{
if (empty($fullPriceGross))
{
return 0;
}
$discountValue = ($this->getPriceGross() / $fullPriceGross) * $discount;
$priceGross = $this->getPriceGross() - $discountValue;
}
else
{
if (empty($fullPriceNet))
{
return 0;
}
$discountValue = ($this->getPriceNet() / $fullPriceNet) * $discount;
$priceNet = $this->getPriceNet() - $discountValue;
$vat = ($priceNet * $this->getVatRate()) / 100;
$priceGross = $priceNet + $vat;
}
return round($priceGross, 2);
}
public function isPhysical(): bool
{
if ($this->isVirtual)
{
return false;
}
if ($this->totalWeight == 0)
{
return false;
}
return true;
}
public function getAdditionalOptionsByClientType(?ClientType $clientType = null): ?AdditionalOptionsByClientType
{
if (is_null($clientType))
{
return null;
}
foreach ($this->getAdditionalOptionsByClientTypes() as $additionalOptionsByClientType)
{
if ($additionalOptionsByClientType->getClientType() === $clientType)
{
return $additionalOptionsByClientType;
}
}
return null;
}
public function getPaymentMethodsByClientType(?ClientType $clientType): array
{
$additionalOptionsByClientType = $this->getAdditionalOptionsByClientType($clientType);
return $additionalOptionsByClientType ? $additionalOptionsByClientType->getPaymentMethod()->toArray() : [];
}
public function checkIfProductVariantHavePaymentMethod(?ClientType $clientType, string $paymentMethodSlug): bool
{
$paymentMethods = $this->getPaymentMethodsByClientType($clientType);
foreach ($paymentMethods as $paymentMethod)
{
if ($paymentMethod->getSlug() === $paymentMethodSlug)
{
return true;
}
}
return false;
}
//------------------------------ setters & getters
/**
* Constructor
*/
public function __construct()
{
$this->product = new ArrayCollection();
$this->coupon = new ArrayCollection();
$this->applicationCoupon = new ArrayCollection();
$this->gratisCoupon = new ArrayCollection();
$this->bundleCoupon = new ArrayCollection();
$this->portalSettings = new ArrayCollection();
$this->virtualVariant = new ArrayCollection();
$this->physicalVariant = new ArrayCollection();
$this->productCart = new ArrayCollection();
$this->paymentMethod = new ArrayCollection();
$this->clientType = new ArrayCollection();
$this->terms = new ArrayCollection();
$this->accessLevel = new ArrayCollection();
$this->salesManagoCoupons = new ArrayCollection();
$this->salesManagoCatalogs = new ArrayCollection();
$this->salesManagoGratisCoupons = new ArrayCollection();
$this->orderProductVariant = new ArrayCollection();
$this->couponPack = new ArrayCollection();
$this->productPackItem = new ArrayCollection();
$this->productAssociation = new ArrayCollection();
$this->productVariantGroupItems = new ArrayCollection();
$this->productVariantGroups = new ArrayCollection();
$this->cartParticipantsPrimary = new ArrayCollection();
$this->participantsPrimary = new ArrayCollection();
$this->productVariantDescriptions = new ArrayCollection();
$this->alerts = new ArrayCollection();
$this->multiDiscount = new ArrayCollection();
$this->paymentSystem = new ArrayCollection();
$this->productVariantPacks = new ArrayCollection();
$this->courses = new ArrayCollection();
$this->packages = new ArrayCollection();
$this->files = new ArrayCollection();
$this->leadFormResponses = new ArrayCollection();
$this->leadFormResponseValidations = new ArrayCollection();
$this->newsletterTemplateValidations = new ArrayCollection();
$this->calendarEvents = new ArrayCollection();
$this->paymentReminders = new ArrayCollection();
$this->productVariantUpsellings = new ArrayCollection();
$this->productVariantPromoted = new ArrayCollection();
$this->fastLeadTemplates = new ArrayCollection();
$this->omnibus = new ArrayCollection();
$this->shippingTypes = new ArrayCollection();
$this->certificates = new ArrayCollection();
$this->certificatePathElements = new ArrayCollection();
$this->additionalFiles = new ArrayCollection();
$this->userFlags = new ArrayCollection();
$this->productVariantReviewLinks = new ArrayCollection();
$this->substitution = new ArrayCollection();
$this->additionalOptionsByClientTypes = new ArrayCollection();
}
public function __clone()
{
$this->certificates = new ArrayCollection();
}
/**
* Add product
*
* @param \App\Entity\Gos\Product $product
*
* @return ProductVariant
*/
public function addProduct(\App\Entity\Gos\Product $product)
{
if (!$this->product->contains($product))
{
$product->addProductVariant($this);
$this->product[] = $product;
}
return $this;
}
/**
* Add physicalVariant
*
* @param \App\Entity\Gos\ProductVariant $physicalVariant
*
* @return ProductVariant
*/
public function addPhysicalVariant(\App\Entity\Gos\ProductVariant $physicalVariant)
{
if (!$physicalVariant->getVirtualVariant()->contains($this)) {
$physicalVariant->addVirtualVariant($this);
$this->physicalVariant[] = $physicalVariant;
}
return $this;
}
/**
* Remove product
*
* @param \App\Entity\Gos\Product $product
*/
public function removeProduct(\App\Entity\Gos\Product $product)
{
$this->product->removeElement($product);
}
/**
* Get product
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProduct()
{
return $this->product;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set isVirtual
*
* @param boolean $isVirtual
*
* @return ProductVariant
*/
public function setIsVirtual($isVirtual)
{
$this->isVirtual = $isVirtual;
return $this;
}
/**
* Get isVirtual
*
* @return boolean
*/
public function getIsVirtual()
{
return $this->isVirtual;
}
/**
* Set productVariantNo
*
* @param integer $productVariantNo
*
* @return ProductVariant
*/
public function setProductVariantNo($productVariantNo)
{
$this->productVariantNo = $productVariantNo;
return $this;
}
/**
* Get productVariantNo
*
* @return integer
*/
public function getProductVariantNo()
{
return $this->productVariantNo;
}
/**
* Set productVariantId
*
* @param integer $productVariantId
*
* @return ProductVariant
*/
public function setProductVariantId($productVariantId)
{
$this->productVariantId = $productVariantId;
return $this;
}
/**
* Get productVariantId
*
* @return integer
*/
public function getProductVariantId()
{
return $this->productVariantId;
}
/**
* Set productVariantNoComplete
*
* @param string $productVariantNoComplete
*
* @return ProductVariant
*/
public function setProductVariantNoComplete($productVariantNoComplete)
{
$this->productVariantNoComplete = $productVariantNoComplete;
return $this;
}
/**
* Get productVariantNoComplete
*
* @return string
*/
public function getProductVariantNoComplete()
{
return $this->productVariantNoComplete;
}
/**
* Set productVariantKey
*
* @param string $productVariantKey
*
* @return ProductVariant
*/
public function setProductVariantKey($productVariantKey)
{
$this->productVariantKey = $productVariantKey;
return $this;
}
/**
* Get productVariantKey
*
* @return string
*/
public function getProductVariantKey()
{
return $this->productVariantKey;
}
/**
* Set variantState
*
* @param string $variantState
*
* @return ProductVariant
*/
public function setVariantState($variantState)
{
$this->variantState = $variantState;
return $this;
}
/**
* Get variantState
*
* @return string
*/
public function getVariantState()
{
return $this->variantState;
}
/**
* Set tittleOnInvoice
*
* @param string $tittleOnInvoice
*
* @return ProductVariant
*/
public function setTittleOnInvoice($tittleOnInvoice)
{
$this->tittleOnInvoice = $tittleOnInvoice;
return $this;
}
/**
* Get tittleOnInvoice
*
* @return string
*/
public function getTittleOnInvoice()
{
return $this->tittleOnInvoice;
}
/**
* Set workingTitle
*
* @param string $workingTitle
*
* @return ProductVariant
*/
public function setWorkingTitle($workingTitle)
{
$this->workingTitle = $workingTitle;
return $this;
}
/**
* Get workingTitle
*
* @return string
*/
public function getWorkingTitle()
{
return $this->workingTitle;
}
/**
* Set priceNet
*
* @param float $priceNet
*
* @return ProductVariant
*/
public function setPriceNet($priceNet)
{
$this->priceNet = $priceNet;
return $this;
}
/**
* Get priceNet
*
* @return float
*/
public function getPriceNet()
{
return $this->priceNet;
}
/**
* Set priceGross
*
* @param float|null $priceGross
*
* @return ProductVariant
*/
public function setPriceGross($priceGross)
{
$this->priceGross = $priceGross;
return $this;
}
/**
* UWAGA! Cena brutto jest dynamicznie obliczana na podstawie typu klienta i kraju w ProductVariantPriceListener
*
* @return float
*/
public function getPriceGross()
{
return $this->priceGross;
}
/**
* Set isGross
*
* @param boolean $isGross
*
* @return ProductVariant
*/
public function setIsGross($isGross)
{
$this->isGross = $isGross;
return $this;
}
/**
* Get isGross
*
* @return boolean
*/
public function getIsGross()
{
return $this->isGross;
}
/**
* Set currencyCode
*
* @param string $currencyCode
*
* @return ProductVariant
*/
public function setCurrencyCode($currencyCode)
{
$this->currencyCode = $currencyCode;
return $this;
}
/**
* Get currencyCode
*
* @return string
*/
public function getCurrencyCode()
{
return $this->currencyCode;
}
/**
* Set postageType
*
* @param string $postageType
*
* @return ProductVariant
*/
public function setPostageType($postageType)
{
$this->postageType = $postageType;
return $this;
}
/**
* Get postageType
*
* @return string
*/
public function getPostageType()
{
return $this->postageType;
}
/**
* Set postageCost
*
* @param float $postageCost
*
* @return ProductVariant
*/
public function setPostageCost($postageCost)
{
$this->postageCost = $postageCost;
return $this;
}
/**
* Get postageCost
*
* @return float
*/
public function getPostageCost()
{
return $this->postageCost;
}
/**
* Set totalWeight
*
* @param integer $totalWeight
*
* @return ProductVariant
*/
public function setTotalWeight($totalWeight)
{
$this->totalWeight = $totalWeight;
return $this;
}
/**
* Get totalWeight
*
* @return integer
*/
public function getTotalWeight()
{
return $this->totalWeight;
}
/**
* Set seriesType
*
* @param integer $seriesType
*
* @return ProductVariant
*/
public function setSeriesType($seriesType)
{
$this->seriesType = $seriesType;
return $this;
}
/**
* Get seriesType
*
* @return integer
*/
public function getSeriesType()
{
return $this->seriesType;
}
/**
* Set createdAt
*
* @param \DateTime $createdAt
*
* @return ProductVariant
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* Set updatedAt
*
* @param \DateTime $updatedAt
*
* @return ProductVariant
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* Add virtualVariant
*
* @param \App\Entity\Gos\ProductVariant $virtualVariant
*
* @return ProductVariant
*/
public function addVirtualVariant(\App\Entity\Gos\ProductVariant $virtualVariant)
{
$this->virtualVariant[] = $virtualVariant;
return $this;
}
public function resetVirtualVariants(): self
{
foreach ($this->virtualVariant as $virtualVariant) {
$virtualVariant->removePhysicalVariant($this);
}
return $this;
}
/**
* Remove virtualVariant
*
* @param \App\Entity\Gos\ProductVariant $virtualVariant
*/
public function removeVirtualVariant(\App\Entity\Gos\ProductVariant $virtualVariant)
{
$this->virtualVariant->removeElement($virtualVariant);
return $this;
}
/**
* Get virtualVariant
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getVirtualVariant()
{
return $this->virtualVariant;
}
/**
* Remove physicalVariant
*
* @param \App\Entity\Gos\ProductVariant $physicalVariant
*/
public function removePhysicalVariant(\App\Entity\Gos\ProductVariant $physicalVariant)
{
$physicalVariant->removeVirtualVariant($this);
$this->physicalVariant->removeElement($physicalVariant);
}
/**
* Get physicalVariant
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getPhysicalVariant()
{
return $this->physicalVariant;
}
/**
* Add productCart
*
* @param \App\Entity\Gos\ProductCart $productCart
*
* @return ProductVariant
*/
public function addProductCart(\App\Entity\Gos\ProductCart $productCart)
{
$this->productCart[] = $productCart;
return $this;
}
/**
* Remove productCart
*
* @param \App\Entity\Gos\ProductCart $cart
*/
public function removeProductCart(\App\Entity\Gos\ProductCart $productCart)
{
$this->productCart->removeElement($productCart);
}
/**
* Get productCart
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProductCart()
{
return $this->productCart;
}
/**
* Set isDefault
*
* @param boolean $isDefault
*
* @return ProductVariant
*/
public function setIsDefault($isDefault)
{
$this->isDefault = $isDefault;
return $this;
}
/**
* Get isDefault
*
* @return boolean
*/
public function getIsDefault()
{
return $this->isDefault;
}
/**
* Set paymentMethod
*
* @param \App\Entity\Gos\PaymentMethod $paymentMethod
*
* @return ProductVariant
*/
public function setPaymentMethod(\App\Entity\Gos\PaymentMethod $paymentMethod = null)
{
$this->paymentMethod = $paymentMethod;
return $this;
}
/**
* Get paymentMethod
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getPaymentMethod()
{
return $this->paymentMethod;
}
/**
* Add paymentMethod
*
* @param \App\Entity\Gos\PaymentMethod $paymentMethod
*
* @return ProductVariant
*/
public function addPaymentMethod(\App\Entity\Gos\PaymentMethod $paymentMethod)
{
if (!$this->paymentMethod->contains($paymentMethod))
{
$this->paymentMethod[] = $paymentMethod;
}
return $this;
}
/**
* Remove paymentMethod
*
* @param \App\Entity\Gos\PaymentMethod $paymentMethod
*/
public function removePaymentMethod(\App\Entity\Gos\PaymentMethod $paymentMethod)
{
$this->paymentMethod->removeElement($paymentMethod);
}
/**
* Add clientType
*
* @param \App\Entity\Gos\ClientType $clientType
*
* @return ProductVariant
*/
public function addClientType(\App\Entity\Gos\ClientType $clientType)
{
if (!$this->clientType->contains($clientType)) {
$this->clientType[] = $clientType;
}
return $this;
}
/**
* Remove clientType
*
* @param \App\Entity\Gos\ClientType $clientType
*/
public function removeClientType(\App\Entity\Gos\ClientType $clientType)
{
$this->clientType->removeElement($clientType);
}
/**
* Get clientType
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getClientType()
{
return $this->clientType;
}
/**
* Set taxFreeForBudgetUnit
*
* @param boolean $taxFreeForBudgetUnit
*
* @return ProductVariant
*/
public function setTaxFreeForBudgetUnit($taxFreeForBudgetUnit)
{
$this->taxFreeForBudgetUnit = $taxFreeForBudgetUnit;
return $this;
}
/**
* Get taxFreeForBudgetUnit
*
* @return boolean
*/
public function getTaxFreeForBudgetUnit()
{
return $this->taxFreeForBudgetUnit;
}
/**
* Set productNumberForBudgetUnit
*
* @param string $productNumberForBudgetUnit
*
* @return ProductVariant
*/
public function setProductNumberForBudgetUnit($productNumberForBudgetUnit)
{
$this->productNumberForBudgetUnit = $productNumberForBudgetUnit;
return $this;
}
/**
* Get productNumberForBudgetUnit
*
* @return string
*/
public function getProductNumberForBudgetUnit()
{
return $this->productNumberForBudgetUnit;
}
/**
* Add coupon
*
* @param \App\Entity\Gos\Coupon $coupon
*
* @return ProductVariant
*/
public function addCoupon(\App\Entity\Gos\Coupon $coupon)
{
if (!$this->coupon->contains($coupon)) {
$this->coupon[] = $coupon;
}
return $this;
}
/**
* Remove coupon
*
* @param \App\Entity\Gos\Coupon $coupon
*/
public function removeCoupon(\App\Entity\Gos\Coupon $coupon)
{
$this->coupon->removeElement($coupon);
}
/**
* Get coupon
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getCoupon()
{
return $this->coupon;
}
/**
* Add coupon
*
* @param \App\Entity\Gos\ApplicationCoupon $applicationCoupon
*
* @return ProductVariant
*/
public function addApplicationCoupon(ApplicationCoupon $applicationCoupon)
{
if (!$this->applicationCoupon->contains($applicationCoupon)) {
$this->applicationCoupon[] = $applicationCoupon;
}
return $this;
}
/**
* Remove coupon
*
* @param \App\Entity\Gos\ApplicationCoupon $applicationCoupon
*/
public function removeApplicationCoupon(ApplicationCoupon $applicationCoupon)
{
$this->applicationCoupon->removeElement($applicationCoupon);
}
/**
* Get coupon
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getApplicationCoupon()
{
return $this->applicationCoupon;
}
/**
* Add salesManagoCoupon
*
* @param \App\Entity\Gos\SalesManagoCoupon $salesManagoCoupon
*
* @return ProductVariant
*/
public function addSalesManagoCoupon(\App\Entity\Gos\SalesManagoCoupon $salesManagoCoupon)
{
if (!$this->salesManagoCoupons->contains($salesManagoCoupon)) {
$this->salesManagoCoupons[] = $salesManagoCoupon;
}
return $this;
}
/**
* Remove salesManagoCoupon
*
* @param \App\Entity\Gos\SalesManagoCoupon $salesManagoCoupon
*/
public function removeSalesManagoCoupon(\App\Entity\Gos\SalesManagoCoupon $salesManagoCoupon)
{
$this->salesManagoCoupons->removeElement($salesManagoCoupon);
}
/**
* Get salesManagoCoupons
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getSalesManagoCoupons()
{
return $this->salesManagoCoupons;
}
/**
* Add salesManagoGratisCoupon
*
* @param \App\Entity\Gos\SalesManagoCoupon $salesManagoGratisCoupon
*
* @return ProductVariant
*/
public function addSalesManagoGratisCoupon(\App\Entity\Gos\SalesManagoCoupon $salesManagoGratisCoupon)
{
if (!$this->salesManagoGratisCoupons->contains($salesManagoGratisCoupon)) {
$this->salesManagoGratisCoupons[] = $salesManagoGratisCoupon;
}
return $this;
}
/**
* Remove salesManagoGratisCoupon
*
* @param \App\Entity\Gos\SalesManagoCoupon $salesManagoGratisCoupon
*/
public function removeSalesManagoGratisCoupon(\App\Entity\Gos\SalesManagoCoupon $salesManagoGratisCoupon)
{
$this->salesManagoGratisCoupons->removeElement($salesManagoGratisCoupon);
}
/**
* Get salesManagoGratisCoupons
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getSalesManagoGratisCoupons()
{
return $this->salesManagoGratisCoupons;
}
/**
* Set tradeName
*
* @param string $tradeName
*
* @return ProductVariant
*/
public function setTradeName($tradeName)
{
$this->tradeName = $tradeName;
if(!$this->getTradeNameSM()){
$this->setTradeNameSM($tradeName);
}
return $this;
}
/**
* Get tradeName
*
* @return string
*/
public function getTradeName()
{
return $this->tradeName;
}
/**
* Set technicalInformations
*
* @param string $technicalInformations
*
* @return ProductVariant
*/
public function setTechnicalInformations($technicalInformations)
{
$this->technicalInformations = $technicalInformations;
return $this;
}
/**
* Get technicalInformations
*
* @return string
*/
public function getTechnicalInformations()
{
return $this->technicalInformations;
}
/**
* Set technicalInformationForMail
*
* @param string $technicalInformationForMail
* @return ProductVariant
*/
public function setTechnicalInformationForMail($technicalInformationForMail)
{
$this->technicalInformationForMail = $technicalInformationForMail;
return $this;
}
/**
* Get technicalInformationForMail
*
* @return string
*/
public function getTechnicalInformationForMail()
{
return $this->technicalInformationForMail;
}
/**
* Set discountOnline
*
* @param boolean $discountOnline
*
* @return ProductVariant
*/
public function setDiscountOnline($discountOnline)
{
$this->discountOnline = $discountOnline;
return $this;
}
/**
* Get discountOnline
*
* @return boolean
*/
public function getDiscountOnline()
{
return $this->discountOnline;
}
/**
* Set discountValueOnline
*
* @param float $discountValueOnline
*
* @return ProductVariant
*/
public function setDiscountValueOnline($discountValueOnline)
{
$this->discountValueOnline = $discountValueOnline;
return $this;
}
/**
* Get discountValueOnline
*
* @return float
*/
public function getDiscountValueOnline()
{
return $this->discountValueOnline;
}
/**
* Set masterProduct
*
* @param \App\Entity\Gos\Product $masterProduct
*
* @return ProductVariant
*/
public function setMasterProduct(\App\Entity\Gos\Product $masterProduct = null)
{
// $masterProduct->addMasterProductVariant($this);
$this->masterProduct = $masterProduct;
return $this;
}
/**
* Get masterProduct
*
* @return \App\Entity\Gos\Product
*/
public function getMasterProduct()
{
return $this->masterProduct;
}
/**
* Set showGrossPrice
*
* @param boolean $showGrossPrice
*
* @return ProductVariant
*/
public function setShowGrossPrice($showGrossPrice)
{
$this->showGrossPrice = $showGrossPrice;
return $this;
}
/**
* Get showGrossPrice
*
* @return boolean
*/
public function getShowGrossPrice()
{
return $this->showGrossPrice;
}
/**
* Add gratisCoupon
*
* @param \App\Entity\Gos\Coupon $gratisCoupon
*
* @return ProductVariant
*/
public function addGratisCoupon(\App\Entity\Gos\Coupon $gratisCoupon)
{
if (!$this->gratisCoupon->contains($gratisCoupon)) {
$this->gratisCoupon[] = $gratisCoupon;
}
return $this;
}
/**
* Remove gratisCoupon
*
* @param \App\Entity\Gos\Coupon $gratisCoupon
*/
public function removeGratisCoupon(\App\Entity\Gos\Coupon $gratisCoupon)
{
$this->gratisCoupon->removeElement($gratisCoupon);
}
/**
* Get gratisCoupon
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getGratisCoupon()
{
return $this->gratisCoupon;
}
/**
* Add bundleCoupon
*
* @param \App\Entity\Gos\Coupon $bundleCoupon
* @return ProductVariant
*/
public function addBundleCoupon(\App\Entity\Gos\Coupon $bundleCoupon)
{
if (!$this->bundleCoupon->contains($bundleCoupon)) {
$this->bundleCoupon[] = $bundleCoupon;
}
return $this;
}
/**
* Remove bundleCoupon
*
* @param \App\Entity\Gos\Coupon $bundleCoupon
*/
public function removeBundleCoupon(\App\Entity\Gos\Coupon $bundleCoupon)
{
$this->bundleCoupon->removeElement($bundleCoupon);
}
/**
* Get bundleCoupon
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getBundleCoupon()
{
return $this->bundleCoupon;
}
/**
* Set couponPack
*
* @param CouponPackProduct $couponPack
* @return ProductVariant
*/
public function setCouponPack(\App\Entity\Gos\CouponPackProduct $couponPack)
{
$this->couponPack = $couponPack;
return $this;
}
/**
* Get couponPack
*
* @return CouponPackProduct
*/
public function getCouponPack()
{
return $this->couponPack;
}
/**
* Add portalSetting
*
* @param \App\Entity\Gos\PortalSettings $portalSetting
*
* @return ProductVariant
*/
public function addPortalSetting(\App\Entity\Gos\PortalSettings $portalSetting)
{
if (!$this->portalSettings->contains($portalSetting))
{
$this->portalSettings[] = $portalSetting;
$portalSetting->addProductVariant($this);
}
return $this;
}
/**
* Remove portalSetting
*
* @param \App\Entity\Gos\PortalSettings $portalSetting
*/
public function removePortalSetting(\App\Entity\Gos\PortalSettings $portalSetting)
{
$this->portalSettings->removeElement($portalSetting);
$portalSetting->removeProductVariant($this);
}
/**
* Get portalSettings
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getPortalSettings()
{
return $this->portalSettings;
}
/**
* Set stateIsAvailible
*
* @param boolean $stateIsAvailible
*
* @return ProductVariant
*/
public function setStateIsAvailible($stateIsAvailible)
{
$this->stateIsAvailible = $stateIsAvailible;
return $this;
}
/**
* Get stateIsAvailible
*
* @return boolean
*/
public function getStateIsAvailible()
{
return $this->stateIsAvailible;
}
/**
* Set stateIsForcedReservation
*
* @param boolean $stateIsForcedReservation
*
* @return ProductVariant
*/
public function setStateIsForcedReservation($stateIsForcedReservation)
{
$this->stateIsForcedReservation = $stateIsForcedReservation;
return $this;
}
/**
* Get stateIsForcedReservation
*
* @return boolean
*/
public function getStateIsForcedReservation()
{
return $this->stateIsForcedReservation;
}
/**
* Set stateIsProductTest
*
* @param boolean $stateIsProductTest
*
* @return ProductVariant
*/
public function setStateIsProductTest($stateIsProductTest)
{
$this->stateIsProductTest = $stateIsProductTest;
return $this;
}
/**
* Get stateIsProductTest
*
* @return boolean
*/
public function getStateIsProductTest()
{
return $this->stateIsProductTest;
}
/**
* Set stateIsTrialRecurring
*
* @param boolean $stateIsTrialRecurring
*
* @return ProductVariant
*/
public function setStateIsTrialRecurring($stateIsTrialRecurring)
{
$this->stateIsTrialRecurring = $stateIsTrialRecurring;
return $this;
}
/**
* Get stateIsTrialRecurring
*
* @return boolean|null
*/
public function getStateIsTrialRecurring()
{
return $this->stateIsTrialRecurring;
}
/**
* Set trialRecurringDuration
*
* @param int $trialRecurringDuration
*
* @return ProductVariant
*/
public function setTrialRecurringDuration($trialRecurringDuration)
{
$this->trialRecurringDuration = $trialRecurringDuration;
return $this;
}
/**
* Get trialRecurringDuration
*
* @return int|null
*/
public function getTrialRecurringDuration()
{
return $this->trialRecurringDuration;
}
/**
* Set productVariantAfterTrialRecurringEnd
*
* @param ProductVariant $productVariantAfterTrialRecurringEnd
* @return ProductVariant
*/
public function setProductVariantAfterTrialRecurringEnd($productVariantAfterTrialRecurringEnd)
{
$this->productVariantAfterTrialRecurringEnd = $productVariantAfterTrialRecurringEnd;
return $this;
}
/**
* Get productVariantAfterTrialRecurringEnd
*
* @return ProductVariant|null
*/
public function getProductVariantAfterTrialRecurringEnd()
{
return $this->productVariantAfterTrialRecurringEnd;
}
/**
* Add term
*
* @param \App\Entity\Gos\Term $term
*
* @return ProductVariant
*/
public function addTerm(Term $term)
{
if (!$this->terms->contains($term)) {
$term->addProductVariant($this);
$this->terms[] = $term;
}
return $this;
}
/**
* Remove term
*
* @param \App\Entity\Gos\Term $term
*/
public function removeTerm(Term $term)
{
$term->removeProductVariant($this);
$this->terms->removeElement($term);
}
/**
* Get terms
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getTerms()
{
return $this->terms;
}
/**
* Add accessLevel
*
* @param \App\Entity\Gos\AccessLevel $accessLevel
*
* @return ProductVariant
*/
public function addAccessLevel(\App\Entity\Gos\AccessLevel $accessLevel)
{
if (!$this->accessLevel->contains($accessLevel)) {
$this->accessLevel[] = $accessLevel;
$accessLevel->setProductVariant($this);
}
return $this;
}
/**
* Remove accessLevel
*
* @param \App\Entity\Gos\AccessLevel $accessLevel
*/
public function removeAccessLevel(\App\Entity\Gos\AccessLevel $accessLevel)
{
$this->accessLevel->removeElement($accessLevel);
}
/**
* Get accessLevel
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAccessLevel()
{
return $this->accessLevel;
}
/**
* Set buyMaxOne
*
* @param boolean $buyMaxOne
*
* @return ProductVariant
*/
public function setBuyMaxOne($buyMaxOne)
{
$this->buyMaxOne = $buyMaxOne;
return $this;
}
/**
* Get buyMaxOne
*
* @return boolean
*/
public function getBuyMaxOne()
{
return $this->buyMaxOne;
}
/**
* Set maxUsers
*
* @param integer $maxUsers
*
* @return ProductVariant
*/
public function setMaxUsers($maxUsers)
{
$this->maxUsers = $maxUsers;
return $this;
}
/**
* Get maxUsers
*
* @return integer
*/
public function getMaxUsers()
{
return $this->maxUsers;
}
/**
* Add orderProductVariant
*
* @param \App\Entity\Gos\OrderProductVariant $orderProductVariant
*
* @return ProductVariant
*/
public function addOrderProductVariant(\App\Entity\Gos\OrderProductVariant $orderProductVariant)
{
if (!$this->orderProductVariant->contains($orderProductVariant)) {
$this->orderProductVariant[] = $orderProductVariant;
$orderProductVariant->setProductVariant($this);
}
return $this;
}
/**
* Remove orderProductVariant
*
* @param \App\Entity\Gos\OrderProductVariant $orderProductVariant
*/
public function removeOrderProductVariant(\App\Entity\Gos\OrderProductVariant $orderProductVariant)
{
$this->orderProductVariant->removeElement($orderProductVariant);
}
/**
* Get orderProductVariant
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getOrderProductVariant()
{
return $this->orderProductVariant;
}
/**
* Set isAddition
*
* @param boolean $isAddition
*
* @return ProductVariant
*/
public function setIsAddition($isAddition)
{
$this->isAddition = $isAddition;
return $this;
}
/**
* Get isAddition
*
* @return boolean
*/
public function getIsAddition()
{
return $this->isAddition;
}
public function addCouponPack(CouponPackProduct $couponPack): self
{
if (!$this->couponPack->contains($couponPack)) {
$this->couponPack[] = $couponPack;
$couponPack->setProductVariant($this);
}
return $this;
}
public function removeCouponPack(CouponPackProduct $couponPack): self
{
if ($this->couponPack->contains($couponPack)) {
$this->couponPack->removeElement($couponPack);
// set the owning side to null (unless already changed)
if ($couponPack->getProductVariant() === $this) {
$couponPack->setProductVariant(null);
}
}
return $this;
}
public function getQuantity(): ?int
{
return $this->quantity;
}
public function setQuantity(int $quantity): self
{
$this->quantity = $quantity;
return $this;
}
public function getOrderQuantity(): ?int
{
return $this->getProductVariantOrderQuantity() ? $this->getProductVariantOrderQuantity()->getOrderQuantity() : 0;
}
public function setOrderQuantity(int $orderQuantity): self
{
$this->orderQuantity = $orderQuantity;
return $this;
}
/**
* @return Collection|ProductPackItem[]
*/
public function getProductPackItem(): Collection
{
return $this->productPackItem;
}
public function addProductPackItem(ProductPackItem $productPackItem): self
{
if (!$this->productPackItem->contains($productPackItem)) {
$this->productPackItem[] = $productPackItem;
$productPackItem->setProductVariant($this);
}
return $this;
}
public function removeProductPackItem(ProductPackItem $productPackItem): self
{
if ($this->productPackItem->contains($productPackItem)) {
$this->productPackItem->removeElement($productPackItem);
// set the owning side to null (unless already changed)
if ($productPackItem->getProductVariant() === $this) {
$productPackItem->setProductVariant(null);
}
}
return $this;
}
/**
* @return Collection|EventProductVariantGroupItem[]
*/
public function getProductVariantGroupItems(): Collection
{
return $this->productVariantGroupItems;
}
public function addProductVariantGroupItem(EventProductVariantGroupItem $productVariantGroupItem): self
{
if (!$this->productVariantGroupItems->contains($productVariantGroupItem)) {
$this->productVariantGroupItems[] = $productVariantGroupItem;
$productVariantGroupItem->setProductVariant($this);
}
return $this;
}
public function removeProductVariantGroupItem(EventProductVariantGroupItem $productVariantGroupItem): self
{
if ($this->productVariantGroupItems->contains($productVariantGroupItem)) {
$this->productVariantGroupItems->removeElement($productVariantGroupItem);
// set the owning side to null (unless already changed)
if ($productVariantGroupItem->getProductVariant() === $this) {
$productVariantGroupItem->setProductVariant(null);
}
}
return $this;
}
/**
* @return Collection|EventProductVariantGroup[]
*/
public function getProductVariantGroups(): Collection
{
return $this->productVariantGroups;
}
public function addProductVariantGroup(EventProductVariantGroup $productVariantGroup): self
{
if (!$this->productVariantGroups->contains($productVariantGroup)) {
$this->productVariantGroups[] = $productVariantGroup;
$productVariantGroup->setProductVariant($this);
}
return $this;
}
public function removeProductVariantGroup(EventProductVariantGroup $productVariantGroup): self
{
if ($this->productVariantGroups->contains($productVariantGroup)) {
$this->productVariantGroups->removeElement($productVariantGroup);
// set the owning side to null (unless already changed)
if ($productVariantGroup->getProductVariant() === $this) {
$productVariantGroup->setProductVariant(null);
}
}
return $this;
}
public function getCartParticipantsPrimary(): Collection
{
return $this->cartParticipantsPrimary;
}
public function setCartParticipantsPrimary(?CartParticipant $cartParticipantsPrimary): self
{
$this->cartParticipantsPrimary = $cartParticipantsPrimary;
// set (or unset) the owning side of the relation if necessary
$newPrimaryProductVariant = $cartParticipantsPrimary === null ? null : $this;
if ($newPrimaryProductVariant !== $cartParticipantsPrimary->getPrimaryProductVariant()) {
$cartParticipantsPrimary->setPrimaryProductVariant($newPrimaryProductVariant);
}
return $this;
}
public function addCartParticipantsPrimary(CartParticipant $cartParticipantsPrimary): self
{
if (!$this->cartParticipantsPrimary->contains($cartParticipantsPrimary)) {
$this->cartParticipantsPrimary[] = $cartParticipantsPrimary;
$cartParticipantsPrimary->setPrimaryProductVariant($this);
}
return $this;
}
public function removeCartParticipantsPrimary(CartParticipant $cartParticipantsPrimary): self
{
if ($this->cartParticipantsPrimary->contains($cartParticipantsPrimary)) {
$this->cartParticipantsPrimary->removeElement($cartParticipantsPrimary);
// set the owning side to null (unless already changed)
if ($cartParticipantsPrimary->getPrimaryProductVariant() === $this) {
$cartParticipantsPrimary->setPrimaryProductVariant(null);
}
}
return $this;
}
public function getParticipantsPrimary()
{
return $this->participantsPrimary;
}
public function setParticipantsPrimary(?Participants $participantsPrimary): self
{
$this->participantsPrimary = $participantsPrimary;
// set (or unset) the owning side of the relation if necessary
$newPrimaryProductVariant = $participantsPrimary === null ? null : $this;
if ($newPrimaryProductVariant !== $participantsPrimary->getPrimaryProductVariant()) {
$participantsPrimary->setPrimaryProductVariant($newPrimaryProductVariant);
}
return $this;
}
public function addParticipantsPrimary(Participants $participantsPrimary): self
{
if (!$this->participantsPrimary->contains($participantsPrimary)) {
$this->participantsPrimary[] = $participantsPrimary;
$participantsPrimary->setPrimaryProductVariant($this);
}
return $this;
}
public function removeParticipantsPrimary(Participants $participantsPrimary): self
{
if ($this->participantsPrimary->contains($participantsPrimary)) {
$this->participantsPrimary->removeElement($participantsPrimary);
// set the owning side to null (unless already changed)
if ($participantsPrimary->getPrimaryProductVariant() === $this) {
$participantsPrimary->setPrimaryProductVariant(null);
}
}
return $this;
}
/**
* @return Collection|ProductVariantDescription[]
*/
public function getProductVariantDescriptions(): Collection
{
return $this->productVariantDescriptions;
}
public function addProductVariantDescription(ProductVariantDescription $productVariantDescription): self
{
if (!$this->productVariantDescriptions->contains($productVariantDescription)) {
$this->productVariantDescriptions[] = $productVariantDescription;
$productVariantDescription->setProductVariant($this);
}
return $this;
}
public function removeProductVariantDescription(ProductVariantDescription $productVariantDescription): self
{
if ($this->productVariantDescriptions->contains($productVariantDescription)) {
$this->productVariantDescriptions->removeElement($productVariantDescription);
// set the owning side to null (unless already changed)
if ($productVariantDescription->getProductVariant() === $this) {
$productVariantDescription->setProductVariant(null);
}
}
return $this;
}
public function getSubscriptionType(): ?string
{
return $this->subscriptionType;
}
public function setSubscriptionType(string $subscriptionType): self
{
$this->subscriptionType = $subscriptionType;
return $this;
}
public function getSubscriptionPlan(): ?string
{
return $this->subscriptionPlan;
}
public function setSubscriptionPlan(string $subscriptionPlan): self
{
$this->subscriptionPlan = $subscriptionPlan;
return $this;
}
public function setImageFile(File $imageFile = null)
{
$this->imageFile = $imageFile;
// VERY IMPORTANT:
// It is required that at least one field changes if you are using Doctrine,
// otherwise the event listeners won't be called and the file is lost
if ($imageFile)
{
// if 'updatedAt' is not defined in your entity, use another property
$this->updatedAt = new \DateTime('now');
}
}
public function getImageFile()
{
return $this->imageFile;
}
public function setImage($image)
{
$this->image = $image;
}
public function getImage()
{
return $this->image;
}
public function getPromoted(): ?bool
{
return $this->promoted;
}
public function setPromoted(bool $promoted): self
{
$this->promoted = $promoted;
return $this;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(?string $label): self
{
$this->label = $label;
return $this;
}
public function getEventDate(): ?\DateTimeInterface
{
return $this->eventDate;
}
public function setEventDate(?\DateTimeInterface $eventDate): self
{
$this->eventDate = $eventDate;
return $this;
}
public function getProductNumberNoTax(): ?string
{
return $this->productNumberNoTax;
}
public function setProductNumberNoTax(?string $productNumberNoTax): self
{
$this->productNumberNoTax = $productNumberNoTax;
return $this;
}
public function getProductNumberPartTax(): ?string
{
return $this->productNumberPartTax;
}
public function setProductNumberPartTax(?string $productNumberPartTax): self
{
$this->productNumberPartTax = $productNumberPartTax;
return $this;
}
public function getBurFundingProductVariant(): ?ProductVariant
{
return $this->burFundingProductVariant;
}
public function setBurFundingProductVariant(?ProductVariant $burFundingProductVariant): self
{
$this->burFundingProductVariant = $burFundingProductVariant;
return $this;
}
/**
* @return Collection|Alert[]
*/
public function getAlerts(): Collection
{
return $this->alerts;
}
public function addAlert(Alert $alert): self
{
if (!$this->alerts->contains($alert)) {
$this->alerts[] = $alert;
$alert->setProductVariant($this);
}
return $this;
}
public function removeAlert(Alert $alert): self
{
if ($this->alerts->contains($alert)) {
$this->alerts->removeElement($alert);
// set the owning side to null (unless already changed)
if ($alert->getProductVariant() === $this) {
$alert->setProductVariant(null);
}
}
return $this;
}
public function getQuantityLeft(): int
{
if ($this->quantity == 0)
{
return 999;
}
return $this->quantity - $this->orderQuantity;
}
public function getIsPublished(): ?bool
{
return $this->isPublished;
}
public function setIsPublished(bool $isPublished): self
{
$this->isPublished = $isPublished;
return $this;
}
public function getIsTest(): ?bool
{
return $this->isTest;
}
public function setIsTest(?bool $isTest): self
{
$this->isTest = $isTest;
return $this;
}
public function getIsGiftable(): ?bool
{
return $this->isGiftable;
}
public function setIsGiftable(?bool $isGiftable): self
{
$this->isGiftable = $isGiftable;
return $this;
}
public function getIsHidden(): ?bool
{
return $this->isHidden;
}
public function setIsHidden(?bool $isHidden): self
{
$this->isHidden = $isHidden;
return $this;
}
public function getIsPartialPaymentActive(): ?bool
{
return $this->isPartialPaymentActive;
}
public function setIsPartialPaymentActive(bool $isPartialPaymentActive): self
{
$this->isPartialPaymentActive = $isPartialPaymentActive;
return $this;
}
public function getInstallmentAmount(): ?int
{
return $this->installmentAmount;
}
public function setInstallmentAmount(int $installmentAmount): self
{
$this->installmentAmount = $installmentAmount;
return $this;
}
public function getCountry(): ?Country
{
return $this->country;
}
public function setCountry(?Country $country): self
{
$this->country = $country;
return $this;
}
public function getPaymentType(): ?PaymentType
{
return $this->paymentType;
}
public function setPaymentType(?PaymentType $paymentType): self
{
$this->paymentType = $paymentType;
return $this;
}
public function getExtendedPaymentTime(): ?int
{
return $this->extendedPaymentTime;
}
public function setExtendedPaymentTime(int $extendedPaymentTime): self
{
$this->extendedPaymentTime = $extendedPaymentTime;
return $this;
}
public function getProductSubscriptionType(): ?ProductSubscriptionType
{
return $this->productSubscriptionType;
}
public function setProductSubscriptionType(?ProductSubscriptionType $productSubscriptionType): self
{
$this->productSubscriptionType = $productSubscriptionType;
return $this;
}
/**
* @return Collection|ProductVariantMultiDiscount[]
*/
public function getMultiDiscount(): Collection
{
return $this->multiDiscount;
}
public function addMultiDiscount(ProductVariantMultiDiscount $multiDiscount): self
{
if (!$this->multiDiscount->contains($multiDiscount)) {
$this->multiDiscount[] = $multiDiscount;
$multiDiscount->setProductVariant($this);
}
return $this;
}
public function removeMultiDiscount(ProductVariantMultiDiscount $multiDiscount): self
{
if ($this->multiDiscount->contains($multiDiscount)) {
$this->multiDiscount->removeElement($multiDiscount);
// set the owning side to null (unless already changed)
if ($multiDiscount->getProductVariant() === $this) {
$multiDiscount->setProductVariant(null);
}
}
return $this;
}
public function getDefaultProductAssociation(): ?bool
{
return $this->defaultProductAssociation;
}
public function setDefaultProductAssociation(bool $defaultProductAssociation): self
{
$this->defaultProductAssociation = $defaultProductAssociation;
return $this;
}
public function getIsUniqskillsProduct()
{
if ($this->getCourses()->isEmpty())
return false;
return true;
}
public function getCourseSubscriptions()
{
if ($this->getIsUniqskillsProduct() and !$this->getIsVirtual())
{
$country = $this->getCountry();
$product = $this->getMasterProduct();
$productVariants = $product->getProductVariant()->toArray();
return array_filter($productVariants, function($variant) use ($country) {
/** @var $variant ProductVariant */
return (
$variant->getCountry() === $country
&& $variant->isActive()
&& !$variant->getIsHidden()
);
});
}
return [];
}
public function getSummaryUpsellingInfo(): ?string
{
return $this->summaryUpsellingInfo;
}
public function setSummaryUpsellingInfo(?string $summaryUpsellingInfo): self
{
$this->summaryUpsellingInfo = $summaryUpsellingInfo;
return $this;
}
public function getProductAssociation(): Collection
{
return $this->productAssociation;
}
public function getSingleProductAssociation()
{
if (!empty($this->productAssociation))
{
return $this->productAssociation->first();
}
return $this->getMasterProduct()->getProductAssociation()->first();
}
public function addProductAssociation(?ProductAssociation $productAssociation): self
{
if (!$this->productAssociation->contains($productAssociation)) {
$this->productAssociation[] = $productAssociation;
}
return $this;
}
public function removeProductAssociation(?ProductAssociation $productAssociation): self
{
if($this->productAssociation->contains($productAssociation)) {
$this->productAssociation->removeElement($productAssociation);
}
return $this;
}
/**
* @return Collection|PaymentSystem[]
*/
public function getPaymentSystem(): Collection
{
return $this->paymentSystem;
}
public function addPaymentSystem(PaymentSystem $paymentSystem): self
{
if (!$this->paymentSystem->contains($paymentSystem)) {
$this->paymentSystem[] = $paymentSystem;
}
return $this;
}
public function removePaymentSystem(PaymentSystem $paymentSystem): self
{
if ($this->paymentSystem->contains($paymentSystem)) {
$this->paymentSystem->removeElement($paymentSystem);
}
return $this;
}
public function getAltTradeName(): ?string
{
return $this->altTradeName;
}
public function setAltTradeName(?string $altTradeName): self
{
$this->altTradeName = $altTradeName;
return $this;
}
public function getSubscriptionCartDescription(): ?string
{
return $this->getAltTradeName() ?? $this->getTradeName();
}
/**
* @return Collection|ProductVariantPack[]
*/
public function getProductVariantPacks(): Collection
{
return $this->productVariantPacks;
}
public function addProductVariantPack(ProductVariantPack $productVariantPack): self
{
if (!$this->productVariantPacks->contains($productVariantPack)) {
$this->productVariantPacks[] = $productVariantPack;
$productVariantPack->addProductVariant($this);
}
return $this;
}
public function removeProductVariantPack(ProductVariantPack $productVariantPack): self
{
if ($this->productVariantPacks->contains($productVariantPack)) {
$this->productVariantPacks->removeElement($productVariantPack);
$productVariantPack->removeProductVariant($this);
}
return $this;
}
public function getTrialDuration(): ?int
{
return $this->trialDuration;
}
public function setTrialDuration(?int $trialDuration): self
{
$this->trialDuration = $trialDuration;
return $this;
}
/**
* @return Collection|Course[]
*/
public function getCourses(): Collection
{
return $this->courses;
}
public function addCourse(Course $course): self
{
if (!$this->courses->contains($course)) {
$this->courses[] = $course;
}
return $this;
}
public function removeCourse(Course $course): self
{
if ($this->courses->contains($course)) {
$this->courses->removeElement($course);
}
return $this;
}
/**
* @return Collection|Package[]
*/
public function getPackages(): Collection
{
return $this->packages;
}
public function addPackage(Package $package): self
{
if (!$this->packages->contains($package)) {
$this->packages[] = $package;
}
return $this;
}
public function removePackage(Package $package): self
{
if ($this->packages->contains($package)) {
$this->packages->removeElement($package);
}
return $this;
}
/**
* @return Collection|\App\Entity\Gos\File[]
*/
public function getFiles(): Collection
{
return $this->files;
}
public function addFile(\App\Entity\Gos\File $file): self
{
if (!$this->files->contains($file)) {
$this->files[] = $file;
}
return $this;
}
public function removeFile(\App\Entity\Gos\File $file): self
{
if ($this->files->contains($file)) {
$this->files->removeElement($file);
}
return $this;
}
public function getRequiredPWZ(): ?bool
{
return $this->requiredPWZ;
}
public function setRequiredPWZ(bool $requiredPWZ): self
{
$this->requiredPWZ = $requiredPWZ;
return $this;
}
public function getPromoName(): ?string
{
return $this->promoName;
}
public function setPromoName(?string $promoName): self
{
if (strpos($promoName, 'DostÄp do platformy z treĆciami szkoleniowymi:') !== false)
$promoName = str_replace("DostÄp do platformy z treĆciami szkoleniowymi:", "", $promoName);
elseif(strpos($promoName, 'DostÄp do platformy z treĆciami szkoleniowymi.') !== false)
$promoName = str_replace("DostÄp do platformy z treĆciami szkoleniowymi.", "", $promoName);
elseif(strpos($promoName, 'DostÄp do platformy z treĆciami szkoleniowymi') !== false)
$promoName = str_replace("DostÄp do platformy z treĆciami szkoleniowymi.", "", $promoName);
elseif(strpos($promoName, 'Acceso al curso certificado:') !== false)
$promoName = str_replace("Acceso al curso certificado:", "", $promoName);
elseif(strpos($promoName, 'Acceso al curso certificado.') !== false)
$promoName = str_replace("Acceso al curso certificado.", "", $promoName);
elseif(strpos($promoName, 'Acceso al curso certificado') !== false)
$promoName = str_replace("Acceso al curso certificado", "", $promoName);
$promoName = trim($promoName);
$this->promoName = $promoName;
return $this;
}
public function getIsDigital(): ?bool
{
return $this->isDigital;
}
public function setIsDigital(?bool $isDigital): self
{
$this->isDigital = $isDigital;
return $this;
}
public function getBlockAccess(): ?bool
{
return $this->blockAccess;
}
public function setBlockAccess(?bool $blockAccess): self
{
$this->blockAccess = $blockAccess;
return $this;
}
public function getMantisUserId(): ?int
{
return $this->mantisUserId;
}
public function setMantisUserId(?int $mantisUserId): self
{
$this->mantisUserId = $mantisUserId;
return $this;
}
public function getGoogleMerchantFeed(): ?GoogleMerchantFeed
{
return $this->googleMerchantFeed;
}
public function setGoogleMerchantFeed(?GoogleMerchantFeed $googleMerchantFeed): self
{
$this->googleMerchantFeed = $googleMerchantFeed;
return $this;
}
public function getProductVariantEuVat(): ?ProductVariant
{
return $this->productVariantEuVat;
}
public function setProductVariantEuVat(?ProductVariant $productVariantEuVat): self
{
$this->productVariantEuVat = $productVariantEuVat;
return $this;
}
public function getOriginalProductVariant(): ?ProductVariant
{
return $this->originalProductVariant;
}
public function setOriginalProductVariant(?ProductVariant $originalProductVariant): self
{
$this->originalProductVariant = $originalProductVariant;
return $this;
}
public function isSalesVariantBasedTrial(): bool
{
return $this->salesVariantBasedTrialDuration !== null && $this->salesVariantBasedTrialDuration > 0;
}
public function getSalesVariantBasedTrialDuration(): ?int
{
return $this->salesVariantBasedTrialDuration;
}
public function setSalesVariantBasedTrialDuration(?int $salesVariantBasedTrialDuration): self
{
$this->salesVariantBasedTrialDuration = $salesVariantBasedTrialDuration;
return $this;
}
public function getSalesVariantBasedTrialInfo(): ?string
{
return $this->salesVariantBasedTrialInfo;
}
public function setSalesVariantBasedTrialInfo(?string $salesVariantBasedTrialInfo): self
{
$this->salesVariantBasedTrialInfo = $salesVariantBasedTrialInfo;
return $this;
}
public function getAccessForPaidOnly(): ?bool
{
return $this->accessForPaidOnly;
}
public function setAccessForPaidOnly(?bool $accessForPaidOnly): self
{
$this->accessForPaidOnly = $accessForPaidOnly;
return $this;
}
public function getAdditionalTextInCart(): ?string
{
return $this->additionalTextInCart;
}
public function setAdditionalTextInCart(?string $additionalTextInCart): self
{
$this->additionalTextInCart = $additionalTextInCart;
return $this;
}
public function getIsRecurringSubscription(): ?bool
{
return $this->isRecurringSubscription;
}
public function setIsRecurringSubscription(?bool $isRecurringSubscription): self
{
$this->isRecurringSubscription = $isRecurringSubscription;
return $this;
}
public function getDocumentDistributionChannel(): ?string
{
return $this->documentDistributionChannel;
}
public function setDocumentDistributionChannel(?string $documentDistributionChannel): self
{
$this->documentDistributionChannel = $documentDistributionChannel;
return $this;
}
public function getHiddenInSBTillPaid(): ?bool
{
return $this->hiddenInSBTillPaid;
}
public function setHiddenInSBTillPaid(?bool $hiddenInSBTillPaid): self
{
$this->hiddenInSBTillPaid = $hiddenInSBTillPaid;
return $this;
}
public function getParticipantsAddress(): ?bool
{
return $this->participantsAddress;
}
public function setParticipantsAddress(?bool $participantsAddress): self
{
$this->participantsAddress = $participantsAddress;
return $this;
}
public function getParticipantsAnnouncement(): ?string
{
return $this->participantsAnnouncement;
}
public function setParticipantsAnnouncement(?string $participantsAnnouncement): self
{
$this->participantsAnnouncement = $participantsAnnouncement;
return $this;
}
/**
* Add exclusiveVariant
*
* @param \App\Entity\Gos\ProductVariant $exclusiveVariant
*
* @return ProductVariant
*/
public function addExclusiveVariant(\App\Entity\Gos\ProductVariant $exclusiveVariant)
{
$exclusiveVariant->addNormalVariant($this);
$this->exclusiveVariant[] = $exclusiveVariant;
return $this;
}
/**
* Remove exclusiveVariant
*
* @param \App\Entity\Gos\ProductVariant $exclusiveVariant
*/
public function removeExclusiveVariant(\App\Entity\Gos\ProductVariant $exclusiveVariant)
{
$exclusiveVariant->removeNormalVariant($this);
$this->exclusiveVariant->removeElement($exclusiveVariant);
}
/**
* Get exclusiveVariant
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getExclusiveVariant()
{
return $this->exclusiveVariant;
}
/**
* Add normalVariant
*
* @param \App\Entity\Gos\ProductVariant $normalVariant
*
* @return ProductVariant
*/
public function addNormalVariant(\App\Entity\Gos\ProductVariant $normalVariant)
{
$this->normalVariant[] = $normalVariant;
return $this;
}
/**
* Remove normalVariant
*
* @param \App\Entity\Gos\ProductVariant $normalVariant
*/
public function removeNormalVariant(\App\Entity\Gos\ProductVariant $normalVariant)
{
$this->normalVariant->removeElement($normalVariant);
}
/**
* Get normalVariant
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getNormalVariant()
{
return $this->normalVariant;
}
/**
* Add additionalCartVariant
*
* @param ProductVariant $additionalCartVariant
*
* @return ProductVariant
*/
public function addAdditionalCartVariant(ProductVariant $additionalCartVariant): ProductVariant
{
$additionalCartVariant->addBasicCartVariant($this);
$this->additionalCartVariant[] = $additionalCartVariant;
return $this;
}
/**
* Remove additionalCartVariant
*
* @param ProductVariant $additionalCartVariant
*/
public function removeAdditionalCartVariant(ProductVariant $additionalCartVariant)
{
$additionalCartVariant->removeBasicCartVariant($this);
$this->additionalCartVariant->removeElement($additionalCartVariant);
}
/**
* Get additionalCartVariant
*
* @return Collection
*/
public function getAdditionalCartVariant(): ?Collection
{
return $this->additionalCartVariant;
}
/**
* Add basicCartVariant
*
* @param ProductVariant $basicCartVariant
*
* @return ProductVariant
*/
public function addBasicCartVariant(ProductVariant $basicCartVariant): ProductVariant
{
$this->basicCartVariant[] = $basicCartVariant;
return $this;
}
/**
* Remove basicCartVariant
*
* @param ProductVariant $basicCartVariant
*/
public function removeBasicCartVariant(ProductVariant $basicCartVariant)
{
$this->basicCartVariant->removeElement($basicCartVariant);
}
/**
* Get basicCartVariant
*
* @return Collection
*/
public function getBasicCartVariant(): ?Collection
{
return $this->basicCartVariant;
}
/**
* Add additionalCartVariantUpselling
*
* @param ProductVariant $additionalCartVariantUpselling
*
* @return ProductVariant
*/
public function addAdditionalCartVariantUpselling(ProductVariant $additionalCartVariantUpselling): ProductVariant
{
$additionalCartVariantUpselling->addBasicCartVariantUpselling($this);
$this->additionalCartVariantUpselling[] = $additionalCartVariantUpselling;
return $this;
}
/**
* Remove additionalCartVariantUpselling
*
* @param ProductVariant $additionalCartVariantUpselling
*/
public function removeAdditionalCartVariantUpselling(ProductVariant $additionalCartVariantUpselling)
{
$additionalCartVariantUpselling->removeBasicCartVariantUpselling($this);
$this->additionalCartVariantUpselling->removeElement($additionalCartVariantUpselling);
}
/**
* Get additionalCartVariantUpselling
*
* @return Collection
*/
public function getAdditionalCartVariantUpselling(): ?Collection
{
return $this->additionalCartVariantUpselling;
}
/**
* Add basicCartVariantUpselling
*
* @param ProductVariant $basicCartVariantUpselling
*
* @return ProductVariant
*/
public function addBasicCartVariantUpselling(ProductVariant $basicCartVariantUpselling): ProductVariant
{
$this->basicCartVariantUpselling[] = $basicCartVariantUpselling;
return $this;
}
/**
* Remove basicCartVariantUpselling
*
* @param ProductVariant $basicCartVariantUpselling
*/
public function removeBasicCartVariantUpselling(ProductVariant $basicCartVariantUpselling)
{
$this->basicCartVariantUpselling->removeElement($basicCartVariantUpselling);
}
/**
* Get basicCartVariantUpselling
*
* @return Collection
*/
public function getBasicCartVariantUpselling(): ?Collection
{
return $this->basicCartVariantUpselling;
}
public function getMustHaveAllExclusiveVariants(): ?bool
{
return $this->mustHaveAllExclusiveVariants;
}
public function setMustHaveAllExclusiveVariants(?bool $mustHaveAllExclusiveVariants): self
{
$this->mustHaveAllExclusiveVariants = $mustHaveAllExclusiveVariants;
return $this;
}
public function getEvent(): ?Events
{
return $this->event;
}
public function setEvent(?Events $event): self
{
$this->event = $event;
return $this;
}
/**
* @return Collection|LeadFormResponse[]
*/
public function getLeadFormResponses(): Collection
{
return $this->leadFormResponses;
}
public function addLeadFormResponse(LeadFormResponse $leadFormResponse): self
{
if (!$this->leadFormResponses->contains($leadFormResponse)) {
$this->leadFormResponses[] = $leadFormResponse;
$leadFormResponse->setProductVariant($this);
}
return $this;
}
public function removeLeadFormResponse(LeadFormResponse $leadFormResponse): self
{
if ($this->leadFormResponses->contains($leadFormResponse)) {
$this->leadFormResponses->removeElement($leadFormResponse);
// set the owning side to null (unless already changed)
if ($leadFormResponse->getProductVariant() === $this) {
$leadFormResponse->setProductVariant(null);
}
}
return $this;
}
/**
* @return Collection|LeadFormResponse[]
*/
public function getLeadFormResponseValidations(): Collection
{
return $this->leadFormResponseValidations;
}
public function addLeadFormResponseValidation(LeadFormResponse $leadFormResponseValidation): self
{
if (!$this->leadFormResponseValidations->contains($leadFormResponseValidation)) {
$this->leadFormResponseValidations[] = $leadFormResponseValidation;
$leadFormResponseValidation->addProductVariantsValidation($this);
}
return $this;
}
public function removeLeadFormResponseValidation(LeadFormResponse $leadFormResponseValidation): self
{
if ($this->leadFormResponseValidations->contains($leadFormResponseValidation)) {
$this->leadFormResponseValidations->removeElement($leadFormResponseValidation);
// set the owning side to null (unless already changed)
if ($leadFormResponseValidation->getProductVariantsValidation()->contains($this)) {
$leadFormResponseValidation->removeProductVariantsValidation($this);
}
}
return $this;
}
/**
* @return Collection|NewsletterTemplate[]
*/
public function getNewsletterTemplateValidations(): Collection
{
return $this->newsletterTemplateValidations;
}
public function addNewsletterTemplateValidation(NewsletterTemplate $newsletterTemplateValidation): self
{
if (!$this->newsletterTemplateValidations->contains($newsletterTemplateValidation)) {
$this->newsletterTemplateValidations[] = $newsletterTemplateValidation;
$newsletterTemplateValidation->getProductVariantsValidation()->add($this);
}
return $this;
}
public function removeNewsletterTemplateValidation(NewsletterTemplate $newsletterTemplateValidation): self
{
if ($this->newsletterTemplateValidations->contains($newsletterTemplateValidation)) {
$this->newsletterTemplateValidations->removeElement($newsletterTemplateValidation);
// set the owning side to null (unless already changed)
if ($newsletterTemplateValidation->getProductVariantsValidation()->contains($this)) {
$newsletterTemplateValidation->getProductVariantsValidation()->removeElement($this);
}
}
return $this;
}
public function getTradeNameSM(): ?string
{
return $this->TradeNameSM;
}
public function setTradeNameSM(?string $TradeNameSM): self
{
$this->TradeNameSM = $TradeNameSM;
return $this;
}
public function getCommentForMantis(): ?string
{
return $this->commentForMantis;
}
public function setCommentForMantis(?string $commentForMantis): self
{
$this->commentForMantis = $commentForMantis;
return $this;
}
public function isNetflixVariant(): bool
{
foreach ($this->getPortalSettings() as $portalSetting)
{
if(!$portalSetting->getIsNetflixPortal()){
return false;
}
}
return true;
}
/**
* @return Collection|CalendarEvent[]
*/
public function getCalendarEvents(): Collection
{
return $this->calendarEvents;
}
public function addCalendarEvent(CalendarEvent $calendarEvent): self
{
if (!$this->calendarEvents->contains($calendarEvent)) {
$this->calendarEvents[] = $calendarEvent;
$calendarEvent->setProductVariant($this);
}
return $this;
}
public function removeCalendarEvent(CalendarEvent $calendarEvent): self
{
if ($this->calendarEvents->contains($calendarEvent)) {
$this->calendarEvents->removeElement($calendarEvent);
// set the owning side to null (unless already changed)
if ($calendarEvent->getProductVariant() === $this) {
$calendarEvent->setProductVariant(null);
}
}
return $this;
}
public function getCouponLifetime(): ?int
{
return $this->couponLifetime;
}
public function setCouponLifetime(?int $couponLifetime): self
{
$this->couponLifetime = $couponLifetime;
return $this;
}
public function getFreshMailIntegration(): ?bool
{
return $this->freshMailIntegration;
}
public function setFreshMailIntegration(?bool $freshMailIntegration): self
{
$this->freshMailIntegration = $freshMailIntegration;
return $this;
}
public function getFreshMailRecipientListHash(): ?string
{
return $this->freshMailRecipientListHash;
}
public function setFreshMailRecipientListHash(?string $freshMailRecipientListHash): self
{
$this->freshMailRecipientListHash = $freshMailRecipientListHash;
return $this;
}
public function getOrderOnSiteContent(): ?string
{
return $this->orderOnSiteContent;
}
public function setOrderOnSiteContent(?string $orderOnSiteContent): self
{
$this->orderOnSiteContent = $orderOnSiteContent;
return $this;
}
public function getManualUserVerification(): ?bool
{
return $this->manualUserVerification;
}
public function setManualUserVerification(bool $manualUserVerification): self
{
$this->manualUserVerification = $manualUserVerification;
return $this;
}
public function getProductVariantOrderQuantity(): ?ProductVariantOrderQuantity
{
return $this->productVariantOrderQuantity;
}
public function setProductVariantOrderQuantity(ProductVariantOrderQuantity $productVariantOrderQuantity): self
{
$this->productVariantOrderQuantity = $productVariantOrderQuantity;
// set the owning side of the relation if necessary
if ($productVariantOrderQuantity->getProductVariant() !== $this) {
$productVariantOrderQuantity->setProductVariant($this);
}
return $this;
}
public function getProductVariantVirtualCurrencySettings(): ?ProductVariantVirtualCurrencySettings
{
return $this->productVariantVirtualCurrencySettings;
}
public function setProductVariantVirtualCurrencySettings(ProductVariantVirtualCurrencySettings $productVariantVirtualCurrencySettings): self
{
$this->productVariantVirtualCurrencySettings = $productVariantVirtualCurrencySettings;
// set the owning side of the relation if necessary
if ($productVariantVirtualCurrencySettings->getProductVariant() !== $this) {
$productVariantVirtualCurrencySettings->setProductVariant($this);
}
return $this;
}
/**
* @return Collection|PaymentReminders[]
*/
public function getPaymentReminders(): Collection
{
return $this->paymentReminders;
}
public function addPaymentReminder(PaymentReminders $paymentReminder): self
{
if (!$this->paymentReminders->contains($paymentReminder)) {
$this->paymentReminders[] = $paymentReminder;
$paymentReminder->addProductVariant($this);
}
return $this;
}
public function removePaymentReminder(PaymentReminders $paymentReminder): self
{
if ($this->paymentReminders->contains($paymentReminder)) {
$this->paymentReminders->removeElement($paymentReminder);
$paymentReminder->removeProductVariant($this);
}
return $this;
}
/**
* @return Collection|ProductVariantUpselling[]
*/
public function getProductVariantUpsellings(): Collection
{
return $this->productVariantUpsellings;
}
public function addProductVariantUpselling(ProductVariantUpselling $productVariantUpselling): self
{
if (!$this->productVariantUpsellings->contains($productVariantUpselling)) {
$this->productVariantUpsellings[] = $productVariantUpselling;
$productVariantUpselling->setProductVariant($this);
}
return $this;
}
public function removeProductVariantUpselling(ProductVariantUpselling $productVariantUpselling): self
{
if ($this->productVariantUpsellings->contains($productVariantUpselling)) {
$this->productVariantUpsellings->removeElement($productVariantUpselling);
// set the owning side to null (unless already changed)
if ($productVariantUpselling->getProductVariant() === $this) {
$productVariantUpselling->setProductVariant(null);
}
}
return $this;
}
/**
* @return Collection|ProductVariantUpselling[]
*/
public function getProductVariantPromoted(): Collection
{
return $this->productVariantPromoted;
}
public function addProductVariantPromoted(ProductVariantUpselling $productVariantUpselling): self
{
if (!$this->productVariantPromoted->contains($productVariantUpselling)) {
$this->productVariantPromoted[] = $productVariantUpselling;
$productVariantUpselling->setPromotedProduct($this);
}
return $this;
}
public function removeProductVariantPromoted(ProductVariantUpselling $productVariantUpselling): self
{
$this->productVariantPromoted->removeElement($productVariantUpselling);
return $this;
}
/**
* @return Collection|FastLeadTemplate[]
*/
public function getFastLeadTemplates(): Collection
{
return $this->fastLeadTemplates;
}
public function addFastLeadTemplate(FastLeadTemplate $fastLeadTemplate): self
{
if (!$this->fastLeadTemplates->contains($fastLeadTemplate)) {
$this->fastLeadTemplates[] = $fastLeadTemplate;
$fastLeadTemplate->setProductVariant($this);
}
return $this;
}
public function removeFastLeadTemplate(FastLeadTemplate $fastLeadTemplate): self
{
if ($this->fastLeadTemplates->contains($fastLeadTemplate)) {
$this->fastLeadTemplates->removeElement($fastLeadTemplate);
// set the owning side to null (unless already changed)
if ($fastLeadTemplate->getProductVariant() === $this) {
$fastLeadTemplate->setProductVariant(null);
}
}
return $this;
}
public function getImageUrlUpselling(): ?string
{
return $this->imageUrlUpselling;
}
public function setImageUrlUpselling(?string $imageUrlUpselling): self
{
$this->imageUrlUpselling = $imageUrlUpselling;
return $this;
}
public function getUseUploadedImageUpselling(): ?bool
{
return $this->useUploadedImageUpselling;
}
public function setUseUploadedImageUpselling(bool $useUploadedImageUpselling): self
{
$this->useUploadedImageUpselling = $useUploadedImageUpselling;
return $this;
}
public function setImageFileUpselling(?File $imageFileUpselling = null)
{
$this->imageFileUpselling = $imageFileUpselling;
}
public function getImageFileUpselling(): ?File
{
return $this->imageFileUpselling;
}
public function setUploadedImageUpselling(?string $uploadedImageUpselling)
{
$this->uploadedImageUpselling = $uploadedImageUpselling;
}
public function getUploadedImageUpselling()
{
return $this->uploadedImageUpselling;
}
public function getDescriptionUpselling(): ?string
{
return $this->descriptionUpselling;
}
public function setDescriptionUpselling(?string $descriptionUpselling): self
{
$this->descriptionUpselling = $descriptionUpselling;
return $this;
}
public function getLinkToProductUpselling()
{
return $this->linkToProductUpselling;
}
public function setLinkToProductUpselling($linkToProductUpselling): self
{
$this->linkToProductUpselling = $linkToProductUpselling;
return $this;
}
public function getCertificates(): Collection
{
return $this->certificates;
}
public function addCertificate(Certificate $certificate): self
{
if (!$this->certificates->contains($certificate)) {
$this->certificates[] = $certificate;
$certificate->getProductVariants()->add($this);
}
return $this;
}
public function removeCertificate(Certificate $certificate): self
{
if ($this->certificates->contains($certificate)) {
$this->certificates->removeElement($certificate);
if ($certificate->getProductVariants()->contains($this)) {
$certificate->getProductVariants()->removeElement($this);
}
}
return $this;
}
public function getShowButtonAdditionalAddress(): ?bool
{
return $this->showButtonAdditionalAddress;
}
public function setShowButtonAdditionalAddress(?bool $showButtonAdditionalAddress): self
{
$this->showButtonAdditionalAddress = $showButtonAdditionalAddress;
return $this;
}
/**
* @return Collection|Omnibus[]
*/
public function getOmnibus(): Collection
{
return $this->omnibus;
}
/**
* @return bool
*/
public function getIsAccessWithoutPayment(): ?bool
{
return $this->isAccessWithoutPayment;
}
/**
* @param bool $isAccessWithoutPayment
*/
public function setIsAccessWithoutPayment(?bool $isAccessWithoutPayment): void
{
$this->isAccessWithoutPayment = $isAccessWithoutPayment;
}
public function getMaxQuantityInCart(): ?int
{
return $this->maxQuantityInCart;
}
public function setMaxQuantityInCart(?int $maxQuantityInCart): self
{
$this->maxQuantityInCart = $maxQuantityInCart;
return $this;
}
/**
* @return Collection|ShippingType[]
*/
public function getShippingTypes(): Collection
{
return $this->shippingTypes;
}
public function addShippingType(ShippingType $shippingType): self
{
if (!$this->shippingTypes->contains($shippingType)) {
$this->shippingTypes[] = $shippingType;
}
return $this;
}
public function removeShippingType(ShippingType $shippingType): self
{
if ($this->shippingTypes->contains($shippingType)) {
$this->shippingTypes->removeElement($shippingType);
}
return $this;
}
public function getSize(): ?ProductVariantSize
{
return $this->size;
}
public function setSize(?ProductVariantSize $size): self
{
$this->size = $size;
return $this;
}
public function getExcludeDefaultShippingType(): ?bool
{
return $this->excludeDefaultShippingType;
}
public function setExcludeDefaultShippingType(bool $excludeDefaultShippingType): self
{
$this->excludeDefaultShippingType = $excludeDefaultShippingType;
return $this;
}
public function isShippingVariant(): bool
{
return
!$this->getIsCompletelyDigital() &&
!$this->getIsVirtual() &&
!$this->isEvent() &&
!$this->getIsUniqskillsProduct();
}
public function getIsCompletelyDigital(): ?bool
{
return $this->isCompletelyDigital;
}
public function setIsCompletelyDigital(bool $isCompletelyDigital): self
{
$this->isCompletelyDigital = $isCompletelyDigital;
return $this;
}
/**
* @return Collection|CertificatePathElement[]
*/
public function getCertificatePathElements(): Collection
{
return $this->certificatePathElements;
}
public function addCertificatePathElement(CertificatePathElement $certificatePathElement): self
{
if (!$this->certificatePathElements->contains($certificatePathElement)) {
$this->certificatePathElements[] = $certificatePathElement;
$certificatePathElement->addProductVariant($this);
}
return $this;
}
public function removeCertificatePathElement(CertificatePathElement $certificatePathElement): self
{
if ($this->certificatePathElements->contains($certificatePathElement)) {
$this->certificatePathElements->removeElement($certificatePathElement);
$certificatePathElement->removeProductVariant($this);
}
return $this;
}
public function hasPaperRelease(): ?bool
{
return $this->hasPaperRelease;
}
public function setHasPaperRelease(?bool $hasPaperRelease): self
{
$this->hasPaperRelease = $hasPaperRelease;
return $this;
}
public function getIsNPWZRequired(): ?bool
{
return $this->isNPWZRequired !== false;
}
public function setIsNPWZRequired(?bool $isNPWZRequired): self
{
$this->isNPWZRequired = $isNPWZRequired;
return $this;
}
public function isSaleDisabled(): ?bool
{
return $this->isSaleDisabled;
}
public function setIsSaleDisabled(bool $isSaleDisabled): self
{
$this->isSaleDisabled = $isSaleDisabled;
return $this;
}
public function getTechnicalInformationForMailTele(): ?string
{
return $this->technicalInformationForMailTele;
}
public function setTechnicalInformationForMailTele(?string $technicalInformationForMailTele): self
{
$this->technicalInformationForMailTele = $technicalInformationForMailTele;
return $this;
}
/**
* @return Collection|AdditionalFile[]
*/
public function getAdditionalFiles(): Collection
{
return $this->additionalFiles;
}
public function addAdditionalFile(AdditionalFile $additionalFile): self
{
if (!$this->additionalFiles->contains($additionalFile)) {
$this->additionalFiles[] = $additionalFile;
$additionalFile->setProductVariant($this);
}
return $this;
}
public function removeAdditionalFile(AdditionalFile $additionalFile): self
{
if ($this->additionalFiles->contains($additionalFile)) {
$this->additionalFiles->removeElement($additionalFile);
// set the owning side to null (unless already changed)
if ($additionalFile->getProductVariant() === $this) {
$additionalFile->setProductVariant(null);
}
}
return $this;
}
public function addSalesManagoCatalog(SalesManagoCatalog $salesManagoCatalog): self
{
if (!$this->salesManagoCatalogs->contains($salesManagoCatalog))
{
$this->salesManagoCatalogs[] = $salesManagoCatalog;
}
return $this;
}
public function removeSalesManagoCatalog(SalesManagoCatalog $salesManagoCatalog): self
{
if ($this->salesManagoCatalogs->contains($salesManagoCatalog))
{
$this->salesManagoCatalogs->removeElement($salesManagoCatalog);
}
return $this;
}
public function getSalesManagoCatalogs(): Collection
{
return $this->salesManagoCatalogs;
}
public function getSalesManagoProductVariant(): ?SalesManagoProductVariant
{
return $this->salesManagoProductVariant;
}
public function setSalesManagoProductVariant(SalesManagoProductVariant $salesManagoProductVariant): self
{
$this->salesManagoProductVariant = $salesManagoProductVariant;
// set the owning side of the relation if necessary
if ($salesManagoProductVariant->getProductVariant() !== $this) {
$salesManagoProductVariant->setProductVariant($this);
}
return $this;
}
/**
* @return Collection|UserFlag[]
*/
public function getUserFlags(): Collection
{
return $this->userFlags;
}
public function addUserFlag(UserFlag $userFlag): self
{
if (!$this->userFlags->contains($userFlag)) {
$this->userFlags[] = $userFlag;
$userFlag->addProductVariant($this);
}
return $this;
}
public function removeUserFlag(UserFlag $userFlag): self
{
if ($this->userFlags->contains($userFlag)) {
$this->userFlags->removeElement($userFlag);
$userFlag->removeProductVariant($this);
}
return $this;
}
public function getProductVariantReviewLinks(): Collection
{
return $this->productVariantReviewLinks;
}
public function addProductVariantReviewLink(ProductVariantReviewLink $productVariantReviewLink): self
{
if (!$this->productVariantReviewLinks->contains($productVariantReviewLink))
{
$this->productVariantReviewLinks[] = $productVariantReviewLink;
$productVariantReviewLink->setProductVariant($this);
}
return $this;
}
public function removeProductVariantReviewLink(ProductVariantReviewLink $productVariantReviewLink): self
{
if ($this->productVariantReviewLinks->contains($productVariantReviewLink))
{
$this->productVariantReviewLinks->removeElement($productVariantReviewLink);
// set the owning side to null (unless already changed)
if ($productVariantReviewLink->getProductVariant() === $this)
{
$productVariantReviewLink->setProductVariant(null);
}
}
return $this;
}
public function getOriginal(): ?self
{
return $this->original;
}
public function setOriginal(?self $original): self
{
$this->original = $original;
return $this;
}
/**
* @return Collection|self[]
*/
public function getSubstitution(): Collection
{
return $this->substitution;
}
public function addSubstitution(self $substitution): self
{
if (!$this->substitution->contains($substitution)) {
$this->substitution[] = $substitution;
$substitution->setOriginal($this);
}
return $this;
}
public function removeSubstitution(self $substitution): self
{
if ($this->substitution->contains($substitution)) {
$this->substitution->removeElement($substitution);
// set the owning side to null (unless already changed)
if ($substitution->getOriginal() === $this) {
$substitution->setOriginal(null);
}
}
return $this;
}
public function isMagazine(): ?bool
{
if (
$this->getMasterProduct()->getProductGosType()
&& $this->getMasterProduct()->getProductGosType()->getName() === 'czasopismo'
)
{
return true;
}
if (
$this->getMasterProduct()->getProductType()
&& $this->getMasterProduct()->getProductType()->getProductMainType()
&& $this->getMasterProduct()->getProductType()->getProductMainType()->getSlug() === 'czasopisma'
)
{
return true;
}
if (
$this->getMasterProduct()->getProductType()
&& stripos($this->getMasterProduct()->getProductType()->getName(), 'czasopism') !== false
)
{
return true;
}
return null;
}
/**
* @return Collection|AdditionalOptionsByClientType[]
*/
public function getAdditionalOptionsByClientTypes(): Collection
{
return $this->additionalOptionsByClientTypes;
}
public function addAdditionalOptionsByClientType(AdditionalOptionsByClientType $additionalOptionsByClientType): self
{
if (!$this->additionalOptionsByClientTypes->contains($additionalOptionsByClientType)) {
$this->additionalOptionsByClientTypes[] = $additionalOptionsByClientType;
$additionalOptionsByClientType->setProductVariant($this);
}
return $this;
}
public function removeAdditionalOptionsByClientType(AdditionalOptionsByClientType $additionalOptionsByClientType): self
{
if ($this->additionalOptionsByClientTypes->contains($additionalOptionsByClientType)) {
$this->additionalOptionsByClientTypes->removeElement($additionalOptionsByClientType);
// set the owning side to null (unless already changed)
if ($additionalOptionsByClientType->getProductVariant() === $this) {
$additionalOptionsByClientType->setProductVariant(null);
}
}
return $this;
}
public function getAdditionalAccessProductVariant(): ?self
{
return $this->additionalAccessProductVariant;
}
public function setAdditionalAccessProductVariant(?self $additionalAccessProductVariant): self
{
$this->additionalAccessProductVariant = $additionalAccessProductVariant;
return $this;
}
public function getGivenProductVariantForAdditionalAccess(): ?self
{
return $this->givenProductVariantForAdditionalAccess;
}
public function setGivenProductVariantForAdditionalAccess(?self $givenProductVariantForAdditionalAccess): self
{
$this->givenProductVariantForAdditionalAccess = $givenProductVariantForAdditionalAccess;
// set (or unset) the owning side of the relation if necessary
$newAdditionalAccessProductVariant = null === $givenProductVariantForAdditionalAccess ? null : $this;
if ($givenProductVariantForAdditionalAccess->getAdditionalAccessProductVariant() !== $newAdditionalAccessProductVariant) {
$givenProductVariantForAdditionalAccess->setAdditionalAccessProductVariant($newAdditionalAccessProductVariant);
}
return $this;
}
public function getAdditionalInformationForMail(): ?string
{
return $this->additionalInformationForMail;
}
public function setAdditionalInformationForMail(?string $additionalInformationForMail): self
{
$this->additionalInformationForMail = $additionalInformationForMail;
return $this;
}
public function findPortalSettings(): ?PortalSettings
{
$portalSettings = !$this->getPortalSettings()->isEmpty() ?
$this->getPortalSettings()->first() :
null;
if ($portalSettings === null) {
$masterProduct = $this->getMasterProduct();
/** @var ProductAssociation $productAssociation */
foreach ($masterProduct->getProductAssociation() as $productAssociation) {
if ($productAssociation->getPortalSettings() !== null) {
return $productAssociation->getPortalSettings();
}
}
}
return $portalSettings;
}
public function expandVariantNumberWithFundings(): array
{
if (!preg_match('#^(\d+)/(.*)$#', $this->getProductVariantNoComplete(), $matches)) {
return [$this->getProductVariantNoComplete()];
}
$numeric = $matches[1];
$suffix = $matches[2];
return [
$this->getProductVariantNoComplete(), // bez dofinansowania
$numeric . '0/' . $suffix, // dofinansowanie 100%
$numeric . '3/' . $suffix, // dofinansowanie >= 70%
];
}
public function getDescriptionUpsellingMaxHeight(): ?int
{
return $this->descriptionUpsellingMaxHeight;
}
public function setDescriptionUpsellingMaxHeight(?int $descriptionUpsellingMaxHeight): self
{
$this->descriptionUpsellingMaxHeight = $descriptionUpsellingMaxHeight;
return $this;
}
public function isTestProduct(): bool
{
return $this->getVariantState() === 'Product test';
}
public function isPriceGrossCalculated(): bool
{
return $this->isPriceGrossCalculated;
}
/**
* UWAGA! Stawka VAT jest dynamicznie ustawiana na podstawie typu klienta i kraju w ProductVariantPriceListener
* @return int
*/
public function getVatRate(): int
{
return $this->vatRate;
}
public function getSourceSystem(): ProductSourceSystem
{
return $this->getMasterProduct()->getSourceSystem();
}
}