source: sipes/0.3-modules/proyectos_operativos_seguimiento/includes/ae_proyecto/seguimiento_accion_especifica_deproyecto.pages.inc~ @ 650248d

stable
Last change on this file since 650248d was 669d26e, checked in by Sipes Apn <root@…>, 7 años ago

se realizaron las correciones relacionadas al contador de fechas

  • Propiedad mode establecida a 100755
File size: 18.0 KB
Línea 
1<?php
2  /**
3  * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana
4  * @file accion_especifica_de_proyecto_seguimiento.module
5  * Drupal part Module to code proyectos operativos module
6  * Copyright 2012 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL)
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21  *
22  * @author CENDITEL Merida - Ing. Diego Uzcategui
23  * @date 2013-02-07 // (anno-mes-dia)
24  * @version 0.1
25  *
26  */
27
28/**
29 * Pagina que muestra los seguimientos de todos los meses de una ae (cuadro resumen de seguimientos)
30 */
31function seguimiento_accion_especifica_deproyecto_page($proyecto = 0, $ae = 0) {
32  global $user;
33  drupal_set_title(t('Seguimiento y Control de Acción Específica de Proyecto Operativo'));
34
35  $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($proyecto);
36  if (_proyecto_seguimiento_mes_mover_estado_access($proyecto, $mes_fase_seg, $message = true));
37
38  $output = '';
39  $output .= '<br>';
40
41  $output .= _mostrar_datos_ae($proyecto, $ae);
42  $output .= _mostrar_indicadores_metafisica_seg_ae($proyecto, $ae);
43  $output .= _mostrar_indicadores_financieros_seg_ae($proyecto, $ae);
44 
45  $output .= _mostrarleyendazonacritica();
46
47  return $output;
48}
49
50/**
51 * Pagina que carga los datos generales de una accion especifica (datos del proyecto y datos de la accion)
52 */
53function _mostrar_datos_ae($proyecto = 0, $ae = 0) {
54  $output = '';
55
56  //cargar el nodo del proyecto al que pertenece
57  $node_type = content_types('proyectos_operativos');
58  $fields = $node_type['fields'];
59  $output .= '<fieldset>';
60  $output .= '<legend>' . t('Datos del Proyecto al que pertenece la Acción Específica') . '</legend>';
61  $output .= '<b>' . $fields['field_proyecto_codigo']['widget']['label'] . ':</b> ' . $proyecto->field_proyecto_codigo[0]['value'] . '<br>';
62  $output .= '<b>' . t('Nombre del Proyecto') . ':</b> '.$proyecto->titulo_asignado.'<br>';
63  $output .= '<b>' . $fields['field_proyecto_monto_anual']['widget']['label'] . ':</b> '.number_format($proyecto->field_proyecto_monto_anual[0]['value'], 0, ',', '.').' Bs<br>';
64  $output .= '</fieldset>';
65 
66  $tablas = array();//tabla de ubicacion geografica
67  $header = array();
68  $header[] = array('data' => t('País'));
69  $header[] = array('data' => t('Estado'));
70  $header[] = array('data' => t('Municipio'));
71  $header[] = array('data' => t('Parroquia'));
72  $header[] = array('data' => t('Latitud'));
73  $header[] = array('data' => t('Longitud'));
74  $rows = array();
75  $varlugar = array();
76  $padres = array_reverse(taxonomy_get_parents_all($ae->field_accion_esp_localizacion[0]['value']));
77  $varlugar[0] = isset($padres[0]) ? $padres[0]->name : '-';
78  $varlugar[1] = isset($padres[1]) ? $padres[0]->name : '-';
79  $varlugar[2] = isset($padres[2]) ? $padres[0]->name : '-';
80  $varlugar[3] = isset($padres[3]) ? $padres[0]->name : '-';
81  $row[] = array('data' => $varlugar[0],);
82
83  $row[] = array('data' => $varlugar[1],);
84  $row[] = array('data' => $varlugar[2],);
85  $row[] = array('data' => $varlugar[3],);
86  $id_field1 = 'field_accion_esp_latitud';
87  $row[] = array('data' => $ae->{$id_field1}[0]['value'],);
88  $id_field1 = 'field_accion_esp_longitud';
89  $row[] = array('data' => $ae->{$id_field1}[0]['value'],);
90  $rows[] = $row;
91  $tablas[]= theme('table', $header, $rows);
92
93  $output .= '<fieldset><legend>' . t('Datos de la Acción Específica') . '</legend>';
94  $output .= '<b>' . t('Nombre de la AE') . ':</b> ' . $ae->titulo_asignado . '<br>';
95  $id_field1 = 'field_accion_esp_fechai';
96  $fecha = explode(' ', $ae->{$id_field1}[0]['value']);
97  $fecha = explode('-', $fecha[0]);
98  $output .= '<b>' . t('Fecha de Inicio'). ':</b> ' . $fecha[2] . '/' . $fecha[1] . '/' . $fecha[0] . '<br>';
99  $id_field1 = 'field_accion_esp_fechaf';
100  $fecha = explode(' ', $ae->{$id_field1}[0]['value']);
101  $fecha = explode('-', $fecha[0]);
102  $output .= '<b>' . t('Fecha Fin') . ':</b> ' . $fecha[2] . '/' . $fecha[1] . '/' . $fecha[0] . '<br>';
103  $id_field1 = 'field_accion_esp_ejecutor';
104  $output .= '<b>' . t('Ejecutor') . ':</b> '.$ae->{$id_field1}[0]['value'].'<br>';
105  $output .= implode('', $tablas).'<br>';
106  $output .= '</fieldset>';
107 
108  return $output;
109}
110
111/**
112 * Pagina que carga la tabla de indicadores de meta fisica de la accion especifica
113 */
114function _mostrar_indicadores_metafisica_seg_ae($proyecto = 0, $ae = 0) {
115  $output = '';
116 
117  $ftypes = array(
118    'value' => t('January'),
119    'value_1' => t('February'),
120    'value_2' => t('March'),
121    'value_3' => t('April'),
122    'value_4' => t('May'),
123    'value_5' => t('June'),
124    'value_6' => t('July'),
125    'value_7' => t('August'),
126    'value_8' => t('September'),
127    'value_9' => t('Octuber'),
128    'value_10' => t('November'),
129    'value_11' => t('December'),
130  );
131
132  $meses = json_decode(MESES);
133 
134  //tabla de indicadores financieros de la accion especifica
135  $tablas = array();
136
137  //_proyectos_reformulacion_load($node->proyecto_asignado);
138  $header = array();
139  $header[] = array('data' => t('Mes'));
140  $header[] = array('data' => t('Planificado'));
141  $header[] = array('data' => t('Ejecutado'));
142  $header[] = array('data' => t('% de Logro'));
143  $header[] = array('data' => t('Estatus de Ejecución'));
144  $header[] = array('data' => t('Información Complementaria'));
145  $header[] = array('data' => t('Opciones Disponibles'),);
146  //calcular planificado
147  $planificadoMes = array();
148  $acumuladoPlanificado = 0;
149  $id_field1 = 'field_accion_esp_metaf';
150  $i = 0;
151  foreach($ae->{$id_field1} as $nombrescampo) {
152    foreach($ftypes as $ids =>$texto) {
153      //calcular variacion en el planificado de la meta fisica
154      $mes = $i;
155      $variacion_planificado_mes = _seguimiento_mesactual_metafisica_ae_deproyecto_reformulaciones_load($ae, $mes);
156      $planificadoMes[$i] = $nombrescampo[$ids] + $variacion_planificado_mes;
157      $acumuladoPlanificado += $planificadoMes[$i];
158      $i++;
159    }
160  }
161 
162  //cargar y procesar informacion de ejecutado meta fisica y informacion complementaria
163  $Ejecutado = array();
164  $infocomplementaria_metafisica = array();
165  $AcumuladoEjecutado = 0; 
166
167  $consulta_metafisica_seguimiento_meses = _seguimiento_metafisica_todosmes_ae_deproyecto_load($ae);
168  foreach($meses as $mes => $id) {
169      $asinadovalor=0;
170      foreach ($consulta_metafisica_seguimiento_meses as $consulta_seguimiento_mes) {//colocando valor en consulta
171        if($mes == $consulta_seguimiento_mes['mes']){
172          $asinadovalor=1;
173          $Ejecutado[$mes] = isset($consulta_seguimiento_mes['ejecutadometafisica'])? $consulta_seguimiento_mes['ejecutadometafisica']:0;
174          $infocomplementaria_metafisica[$mes] = isset($consulta_seguimiento_mes['infocomplementaria_metafisica'])? $consulta_seguimiento_mes['infocomplementaria_metafisica']:'';
175          if (is_numeric($proyecto->es_acumulativo) && !$proyecto->es_acumulativo) {
176            $AcumuladoEjecutado += $Ejecutado[$mes];//aumenta acumulador
177          }
178        }
179      }
180      if($asinadovalor == 0){
181          $Ejecutado[$mes] = 0;
182          $infocomplementaria_metafisica[$mes] = '';
183      }
184  }
185 
186  //creacion de la tabla (solo asignacion de valores)
187    $rows = array();
188    $i = 0;
189    foreach ($ftypes as $ids =>$texto) {
190      $estatus_ejecucion = _calcularzonacritica($planificadoMes[$i], $Ejecutado[$i]);
191      $porczonacritica = $estatus_ejecucion['porczonacritica'];
192      $textozona = $estatus_ejecucion['textozona'];
193      $colorzona = $estatus_ejecucion['colorzona'];
194      $colorfontzona = $estatus_ejecucion['colorfontzona'];
195           
196      $row = array();
197      $row[] = array('data' => $texto,);
198            $mesi = $i +1 ;
199            //si el mes esta dentro del periodo de duracion de la accion especifica
200            if(_mes_dentro_de_duracion_ae_proyecto($ae, $mesi)){
201              $row[] = array('data' => number_format($planificadoMes[$mesi], 0, ',', '.'),);
202              $row[] = array('data' => number_format($Ejecutado[$mesi], 0, ',', '.'),);
203              $row[] = array('data' => $porczonacritica,);
204              $row[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona);
205              $row[] = array('data' => $infocomplementaria_metafisica[$mesi],);
206              //if($mes_seguimiento_proyecto_y_aes-1 == $i){
207              if(_mes_habilitado_para_seguimiento($mesi) && _proyecto_operativo_seguimiento_modificar_mes_access($proyecto,  $mesi)){
208                $links = array();
209//'proyectosop/' . $proyecto->nid . '/seguimiento/ae/' . $ae->nid . '/partidas/' . $i . '/edit'
210                $links[] = '<b>'.l(t('Modificar'), 'proyectosop/' . $proyecto->nid . '/seguimiento/ae/' . $ae->nid . '/' . $mesi . '/edit/comentario_metafisica').'</b>';
211                $row[] = array('data' => theme('item_list', $links),);
212                //$row[] = array('data' => '<b>'.l(t('Modificar'), 'node/' . $node->nid . '/seguimiento_aeproyecto/partidas/'. $i . '/edit').'</b>',);
213              }else{
214                $row[] = array('data' => '',);
215              }
216            }else{
217              $row[] = array('data' => '-',);//planificado
218              $row[] = array('data' => '-',);//ejecutado
219              $row[] = array('data' => '-',);//porcentaje
220              $row[] = array('data' => '-',);//estatus de ejecucion
221              $row[] = array('data' => '-',);//info complementaria
222              $row[] = array('data' => '-',);
223            }
224            $rows[] = $row;
225            $i++;
226          }
227      $row = array();
228      if ($ae->es_acumulativo) {
229        $row[] = array('data' => t('Acumulado'),);
230        $row[] = array('data' => number_format($acumuladoPlanificado, 0, ',', '.'),);
231        $row[] = array('data' => number_format($AcumuladoEjecutado, 0, ',', '.'),);//total ejecutado
232        $row[] = array('data' => '', 'colspan' => 6);
233      }
234
235      $rows[] = $row;
236      $tablas[]= theme('table', $header, $rows);
237       
238  if (count($tablas)) {
239   
240    $output .= '<fieldset><legend>' . t('Indicadores de la Meta Física de la Acción Específica') . '</legend>';
241   
242    $id_field1 = 'field_accion_esp_bien';
243    $output .= '<b>' . t('Descripción del Bien y Servicio') . ':</b> ' . $ae->{$id_field1}[0]['value'] . '<br>';
244    $term_id = isset($ae->variaciones) && isset($ae->variaciones['field_accion_esp_metaf_'. $ae->nid][0]['unidad']) ? $ae->variaciones['field_accion_esp_metaf_'. $ae->nid][0]['unidad'] : $ae->field_accion_esp_unidadm[0]['value'];
245    $id_field1 = 'field_accion_esp_unidadm';
246    $term = taxonomy_get_term($term_id);
247    $output .= '<b>' . t('Unidad de Medida') . ':</b> ' . $term->name . '<br><br>';
248    $output .= implode('', $tablas) . '</fieldset>';
249  }
250 
251  return $output;
252}
253
254/**
255 * Pagina que carga la tabla de indicadores de meta fisica de la accion especifica
256 */
257function _mostrar_indicadores_financieros_seg_ae($proyecto = 0, $ae = 0) {
258 
259  $output = '';
260  $ftypes = array(
261    'value' => t('January'),
262    'value_1' => t('February'),
263    'value_2' => t('March'),
264    'value_3' => t('April'),
265    'value_4' => t('May'),
266    'value_5' => t('June'),
267    'value_6' => t('July'),
268    'value_7' => t('August'),
269    'value_8' => t('September'),
270    'value_9' => t('Octuber'),
271    'value_10' => t('November'),
272    'value_11' => t('December'),
273  );
274
275  $meses = json_decode(MESES);
276  //tabla de indicadores financieros de la accion especifica
277  $tablas = array();
278 
279  $header = array();
280  $header[] = array('data' => t('Mes'));
281  $header[] = array('data' => t('Asignado'));
282  $header[] = array('data' => t('Comprometido'));
283  $header[] = array('data' => t('Causado'));
284  $header[] = array('data' => t('Pagado'));
285  $header[] = array('data' => t('% de Inversión'));
286  $header[] = array('data' => t('Estatus de la Inversión'));
287  $header[] = array('data' => t('Información Complementaria'));
288  $header[] = array('data' => t('Opciones Disponibles'),);
289
290  //calcular asignado
291  $asignadoMes = array();
292  $i=0;
293  foreach($ftypes as $ids =>$texto) {
294    $asignadoMes[$i]=0;
295    $i += 1;
296  }
297 
298  $acumuladoAsignado = 0;
299  $id_field1 = 'field_accion_esp_programacion';
300  foreach($ae->{$id_field1} as $partidascampo) {//recorrido a grupo de partidas
301    $i=0;
302    foreach($ftypes as $ids =>$texto) {
303      $asignadoMes[$i] += $partidascampo[$ids];
304      $acumuladoAsignado += $partidascampo[$ids];
305      $i += 1;
306    }
307  }
308 
309  //calcular la variación por reformulaciones
310  for($i=0; $i<12; $i++){
311    if(_mes_dentro_de_duracion_ae_proyecto($ae, $i)){
312      $mes = $i;
313      $variacion_asignado = _seguimiento_mesactual_total_ae_deproyecto_reformulaciones_load($ae, $mes);
314      $variacion_asignado = isset($variacion_asignado)? $variacion_asignado : 0;
315      $asignadoMes[$i] += $variacion_asignado;
316      $acumuladoAsignado += $variacion_asignado;
317     
318    }
319  }
320 
321  //calcular comprometido, causado, pagado
322  $totalComprometido = array();
323  $totalCausado = array();
324  $totalPagado = array();
325  $infocomplementaria_financiera = array();
326  $AcumuladoTotalComprometido = 0;
327  $AcumuladoTotalCausado = 0;
328  $AcumuladoTotalPagado = 0;
329
330  foreach($meses as $it => $id) {
331
332    $mes = $it;
333    $consulta_totales_seguimiento_mes = _seguimiento_mesactual_partida_ae_deproyecto_totales_load($ae, $mes);
334    $totalComprometido[$mes] = isset($consulta_totales_seguimiento_mes['segmespartidastotales']['totalcomprometido'])? $consulta_totales_seguimiento_mes['segmespartidastotales']['totalcomprometido']:0;
335    $totalCausado[$mes] = isset($consulta_totales_seguimiento_mes['segmespartidastotales']['totalcausado'])?$consulta_totales_seguimiento_mes['segmespartidastotales']['totalcausado']:0;
336    $totalPagado[$mes] = isset($consulta_totales_seguimiento_mes['segmespartidastotales']['totalpagado'])?$consulta_totales_seguimiento_mes['segmespartidastotales']['totalpagado']:0;
337    $infocomplementaria_financiera[$mes] = isset($consulta_totales_seguimiento_mes['segmes']['infocomplementaria_metafinanciera'])? $consulta_totales_seguimiento_mes['segmes']['infocomplementaria_metafinanciera']:'';
338   
339    $AcumuladoTotalComprometido += $totalComprometido[$mes];
340    $AcumuladoTotalCausado += $totalCausado[$mes];
341    $AcumuladoTotalPagado += $totalPagado[$mes];
342  }
343 
344  //$mes_seguimiento_proyecto_y_aes = variable_get('accion_especifica_de_proyecto_seguimiento_mes_seguimiento', 0);
345 
346  //Asignacion de valores para la creacion de la tabla
347    $rows = array();
348    $i = 0;
349    foreach($ftypes as $ids =>$texto) {
350           
351            $estatus_inversion = _calcularzonacritica($asignadoMes[$i], $totalCausado[$i]);
352            $porczonacritica = $estatus_inversion['porczonacritica'];
353            $textozona = $estatus_inversion['textozona'];
354            $colorzona = $estatus_inversion['colorzona'];
355            $colorfontzona = $estatus_inversion['colorfontzona'];
356           
357            $row = array();
358            $row[] = array('data' => $texto,);
359            $mesi = $i +1 ;
360            //si el mes esta dentro del periodo de duracion de la accion especifica
361            if (_mes_dentro_de_duracion_ae_proyecto($ae, $mesi)) {
362              $row[] = array('data' => number_format($asignadoMes[$i], 0, ',', '.'),);
363              $row[] = array('data' => number_format($totalComprometido[$mesi], 0, ',', '.'),);
364              $row[] = array('data' => number_format($totalCausado[$mesi], 0, ',', '.'),);
365              $row[] = array('data' => number_format($totalPagado[$mesi], 0, ',', '.'),);
366              $row[] = array('data' => $porczonacritica,);
367              $row[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona);
368              $row[] = array('data' => $infocomplementaria_financiera[$mesi],);
369              $links = array();
370//'proyectosop/%proyectosop/seguimiento/ae/%accion_especifical/partidas/%messegaepartida/view'
371              $links[] = l(t('Seguimiento por partidas'), 'proyectosop/' . $proyecto->nid . '/seguimiento/ae/' . $ae->nid . '/' . $mesi . '/view');
372              if(_mes_habilitado_para_seguimiento($mesi) && _proyecto_operativo_seguimiento_modificar_mes_access($proyecto, $mesi)){
373                $links[] = '<b>'.l(t('Modificar'), 'proyectosop/' . $proyecto->nid . '/seguimiento/ae/' . $ae->nid . '/' . $mesi . '/edit/comentario_informacionfinanciera').'</b>';
374              }
375              $row[] = array('data' => theme('item_list', $links),);
376            }else{
377              $row[] = array('data' => '-',);
378              $row[] = array('data' => '-',);
379              $row[] = array('data' => '-',);
380              $row[] = array('data' => '-',);
381              $row[] = array('data' => '-',);
382              $row[] = array('data' => '-',);
383              $row[] = array('data' => '-',);
384              $row[] = array('data' => '-',);
385            }
386
387            $rows[] = $row;
388            $i++;
389          }
390      $row = array();
391      $row[] = array('data' => t('Acumulado'),);
392      $row[] = array('data' => number_format($acumuladoAsignado, 0, ',', '.'),);
393      $row[] = array('data' => number_format($AcumuladoTotalComprometido, 0, ',', '.'),);//total comprometido
394      $row[] = array('data' => number_format($AcumuladoTotalCausado, 0, ',', '.'),);//total causado
395      $row[] = array('data' => number_format($AcumuladoTotalPagado, 0, ',', '.'),);//total pagado
396      $row[] = array('data' => '', 'colspan' => 4);
397
398      $rows[] = $row;
399      $tablas[]= theme('table', $header, $rows);
400       
401  if (count($tablas)) {
402    $output .= '<fieldset><legend>' . t('Indicadores Financieros de la Acción Específica') . '</legend>' . implode('', $tablas);
403    $output .= '</fieldset>';
404  }
405 
406  return $output;
407}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.