Conjunto 5497eef en sipp


Ignorar:
Fecha y hora:
23/10/2015 17:11:14 (hace 9 años)
Autor:
José Gregorio Puentes <jpuentes@…>
Branches:
0.3-stable
Children:
6218ea4
Parents:
4084a77
Mensaje:

Se creo la lista de seguimiento por estado, asi como se corrigieron algunas tabulaciones

Fichero:
1 editado

Leyenda

No modificado
Añadido
Eliminado
  • 0.3-stable-modules/proyectos_operativos_seguimiento/proyecto_operativo_seguimiento.module

    ra0b4327 r5497eef  
    2121  *
    2222  * @author CENDITEL Merida - Ing. Diego Uzcategui
     23  * Modificado por: Ing. Jose Puentes @date 2015-05-19.
    2324  * @date 2013-02-07 // (anno-mes-dia)
    2425  * @version 0.1
     
    3031 */
    3132function proyecto_operativo_seguimiento_help($path, $arg) {
    32     switch ($path) {
    33         case "admin/help/aeproyectoseguimiento":
    34         $output = '<p>'.  t("Este modulo se encarga de la gestión del seguimiento de proyectos operativos") .'</p>';
    35             break;
    36     }
    37     return $output;
     33  switch ($path) {
     34    case "admin/help/aeproyectoseguimiento":
     35      $output = '<p>'.  t("Este modulo se encarga de la gestión del seguimiento de proyectos operativos") .'</p>';
     36    break;
     37  }
     38  return $output;
    3839} // function proyecto_operativo_seguimiento_help
    3940
     
    4243 */
    4344function proyecto_operativo_seguimiento_menu() {
    44     $items = array();
    45  
    46   //----------------------------------------------------------------------------Seguimiento de acciones específicas de proyectos operativos
     45  $items = array();
     46  $items['proyectos_operativos/seguimiento_proyecto'] = array(
     47    'title' => t('Seguimiento de Proyectos'),
     48    'page callback' => 'proyecto_operativo_seguimiento_search_seguimiento_display',
     49    'access arguments' => array('ver planificador'),
     50    'type' => MENU_LOCAL_TASK,
     51  );
     52  $items['proyectos_operativos/seguimiento_proyecto/proyectos'] = array(
     53    'title' => t('Lista de proyectos'),
     54    'page callback' => 'proyecto_operativo_seguimiento_search_seguimiento_display',
     55    'access arguments' => array('ver planificador'),
     56    'type' => MENU_DEFAULT_LOCAL_TASK,
     57  );
     58  $items['proyectos_operativos/seguimiento_proyecto/entramite'] = array(
     59    'title' => t('Lista de proyectos sin Aprobar'),
     60    'page callback' => 'proyecto_operativo_seguimiento_search_seguimiento_display_not_approved',
     61    'access arguments' => array('ver planificador'),
     62    'type' => MENU_LOCAL_TASK,
     63  );
    4764  $items['proyectosop/%node/seguimiento_proyecto'] = array(
    4865    'title' => 'Seguimiento',
     
    5572    'weight' => 2,
    5673  );
    57  
    58  
    5974  $items['node/%node/seguimiento_proyecto'] = array(
    6075    'title' => 'Seguimiento',
     
    6782    'weight' => 2,
    6883  );
    69  
    7084  $items['node/%node/seguimiento_proyecto/mes/%messegaepartida/edit'] = array(
    7185    'title' => 'Seguimiento',
     
    7892    'weight' => 2,
    7993  );
    80  
    81   //----------------------------------------------------------------------------workflow
     94  //------------------workflow
    8295  $items['node/%node/seguimiento_proyecto/%messegaepartida/workflow/%seg_proyecto_y_aes_wk_menu'] = array(
    8396    'title' => 'Seguimiento',
     
    90103    'weight' => 2,
    91104  );
    92  
    93105  $items['node/%node/seguimiento_proyecto/%messegaepartida/workflow/historial'] = array(
    94106    'title' => 'Historial Seguimiento',
     
    101113    'weight' => 2,
    102114  );
    103  
    104   //----------------------------------------------------------------------------Fase de Seguimiento de proyectos operativos y sus acciones especificas
     115  //-------------------Fase de Seguimiento de proyectos operativos y sus acciones especificas
    105116  $items['node/%node/fase_de_seguimiento_proyecto_y_aes/mes/%messegaepartida'] = array(
    106117    'title' => 'Seguimiento',
     
    113124    'weight' => 2,
    114125  );
    115 
    116     return $items;
     126  return $items;
    117127}
    118128
     
    131141 */
    132142function _proyecto_operativo_seguimiento_modificar_mes_access($node, $mes=0) {
    133 
    134143  return ((_es_tipo_proyectooperativo($node))&&(_mes_dentro_de_duracion_proyecto($node, $mes))&&(_mes_habilitado_para_seguimiento($mes))&&(_anno_habilitado_para_seg($node))&&(_periodo_de_seguimiento_proyecto_y_aes_esta_activo())&&_es_usuario_autenticado() &&(!_seg_esta_aprobado_proyecto($node, $mes)) &&(_estado_seg_en_nivel_de_usuario_proyecto($node, $mes)) &&(_es_elmismo_ente_proyecto_y_usuario_proyecto($node)) &&_proyectooperativo_esta_aprobado($node));
    135144} // function _proyecto_operativo_seguimiento_modificar_mes_access
     
    149158} // function _fasedeseguimiento_proyecto_y_ae_access
    150159
    151 //**************************************************************************************************************************************************
    152 
    153160/**
    154161 * verificar que el nodo que desea se evaluado sea de tipo 'proyectos_operativos'
     
    162169 */
    163170function _proyectooperativo_esta_aprobado($node) {
    164  
    165171  $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL);
    166  
    167   if($node->type =='proyectos_operativos'){
     172  if ($node->type =='proyectos_operativos') {
    168173    return ($node->_workflow == $estado_aprobado); 
    169   }elseif($node->type =='accion_especifica'){
     174  }
     175  elseif($node->type =='accion_especifica'){
    170176    $nodo_proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']);
    171177    return ($nodo_proyecto->_workflow == $estado_aprobado);
     
    178184 */
    179185function _mes_dentro_de_duracion_proyecto($node, $mes=0) {
    180  
    181186  $mes = $mes+1;//colocando parametro entre 1 y 12
    182187  $resp = FALSE;
    183  
    184188  //Proyecto
    185   if ($node->type == 'proyectos_operativos'){
     189  if ($node->type == 'proyectos_operativos') {
    186190    $fechayhora_inicio = $node->field_proyecto_fecha_i[0]['value'];
    187191    list($fecha_inicio, $hora_inicio) = split('[ ]', $fechayhora_inicio);
     
    194198    $m_fin = intval($mes_fin);
    195199   
    196     if(($m_inicio<=$mes)&&($m_fin>=$mes)){
     200    if (($m_inicio<=$mes) && ($m_fin>=$mes)) {
    197201      $resp = TRUE;
    198     }else{
     202    }
     203    else{
    199204      $resp = FALSE;
    200205    }
    201    
    202   }
    203      
     206  }
    204207  return $resp;
    205208}
    206209
    207210function _permiso_para_realizar_transicion_estado_proyecto($node, $mes = 0, $estadonuevo=0){
    208  
    209211  $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes);
    210  
    211212  //estado
    212213  $estado = ((isset($consultaseguimientoactual['segmes']['estado'])) && ($consultaseguimientoactual['segmes']['estado'] > 0) )? $consultaseguimientoactual['segmes']['estado'] : -1;
    213  
    214   if($estado == $estadonuevo){
     214  if ($estado == $estadonuevo) {
    215215    return FALSE;
    216216  }
    217  
    218217  $states = _obtener_estados_seguimiento_mes();
    219  
    220218  $estado_aprobado = variable_get('acciones_centralizadas_state_aprobado', NULL);
    221219  $estado_naprobado = variable_get('acciones_centralizadas_state_naprobado', NULL);
     
    228226    // Superuser is special.
    229227    $roles_transition = 'ALL';
    230   }else {
     228  }
     229  else {
    231230    $roles_transition = $roles;
    232231    if ($user->uid == $consultaseguimientoactual['segmes']['uid']&& $consultaseguimientoactual['segmes']['uid'] > 0) {//verificar si es el autor del seguimiento
     
    234233    }
    235234  }
    236  
    237235  $transitions = array();
    238236  if ($states['wid']) {
    239237    $transitions = workflow_allowable_transitions($estado, 'to', $roles_transition);
    240238  }
    241 
    242239  if (isset($transitions[$estadonuevo])) {
    243240    return TRUE;
     
    248245
    249246function _seg_esta_aprobado_proyecto($node, $mes=0){
    250  
    251247  $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes);
    252248  $estado = $transiciones_dispo['estado_actual'];
    253  
    254249  $estado_aprobado = variable_get('acciones_centralizadas_state_aprobado', NULL);
    255 
    256250  if ($estado == $estado_aprobado) {
    257251    return TRUE;
     
    263257 * verificar nivel de usuario para modificar
    264258 */
    265 
    266259function _estado_seg_en_nivel_de_usuario_proyecto($node, $mes=0){
    267  
    268260  //calcular el estado
    269261  $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes);
    270262  $nivel_usuario = _obtener_nivel_usuario_segun_estado($transiciones_dispo['nombre_estado_actual']);
    271  
    272263  $rol_ente_usuario = _obtener_rol_y_ente_de_usuario();
    273  
    274   if(($transiciones_dispo['estado_actual'] < 0)&&($rol_ente_usuario['rol']=='enlace'||$rol_ente_usuario['rol']=='administrador')){
     264  if (($transiciones_dispo['estado_actual'] < 0)&&($rol_ente_usuario['rol']=='enlace'||$rol_ente_usuario['rol']=='administrador')){
    275265    return true; 
    276266  }
    277 
    278   if(($nivel_usuario == $rol_ente_usuario['rol'])||$rol_ente_usuario['rol']=='administrador'){//nivel de usuario == rol actor
     267  if (($nivel_usuario == $rol_ente_usuario['rol'])||$rol_ente_usuario['rol']=='administrador'){//nivel de usuario == rol actor
    279268    return TRUE;
    280269  }
     
    285274 * verificar que sea el mismo ente, tanto para el proyecto como para el usuario (si es enlace o supervisor)
    286275 */
    287 
    288 function _es_elmismo_ente_proyecto_y_usuario_proyecto($node){
    289  
     276function _es_elmismo_ente_proyecto_y_usuario_proyecto($node) {
    290277  $rol_ente_usuario = _obtener_rol_y_ente_de_usuario();
    291 
    292   if($rol_ente_usuario['rol']=='enlace'||$rol_ente_usuario['rol']=='supervisor'){//enlace o supervisor
     278  if ($rol_ente_usuario['rol']=='enlace'||$rol_ente_usuario['rol']=='supervisor') {//enlace o supervisor
    293279    //$nodo_proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']);
    294     if($rol_ente_usuario['id_ente'] == $node->field_proyecto_ente[0]['nid']){//deben ser del mismo ente que el proyecto
     280    if ($rol_ente_usuario['id_ente'] == $node->field_proyecto_ente[0]['nid']) {//deben ser del mismo ente que el proyecto
    295281      return TRUE;
    296282    }else{
     
    321307 */
    322308function proyecto_operativo_seguimiento_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) {
    323  
    324     $meses = array(
    325       0 => t('January'),
    326       1 => t('February'),
    327       2 => t('March'),
    328       3 => t('April'),
    329       4 => t('May'),
    330       5 => t('June'),
    331       6 => t('July'),
    332       7 => t('August'),
    333       8 => t('September'),
    334       9 => t('Octuber'),
    335       10 => t('November'),
    336       11 => t('December'),
    337     );
    338  
     309  $meses = array(
     310    0 => t('January'),
     311    1 => t('February'),
     312    2 => t('March'),
     313    3 => t('April'),
     314    4 => t('May'),
     315    5 => t('June'),
     316    6 => t('July'),
     317    7 => t('August'),
     318    8 => t('September'),
     319    9 => t('Octuber'),
     320    10 => t('November'),
     321    11 => t('December'),
     322  );
    339323  $nodo_proyecto = node_load($proyecto->nid);
    340324
    341   if($nodo_proyecto->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($nodo_proyecto)){
     325  if ($nodo_proyecto->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($nodo_proyecto)) {
    342326    $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
    343327    $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($nodo_proyecto);
    344 //echo $mes_seguimiento_proyecto_y_aes . '-' . $mes_fase_seg . '<br>';
    345328    if ($mes_seguimiento_proyecto_y_aes == ($mes_fase_seg + 1)) {
    346329      $links[] = array(
     
    349332      );
    350333    }
    351 
    352   }
    353 }
     334  }
     335}
     336
     337/**
     338 * Muestra la lista de los Proyectos que se encuentran en fase de seguimiento
     339 */
     340function proyecto_operativo_seguimiento_search_seguimiento_display() {
     341  drupal_set_title(t("Lista de los proyectos en fase de Seguimiento"));
     342  $ouput = '';
     343  $sql = '';
     344  $sql_count = '';
     345  global $user;
     346  $format_number = array(
     347    'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
     348    'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
     349    'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
     350  );
     351  $roles = array_keys($user->roles);
     352  //roles de los usuarios
     353  $rol_control = variable_get('ActorPlanificadorMacro', 2);
     354  $rol_supervisor = variable_get('ActorPlanificadorMicro', 2);
     355  $rol_enlace = variable_get('ActorPlanificadorEnlace', 2);
     356  $rows = array();
     357  $i = 1;
     358  $meses = array(
     359    0 => t('January'),
     360    1 => t('February'),
     361    2 => t('March'),
     362    3 => t('April'),
     363    4 => t('May'),
     364    5 => t('June'),
     365    6 => t('July'),
     366    7 => t('August'),
     367    8 => t('September'),
     368    9 => t('Octuber'),
     369    10 => t('November'),
     370    11 => t('December'),
     371  );
     372  $header = array();
     373  $cab = 6;
     374  $step = 10;
     375  $states = array();
     376  $first_state = 0;
     377  $ente = usuario_tiene_ente($user->uid);
     378  //ahno y mes valido para el seguimiento
     379  $anho = variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
     380  $mes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
     381  $estado_naprobado = variable_get('acciones_centralizadas_state_naprobado', NULL);
     382  $estado_aprobado = variable_get('acciones_centralizadas_state_aprobado', NULL);
     383  if (!user_access('admin planificador') && $user->entes) {
     384    $inputs[] = $estado_naprobado;
     385    $inputs[] = $mes - 1; //se resta uno ya que el array de los meses empiesa en cero
     386    $inputs[] = $anho;
     387    $sql .= 'SELECT se.*, u.name, u.uid FROM {seguimiento_proyecto} AS se INNER JOIN {users} u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND po.ente = %d AND se.mes = %d AND po.year = %d ORDER BY se.id_seg DESC';
     388    $sql_count .= 'SELECT COUNT(se.nid) FROM {seguimiento_proyecto} se INNER JOIN {users} u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND po.ente = %d AND se.mes = %d AND po.year = %d';
     389  }
     390  elseif (user_access('admin planificador')) {
     391    $inputs[] = $estado_naprobado;
     392    $inputs[] = $mes - 1; //se resta uno ya que el array de los meses empiesa en cero
     393    $inputs[] = $anho;
     394    $sql .= 'SELECT se.*, u.name, u.uid FROM {seguimiento_proyecto} AS se INNER JOIN {users} AS u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND se.mes = %d AND po.year = %d ORDER BY se.id_seg DESC';
     395
     396   // $sql_count = "SELECT COUNT(se.nid) FROM {seguimiento_proyecto} se INNER JOIN {users} u ON u.uid = se.uid WHERE se.estado <> 17 AND se.estado <> 15 AND se.mes = 0";
     397
     398    $sql_count .= 'SELECT COUNT(se.nid) FROM {seguimiento_proyecto} AS se INNER JOIN {users} AS u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND se.mes = %d AND po.year = %d';
     399  }
     400  $current_time = time();
     401  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
     402  $tipo_plan = 'proyecto_y_accionesespecificas_seguimiento';
     403  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, 2);
     404  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
     405    $fecha = TRUE;
     406  }
     407  if ($fecha) {
     408    if ($ente->nid) {
     409      $fecha = TRUE;
     410      if (user_access('admin planificador')) {
     411        $fecha = FALSE;
     412      }
     413    }
     414  }
     415  $wid = workflow_get_workflow_for_type('accion_centralizada');
     416  if ($wid){
     417    $states = workflow_get_states($wid);
     418  }
     419  $first_state = 0;
     420  if ($wid) {
     421    $first_state = _workflow_creation_state($wid);
     422  }
     423  $enlaces_estados = TRUE;
     424  if ($ente->nid && !user_access('admin planificador')) {
     425    $enlaces_estados = FALSE;
     426  }
     427  $header[] = array('data' => t('Ente'));
     428  $header[] = array('data' => t('Proyecto'));
     429  $header[] = array('data' => t('Estado'));
     430  $header[] = array('data' => t('Usuario'));
     431  $header[] = array('data' => t('Meta Fisica Ejecutada'));
     432  $header[] = array('data' => t('Acción'));
     433  $header[] = array('data' => t(''));
     434  $result = pager_query($sql, $step, 0, $sql_count, $inputs);
     435  while ($proyecto = db_fetch_object($result)) {
     436    $node = node_load($proyecto->nid);
     437    $editar = ($proyecto->estado == $estado_aprobado);
     438    $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($node);
     439    $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes);
     440    $transiciones_dispo = array();
     441    $row = array();
     442    $links = array();
     443    if ($user->uid == 1) {
     444      // Superuser is special.
     445      $roles_transition = 'ALL';
     446    }
     447    else {
     448      $roles_transition = $roles;
     449      if ($user->uid == $consultaseguimientoactual['segmes']['uid']&& $consultaseguimientoactual['segmes']['uid'] > 0) {//verificar si es el autor del seguimiento
     450        $roles_transition += array('author' => 'author');
     451      }
     452    }
     453    $transitions = array();
     454    if ($wid) {
     455      $transitions = workflow_allowable_transitions($proyecto->estado, 'to', $roles_transition);
     456    }
     457    unset($transitions[$proyecto->estado]);
     458    $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes);
     459    $nivel_usuario = _obtener_nivel_usuario_segun_estado($transiciones_dispo['nombre_estado_actual']);
     460    if (_periodo_de_seguimiento_proyecto_y_aes_esta_activo()) {
     461      if (($node->anhoproyectos_operativos == $anho) && ($proyecto->mes == $mes_fase_seg)) {
     462        $name_w = workflow_get_state_name($proyecto->estado);
     463        $transiciones_dispo[$proyecto->estado] = $name_w;
     464        $color = variable_get('acciones_centralizadas_state_color_' . $proyecto->estado, array());
     465        $estado = isset($states[$proyecto->estado]) ? $states[$proyecto->estado] : 'N/A';
     466        $ente = node_load($node->field_proyecto_ente[0]);
     467        //columnas de la tabla
     468        $row[] = array('data' => $ente->title, 'style' => 'background:' . $color, );
     469        $row[] = array('data' => l($node->title, 'node/' . $node->nid), 'style' => 'background:' . $color, );
     470        $row[] = array('data' => $estado, 'style' => 'background:' . $color, );
     471        $row[] = array('data' => l($proyecto->name, 'user/' . $proyecto->uid), 'style' => 'background:' . $color,);
     472        $row[] = array('data' => $proyecto->ejecutadometafisica, 'style' => 'background:' . $color, );
     473        if ($mes == ($mes_fase_seg + 1)) {
     474          $links[] = array(
     475            'data' => '<b>' . l(t('Consultar'), 'node/' . $node->nid . "/fase_de_seguimiento_proyecto_y_aes/mes/" . $mes_fase_seg, array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>',
     476            'class' => 'proyectos-operativos-faseseguimiento',
     477          );
     478        }
     479        if (user_access('admin planificador')) {
     480          if (count($transitions) && $fecha && $proyecto->estado != $estado_naprobado &&  $proyecto->estado != $estado_aprobado && $proyecto->id_seg) {
     481            $links[] = '<b>' . l(t('Modificar'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit', array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     482          }
     483          if ($enlaces_estados && count($transitions) && $proyecto->estado != $estado_aprobado) {
     484            foreach ($transitions as $id => $transition) {
     485              $links[] = '<b>' . l(t('Enviar a @state', array('@state' => $transition)), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg. '/workflow/' . $id, array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     486           }
     487         }
     488       }
     489       if ((in_array($rol_enlace, array_keys($user->roles))) || (in_array($rol_supervisor, array_keys($user->roles)))) {
     490         if (count($transitions) && $proyecto->estado != $estado_aprobado) {
     491           foreach ($transitions as $id => $transition) {
     492             $links[] = '<b>' . l(t('Enviar a @state', array('@state' => $transition)), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg. '/workflow/' . $id, array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     493           }
     494         }
     495         if (count($transitions) && $fecha && $proyecto->estado != $estado_naprobado &&  $proyecto->estado != $estado_aprobado && $proyecto->id_seg) {
     496           $links[] = '<b>' . l(t('Modificar'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit', array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     497         }
     498       }
     499       if (isset($transiciones_dispo[$proyecto->estado])) {
     500         $links[] = '<b>' . l(t('Consultar Historial de Estados'), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg . '/workflow/historial', array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     501       }
     502       $row[] = array('data' => theme('item_list', $links),  'style' => 'background:' . $color,);
     503       if (isset($transiciones_dispo[$proyecto->estado])) {
     504         $colorSemaforo =  _calcular_color_semaforo_estado_actual($transiciones_dispo[$proyecto->estado]);
     505         $row[] = array('data' => '•', 'style' => 'font-weight: bold;font-size: 35px;text-align:center; color:' . $colorSemaforo);
     506       }
     507     }
     508    }
     509    $rows[] = $row;
     510  }
     511  if (!count($rows)) {
     512    $row[] = array('data' => 'No existen proyectos en fase de seguimiento sin aprobar', 'colspan' => 9);
     513    $rows[] = $row;
     514  }
     515  $output = '';
     516  $output .= theme('table', $header, $rows);
     517  $output .= theme('pager', NULL);
     518  return $output;
     519}
     520
     521
     522/**
     523 * Muestra la lista de los Proyectos que se encuentran en fase de seguimiento
     524 */
     525function proyecto_operativo_seguimiento_search_seguimiento_display_not_approved() {
     526  drupal_set_title(t("Lista de proyectos en fase de Seguimiento sin Aprobar"));
     527  $ouput = '';
     528  $sql = '';
     529  $sql_count = '';
     530  global $user;
     531  $format_number = array(
     532    'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
     533    'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
     534    'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
     535  );
     536  $roles = array_keys($user->roles);
     537  //roles de los usuarios
     538  $rol_control = variable_get('ActorPlanificadorMacro', 2);
     539  $rol_supervisor = variable_get('ActorPlanificadorMicro', 2);
     540  $rol_enlace = variable_get('ActorPlanificadorEnlace', 2);
     541  $rows = array();
     542  $i = 1;
     543  $meses = array(
     544    0 => t('January'),
     545    1 => t('February'),
     546    2 => t('March'),
     547    3 => t('April'),
     548    4 => t('May'),
     549    5 => t('June'),
     550    6 => t('July'),
     551    7 => t('August'),
     552    8 => t('September'),
     553    9 => t('Octuber'),
     554    10 => t('November'),
     555    11 => t('December'),
     556  );
     557  $header = array();
     558  $cab = 6;
     559  $step = 10;
     560  $states = array();
     561  $first_state = 0;
     562  $ente = usuario_tiene_ente($user->uid);
     563  //ahno y mes valido para el seguimiento
     564  $anho = variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0);
     565  $mes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
     566  $estado_naprobado = variable_get('acciones_centralizadas_state_naprobado', NULL);
     567  $estado_aprobado = variable_get('acciones_centralizadas_state_aprobado', NULL);
     568  if (!user_access('admin planificador') && $user->entes) {
     569    $inputs[] = $estado_naprobado;
     570    $inputs[] = $estado_aprobado;
     571    $inputs[] = $mes - 1; //se resta uno ya que el array de los meses empiesa en cero
     572    $inputs[] = $anho;
     573    $sql .= 'SELECT se.*, u.name, u.uid FROM {seguimiento_proyecto} AS se INNER JOIN {users} u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND se.estado <> %d AND po.ente = %d AND se.mes = %d AND po.year = %d ORDER BY se.id_seg DESC';
     574    $sql_count .= 'SELECT COUNT(se.nid) FROM {seguimiento_proyecto} se INNER JOIN {users} u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND se.estado <> %d AND po.ente = %d AND se.mes = %d AND po.year = %d';
     575  }
     576  elseif (user_access('admin planificador')) {
     577    $inputs[] = $estado_naprobado;
     578    $inputs[] = $estado_aprobado;
     579    $inputs[] = $mes - 1; //se resta uno ya que el array de los meses empiesa en cero
     580    $inputs[] = $anho;
     581    $sql .= 'SELECT se.*, u.name, u.uid FROM {seguimiento_proyecto} AS se INNER JOIN {users} AS u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND se.estado <> %d AND se.mes = %d AND po.year = %d ORDER BY se.id_seg DESC';
     582
     583   // $sql_count = "SELECT COUNT(se.nid) FROM {seguimiento_proyecto} se INNER JOIN {users} u ON u.uid = se.uid WHERE se.estado <> 17 AND se.estado <> 15 AND se.mes = 0";
     584
     585    $sql_count .= 'SELECT COUNT(se.nid) FROM {seguimiento_proyecto} AS se INNER JOIN {users} AS u ON u.uid = se.uid INNER JOIN {proyectos_operativos} AS po ON se.nid = po.nid LEFT JOIN {seguimiento_aeproyecto} AS ac ON se.id_seg = ac.id_seg WHERE se.estado <> %d AND se.estado <> %d AND se.mes = %d AND po.year = %d';
     586  }
     587  $current_time = time();
     588  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador->tipo);
     589  $tipo_plan = 'proyecto_y_accionesespecificas_seguimiento';
     590  $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, 2);
     591  if ($mi_fecha[1]  + 86399 > $current_time && $mi_fecha[0] < $current_time) {
     592    $fecha = TRUE;
     593  }
     594  if ($fecha) {
     595    if ($ente->nid) {
     596      $fecha = TRUE;
     597      if (user_access('admin planificador')) {
     598        $fecha = FALSE;
     599      }
     600    }
     601  }
     602  $wid = workflow_get_workflow_for_type('accion_centralizada');
     603  if ($wid){
     604    $states = workflow_get_states($wid);
     605  }
     606  $first_state = 0;
     607  if ($wid) {
     608    $first_state = _workflow_creation_state($wid);
     609  }
     610  $enlaces_estados = TRUE;
     611  if ($ente->nid && !user_access('admin planificador')) {
     612    $enlaces_estados = FALSE;
     613  }
     614  $header[] = array('data' => t('Ente'));
     615  $header[] = array('data' => t('Proyecto'));
     616  $header[] = array('data' => t('Estado'));
     617  $header[] = array('data' => t('Usuario'));
     618  $header[] = array('data' => t('Meta Fisica Ejecutada'));
     619  $header[] = array('data' => t('Acción'));
     620  $header[] = array('data' => t(''));
     621  $result = pager_query($sql, $step, 0, $sql_count, $inputs);
     622  while ($proyecto = db_fetch_object($result)) {
     623    $node = node_load($proyecto->nid);
     624    $editar = ($proyecto->estado == $estado_aprobado);
     625    $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($node);
     626    $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes);
     627    $transiciones_dispo = array();
     628    $row = array();
     629    $links = array();
     630    if ($user->uid == 1) {
     631      // Superuser is special.
     632      $roles_transition = 'ALL';
     633    }
     634    else {
     635      $roles_transition = $roles;
     636      if ($user->uid == $consultaseguimientoactual['segmes']['uid']&& $consultaseguimientoactual['segmes']['uid'] > 0) {//verificar si es el autor del seguimiento
     637        $roles_transition += array('author' => 'author');
     638      }
     639    }
     640    $transitions = array();
     641    if ($wid) {
     642      $transitions = workflow_allowable_transitions($proyecto->estado, 'to', $roles_transition);
     643    }
     644    unset($transitions[$proyecto->estado]);
     645    $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes);
     646    $nivel_usuario = _obtener_nivel_usuario_segun_estado($transiciones_dispo['nombre_estado_actual']);
     647    if (_periodo_de_seguimiento_proyecto_y_aes_esta_activo()) {
     648      if (($node->anhoproyectos_operativos == $anho) && ($proyecto->mes == $mes_fase_seg)) {
     649        $name_w = workflow_get_state_name($proyecto->estado);
     650        $transiciones_dispo[$proyecto->estado] = $name_w;
     651        $color = variable_get('acciones_centralizadas_state_color_' . $proyecto->estado, array());
     652        $estado = isset($states[$proyecto->estado]) ? $states[$proyecto->estado] : 'N/A';
     653        //columnas de la tabla
     654        $ente = node_load($node->field_proyecto_ente[0]);
     655        //columnas de la tabla
     656        $row[] = array('data' => $ente->title, 'style' => 'background:' . $color, );
     657        $row[] = array('data' => l($node->title, 'node/' . $node->nid), 'style' => 'background:' . $color, );
     658        $row[] = array('data' => $estado, 'style' => 'background:' . $color, );
     659        $row[] = array('data' => l($proyecto->name, 'user/' . $proyecto->uid), 'style' => 'background:' . $color,);
     660        $row[] = array('data' => $proyecto->ejecutadometafisica, 'style' => 'background:' . $color, );
     661        if ($mes == ($mes_fase_seg + 1)) {
     662          $links[] = array(
     663            'data' => '<b>' . l(t('Consultar'), 'node/' . $node->nid . "/fase_de_seguimiento_proyecto_y_aes/mes/" . $mes_fase_seg, array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>',
     664            'class' => 'proyectos-operativos-faseseguimiento',
     665          );
     666        }
     667        if (user_access('admin planificador')) {
     668          if (count($transitions) && $fecha && $proyecto->estado != $estado_naprobado &&  $proyecto->estado != $estado_aprobado && $proyecto->id_seg) {
     669            $links[] = '<b>' . l(t('Modificar'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit', array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     670          }
     671          if ($enlaces_estados && count($transitions) && $proyecto->estado != $estado_aprobado) {
     672            foreach ($transitions as $id => $transition) {
     673              $links[] = '<b>' . l(t('Enviar a @state', array('@state' => $transition)), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg. '/workflow/' . $id, array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     674           }
     675         }
     676       }
     677       if ((in_array($rol_enlace, array_keys($user->roles))) || (in_array($rol_supervisor, array_keys($user->roles)))) {
     678         if (count($transitions) && $proyecto->estado != $estado_aprobado) {
     679           foreach ($transitions as $id => $transition) {
     680             $links[] = '<b>' . l(t('Enviar a @state', array('@state' => $transition)), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg. '/workflow/' . $id, array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     681           }
     682         }
     683         if (count($transitions) && $fecha && $proyecto->estado != $estado_naprobado &&  $proyecto->estado != $estado_aprobado && $proyecto->id_seg) {
     684           $links[] = '<b>' . l(t('Modificar'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit', array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     685         }
     686       }
     687       if (isset($transiciones_dispo[$proyecto->estado])) {
     688         $links[] = '<b>' . l(t('Consultar Historial de Estados'), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg . '/workflow/historial', array('html' => true, 'query' => 'destination=proyectos_operativos/seguimiento_proyecto')) . '</b>';
     689       }
     690       $row[] = array('data' => theme('item_list', $links),  'style' => 'background:' . $color,);
     691       if (isset($transiciones_dispo[$proyecto->estado])) {
     692         $colorSemaforo =  _calcular_color_semaforo_estado_actual($transiciones_dispo[$proyecto->estado]);
     693         $row[] = array('data' => '•', 'style' => 'font-weight: bold;font-size: 35px;text-align:center; color:' . $colorSemaforo);
     694       }
     695     }
     696    }
     697    $rows[] = $row;
     698  }
     699  if (!count($rows)) {
     700    $row[] = array('data' => 'No existen proyectos en fase de seguimiento sin aprobar', 'colspan' => 9);
     701    $rows[] = $row;
     702  }
     703  $output = '';
     704  $output .= theme('table', $header, $rows);
     705  $output .= theme('pager', NULL);
     706  return $output;
     707}
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.