/** Function to retrieve maximum decimal values of currency field on save * @param $fieldname currency field name * @param $fldvalue currency value they want to save * @returns field value from database with maximum decimals if it is the same as value being saved */ function adjustCurrencyField($fieldname, $fldvalue, $tabid) { global $adb, $log, $current_user; $log->debug("Entering adjustCurrencyField({$fieldname},{$fldvalue})"); if (isset(self::$dbvalues[$fieldname])) { $dbvalue = self::$dbvalues[$fieldname]; } else { $dbvals = $result = array(); foreach ($this->tab_name_index as $table_name => $index) { $result = $adb->pquery("select * from {$table_name} where {$index}=?", array($this->id)); $flds = $adb->fetch_array($result); $dbvals = array_merge($dbvals, $flds); } self::$dbvalues = $dbvals; $dbvalue = self::$dbvalues[$fieldname]; $fldrs = $adb->pquery('select fieldname,typeofdata from vtiger_field where vtiger_field.uitype in (7,9,71,72) and vtiger_field.tabid=?', array($tabid)); while ($fldinf = $adb->fetch_array($fldrs)) { self::$todvalues[$fldinf['fieldname']] = $fldinf['typeofdata']; } } $typeofdata = self::$todvalues[$fieldname]; $decimals = CurrencyField::getDecimalsFromTypeOfData($typeofdata); if (round($dbvalue, min($decimals, $current_user->no_of_currency_decimals)) == $fldvalue) { $fldvalue = $dbvalue; } $log->debug("Exiting adjustCurrencyField ({$fldvalue})"); return $fldvalue; }