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