1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_Adminhtml
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27: /**
28: * Adminhtml grid item renderer currency
29: *
30: * @category Mage
31: * @package Mage_Adminhtml
32: * @author Magento Core Team <core@magentocommerce.com>
33: */
34:
35: class Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Currency
36: extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
37: {
38: protected $_defaultWidth = 100;
39:
40: /**
41: * Currency objects cache
42: */
43: protected static $_currencies = array();
44:
45: /**
46: * Renders grid column
47: *
48: * @param Varien_Object $row
49: * @return string
50: */
51: public function render(Varien_Object $row)
52: {
53: if ($data = (string)$row->getData($this->getColumn()->getIndex())) {
54: $currency_code = $this->_getCurrencyCode($row);
55:
56: if (!$currency_code) {
57: return $data;
58: }
59:
60: $data = floatval($data) * $this->_getRate($row);
61: $sign = (bool)(int)$this->getColumn()->getShowNumberSign() && ($data > 0) ? '+' : '';
62: $data = sprintf("%f", $data);
63: $data = Mage::app()->getLocale()->currency($currency_code)->toCurrency($data);
64: return $sign . $data;
65: }
66: return $this->getColumn()->getDefault();
67: }
68:
69: /**
70: * Returns currency code, false on error
71: *
72: * @param $row
73: * @return string|false
74: */
75: protected function _getCurrencyCode($row)
76: {
77: if ($code = $this->getColumn()->getCurrencyCode()) {
78: return $code;
79: }
80: if ($code = $row->getData($this->getColumn()->getCurrency())) {
81: return $code;
82: }
83: return false;
84: }
85:
86: /**
87: * Get rate for current row, 1 by default
88: *
89: * @param $row
90: * @return float|int
91: */
92: protected function _getRate($row)
93: {
94: if ($rate = $this->getColumn()->getRate()) {
95: return floatval($rate);
96: }
97: if ($rate = $row->getData($this->getColumn()->getRateField())) {
98: return floatval($rate);
99: }
100: return 1;
101: }
102:
103: /**
104: * Returns HTML for CSS
105: *
106: * @return string
107: */
108: public function renderCss()
109: {
110: return parent::renderCss() . ' a-right';
111: }
112: }
113: