⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mypipelinebysalesstagedashlet.php

📁 SugarCRM5.1 开源PHP客户关系管理系统
💻 PHP
📖 第 1 页 / 共 2 页
字号:
        $selected_datax = array();        //get list of sales stage keys to display        $user_sales_stage = $this->mypbss_sales_stages;        $tempx = $user_sales_stage;                //set $datax using selected sales stage keys        if (count($tempx) > 0) {            foreach ($tempx as $key) {                $datax[$key] = $app_list_strings['sales_stage_dom'][$key];                array_push($selected_datax, $key);            }        }        else {            $datax = $app_list_strings['sales_stage_dom'];            $selected_datax = array_keys($app_list_strings['sales_stage_dom']);        }        $GLOBALS['log']->debug("datax is:");        $GLOBALS['log']->debug($datax);        $ids = array($current_user->id);        //create unique prefix based on selected users for image files        $id_hash = '1';        if (isset($ids)) {            sort($ids);            $id_hash = crc32(implode('',$ids));            if($id_hash < 0)            {                $id_hash = $id_hash * -1;            }        }        $GLOBALS['log']->debug("ids is:");        $GLOBALS['log']->debug($ids);        $id_md5 = substr(md5($current_user->id),0,9);        $seps               = array("-", "/");        $dates              = array($dateStartDisplay, $dateEndDisplay);        $dateFileNameSafe   = str_replace($seps, "_", $dates);        $cache_file_name = $current_user->getUserPrivGuid()."_".$theme."_my_pipeline_".$dateFileNameSafe[0]."_".$dateFileNameSafe[1].".xml";                $GLOBALS['log']->debug("cache file name is: $cache_file_name");                if (file_exists($sugar_config['tmp_dir'].$cache_file_name)) {            $file_date = date($timedate->get_date_format()." ".$timedate->get_time_format(), filemtime($sugar_config['tmp_dir'].$cache_file_name));        }        else {            $file_date = '';        }		require_once('include/Sugar_Smarty.php');		require_once('include/SugarCharts/SugarChart.php');				$sugar_smarty = new Sugar_Smarty();			$charts = array();			$sugarChart = new SugarChart();				$sugarChart->base_url = array( 	'module' => 'Opportunities',								'action' => 'index',								'query' => 'true',								'searchFormTab' => 'advanced_search',							 );		$sugarChart->url_params = array( 'assigned_user_id' => $current_user->id );				$sugarChart->group_by = $this->constructGroupBy();		$query = $this->constructQuery($datax, $dateXml[0], $dateXml[1], $ids, $sugar_config['tmp_dir'].$cache_file_name, $refresh,'hBarS',$current_module_strings);		$total = format_number($sugarChart->getTotal(), 0, 0);				$currency_symbol = $sugar_config['default_currency_symbol'];				if ($current_user->getPreference('currency')){		    require_once('modules/Currencies/Currency.php');            $currency = new Currency();            $currency->retrieve($current_user->getPreference('currency'));            $currency_symbol = $currency->symbol;        }		                $sugarChart->is_currency = true;        $sugarChart->thousands_symbol = translate('LBL_OPP_THOUSANDS', 'Charts');                $subtitle = translate('LBL_OPP_SIZE', 'Charts') . " " . $currency_symbol . "1" . translate('LBL_OPP_THOUSANDS', 'Charts');					$dataset = $this->constructCEChartData($this->getChartData($query));			$sugarChart->setData($dataset);			$total = format_number($this->getHorizBarTotal($dataset), 0, 0);					$pipeline_total_string = translate('LBL_TOTAL_PIPELINE', 'Charts') . $sugarChart->currency_symbol . $total . $sugarChart->thousands_symbol;			$sugarChart->setProperties($pipeline_total_string, $subtitle, 'horizontal bar chart');					$xmlFile = $sugar_config['tmp_dir']. $current_user->id . '_' . $this->id . '.xml';			$sugarChart->saveXMLFile($xmlFile, $sugarChart->generateXML());		$returnStr .= $sugarChart->display($this->id, $xmlFile, '100%', '480', false);       	        	    return $this->getTitle('') . '<div align="center">' .$returnStr . '</div><br />';		    }	// awu: Bug 16794 - this function is a hack to get the correct sales stage order until i can clean it up later         function getChartData($query){    	global $app_list_strings, $current_user, $sugar_config;    	    	$data = array();    	$temp_data = array();    	$selected_datax = array();    	    	$user_sales_stage = $this->mypbss_sales_stages;        $tempx = $user_sales_stage;                //set $datax using selected sales stage keys        if (count($tempx) > 0) {            foreach ($tempx as $key) {                $datax[$key] = $app_list_strings['sales_stage_dom'][$key];                array_push($selected_datax, $key);            }        }        else {            $datax = $app_list_strings['sales_stage_dom'];            $selected_datax = array_keys($app_list_strings['sales_stage_dom']);        }                $db = &PearDatabase::getInstance();                $result = $db->query($query);        $row = $db->fetchByAssoc($result, -1, false);                while($row != null){        	array_push($temp_data, $row);        	$row = $db->fetchByAssoc($result, -1, false);        }		// reorder and set the array based on the order of selected_datax                foreach($selected_datax as $sales_stage){        	foreach($temp_data as $key => $value){        		if ($value['sales_stage'] == $sales_stage){        			//$value['total'] = $symbol . $value['total'];        			$value['sales_stage'] = $app_list_strings['sales_stage_dom'][$value['sales_stage']];        			array_push($data, $value);        			unset($temp_data[$key]);        		}        	}        }        return $data;    }        function getHorizBarTotal($dataset){    	$total = 0;    	foreach($dataset as $value){    		$total += $value;    	}    	    	return $total;    }        function constructCEChartData($dataset){    	$newData = array();    	foreach($dataset as $key=>$value){    		$newData[$value['sales_stage']] = $value['total'];    	}    	return $newData;	    }           function constructQuery($datax=array('foo','bar'), $date_start='2071-10-15', $date_end='2071-10-15', $user_id=array('1'), $cache_file_name='a_file', $refresh=false,$chart_size='hBarF',$current_module_strings) {        global $app_strings, $charset, $lang, $barChartColors, $current_user, $theme;        require_once('themes/' . $theme . '/layout_utils.php');        require_once('modules/Currencies/Currency.php');        require_once('modules/Opportunities/Opportunity.php');        $kDelim = $current_user->getPreference('num_grp_sep');        global $timedate;        $opp = new Opportunity;        $where="";        //build the where clause for the query that matches $user        $count = count($user_id);        $id = array();        $user_list = get_user_array(false);        foreach ($user_id as $key) {            $new_ids[$key] = $user_list[$key];        }        if ($count>0) {            foreach ($new_ids as $the_id=>$the_name) {                $id[] = "'".$the_id."'";            }            $ids = join(",",$id);            $where .= "opportunities.assigned_user_id IN ($ids) ";        }        //build the where clause for the query that matches $datax        $count = count($datax);        $dataxArr = array();        if ($count>0) {            foreach ($datax as $key=>$value) {                $dataxArr[] = "'".$key."'";            }            $dataxArr = join(",",$dataxArr);            $where .= "AND opportunities.sales_stage IN ($dataxArr) ";        }        //build the where clause for the query that matches $date_start and $date_end        $where .= " AND opportunities.date_closed >= ". db_convert("'".$date_start."'",'datetime'). "                     AND opportunities.date_closed <= ".db_convert("'".$date_end."'",'datetime') ;        $where .= " AND opportunities.assigned_user_id = users.id  AND opportunities.deleted=0 ";        //Now do the db queries        //query for opportunity data that matches $datax and $user        $query = "  SELECT opportunities.sales_stage,                        users.user_name,                        opportunities.assigned_user_id,                        count( * ) AS opp_count,                        sum(amount_usdollar/1000) AS total                    FROM users,opportunities  ";        $query .= "WHERE " .$where;        $query .= " GROUP BY opportunities.sales_stage";        $query .= ",users.user_name,opportunities.assigned_user_id";		return $query;    }        function constructGroupBy(){    	$groupBy = array('sales_stage');    	    		array_push($groupBy, 'user_name');    	return $groupBy;     }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -