diff --git a/modules/Vtiger/uitypes/Percentage.php b/modules/Vtiger/uitypes/Percentage.php index 4477d8b916559747370554932f3eb382ae0fcc04..50185b6d043ac7b7bd2cd2646afe83f1115549db 100644 --- a/modules/Vtiger/uitypes/Percentage.php +++ b/modules/Vtiger/uitypes/Percentage.php @@ -19,12 +19,34 @@ class Vtiger_Percentage_UIType extends Vtiger_Base_UIType { } public function getDisplayValue($value, $record = false, $recordInstance = false) { - $fldvalue = str_replace(",", ".", $value); - $value = (is_numeric($fldvalue)) ? $fldvalue : null; - return CurrencyField::convertToUserFormat($value, null, true); - } + + $fldvalue = str_replace(",", ".", $value); + $value = (is_numeric($fldvalue)) ? $fldvalue : null; + $self = new self(); + return $self->convertToUserFormat($value, null, true); + } - public function getEditViewDisplayValue($value) { - return $this->getDisplayValue($value); - } + public function convertToUserFormat($value, $user = null, $skipConversion = false, $skipFormatting = false) { + + if (empty($value)) { + return $value; + } + + if (empty($user)) { + $user = Users_Record_Model::getCurrentUserModel(); + + } + + $old_no_of_currency_decimals = $user->no_of_currency_decimals; + + // If decimal separator is "," and no.of decimals is "0" then if we give 8,8 (value:8.8) + // which is becoming round of value i,e "9". + // so by default we are setting no_of_currency_decimals to max value. + $user->no_of_currency_decimals = 5; + + $currencyField = new CurrencyField($value); + $display_value = $currencyField->getDisplayValue($user, $skipConversion, $skipFormatting); + $user->no_of_currency_decimals = $old_no_of_currency_decimals; + return $display_value; + } }