Beispiel #1
0
    /** 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;
    }