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: class Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Price
35: extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
36: {
37: protected $_defaultWidth = 100;
38: /**
39: * Currency objects cache
40: */
41: protected static $_currencies = array();
42:
43: /**
44: * Renders grid column
45: *
46: * @param Varien_Object $row
47: * @return string
48: */
49: public function render(Varien_Object $row)
50: {
51: if ($data = $row->getData($this->getColumn()->getIndex())) {
52: $currency_code = $this->_getCurrencyCode($row);
53:
54: if (!$currency_code) {
55: return $data;
56: }
57:
58: $data = floatval($data) * $this->_getRate($row);
59: $data = sprintf("%f", $data);
60: $data = Mage::app()->getLocale()->currency($currency_code)->toCurrency($data);
61: return $data;
62: }
63: return $this->getColumn()->getDefault();
64: }
65:
66: /**
67: * Returns currency code for the row, false on error
68: *
69: * @param Varien_Object $row
70: * @return string|bool
71: */
72: protected function _getCurrencyCode($row)
73: {
74: if ($code = $this->getColumn()->getCurrencyCode()) {
75: return $code;
76: }
77: if ($code = $row->getData($this->getColumn()->getCurrency())) {
78: return $code;
79: }
80: return false;
81: }
82:
83: /**
84: * Returns rate for the row, 1 by default
85: *
86: * @param Varien_Object $row
87: * @return float|int
88: */
89: protected function _getRate($row)
90: {
91: if ($rate = $this->getColumn()->getRate()) {
92: return floatval($rate);
93: }
94: if ($rate = $row->getData($this->getColumn()->getRateField())) {
95: return floatval($rate);
96: }
97: return 1;
98: }
99:
100: /**
101: * Renders CSS
102: *
103: * @return string
104: */
105: public function renderCss()
106: {
107: return parent::renderCss() . ' a-right';
108: }
109: }
110: