0) ? taxonomy_get_term($area_seleccionada_para_reporte)->name : 'Todas'; $anho_min_historico = $anno_seleccionado_para_reporte; module_load_include('inc', 'reportes_sipp' , 'includes/matriz_de_procesos_reporte_trimestral.pages'); $datos_grafica = array(); $datos_historico = array(); //proyectos operativos con estado aprobado $sql1 = "SELECT"; $sql_campos = " COUNT(*) AS total, ctpo.field_proyecto_mcti_value, ctpo.field_proyecto_unidadm_value";//, po.year"; $sql_tablas = " FROM {proyectos_operativos} po, {node} n, {workflow_node} AS wn, {content_type_proyectos_operativos} AS ctpo"; $sql_condiciones = " WHERE po.nid = n.nid AND wn.nid = n.nid AND wn.sid = %d AND n.nid = ctpo.nid AND n.vid = ctpo.vid"; $sql_agrupacion = "";//GROUP BY campo $sql_ordenacion = ""; $inputs = array(); $inputs[] = variable_get('proyectos_operativos_state_aprobado', NULL); if($area_selecc != 'Todas'){ //filtrar por estrategia MCTI $inputs[] = $area_seleccionada_para_reporte; $sql_condiciones .= " AND ctpo.field_proyecto_mcti_value = %d"; } $inputs[] = $anno_seleccionado_para_reporte; $sql_condiciones .= " AND po.year = %d"; $sql_agrupacion = " GROUP BY ctpo.field_proyecto_mcti_value, ctpo.field_proyecto_unidadm_value";//, po.year";//agrupando de derecha a izquierda $sql_ordenacion = " ORDER BY ctpo.field_proyecto_mcti_value, ctpo.field_proyecto_unidadm_value";//, po.year"; $sql1 .= $sql_campos.$sql_tablas.$sql_condiciones.$sql_agrupacion.$sql_ordenacion; $queryResult1 = db_query ( $sql1, $inputs); while ($proyectos = db_fetch_array ( $queryResult1 ) ){ $nombre_estrategia_mcti = taxonomy_get_term($proyectos['field_proyecto_mcti_value'])->name; $nombre_unidad_medida = taxonomy_get_term($proyectos['field_proyecto_unidadm_value'])->name; //calcular cantidades producidas en trimestres $sql2 = "SELECT"; $sql_campos_2 = " n.nid"; $sql_tablas_2 = $sql_tablas; $sql_condiciones_2 = $sql_condiciones; $inputs_2 = array(); if($area_selecc == 'Todas'){//incluir filtro particular area $sql_condiciones_2 .= " AND ctpo.field_proyecto_mcti_value = %d"; $inputs_2[] = $proyectos['field_proyecto_mcti_value']; } $sql_condiciones_2 .= " AND ctpo.field_proyecto_unidadm_value = %d"; $inputs_2[] = $proyectos['field_proyecto_unidadm_value']; $sql2 .= $sql_campos_2.$sql_tablas_2.$sql_condiciones_2;//consulta especializada a proyectos de un grupo $entradas = array_merge($inputs, $inputs_2);//agregar segundo grupo de entradas //inicializar cantidades en trimestres $cant_ejecutado_trim = array(); $cant_ejecutado_trim[0] = 0; $cant_ejecutado_trim[1] = 0; $cant_ejecutado_trim[2] = 0; $cant_ejecutado_trim[3] = 0; //consular cantidad de ejecutado de meta fisica en trimestres $queryResult_2 = db_query ( $sql2, $entradas);//consultar los proyectos en determinado grupo while ($proyectos_en_area_estrat = db_fetch_array ( $queryResult_2 ) ){ $nodo_proyecto = node_load($proyectos_en_area_estrat['nid']); //calcular todos los trimestres for($i=0; $i<4; $i++){ $porcentajes_avance = _calcular_porcentaje_avance_para_trimestre($nodo_proyecto, $i); $cant_ejecutado_trim[$i] += $porcentajes_avance['valores_particulares']['mf_ejecutado_trimestre']; } } $total_area_y_unidad_medida = 0; for($i=0; $i<4; $i++){ $total_area_y_unidad_medida += $cant_ejecutado_trim[$i]; } //copiar para datos graficas $dato_graf = array( 'id_aem' => $proyectos['field_proyecto_mcti_value'], 'id_unidadmedida' => $proyectos['field_proyecto_unidadm_value'], 'nombre_opcion_politica' => $nombre_estrategia_mcti, 'nombre_opcion_unidadmedida' => $nombre_unidad_medida, 'cant_proyectos' => $proyectos['total'], 'anho_actual' => $anno_seleccionado_para_reporte, 'cantidad_trimestres' => $cant_ejecutado_trim, ); $datos_grafica[] = $dato_graf; //****************************************************************************** //consultar datos para grafico de historicos $datos_historico_i = calcular_datos_historico_para_aem_reporte_page($proyectos['field_proyecto_mcti_value'], $proyectos['field_proyecto_unidadm_value'], $anno_seleccionado_para_reporte, $total_area_y_unidad_medida); if($datos_historico_i['anho_nim'] < $anho_min_historico){ $anho_min_historico = $datos_historico_i['anho_nim']; } $datos_historico[] = $datos_historico_i['cantidad_por_anho']; //****************************************************************************** } $valor_de_retorno = array( 'datos_anho_actual' => $datos_grafica, 'datos_historico' => $datos_historico, 'anho_min_historico' => $anho_min_historico, 'param' => array('anho' => $anno_seleccionado_para_reporte, 'area' => $area_selecc, 'tgraf' => $tipografico_selec,), ); return $valor_de_retorno; } //******************************************************* function calcular_datos_historico_para_aem_reporte_page($id_aem = 0, $id_unidadmedida = 0, $anho_actual=0, $cant_anho_actual=0){//areas_estrategicas_del_ministerio $cantidad_por_anhos = array(); $cantidad_por_anhos[$anho_actual] = $cant_anho_actual; $anho_min = $anho_actual - 4; //proyectos operativos con estado aprobado $sql1 = "SELECT"; $sql_campos = " po.year AS anho, COUNT(*) AS total, SUM(sp.ejecutadometafisica) AS cantidad_prod"; $sql_tablas = " FROM {proyectos_operativos} po, {node} n, {workflow_node} AS wn, {content_type_proyectos_operativos} AS ctpo"; $sql_tablas .= ", {seguimiento_proyecto} AS sp"; $sql_condiciones = " WHERE po.nid = n.nid AND wn.nid = n.nid AND wn.sid = %d AND n.nid = ctpo.nid AND n.vid = ctpo.vid"; $sql_condiciones .= " AND ctpo.field_proyecto_mcti_value = %d AND ctpo.field_proyecto_unidadm_value = %d AND po.year != %d";// estrategia mcti y unidad de medida $sql_condiciones .= " AND n.nid = sp.nid AND sp.estado = %d";//seguimiento de proyecto aprobado $sql_agrupacion = " GROUP BY po.year"; $sql_ordenacion = " ORDER BY po.year"; $sql1 .= $sql_campos . $sql_tablas . $sql_condiciones . $sql_agrupacion . $sql_ordenacion; $inputs = array(); $inputs[] = variable_get('proyectos_operativos_state_aprobado', NULL); $inputs[] = $id_aem; $inputs[] = $id_unidadmedida; $inputs[] = $anho_actual; $inputs[] = variable_get('acciones_centralizadas_state_aprobado', NULL); $queryResult_2 = db_query ( $sql1, $inputs); while ($proyectos_en_area_estrat = db_fetch_array ( $queryResult_2 ) ){ $cantidad_por_anhos[ $proyectos_en_area_estrat['anho'] ] = $proyectos_en_area_estrat['cantidad_prod']; if($proyectos_en_area_estrat['anho'] < $anho_min){ $anho_min = $proyectos_en_area_estrat['anho']; } } $valor_regresado = array( 'anho_nim' => $anho_min, 'cantidad_por_anho' => $cantidad_por_anhos, ); return $valor_regresado; } //******************************************************* function generar_tabla_produccion_trimestres($datos_anho_actual=array(), $param = array()){//areas_estrategicas_del_ministerio $anno_seleccionado_para_reporte = $param['anho']; $header = array(); $header[] = array('data' => t('Cantidad de Proyectos')); $header[] = array('data' => t('Área Estratégica')); $header[] = array('data' => t('Unidad de Medida')); $header[] = array('data' => t('Producción
1er Trimestre')); $header[] = array('data' => t('Producción
2do Trimestre')); $header[] = array('data' => t('Producción
3er Trimestre')); $header[] = array('data' => t('Producción
4to Trimestre')); $header[] = array('data' => t('Total')); $rows = array(); foreach($datos_anho_actual as $datos_area_udm_i){//area - unidad de medida $row = array(); $row[] = array('data' => $datos_area_udm_i['cant_proyectos'],); $row[] = array('data' => $datos_area_udm_i['nombre_opcion_politica'],); $row[] = array('data' => $datos_area_udm_i['nombre_opcion_unidadmedida'],); $total_area_y_unidad_medida = 0; for($i=0; $i<4; $i++){ $row[] = array('data' => $datos_area_udm_i['cantidad_trimestres'][$i],); $total_area_y_unidad_medida += $datos_area_udm_i['cantidad_trimestres'][$i]; } $row[] = array('data' => $total_area_y_unidad_medida,); $rows[] = $row; } if (!(count($rows)>0)) { $row[] = array('data' => t('No hay resultados para el reporte actual'), 'colspan' => 8); $rows[] = $row; } //generación tabla $output .= "

Gestión en el año: ".$anno_seleccionado_para_reporte."

"; $tabla_trimestres = theme('table', $header, $rows); $output .= $tabla_trimestres; return $output; } //************************************************************************************************************************** function generar_grafica_producciontrimestres($datos_grafica=array(), $param = array()) { $area_selecc = $param['area']; $tipografico_selec = $param['tgraf']; $anho_selecc = $param['anho']; $page_content = ''; $path = libraries_get_path('Highcharts-3.0.1'); if($tipografico_selec == t('Columnas')){ $options = grafica_basica_variascolumnas_opciones($datos_grafica, $area_selecc, $anho_selecc); }elseif($tipografico_selec == t('Lineas')){ $options = grafica_basica_variaslineas_opciones($datos_grafica, $area_selecc, $anho_selecc); } if (is_object($options)) { // Render the chart options object, and retrieve the chart id. highcharts_render($options); // Define required and optional chart container attributes. $attributes = array( // Required chart id passed by reference. 'id' => $options->chart->renderTo, // Optionally add styles or any other valid attribute. 'style' => 'height: 400px;width: 800px;' ); $page_content .= theme_highcharts_chart($options->chart->renderTo); $page_content .= theme('highcharts_chart', $attributes); } $path_biblioteca_Highcharts = libraries_get_path('Highcharts-3.0.1'); drupal_add_js($path_biblioteca_Highcharts . '/js/modules/exporting.js'); return $page_content; } /** * Column-basic highcharts options object. * * @see highcharts_render() */ function grafica_basica_variascolumnas_opciones($datos_grafica, $area_selecc, $anho_selecc) { $options = new stdClass(); // Chart. $options->chart = (object)array( 'renderTo' => 'container', 'plotBackgroundColor' => NULL, 'plotBorderWidth' => NULL, 'plotShadow' => FALSE, ); $options->chart->type = 'column'; // Title. $options->title->text = 'Gestión en el año '.$anho_selecc.' en '.$area_selecc.''; $options->subtitle->text = 'Áreas Estratégicas del Ministerio SIPP'; $categorias_xAxis = array(); $categorias_xAxis[] = '1er Trimestre'; $categorias_xAxis[] = '2do Trimestre'; $categorias_xAxis[] = '3er Trimestre'; $categorias_xAxis[] = '4to Trimestre'; $options->xAxis->categories = $categorias_xAxis; $options->yAxis->title->text = 'Producción Trimestral'; $options->yAxis->allowDecimals = FALSE; // Tooltip. // Normally formatter is a function callback. For now we'll make it a string. // @todo whenever this is user defined (views config, etc) be sure to sanitize // this string before passing to highcharts_render(). $options->tooltip->formatter = "function() {return 'Producción en trimestre: '+ this.point.y + ' ' + this.series.name + '';}"; //$options->tooltip->formatter = "function() {return ''+ this.series.name +': '+ this.point.y +' proyecto(s)';}"; // Plot options. $options->plotOptions->column = (object)array( 'allowPointSelect' => TRUE, 'cursor' => 'pointer', 'dataLabels' => array( 'enabled' => FALSE, ), 'showInLegend' => TRUE, ); // Series. $options->series = array(); foreach($datos_grafica as $valor_opc_i){ $series = new StdClass(); if($area_selecc == 'Todas'){ $series->name = $valor_opc_i['nombre_opcion_unidadmedida'].'
'.$valor_opc_i['nombre_opcion_politica']; }else{ $series->name = $valor_opc_i['nombre_opcion_unidadmedida']; } $series->data = array(); $series->data[] = array($valor_opc_i['cantidad_trimestres'][0]*1.0); $series->data[] = array($valor_opc_i['cantidad_trimestres'][1]*1.0); $series->data[] = array($valor_opc_i['cantidad_trimestres'][2]*1.0); $series->data[] = array($valor_opc_i['cantidad_trimestres'][3]*1.0); $options->series[] = $series; } // Diable credits. $options->credits->enabled = FALSE; return $options; } /** * Column-basic highcharts options object. * * @see highcharts_render() */ function grafica_basica_variaslineas_opciones($datos_grafica, $area_selecc, $anho_selecc) { $options = new stdClass(); // Chart. $options->chart = (object)array( 'renderTo' => 'container', 'plotBackgroundColor' => NULL, 'plotBorderWidth' => NULL, 'plotShadow' => FALSE, ); $options->chart->type = 'line'; // Title. $options->title->text = 'Producción del año '.$anho_selecc.' en '.$area_selecc.''; $options->subtitle->text = 'Áreas Estratégicas del Ministerio SIPP'; $categorias_xAxis = array(); $categorias_xAxis[] = '1er Trimestre'; $categorias_xAxis[] = '2do Trimestre'; $categorias_xAxis[] = '3er Trimestre'; $categorias_xAxis[] = '4to Trimestre'; $options->xAxis->categories = $categorias_xAxis; $options->yAxis->title->text = 'Producción'; $options->yAxis->allowDecimals = FALSE; $options->yAxis->min = 0; // Tooltip. // Normally formatter is a function callback. For now we'll make it a string. // @todo whenever this is user defined (views config, etc) be sure to sanitize // this string before passing to highcharts_render(). $options->tooltip->formatter = "function() {return 'Producción en trimestre: '+ this.point.y + ' ' + this.series.name + '';}"; // Plot options. $options->plotOptions->column = (object)array( 'allowPointSelect' => TRUE, 'cursor' => 'pointer', 'dataLabels' => array( 'enabled' => FALSE, ), 'showInLegend' => TRUE, ); // Series. $options->series = array(); foreach($datos_grafica as $valor_opc_i){ $series = new StdClass(); if($area_selecc == 'Todas'){ $series->name = $valor_opc_i['nombre_opcion_unidadmedida'].'
'.$valor_opc_i['nombre_opcion_politica']; }else{ $series->name = $valor_opc_i['nombre_opcion_unidadmedida']; } $series->data = array(); $series->data[] = array($valor_opc_i['cantidad_trimestres'][0]*1.0); $series->data[] = array($valor_opc_i['cantidad_trimestres'][1]*1.0); $series->data[] = array($valor_opc_i['cantidad_trimestres'][2]*1.0); $series->data[] = array($valor_opc_i['cantidad_trimestres'][3]*1.0); $options->series[] = $series; } // Diable credits. $options->credits->enabled = FALSE; return $options; } //************************************************************************************************************************* function generar_grafica_historicos($datos_cargados) { $page_content = ''; $path = libraries_get_path('Highcharts-3.0.1'); $options = grafica_basica_variascolumnas_opciones_historico($datos_cargados); if (is_object($options)) { // Render the chart options object, and retrieve the chart id. highcharts_render($options); // Define required and optional chart container attributes. $attributes = array( // Required chart id passed by reference. 'id' => $options->chart->renderTo, // Optionally add styles or any other valid attribute. 'style' => 'height: 400px;width: 800px;' ); $page_content .= theme_highcharts_chart($options->chart->renderTo); $page_content .= theme('highcharts_chart', $attributes); } $path_biblioteca_Highcharts = libraries_get_path('Highcharts-3.0.1'); drupal_add_js($path_biblioteca_Highcharts . '/js/modules/exporting.js'); return $page_content; } /** * Column-basic highcharts options object. * * @see highcharts_render() */ function grafica_basica_variascolumnas_opciones_historico($datos_cargados) { $options = new stdClass(); // Chart. $options->chart = (object)array( 'renderTo' => 'container', 'plotBackgroundColor' => NULL, 'plotBorderWidth' => NULL, 'plotShadow' => FALSE, ); $options->chart->type = 'column'; // Title. $area_selecc = $datos_cargados['param']['area']; $options->title->text = 'Historico de la Gestión en '.$area_selecc.''; $options->subtitle->text = 'Áreas Estratégicas del Ministerio SIPP'; $categorias_xAxis = array(); for($it_anho = $datos_cargados['anho_min_historico']; $it_anho <= $datos_cargados['param']['anho']; $it_anho++){ $categorias_xAxis[] = $it_anho; } $options->xAxis->categories = $categorias_xAxis; $options->yAxis->title->text = 'Producción Anual'; $options->yAxis->allowDecimals = FALSE; // Tooltip. // Normally formatter is a function callback. For now we'll make it a string. // @todo whenever this is user defined (views config, etc) be sure to sanitize // this string before passing to highcharts_render(). $options->tooltip->formatter = "function() {return 'Producción en trimestre: '+ this.point.y + ' ' + this.series.name + '';}"; // Plot options. $options->plotOptions->column = (object)array( 'allowPointSelect' => TRUE, 'cursor' => 'pointer', 'dataLabels' => array( 'enabled' => FALSE, ), 'showInLegend' => TRUE, ); // Series. $options->series = array(); foreach($datos_cargados['datos_anho_actual'] AS $id => $areas_unidadmedida){ $series = new StdClass(); if($area_selecc == 'Todas'){ $series->name = $areas_unidadmedida['nombre_opcion_unidadmedida'].'
'.$areas_unidadmedida['nombre_opcion_politica']; }else{ $series->name = $areas_unidadmedida['nombre_opcion_unidadmedida']; } $series->data = array(); for($it_anho = $datos_cargados['anho_min_historico']; $it_anho <= $datos_cargados['param']['anho']; $it_anho++){ $cantidad_producida = isset($datos_cargados['datos_historico'][$id][$it_anho])? $datos_cargados['datos_historico'][$id][$it_anho] : 0; $series->data[] = array($cantidad_producida*1.0); } $options->series[] = $series; } // Diable credits. $options->credits->enabled = FALSE; return $options; }