'; $output .= drupal_get_form('consulta_matriz_de_procesos_reporte_mensual_form'); $output .= '

'; //**************************************************************************** $mes_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']['mes']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['mes'] : date('M') -1; $meses_disponibles = array(t('Enero'), t('Febrero'), t('Marzo'), t('Abril'), t('Mayo'), t('Junio'), t('Julio'), t('Agosto'), t('Septiembre'), t('Octubre'), t('Noviembre'), t('Diciembre'),); $mes_selecc = isset($meses_disponibles[$mes_seleccionado_para_reporte])? $meses_disponibles[$mes_seleccionado_para_reporte]: 'Todos'; $ente_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']) && isset($_SESSION['datos_para_generar_reporte_mp_mensual']['ente']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['ente'] : 0; if($ente_seleccionado_para_reporte > 0){ $nodo_ente = node_load($ente_seleccionado_para_reporte); $ente_selecc = l($nodo_ente->title, 'node/' . $nodo_ente->nid); }else{ $ente_selecc = 'Todos'; } $anno_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']) && isset($_SESSION['datos_para_generar_reporte_mp_mensual']['anho']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['anho'] : date('Y'); if($anno_seleccionado_para_reporte > 0){ $anho_selecc = $anno_seleccionado_para_reporte; }else{ $anho_selecc = 'Todos'; } $header = array(); $rows1 = array(); $row1 = array(); $row1[] = array('data' => 'Año', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row1[] = array('data' => $anho_selecc, 'bgcolor' => 'FCFCFC',); $rows1[] = $row1; $row1 = array(); $row1[] = array('data' => 'Mes(es)', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row1[] = array('data' => $mes_selecc, 'bgcolor' => 'FCFCFC',); $rows1[] = $row1; $row1 = array(); $row1[] = array('data' => 'Ente Planificador', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row1[] = array('data' => $ente_selecc, 'bgcolor' => 'FCFCFC',); $rows1[] = $row1; $output .= theme('table', $header, $rows1); $output .= '

'; //**************************************************************************** $inputs = array(); $sql = ''; $header = array(); $row_header = array(); $header[] = array('data' => t('Año')); $row_header[] = array('data' => '', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $header[] = array('data' => t('Ente.')); $row_header[] = array('data' => '', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $cab = 2; $header[] = array('data' => t('Datos del Proyecto'), 'colspan' => 3, ); $row_header[] = array('data' => 'Nombre', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row_header[] = array('data' => 'Código', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row_header[] = array('data' => 'Directríz PNDES', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $cab += 3; $row_header[] = array('data' => 'Unidad de Medida', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $cab += 1; //colocar cabceras correspondientes avance fisico y financiero para el proyecto en el mes actual if($mes_seleccionado_para_reporte == 12){//todos los meses $header[] = array('data' => t('Meta Física hasta ahora'), 'colspan' => 2,); $row_header[] = array('data' => t('Cantidad'), 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $header[] = array('data' => t('Presupuesto del año') ); $row_header[] = array('data' => '', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $header[] = array('data' => t('Beneficiarios hasta ahora') ); $row_header[] = array('data' => '', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $cab = $cab + 3; foreach($meses_disponibles as $mes_i){ $header[] = array('data' => $mes_i, 'colspan' => 2, ); $row_header[] = array('data' => '% Avance Físico', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row_header[] = array('data' => '% Ejecución Financiera', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $cab = $cab + 2; } }else{ //solo un mes $header[] = array('data' => t('Meta Física en el mes') , 'colspan' => 2,); $row_header[] = array('data' => t('Cantidad'), 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $header[] = array('data' => t('Presupuesto del año').'
' ); $row_header[] = array('data' => '', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $header[] = array('data' => t('Beneficiarios en el mes') ); $row_header[] = array('data' => '', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $cab = $cab + 3; //calcular mes actual $header[] = array('data' => $meses_disponibles[$mes_seleccionado_para_reporte], 'colspan' => 2, ); $row_header[] = array('data' => '% Avance Físico', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row_header[] = array('data' => '% Ejecución Financiera', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $cab = $cab + 2; } //proyectos operativos con estado aprobado $sql1 = "SELECT n.nid, n.title, po.year, po.ente, wn.sid FROM {proyectos_operativos} po, {node} n, {workflow_node} AS wn WHERE po.nid = n.nid AND wn.nid = n.nid AND wn.sid = %d "; $inputs[] = variable_get('proyectos_operativos_state_aprobado', NULL); //verificar filtro de ente planificador $ente_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']) && isset($_SESSION['datos_para_generar_reporte_mp_mensual']['ente']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['ente'] : 0; if($ente_seleccionado_para_reporte > 0){ $sql1 .= "AND po.ente = %d "; $inputs[] = $ente_seleccionado_para_reporte; } //verificar filtro de anho $anno_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']) && isset($_SESSION['datos_para_generar_reporte_mp_mensual']['anho']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['anho'] : date('Y'); if($anno_seleccionado_para_reporte > 0){ $sql1 .= "AND po.year = %d "; $inputs[] = $anno_seleccionado_para_reporte; } $queryResult1 = db_query ( $sql1, $inputs); $rows = array(); $rows[] = $row_header; while ($proyectos = db_fetch_array ( $queryResult1 ) ){ $row = array(); $row[] = array('data' => $proyectos['year'],); //cargar nodo para mostrar otros datos $ente_planificador = node_load($proyectos['ente']); $row[] = array('data' => l($ente_planificador->title, 'node/' . $proyectos['ente']),); $row[] = array('data' => l($proyectos['title'], 'proyectosop/' . $proyectos['nid']),); //cargar nodo para mostrar otros datos $nodo_proyecto = node_load($proyectos['nid']); $row[] = array('data' => $nodo_proyecto->field_proyecto_codigo[0]['value'] ); $term = taxonomy_get_term($nodo_proyecto->field_proyecto_pndes[0]['value']); $row[] = array('data' => $term->name ); $term = taxonomy_get_term($nodo_proyecto->field_proyecto_unidadm[0]['value']); $row[] = array('data' => $term->name ); //calcular avance fisico y financiero para el proyecto en el mes actual if($mes_seleccionado_para_reporte == 12){ //calcular cantidad de meta fisica y de beneficiarios $datos_mf_benef_monto = _calcular_cantmf_beneficiarios_montoref_total($nodo_proyecto); $row[] = array('data' => $datos_mf_benef_monto['cant_ejecut_metafisica'] ); $row[] = array('data' => $datos_mf_benef_monto['monto_total_proyecto'] ); $row[] = array('data' => $datos_mf_benef_monto['cant_beneficiarios_mes'] ); //calcular todos los meses foreach($meses_disponibles as $id => $mes_i){ $porcentajes_avance = _calcular_porcentaje_avance_para_mes($nodo_proyecto, $id); $porczonacritica_mf = $porcentajes_avance['avance_fisico'] != 'N/A' ? number_format($porcentajes_avance['avance_fisico'], 2, '.', ',').'%' : 'N/A'; $row[] = array('data' => $porczonacritica_mf ); $porczonacritica_financiera = $porcentajes_avance['ejecucion_financiera'] != 'N/A' ? number_format($porcentajes_avance['ejecucion_financiera'], 2, '.', ',').'%' : 'N/A'; $row[] = array('data' => $porczonacritica_financiera ); } }else{ //calcular mes actual $porcentajes_avance = _calcular_porcentaje_avance_para_mes($nodo_proyecto, $mes_seleccionado_para_reporte); $mf_ejecutado_mes = $porcentajes_avance['valores_particulares']['mf_ejecutado_mes']; $row[] = array('data' => $mf_ejecutado_mes ); //calcular cantidad de meta fisica y de beneficiarios $datos_mf_benef_monto = _calcular_cantmf_beneficiarios_montoref_para_mes($nodo_proyecto, $mes_seleccionado_para_reporte); $row[] = array('data' => $datos_mf_benef_monto['monto_total_proyecto'] ); $row[] = array('data' => $datos_mf_benef_monto['cant_beneficiarios_mes'] ); $porczonacritica_mf = $porcentajes_avance['avance_fisico'] != 'N/A' ? number_format($porcentajes_avance['avance_fisico'], 2, '.', ',').'%' : 'N/A'; $row[] = array('data' => $porczonacritica_mf ); $porczonacritica_financiera = $porcentajes_avance['ejecucion_financiera'] != 'N/A' ? number_format($porcentajes_avance['ejecucion_financiera'], 2, '.', ',').'%' : 'N/A'; $row[] = array('data' => $porczonacritica_financiera ); } $rows[] = $row; } if (!(count($rows)>1)) { $row[] = array('data' => t('No hay resultados para la consulta actual'), 'colspan' => $cab); $rows[] = $row; } $output .= theme('table', $header, $rows); return $output; } /** * Implementation of consulta_matriz_de_procesos_reporte_form(). * Formulario de busqueda de proyecto. */ function consulta_matriz_de_procesos_reporte_mensual_form($form_state) { $form = array(); //entes planificadores $entes = array(); $result = db_query('SELECT e.nid, n.title FROM {ente_planificador} AS e INNER JOIN {node} AS n ON n.nid = e.nid WHERE n.status = 1 AND e.tipo = 2 '); while($ente = db_fetch_object($result)) { $entes[$ente->nid] = $ente->title; } $entes[0] = 'Todos'; $ente_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']) && isset($_SESSION['datos_para_generar_reporte_mp_mensual']['ente']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['ente'] : 0; $form['ente_seleccionado_para_reporte'] = array( '#title' => t('Ente Planificador'), '#type' => 'select', '#default_value' => $ente_seleccionado_para_reporte, '#options' => $entes, ); //años disponibles $anno_actual = date("Y"); for($i = $anno_actual - 10; $i <= $anno_actual; $i++) { $annos[$i] = $i; } $annos[0] = 'Todos'; $anno_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']) && isset($_SESSION['datos_para_generar_reporte_mp_mensual']['anho']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['anho'] : date('Y'); $form['anno_seleccionado_para_reporte'] = array( '#title' => t('Consultar para el año'), '#type' => 'select', '#default_value' => $anno_seleccionado_para_reporte, '#options' => $annos, ); //tipo de periodo $tipo_periodo = t('Mensual'); //subopciones de periodo $sub_opciones = array(t('Enero'), t('Febrero'), t('Marzo'), t('Abril'), t('Mayo'), t('Junio'), t('Julio'), t('Agosto'), t('Septiembre'), t('Octubre'), t('Noviembre'), t('Diciembre'), t('Todos'),); $mes_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_mp_mensual']) && isset($_SESSION['datos_para_generar_reporte_mp_mensual']['mes']) ? $_SESSION['datos_para_generar_reporte_mp_mensual']['mes'] : date('M') -1; $form['mes_seleccionado_para_reporte'] = array( '#title' => t('Mes(es)'), '#type' => 'select', '#default_value' => $mes_seleccionado_para_reporte, '#options' => $sub_opciones, ); //boton de enviar consulta $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['submit'] = array( '#type' => 'submit', '#value' => t('Consultar'), ); return $form; } /** * Implementation of consulta_matriz_de_procesos_reporte_form_submit(). * cambia el filtro de busqueda de proyectos. */ function consulta_matriz_de_procesos_reporte_mensual_form_submit($form, &$form_state) { $_SESSION['datos_para_generar_reporte_mp_mensual'] = array(); $_SESSION['datos_para_generar_reporte_mp_mensual']['ente'] = $form_state['values']['ente_seleccionado_para_reporte']; $_SESSION['datos_para_generar_reporte_mp_mensual']['anho'] = $form_state['values']['anno_seleccionado_para_reporte']; $_SESSION['datos_para_generar_reporte_mp_mensual']['mes'] = $form_state['values']['mes_seleccionado_para_reporte']; } /** * Implementation of _calcular_porcentaje_avance_para_mes(). * calcula el porcentaje de avance fisico y financiero para un mes particular */ function _calcular_porcentaje_avance_para_mes($node, $mes){ //avance físico $seg_metafisica_todos = _seguimiento_metafisica_todosmes_proyecto_load_solo_datos_aprobados($node); $variacion_planificado_mes = _seguimiento_mesactual_metafisica_proyecto_reformulaciones_load($node, $mes);//calcular variacion por reformulacion $planificadoMes = $seg_metafisica_todos['seguimiento_metafisica_todosmes'][$mes]['planificadoMes'] + $variacion_planificado_mes; $Ejecutado = $seg_metafisica_todos['seguimiento_metafisica_todosmes'][$mes]['ejecutadoMes']; $porc_avance_fisico = $planificadoMes ? (($Ejecutado/$planificadoMes) *100) . '%' : 'N/A'; //ejecución financiera $seguimiento_todos_meses_financiero = _seguimiento_financiero_todosmes_proyecto_load_solo_datos_aprobados($node); $variacion_total_ref_asignado = _seguimiento_mesactual_total_proyecto_reformulaciones_load($node, $mes);//calcular variación por reformulación $asignadoMes = $seguimiento_todos_meses_financiero['seguimiento_financiero_todosmes'][$mes]['asignadoMes'] + $variacion_total_ref_asignado; $totalCausado = $seguimiento_todos_meses_financiero['seguimiento_financiero_todosmes'][$mes]['causadoMes']; $porc_ejecucion_financiera = $asignadoMes ? (($totalCausado/$asignadoMes) *100) . '%' : 'N/A'; $valores_particulares = array( 'mf_planificado_mes' => $planificadoMes,//meta fisica planificada con reformulaciones aprobadas 'mf_ejecutado_mes' => $Ejecutado,//meta fisica ejecutada 'financiera_asignado_mes' => $asignadoMes,//asignado financiero con reformulaciones aprobadas 'financiera_comprometido_mes' => $seguimiento_todos_meses_financiero['seguimiento_financiero_todosmes'][$mes]['comprometidoMes'],//comprometido financiero 'financiera_causado_mes' => $totalCausado,//causado financiero 'financiera_pagado_mes' => $seguimiento_todos_meses_financiero['seguimiento_financiero_todosmes'][$mes]['pagadoMes'],//pagado financiero ); $porcentajes_avance = array( 'avance_fisico' => $porc_avance_fisico, 'ejecucion_financiera' => $porc_ejecucion_financiera, 'valores_particulares' => $valores_particulares, ); return $porcentajes_avance; } /** * Implementation of _calcular_cantmf_beneficiarios_montoref_para_mes(). * calcula el porcentaje de avance fisico y financiero para un mes particular (cant ejecutado y beneficiarios) */ function _calcular_cantmf_beneficiarios_montoref_para_mes($node, $mes){ //beneficiarios $seguimiento_todos_meses_beneficiario = _seguimiento_beneficiario_todosmes_proyecto_load_solo_datos_aprobados($node); $cant_beneficiarios_mes = 0; foreach($seguimiento_todos_meses_beneficiario as $seg_benef){ if(_mes_dentro_de_duracion_proyecto($node, $mes)){ $cant_beneficiarios_mes += $seg_benef['cant_meses'][$mes]; }else{ $cant_ejecut_metafisica = 'N/A'; $cant_beneficiarios_mes = 'N/A'; break; } } //monto total del año con reformulaciones aprobadas $monto_total_inicial = $node->field_proyecto_monto_anual[0]['value']; $variacion_total_aprobada = _variacion_monto_total_por_reformulaciones_proyecto_load($node); $monto_total_proyecto = number_format($monto_total_inicial + $variacion_total_aprobada, 0, '.', ' ').' Bs'; $datos_mf_benef_monto = array( 'cant_beneficiarios_mes' => $cant_beneficiarios_mes, 'monto_total_proyecto' => $monto_total_proyecto, ); return $datos_mf_benef_monto; } /** * Implementation of _calcular_cantmf_beneficiarios_montoref_para_mes(). * calcula el porcentaje de avance fisico y financiero total (todos los meses que tenga registrado seguimiento) */ function _calcular_cantmf_beneficiarios_montoref_total($node){ //ejecutado meta física $seg_metafisica_todos = _seguimiento_metafisica_todosmes_proyecto_load_solo_datos_aprobados($node); $cant_ejecut_metafisica = 0; for($i=0; $i<12; $i++){ $cant_ejecut_metafisica += $seg_metafisica_todos['seguimiento_metafisica_todosmes'][$i]['ejecutadoMes']; } //beneficiarios $seguimiento_todos_meses_beneficiario = _seguimiento_beneficiario_todosmes_proyecto_load_solo_datos_aprobados($node); $cant_beneficiarios_mes = 0; foreach($seguimiento_todos_meses_beneficiario as $seg_benef){ $cant_beneficiarios_mes += $seg_benef['total_benef']; } //monto total del año $monto_total_inicial = $node->field_proyecto_monto_anual[0]['value']; $variacion_total_aprobada = _variacion_monto_total_por_reformulaciones_proyecto_load($node); $monto_total_proyecto = number_format($monto_total_inicial + $variacion_total_aprobada, 0, '.', ' ').' Bs'; $datos_mf_benef_monto = array( 'cant_ejecut_metafisica' => $cant_ejecut_metafisica, 'cant_beneficiarios_mes' => $cant_beneficiarios_mes, 'monto_total_proyecto' => $monto_total_proyecto, ); return $datos_mf_benef_monto; }