/** * Assign WEEE taxes to product data * * @param \Magento\Catalog\Model\Product $object * @return $this * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ public function afterLoad($object) { $data = $this->_attributeTax->loadProductData($object, $this->getAttribute()); foreach ($data as $i => $row) { if ($data[$i]['website_id'] == 0) { $rate = $this->_storeManager->getStore()->getBaseCurrency()->getRate($this->_directoryHelper->getBaseCurrencyCode()); if ($rate) { $data[$i]['website_value'] = $data[$i]['value'] / $rate; } else { unset($data[$i]); } } else { $data[$i]['website_value'] = $data[$i]['value']; } } $object->setData($this->getAttribute()->getName(), $data); return $this; }
/** * Retrieve allowed currencies according to config * * @return array */ public function getConfigAllowCurrencies() { $allowedCurrencies = $this->_getResource()->getConfigCurrencies($this, self::XML_PATH_CURRENCY_ALLOW); $appBaseCurrencyCode = $this->_directoryHelper->getBaseCurrencyCode(); if (!in_array($appBaseCurrencyCode, $allowedCurrencies)) { $allowedCurrencies[] = $appBaseCurrencyCode; } foreach ($this->_storeManager->getStores() as $store) { $code = $store->getBaseCurrencyCode(); if (!in_array($code, $allowedCurrencies)) { $allowedCurrencies[] = $code; } } return $allowedCurrencies; }
/** * Get websites list * * @return array */ protected function getWebsites() { $websites = [['label' => __('All Websites') . ' [' . $this->directoryHelper->getBaseCurrencyCode() . ']', 'value' => 0]]; $product = $this->locator->getProduct(); if (!$this->isScopeGlobal() && $product->getStoreId()) { /** @var \Magento\Store\Model\Website $website */ $website = $this->getStore()->getWebsite(); $websites[] = ['label' => $website->getName() . '[' . $website->getBaseCurrencyCode() . ']', 'value' => $website->getId()]; } elseif (!$this->isScopeGlobal()) { $websitesList = $this->storeManager->getWebsites(); $productWebsiteIds = $product->getWebsiteIds(); foreach ($websitesList as $website) { /** @var \Magento\Store\Model\Website $website */ if (!in_array($website->getId(), $productWebsiteIds)) { continue; } $websites[] = ['label' => $website->getName() . '[' . $website->getBaseCurrencyCode() . ']', 'value' => $website->getId()]; } } return $websites; }
/** * @return array|null */ public function getWebsites() { if (null !== $this->_websites) { return $this->_websites; } $websites = []; $websites[0] = ['name' => __('All Websites'), 'currency' => $this->_directoryHelper->getBaseCurrencyCode()]; if (!$this->_storeManager->hasSingleStore() && !$this->getElement()->getEntityAttribute()->isScopeGlobal()) { if ($storeId = $this->getProduct()->getStoreId()) { $website = $this->_storeManager->getStore($storeId)->getWebsite(); $websites[$website->getId()] = ['name' => $website->getName(), 'currency' => $website->getConfig(\Magento\Directory\Model\Currency::XML_PATH_CURRENCY_BASE)]; } else { foreach ($this->_storeManager->getWebsites() as $website) { if (!in_array($website->getId(), $this->getProduct()->getWebsiteIds())) { continue; } $websites[$website->getId()] = ['name' => $website->getName(), 'currency' => $website->getConfig(\Magento\Directory\Model\Currency::XML_PATH_CURRENCY_BASE)]; } } } $this->_websites = $websites; return $this->_websites; }
/** * Retrieve allowed for edit websites * * @return array */ public function getWebsites() { if ($this->_websites !== null) { return $this->_websites; } $this->_websites = [0 => ['name' => __('All Websites'), 'currency' => $this->_directoryHelper->getBaseCurrencyCode()]]; if (!$this->isScopeGlobal() && $this->getProduct()->getStoreId()) { /** @var $website \Magento\Store\Model\Website */ $website = $this->_storeManager->getStore($this->getProduct()->getStoreId())->getWebsite(); $this->_websites[$website->getId()] = ['name' => $website->getName(), 'currency' => $website->getBaseCurrencyCode()]; } elseif (!$this->isScopeGlobal()) { $websites = $this->_storeManager->getWebsites(false); $productWebsiteIds = $this->getProduct()->getWebsiteIds(); foreach ($websites as $website) { /** @var $website \Magento\Store\Model\Website */ if (!in_array($website->getId(), $productWebsiteIds)) { continue; } $this->_websites[$website->getId()] = ['name' => $website->getName(), 'currency' => $website->getBaseCurrencyCode()]; } } return $this->_websites; }