src/Entity/System/Product.php line 16

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