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