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