]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/generic/SugarWidgets/SugarWidgetFieldcurrency.php
Release 6.5.0
[Github/sugarcrm.git] / include / generic / SugarWidgets / SugarWidgetFieldcurrency.php
1 <?php
2 if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
3 /*********************************************************************************
4  * SugarCRM Community Edition is a customer relationship management program developed by
5  * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc.
6  * 
7  * This program is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU Affero General Public License version 3 as published by the
9  * Free Software Foundation with the addition of the following permission added
10  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
11  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
12  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
13  * 
14  * This program is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
17  * details.
18  * 
19  * You should have received a copy of the GNU Affero General Public License along with
20  * this program; if not, see http://www.gnu.org/licenses or write to the Free
21  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22  * 02110-1301 USA.
23  * 
24  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
25  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
26  * 
27  * The interactive user interfaces in modified source and object code versions
28  * of this program must display Appropriate Legal Notices, as required under
29  * Section 5 of the GNU Affero General Public License version 3.
30  * 
31  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
32  * these Appropriate Legal Notices must retain the display of the "Powered by
33  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
34  * technical reasons, the Appropriate Legal Notices must display the words
35  * "Powered by SugarCRM".
36  ********************************************************************************/
37
38
39                                                                                        
40
41
42 global $current_user;
43                                                                                        
44 $global_currency_obj = null;
45                                                                                        
46 function get_currency()
47 {
48         global $current_user,$global_currency_obj;
49         if (empty($global_currency_obj))
50         {
51         $global_currency_obj = new Currency();
52       //  $global_currency_symbol = '$';
53                                                                                        
54         if($current_user->getPreference('currency') )
55         {
56                 $global_currency_obj->retrieve($current_user->getPreference('currency'));
57         }
58         else
59         {
60                 $global_currency_obj->retrieve('-99');
61         }
62         }
63         return $global_currency_obj;
64 }
65
66
67 class SugarWidgetFieldCurrency extends SugarWidgetFieldInt
68 {
69     function SugarWidgetFieldCurrency(&$layout_manager) {
70         parent::__construct($layout_manager);
71         $this->reporter = $this->layout_manager->getAttribute('reporter');  
72     }
73     
74
75     function & displayList($layout_def)
76         {
77             static $currencies;
78             // If it's not grouped, or if it's grouped around a system currency column, look up the currency symbol so we can display it next to the amount
79             if ( empty($layout_def['group_function']) || $this->isSystemCurrency($layout_def) ) {
80                 if ( isset($layout_def['varname']) ) {
81                     $key = $layout_def['varname'];
82                 } else {
83                     $key = $this->_get_column_alias($layout_def);
84                 }
85                 $key = strtoupper($key);
86                 
87                 if ( $this->isSystemCurrency($layout_def) ) {
88                     $currency_id = '-99';
89                 } else {
90                     if (isset($layout_def['fields'][$key.'_CURRENCY']))
91                         $currency_id = $layout_def['fields'][$key.'_CURRENCY'];
92                     else     
93                         $currency_id = $layout_def['fields'][$this->getTruncatedColumnAlias($this->_get_column_alias($layout_def)."_currency")];
94                 }
95                 if ( empty($currency_id) ) {
96                     $currency_id = '-99';
97                 }
98                 
99                 if ( !isset($currencies[$currency_id]) ) {
100                     $currencies[$currency_id] = new Currency();
101                     $currencies[$currency_id]->retrieve($currency_id);
102                 }
103                 if(!empty($currencies[$currency_id]->symbol)){
104                     $symbol = $currencies[$currency_id]->symbol.' ';
105                 } else {
106                     $symbol = '';
107                 }
108             } else {
109                 $symbol = '';
110             }
111 //                $global_currency_obj = get_currency();
112 //                  $display = format_number($this->displayListPlain($layout_def), 2, 2, array('convert' => true, 'currency_symbol' => true));
113 //                $display =  $global_currency_obj->symbol. round($global_currency_obj->convertFromDollar($this->displayListPlain($layout_def)),2);
114             $value = $this->displayListPlain($layout_def);
115             $display = $symbol.$value;
116             
117             
118             
119         if(!empty($layout_def['column_key'])){
120             $field_def = $this->reporter->all_fields[$layout_def['column_key']];    
121         }else if(!empty($layout_def['fields'])){
122             $field_def = $layout_def['fields'];
123         }
124         $record = '';
125         if ($layout_def['table_key'] == 'self' && isset($layout_def['fields']['PRIMARYID']))
126             $record = $layout_def['fields']['PRIMARYID'];
127         else if (isset($layout_def['fields'][strtoupper($layout_def['table_alias']."_id")])){ 
128             $record = $layout_def['fields'][strtoupper($layout_def['table_alias']."_id")];
129         }
130         if (!empty($record)) {
131                 $field_name = $layout_def['name'];
132                 $field_type = $field_def['type'];
133                 $module = $field_def['module'];
134         
135                 $div_id = $module ."&$record&$field_name";
136                 $str = "<div id='$div_id'>".$display;
137             global $sugar_config;
138             if (isset ($sugar_config['enable_inline_reports_edit']) && $sugar_config['enable_inline_reports_edit']) {
139                 $str .= "&nbsp;" .SugarThemeRegistry::current()->getImage("edit_inline","border='0' alt='Edit Layout' align='bottom' onClick='SUGAR.reportsInlineEdit.inlineEdit(\"$div_id\",\"$value\",\"$module\",\"$record\",\"$field_name\",\"$field_type\",\"$currency_id\",\"$symbol\");'");
140             }
141                 $str .= "</div>";
142                 return $str;
143         }
144         else
145             return $display;
146     }
147                              
148     function displayListPlain($layout_def) {
149 //        $value = $this->_get_list_value($layout_def);
150         $value = format_number(parent::displayListPlain($layout_def), null, null, array('convert' => false, 'currency_symbol' => false));
151         return $value;
152     }                                                          
153  function queryFilterEquals(&$layout_def)
154  {
155      return $this->_get_column_select($layout_def)."=".$GLOBALS['db']->quote(unformat_number($layout_def['input_name0']))."\n";
156  }
157                                                                                        
158  function queryFilterNot_Equals(&$layout_def)
159  {
160      return $this->_get_column_select($layout_def)."!=".$GLOBALS['db']->quote(unformat_number($layout_def['input_name0']))."\n";
161  }
162                                                                                        
163  function queryFilterGreater(&$layout_def)
164  {
165      return $this->_get_column_select($layout_def)." > ".$GLOBALS['db']->quote(unformat_number($layout_def['input_name0']))."\n";
166  }
167                                                                                        
168  function queryFilterLess(&$layout_def)
169  {
170      return $this->_get_column_select($layout_def)." < ".$GLOBALS['db']->quote(unformat_number($layout_def['input_name0']))."\n";
171  }
172
173  function queryFilterBetween(&$layout_def){
174      return $this->_get_column_select($layout_def)." > ".$GLOBALS['db']->quote(unformat_number($layout_def['input_name0'])). " AND ". $this->_get_column_select($layout_def)." < ".$GLOBALS['db']->quote(unformat_number($layout_def['input_name1']))."\n";
175  }
176
177  function isSystemCurrency(&$layout_def)
178  {
179      if (strpos($layout_def['name'],'_usdoll') === false) {
180          return false;
181      } else {
182          return true;
183      }
184  }
185
186  function querySelect(&$layout_def)
187  {
188      // We need to fetch the currency id as well
189      if ( !$this->isSystemCurrency($layout_def) && empty($layout_def['group_function'])) {
190          
191         if ( !empty($layout_def['table_alias']) ) {
192              $table = $layout_def['table_alias'];
193          } else {
194              $table = '';
195          }
196          
197          $real_table = '';
198          if (!empty($this->reporter->all_fields[$layout_def['column_key']]['real_table']))
199             $real_table = $this->reporter->all_fields[$layout_def['column_key']]['real_table'];
200             
201          $add_currency_id = false;
202          if(!empty($table)) {
203             $cols = $GLOBALS['db']->getHelper()->get_columns($real_table);
204             $add_currency_id = isset($cols['currency_id']) ? true : false;
205             
206             if(!$add_currency_id && preg_match('/.*?_cstm$/i', $real_table)) {
207                $table = str_replace('_cstm', '', $table);
208                $cols = $GLOBALS['db']->getHelper()->get_columns($table);
209                $add_currency_id = isset($cols['currency_id']) ? true : false;
210             }
211          }
212          if($add_currency_id) {             
213             return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)." , ".$table.".currency_id ". $this->getTruncatedColumnAlias($this->_get_column_alias($layout_def)."_currency") . "\n";
214          } else {
215             return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)."\n";
216          }      
217      } else {
218          return $this->_get_column_select($layout_def)." ".$this->_get_column_alias($layout_def)."\n";
219      }
220  }
221
222 }
223 ?>