_storeManager = $storeManager; $this->_currencyLocator = $currencyLocator; $this->_localeCurrency = $localeCurrency; $defaultBaseCurrencyCode = $currencyLocator->getDefaultCurrency($this->_request); $this->_defaultBaseCurrency = $currencyFactory->create()->load($defaultBaseCurrencyCode); } /** * Renders grid column * * @param \Magento\Framework\DataObject $row * @return string */ public function render(\Magento\Framework\DataObject $row) { if ($data = (string)$this->_getValue($row)) { $currency_code = $this->_getCurrencyCode($row); $data = (float)$data * $this->_getRate($row); $sign = (bool)(int)$this->getColumn()->getShowNumberSign() && $data > 0 ? '+' : ''; $data = sprintf("%f", $data); $data = $this->_localeCurrency->getCurrency($currency_code)->toCurrency($data); return $sign . $data; } return $this->getColumn()->getDefault(); } /** * Returns currency code, false on error * * @param \Magento\Framework\DataObject $row * @return string */ protected function _getCurrencyCode($row) { if ($code = $this->getColumn()->getCurrencyCode()) { return $code; } if ($code = $row->getData($this->getColumn()->getCurrency())) { return $code; } return $this->_currencyLocator->getDefaultCurrency($this->_request); } /** * Get rate for current row, 1 by default * * @param \Magento\Framework\DataObject $row * @return float|int */ protected function _getRate($row) { if ($rate = $this->getColumn()->getRate()) { return (float)$rate; } if ($rate = $row->getData($this->getColumn()->getRateField())) { return (float)$rate; } return $this->_defaultBaseCurrency->getRate($this->_getCurrencyCode($row)); } /** * Returns HTML for CSS * * @return string */ public function renderCss() { return parent::renderCss() . ' a-right'; } }