Conjunto 5497eef en sipp
- Fecha y hora:
- 23/10/2015 17:11:14 (hace 9 años)
- Branches:
- 0.3-stable
- Children:
- 6218ea4
- Parents:
- 4084a77
- Fichero:
-
- 1 editado
Leyenda
- No modificado
- Añadido
- Eliminado
-
0.3-stable-modules/proyectos_operativos_seguimiento/proyecto_operativo_seguimiento.module
ra0b4327 r5497eef 21 21 * 22 22 * @author CENDITEL Merida - Ing. Diego Uzcategui 23 * Modificado por: Ing. Jose Puentes @date 2015-05-19. 23 24 * @date 2013-02-07 // (anno-mes-dia) 24 25 * @version 0.1 … … 30 31 */ 31 32 function proyecto_operativo_seguimiento_help($path, $arg) { 32 33 34 35 36 37 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; 38 39 } // function proyecto_operativo_seguimiento_help 39 40 … … 42 43 */ 43 44 function 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 ); 47 64 $items['proyectosop/%node/seguimiento_proyecto'] = array( 48 65 'title' => 'Seguimiento', … … 55 72 'weight' => 2, 56 73 ); 57 58 59 74 $items['node/%node/seguimiento_proyecto'] = array( 60 75 'title' => 'Seguimiento', … … 67 82 'weight' => 2, 68 83 ); 69 70 84 $items['node/%node/seguimiento_proyecto/mes/%messegaepartida/edit'] = array( 71 85 'title' => 'Seguimiento', … … 78 92 'weight' => 2, 79 93 ); 80 81 //----------------------------------------------------------------------------workflow 94 //------------------workflow 82 95 $items['node/%node/seguimiento_proyecto/%messegaepartida/workflow/%seg_proyecto_y_aes_wk_menu'] = array( 83 96 'title' => 'Seguimiento', … … 90 103 'weight' => 2, 91 104 ); 92 93 105 $items['node/%node/seguimiento_proyecto/%messegaepartida/workflow/historial'] = array( 94 106 'title' => 'Historial Seguimiento', … … 101 113 'weight' => 2, 102 114 ); 103 104 //----------------------------------------------------------------------------Fase de Seguimiento de proyectos operativos y sus acciones especificas 115 //-------------------Fase de Seguimiento de proyectos operativos y sus acciones especificas 105 116 $items['node/%node/fase_de_seguimiento_proyecto_y_aes/mes/%messegaepartida'] = array( 106 117 'title' => 'Seguimiento', … … 113 124 'weight' => 2, 114 125 ); 115 116 return $items; 126 return $items; 117 127 } 118 128 … … 131 141 */ 132 142 function _proyecto_operativo_seguimiento_modificar_mes_access($node, $mes=0) { 133 134 143 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)); 135 144 } // function _proyecto_operativo_seguimiento_modificar_mes_access … … 149 158 } // function _fasedeseguimiento_proyecto_y_ae_access 150 159 151 //**************************************************************************************************************************************************152 153 160 /** 154 161 * verificar que el nodo que desea se evaluado sea de tipo 'proyectos_operativos' … … 162 169 */ 163 170 function _proyectooperativo_esta_aprobado($node) { 164 165 171 $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL); 166 167 if($node->type =='proyectos_operativos'){ 172 if ($node->type =='proyectos_operativos') { 168 173 return ($node->_workflow == $estado_aprobado); 169 }elseif($node->type =='accion_especifica'){ 174 } 175 elseif($node->type =='accion_especifica'){ 170 176 $nodo_proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']); 171 177 return ($nodo_proyecto->_workflow == $estado_aprobado); … … 178 184 */ 179 185 function _mes_dentro_de_duracion_proyecto($node, $mes=0) { 180 181 186 $mes = $mes+1;//colocando parametro entre 1 y 12 182 187 $resp = FALSE; 183 184 188 //Proyecto 185 if ($node->type == 'proyectos_operativos') {189 if ($node->type == 'proyectos_operativos') { 186 190 $fechayhora_inicio = $node->field_proyecto_fecha_i[0]['value']; 187 191 list($fecha_inicio, $hora_inicio) = split('[ ]', $fechayhora_inicio); … … 194 198 $m_fin = intval($mes_fin); 195 199 196 if (($m_inicio<=$mes)&&($m_fin>=$mes)){200 if (($m_inicio<=$mes) && ($m_fin>=$mes)) { 197 201 $resp = TRUE; 198 }else{ 202 } 203 else{ 199 204 $resp = FALSE; 200 205 } 201 202 } 203 206 } 204 207 return $resp; 205 208 } 206 209 207 210 function _permiso_para_realizar_transicion_estado_proyecto($node, $mes = 0, $estadonuevo=0){ 208 209 211 $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes); 210 211 212 //estado 212 213 $estado = ((isset($consultaseguimientoactual['segmes']['estado'])) && ($consultaseguimientoactual['segmes']['estado'] > 0) )? $consultaseguimientoactual['segmes']['estado'] : -1; 213 214 if($estado == $estadonuevo){ 214 if ($estado == $estadonuevo) { 215 215 return FALSE; 216 216 } 217 218 217 $states = _obtener_estados_seguimiento_mes(); 219 220 218 $estado_aprobado = variable_get('acciones_centralizadas_state_aprobado', NULL); 221 219 $estado_naprobado = variable_get('acciones_centralizadas_state_naprobado', NULL); … … 228 226 // Superuser is special. 229 227 $roles_transition = 'ALL'; 230 }else { 228 } 229 else { 231 230 $roles_transition = $roles; 232 231 if ($user->uid == $consultaseguimientoactual['segmes']['uid']&& $consultaseguimientoactual['segmes']['uid'] > 0) {//verificar si es el autor del seguimiento … … 234 233 } 235 234 } 236 237 235 $transitions = array(); 238 236 if ($states['wid']) { 239 237 $transitions = workflow_allowable_transitions($estado, 'to', $roles_transition); 240 238 } 241 242 239 if (isset($transitions[$estadonuevo])) { 243 240 return TRUE; … … 248 245 249 246 function _seg_esta_aprobado_proyecto($node, $mes=0){ 250 251 247 $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes); 252 248 $estado = $transiciones_dispo['estado_actual']; 253 254 249 $estado_aprobado = variable_get('acciones_centralizadas_state_aprobado', NULL); 255 256 250 if ($estado == $estado_aprobado) { 257 251 return TRUE; … … 263 257 * verificar nivel de usuario para modificar 264 258 */ 265 266 259 function _estado_seg_en_nivel_de_usuario_proyecto($node, $mes=0){ 267 268 260 //calcular el estado 269 261 $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes); 270 262 $nivel_usuario = _obtener_nivel_usuario_segun_estado($transiciones_dispo['nombre_estado_actual']); 271 272 263 $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')){ 275 265 return true; 276 266 } 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 279 268 return TRUE; 280 269 } … … 285 274 * verificar que sea el mismo ente, tanto para el proyecto como para el usuario (si es enlace o supervisor) 286 275 */ 287 288 function _es_elmismo_ente_proyecto_y_usuario_proyecto($node){ 289 276 function _es_elmismo_ente_proyecto_y_usuario_proyecto($node) { 290 277 $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 293 279 //$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 proyecto280 if ($rol_ente_usuario['id_ente'] == $node->field_proyecto_ente[0]['nid']) {//deben ser del mismo ente que el proyecto 295 281 return TRUE; 296 282 }else{ … … 321 307 */ 322 308 function 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 ); 339 323 $nodo_proyecto = node_load($proyecto->nid); 340 324 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)) { 342 326 $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0); 343 327 $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($nodo_proyecto); 344 //echo $mes_seguimiento_proyecto_y_aes . '-' . $mes_fase_seg . '<br>';345 328 if ($mes_seguimiento_proyecto_y_aes == ($mes_fase_seg + 1)) { 346 329 $links[] = array( … … 349 332 ); 350 333 } 351 352 } 353 } 334 } 335 } 336 337 /** 338 * Muestra la lista de los Proyectos que se encuentran en fase de seguimiento 339 */ 340 function 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 */ 525 function 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.