/** * {@inheritdoc} */ public function run() { $this->logger->log('Installing sales rules:'); $file = 'SalesRule/sales_rules.csv'; $fileName = $this->fixtureHelper->getPath($file); $csvReader = $this->csvReaderFactory->create(['fileName' => $fileName, 'mode' => 'r']); $attribute = $this->eavConfig->getAttribute('catalog_product', 'sku'); if ($attribute->getIsUsedForPromoRules() == 0) { $attribute->setIsUsedForPromoRules('1')->save(); } foreach ($csvReader as $row) { /** @var \Magento\SalesRule\Model\Resource\Rule\Collection $ruleCollection */ $ruleCollection = $this->ruleCollectionFactory->create(); $ruleCollection->addFilter('name', $row['name']); if ($ruleCollection->count() > 0) { continue; } $row['customer_group_ids'] = $this->catalogRule->getGroupIds(); $row['website_ids'] = $this->catalogRule->getWebsiteIds(); $row['conditions_serialized'] = $this->catalogRule->convertSerializedData($row['conditions_serialized']); $row['actions_serialized'] = $this->catalogRule->convertSerializedData($row['actions_serialized']); /** @var \Magento\SalesRule\Model\Rule $rule */ $rule = $this->ruleFactory->create(); $rule->loadPost($row); $rule->save(); $this->logger->logInline('.'); } }
/** * {@inheritdoc} */ public function run() { $this->logger->log('Installing sales rules:'); $file = 'SalesRule/sales_rules.csv'; $fileName = $this->fixtureHelper->getPath($file); $csvReader = $this->csvReaderFactory->create(['fileName' => $fileName, 'mode' => 'r']); $attribute = $this->eavConfig->getAttribute('catalog_product', 'sku'); if ($attribute->getIsUsedForPromoRules() == 0) { $attribute->setIsUsedForPromoRules('1')->save(); } foreach ($csvReader as $row) { $row['customer_group_ids'] = $this->catalogRule->getGroupIds(); $row['website_ids'] = $this->catalogRule->getWebsiteIds(); $row['conditions_serialized'] = $this->catalogRule->convertSerializedData($row['conditions_serialized']); $row['actions_serialized'] = $this->catalogRule->convertSerializedData($row['actions_serialized']); $rule = $this->ruleFactory->create(); $rule->loadPost($row); $rule->save(); $this->logger->logInline('.'); } }