source: sipp/0.3-stable-modules/seguimiento_proyectos_operativos/seguimiento_proyectos_operativos.module @ 0137be0

0.3-stable
Last change on this file since 0137be0 was 4e57309, checked in by José Gregorio Puentes <jpuentes@…>, 9 años ago

se agrego la pagina de acciones

  • Propiedad mode establecida a 100755
File size: 14.4 KB
Línea 
1<?php
2 /**
3  * Modulo que mejora la visualizacion del seguimiento de las acciones especificas y los proyectos
4  * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana
5  * @file seguimiento_proyectos_operativos.module
6  * Drupal part Module to code ente planificador module
7  * Copyright 2011 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL)
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
22  *
23  * @author Cenditel Merida - Ing. Jose Puentes
24  * @date 2015-11-18 // (a&#241;o-mes-dia)
25  * @version 0.2 // (0.1)
26  *
27  */
28
29/**
30 * Meses del anho
31 */
32$meses = array(
33  0 => t('January'),
34  1 => t('February'),
35  2 => t('March'),
36  3 => t('April'),
37  4 => t('May'),
38  5 => t('June'),
39  6 => t('July'),
40  7 => t('August'),
41  8 => t('September'),
42  9 => t('Octuber'),
43  10 => t('November'),
44  11 => t('December'),
45);
46define('MESES', json_encode($meses)); //constante para la manupulacion de los meses del anho
47
48/**
49 * Implementation of hook_menu_alter()
50 */
51function seguimiento_proyectos_operativos_menu_alter(&$items) {
52  //incluyendo las funciones del modulo de seguimiento
53  module_load_include('module', 'proyectos_operativos_seguimiento', 'proyectos_operativos_seguimiento');
54
55  $items['proyectosop/%node/seguimiento_proyecto']['page callback'] = 'seguimiento_proyectos_operativos_acciones_views_page';
56  $items['proyectosop/%node/seguimiento_proyecto']['file'] = '';
57  $items['node/%node/seguimiento_proyecto']['page callback'] = 'seguimiento_proyectos_operativos_acciones_views_page';
58  $items['node/%node/seguimiento_proyecto']['file'] = '';
59  $items['node/%node/fase_de_seguimiento_proyecto_y_aes/mes/%messegaepartida']['page callback'] = 'seguimiento_proyectos_operativos_acciones_views_page';
60  $items['node/%node/fase_de_seguimiento_proyecto_y_aes/mes/%messegaepartida']['file'] = '';
61}
62
63/**
64 * Vista del seguimiento de proyectos de forma general
65 */
66function seguimiento_proyectos_operativos_acciones_views_page($node) {
67  module_load_include('inc', 'accion_especifica_de_proyecto_seguimiento', 'includes/ae_proyecto/seguimiento_accion_especifica_deproyecto.pages');
68  global $user;
69  $rows = array();
70  $row2 = array();
71  $header = array();
72  $header2 = array();
73  //roles de los usuarios
74  $rol_control = variable_get('ActorPlanificadorMacro', 2);
75  $rol_supervisor = variable_get('ActorPlanificadorMicro', 2);
76  $rol_enlace = variable_get('ActorPlanificadorEnlace', 2);
77  $roles = array_keys($user->roles);
78
79  $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($node);
80  $format_decimal = variable_get('proyectos_operativos_number_dec_point', ',');
81  $format_cnt = variable_get('proyectos_operativos_number_decimals', ',');
82  $format_miles = variable_get('proyectos_operativos_number_thousands_sep', '.');
83  $meses = json_decode(MESES);
84
85  drupal_set_title(t('Seguimiento y Control de Proyecto Operativo'.' (mes de '. $meses[$mes_fase_seg] . ')'));
86  //calcular variacion por reformulacion
87  $variacion_planificado_mes = _seguimiento_mesactual_metafisica_proyecto_reformulaciones_load($node, $mes_fase_seg);
88  $valor_texto = $mes > 0 ? 'value_' . $mes : 'value';
89  $cant_metafisica_planif = $node->field_proyecto_meta_fisica[0][$valor_texto] + $variacion_planificado_mes;
90  $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes_fase_seg);
91  $estado = ((isset($consultaseguimientoactual['segmes']['estado'])) && ($consultaseguimientoactual['segmes']['estado'] > 0) )? $consultaseguimientoactual['segmes']['estado'] : -1;
92  $transiciones_dispo = _obtener_transiciones_disponibles_proyecto($node, $mes_fase_seg);
93
94  if ($user->uid == 1) {
95    // Superuser is special.
96    $roles_transition = 'ALL';
97  }
98  else {
99    $roles_transition = $roles;
100    if ($user->uid == $consultaseguimientoactual['segmes']['uid']&& $consultaseguimientoactual['segmes']['uid'] > 0) {//verificar si es el autor del seguimiento
101      $roles_transition += array('author' => 'author');
102    }
103  }
104  $transitions = workflow_allowable_transitions($estado, 'to', $roles_transition);
105
106  $cant_metafisica_ej = isset($consultaseguimientoactual['segmes']['ejecutadometafisica']) ? $consultaseguimientoactual['segmes']['ejecutadometafisica'] : 0;
107  $zonacritica1 = $cant_metafisica_planif ? $cant_metafisica_ej/$cant_metafisica_planif : -1;
108  $porczonacritica1 = $zonacritica1 >= 0 ? ($zonacritica1 * 100) . '%' : $cant_metafisica_ej ? 'N/D' : 'N/A';
109
110  $header[] = array('data' => t('Partida'));
111  $header[] = array('data' => t('Asignado'));
112  $header[] = array('data' => t('Comprometido'));
113  $header[] = array('data' => t('Causado'));
114  $header[] = array('data' => t('Pagado'));
115  $header[] = array('data' => t('% de Inversión'));
116  $header[] = array('data' => t('Estatus de la Inversión'));
117  $header[] = array('data' => t('Operación'));
118
119  $seguimiento_financiero_proyecto = _cargar_totales_seguimiento_aes_delproyecto($node, $mes_fase_seg);
120  foreach ($seguimiento_financiero_proyecto['seg_financiero_aes'] as $acciones_especif) {
121    $content = '';
122    $row = array();
123    $causadov = $acciones_especif['totalCausadoAEs'];
124    $asignadov = $acciones_especif['totalAsignadoAEs'];
125    $estatus_ejecucion = _calcularzonacritica($asignadov, $causadov);
126    $porczonacritica = $estatus_ejecucion['porczonacritica'];
127    $textozona = $estatus_ejecucion['textozona'];
128    $colorzona = $estatus_ejecucion['colorzona'];
129    $colorfontzona = $estatus_ejecucion['colorfontzona'];
130    $nodo_ae = node_load($acciones_especif['idnodosAEs']);
131    $transiciones_dispo_ac = _obtener_transiciones_disponibles($nodo_ae, $mes_fase_seg);
132    $row[] = array('data' =>  $acciones_especif['nombreAEs'],);
133    if (_mes_dentro_de_duracion_ae_proyecto($nodo_ae, $mes_fase_seg)) {
134      $row[] = array('data' => number_format($asignadov, $format_cnt, $format_decimal, $format_miles));
135      $row[] = array('data' => number_format($causadov, $format_cnt, $format_decimal, $format_miles));
136      $row[] = array('data' => number_format($acciones_especif['totalCausadoAEs'], $format_cnt, $format_decimal, $format_miles));
137      $row[] = array('data' => number_format($acciones_especif['totalPagadoAEs'], $format_cnt, $format_decimal, $format_miles));
138      $row[] = array('data' => $porczonacritica,);
139      $row[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona);
140      //operaciones de la accion especifica
141      if (_accion_especifica_de_proyecto_seguimiento_modificar_mes_access($nodo_ae, $mes_fase_seg)) {
142        if (isset($transiciones_dispo_ac['nombre_estado_actual'])) {
143          $content .= '<br><b>' . l(t('Modificar'), 'node/' . $nodo_ae->nid . '/seguimiento_aeproyecto/partidas/' . $mes_fase_seg . '/edit') . '</b>';
144        }
145        else {
146          $content .= '<br><b>'.l(t('Ingresar'), 'node/' . $nodo_ae->nid . '/seguimiento_aeproyecto/partidas/' . $mes_fase_seg . '/edit') . '</b>';
147        }
148      }
149      $row[] = $content;
150    }
151    else {
152      $row[] = array('data' => '-',);
153      $row[] = array('data' => '-',);
154      $row[] = array('data' => '-',);
155      $row[] = array('data' => '-',);
156      $row[] = array('data' => '-',);
157      $row[] = array('data' => '-',);
158    }
159    $rows[] = $row;
160  }
161  $header2[] = array('data' => t('Planificado'));
162  $header2[] = array('data' => t('Ejecutado'));
163  $header2[] = array('data' => t('% de Logro'));
164  $header2[] = array('data' => t('Estatus de la Inversión'));
165  $rows2 = array();
166 
167  $planificadov = $cant_metafisica_planif;
168  $ejecutadov = $cant_metafisica_ej;
169  $estatus_ejecucion = _calcularzonacritica($planificadov, $ejecutadov);
170  $porczonacritica = $estatus_ejecucion['porczonacritica'];
171  $textozona = $estatus_ejecucion['textozona'];
172  $colorzona = $estatus_ejecucion['colorzona'];
173  $colorfontzona = $estatus_ejecucion['colorfontzona'];
174
175  $row2[] = array('data' => $cant_metafisica_planif);
176  $row2[] = array('data' => $cant_metafisica_ej);
177  $row2[] = array('data' => $porczonacritica1,);
178  $row2[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona, 'id' => 'metafisica-inversion-form',);
179  $rows2[] = $row2;
180
181  //beneficiarios
182  $muestra_beneficiarios = variable_get('proyectos_operativos_muestra_beneficiario', TRUE);
183  if ($muestra_beneficiarios) {
184    $header3 = array();
185    $header3[] = array('data' => t('Beneficiario'));
186    $rows3 = array();
187    foreach ($node->field_proyecto_beneficiario as $id => $beneficiarios) {
188      foreach ($consultaseguimientoactual['seguimientos_beneficiarios'] as $seg_benef) {
189        if ($id == $seg_benef['posicion_beneficiario']) {
190          $cantbeneficiario_mes = isset($seg_benef['cant_beneficiarios_mes'])? $seg_benef['cant_beneficiarios_mes']:0;
191          break;
192        }
193      }
194      $row3 = array();
195      $row3[] = array('data' => $beneficiarios['value']);
196      $row3[] = array('data' => $cantbeneficiario_mes);
197      $rows3[] = $row3;
198    }
199  }
200
201  $output .= '<fieldset><legend>Datos del Proyecto Operativo</legend>';
202  $output .= '<b>Código del Proyecto:</b> ' . $node->field_proyecto_codigo[0]['value'] . '<br>';
203  $output .= '<b>Nombre del Proyecto:</b> ' . $node->titulo_asignado . '<br>';
204  $output .= '</fieldset>';
205
206  $output .= '<fieldset><legend>' . t('Indicadores de Meta Física del Proyecto') . '</legend>' . '<div class="field-label"><b>' . t('Mes de Seguimiento Actual:') . '</b> ' . $meses[$mes_fase_seg] . '</div>' . theme('table', $header2, $rows2) ;
207  $metafisica_con_planificado_cero = $cant_metafisica_planif == 0 ? 1 : 0;
208  if ($metafisica_con_planificado_cero == 1) {
209    $output .= '<br><b>Nota</b>: Si desea ingresar una cantidad de ejecutado de meta física mayor que cero, <i>primero</i> debe realizar una reformulación a la meta física de este mes.<br>';
210  }
211
212  $output .= '<fieldset><legend>' . t('Indicadores Financieros (por Acciones Específicas) del Proyecto') . '</legend>' . '<div class="field-label"><b>' . t('Mes de Seguimiento Actual:') . '</b> ' . $meses[$mes_fase_seg] . '</div>' . theme('table', $header, $rows) ;
213
214  $output .= '</fieldset>';
215  if ($muestra_beneficiarios) {
216    $header3[] = array('data' => t('Cantidad de Beneficiarios durante el mes de ') . $meses[$mes_fase_seg]);
217    $output .= '<fieldset><legend>' . t('Beneficiarios del Proyecto (Durante la Ejecución)') . '</legend>' . '<div class="field-label"></div>' . theme('table', $header3, $rows3) ;
218    $output .= '</fieldset>';
219  }
220  $output .= '</fieldset>';
221  $output .= _mostrarleyendazonacritica();
222  $output .= '<br>';
223  $ac = 0;
224  if (_periodo_de_seguimiento_proyecto_y_aes_esta_activo()) {
225    if (_mes_habilitado_para_seguimiento($mes_fase_seg)) {
226        if (isset($transiciones_dispo['nombre_estado_actual'])) {
227          foreach ($transiciones_dispo['transic'] as $id => $transition) {
228            if (_proyecto_seguimiento_mes_mover_estado_access($node, $mes_fase_seg, $id)) {
229              $output .= '<br><b>' . l(t('Enviar Proyecto a @state', array('@state' => $transition)), 'node/' . $node->nid . '/seguimiento_proyecto/' . $mes_fase_seg . '/workflow/' . $id) . '</b>';
230            }
231          }
232          if (_proyecto_operativo_seguimiento_modificar_mes_access($node, $mes_fase_seg)) {
233            $output .= '<br><b>' . l(t('Modificar Seguimiento de Proyectos'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit') . '</b>';
234          }
235          $output .= '<br><b>'.l(t('Consultar Historial de Estados del seguimiento del Proyecto'), 'node/' . $node->nid.'/seguimiento_proyecto/' . $mes_fase_seg . '/workflow/historial') . '</b>';
236        }
237        else {
238          $output .= '<b>'.l(t('Ingresar Seguimiento de Proyectos'), 'node/' . $node->nid . '/seguimiento_proyecto/mes/' . $mes_fase_seg . '/edit') . '</b>';
239          $output .= '<br>';
240        }
241    }
242  }
243  return $output;
244}
245
246/**
247 * Implementation of hook_form_alter()
248 */
249function seguimiento_proyectos_operativos_form_alter(&$form, $form_state, $form_id) {
250  if ($form_id == 'cambiodeestado_seg_proyecto_paginaconfirmacion_form') {
251    $form['actions']['cancel']['#value'] = l('Cancelar', 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto');
252    $form['#redirect'][] = 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto';
253  }
254  if ($form_id == 'seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form') {
255    $form['buttons']['cancel']['#value'] = l('Cancelar', 'proyectosop/' . $form['#node']->field_accion_esp_proyecto[0]['nid'] . '/seguimiento_proyecto');
256    $form['#redirect'][] = 'proyectosop/' . $form['#node']->field_accion_esp_proyecto[0]['nid'] . '/seguimiento_proyecto';
257  }
258  if ($form_id == 'seguimiento_proyecto_datospormes_modificar_form') {
259    $form['buttons']['cancel']['#value'] = l('Cancelar', 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto');
260    $form['#redirect'][] = 'proyectosop/' . $form['#node']->nid . '/seguimiento_proyecto';
261  }
262}
263
264/*
265 * Implementation of hook_acciones_obtiene_links_alter()
266 */
267function seguimiento_proyectos_operativos_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) {
268  $meses = json_decode(MESES);
269  foreach ($links as $key => $link) {
270    if ($link['class'] == 'proyectos-operativos-faseseguimiento') {
271      $node = node_load($proyecto->nid);
272      if ($node->anhoproyectos_operativos == variable_get('accion_especifica_de_proyecto_seguimiento_anho_seguimiento', 0) && _proyectooperativo_esta_aprobado($node)) {
273        $mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
274        $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($node);
275        if ($mes_seguimiento_proyecto_y_aes == ($mes_fase_seg + 1)) {
276          $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);
277        }
278      }
279    }
280  }
281}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.