src/Entity/System/Product.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Entity\System;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\Common\Collections\Collection;
  5. use Doctrine\ORM\Mapping as ORM;
  6. /**
  7.  * Product
  8.  *
  9.  * @ORM\Table(name="ps_product",
  10.  *      uniqueConstraints={
  11.  *
  12.  *          @ORM\UniqueConstraint(name="unique_reference", columns={"reference"})
  13.  *      },
  14.  *      indexes={
  15.  *
  16.  *          @ORM\Index(name="key_reference", columns={"reference"}),
  17.  *          @ORM\Index(name="active", columns={"active"}),
  18.  *          @ORM\Index(name="traducir", columns={"traducir"}),
  19.  *          @ORM\Index(name="indexed", columns={"indexed"}),
  20.  *          @ORM\Index(name="ean13_2", columns={"ean13_2"}),
  21.  *          @ORM\Index(name="visibility", columns={"visibility"}),
  22.  *          @ORM\Index(name="ean13", columns={"ean13"}),
  23.  *          @ORM\Index(name="condition", columns={"condition"}),
  24.  *          @ORM\Index(name="active_is_virtual_sincronizar", columns={"active","is_virtual","sincronizar"}),
  25.  *          @ORM\Index(name="is_virtual", columns={"is_virtual"}),
  26.  *          @ORM\Index(name="id_category_default", columns={"id_category_default"}),
  27.  *          @ORM\Index(name="sincronizar", columns={"sincronizar"}),
  28.  *          @ORM\Index(name="date_add", columns={"date_add"}),
  29.  *          @ORM\Index(name="id_product_compras", columns={"id_product_compras"}),
  30.  *          @ORM\Index(name="price", columns={"price"})
  31.  *      }
  32.  * )
  33.  *
  34.  * @ORM\Entity(repositoryClass="App\Repository\System\ProductRepository")
  35.  */
  36. class Product
  37. {
  38.     public const SELLING_CHANNEL_BIGBUY_EU 'BIGBUY_EU';
  39.     public const SELLING_CHANNEL_DROPSHIPPING 'DROPSHIPPING';
  40.     public const SELLING_CHANNELS_ALLOWED_INDEX = [
  41.         self::SELLING_CHANNEL_DROPSHIPPING => true,
  42.         self::SELLING_CHANNEL_BIGBUY_EU => true,
  43.     ];
  44.     public const SHOP_360_SUPPLY 95079;
  45.     public const SHOP_360_DISTRICT 95082;
  46.     public const SHOP_360_AVENNUE 95083;
  47.     public const SHOP_360_IMPULSE 95085;
  48.     public const SHOP_360_CAPITAL 95092;
  49.     public const SHOP_360_PRESTIGE 95093;
  50.     public const SHOP_360_SHOWTIME 95094;
  51.     public const SHOPIFY_PRODUCTS_IDS = [self::SHOP_360_SUPPLYself::SHOP_360_DISTRICTself::SHOP_360_AVENNUEself::SHOP_360_IMPULSEself::SHOP_360_CAPITALself::SHOP_360_PRESTIGEself::SHOP_360_SHOWTIME];
  52.     public const SHOP_360_PRODUCTS = [4125641259206924206923206922206921206920206919273397273398];
  53.     public const INIT_AMOUNT_PRODUCT_ID 34990;
  54.     public const COURSE_ECOMMERCE_SKU 'SRV01028';
  55.     public const COURSE_SHOPIFY_STORE_CONTROL_ONBOARDING_SKU 'SRV01016';
  56.     public const COURSE_SHOPIFY_SETUP_ESSENTIALS_ONBOARDING_SKU 'SRV01022';
  57.     public const SHOPIFY_COURSES_GIFT_REFERENCES = [self::COURSE_SHOPIFY_SETUP_ESSENTIALS_ONBOARDING_SKU];
  58.     public const SHOPS_COURSES_GIFT_REFERENCES = [self::COURSE_SHOPIFY_STORE_CONTROL_ONBOARDING_SKUself::COURSE_ECOMMERCE_SKU];
  59.     public const FEATURE_ACADEMY_COURSE_ID 4907;
  60.     public const FEATURE_ACADEMY_COURSE_LEVEL 4915;
  61.     public const FEATURE_ACADEMY_COURSE_LIFETIME 4916;
  62.     public const FEATURE_ACADEMY_COURSE_LESSONS 4917;
  63.     public const FEATURE_ACADEMY_COURSE_DURATION 4918;
  64.     public const FEATURE_ACADEMY_COURSE_SUBTITLES 4919;
  65.     public const FEATURE_ACADEMY_COURSE_TYPE 4920;
  66.     public const FEATURE_ACADEMY_COURSE_AUDIO 4926;
  67.     public const FEATURE_ACADEMY_COURSE_TYPE_ONBOARDING 231154;
  68.     public const FEATURE_ACADEMY_COURSE_TYPE_INTERNAL 233082;
  69.     public const FEATURE_ACADEMY_COURSE_TYPE_EXTERNAL 233517;
  70.     public const FEATURE_ACADEMY_COURSE_TYPE_REGISTRATION 234032;
  71.     public const FEATURE_COUNTRY_OF_ORIGIN 279;
  72.     public const FEATURE_PLUG_EU 28017;
  73.     public const MONEYBOX_PRODUCT_ID 13690;
  74.     public const REGISTRATION_COURSE_SKU 'SRV01037';
  75.     public const RENOVATION_COURSE_SKU 'SRV01038';
  76.     public const POWER_MBA_REGISTRATION_REFERENCES = [self::REGISTRATION_COURSE_SKUself::RENOVATION_COURSE_SKU];
  77.     public const FEATURES_INCLUDED_FOR_API = [
  78.         self::FEATURE_COUNTRY_OF_ORIGIN,
  79.         self::FEATURE_PLUG_EU,
  80.     ];
  81.     public const FEATURE_ACADEMY_IDS_EXCLUDED_FROM_PRODUCT_DETAIL = [
  82.         self::FEATURE_ACADEMY_COURSE_ID,
  83.         self::FEATURE_ACADEMY_COURSE_TYPE,
  84.     ];
  85.     public const FEATURE_ACADEMY_IDS_SORTING_FOR_PRODUCT_DETAIL = [
  86.         self::FEATURE_ACADEMY_COURSE_LEVEL,
  87.         self::FEATURE_ACADEMY_COURSE_DURATION,
  88.         self::FEATURE_ACADEMY_COURSE_LESSONS,
  89.         self::FEATURE_ACADEMY_COURSE_LIFETIME,
  90.         self::FEATURE_ACADEMY_COURSE_AUDIO,
  91.         self::FEATURE_ACADEMY_COURSE_SUBTITLES,
  92.     ];
  93.     public const PACK_MARKETPLACES_ANNUAL_PRODUCT_ID 95301;
  94.     public const PACK_MARKETPLACES_ANNUAL_PRODUCT_SKU 'PACKMARKETPLACES-A';
  95.     public const PACK_MARKETPLACES_BIANNUAL_PRODUCT_ID 95303;
  96.     public const PACK_MARKETPLACES_BIANNUAL_PRODUCT_SKU 'PACKMARKETPLACES-S';
  97.     public const PACK_MARKETPLACES_MONTHLY_PRODUCT_ID 95302;
  98.     public const PACK_MARKETPLACES_MONTHLY_PRODUCT_SKU 'PACKMARKETPLACES-M';
  99.     public const NEW_PACK_MARKETPLACES_ANNUAL_PRODUCT_ID 165016;
  100.     public const NEW_PACK_MARKETPLACES_BIANNUAL_PRODUCT_ID 165028;
  101.     public const NEW_PACK_MARKETPLACES_MONTHLY_PRODUCT_ID 165024;
  102.     public const NEW_PACK_ENTERPRISE_MONTHLY_PRODUCT_ID 100197;
  103.     public const NEW_PACK_ENTERPRISE_BIANNUAL_PRODUCT_ID 100198;
  104.     public const NEW_PACK_ENTERPRISE_ANNUAL_PRODUCT_ID 100196;
  105.     public const NEW_PACK_PRO_MONTHLY_PRODUCT_ID 34986;
  106.     public const NEW_PACK_PRO_BIANNUAL_PRODUCT_ID 34989;
  107.     public const NEW_PACK_PRO_ANNUAL_PRODUCT_ID 34988;
  108.     public const NEW_PACK_DROPSHIP_MONTHLY_PRODUCT_ID 100194;
  109.     public const NEW_PACK_DROPSHIP_BIANNUAL_PRODUCT_ID 100195;
  110.     public const NEW_PACK_DROPSHIP_ANNUAL_PRODUCT_ID 100193;
  111.     public const PACK_PREMIUM_MONTHLY_PRODUCT_ID 34984;
  112.     public const PACK_PREMIUM_BIANNUAL_PRODUCT_ID 34987;
  113.     public const PACK_PREMIUM_ANNUAL_PRODUCT_ID 34985;
  114.     public const PACK_ECOMMERCE_ANNUAL_PRODUCT_ID 95298;
  115.     public const PACK_ECOMMERCE_ANNUAL_PRODUCT_SKU 'PACKECOMMERCE-A';
  116.     public const PACK_ECOMMERCE_BIANNUAL_PRODUCT_ID 95300;
  117.     public const PACK_ECOMMERCE_BIANNUAL_PRODUCT_SKU 'PACKECOMMERCE-S';
  118.     public const PACK_ECOMMERCE_MONTHLY_PRODUCT_ID 95299;
  119.     public const PACK_ECOMMERCE_MONTHLY_PRODUCT_SKU 'PACKECOMMERCE-M';
  120.     public const PACK_B2B_PRODUCT_ID 100185;
  121.     public const PACK_B2B_PRODUCT_REFERENCE 'PACKB2B';
  122.     public const PRESTASHOP_CONNECTOR_ID 95290;
  123.     public const WOOCOMMERCE_CONNECTOR_ID 121732;
  124.     public const SHOPIFY_CONNECTOR_ID 95291;
  125.     public const WIX_CONNECTOR_ID 364343;
  126.     public const AMAZON_EBAY_CONNECTOR_ID 95289;
  127.     public const ALIEXPRESS_CONNECTOR_ID 102221;
  128.     public const FNAC_CONNECTOR_ID 116983;
  129.     public const CDISCOUNT_CONNECTOR_ID 120519;
  130.     public const RAKUTEN_CONNECTOR_ID 102222;
  131.     public const CARREFOUR_ES_CONNECTOR_ID 116984;
  132.     public const DARTY_CONNECTOR_ID 120520;
  133.     public const EPRICE_CONNECTOR_ID 121729;
  134.     public const RUEDUCOMMERCE_CONNECTOR_ID 121731;
  135.     public const CONFORAMA_CONNECTOR_ID 121730;
  136.     public const KAUFLAND_CONNECTOR_ID 131973;
  137.     public const BOL_CONNECTOR_ID 131974;
  138.     public const MAGENTO_CONECTOR_ID 169260;
  139.     public const MARKETPLACES_5x 218735;
  140.     public const PC_COMPONENTES_CONNECTOR_ID 206126;
  141.     public const WORTEN_CONNECTOR_ID 270665;
  142.     public const ALLEGRO_CONNECTOR_ID 314083;
  143.     public const LEROY_MERLIN_CONNECTOR_ID 347188;
  144.     public const CDON_CONNECTOR_ID 442297;
  145.     public const BACKMARKET_CONNECTOR_ID 448991;
  146.     public const CARREFOUR_FR_CONNECTOR_ID 449719;
  147.     public const ELECLERC_CONNECTOR_ID 477824;
  148.     public const AMAZON_RAKUTEN_CONNECTOR_ID 756394;
  149.     public const AMAZON_WORTEN_CONNECTOR_ID 758387;
  150.     public const AMAZON_KAUFLAND_CONNECTOR_ID 758391;
  151.     public const AMAZON_FNAC_CONNECTOR_ID 758419;
  152.     public const AMAZON_EPRICE_CONNECTOR_ID 758421;
  153.     public const AMAZON_CDON_CONNECTOR_ID 758422;
  154.     public const EBAY_CONNECTOR_ID 758423;
  155.     public const AMAZON_CONNECTOR_ID 806955;
  156.     public const MEDIAMARKT_ES_CONNECTOR_ID 1014998;
  157.     public const MEDIAMARKT_DE_CONNECTOR_ID 1015099;
  158.     public const MEDIAMARKT_IT_CONNECTOR_ID 1106825;
  159.     public const MANOMANO_CONNECTOR_ID 1118101;
  160.     public const REFURBED_CONNECTOR_ID 1118102;
  161.     public const SPRINTER_CONNECTOR_ID 1118103;
  162.     public const CLUBEFASHION_CONNECTOR_ID 1118104;
  163.     public const MIRAVIA_CONNECTOR_ID 673854;
  164.     public const WISH_CONNECTOR_ID 448860;
  165.     public const SHOPIFY_SHOP 95084;
  166.     public const PACK_ECOMMERCE_PRODUCT_IDS = [
  167.         self::PACK_ECOMMERCE_ANNUAL_PRODUCT_ID,
  168.         self::PACK_ECOMMERCE_BIANNUAL_PRODUCT_ID,
  169.         self::PACK_ECOMMERCE_MONTHLY_PRODUCT_ID,
  170.     ];
  171.     public const PACKS_PRODUCT_IDS = [
  172.         self::PACK_MARKETPLACES_ANNUAL_PRODUCT_ID,
  173.         self::PACK_MARKETPLACES_BIANNUAL_PRODUCT_ID,
  174.         self::PACK_MARKETPLACES_MONTHLY_PRODUCT_ID,
  175.         self::NEW_PACK_MARKETPLACES_ANNUAL_PRODUCT_ID,
  176.         self::NEW_PACK_MARKETPLACES_BIANNUAL_PRODUCT_ID,
  177.         self::NEW_PACK_MARKETPLACES_MONTHLY_PRODUCT_ID,
  178.         self::PACK_ECOMMERCE_ANNUAL_PRODUCT_ID,
  179.         self::PACK_ECOMMERCE_BIANNUAL_PRODUCT_ID,
  180.         self::PACK_ECOMMERCE_MONTHLY_PRODUCT_ID,
  181.         self::PACK_B2B_PRODUCT_ID,
  182.         self::NEW_PACK_ENTERPRISE_MONTHLY_PRODUCT_ID,
  183.         self::NEW_PACK_ENTERPRISE_BIANNUAL_PRODUCT_ID,
  184.         self::NEW_PACK_ENTERPRISE_ANNUAL_PRODUCT_ID,
  185.         self::NEW_PACK_PRO_MONTHLY_PRODUCT_ID,
  186.         self::NEW_PACK_PRO_BIANNUAL_PRODUCT_ID,
  187.         self::NEW_PACK_PRO_ANNUAL_PRODUCT_ID,
  188.         self::NEW_PACK_DROPSHIP_MONTHLY_PRODUCT_ID,
  189.         self::NEW_PACK_DROPSHIP_BIANNUAL_PRODUCT_ID,
  190.         self::NEW_PACK_DROPSHIP_ANNUAL_PRODUCT_ID,
  191.         self::PACK_PREMIUM_MONTHLY_PRODUCT_ID,
  192.         self::PACK_PREMIUM_BIANNUAL_PRODUCT_ID,
  193.         self::PACK_PREMIUM_ANNUAL_PRODUCT_ID,
  194.     ];
  195.     public const AMAZON_COMBINED_CONNECTOR_PRODUCT_IDS = [
  196.         self::AMAZON_CDON_CONNECTOR_ID,
  197.         self::AMAZON_EPRICE_CONNECTOR_ID,
  198.         self::AMAZON_FNAC_CONNECTOR_ID,
  199.         self::AMAZON_KAUFLAND_CONNECTOR_ID,
  200.         self::AMAZON_RAKUTEN_CONNECTOR_ID,
  201.         self::AMAZON_WORTEN_CONNECTOR_ID,
  202.     ];
  203.     public const ALLOWED_CONNECTOR_PRODUCT_IDS_BY_PACK_ID = [
  204.         Pack::PACK_FREE => [],
  205.         Pack::PACK_B2B => [],
  206.         Pack::PACK_ECOMMERCE => [
  207.             self::PRESTASHOP_CONNECTOR_ID,
  208.             self::WOOCOMMERCE_CONNECTOR_ID,
  209.             self::SHOPIFY_CONNECTOR_ID,
  210.             self::WIX_CONNECTOR_ID,
  211.             self::SHOP_360_SUPPLY,
  212.             self::SHOP_360_DISTRICT,
  213.             self::SHOP_360_AVENNUE,
  214.             self::SHOP_360_IMPULSE,
  215.             self::SHOP_360_CAPITAL,
  216.             self::SHOP_360_PRESTIGE,
  217.             self::SHOP_360_SHOWTIME,
  218.         ],
  219.         Pack::PACK_MARKETPLACES => [
  220.             self::AMAZON_EBAY_CONNECTOR_ID,
  221.             self::ALIEXPRESS_CONNECTOR_ID,
  222.             self::FNAC_CONNECTOR_ID,
  223.             self::CDISCOUNT_CONNECTOR_ID,
  224.             self::RAKUTEN_CONNECTOR_ID,
  225.             self::CARREFOUR_ES_CONNECTOR_ID,
  226.             self::DARTY_CONNECTOR_ID,
  227.             self::EPRICE_CONNECTOR_ID,
  228.             self::RUEDUCOMMERCE_CONNECTOR_ID,
  229.             self::CONFORAMA_CONNECTOR_ID,
  230.             self::KAUFLAND_CONNECTOR_ID,
  231.             self::BOL_CONNECTOR_ID,
  232.             self::SHOPIFY_CONNECTOR_ID,
  233.             self::PRESTASHOP_CONNECTOR_ID,
  234.             self::WOOCOMMERCE_CONNECTOR_ID,
  235.             self::MARKETPLACES_5x,
  236.             self::PC_COMPONENTES_CONNECTOR_ID,
  237.             self::WORTEN_CONNECTOR_ID,
  238.             self::ALLEGRO_CONNECTOR_ID,
  239.             self::WIX_CONNECTOR_ID,
  240.             self::LEROY_MERLIN_CONNECTOR_ID,
  241.             self::CDON_CONNECTOR_ID,
  242.             self::BACKMARKET_CONNECTOR_ID,
  243.             self::CARREFOUR_FR_CONNECTOR_ID,
  244.             self::ELECLERC_CONNECTOR_ID,
  245.             self::WISH_CONNECTOR_ID,
  246.             self::AMAZON_RAKUTEN_CONNECTOR_ID,
  247.             self::AMAZON_WORTEN_CONNECTOR_ID,
  248.             self::AMAZON_KAUFLAND_CONNECTOR_ID,
  249.             self::AMAZON_FNAC_CONNECTOR_ID,
  250.             self::AMAZON_EPRICE_CONNECTOR_ID,
  251.             self::AMAZON_CDON_CONNECTOR_ID,
  252.             self::EBAY_CONNECTOR_ID,
  253.             self::AMAZON_CONNECTOR_ID,
  254.             self::MEDIAMARKT_ES_CONNECTOR_ID,
  255.             self::MEDIAMARKT_DE_CONNECTOR_ID,
  256.             self::MEDIAMARKT_IT_CONNECTOR_ID,
  257.             self::MANOMANO_CONNECTOR_ID,
  258.             self::REFURBED_CONNECTOR_ID,
  259.             self::SPRINTER_CONNECTOR_ID,
  260.             self::CLUBEFASHION_CONNECTOR_ID,
  261.             self::MIRAVIA_CONNECTOR_ID,
  262.             self::SHOP_360_SUPPLY,
  263.             self::SHOP_360_DISTRICT,
  264.             self::SHOP_360_AVENNUE,
  265.             self::SHOP_360_IMPULSE,
  266.             self::SHOP_360_CAPITAL,
  267.             self::SHOP_360_PRESTIGE,
  268.             self::SHOP_360_SHOWTIME,
  269.         ],
  270.     ];
  271.     /** @deprecated use feature type self::FEATURE_ACADEMY_COURSE_TYPE_REGISTRATION */
  272.     public const REGISTRATION_COURSES_LIST = [self::REGISTRATION_COURSE_SKUself::RENOVATION_COURSE_SKU];
  273.     public const SUPPORT_PRODUCT_ID 5022;
  274.     public const MAINTENANCE_PRODUCT_ID 1035502;
  275.     public const SUPPORT_AND_MAINTENANCE_PRODUCTS = [
  276.         self::SUPPORT_PRODUCT_ID,
  277.         self::MAINTENANCE_PRODUCT_ID,
  278.     ];
  279.     public const CONDITION_NEW_NAME 'NEW';
  280.     public const CONDITION_NEW_ID 1;
  281.     public const CONDITION_REFURBISHED_A_NAME 'REFURBISHED_A';
  282.     public const CONDITION_REFURBISHED_A_ID 2;
  283.     public const CONDITION_REFURBISHED_A_PLUS_NAME 'REFURBISHED_A_PLUS';
  284.     public const CONDITION_REFURBISHED_A_PLUS_ID 3;
  285.     public const CONDITION_REFURBISHED_B_NAME 'REFURBISHED_B';
  286.     public const CONDITION_REFURBISHED_B_ID 4;
  287.     public const CONDITION_REFURBISHED_C_NAME 'REFURBISHED_C';
  288.     public const CONDITION_REFURBISHED_C_ID 5;
  289.     public const CONDITION_REFURBISHED_D_NAME 'REFURBISHED_D';
  290.     public const CONDITION_REFURBISHED_D_ID 6;
  291.     public const CONDITION_IDS_INDEXED_BY_NAME = [
  292.         self::CONDITION_NEW_NAME => self::CONDITION_NEW_ID,
  293.         self::CONDITION_REFURBISHED_A_NAME => self::CONDITION_REFURBISHED_A_ID,
  294.         self::CONDITION_REFURBISHED_A_PLUS_NAME => self::CONDITION_REFURBISHED_A_PLUS_ID,
  295.         self::CONDITION_REFURBISHED_B_NAME => self::CONDITION_REFURBISHED_B_ID,
  296.         self::CONDITION_REFURBISHED_C_NAME => self::CONDITION_REFURBISHED_C_ID,
  297.         self::CONDITION_REFURBISHED_D_NAME => self::CONDITION_REFURBISHED_D_ID,
  298.     ];
  299.     public const STRIPE_AVAILABLE_SUBSCRIPTION_PRODUCT_IDS = [
  300.         self::PACK_ECOMMERCE_MONTHLY_PRODUCT_ID,
  301.         self::PACK_ECOMMERCE_ANNUAL_PRODUCT_ID,
  302.         self::PACK_MARKETPLACES_MONTHLY_PRODUCT_ID,
  303.         self::PACK_MARKETPLACES_ANNUAL_PRODUCT_ID,
  304.     ];
  305.     /**
  306.      * @var int
  307.      *
  308.      * @ORM\Column(name="id_product", type="integer")
  309.      *
  310.      * @ORM\Id
  311.      *
  312.      * @ORM\GeneratedValue(strategy="AUTO")
  313.      */
  314.     private $id;
  315.     /**
  316.      * @var TaxRuleGroup
  317.      *
  318.      * @ORM\ManyToOne(targetEntity="TaxRuleGroup")
  319.      *
  320.      * @ORM\JoinColumn(name="id_tax", referencedColumnName="id_tax_rules_group")
  321.      */
  322.     private $taxRuleGroup;
  323.     /**
  324.      * @ORM\ManyToOne(targetEntity="Supplier")
  325.      *
  326.      * @ORM\JoinColumn(name="id_supplier", referencedColumnName="id_plazo_aprovisionamiento_proveedor", nullable=true)
  327.      */
  328.     private ?Supplier $supplier;
  329.     /**
  330.      * @var bool
  331.      *
  332.      * @ORM\Column(type="boolean", options={"default" : 0})
  333.      */
  334.     private $onSale;
  335.     /**
  336.      * @var bool
  337.      *
  338.      * @ORM\Column(type="boolean", options={"default" : 0})
  339.      */
  340.     private $onlineOnly;
  341.     /**
  342.      * @var string|null
  343.      *
  344.      * @ORM\Column(name="ean13", type="string", length=13, nullable=true)
  345.      */
  346.     private $ean;
  347.     /**
  348.      * @var string|null
  349.      *
  350.      * @ORM\Column(type="string", length=12, nullable=true)
  351.      */
  352.     private $upc;
  353.     /**
  354.      * @var float
  355.      *
  356.      * @ORM\Column(type="float", options={"default" : 0}, nullable=false)
  357.      */
  358.     private $ecotax;
  359.     /**
  360.      * @var int
  361.      *
  362.      * @ORM\Column(type="integer", length=10, nullable=false, options={"default" : 0})
  363.      */
  364.     private $quantity;
  365.     /**
  366.      * @var int
  367.      *
  368.      * @ORM\Column(type="integer", length=10, nullable=false, options={"default" : 1})
  369.      */
  370.     private $minimalQuantity;
  371.     /**
  372.      * @var float
  373.      *
  374.      * @ORM\Column(type="float", options={"default" : 0}, nullable=false)
  375.      */
  376.     private $price;
  377.     /**
  378.      * @var float
  379.      *
  380.      * @ORM\Column(type="float", options={"default" : 0}, nullable=false)
  381.      */
  382.     private $wholesalePrice;
  383.     /**
  384.      * /**
  385.      * @var string|null
  386.      *
  387.      * @ORM\Column(type="string", length=255, nullable=true)
  388.      */
  389.     private $unity;
  390.     /**
  391.      * @var string
  392.      *
  393.      * @ORM\Column(name="reference", type="string", length=32, nullable=false)
  394.      */
  395.     private $sku;
  396.     /**
  397.      * @var bool
  398.      *
  399.      * @ORM\Column(name="active", type="boolean")
  400.      */
  401.     private $active;
  402.     /**
  403.      * @var ArrayCollection|ProductImage[]
  404.      *
  405.      * @ORM\OneToMany(targetEntity="ProductImage", mappedBy="product", cascade={"persist"}, indexBy="name")
  406.      */
  407.     private $productImages;
  408.     /**
  409.      * @var ProductAttribute[]|ArrayCollection<int, ProductAttribute>
  410.      *
  411.      * @ORM\OneToMany(targetEntity="ProductAttribute", mappedBy="product", cascade={"persist"})
  412.      */
  413.     private $productAttributes;
  414.     /**
  415.      * @var ProductDate[]|ArrayCollection<int, ProductDate>
  416.      *
  417.      * @ORM\OneToMany(targetEntity="ProductDate", mappedBy="product", cascade={"persist"})
  418.      */
  419.     private $productDates;
  420.     /**
  421.      * @var StockAvailable[]|ArrayCollection<int, StockAvailable>
  422.      *
  423.      * @ORM\OneToMany(targetEntity="StockAvailable", mappedBy="product", cascade={"persist", "remove"})
  424.      */
  425.     private $stocks;
  426.     /**
  427.      * @var ProductStock[]|ArrayCollection<int, ProductStock>
  428.      *
  429.      * @ORM\OneToMany(targetEntity="ProductStock", mappedBy="product", cascade={"persist", "remove"})
  430.      */
  431.     private $productStocks;
  432.     /**
  433.      * @var ArrayCollection<int, SpecificPrice>|SpecificPrice[]
  434.      *
  435.      * @ORM\OneToMany(targetEntity="SpecificPrice", mappedBy="product", cascade={"persist", "remove"})
  436.      */
  437.     private $specificPrices;
  438.     /**
  439.      * @var float
  440.      *
  441.      * @ORM\Column(name="wholesale_price_old", type="float", nullable=false)
  442.      */
  443.     private $oldWholesalePrice;
  444.     /**
  445.      * @var int|null
  446.      *
  447.      * @ORM\Column(name="id_category_default", type="integer", length=10, nullable=true)
  448.      */
  449.     private $categoryDefault;
  450.     /**
  451.      * @var bool
  452.      *
  453.      * @ORM\Column(type="boolean", options={"default" : 0})
  454.      */
  455.     private $sincronizar;
  456.     /**
  457.      * @var float
  458.      *
  459.      * @ORM\Column(type="float", nullable=false)
  460.      */
  461.     private $weight;
  462.     /**
  463.      * @var string
  464.      *
  465.      * @ORM\Column(name="ean13_2", type="string", length=13, nullable=true)
  466.      */
  467.     private $eanVirtual;
  468.     /**
  469.      * @var float
  470.      *
  471.      * @ORM\Column(type="float", nullable=false)
  472.      */
  473.     private $height;
  474.     /**
  475.      * @var float
  476.      *
  477.      * @ORM\Column(type="float", nullable=false)
  478.      */
  479.     private $width;
  480.     /**
  481.      * @var float
  482.      *
  483.      * @ORM\Column(type="float", nullable=false)
  484.      */
  485.     private $depth;
  486.     /**
  487.      * @var float
  488.      *
  489.      * @ORM\Column(type="float", nullable=true, options={"default" : 0})
  490.      */
  491.     private $estimateCostPrice;
  492.     /**
  493.      * @var string
  494.      *
  495.      * @ORM\Column(type="string", length=16, nullable=true)
  496.      */
  497.     private $intrastat;
  498.     /**
  499.      * @var bool
  500.      *
  501.      * @ORM\Column(type="boolean", options={"default" : 0})
  502.      */
  503.     private $isVirtual;
  504.     /**
  505.      * @var ArrayCollection|MinimumOrderQuantity[]
  506.      *
  507.      * @ORM\OneToMany(targetEntity="MinimumOrderQuantity", mappedBy="product", cascade={"persist", "remove"})
  508.      */
  509.     private $minimumOrderQuantitys;
  510.     /**
  511.      * @var ArrayCollection|ProductEan[]
  512.      *
  513.      * @ORM\OneToMany(targetEntity="ProductEan", mappedBy="product", cascade={"persist"})
  514.      */
  515.     private $productEans;
  516.     /**
  517.      * @ORM\Column(name="date_add", type="datetime")
  518.      */
  519.     private $dateAdd;
  520.     /**
  521.      * @ORM\Column(name="date_upd", type="datetime")
  522.      */
  523.     private $dateUpd;
  524.     /**
  525.      * @ORM\Column(name="date_next", type="datetime")
  526.      */
  527.     private $dateNext;
  528.     /**
  529.      * @ORM\Column(name="date_new_stock", type="datetime")
  530.      */
  531.     private $dateNewStock;
  532.     /**
  533.      * @ORM\Column(name="available_date", type="datetime", nullable=false)
  534.      */
  535.     private $availableDate;
  536.     /**
  537.      * @ORM\Column(name="palet", type="integer", nullable=true, options={"default" : 0})
  538.      */
  539.     private $palletUnits;
  540.     /**
  541.      * @ORM\Column(name="box", type="integer", nullable=true, options={"default" : 0})
  542.      */
  543.     private $boxUnits;
  544.     /**
  545.      * @ORM\Column(name="video", type="string", length=64, nullable=true)
  546.      */
  547.     private $video;
  548.     /**
  549.      * @var Brand
  550.      *
  551.      * @ORM\ManyToOne(targetEntity="Brand")
  552.      *
  553.      * @ORM\JoinColumn(name="id_manufacturer", referencedColumnName="id_manufacturer")
  554.      */
  555.     private $manufacturer;
  556.     /**
  557.      * @var Subscription[]|ArrayCollection
  558.      *
  559.      * @ORM\OneToMany(targetEntity="Subscription", mappedBy="product", cascade={"persist"})
  560.      */
  561.     private $subscriptions;
  562.     /**
  563.      * @var string
  564.      *
  565.      * @ORM\Column(type="string", length=1, nullable=true)
  566.      */
  567.     private $logisticClass;
  568.     /**
  569.      * @var int
  570.      *
  571.      * @ORM\Column(type="integer", length=10, options={"default" : 1}, nullable=false)
  572.      */
  573.     private $idShopDefault;
  574.     /**
  575.      * @var float
  576.      *
  577.      * @ORM\Column(type="float", options={"default" : 0}, nullable=false)
  578.      */
  579.     private $unitPriceRatio;
  580.     /**
  581.      * @var float
  582.      *
  583.      * @ORM\Column(type="float", nullable=false, options={"default" : 0})
  584.      */
  585.     private $additionalShippingCost;
  586.     /**
  587.      * @var string
  588.      *
  589.      * @ORM\Column(type="string", length=32, nullable=true)
  590.      */
  591.     private $supplierReference;
  592.     /**
  593.      * @var string
  594.      *
  595.      * @ORM\Column(type="string", length=64, nullable=true)
  596.      */
  597.     private $location;
  598.     /**
  599.      * @var int
  600.      *
  601.      * @ORM\Column(type="integer", length=10, options={"default" : 2}, nullable=false)
  602.      */
  603.     private $outOfStock;
  604.     /**
  605.      * @var bool
  606.      *
  607.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  608.      */
  609.     private $quantityDiscount;
  610.     /**
  611.      * @var bool
  612.      *
  613.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  614.      */
  615.     private $customizable;
  616.     /**
  617.      * @var bool
  618.      *
  619.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  620.      */
  621.     private $uploadableFiles;
  622.     /**
  623.      * @var bool
  624.      *
  625.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  626.      */
  627.     private $textFields;
  628.     /**
  629.      * @var string
  630.      *
  631.      * @ORM\Column(type="string", length=255, nullable=false)
  632.      */
  633.     private $redirectType;
  634.     /**
  635.      * @var int
  636.      *
  637.      * @ORM\Column(type="integer", nullable=false, options={"default" : 0})
  638.      */
  639.     private $idProductRedirected;
  640.     /**
  641.      * @var bool
  642.      *
  643.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 1})
  644.      */
  645.     private $availableForOrder;
  646.     /**
  647.      * @var \DateTime
  648.      *
  649.      * @ORM\Column(type="date", nullable=true)
  650.      */
  651.     private $dateNew;
  652.     /**
  653.      * @var int
  654.      *
  655.      * @ORM\Column(type="integer", name="container_20p", nullable=false, length=10, options={"default" : 0})
  656.      */
  657.     private $container20p;
  658.     /**
  659.      * @var int
  660.      *
  661.      * @ORM\Column(type="integer", name="container_40p", nullable=false, length=10, options={"default" : 0})
  662.      */
  663.     private $container40p;
  664.     /**
  665.      * @var string
  666.      *
  667.      * @ORM\Column(type="string", length=50, nullable=true)
  668.      */
  669.     private $picking;
  670.     /**
  671.      * @var string
  672.      *
  673.      * @ORM\Column(type="string", length=50, nullable=true)
  674.      */
  675.     private $locationPalet1;
  676.     /**
  677.      * @var string
  678.      *
  679.      * @ORM\Column(type="string", length=50, nullable=true)
  680.      */
  681.     private $locationPalet2;
  682.     /**
  683.      * @var int
  684.      *
  685.      * @ORM\Column(type="integer", nullable=false, options={"default" : 0})
  686.      */
  687.     private $minimumQty;
  688.     /**
  689.      * @var string
  690.      *
  691.      * @ORM\Column(type="string", name="`condition`", length=32, nullable=false, options={"default" : "NEW"})
  692.      */
  693.     private $condition;
  694.     /**
  695.      * @var bool
  696.      *
  697.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 1})
  698.      */
  699.     private $showPrice;
  700.     /**
  701.      * @var bool
  702.      *
  703.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  704.      */
  705.     private $indexed;
  706.     /**
  707.      * @var string
  708.      *
  709.      * @ORM\Column(type="string", length=255, nullable=false)
  710.      */
  711.     private $visibility;
  712.     /**
  713.      * @var bool
  714.      *
  715.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  716.      */
  717.     private $cacheIsPack;
  718.     /**
  719.      * @var bool
  720.      *
  721.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  722.      */
  723.     private $cacheHasAttachments;
  724.     /**
  725.      * @var int
  726.      *
  727.      * @ORM\Column(type="integer", nullable=true)
  728.      */
  729.     private $cacheDefaultAttribute;
  730.     /**
  731.      * @var bool
  732.      *
  733.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  734.      */
  735.     private $advancedStockManagement;
  736.     /**
  737.      * @var string
  738.      *
  739.      * @ORM\Column(type="string", length=20, nullable=true)
  740.      */
  741.     private $etiquetas;
  742.     /**
  743.      * @var bool
  744.      *
  745.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  746.      */
  747.     private $traducir;
  748.     /**
  749.      * @var bool
  750.      *
  751.      * @ORM\Column(type="boolean", nullable=false, options={"default" : 0})
  752.      */
  753.     private $exportar;
  754.     /**
  755.      * @var string
  756.      *
  757.      * @ORM\Column(type="string", length=64, nullable=true)
  758.      */
  759.     private $videoCsv;
  760.     /**
  761.      * @var int
  762.      *
  763.      * @ORM\Column(type="integer", nullable=false)
  764.      */
  765.     private $oldIdProduct;
  766.     /**
  767.      * @var bool
  768.      *
  769.      * @ORM\Column(type="boolean", nullable=true, options={"default" : 0})
  770.      */
  771.     private $courierBox;
  772.     /**
  773.      * @var string
  774.      *
  775.      * @ORM\Column(type="string", length=32, nullable=true)
  776.      */
  777.     private $oldReference;
  778.     /**
  779.      * @var int
  780.      *
  781.      * @ORM\Column(type="integer", nullable=true)
  782.      */
  783.     private $delay;
  784.     /**
  785.      * @var int
  786.      *
  787.      * @ORM\Column(type="integer", nullable=true)
  788.      */
  789.     private $remesa;
  790.     /**
  791.      * @var bool
  792.      *
  793.      * @ORM\Column(type="boolean", options={"default" : 0}, nullable=false)
  794.      */
  795.     private $productoElectronico;
  796.     /**
  797.      * @var int
  798.      *
  799.      * @ORM\Column(type="integer", nullable=true)
  800.      */
  801.     private $oldIdCategoryDefault;
  802.     /**
  803.      * @var bool
  804.      *
  805.      * @ORM\Column(type="boolean", nullable=true)
  806.      */
  807.     private $descatalogado;
  808.     /**
  809.      * @var int
  810.      *
  811.      * @ORM\Column(type="integer", nullable=true)
  812.      */
  813.     private $idProductCompras;
  814.     /**
  815.      * @var bool
  816.      *
  817.      * @ORM\Column(type="boolean", nullable=true)
  818.      */
  819.     private $aleatorio;
  820.     /**
  821.      * @var bool
  822.      *
  823.      * @ORM\Column(type="boolean", nullable=true)
  824.      */
  825.     private $expositor;
  826.     /**
  827.      * @var int
  828.      *
  829.      * @ORM\Column(type="integer", nullable=true)
  830.      */
  831.     private $relatedProduct;
  832.     /**
  833.      * @var ProductType|null
  834.      *
  835.      * @ORM\ManyToOne(targetEntity="ProductType")
  836.      *
  837.      * @ORM\JoinColumn(name="product_type_id", referencedColumnName="id")
  838.      */
  839.     private $productType;
  840.     /**
  841.      * @var Taxonomy|null
  842.      *
  843.      * @ORM\ManyToOne(targetEntity="Taxonomy")
  844.      *
  845.      * @ORM\JoinColumn(name="id_taxonomy_default", referencedColumnName="id", nullable=false)
  846.      */
  847.     private $taxonomyDefault;
  848.     /**
  849.      * @var ProductLangBg|null
  850.      *
  851.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangBg", mappedBy="product")
  852.      */
  853.     private $productLangBg;
  854.     /**
  855.      * @var ProductLangCs|null
  856.      *
  857.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangCs", mappedBy="product")
  858.      */
  859.     private $productLangCs;
  860.     /**
  861.      * @var ProductLangDa|null
  862.      *
  863.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangDa", mappedBy="product")
  864.      */
  865.     private $productLangDa;
  866.     /**
  867.      * @var ProductLangDe|null
  868.      *
  869.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangDe", mappedBy="product")
  870.      */
  871.     private $productLangDe;
  872.     /**
  873.      * @var ProductLangEl|null
  874.      *
  875.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangEl", mappedBy="product")
  876.      */
  877.     private $productLangEl;
  878.     /**
  879.      * @var ProductLangEn|null
  880.      *
  881.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangEn", mappedBy="product")
  882.      */
  883.     private $productLangEn;
  884.     /**
  885.      * @var ProductLangEs|null
  886.      *
  887.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangEs", mappedBy="product")
  888.      */
  889.     private $productLangEs;
  890.     /**
  891.      * @var ProductLangEt|null
  892.      *
  893.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangEt", mappedBy="product")
  894.      */
  895.     private $productLangEt;
  896.     /**
  897.      * @var ProductLangFi|null
  898.      *
  899.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangFi", mappedBy="product")
  900.      */
  901.     private $productLangFi;
  902.     /**
  903.      * @var ProductLangFr|null
  904.      *
  905.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangFr", mappedBy="product")
  906.      */
  907.     private $productLangFr;
  908.     /**
  909.      * @var ProductLangHr|null
  910.      *
  911.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangHr", mappedBy="product")
  912.      */
  913.     private $productLangHr;
  914.     /**
  915.      * @var ProductLangHu|null
  916.      *
  917.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangHu", mappedBy="product")
  918.      */
  919.     private $productLangHu;
  920.     /**
  921.      * @var ProductLangIt|null
  922.      *
  923.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangIt", mappedBy="product")
  924.      */
  925.     private $productLangIt;
  926.     /**
  927.      * @var ProductLangLt|null
  928.      *
  929.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangLt", mappedBy="product")
  930.      */
  931.     private $productLangLt;
  932.     /**
  933.      * @var ProductLangLv|null
  934.      *
  935.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangLv", mappedBy="product")
  936.      */
  937.     private $productLangLv;
  938.     /**
  939.      * @var ProductLangNl|null
  940.      *
  941.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangNl", mappedBy="product")
  942.      */
  943.     private $productLangNl;
  944.     /**
  945.      * @var ProductLangNo|null
  946.      *
  947.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangNo", mappedBy="product")
  948.      */
  949.     private $productLangNo;
  950.     /**
  951.      * @var ProductLangPl|null
  952.      *
  953.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangPl", mappedBy="product")
  954.      */
  955.     private $productLangPl;
  956.     /**
  957.      * @var ProductLangPt|null
  958.      *
  959.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangPt", mappedBy="product")
  960.      */
  961.     private $productLangPt;
  962.     /**
  963.      * @var ProductLangRo|null
  964.      *
  965.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangRo", mappedBy="product")
  966.      */
  967.     private $productLangRo;
  968.     /**
  969.      * @var ProductLangRu|null
  970.      *
  971.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangRu", mappedBy="product")
  972.      */
  973.     private $productLangRu;
  974.     /**
  975.      * @var ProductLangSi|null
  976.      *
  977.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangSi", mappedBy="product")
  978.      */
  979.     private $productLangSi;
  980.     /**
  981.      * @var ProductLangSk|null
  982.      *
  983.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangSk", mappedBy="product")
  984.      */
  985.     private $productLangSk;
  986.     /**
  987.      * @var ProductLangSv|null
  988.      *
  989.      * @ORM\OneToOne(targetEntity="App\Entity\System\ProductLangSv", mappedBy="product")
  990.      */
  991.     private $productLangSv;
  992.     /**
  993.      * @var Category[]|ArrayCollection<int, Category>
  994.      *
  995.      * @ORM\ManyToMany(targetEntity="Category", cascade={"persist"}, indexBy="reference")
  996.      *
  997.      * @ORM\JoinTable(name="ps_category_product",
  998.      *      joinColumns={@ORM\JoinColumn(name="id_product", referencedColumnName="id_product")},
  999.      *      inverseJoinColumns={@ORM\JoinColumn(name="id_category", referencedColumnName="id_category")}
  1000.      * )
  1001.      */
  1002.     private $categories;
  1003.     /**
  1004.      * @var Taxonomy[]|ArrayCollection<int, Taxonomy>
  1005.      *
  1006.      * @ORM\ManyToMany(targetEntity="App\Entity\System\Taxonomy", inversedBy="products", cascade={"persist"}, indexBy="reference")
  1007.      *
  1008.      * @ORM\JoinTable(
  1009.      *   name="taxonomy_product",
  1010.      *   joinColumns={@ORM\JoinColumn(name="id_product", referencedColumnName="id_product", fieldName="id")},
  1011.      *   inverseJoinColumns={@ORM\JoinColumn(name="id", referencedColumnName="id", fieldName="id")}
  1012.      * )
  1013.      */
  1014.     private $taxonomies;
  1015.     /**
  1016.      * @var CoreUrlRewrite[]|ArrayCollection
  1017.      *
  1018.      * @ORM\OneToMany(targetEntity="App\Entity\System\CoreUrlRewrite", mappedBy="product", cascade={"persist"}, indexBy="id_lang")
  1019.      */
  1020.     private $coreUrlRewrites;
  1021.     /**
  1022.      * @var Collection<int, ProductCatalog>|ProductCatalog[]
  1023.      *
  1024.      * @ORM\OneToMany(targetEntity="ProductCatalog", mappedBy="product", orphanRemoval=true, cascade={"persist"})
  1025.      */
  1026.     private $productCatalogs;
  1027.     /**
  1028.      * @var Collection<int, FeatureProduct>|FeatureProduct[]
  1029.      *
  1030.      * @ORM\OneToMany(targetEntity="FeatureProduct", mappedBy="product", orphanRemoval=true, cascade={"persist"})
  1031.      */
  1032.     private $featureProducts;
  1033.     /**
  1034.      * @var int
  1035.      *
  1036.      * @ORM\Column(name="id_taxonomy_default", type="integer", nullable=false)
  1037.      */
  1038.     private $defaultTaxonomyId;
  1039.     /**
  1040.      * @var bool
  1041.      *
  1042.      * @ORM\Column(name="buybox", type="boolean", nullable=false, options={"default" : 0})
  1043.      */
  1044.     private $buyBox;
  1045.     /**
  1046.      * @var FutureStock[]|Collection
  1047.      *
  1048.      * @ORM\OneToMany(targetEntity="FutureStock", mappedBy="product")
  1049.      */
  1050.     private $futureStocks;
  1051.     /**
  1052.      * @ORM\Column(type="string", length=128, nullable=true)
  1053.      */
  1054.     private ?string $partNumber;
  1055.     /**
  1056.      * * @ORM\Column(type="float", nullable=true)
  1057.      */
  1058.     private float $canon;
  1059.     /**
  1060.      * @var FeatureValue[]|ArrayCollection<int, FeatureValue>
  1061.      *
  1062.      * @ORM\ManyToMany(targetEntity="FeatureValue", indexBy="reference")
  1063.      *
  1064.      * @ORM\JoinTable(
  1065.      *     name="ps_feature_value_product",
  1066.      *     joinColumns={
  1067.      *
  1068.      *         @ORM\JoinColumn(name="id_product", referencedColumnName="id_product")
  1069.      *     },
  1070.      *     inverseJoinColumns={
  1071.      *         @ORM\JoinColumn(name="id_feature_value", referencedColumnName="id")
  1072.      *     }
  1073.      * )
  1074.      */
  1075.     private $featureValues;
  1076.     /**
  1077.      * Product constructor.
  1078.      */
  1079.     public function __construct()
  1080.     {
  1081.         $this->productAttributes = new ArrayCollection();
  1082.         $this->productImages = new ArrayCollection();
  1083.         $this->productDates = new ArrayCollection();
  1084.         $this->minimumOrderQuantitys = new ArrayCollection();
  1085.         $this->subscriptions = new ArrayCollection();
  1086.         $this->productEans = new ArrayCollection();
  1087.         $this->featureValues = new ArrayCollection();
  1088.         $this->featureProducts = new ArrayCollection();
  1089.         $this->categories = new ArrayCollection();
  1090.         $this->stocks = new ArrayCollection();
  1091.         $this->idShopDefault 1;
  1092.         $this->onSale false;
  1093.         $this->onlineOnly false;
  1094.         $this->ecotax 0;
  1095.         $this->quantity 0;
  1096.         $this->minimalQuantity 1;
  1097.         $this->price 0;
  1098.         $this->wholesalePrice 0;
  1099.         $this->unitPriceRatio 0;
  1100.         $this->additionalShippingCost 0;
  1101.         $this->weight 0;
  1102.         $this->height 0;
  1103.         $this->depth 0;
  1104.         $this->width 0;
  1105.         $this->outOfStock 2;
  1106.         $this->quantityDiscount 0;
  1107.         $this->customizable false;
  1108.         $this->uploadableFiles false;
  1109.         $this->textFields false;
  1110.         $this->redirectType '404';
  1111.         $this->idProductRedirected 0;
  1112.         $this->availableForOrder true;
  1113.         $this->boxUnits 0;
  1114.         $this->container20p 0;
  1115.         $this->container40p 0;
  1116.         $this->palletUnits 0;
  1117.         $this->minimumQty 0;
  1118.         $this->condition 'new';
  1119.         $this->showPrice true;
  1120.         $this->indexed false;
  1121.         $this->visibility 'both';
  1122.         $this->cacheIsPack false;
  1123.         $this->cacheHasAttachments false;
  1124.         $this->isVirtual false;
  1125.         $this->advancedStockManagement false;
  1126.         $this->traducir false;
  1127.         $this->exportar false;
  1128.         $this->sincronizar false;
  1129.         $this->productoElectronico false;
  1130.         $this->oldWholesalePrice 0;
  1131.         $this->estimateCostPrice 0;
  1132.         $this->intrastat '';
  1133.         $this->logisticClass '';
  1134.         $this->supplierReference '';
  1135.         $this->location '';
  1136.         $this->video '';
  1137.         $this->picking '';
  1138.         $this->locationPalet1 '';
  1139.         $this->locationPalet2 '';
  1140.         $this->etiquetas '';
  1141.         $this->videoCsv '';
  1142.         $this->oldIdProduct 0;
  1143.         $this->courierBox false;
  1144.         $this->oldReference '';
  1145.         $this->delay 0;
  1146.         $this->remesa 0;
  1147.         $this->oldIdCategoryDefault 0;
  1148.         $this->eanVirtual '';
  1149.         $this->descatalogado false;
  1150.         $this->idProductCompras 0;
  1151.         $this->aleatorio false;
  1152.         $this->expositor false;
  1153.         $this->relatedProduct 0;
  1154.         $this->buyBox false;
  1155.         $this->partNumber '';
  1156.         $this->canon 0.0;
  1157.         $this->defaultTaxonomyId 0;
  1158.         $this->cacheDefaultAttribute 0;
  1159.         $this->taxonomies = new ArrayCollection();
  1160.         $this->coreUrlRewrites = new ArrayCollection();
  1161.         $this->productCatalogs = new ArrayCollection();
  1162.         $this->availableDate = new \DateTime();
  1163.         $this->dateNext = new \DateTime();
  1164.         $this->dateNewStock = new \DateTime();
  1165.         $this->dateNew = new \DateTime();
  1166.     }
  1167.     /**
  1168.      * @return int
  1169.      */
  1170.     public function getId(): int
  1171.     {
  1172.         return $this->id;
  1173.     }
  1174.     public function setId(int $id): Product
  1175.     {
  1176.         $this->id $id;
  1177.         return $this;
  1178.     }
  1179.     /**
  1180.      * @return Supplier|null
  1181.      */
  1182.     public function getSupplier(): ?Supplier
  1183.     {
  1184.         return $this->supplier;
  1185.     }
  1186.     public function setSupplier(?Supplier $supplier): Product
  1187.     {
  1188.         $this->supplier $supplier;
  1189.         return $this;
  1190.     }
  1191.     /**
  1192.      * @return bool
  1193.      */
  1194.     public function isOnSale(): bool
  1195.     {
  1196.         return $this->onSale;
  1197.     }
  1198.     /**
  1199.      * @param bool $onSale
  1200.      *
  1201.      * @return Product
  1202.      */
  1203.     public function setOnSale(bool $onSale): Product
  1204.     {
  1205.         $this->onSale $onSale;
  1206.         return $this;
  1207.     }
  1208.     /**
  1209.      * @return bool
  1210.      */
  1211.     public function isOnlineOnly(): bool
  1212.     {
  1213.         return $this->onlineOnly;
  1214.     }
  1215.     /**
  1216.      * @param bool $onlineOnly
  1217.      *
  1218.      * @return Product
  1219.      */
  1220.     public function setOnlineOnly(bool $onlineOnly): Product
  1221.     {
  1222.         $this->onlineOnly $onlineOnly;
  1223.         return $this;
  1224.     }
  1225.     /**
  1226.      * @return string|null
  1227.      */
  1228.     public function getEan(): ?string
  1229.     {
  1230.         return $this->ean;
  1231.     }
  1232.     /**
  1233.      * @param string|null $ean
  1234.      *
  1235.      * @return Product
  1236.      */
  1237.     public function setEan(?string $ean): Product
  1238.     {
  1239.         $this->ean $ean;
  1240.         return $this;
  1241.     }
  1242.     /**
  1243.      * @return string|null
  1244.      */
  1245.     public function getUpc(): ?string
  1246.     {
  1247.         return $this->upc;
  1248.     }
  1249.     /**
  1250.      * @param string|null $upc
  1251.      *
  1252.      * @return Product
  1253.      */
  1254.     public function setUpc(?string $upc): Product
  1255.     {
  1256.         $this->upc $upc;
  1257.         return $this;
  1258.     }
  1259.     /**
  1260.      * @return float|null
  1261.      */
  1262.     public function getEcotax(): ?float
  1263.     {
  1264.         return $this->ecotax;
  1265.     }
  1266.     /**
  1267.      * @param float|null $ecotax
  1268.      *
  1269.      * @return Product
  1270.      */
  1271.     public function setEcotax(?float $ecotax): Product
  1272.     {
  1273.         $this->ecotax $ecotax;
  1274.         return $this;
  1275.     }
  1276.     /**
  1277.      * @return int|null
  1278.      */
  1279.     public function getQuantity(): ?int
  1280.     {
  1281.         return $this->quantity;
  1282.     }
  1283.     /**
  1284.      * @param int|null $quantity
  1285.      *
  1286.      * @return Product
  1287.      */
  1288.     public function setQuantity(?int $quantity): Product
  1289.     {
  1290.         $this->quantity $quantity;
  1291.         return $this;
  1292.     }
  1293.     /**
  1294.      * @return int|null
  1295.      */
  1296.     public function getMinimalQuantity(): ?int
  1297.     {
  1298.         return $this->minimalQuantity;
  1299.     }
  1300.     /**
  1301.      * @param int|null $minimalQuantity
  1302.      *
  1303.      * @return Product
  1304.      */
  1305.     public function setMinimalQuantity(?int $minimalQuantity): Product
  1306.     {
  1307.         $this->minimalQuantity $minimalQuantity;
  1308.         return $this;
  1309.     }
  1310.     /**
  1311.      * @return float
  1312.      */
  1313.     public function getPrice(): float
  1314.     {
  1315.         return $this->price;
  1316.     }
  1317.     /**
  1318.      * @param float $price
  1319.      *
  1320.      * @return Product
  1321.      */
  1322.     public function setPrice(float $price): Product
  1323.     {
  1324.         $this->price $price;
  1325.         return $this;
  1326.     }
  1327.     /**
  1328.      * @return float
  1329.      */
  1330.     public function getWholesalePrice(): float
  1331.     {
  1332.         return $this->wholesalePrice;
  1333.     }
  1334.     /**
  1335.      * @param float $wholesalePrice
  1336.      *
  1337.      * @return Product
  1338.      */
  1339.     public function setWholesalePrice(float $wholesalePrice): Product
  1340.     {
  1341.         $this->wholesalePrice $wholesalePrice;
  1342.         return $this;
  1343.     }
  1344.     /**
  1345.      * @return string|null
  1346.      */
  1347.     public function getUnity(): ?string
  1348.     {
  1349.         return $this->unity;
  1350.     }
  1351.     /**
  1352.      * @param string|null $unity
  1353.      *
  1354.      * @return Product
  1355.      */
  1356.     public function setUnity(?string $unity): Product
  1357.     {
  1358.         $this->unity $unity;
  1359.         return $this;
  1360.     }
  1361.     /**
  1362.      * @return string
  1363.      */
  1364.     public function getSku(): string
  1365.     {
  1366.         return $this->sku;
  1367.     }
  1368.     /**
  1369.      * @param string $sku
  1370.      *
  1371.      * @return Product
  1372.      */
  1373.     public function setSku(string $sku): Product
  1374.     {
  1375.         $this->sku $sku;
  1376.         return $this;
  1377.     }
  1378.     /**
  1379.      * @return bool
  1380.      */
  1381.     public function isActive(): bool
  1382.     {
  1383.         return $this->active;
  1384.     }
  1385.     /**
  1386.      * @param bool $active
  1387.      *
  1388.      * @return Product
  1389.      */
  1390.     public function setActive(bool $active): Product
  1391.     {
  1392.         $this->active $active;
  1393.         return $this;
  1394.     }
  1395.     /**
  1396.      * @return ProductImage[]|ArrayCollection<int, ProductImage>
  1397.      */
  1398.     public function getProductImages()
  1399.     {
  1400.         return $this->productImages;
  1401.     }
  1402.     /**
  1403.      * @param ProductImage[]|ArrayCollection<int, ProductImage> $productImages
  1404.      *
  1405.      * @return Product
  1406.      */
  1407.     public function setProductImages($productImages): Product
  1408.     {
  1409.         $this->productImages $productImages;
  1410.         return $this;
  1411.     }
  1412.     /**
  1413.      * @return ProductAttribute[]|ArrayCollection<int, ProductAttribute>
  1414.      */
  1415.     public function getProductAttributes()
  1416.     {
  1417.         return $this->productAttributes;
  1418.     }
  1419.     /**
  1420.      * @param ProductAttribute[]|ArrayCollection<int, ProductAttribute> $productAttributes
  1421.      *
  1422.      * @return Product
  1423.      */
  1424.     public function setProductAttributes($productAttributes): Product
  1425.     {
  1426.         $this->productAttributes $productAttributes;
  1427.         return $this;
  1428.     }
  1429.     /**
  1430.      * @return ProductDate[]|ArrayCollection<int, ProductDate>
  1431.      */
  1432.     public function getProductDates()
  1433.     {
  1434.         return $this->productDates;
  1435.     }
  1436.     /**
  1437.      * @param ProductDate[]|ArrayCollection<int, ProductDate> $productDates
  1438.      *
  1439.      * @return Product
  1440.      */
  1441.     public function setProductDates($productDates): Product
  1442.     {
  1443.         $this->productDates $productDates;
  1444.         return $this;
  1445.     }
  1446.     /**
  1447.      * @return StockAvailable[]|ArrayCollection<int, StockAvailable>
  1448.      */
  1449.     public function getStocks()
  1450.     {
  1451.         return $this->stocks;
  1452.     }
  1453.     /**
  1454.      * @param StockAvailable[]|ArrayCollection $stocks
  1455.      *
  1456.      * @return Product
  1457.      */
  1458.     public function setStocks($stocks): Product
  1459.     {
  1460.         $this->stocks $stocks;
  1461.         return $this;
  1462.     }
  1463.     /**
  1464.      * @return SpecificPrice[]|ArrayCollection
  1465.      */
  1466.     public function getSpecificPrices()
  1467.     {
  1468.         return $this->specificPrices;
  1469.     }
  1470.     /**
  1471.      * @param SpecificPrice[]|ArrayCollection $specificPrices
  1472.      *
  1473.      * @return Product
  1474.      */
  1475.     public function setSpecificPrices($specificPrices): Product
  1476.     {
  1477.         $this->specificPrices $specificPrices;
  1478.         return $this;
  1479.     }
  1480.     /**
  1481.      * @return float
  1482.      */
  1483.     public function getOldWholesalePrice(): float
  1484.     {
  1485.         return $this->oldWholesalePrice;
  1486.     }
  1487.     /**
  1488.      * @param float $oldWholesalePrice
  1489.      *
  1490.      * @return Product
  1491.      */
  1492.     public function setOldWholesalePrice(float $oldWholesalePrice): Product
  1493.     {
  1494.         $this->oldWholesalePrice $oldWholesalePrice;
  1495.         return $this;
  1496.     }
  1497.     /**
  1498.      * @return int|null
  1499.      */
  1500.     public function getCategoryDefault(): ?int
  1501.     {
  1502.         return $this->categoryDefault;
  1503.     }
  1504.     /**
  1505.      * @param int|null $categoryDefault
  1506.      *
  1507.      * @return Product
  1508.      */
  1509.     public function setCategoryDefault(?int $categoryDefault): Product
  1510.     {
  1511.         $this->categoryDefault $categoryDefault;
  1512.         return $this;
  1513.     }
  1514.     public function getSincronizar(): bool
  1515.     {
  1516.         return $this->sincronizar;
  1517.     }
  1518.     public function setSincronizar(bool $sincronizar): Product
  1519.     {
  1520.         $this->sincronizar $sincronizar;
  1521.         return $this;
  1522.     }
  1523.     /**
  1524.      * @return float
  1525.      */
  1526.     public function getWeight(): float
  1527.     {
  1528.         return $this->weight;
  1529.     }
  1530.     /**
  1531.      * @param float $weight
  1532.      *
  1533.      * @return Product
  1534.      */
  1535.     public function setWeight(float $weight): Product
  1536.     {
  1537.         $this->weight $weight;
  1538.         return $this;
  1539.     }
  1540.     /**
  1541.      * @return string
  1542.      */
  1543.     public function getEanVirtual(): ?string
  1544.     {
  1545.         return $this->eanVirtual;
  1546.     }
  1547.     /**
  1548.      * @param string $eanVirtual
  1549.      *
  1550.      * @return Product
  1551.      */
  1552.     public function setEanVirtual(string $eanVirtual): Product
  1553.     {
  1554.         $this->eanVirtual $eanVirtual;
  1555.         return $this;
  1556.     }
  1557.     /**
  1558.      * @return float
  1559.      */
  1560.     public function getHeight(): float
  1561.     {
  1562.         return $this->height;
  1563.     }
  1564.     /**
  1565.      * @param float $height
  1566.      *
  1567.      * @return Product
  1568.      */
  1569.     public function setHeight(float $height): Product
  1570.     {
  1571.         $this->height $height;
  1572.         return $this;
  1573.     }
  1574.     /**
  1575.      * @return float
  1576.      */
  1577.     public function getWidth(): float
  1578.     {
  1579.         return $this->width;
  1580.     }
  1581.     /**
  1582.      * @param float $width
  1583.      *
  1584.      * @return Product
  1585.      */
  1586.     public function setWidth(float $width): Product
  1587.     {
  1588.         $this->width $width;
  1589.         return $this;
  1590.     }
  1591.     /**
  1592.      * @return float
  1593.      */
  1594.     public function getDepth(): float
  1595.     {
  1596.         return $this->depth;
  1597.     }
  1598.     /**
  1599.      * @param float $depth
  1600.      *
  1601.      * @return Product
  1602.      */
  1603.     public function setDepth(float $depth): Product
  1604.     {
  1605.         $this->depth $depth;
  1606.         return $this;
  1607.     }
  1608.     /**
  1609.      * @return float
  1610.      */
  1611.     public function getEstimateCostPrice(): float
  1612.     {
  1613.         return $this->estimateCostPrice;
  1614.     }
  1615.     /**
  1616.      * @param float $estimateCostPrice
  1617.      *
  1618.      * @return Product
  1619.      */
  1620.     public function setEstimateCostPrice(float $estimateCostPrice): Product
  1621.     {
  1622.         $this->estimateCostPrice $estimateCostPrice;
  1623.         return $this;
  1624.     }
  1625.     /**
  1626.      * @return bool
  1627.      */
  1628.     public function isVirtual(): bool
  1629.     {
  1630.         return $this->isVirtual;
  1631.     }
  1632.     /**
  1633.      * @param bool $isVirtual
  1634.      *
  1635.      * @return Product
  1636.      */
  1637.     public function setIsVirtual(bool $isVirtual): Product
  1638.     {
  1639.         $this->isVirtual $isVirtual;
  1640.         return $this;
  1641.     }
  1642.     /**
  1643.      * @return MinimumOrderQuantity[]|ArrayCollection
  1644.      */
  1645.     public function getMinimumOrderQuantitys()
  1646.     {
  1647.         return $this->minimumOrderQuantitys;
  1648.     }
  1649.     /**
  1650.      * @param MinimumOrderQuantity[] $minimumOrderQuantitys
  1651.      *
  1652.      * @return Product
  1653.      */
  1654.     public function setMinimumOrderQuantitys($minimumOrderQuantitys): Product
  1655.     {
  1656.         $this->minimumOrderQuantitys $minimumOrderQuantitys;
  1657.         return $this;
  1658.     }
  1659.     /**
  1660.      * @return ProductEan[]|ArrayCollection
  1661.      */
  1662.     public function getProductEans()
  1663.     {
  1664.         return $this->productEans;
  1665.     }
  1666.     /**
  1667.      * @param ProductEan[]|ArrayCollection<int, ProductEan> $productEans
  1668.      *
  1669.      * @return Product
  1670.      */
  1671.     public function setProductEans($productEans): Product
  1672.     {
  1673.         $this->productEans $productEans;
  1674.         return $this;
  1675.     }
  1676.     /**
  1677.      * @return mixed
  1678.      */
  1679.     public function getDateAdd()
  1680.     {
  1681.         return $this->dateAdd;
  1682.     }
  1683.     /**
  1684.      * @param mixed $dateAdd
  1685.      *
  1686.      * @return Product
  1687.      */
  1688.     public function setDateAdd($dateAdd): Product
  1689.     {
  1690.         $this->dateAdd $dateAdd;
  1691.         return $this;
  1692.     }
  1693.     /**
  1694.      * @return mixed
  1695.      */
  1696.     public function getDateUpd()
  1697.     {
  1698.         return $this->dateUpd;
  1699.     }
  1700.     /**
  1701.      * @param mixed $dateUpd
  1702.      *
  1703.      * @return Product
  1704.      */
  1705.     public function setDateUpd($dateUpd): Product
  1706.     {
  1707.         $this->dateUpd $dateUpd;
  1708.         return $this;
  1709.     }
  1710.     /**
  1711.      * @return mixed
  1712.      */
  1713.     public function getDateNext()
  1714.     {
  1715.         return $this->dateNext;
  1716.     }
  1717.     /**
  1718.      * @param mixed $dateNext
  1719.      *
  1720.      * @return Product
  1721.      */
  1722.     public function setDateNext($dateNext): Product
  1723.     {
  1724.         $this->dateNext $dateNext;
  1725.         return $this;
  1726.     }
  1727.     /**
  1728.      * @return mixed
  1729.      */
  1730.     public function getDateNewStock()
  1731.     {
  1732.         return $this->dateNewStock;
  1733.     }
  1734.     /**
  1735.      * @param mixed $dateNewStock
  1736.      *
  1737.      * @return Product
  1738.      */
  1739.     public function setDateNewStock($dateNewStock): Product
  1740.     {
  1741.         $this->dateNewStock $dateNewStock;
  1742.         return $this;
  1743.     }
  1744.     /**
  1745.      * @return mixed
  1746.      */
  1747.     public function getAvailableDate()
  1748.     {
  1749.         return $this->availableDate;
  1750.     }
  1751.     /**
  1752.      * @param mixed $availableDate
  1753.      *
  1754.      * @return Product
  1755.      */
  1756.     public function setAvailableDate($availableDate): Product
  1757.     {
  1758.         $this->availableDate $availableDate;
  1759.         return $this;
  1760.     }
  1761.     /**
  1762.      * @return mixed
  1763.      */
  1764.     public function getPalletUnits()
  1765.     {
  1766.         return $this->palletUnits;
  1767.     }
  1768.     /**
  1769.      * @param mixed $palletUnits
  1770.      *
  1771.      * @return Product
  1772.      */
  1773.     public function setPalletUnits($palletUnits): Product
  1774.     {
  1775.         $this->palletUnits $palletUnits;
  1776.         return $this;
  1777.     }
  1778.     /**
  1779.      * @return mixed
  1780.      */
  1781.     public function getBoxUnits()
  1782.     {
  1783.         return $this->boxUnits;
  1784.     }
  1785.     /**
  1786.      * @param mixed $boxUnits
  1787.      *
  1788.      * @return Product
  1789.      */
  1790.     public function setBoxUnits($boxUnits): Product
  1791.     {
  1792.         $this->boxUnits $boxUnits;
  1793.         return $this;
  1794.     }
  1795.     /**
  1796.      * @return mixed
  1797.      */
  1798.     public function getVideo()
  1799.     {
  1800.         return $this->video;
  1801.     }
  1802.     /**
  1803.      * @param mixed $video
  1804.      *
  1805.      * @return Product
  1806.      */
  1807.     public function setVideo($video): Product
  1808.     {
  1809.         $this->video $video;
  1810.         return $this;
  1811.     }
  1812.     /**
  1813.      * @return Brand
  1814.      */
  1815.     public function getManufacturer(): Brand
  1816.     {
  1817.         return $this->manufacturer;
  1818.     }
  1819.     /**
  1820.      * @param Brand $manufacturer
  1821.      *
  1822.      * @return Product
  1823.      */
  1824.     public function setManufacturer(Brand $manufacturer): Product
  1825.     {
  1826.         $this->manufacturer $manufacturer;
  1827.         return $this;
  1828.     }
  1829.     /**
  1830.      * @return Subscription[]|ArrayCollection
  1831.      */
  1832.     public function getSubscriptions(): Subscription
  1833.     {
  1834.         return $this->subscriptions;
  1835.     }
  1836.     /**
  1837.      * @param Subscription[]|ArrayCollection $subscriptions
  1838.      *
  1839.      * @return Product
  1840.      */
  1841.     public function setSubscriptions($subscriptions): Product
  1842.     {
  1843.         $this->subscriptions $subscriptions;
  1844.         return $this;
  1845.     }
  1846.     /**
  1847.      * @return string
  1848.      */
  1849.     public function getLogisticClass(): string
  1850.     {
  1851.         return $this->logisticClass;
  1852.     }
  1853.     /**
  1854.      * @param string $logisticClass
  1855.      *
  1856.      * @return Product
  1857.      */
  1858.     public function setLogisticClass(string $logisticClass): Product
  1859.     {
  1860.         $this->logisticClass $logisticClass;
  1861.         return $this;
  1862.     }
  1863.     /**
  1864.      * @return string
  1865.      */
  1866.     public function getLocation(): string
  1867.     {
  1868.         return $this->location;
  1869.     }
  1870.     /**
  1871.      * @param string $location
  1872.      *
  1873.      * @return Product
  1874.      */
  1875.     public function setLocation(string $location): Product
  1876.     {
  1877.         $this->location $location;
  1878.         return $this;
  1879.     }
  1880.     /**
  1881.      * @return int
  1882.      */
  1883.     public function getOutOfStock(): int
  1884.     {
  1885.         return $this->outOfStock;
  1886.     }
  1887.     /**
  1888.      * @param int $outOfStock
  1889.      *
  1890.      * @return Product
  1891.      */
  1892.     public function setOutOfStock(int $outOfStock): Product
  1893.     {
  1894.         $this->outOfStock $outOfStock;
  1895.         return $this;
  1896.     }
  1897.     /**
  1898.      * @return bool
  1899.      */
  1900.     public function isQuantityDiscount(): bool
  1901.     {
  1902.         return $this->quantityDiscount;
  1903.     }
  1904.     /**
  1905.      * @param bool $quantityDiscount
  1906.      *
  1907.      * @return Product
  1908.      */
  1909.     public function setQuantityDiscount(bool $quantityDiscount): Product
  1910.     {
  1911.         $this->quantityDiscount $quantityDiscount;
  1912.         return $this;
  1913.     }
  1914.     public function getCustomizable(): bool
  1915.     {
  1916.         return $this->customizable;
  1917.     }
  1918.     public function setCustomizable(bool $customizable): Product
  1919.     {
  1920.         $this->customizable $customizable;
  1921.         return $this;
  1922.     }
  1923.     public function getUploadableFiles(): bool
  1924.     {
  1925.         return $this->uploadableFiles;
  1926.     }
  1927.     public function setUploadableFiles(bool $uploadableFiles): Product
  1928.     {
  1929.         $this->uploadableFiles $uploadableFiles;
  1930.         return $this;
  1931.     }
  1932.     public function getTextFields(): bool
  1933.     {
  1934.         return $this->textFields;
  1935.     }
  1936.     public function setTextFields(bool $textFields): Product
  1937.     {
  1938.         $this->textFields $textFields;
  1939.         return $this;
  1940.     }
  1941.     /**
  1942.      * @return string
  1943.      */
  1944.     public function getRedirectType(): string
  1945.     {
  1946.         return $this->redirectType;
  1947.     }
  1948.     /**
  1949.      * @param string $redirectType
  1950.      *
  1951.      * @return Product
  1952.      */
  1953.     public function setRedirectType(string $redirectType): Product
  1954.     {
  1955.         $this->redirectType $redirectType;
  1956.         return $this;
  1957.     }
  1958.     /**
  1959.      * @return int
  1960.      */
  1961.     public function getIdProductRedirected(): int
  1962.     {
  1963.         return $this->idProductRedirected;
  1964.     }
  1965.     /**
  1966.      * @param int $idProductRedirected
  1967.      *
  1968.      * @return Product
  1969.      */
  1970.     public function setIdProductRedirected(int $idProductRedirected): Product
  1971.     {
  1972.         $this->idProductRedirected $idProductRedirected;
  1973.         return $this;
  1974.     }
  1975.     /**
  1976.      * @return bool
  1977.      */
  1978.     public function isAvailableForOrder(): bool
  1979.     {
  1980.         return $this->availableForOrder;
  1981.     }
  1982.     /**
  1983.      * @param bool $availableForOrder
  1984.      *
  1985.      * @return Product
  1986.      */
  1987.     public function setAvailableForOrder(bool $availableForOrder): Product
  1988.     {
  1989.         $this->availableForOrder $availableForOrder;
  1990.         return $this;
  1991.     }
  1992.     /**
  1993.      * @return \DateTime
  1994.      */
  1995.     public function getDateNew(): \DateTime
  1996.     {
  1997.         return $this->dateNew;
  1998.     }
  1999.     /**
  2000.      * @param \DateTime $dateNew
  2001.      *
  2002.      * @return Product
  2003.      */
  2004.     public function setDateNew(\DateTime $dateNew): Product
  2005.     {
  2006.         $this->dateNew $dateNew;
  2007.         return $this;
  2008.     }
  2009.     /**
  2010.      * @return int
  2011.      */
  2012.     public function getContainer20p(): int
  2013.     {
  2014.         return $this->container20p;
  2015.     }
  2016.     /**
  2017.      * @param int $container20p
  2018.      *
  2019.      * @return Product
  2020.      */
  2021.     public function setContainer20p(int $container20p): Product
  2022.     {
  2023.         $this->container20p $container20p;
  2024.         return $this;
  2025.     }
  2026.     /**
  2027.      * @return int
  2028.      */
  2029.     public function getContainer40p(): int
  2030.     {
  2031.         return $this->container40p;
  2032.     }
  2033.     /**
  2034.      * @param int $container40p
  2035.      *
  2036.      * @return Product
  2037.      */
  2038.     public function setContainer40p(int $container40p): Product
  2039.     {
  2040.         $this->container40p $container40p;
  2041.         return $this;
  2042.     }
  2043.     /**
  2044.      * @return string
  2045.      */
  2046.     public function getPicking(): string
  2047.     {
  2048.         return $this->picking;
  2049.     }
  2050.     /**
  2051.      * @param string $picking
  2052.      *
  2053.      * @return Product
  2054.      */
  2055.     public function setPicking(string $picking): Product
  2056.     {
  2057.         $this->picking $picking;
  2058.         return $this;
  2059.     }
  2060.     /**
  2061.      * @return string
  2062.      */
  2063.     public function getLocationPalet1(): string
  2064.     {
  2065.         return $this->locationPalet1;
  2066.     }
  2067.     /**
  2068.      * @param string $locationPalet1
  2069.      *
  2070.      * @return Product
  2071.      */
  2072.     public function setLocationPalet1(string $locationPalet1): Product
  2073.     {
  2074.         $this->locationPalet1 $locationPalet1;
  2075.         return $this;
  2076.     }
  2077.     /**
  2078.      * @return string
  2079.      */
  2080.     public function getLocationPalet2(): string
  2081.     {
  2082.         return $this->locationPalet2;
  2083.     }
  2084.     /**
  2085.      * @param string $locationPalet2
  2086.      *
  2087.      * @return Product
  2088.      */
  2089.     public function setLocationPalet2(string $locationPalet2): Product
  2090.     {
  2091.         $this->locationPalet2 $locationPalet2;
  2092.         return $this;
  2093.     }
  2094.     /**
  2095.      * @return int
  2096.      */
  2097.     public function getMinimumQty(): int
  2098.     {
  2099.         return $this->minimumQty;
  2100.     }
  2101.     /**
  2102.      * @param int $minimumQty
  2103.      *
  2104.      * @return Product
  2105.      */
  2106.     public function setMinimumQty(int $minimumQty): Product
  2107.     {
  2108.         $this->minimumQty $minimumQty;
  2109.         return $this;
  2110.     }
  2111.     /**
  2112.      * @return string
  2113.      */
  2114.     public function getCondition(): string
  2115.     {
  2116.         return $this->condition;
  2117.     }
  2118.     /**
  2119.      * @param string $condition
  2120.      *
  2121.      * @return Product
  2122.      */
  2123.     public function setCondition(string $condition): Product
  2124.     {
  2125.         $this->condition $condition;
  2126.         return $this;
  2127.     }
  2128.     /**
  2129.      * @return bool
  2130.      */
  2131.     public function isShowPrice(): bool
  2132.     {
  2133.         return $this->showPrice;
  2134.     }
  2135.     /**
  2136.      * @param bool $showPrice
  2137.      *
  2138.      * @return Product
  2139.      */
  2140.     public function setShowPrice(bool $showPrice): Product
  2141.     {
  2142.         $this->showPrice $showPrice;
  2143.         return $this;
  2144.     }
  2145.     /**
  2146.      * @return bool
  2147.      */
  2148.     public function isIndexed(): bool
  2149.     {
  2150.         return $this->indexed;
  2151.     }
  2152.     /**
  2153.      * @param bool $indexed
  2154.      *
  2155.      * @return Product
  2156.      */
  2157.     public function setIndexed(bool $indexed): Product
  2158.     {
  2159.         $this->indexed $indexed;
  2160.         return $this;
  2161.     }
  2162.     /**
  2163.      * @return string
  2164.      */
  2165.     public function getVisibility(): string
  2166.     {
  2167.         return $this->visibility;
  2168.     }
  2169.     /**
  2170.      * @param string $visibility
  2171.      *
  2172.      * @return Product
  2173.      */
  2174.     public function setVisibility(string $visibility): Product
  2175.     {
  2176.         $this->visibility $visibility;
  2177.         return $this;
  2178.     }
  2179.     /**
  2180.      * @return bool
  2181.      */
  2182.     public function isCacheIsPack(): bool
  2183.     {
  2184.         return $this->cacheIsPack;
  2185.     }
  2186.     /**
  2187.      * @param bool $cacheIsPack
  2188.      *
  2189.      * @return Product
  2190.      */
  2191.     public function setCacheIsPack(bool $cacheIsPack): Product
  2192.     {
  2193.         $this->cacheIsPack $cacheIsPack;
  2194.         return $this;
  2195.     }
  2196.     /**
  2197.      * @return bool
  2198.      */
  2199.     public function isCacheHasAttachments(): bool
  2200.     {
  2201.         return $this->cacheHasAttachments;
  2202.     }
  2203.     /**
  2204.      * @param bool $cacheHasAttachments
  2205.      *
  2206.      * @return Product
  2207.      */
  2208.     public function setCacheHasAttachments(bool $cacheHasAttachments): Product
  2209.     {
  2210.         $this->cacheHasAttachments $cacheHasAttachments;
  2211.         return $this;
  2212.     }
  2213.     /**
  2214.      * @return int
  2215.      */
  2216.     public function getCacheDefaultAttribute(): int
  2217.     {
  2218.         return $this->cacheDefaultAttribute;
  2219.     }
  2220.     /**
  2221.      * @param int $cacheDefaultAttribute
  2222.      *
  2223.      * @return Product
  2224.      */
  2225.     public function setCacheDefaultAttribute(int $cacheDefaultAttribute): Product
  2226.     {
  2227.         $this->cacheDefaultAttribute $cacheDefaultAttribute;
  2228.         return $this;
  2229.     }
  2230.     /**
  2231.      * @return bool
  2232.      */
  2233.     public function isAdvancedStockManagement(): bool
  2234.     {
  2235.         return $this->advancedStockManagement;
  2236.     }
  2237.     /**
  2238.      * @param bool $advancedStockManagement
  2239.      *
  2240.      * @return Product
  2241.      */
  2242.     public function setAdvancedStockManagement(bool $advancedStockManagement): Product
  2243.     {
  2244.         $this->advancedStockManagement $advancedStockManagement;
  2245.         return $this;
  2246.     }
  2247.     /**
  2248.      * @return string
  2249.      */
  2250.     public function getEtiquetas(): string
  2251.     {
  2252.         return $this->etiquetas;
  2253.     }
  2254.     /**
  2255.      * @param string $etiquetas
  2256.      *
  2257.      * @return Product
  2258.      */
  2259.     public function setEtiquetas(string $etiquetas): Product
  2260.     {
  2261.         $this->etiquetas $etiquetas;
  2262.         return $this;
  2263.     }
  2264.     /**
  2265.      * @return bool
  2266.      */
  2267.     public function isTraducir(): bool
  2268.     {
  2269.         return $this->traducir;
  2270.     }
  2271.     /**
  2272.      * @param bool $traducir
  2273.      *
  2274.      * @return Product
  2275.      */
  2276.     public function setTraducir(bool $traducir): Product
  2277.     {
  2278.         $this->traducir $traducir;
  2279.         return $this;
  2280.     }
  2281.     /**
  2282.      * @return bool
  2283.      */
  2284.     public function isExportar(): bool
  2285.     {
  2286.         return $this->exportar;
  2287.     }
  2288.     /**
  2289.      * @param bool $exportar
  2290.      *
  2291.      * @return Product
  2292.      */
  2293.     public function setExportar(bool $exportar): Product
  2294.     {
  2295.         $this->exportar $exportar;
  2296.         return $this;
  2297.     }
  2298.     /**
  2299.      * @return string
  2300.      */
  2301.     public function getVideoCsv(): string
  2302.     {
  2303.         return $this->videoCsv;
  2304.     }
  2305.     /**
  2306.      * @param string $videoCsv
  2307.      *
  2308.      * @return Product
  2309.      */
  2310.     public function setVideoCsv(string $videoCsv): Product
  2311.     {
  2312.         $this->videoCsv $videoCsv;
  2313.         return $this;
  2314.     }
  2315.     /**
  2316.      * @return int
  2317.      */
  2318.     public function getOldIdProduct(): int
  2319.     {
  2320.         return $this->oldIdProduct;
  2321.     }
  2322.     /**
  2323.      * @param int $oldIdProduct
  2324.      *
  2325.      * @return Product
  2326.      */
  2327.     public function setOldIdProduct(int $oldIdProduct): Product
  2328.     {
  2329.         $this->oldIdProduct $oldIdProduct;
  2330.         return $this;
  2331.     }
  2332.     /**
  2333.      * @return bool
  2334.      */
  2335.     public function isCourierBox(): bool
  2336.     {
  2337.         return $this->courierBox;
  2338.     }
  2339.     /**
  2340.      * @param bool $courierBox
  2341.      *
  2342.      * @return Product
  2343.      */
  2344.     public function setCourierBox(bool $courierBox): Product
  2345.     {
  2346.         $this->courierBox $courierBox;
  2347.         return $this;
  2348.     }
  2349.     /**
  2350.      * @return string
  2351.      */
  2352.     public function getOldReference(): string
  2353.     {
  2354.         return $this->oldReference;
  2355.     }
  2356.     /**
  2357.      * @param string $oldReference
  2358.      *
  2359.      * @return Product
  2360.      */
  2361.     public function setOldReference(string $oldReference): Product
  2362.     {
  2363.         $this->oldReference $oldReference;
  2364.         return $this;
  2365.     }
  2366.     /**
  2367.      * @return int
  2368.      */
  2369.     public function getDelay(): int
  2370.     {
  2371.         return $this->delay;
  2372.     }
  2373.     /**
  2374.      * @param int $delay
  2375.      *
  2376.      * @return Product
  2377.      */
  2378.     public function setDelay(int $delay): Product
  2379.     {
  2380.         $this->delay $delay;
  2381.         return $this;
  2382.     }
  2383.     /**
  2384.      * @return int
  2385.      */
  2386.     public function getRemesa(): int
  2387.     {
  2388.         return $this->remesa;
  2389.     }
  2390.     /**
  2391.      * @param int $remesa
  2392.      *
  2393.      * @return Product
  2394.      */
  2395.     public function setRemesa(int $remesa): Product
  2396.     {
  2397.         $this->remesa $remesa;
  2398.         return $this;
  2399.     }
  2400.     /**
  2401.      * @return bool
  2402.      */
  2403.     public function isProductoElectronico(): bool
  2404.     {
  2405.         return $this->productoElectronico;
  2406.     }
  2407.     /**
  2408.      * @param bool $productoElectronico
  2409.      *
  2410.      * @return Product
  2411.      */
  2412.     public function setProductoElectronico(bool $productoElectronico): Product
  2413.     {
  2414.         $this->productoElectronico $productoElectronico;
  2415.         return $this;
  2416.     }
  2417.     /**
  2418.      * @return int
  2419.      */
  2420.     public function getOldIdCategoryDefault(): int
  2421.     {
  2422.         return $this->oldIdCategoryDefault;
  2423.     }
  2424.     /**
  2425.      * @param int $oldIdCategoryDefault
  2426.      *
  2427.      * @return Product
  2428.      */
  2429.     public function setOldIdCategoryDefault(int $oldIdCategoryDefault): Product
  2430.     {
  2431.         $this->oldIdCategoryDefault $oldIdCategoryDefault;
  2432.         return $this;
  2433.     }
  2434.     /**
  2435.      * @return bool
  2436.      */
  2437.     public function isDescatalogado(): bool
  2438.     {
  2439.         return $this->descatalogado;
  2440.     }
  2441.     /**
  2442.      * @param bool $descatalogado
  2443.      *
  2444.      * @return Product
  2445.      */
  2446.     public function setDescatalogado(bool $descatalogado): Product
  2447.     {
  2448.         $this->descatalogado $descatalogado;
  2449.         return $this;
  2450.     }
  2451.     /**
  2452.      * @return int
  2453.      */
  2454.     public function getIdProductCompras(): int
  2455.     {
  2456.         return $this->idProductCompras;
  2457.     }
  2458.     /**
  2459.      * @param int $idProductCompras
  2460.      *
  2461.      * @return Product
  2462.      */
  2463.     public function setIdProductCompras(int $idProductCompras): Product
  2464.     {
  2465.         $this->idProductCompras $idProductCompras;
  2466.         return $this;
  2467.     }
  2468.     /**
  2469.      * @return bool
  2470.      */
  2471.     public function isAleatorio(): bool
  2472.     {
  2473.         return $this->aleatorio;
  2474.     }
  2475.     /**
  2476.      * @param bool $aleatorio
  2477.      *
  2478.      * @return Product
  2479.      */
  2480.     public function setAleatorio(bool $aleatorio): Product
  2481.     {
  2482.         $this->aleatorio $aleatorio;
  2483.         return $this;
  2484.     }
  2485.     /**
  2486.      * @return bool
  2487.      */
  2488.     public function isExpositor(): bool
  2489.     {
  2490.         return $this->expositor;
  2491.     }
  2492.     /**
  2493.      * @param bool $expositor
  2494.      *
  2495.      * @return Product
  2496.      */
  2497.     public function setExpositor(bool $expositor): Product
  2498.     {
  2499.         $this->expositor $expositor;
  2500.         return $this;
  2501.     }
  2502.     /**
  2503.      * @return int
  2504.      */
  2505.     public function getRelatedProduct(): int
  2506.     {
  2507.         return $this->relatedProduct;
  2508.     }
  2509.     /**
  2510.      * @param int $relatedProduct
  2511.      *
  2512.      * @return Product
  2513.      */
  2514.     public function setRelatedProduct(int $relatedProduct): Product
  2515.     {
  2516.         $this->relatedProduct $relatedProduct;
  2517.         return $this;
  2518.     }
  2519.     /**
  2520.      * @return ProductType|null
  2521.      */
  2522.     public function getProductType(): ?ProductType
  2523.     {
  2524.         return $this->productType;
  2525.     }
  2526.     /**
  2527.      * @param ProductType|null $productType
  2528.      *
  2529.      * @return Product
  2530.      */
  2531.     public function setProductType(?ProductType $productType): self
  2532.     {
  2533.         $this->productType $productType;
  2534.         return $this;
  2535.     }
  2536.     /**
  2537.      * @return ProductLangInterface[]
  2538.      */
  2539.     public function getLanguages(): array
  2540.     {
  2541.         return [
  2542.             => $this->productLangEn,
  2543.             => $this->productLangEs,
  2544.             => $this->productLangFr,
  2545.             => $this->productLangDe,
  2546.             => $this->productLangPt,
  2547.             => $this->productLangEl,
  2548.             => $this->productLangHr,
  2549.             10 => $this->productLangIt,
  2550.             11 => $this->productLangEt,
  2551.             12 => $this->productLangDa,
  2552.             13 => $this->productLangFi,
  2553.             14 => $this->productLangRo,
  2554.             15 => $this->productLangBg,
  2555.             16 => $this->productLangHu,
  2556.             18 => $this->productLangSk,
  2557.             19 => $this->productLangSi,
  2558.             20 => $this->productLangLt,
  2559.             21 => $this->productLangLv,
  2560.             22 => $this->productLangPl,
  2561.             24 => $this->productLangNl,
  2562.             25 => $this->productLangRu,
  2563.             26 => $this->productLangNo,
  2564.             27 => $this->productLangSv,
  2565.             28 => $this->productLangCs,
  2566.         ];
  2567.     }
  2568.     /**
  2569.      * @return Taxonomy[]|ArrayCollection<int, Taxonomy>
  2570.      */
  2571.     public function getTaxonomies()
  2572.     {
  2573.         return $this->taxonomies;
  2574.     }
  2575.     /**
  2576.      * @param Taxonomy[]|ArrayCollection<int, Taxonomy> $taxonomies
  2577.      *
  2578.      * @return Product
  2579.      */
  2580.     public function setTaxonomies($taxonomies): Product
  2581.     {
  2582.         $this->taxonomies $taxonomies;
  2583.         return $this;
  2584.     }
  2585.     /**
  2586.      * @return Category[]|ArrayCollection<int, Category>
  2587.      */
  2588.     public function getCategories()
  2589.     {
  2590.         return $this->categories;
  2591.     }
  2592.     /**
  2593.      * @param Category[]|ArrayCollection<int, Category> $categories
  2594.      *
  2595.      * @return Product
  2596.      */
  2597.     public function setCategories($categories)
  2598.     {
  2599.         $this->categories $categories;
  2600.         return $this;
  2601.     }
  2602.     /**
  2603.      * @return CoreUrlRewrite[]|ArrayCollection<int, CoreUrlRewrite>
  2604.      */
  2605.     public function getCoreUrlRewrites()
  2606.     {
  2607.         return $this->coreUrlRewrites;
  2608.     }
  2609.     /**
  2610.      * @param CoreUrlRewrite[]|ArrayCollection<int, CoreUrlRewrite> $coreUrlRewrites
  2611.      */
  2612.     public function setCoreUrlRewrites($coreUrlRewrites): Product
  2613.     {
  2614.         $this->coreUrlRewrites $coreUrlRewrites;
  2615.         return $this;
  2616.     }
  2617.     /**
  2618.      * @return Collection<int, ProductCatalog>|ProductCatalog[]
  2619.      */
  2620.     public function getProductCatalogs(): Collection
  2621.     {
  2622.         return $this->productCatalogs;
  2623.     }
  2624.     /**
  2625.      * @param Collection<int, ProductCatalog>|ProductCatalog[] $productCatalogs
  2626.      */
  2627.     public function setProductCatalogs(Collection $productCatalogs): Product
  2628.     {
  2629.         $this->productCatalogs $productCatalogs;
  2630.         return $this;
  2631.     }
  2632.     /**
  2633.      * @return Collection<int, FeatureProduct>|FeatureProduct[]
  2634.      */
  2635.     public function getFeatureProducts()
  2636.     {
  2637.         return $this->featureProducts;
  2638.     }
  2639.     /**
  2640.      * @param Collection<int, FeatureProduct>|FeatureProduct[] $featureProducts
  2641.      *
  2642.      * @return Product
  2643.      */
  2644.     public function setFeatureProducts($featureProducts): Product
  2645.     {
  2646.         $this->featureProducts $featureProducts;
  2647.         return $this;
  2648.     }
  2649.     public function getProductLangEn(): ?ProductLangEn
  2650.     {
  2651.         return $this->productLangEn;
  2652.     }
  2653.     public function getProductLangEs(): ?ProductLangEs
  2654.     {
  2655.         return $this->productLangEs;
  2656.     }
  2657.     /**
  2658.      * @param ProductLangEn $productLangEn
  2659.      */
  2660.     public function setProductLangEn(ProductLangEn $productLangEn): void
  2661.     {
  2662.         $this->productLangEn $productLangEn;
  2663.     }
  2664.     /**
  2665.      * @param ProductLangEs $productLangEs
  2666.      */
  2667.     public function setProductLangEs(ProductLangEs $productLangEs): void
  2668.     {
  2669.         $this->productLangEs $productLangEs;
  2670.     }
  2671.     /**
  2672.      * @return Taxonomy
  2673.      */
  2674.     public function getTaxonomyDefault(): Taxonomy
  2675.     {
  2676.         return $this->taxonomyDefault;
  2677.     }
  2678.     /**
  2679.      * @param Taxonomy|null $taxonomyDefault
  2680.      *
  2681.      * @return Product
  2682.      */
  2683.     public function setTaxonomyDefault(?Taxonomy $taxonomyDefault): self
  2684.     {
  2685.         $this->taxonomyDefault $taxonomyDefault;
  2686.         return $this;
  2687.     }
  2688.     /**
  2689.      * @return string
  2690.      */
  2691.     public function getIntrastat(): string
  2692.     {
  2693.         return $this->intrastat;
  2694.     }
  2695.     public function setIntrastat(string $intrastat): self
  2696.     {
  2697.         $this->intrastat $intrastat;
  2698.         return $this;
  2699.     }
  2700.     /**
  2701.      * @return FutureStock[]|Collection
  2702.      */
  2703.     public function getFutureStocks()
  2704.     {
  2705.         return $this->futureStocks;
  2706.     }
  2707.     /**
  2708.      * @param string $isoCode
  2709.      *
  2710.      * @return ProductLangInterface|null
  2711.      */
  2712.     public function getProductLangByIsoCode(string $isoCode): ?ProductLangInterface
  2713.     {
  2714.         if (!\array_key_exists($isoCodeLanguage::LANGUAGE_IDS_INDEXED_BY_ISO_CODE)) {
  2715.             return null;
  2716.         }
  2717.         $getProductLangMethod 'getProductLang'.ucfirst($isoCode);
  2718.         return $this->$getProductLangMethod();
  2719.     }
  2720.     public function getProductLangBg(): ?ProductLangBg
  2721.     {
  2722.         return $this->productLangBg;
  2723.     }
  2724.     public function getProductLangCs(): ?ProductLangCs
  2725.     {
  2726.         return $this->productLangCs;
  2727.     }
  2728.     public function getProductLangDa(): ?ProductLangDa
  2729.     {
  2730.         return $this->productLangDa;
  2731.     }
  2732.     public function getProductLangDe(): ?ProductLangDe
  2733.     {
  2734.         return $this->productLangDe;
  2735.     }
  2736.     public function getProductLangEl(): ?ProductLangEl
  2737.     {
  2738.         return $this->productLangEl;
  2739.     }
  2740.     public function getProductLangEt(): ?ProductLangEt
  2741.     {
  2742.         return $this->productLangEt;
  2743.     }
  2744.     public function getProductLangFi(): ?ProductLangFi
  2745.     {
  2746.         return $this->productLangFi;
  2747.     }
  2748.     public function getProductLangFr(): ?ProductLangFr
  2749.     {
  2750.         return $this->productLangFr;
  2751.     }
  2752.     public function getProductLangHr(): ?ProductLangHr
  2753.     {
  2754.         return $this->productLangHr;
  2755.     }
  2756.     public function getProductLangHu(): ?ProductLangHu
  2757.     {
  2758.         return $this->productLangHu;
  2759.     }
  2760.     public function getProductLangIt(): ?ProductLangIt
  2761.     {
  2762.         return $this->productLangIt;
  2763.     }
  2764.     public function getProductLangLt(): ?ProductLangLt
  2765.     {
  2766.         return $this->productLangLt;
  2767.     }
  2768.     public function getProductLangLv(): ?ProductLangLv
  2769.     {
  2770.         return $this->productLangLv;
  2771.     }
  2772.     public function getProductLangNl(): ?ProductLangNl
  2773.     {
  2774.         return $this->productLangNl;
  2775.     }
  2776.     public function getProductLangNo(): ?ProductLangNo
  2777.     {
  2778.         return $this->productLangNo;
  2779.     }
  2780.     public function getProductLangPl(): ?ProductLangPl
  2781.     {
  2782.         return $this->productLangPl;
  2783.     }
  2784.     public function getProductLangPt(): ?ProductLangPt
  2785.     {
  2786.         return $this->productLangPt;
  2787.     }
  2788.     public function getProductLangRo(): ?ProductLangRo
  2789.     {
  2790.         return $this->productLangRo;
  2791.     }
  2792.     public function getProductLangRu(): ?ProductLangRu
  2793.     {
  2794.         return $this->productLangRu;
  2795.     }
  2796.     public function getProductLangSi(): ?ProductLangSi
  2797.     {
  2798.         return $this->productLangSi;
  2799.     }
  2800.     public function getProductLangSk(): ?ProductLangSk
  2801.     {
  2802.         return $this->productLangSk;
  2803.     }
  2804.     public function getProductLangSv(): ?ProductLangSv
  2805.     {
  2806.         return $this->productLangSv;
  2807.     }
  2808.     public function isBuyBox(): bool
  2809.     {
  2810.         return $this->buyBox;
  2811.     }
  2812.     public function setBuyBox(bool $buyBox): void
  2813.     {
  2814.         $this->buyBox $buyBox;
  2815.     }
  2816.     public function getTaxRuleGroup(): TaxRuleGroup
  2817.     {
  2818.         return $this->taxRuleGroup;
  2819.     }
  2820.     public function setTaxRuleGroup(TaxRuleGroup $taxRuleGroup): Product
  2821.     {
  2822.         $this->taxRuleGroup $taxRuleGroup;
  2823.         return $this;
  2824.     }
  2825.     public function getPartNumber(): ?string
  2826.     {
  2827.         return $this->partNumber;
  2828.     }
  2829.     public function setPartNumber(?string $partNumber): Product
  2830.     {
  2831.         $this->partNumber $partNumber;
  2832.         return $this;
  2833.     }
  2834.     public function getCanon(): float
  2835.     {
  2836.         return $this->canon;
  2837.     }
  2838.     public function setCanon(float $canon): Product
  2839.     {
  2840.         $this->canon $canon;
  2841.         return $this;
  2842.     }
  2843.     /**
  2844.      * @return FeatureValue[]|ArrayCollection<int, FeatureValue>
  2845.      */
  2846.     public function getFeatureValues()
  2847.     {
  2848.         return $this->featureValues;
  2849.     }
  2850.     /**
  2851.      * @param FeatureValue[]|ArrayCollection<int, FeatureValue> $featureValues
  2852.      */
  2853.     public function setFeatureValues($featureValues): Product
  2854.     {
  2855.         $this->featureValues $featureValues;
  2856.         return $this;
  2857.     }
  2858.     public function setSupplierReference(string $supplierReference): Product
  2859.     {
  2860.         $this->supplierReference $supplierReference;
  2861.         return $this;
  2862.     }
  2863.     /**
  2864.      * @param FeatureValue[] $toSaveArray
  2865.      */
  2866.     public function addFeatureValues(array $toSaveArray): void
  2867.     {
  2868.         foreach ($toSaveArray as $featureValue) {
  2869.             if (!$this->featureValues->contains($featureValue)) {
  2870.                 $this->featureValues->add($featureValue);
  2871.             }
  2872.         }
  2873.     }
  2874.     /**
  2875.      * @param FeatureValue[] $toDeleteArray
  2876.      */
  2877.     public function deleteFeatureValues(array $toDeleteArray): void
  2878.     {
  2879.         foreach ($toDeleteArray as $featureValue) {
  2880.             if ($this->featureValues->contains($featureValue)) {
  2881.                 $this->featureValues->removeElement($featureValue);
  2882.             }
  2883.         }
  2884.     }
  2885.     /**
  2886.      * @return ProductStock[]|ArrayCollection<int, ProductStock>
  2887.      */
  2888.     public function getProductStocks()
  2889.     {
  2890.         return $this->productStocks;
  2891.     }
  2892.     /**
  2893.      * @param ProductStock[]|ArrayCollection<int, ProductStock> $productStocks
  2894.      *
  2895.      * @return Product
  2896.      */
  2897.     public function setProductStocks($productStocks)
  2898.     {
  2899.         $this->productStocks $productStocks;
  2900.         return $this;
  2901.     }
  2902. }