t('January'), 1 => t('February'), 2 => t('March'), 3 => t('April'), 4 => t('May'), 5 => t('June'), 6 => t('July'), 7 => t('August'), 8 => t('September'), 9 => t('Octuber'), 10 => t('November'), 11 => t('December'), ); define('MESES', json_encode($meses)); //constante para la manupulacion de los meses del anho /** * Implementation of hook_menu_alter() */ function seguimiento_proyectos_operativos_menu_alter(&$items) { //incluyendo las funciones del modulo de seguimiento module_load_include('module', 'proyectos_operativos_seguimiento', 'proyectos_operativos_seguimiento'); $items['proyectosop/%node/seguimiento_proyecto']['page callback'] = 'seguimiento_proyectos_operativos_acciones_views_page'; $items['proyectosop/%node/seguimiento_proyecto']['file'] = ''; $items['node/%node/seguimiento_proyecto']['page callback'] = 'seguimiento_proyectos_operativos_acciones_views_page'; $items['node/%node/seguimiento_proyecto']['file'] = ''; $items['node/%node/fase_de_seguimiento_proyecto_y_aes/mes/%messegaepartida']['page callback'] = 'seguimiento_proyectos_operativos_acciones_views_page'; $items['node/%node/fase_de_seguimiento_proyecto_y_aes/mes/%messegaepartida']['file'] = ''; } /** * Vista del seguimiento de proyectos de forma general */ function seguimiento_proyectos_operativos_acciones_views_page($node) { module_load_include('inc', 'accion_especifica_de_proyecto_seguimiento', 'includes/ae_proyecto/seguimiento_accion_especifica_deproyecto.pages'); global $user; $rows = array(); $row2 = array(); $header = array(); $header2 = array(); //roles de los usuarios $rol_control = variable_get('ActorPlanificadorMacro', 2); $rol_supervisor = variable_get('ActorPlanificadorMicro', 2); $rol_enlace = variable_get('ActorPlanificadorEnlace', 2); $roles = array_keys($user->roles); $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($node); $format_decimal = variable_get('proyectos_operativos_number_dec_point', ','); $format_cnt = variable_get('proyectos_operativos_number_decimals', ','); $format_miles = variable_get('proyectos_operativos_number_thousands_sep', '.'); $meses = json_decode(MESES); drupal_set_title(t('Seguimiento y Control de Proyecto Operativo'.' (mes de '. $meses[$mes_fase_seg] . ')')); //calcular variacion por reformulacion $variacion_planificado_mes = _seguimiento_mesactual_metafisica_proyecto_reformulaciones_load($node, $mes_fase_seg); $valor_texto = $mes > 0 ? 'value_' . $mes : 'value'; $cant_metafisica_planif = $node->field_proyecto_meta_fisica[0][$valor_texto] + $variacion_planificado_mes; $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes_fase_seg); $estado = ((isset($consultaseguimientoactual['segmes']['estado'])) && ($consultaseguimientoactual['segmes']['estado'] > 0) )? $consultaseguimientoactual['segmes']['estado'] : -1; $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes_fase_seg); if ($user->uid == 1) { // Superuser is special. $roles_transition = 'ALL'; } else { $roles_transition = $roles; if ($user->uid == $consultaseguimientoactual['segmes']['uid']&& $consultaseguimientoactual['segmes']['uid'] > 0) {//verificar si es el autor del seguimiento $roles_transition += array('author' => 'author'); } } $transitions = workflow_allowable_transitions($estado, 'to', $roles_transition); $cant_metafisica_ej = isset($consultaseguimientoactual['segmes']['ejecutadometafisica']) ? $consultaseguimientoactual['segmes']['ejecutadometafisica'] : 0; $zonacritica1 = $cant_metafisica_planif ? $cant_metafisica_ej/$cant_metafisica_planif : -1; $porczonacritica1 = $zonacritica1 >= 0 ? ($zonacritica1 * 100) . '%' : $cant_metafisica_ej ? 'N/D' : 'N/A'; $header[] = array('data' => t('Partida')); $header[] = array('data' => t('Asignado')); $header[] = array('data' => t('Comprometido')); $header[] = array('data' => t('Causado')); $header[] = array('data' => t('Pagado')); $header[] = array('data' => t('% de Inversión')); $header[] = array('data' => t('Estatus de la Inversión')); $header[] = array('data' => t('Operación')); $seguimiento_financiero_proyecto = _cargar_totales_seguimiento_aes_delproyecto($node, $mes_fase_seg); foreach ($seguimiento_financiero_proyecto['seg_financiero_aes'] as $acciones_especif) { $content = ''; $row = array(); $causadov = $acciones_especif['totalCausadoAEs']; $asignadov = $acciones_especif['totalAsignadoAEs']; $estatus_ejecucion = _calcularzonacritica($asignadov, $causadov); $porczonacritica = $estatus_ejecucion['porczonacritica']; $textozona = $estatus_ejecucion['textozona']; $colorzona = $estatus_ejecucion['colorzona']; $colorfontzona = $estatus_ejecucion['colorfontzona']; $nodo_ae = node_load($acciones_especif['idnodosAEs']); $transiciones_dispo_ac = _obtener_transiciones_disponibles($nodo_ae, $mes_fase_seg); $row[] = array('data' => $acciones_especif['nombreAEs'],); if (_mes_dentro_de_duracion_ae_proyecto($nodo_ae, $mes_fase_seg)) { $row[] = array('data' => number_format($asignadov, $format_cnt, $format_decimal, $format_miles)); $row[] = array('data' => number_format($causadov, $format_cnt, $format_decimal, $format_miles)); $row[] = array('data' => number_format($acciones_especif['totalCausadoAEs'], $format_cnt, $format_decimal, $format_miles)); $row[] = array('data' => number_format($acciones_especif['totalPagadoAEs'], $format_cnt, $format_decimal, $format_miles)); $row[] = array('data' => $porczonacritica,); $row[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona); //operaciones de la accion especifica if (_accion_especifica_de_proyecto_seguimiento_modificar_mes_access($nodo_ae, $mes_fase_seg)) { if (isset($transiciones_dispo_ac['nombre_estado_actual'])) { $content .= '
' . l(t('Modificar'), 'node/' . $nodo_ae->nid . '/seguimiento_aeproyecto/partidas/' . $mes_fase_seg . '/edit') . ''; } else { $content .= '
'.l(t('Ingresar'), 'node/' . $nodo_ae->nid . '/seguimiento_aeproyecto/partidas/' . $mes_fase_seg . '/edit') . ''; } } $row[] = $content; } else { $row[] = array('data' => '-',); $row[] = array('data' => '-',); $row[] = array('data' => '-',); $row[] = array('data' => '-',); $row[] = array('data' => '-',); $row[] = array('data' => '-',); } $rows[] = $row; } $header2[] = array('data' => t('Planificado')); $header2[] = array('data' => t('Ejecutado')); $header2[] = array('data' => t('% de Logro')); $header2[] = array('data' => t('Estatus de la Inversión')); $rows2 = array(); $planificadov = $cant_metafisica_planif; $ejecutadov = $cant_metafisica_ej; $estatus_ejecucion = _calcularzonacritica($planificadov, $ejecutadov); $porczonacritica = $estatus_ejecucion['porczonacritica']; $textozona = $estatus_ejecucion['textozona']; $colorzona = $estatus_ejecucion['colorzona']; $colorfontzona = $estatus_ejecucion['colorfontzona']; $row2[] = array('data' => $cant_metafisica_planif); $row2[] = array('data' => $cant_metafisica_ej); $row2[] = array('data' => $porczonacritica1,); $row2[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona, 'id' => 'metafisica-inversion-form',); $rows2[] = $row2; //beneficiarios $muestra_beneficiarios = variable_get('proyectos_operativos_muestra_beneficiario', TRUE); if ($muestra_beneficiarios) { $header3 = array(); $header3[] = array('data' => t('Beneficiario')); $rows3 = array(); foreach ($node->field_proyecto_beneficiario as $id => $beneficiarios) { foreach ($consultaseguimientoactual['seguimientos_beneficiarios'] as $seg_benef) { if ($id == $seg_benef['posicion_beneficiario']) { $cantbeneficiario_mes = isset($seg_benef['cant_beneficiarios_mes'])? $seg_benef['cant_beneficiarios_mes']:0; break; } } $row3 = array(); $row3[] = array('data' => $beneficiarios['value']); $row3[] = array('data' => $cantbeneficiario_mes); $rows3[] = $row3; } } $output .= '
Datos del Proyecto Operativo'; $output .= 'Código del Proyecto: ' . $node->field_proyecto_codigo[0]['value'] . '
'; $output .= 'Nombre del Proyecto: ' . $node->titulo_asignado . '
'; $output .= '
'; $output .= '
' . t('Indicadores de Meta Física del Proyecto') . '' . '
' . t('Mes de Seguimiento Actual:') . ' ' . $meses[$mes_fase_seg] . '
' . theme('table', $header2, $rows2) ; $metafisica_con_planificado_cero = $cant_metafisica_planif == 0 ? 1 : 0; if ($metafisica_con_planificado_cero == 1) { $output .= '
Nota: Si desea ingresar una cantidad de ejecutado de meta física mayor que cero, primero debe realizar una reformulación a la meta física de este mes.
'; } $output .= '
' . t('Indicadores Financieros (por Acciones Específicas) del Proyecto') . '' . '
' . t('Mes de Seguimiento Actual:') . ' ' . $meses[$mes_fase_seg] . '
' . theme('table', $header, $rows) ; $output .= '
'; if ($muestra_beneficiarios) { $header3[] = array('data' => t('Cantidad de Beneficiarios durante el mes de ') . $meses[$mes_fase_seg]); $output .= '
' . t('Beneficiarios del Proyecto (Durante la Ejecución)') . '' . '
' . theme('table', $header3, $rows3) ; $output .= '
'; } $output .= '
'; $output .= _mostrarleyendazonacritica(); $output .= '
'; $ac = 0; if (_periodo_de_seguimiento_proyecto_y_aes_esta_activo()) { if (_mes_habilitado_para_seguimiento($mes_fase_seg)) { if (isset($transiciones_dispo['nombre_estado_actual'])) { foreach ($transiciones_dispo['transic'] as $id => $transition) { if (_proyecto_seguimiento_mes_mover_estado_access($node, $mes_fase_seg, $id)) { $output .= '
' . l(t('Enviar Proyecto a @state', array('@state' => $transition)), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg . '/workflow/' . $id) . ''; } } if (_proyecto_operativo_seguimiento_modificar_mes_access($node, $mes_fase_seg)) { $output .= '
' . l(t('Modificar Seguimiento de Proyectos'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit') . ''; } $output .= '
'.l(t('Consultar Historial de Estados del seguimiento del Proyecto'), 'node/' . $node->nid.'/seguimiento_proyecto/' . $mes_fase_seg . '/workflow/historial') . ''; } else { $output .= ''.l(t('Ingresar Seguimiento de Proyectos'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit') . ''; $output .= '
'; } } } return $output; } /** * Implementation of hook_form_alter() */ function seguimiento_proyectos_operativos_form_alter(&$form, $form_state, $form_id) { if ($form_id == 'cambiodeestado_seg_proyecto_paginaconfirmacion_form') { $form['actions']['cancel']['#value'] = l('Cancelar', 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto'); $form['#redirect'][] = 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto'; } if ($form_id == 'seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form') { $form['buttons']['cancel']['#value'] = l('Cancelar', 'proyectosop/' . $form['#node']->field_accion_esp_proyecto[0]['nid'] . '/seguimiento_proyecto'); $form['#redirect'][] = 'proyectosop/' . $form['#node']->field_accion_esp_proyecto[0]['nid'] . '/seguimiento_proyecto'; } if ($form_id == 'seguimiento_proyecto_datospormes_modificar_form') { $form['buttons']['cancel']['#value'] = l('Cancelar', 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto'); $form['#redirect'][] = 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto'; } } /* * Implementation of hook_acciones_obtiene_links_alter() */ function seguimiento_proyectos_operativos_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) { $meses = json_decode(MESES); foreach ($links as $key => $link) { if ($link['class'] == 'proyectos-operativos-faseseguimiento') { $node = node_load($proyecto->nid); if ($node->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($node)) { $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0); $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($node); if ($mes_seguimiento_proyecto_y_aes == ($mes_fase_seg + 1)) { $links[$key]['data'] = l(t('Fase de Seguimiento ') . '(' . $meses[$mes_fase_seg].')', 'node/' . $node->nid . '/fase_de_seguimiento_proyecto_y_aes/mes/' . $mes_fase_seg); } } } } }