source: sipes/0.3-modules/proyectos_operativos_seguimiento/includes/proyecto/funciones_consulta_bd_proyecto.pages.inc @ 3f8be10

stableversion-3.0
Last change on this file since 3f8be10 was 303fae2, checked in by José Gregorio Puentes <jpuentes@…>, 9 años ago

se agregaron los modulos

  • Propiedad mode establecida a 100755
File size: 16.5 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 proyecto_operativo_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 *
30 */
31function _cargar_totales_seguimiento_aes_delproyecto($node, $mes=0) {
32 
33  //calcular asignado
34  $ids_valor = $mes > 0 ? 'value_' . $mes : 'value';
35  //calcular comprometido, causado, pagado de las acciones específicas
36  $seg_financiero_aes = array();
37  $TotalComprometidoProyecto = 0;
38  $TotalCausadoProyecto = 0;
39  $TotalPagadoProyecto = 0;
40   
41  if ($node->type == 'proyectos_operativos'){
42    $it=0;
43    foreach($node->field_proyecto_accion_esp as $accion) {
44      if ($accion['nid']) {
45        $accion_load = node_load($accion['nid']);
46        if ($accion_load && $accion_load->type == 'accion_especifica') {
47         
48          //calcular asignado
49          $totalAsignadoAE=0;
50          foreach($accion_load->field_accion_esp_programacion as $partidascampo) {//recorrido a grupo de partidas en el $mes
51            $totalAsignadoAE += $partidascampo[$ids_valor];
52          }
53         
54          //calcular valor reformulado
55          if(_mes_dentro_de_duracion_ae_proyecto($accion_load, $mes)){
56            $variacion_ref_total_asignado = _seguimiento_mesactual_total_ae_deproyecto_reformulaciones_load($accion_load, $mes);
57          }else{
58            $variacion_ref_total_asignado = 0;
59          }
60         
61          $consulta_totales_seguimiento_mes = _seguimiento_mesactual_partida_ae_deproyecto_totales_load($accion_load, $mes);
62                   
63          $idnodoAE= $accion_load->nid;
64          $nombreAE= $accion_load->title;
65          $totalComprometidoAE = isset($consulta_totales_seguimiento_mes['segmespartidastotales']['totalcomprometido'])? $consulta_totales_seguimiento_mes['segmespartidastotales']['totalcomprometido']:0;
66          $totalCausadoAE = isset($consulta_totales_seguimiento_mes['segmespartidastotales']['totalcausado'])?$consulta_totales_seguimiento_mes['segmespartidastotales']['totalcausado']:0;
67          $totalPagadoAE = isset($consulta_totales_seguimiento_mes['segmespartidastotales']['totalpagado'])?$consulta_totales_seguimiento_mes['segmespartidastotales']['totalpagado']:0;
68         
69          $seg_financiero_aes[$it]= array(
70            'idnodosAEs' => $idnodoAE,
71            'nombreAEs' => $nombreAE,
72            'totalAsignadoAEs' => $totalAsignadoAE + $variacion_ref_total_asignado,
73            'totalComprometidoAEs' => $totalComprometidoAE,
74            'totalCausadoAEs' => $totalCausadoAE,
75            'totalPagadoAEs' => $totalPagadoAE,
76          );
77         
78          $TotalAsignadoProyecto += $seg_financiero_aes[$it]['totalAsignadoAEs'];
79          $TotalComprometidoProyecto += $seg_financiero_aes[$it]['totalComprometidoAEs'];
80          $TotalCausadoProyecto += $seg_financiero_aes[$it]['totalCausadoAEs'];
81          $TotalPagadoProyecto += $seg_financiero_aes[$it]['totalPagadoAEs'];
82
83          $it++;
84        }
85      }
86    }
87  }
88 
89  $seg_financiero_proyecto = array(
90    'idnodoProyecto' => $node->nid,
91    'nombreProyecto' => $node->title,
92    'TotalAsignadoProyecto' => $TotalAsignadoProyecto,
93    'TotalComprometidoProyecto' => $TotalComprometidoProyecto,
94    'TotalCausadoProyecto' => $TotalCausadoProyecto,
95    'TotalPagadoProyecto' => $TotalPagadoProyecto,
96  );
97 
98  $seguimiento_financiero_proyecto = array(
99    'seg_financiero_aes' => $seg_financiero_aes,
100    'seg_financiero_proyecto' => $seg_financiero_proyecto,
101  );
102 
103  return $seguimiento_financiero_proyecto;
104}
105
106
107function _cargar_asignado_mes_ae($node) {
108 
109  $ftypes = array(
110    'value' => t('January'),
111    'value_1' => t('February'),
112    'value_2' => t('March'),
113    'value_3' => t('April'),
114    'value_4' => t('May'),
115    'value_5' => t('June'),
116    'value_6' => t('July'),
117    'value_7' => t('August'),
118    'value_8' => t('September'),
119    'value_9' => t('Octuber'),
120    'value_10' => t('November'),
121    'value_11' => t('December'),
122  );
123   
124  //calcular asignado
125  $asignadoMes = array();
126  $i=0;
127  foreach($ftypes as $ids =>$texto) {
128    $asignadoMes[$i]=0;
129    $i += 1;
130  }
131 
132  $acumuladoAsignado = 0;
133  $id_field1 = 'field_accion_esp_programacion';
134  foreach($node->{$id_field1} as $partidascampo) {//recorrido a grupo de partidas
135    $i=0;
136    foreach($ftypes as $ids =>$texto) {
137      $asignadoMes[$i] += $partidascampo[$ids];
138      $acumuladoAsignado += $partidascampo[$ids];
139      $i += 1;
140    }
141  }
142 
143  return $asignadoMes;
144}
145
146function _totalizar_asignadofinanciero_de_aes_proyecto($node) {
147  $cant = 0;
148
149  $asignadoMesTotal = array();
150  for ( $i = 0 ; $i <= 11 ; $i ++) {
151    $asignadoMesTotal[$i]=0;
152  }
153 
154  $asignado_financiero_aes = array();
155 
156  foreach($node->field_proyecto_accion_esp as $accion) {
157    if ($accion['nid'] && $nid != $accion['nid']) {
158      $accion_load = node_load($accion['nid']);
159      if ($accion_load && $accion_load->type == 'accion_especifica') {
160        $asignado_financiero_ac = _cargar_asignado_mes_ae($accion_load);
161        $asignado_financiero_aes[] = $asignado_financiero_ac;
162        $it=0;
163        foreach($asignado_financiero_ac as $asig_meses) {
164          $asignadoMesTotal[$it] += $asig_meses;
165          $it++;
166        }
167      }
168      $cant++;
169    }
170    elseif($nid = $accion['nid']) {
171      $acciones_especificas[$ae->nid] = $ae;
172    }
173  }
174  return $asignadoMesTotal;
175}
176
177/**
178 * Consulta la cantidad de comprometido, causado y pagado para TODAS LAS PARTIDAS de una accion especifica. Tambien el ejecutado de meta física, y las informaciones complementarias
179 */
180function _seguimiento_mesactual_proyecto_load($node, $mes = 0) {
181
182  $query = "SELECT * from {seguimiento_proyecto} where nid=%d and mes=%d";//consulta seguimiento
183  $queryResult =  db_query ( $query, $node->nid, $mes);
184  $seg = db_fetch_object ( $queryResult ) ;
185  $seg_arreglo=array();
186  $seg_arreglo['id_seg'] = $seg->id_seg;
187  $seg_arreglo['nid'] = $seg->nid;
188  $seg_arreglo['estado'] = $seg->estado;
189  $seg_arreglo['ejecutadometafisica'] = $seg->ejecutadometafisica;
190  $seg_arreglo['infocomplementaria_metafisica'] = $seg->infocomplementaria_metafisica;
191  $seg_arreglo['infocomplementaria_metafinanciera'] = $seg->infocomplementaria_metafinanciera;
192 
193  $query2 = "SELECT * from {seguimiento_proyecto_beneficiarios} where id_seg=%d";//consulta seguimiento de partidas
194  $queryResult2 =  db_query ( $query2, $seg->id_seg);
195  $seguimientos_beneficiarios = array ();
196  while ( $seg_beneficiario = db_fetch_object ( $queryResult2 ))
197  {
198    $seg_beneficiario_arreglo = array();
199    $seg_beneficiario_arreglo['id_seg_beneficiario'] = $seg_beneficiario->id_seg_beneficiario;
200    $seg_beneficiario_arreglo['posicion_beneficiario'] = $seg_beneficiario->posicion_beneficiario;
201    $seg_beneficiario_arreglo['cant_beneficiarios_mes'] = $seg_beneficiario->cant_beneficiarios_mes;
202    $seguimientos_beneficiarios[] = $seg_beneficiario_arreglo;
203  }
204 
205  $seguimientomes = array(
206    'segmes' => $seg_arreglo,
207    'seguimientos_beneficiarios' => $seguimientos_beneficiarios,
208  );
209 
210  return $seguimientomes;
211}
212
213
214/**
215 * consulta cantidad de planificado y ejecutado de meta física del proyecto, para todos los meses (funcion utilizada para mostrar los datos seguimiento proyecto)
216 * 13 marzo 2013, por Diego Uzcategui
217 */
218function _seguimiento_metafisica_todosmes_proyecto_load($node) {
219 
220  $seguimiento_metafisica_todosmes = array();
221 
222  $acumuladoPlanificado = 0;
223  //calcular planificado 
224  for($mes=0; $mes<12; $mes++){
225    $valor_camp = $mes > 0 ? 'value_' . $mes : 'value';
226    $planificadoMes = $node->field_proyecto_meta_fisica[0][$valor_camp];
227    $seguimientomes = array(
228      'planificadoMes' => $planificadoMes,
229      'ejecutadoMes' => 0,
230      'infocomplementaria_metafisica' => '',
231      'id_seg' => 0,
232    );
233    $seguimiento_metafisica_todosmes[] = $seguimientomes;
234   
235    $acumuladoPlanificado += $planificadoMes;
236  }
237 
238  $acumuladoEjecutado = 0;
239  $query = "SELECT * from {seguimiento_proyecto} where nid=%d";//consulta seguimiento
240  $queryResult =  db_query ( $query, $node->nid);
241 
242  while ( $seg_metafisica_m = db_fetch_object ( $queryResult ))
243  {
244    $mes_actual = $seg_metafisica_m->mes;
245    $seguimiento_metafisica_todosmes[$mes_actual]['ejecutadoMes'] = isset($seg_metafisica_m->ejecutadometafisica)? $seg_metafisica_m->ejecutadometafisica : 0;
246    $seguimiento_metafisica_todosmes[$mes_actual]['infocomplementaria_metafisica'] = isset($seg_metafisica_m->infocomplementaria_metafisica)? $seg_metafisica_m->infocomplementaria_metafisica : '';
247    $seguimiento_metafisica_todosmes[$mes_actual]['id_seg'] = isset($seg_metafisica_m->id_seg)? $seg_metafisica_m->id_seg : 0;
248   
249    $acumuladoEjecutado += $seguimiento_metafisica_todosmes[$mes_actual]['ejecutadoMes'];
250  }
251 
252  //totales
253  $acum = array(
254    'acumuladoPlanificado' => $acumuladoPlanificado,
255    'acumuladoEjecutado' => $acumuladoEjecutado,
256  );
257  //de cada mes y totales
258  $seguimiento_todos_meses_mf = array(
259    'seguimiento_metafisica_todosmes' => $seguimiento_metafisica_todosmes,
260    'acum' => $acum,
261  );
262
263  return $seguimiento_todos_meses_mf;
264}
265
266/**
267 * consulta cantidad de asignado, comprometido, causado, pagado de meta financiera del proyecto (totales de acciones específicas), para todos los meses (funcion utilizada para mostrar los datos seguimiento proyecto)
268 * 13 marzo 2013, por Diego Uzcategui
269 */
270function _seguimiento_financiero_todosmes_proyecto_load($node) {
271 
272  $asignadoMesAE = array();
273  for($mes=0; $mes<12; $mes++){
274    $asignadoMesAE[$mes] = 0;
275  }
276  foreach($node->field_proyecto_accion_esp as $accion) {//recorrido por todas las acciones específicas
277    $accion_esp_load = node_load($accion['nid']);
278    if ($accion_esp_load && $accion_esp_load->type == 'accion_especifica') {//accion especifica cargada
279      foreach($accion_esp_load->field_accion_esp_programacion as $partidas_ae) {//recorrido a partidas de la accion especifica
280        for($mes=0; $mes<12; $mes++){//recorrido de los meses de cada partida
281          $valor_camp = $mes > 0 ? 'value_' . $mes : 'value';
282          $asignadoMesAE[$mes] += $partidas_ae[$valor_camp];//un mes en de una partida
283        }
284      }
285    }
286  }
287 
288  //cargar en arreglo
289  $seguimiento_financiero_todosmes = array();
290  $acumuladoAsignado = 0;
291  for($mes=0; $mes<12; $mes++){
292    $seguimientomes = array(
293      'asignadoMes' => $asignadoMesAE[$mes],
294      'comprometidoMes' => 0,
295      'causadoMes' => 0,
296      'pagadoMes' => 0,
297      'infocomplementaria_metafinanciera' => '',
298      'id_seg' => 0,
299    );
300    $seguimiento_financiero_todosmes[] = $seguimientomes;
301    $acumuladoAsignado += $asignadoMesAE[$mes];
302  }
303 
304  //informacion complementaria financiera proyecto
305  $query = "SELECT * from {seguimiento_proyecto} where nid=%d";//consulta seguimiento
306  $queryResult =  db_query ( $query, $node->nid);
307 
308  while ( $seg_proyecto_m = db_fetch_object ( $queryResult ))
309  {
310    //cargar en arreglo
311    $mes_actual = $seg_proyecto_m->mes;
312    $seguimiento_financiero_todosmes[$mes_actual]['infocomplementaria_metafinanciera'] = isset($seg_proyecto_m->infocomplementaria_metafinanciera)? $seg_proyecto_m->infocomplementaria_metafinanciera : '';
313    $seguimiento_financiero_todosmes[$mes_actual]['id_seg'] = isset($seg_proyecto_m->id_seg)? $seg_proyecto_m->id_seg : 0;
314  }
315
316  $comprometidoMesAE = array();
317  $causadoMesAE = array();
318  $pagadoMesAE = array();
319  for($mes=0; $mes<12; $mes++){
320    $comprometidoMesAE[$mes] = 0;
321    $causadoMesAE[$mes] = 0;
322    $pagadoMesAE[$mes] = 0;
323  }
324  foreach($node->field_proyecto_accion_esp as $accion) {//recorrido por todas las acciones específicas
325    $accion_esp_load = node_load($accion['nid']);
326    if ($accion_esp_load && $accion_esp_load->type == 'accion_especifica') {//accion especifica cargada
327   
328      for($mes=0; $mes<12; $mes++){//recorrido de los meses de seguimiento
329        $query = "SELECT * from {seguimiento_aeproyecto} where nid=%d and mes=%d";//consulta seguimiento id
330        $queryResult =  db_query ( $query, $accion_esp_load->nid, $mes);
331        $seg = db_fetch_object ( $queryResult ) ;
332        $seg_identif = $seg->id_seg;
333       
334        //totales de cada accion especifica en un mes
335        $query2 = "SELECT SUM(comprometido) as totalcomprometido, SUM(causado) as totalcausado, SUM(pagado) as totalpagado from {seguimiento_aeproyecto_partida} where id_seg=%d";//consulta seguimiento de partidas
336        $queryResult2 =  db_query ( $query2, $seg_identif);
337 
338        $seg_partida_total = db_fetch_object ( $queryResult2 );
339        $comprometidoMesAE[$mes] += isset($seg_partida_total->totalcomprometido)? $seg_partida_total->totalcomprometido : 0;
340        $causadoMesAE[$mes] += isset($seg_partida_total->totalcausado)? $seg_partida_total->totalcausado : 0;
341        $pagadoMesAE[$mes] += isset($seg_partida_total->totalpagado)? $seg_partida_total->totalpagado : 0;
342
343      }
344    }
345  }
346 
347  //cargar en arreglo
348  $acumuladoComprometido = 0;
349  $acumuladoCausado = 0;
350  $acumuladoPagado = 0;
351  for($mes=0; $mes<12; $mes++){
352   
353    $seguimiento_financiero_todosmes[$mes]['comprometidoMes'] = isset($comprometidoMesAE[$mes])? $comprometidoMesAE[$mes] : 0;
354    $seguimiento_financiero_todosmes[$mes]['causadoMes'] = isset($causadoMesAE[$mes])? $causadoMesAE[$mes] : 0;
355    $seguimiento_financiero_todosmes[$mes]['pagadoMes'] = isset($pagadoMesAE[$mes])? $pagadoMesAE[$mes] : 0;
356   
357    $acumuladoComprometido += $seguimiento_financiero_todosmes[$mes]['comprometidoMes'];
358    $acumuladoCausado += $seguimiento_financiero_todosmes[$mes]['causadoMes'];
359    $acumuladoPagado += $seguimiento_financiero_todosmes[$mes]['pagadoMes'];
360
361  }
362 
363  //totales
364  $acum = array(
365    'acumuladoAsignado' => $acumuladoAsignado,
366    'acumuladoComprometido' => $acumuladoComprometido,
367    'acumuladoCausado' => $acumuladoCausado,
368    'acumuladoPagado' => $acumuladoPagado,
369  );
370  //de cada mes y totales
371  $seguimiento_todos_meses_financiero = array(
372    'seguimiento_financiero_todosmes' => $seguimiento_financiero_todosmes,
373    'acum' => $acum,
374  );
375
376  return $seguimiento_todos_meses_financiero;
377}
378
379/**
380 * consulta cantidad de beneficiarios del proyecto, para todos los meses (funcion utilizada para mostrar los datos seguimiento proyecto)
381 * 14 marzo 2013, por Diego Uzcategui
382 */
383function _seguimiento_beneficiario_todosmes_proyecto_load($node) {
384 
385  $seguimiento_todosbeneficiarios_todosmes = array();
386 
387  $cant_beneficiarios_meses = array();
388  for($mes=0; $mes<12; $mes++){
389    $cant_beneficiarios_meses[$mes] = 0;
390  }
391  $total_benef = 0;
392  foreach($node->field_proyecto_beneficiario as $beneficiarios) {
393    $seguimiento_beneficiario = array(
394      'nombre' => $beneficiarios['value'],
395      'cant_meses' => $cant_beneficiarios_meses,
396      'total_benef' => $total_benef,
397    );
398    $seguimiento_todosbeneficiarios_todosmes[] = $seguimiento_beneficiario;
399  }
400 
401  //consultar cantidad de beneficiarios
402  for($mes=0; $mes<12; $mes++){
403    $query = "SELECT * from {seguimiento_proyecto} where nid=%d and mes=%d";//consulta seguimiento
404    $queryResult =  db_query ( $query, $node->nid, $mes);
405    $seg = db_fetch_object ( $queryResult ) ;
406    $seg_ident = $seg->id_seg;
407    $mes_seg = $seg->mes;
408   
409    $query2 = "SELECT * from {seguimiento_proyecto_beneficiarios} where id_seg=%d";//consulta seguimiento de partidas
410    $queryResult2 =  db_query ( $query2, $seg_ident);
411   
412    while ( $seg_beneficiario = db_fetch_object ( $queryResult2 )){
413      $pos_benef = $seg_beneficiario->posicion_beneficiario;
414      $cantid_benef_mes = $seg_beneficiario->cant_beneficiarios_mes;
415      $seguimiento_todosbeneficiarios_todosmes[$pos_benef]['cant_meses'][$mes_seg] = $cantid_benef_mes;
416      $seguimiento_todosbeneficiarios_todosmes[$pos_benef]['total_benef'] += $cantid_benef_mes;
417    }
418  }
419
420  return $seguimiento_todosbeneficiarios_todosmes;
421}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.