protected function createRandomProduct(string $name, ObjectManager $manager) { $faker = $this->getFakerGenerator(); $shortDescription = $faker->text(100); $description = $faker->text(1000); $sku = $faker->creditCardNumber(); $shop = $this->getReference('shop'); $currency = $this->randomizeSamples('currency', LoadCurrencyData::$samples); $producer = $this->randomizeSamples('producer', LoadProducerData::$samples); $availability = $this->randomizeSamples('availability', LoadAvailabilityData::$samples); $categories = $this->randomizeSamples('category', $s = LoadCategoryData::$samples, rand(2, 4)); $statuses = $this->randomizeSamples('product_status', LoadProductStatusData::$samples, rand(2, 3)); $tax = $this->randomizeSamples('tax', LoadTaxData::$samples); $unit = $this->randomizeSamples('unit', LoadUnitData::$samples); $dimension = new Dimension(); $dimension->setDepth(rand(10, 100)); $dimension->setHeight(rand(10, 100)); $dimension->setWidth(rand(10, 100)); $buyPrice = new Price(); $buyPrice->setGrossAmount(rand(50, 80)); $buyPrice->setCurrency($currency->getCode()); $sellPrice = new DiscountablePrice(); $sellPrice->setGrossAmount($price = rand(100, 200)); $sellPrice->setCurrency($currency->getCode()); foreach ($statuses as $status) { if ($status->translate()->getName() === 'Promotions') { $sellPrice->setDiscountedGrossAmount($price * (rand(80, 95) / 100)); $sellPrice->setValidFrom(new \DateTime()); $sellPrice->setValidTo((new \DateTime())->modify('+30 days')); } } $product = new Product(); $product->setSKU($sku); $product->setHierarchy(rand(0, 10)); $product->setEnabled(true); $product->setAvailability($availability); $product->setBuyPrice($buyPrice); $product->setBuyPriceTax($tax); $product->setSellPrice($sellPrice); $product->setSellPriceTax($tax); $product->setCategories($categories); $product->addShop($shop); $product->setStatuses($statuses); $product->translate($this->getDefaultLocale())->setName($name); $product->translate($this->getDefaultLocale())->setSlug(Sluggable::makeSlug($name)); $product->translate($this->getDefaultLocale())->setShortDescription($shortDescription); $product->translate($this->getDefaultLocale())->setDescription($description); $product->mergeNewTranslations(); $product->setProductPhotos($this->getPhotos($product, $manager)); $product->setProducer($producer); $product->setStock(rand(0, 1000)); $product->setUnit($unit); $product->setDimension($dimension); $product->setTrackStock(true); $product->setPackageSize(1); $product->setWeight(rand(0, 5)); $manager->persist($product); }
public function create() : DiscountablePriceInterface { $price = new DiscountablePrice(); $price->setGrossAmount(0); $price->setNetAmount(0); $price->setTaxAmount(0); $price->setTaxRate(0); $price->setCurrency(''); return $price; }
/** * {@inheritdoc} */ public function getShippingCostCurrency() { return $this->sellPrice->getCurrency(); }