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