config = $config; $this->productAttributeRepository = $productAttributeRepository; $this->searchCriteriaBuilder = $searchCriteriaBuilder; } /** * Change scope for all price attributes according to * 'Catalog Price Scope' configuration parameter value * * @param EventObserver $observer * @return void * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function execute(EventObserver $observer) { $this->searchCriteriaBuilder->addFilter('frontend_input', 'price'); $criteria = $this->searchCriteriaBuilder->create(); $scope = $this->config->getValue(Store::XML_PATH_PRICE_SCOPE); $scope = ($scope == Store::PRICE_SCOPE_WEBSITE) ? ProductAttributeInterface::SCOPE_WEBSITE_TEXT : ProductAttributeInterface::SCOPE_GLOBAL_TEXT; $priceAttributes = $this->productAttributeRepository->getList($criteria)->getItems(); /** @var ProductAttributeInterface $priceAttribute */ foreach ($priceAttributes as $priceAttribute) { $priceAttribute->setScope($scope); $this->productAttributeRepository->save($priceAttribute); } } }