1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * Sistema Integral de Planificación y Presupuesto (SIPP) |
---|
5 | * @file accion_especifica.module |
---|
6 | * Drupal part Module to Sistema Integral de Planificación y Presupuesto (SIPP) |
---|
7 | * Copyright 2013 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 - Msc. Juan Vizcarrondo |
---|
24 | * @date 2013-02-02 // (año-mes-dia) |
---|
25 | * @version 0.1 // (0.1) |
---|
26 | * |
---|
27 | */ |
---|
28 | |
---|
29 | |
---|
30 | /* |
---|
31 | * Impletations of hook_form_alter() |
---|
32 | */ |
---|
33 | function accion_especifica_mcti_form_alter(&$form, $form_state, $form_id) { |
---|
34 | if ($form_id == 'proyectos_operativos_admin_settings') { |
---|
35 | $form['accion_especifica']['proyectos_operativos_muestra_proyecto_ubicacion_geografica'] = array( |
---|
36 | '#type' => 'checkbox', |
---|
37 | '#title' => t('Recolectar la ubicación geografica de la Accion EspecÃfica.'), |
---|
38 | '#default_value' => variable_get('proyectos_operativos_muestra_proyecto_ubicacion_geografica', TRUE), |
---|
39 | '#weight' => 0, |
---|
40 | ); |
---|
41 | } |
---|
42 | if ($form_id == 'proyectos_operativos_accion_especifica_crear_form') { |
---|
43 | $node_type = content_types('accion_especifica'); |
---|
44 | $fields = $node_type['fields']; |
---|
45 | foreach ($form['#parameters'] as $id => $proyecto) { |
---|
46 | if ($proyecto->type == 'accion_especifica') { |
---|
47 | $ae = $proyecto; |
---|
48 | } |
---|
49 | } |
---|
50 | if (!$ae) { |
---|
51 | $ae_leido = new stdClass(); |
---|
52 | $ae_leido->type = 'accion_especifica'; |
---|
53 | $nid = 0; |
---|
54 | } |
---|
55 | else { |
---|
56 | $ae_leido = $ae; |
---|
57 | $ae_leido->field_accion_titulo[0]['value'] = trim($ae_leido->field_accion_titulo[0]['value']) == '' ? $ae_leido->title : $ae_leido->field_accion_titulo[0]['value']; |
---|
58 | $nid = $ae->nid; |
---|
59 | } |
---|
60 | //nid node |
---|
61 | foreach ($form['#parameters'] as $id => $proyectos) { |
---|
62 | if ($proyectos->type == 'proyectos_operativos') { |
---|
63 | $proyecto = $proyectos; |
---|
64 | } |
---|
65 | } |
---|
66 | if (!$proyecto) { |
---|
67 | $proyecto = new stdClass(); |
---|
68 | $proyecto->type = 'proyectos_operativos'; |
---|
69 | } |
---|
70 | else { |
---|
71 | $proyecto = $proyecto; |
---|
72 | } |
---|
73 | $geo = variable_get('proyectos_operativos_muestra_proyecto_ubicacion_geografica', TRUE); |
---|
74 | if ($geo) { |
---|
75 | //agregando el campo geo |
---|
76 | $arreglo = array( |
---|
77 | 'field_accion_esp_geo' => 'field_accion_esp_geo', |
---|
78 | ); |
---|
79 | } |
---|
80 | if (is_array($fields) && count($fields)) { |
---|
81 | foreach ($fields as $field_id => $field) { |
---|
82 | if (array_key_exists($field_id, $arreglo)) { |
---|
83 | $field_form[] = $field_id; |
---|
84 | $fields_form[] = $field_id; |
---|
85 | } |
---|
86 | elseif (variable_get('proyectos_operativos_ac_muestra_geo_' . $field_id, FALSE)) { |
---|
87 | $field_form[] = $field_id; |
---|
88 | $fields_form[] = $field_id; |
---|
89 | } |
---|
90 | } |
---|
91 | } |
---|
92 | $ejecucion = 0; |
---|
93 | $acciones_especificas = array(); |
---|
94 | $montos = 0; |
---|
95 | $porcentajes = array(); |
---|
96 | foreach ($proyecto->field_proyecto_accion_esp as $accion) { |
---|
97 | if ($accion['nid'] && $nid != $accion['nid']) { |
---|
98 | $accion_load = node_load($accion['nid']); |
---|
99 | if ($accion_load && $accion_load->type == 'accion_especifica') { |
---|
100 | if ($accion_load->field_accion_esp_programacion[0]['tid']) { |
---|
101 | foreach ($accion_load->field_accion_esp_programacion as $programacion) { |
---|
102 | foreach ($programacion as $id_value => $mesp){ |
---|
103 | if ($id_value != 'tid') { |
---|
104 | $montos +=$mesp; |
---|
105 | } |
---|
106 | } |
---|
107 | } |
---|
108 | } |
---|
109 | $acciones_especificas[$accion_load->nid] = $accion_load; |
---|
110 | $porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1; |
---|
111 | $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value']; |
---|
112 | } |
---|
113 | } |
---|
114 | elseif ($nid == $accion['nid']) { |
---|
115 | $acciones_especificas[$ae->nid] = $ae; |
---|
116 | } |
---|
117 | } |
---|
118 | $monto_restante = $form['#proyecto']->field_proyecto_monto_anual[0]['value'] - $montos; |
---|
119 | $et = 100 - $ejecucion; |
---|
120 | if ($et != 100) { |
---|
121 | $form['#mensaje_mostrar'] = t('Se tiene @asignar % de ponderación sin asignar, con un monto de @montos BS asignados en las Acciones EspecÃficas.', array('@asignar' => $et, '@montos' => number_format($monto_restante, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']))); |
---|
122 | } |
---|
123 | else { |
---|
124 | $form['#mensaje_mostrar'] = t('Se tiene @asignar % de ponderación Asignada, con un monto total de @montos BS asignados en las Acciones EspecÃficas.', array('@asignar' => $et, '@montos' => number_format($monto_restante, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']))); |
---|
125 | } |
---|
126 | $form['#proyectos_operativos_fields'] = array_merge($form['#proyectos_operativos_fields'] , $fields_form); |
---|
127 | if (is_array($field_form) && count($field_form)) { |
---|
128 | module_load_include('inc', 'content', 'includes/content.node_form'); |
---|
129 | foreach ($field_form as $field_id) { |
---|
130 | $field = content_fields($field_id, 'accion_especifica'); |
---|
131 | $form['#field_info'][$field_id] = $field; |
---|
132 | $form += (array) content_field_form($form, $form_state, $field); |
---|
133 | } |
---|
134 | } |
---|
135 | foreach ($form['#validate'] as $id => $name) { |
---|
136 | if ($name == 'proyectos_operativos_accion_especifica_crear_form_validate') { |
---|
137 | $form['#validate'][$id] = 'proyectos_operativos_mcti_accion_especifica_crear_form_validate'; |
---|
138 | } |
---|
139 | } |
---|
140 | $form['#submit'][] = 'proyectos_operativos_mcti_accion_especifica_crear_form_submit'; |
---|
141 | } |
---|
142 | } |
---|
143 | |
---|
144 | /* |
---|
145 | * Validar accion especifica |
---|
146 | */ |
---|
147 | function proyectos_operativos_mcti_accion_especifica_crear_form_validate($form, &$form_state) { |
---|
148 | $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; |
---|
149 | if ($op == t('Cancelar') || $op == t('Terminar')) { |
---|
150 | return; |
---|
151 | } |
---|
152 | $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); |
---|
153 | drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); |
---|
154 | drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos.js'); |
---|
155 | drupal_add_js($proyectos_operativos_path . '/js/accion_especifica.js'); |
---|
156 | drupal_add_js($form['#format_number'], 'setting'); |
---|
157 | //validamos que el porc sea mayor que cero |
---|
158 | if (!$form_state['values']['field_accion_esp_ponderacion'][0]['value'] && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] >= 100) { |
---|
159 | form_set_error('field_accion_esp_ponderacion', t('La ponderaciones de la Acción especifica debe ser menor que 100')); |
---|
160 | } |
---|
161 | //validamos que el porc sea mayor que cero |
---|
162 | if (!$form_state['values']['field_accion_esp_ponderacion'][0]['value'] && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] <= 0) { |
---|
163 | form_set_error('field_accion_esp_ponderacion', t('La ponderaciones de la Acción especifica debe ser mayor que cero')); |
---|
164 | } |
---|
165 | //validamos que la ponderacion no sea mayor a 100 |
---|
166 | $suma_porc = $form['#ejecucion'] + $form_state['values']['field_accion_esp_ponderacion'][0]['value']; |
---|
167 | if ($suma_porc > 100) { |
---|
168 | form_set_error('field_accion_esp_ponderacion', t('La suma de las ponderaciones de la Acción especifica debe ser menor o igual a 1oo%')); |
---|
169 | } |
---|
170 | //validamos que la ponderacion no se encuentre repetida |
---|
171 | if (!variable_get('accion_especifica_allow_ponderation', 0) && isset($form['#porcentajes'][$form_state['values']['field_accion_esp_ponderacion'][0]['value']])) { |
---|
172 | form_set_error('field_accion_esp_ponderacion', t('Ya existe una acción especifica con esta ponderación')); |
---|
173 | } |
---|
174 | //validamos que las fechas esten dentro de la del proyecto |
---|
175 | if ($form_state['values']['field_accion_esp_fechai'][0]['value'] > $form_state['values']['field_accion_esp_fechai'][0]['value']) { |
---|
176 | form_set_error('field_accion_esp_fechai', t('La fecha de inicio de la Acción especifica debe ser menor a la fecha de fin')); |
---|
177 | } |
---|
178 | if ($form['#proyecto']->field_proyecto_fecha_i[0]['value'] > $form_state['values']['field_accion_esp_fechai'][0]['value']) { |
---|
179 | form_set_error('field_accion_esp_fechai', t('La fecha de inicio de la Acción especifica debe ser mayor o igual a la fecha de inicio del proyecto @fecha', array('@fecha' => $form['#proyecto']->field_proyecto_fecha_i[0]['value']))); |
---|
180 | } |
---|
181 | if ($form['#proyecto']->field_proyecto_fecha_f[0]['value'] < $form_state['values']['field_accion_esp_fechai'][0]['value']) { |
---|
182 | form_set_error('field_accion_esp_fechai', t('La fecha de inicio de la Acción especifica debe ser mayor o igual a la fecha de fin del proyecto @fecha', array('@fecha' => $form['#proyecto']->field_proyecto_fecha_f[0]['value']))); |
---|
183 | } |
---|
184 | if ($form['#proyecto']->field_proyecto_fecha_i[0]['value'] > $form_state['values']['field_accion_esp_fechaf'][0]['value']) { |
---|
185 | form_set_error('field_accion_esp_fechaf', t('La fecha de fin de la Acción especifica debe ser menor o igual a la fecha de inicio del proyecto @fecha', array('@fecha' => $form['#proyecto']->field_proyecto_fecha_i[0]['value']))); |
---|
186 | } |
---|
187 | if ($form['#proyecto']->field_proyecto_fecha_f[0]['value'] < $form_state['values']['field_accion_esp_fechaf'][0]['value']) { |
---|
188 | form_set_error('field_accion_esp_fechaf', t('La fecha de fin de la Acción especifica debe ser menor o igual a la fecha de fin del proyecto @fecha', array('@fecha' => $form['#proyecto']->field_proyecto_fecha_f[0]['value']))); |
---|
189 | } |
---|
190 | //obtener la fecha de inicio y fin |
---|
191 | $mes = explode('-', $form_state['values']['field_accion_esp_fechai'][0]['value']); |
---|
192 | $mes_inicio = 0; |
---|
193 | if (count($mes)) { |
---|
194 | $mes_inicio = $mes[1] - 1; |
---|
195 | } |
---|
196 | //obtener la fecha de inicio y fin |
---|
197 | $mes = explode('-', $form_state['values']['field_accion_esp_fechaf'][0]['value']); |
---|
198 | $mes_final = 0; |
---|
199 | if (count($mes)) { |
---|
200 | $mes_final = $mes[1] - 1; |
---|
201 | } |
---|
202 | if (isset($form_state['values']['field_accion_esp_metaf'])) { |
---|
203 | $suma = 0; |
---|
204 | for ($i = 0; $i < 12; $i++) { |
---|
205 | if ($mes_inicio <= $i && $mes_final >= $i) { |
---|
206 | $valor = $i ? 'value_' . $i : 'value'; |
---|
207 | $suma += $form_state['values']['field_accion_esp_metaf'][0][$valor]; |
---|
208 | } |
---|
209 | } |
---|
210 | if (!$suma) { |
---|
211 | form_set_error('field_accion_esp_metaf', t('La Distribución de la Meta FisÃca de la Acción especifica debe tener al menos un resultado')); |
---|
212 | } |
---|
213 | } |
---|
214 | //validamos la accion especifica |
---|
215 | if (isset($form_state['values']['field_accion_esp_programacion']) && count($form_state['values']['field_accion_esp_programacion'])) { |
---|
216 | $sumap = 0; |
---|
217 | foreach ($form_state['values']['field_accion_esp_programacion'] as $id_programacion => $programacion) { |
---|
218 | if (is_numeric($id_programacion)) { |
---|
219 | for ($i = 0; $i < 12; $i++) { |
---|
220 | if ($mes_inicio <= $i && $mes_final >= $i) { |
---|
221 | $valor = $i ? 'value_' . $i : 'value'; |
---|
222 | $sumap += (float) $programacion[$valor]; |
---|
223 | } |
---|
224 | } |
---|
225 | } |
---|
226 | } |
---|
227 | if (!$sumap) { |
---|
228 | form_set_error('field_accion_esp_programacion', t('La Programación Financiera de la Acción especifica debe tener al menos un valor')); |
---|
229 | } |
---|
230 | } |
---|
231 | $sumaf = 0; |
---|
232 | //validamos el financiamiento |
---|
233 | $first_field = FALSE; |
---|
234 | if (count($form['#fields_financiamiento'])) { |
---|
235 | foreach ($form['#fields_financiamiento'] as $field_id) { |
---|
236 | $start = (float) $form_state['values'][$field_id][0]['value']; |
---|
237 | $start = number_format($start, $form['#format_number']['format_number']['decimals'], '.', ''); |
---|
238 | $value = preg_replace('@[^-0-9]@', '', $start); |
---|
239 | if ($start && $start != $value) { |
---|
240 | form_set_error($field_id, t('Solo números enteros son permitidos en la fuente de financiamiento.')); |
---|
241 | } |
---|
242 | if ($value < 0) { |
---|
243 | form_set_error($field_id, t('Solo números positivos son permitidos en la fuente de financiamiento.')); |
---|
244 | } |
---|
245 | if (!$first_field) { |
---|
246 | $first_field = $field_id; |
---|
247 | } |
---|
248 | if (isset($form_state['values'][$field_id][0]['value'])) { |
---|
249 | $sumaf += $form_state['values'][$field_id][0]['value']; |
---|
250 | } |
---|
251 | } |
---|
252 | } |
---|
253 | if ($first_field && $sumaf != $sumap) { |
---|
254 | form_set_error($first_field, t('Las fuentes de financiamiento (@f_financiamiento) deben ser igual a la programación presupuestaria (@fuente)', array('@fuente' => number_format($sumap, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']), '@f_financiamiento' => number_format($sumaf, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep'])))); |
---|
255 | } |
---|
256 | //validamos que la suma de la programacion financiera sea + las otras acciones sean inferiores o iguales a la suma total del proyecto |
---|
257 | $sumaT = $form['#montos'] +$sumap; |
---|
258 | if ($suma_porc == 100 && $sumaT < $form['#proyecto']->field_proyecto_monto_anual[0]['value']) { |
---|
259 | form_set_error('field_accion_esp_programacion', t('La suma de los montos de las acciones especificas (@monto) debe ser menor igual al monto anual del proyecto (@fuente) cuando las ponderaciones de las Acciones EspecÃficas sume 100%', array('@fuente' => number_format($form['#proyecto']->field_proyecto_monto_anual[0]['value'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']), '@monto' => number_format($sumaT, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep'])))); |
---|
260 | } |
---|
261 | elseif ($suma_porc < 100 && $sumaT == $form['#proyecto']->field_proyecto_monto_anual[0]['value']) { |
---|
262 | form_set_error('field_accion_esp_ponderacion', t('La suma de las ponderaciones de la Acción especifica debe ser menor o igual a 100% (@suma_porc % alcanzado) y el monto por asignar no es suficiente para nuevas Acciones (Monto Asignado: @monto_asignado Bs, Monto del proyecto: @monto_proyecto Bs)', array('@suma_porc' => number_format($suma_porc, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']), '@monto_asignado' => number_format($sumaT, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']), '@monto_proyecto' => number_format($form['#proyecto']->field_proyecto_monto_anual[0]['value'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep'])))); |
---|
263 | } |
---|
264 | } |
---|
265 | |
---|
266 | /** |
---|
267 | * Implementation of hook_theme_registry_alter(). |
---|
268 | */ |
---|
269 | function accion_especifica_mcti_theme_registry_alter(&$theme_registry) { |
---|
270 | if ($theme_registry['proyectos_operativos_accion_especifica_crear_form']) { |
---|
271 | $theme_registry['proyectos_operativos_accion_especifica_crear_form']['function'] = 'theme_proyectos_operativos_accion_especifica_mcti_crear_form'; |
---|
272 | } |
---|
273 | } |
---|
274 | |
---|
275 | /** |
---|
276 | * tema a aplicar en el formulario proyectos_operativos_accion_especifica_crear_form |
---|
277 | */ |
---|
278 | function theme_proyectos_operativos_accion_especifica_mcti_crear_form($form) { |
---|
279 | $output = ''; |
---|
280 | if (!$form['#proyecto_completed']) { |
---|
281 | $output .= '<div id="mensaje-mostrar" class="mensaje mensaje-mostrar" style="color:red;font-weight: bold;">' . $form['#mensaje_mostrar'] . '</div>'; |
---|
282 | $output .= '<fieldset><legend>' . t('Definición de la Acción Especifica') . '</legend>' . drupal_render($form['field_accion_titulo']) . drupal_render($form['field_accion_esp_fechai']) . drupal_render($form['field_accion_esp_fechaf']);$output .= drupal_render($form['field_accion_esp_ejecutor']) . drupal_render($form['field_accion_esp_bien']) . '</fieldset>'; |
---|
283 | $output .= '<fieldset><legend>' . t('Distribución de la Meta Fisica de la acción Especifica') . '</legend>'; |
---|
284 | $output .= drupal_render($form['field_accion_esp_unidadm']); |
---|
285 | if (isset($form['field_accion_esp_meta_m']) && $form['field_accion_esp_meta_f']) { |
---|
286 | $output .= '<div id="meta-unidm-pers"><table id="unidm-persona" style="width:400px"><tr><th>' . $form['field_accion_esp_meta_m']['#title'] . '</th><th>' . $form['field_accion_esp_meta_f']['#title'] . '</th><th>' . t('Total') . '</th></tr><tr>'; |
---|
287 | $form['field_accion_esp_meta_m'][0]['value']['#title'] = ''; |
---|
288 | $form['field_accion_esp_meta_f'][0]['value']['#title'] = ''; |
---|
289 | $total = $form['field_accion_esp_meta_m'][0]['#value']['value'] + $form['field_accion_esp_meta_f'][0]['#value']['value']; |
---|
290 | $output .= '<td>' . drupal_render($form['field_accion_esp_meta_m']) . '</td>'; |
---|
291 | $output .= '<td>' . drupal_render($form['field_accion_esp_meta_f']) . '</td>'; |
---|
292 | $output .= '<td style="width:100px; text-align: center"><div class="unidad_personas_total">' . number_format($total, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '</div></td></tr></table></div>'; |
---|
293 | } |
---|
294 | $output .= drupal_render($form['field_accion_esp_ponderacion']); |
---|
295 | $output .= drupal_render($form['field_accion_esp_metaf']); |
---|
296 | $output .= '</fieldset>'; |
---|
297 | $output .= drupal_render($form['distribucion']); |
---|
298 | $output .= '<fieldset><legend>' . t('Programación Financiera de la Acción') . '</legend>' . drupal_render($form['field_accion_esp_programacion']); |
---|
299 | $ftypes = array( |
---|
300 | 'tid' => t('Account'), |
---|
301 | 'value' => t('Ene'), |
---|
302 | 'value_1' => t('Feb'), |
---|
303 | 'value_2' => t('Mar'), |
---|
304 | 'value_3' => t('Abr'), |
---|
305 | 'value_4' => t('May'), |
---|
306 | 'value_5' => t('Jun'), |
---|
307 | 'value_6' => t('Jul'), |
---|
308 | 'value_7' => t('Aug'), |
---|
309 | 'value_8' => t('Sep'), |
---|
310 | 'value_9' => t('Oct'), |
---|
311 | 'value_10' => t('Nov'), |
---|
312 | 'value_11' => t('Dic'), |
---|
313 | ); |
---|
314 | $output .= '<div style="width:2250px">'; |
---|
315 | $i = -1; |
---|
316 | foreach ($ftypes as $ftype => $label) { |
---|
317 | if($ftype != 'tid') { |
---|
318 | $output .= '<div class = "field_accion_esp_programacion_m' . $i . '_field_total field_accion_esp_programacion_totales" style = "width:143px;float:left;margin-left:10px; border: 1px solid #D5D5D5;text-align:center;overflow:auto">0</div>'; |
---|
319 | } |
---|
320 | else { |
---|
321 | $output .= '<div style = "width:180px;float:left;margin-left:5px;text-align:right"><b>' . t('TOTAL') . '</b></div>'; |
---|
322 | } |
---|
323 | $i++; |
---|
324 | } |
---|
325 | $output .= '<div class = "field_accion_esp_programacion_dato_field_total" style = "width:143px;float:left;margin-left:10px; border: 1px solid #D5D5D5;text-align:center;overflow:auto">0</div>'; |
---|
326 | $output .= '</div></fieldset>'; |
---|
327 | $rows = array(); |
---|
328 | $row = array(); |
---|
329 | $row1 = array(); |
---|
330 | $cantidad_campos = count($form['#arreglo_financiamiento']); |
---|
331 | if (is_array($form['#arreglo_financiamiento']) && count($form['#arreglo_financiamiento'])) { |
---|
332 | foreach ($form['#arreglo_financiamiento'] as $id => $macro) { |
---|
333 | $row[] = array('data' => drupal_render($form[$id]), ); |
---|
334 | $row1[] = array('data' => drupal_render($form['total_' . $id]), ); |
---|
335 | } |
---|
336 | $rows[] = $row; |
---|
337 | $rows[] = $row1; |
---|
338 | $row = array(); |
---|
339 | $row[] = array('data' => '<b>' . t('TOTAL') . ':</b>', 'colspan' => $cantidad_campos - 1, 'align' => 'right'); |
---|
340 | $row[] = array('data' => drupal_render($form['total_financiamiento']), ); |
---|
341 | $rows[] = $row; |
---|
342 | $output .= '<fieldset><legend>' . t('Fuentes de Financiamiento') . '</legend>' . theme('table', array(), $rows) . '</fieldset>'; |
---|
343 | } |
---|
344 | $localizacion = variable_get('proyectos_operativos_muestra_localizacion_accion', TRUE); |
---|
345 | if ($localizacion) { |
---|
346 | $output .= '<fieldset><legend>' . t('Localización Geográfica') . '</legend>'; |
---|
347 | $output .= drupal_render($form['field_accion_esp_localizacion']) . drupal_render($form['field_accion_esp_latitud']) . drupal_render($form['field_accion_esp_longitud']); |
---|
348 | $output .= '</fieldset>'; |
---|
349 | $output .= drupal_render($form); |
---|
350 | } |
---|
351 | |
---|
352 | $geo = variable_get('proyectos_operativos_muestra_proyecto_ubicacion_geografica', TRUE); |
---|
353 | if ($geo) { |
---|
354 | $output .= '<fieldset><legend>' . t('Localización Geográfica de Ejecución') . '</legend>'; |
---|
355 | // $output .= drupal_render($form['field_accion_esp_localizacion']) . drupal_render($form['field_accion_esp_latitud']) . drupal_render($form['field_accion_esp_longitud']); |
---|
356 | $output .= drupal_render($form['field_accion_esp_geo']); |
---|
357 | $output .= '</fieldset>'; |
---|
358 | } |
---|
359 | $output .= drupal_render($form); |
---|
360 | } |
---|
361 | $header = array(); |
---|
362 | $cab = 6; |
---|
363 | $header[] = array('data' => t('Nro')); |
---|
364 | $header[] = array('data' => t('Nombre')); |
---|
365 | $header[] = array('data' => t('Fecha de inicio')); |
---|
366 | $header[] = array('data' => t('Fecha de Fin')); |
---|
367 | $header[] = array('data' => t('%')); |
---|
368 | $header[] = array('data' => t('Acción')); |
---|
369 | $rows = array(); |
---|
370 | $i = 1; |
---|
371 | if (count($form['#acciones_especificas'])) { |
---|
372 | $suma = 0; |
---|
373 | foreach ($form['#acciones_especificas'] as $accion) { |
---|
374 | if (isset($accion->nid)) { |
---|
375 | $row = array(); |
---|
376 | $row[] = array('data' => $i,); |
---|
377 | $row[] = array('data' => $accion->titulo_asignado,); |
---|
378 | //Se cambia el formato de la fecha |
---|
379 | $fecha = explode(' ', $accion->field_accion_esp_fechai[0]['value']); |
---|
380 | $formato = explode('-', $fecha[0]); |
---|
381 | $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],); |
---|
382 | //Se cambia el formato de la fecha |
---|
383 | $fecha = explode(' ', $accion->field_accion_esp_fechaf[0]['value']); |
---|
384 | $formato = explode('-', $fecha[0]); |
---|
385 | $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],); |
---|
386 | $suma += $accion->field_accion_esp_ponderacion[0]['value']; |
---|
387 | $row[] = array('data' => $accion->field_accion_esp_ponderacion[0]['value'],); |
---|
388 | $links = array(); |
---|
389 | $links[] = l(t('Modificar'), 'proyectosopedit/' . $form['#proyecto']->nid . '/ae/' . $accion->nid . '/edit'); |
---|
390 | $links[] = l(t('Eliminar'), 'proyectosopedit/' . $form['#proyecto']->nid . '/ae/' . $accion->nid . '/remove'); |
---|
391 | $row[] = array('data' => theme('item_list', $links),); |
---|
392 | $rows[] = $row; |
---|
393 | $i++; |
---|
394 | } |
---|
395 | } |
---|
396 | } |
---|
397 | if (count($rows)) { |
---|
398 | $output .= theme('table', $header, $rows); |
---|
399 | } |
---|
400 | //no mostrar el formulario si ya se alcanzo lo asignado |
---|
401 | if ($form['#proyecto_completed']) { |
---|
402 | $output .= drupal_render($form); |
---|
403 | } |
---|
404 | return $output; |
---|
405 | } |
---|
406 | |
---|
407 | /** |
---|
408 | * Agrega el valor total de la accion especifica al campo field_accion_total_financia |
---|
409 | */ |
---|
410 | function proyectos_operativos_mcti_accion_especifica_crear_form_submit($form, &$form_state) { |
---|
411 | $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; |
---|
412 | $node_type = content_types('accion_especifica'); |
---|
413 | if ($op != t('Cancelar')) { |
---|
414 | if (isset($form_state['values']['field_accion_esp_programacion']) && count($form_state['values']['field_accion_esp_programacion'])) { |
---|
415 | $sumap = 0; |
---|
416 | foreach ($form_state['values']['field_accion_esp_programacion'] as $id_programacion => $programacion) { |
---|
417 | //obtener la fecha de inicio y fin |
---|
418 | $mes = explode('-', $form_state['values']['field_accion_esp_fechai'][0]['value']); |
---|
419 | $mes_inicio = 0; |
---|
420 | if (count($mes)) { |
---|
421 | $mes_inicio = $mes[1] - 1; |
---|
422 | } |
---|
423 | //obtener la fecha de inicio y fin |
---|
424 | $mes = explode('-', $form_state['values']['field_accion_esp_fechaf'][0]['value']); |
---|
425 | $mes_final = 0; |
---|
426 | if (count($mes)) { |
---|
427 | $mes_final = $mes[1] - 1; |
---|
428 | } |
---|
429 | if (is_numeric($id_programacion)) { |
---|
430 | for ($i = 0; $i < 12; $i++) { |
---|
431 | if ($mes_inicio <= $i && $mes_final >= $i) { |
---|
432 | $valor = $i ? 'value_' . $i : 'value'; |
---|
433 | $sumap += (float) $programacion[$valor]; |
---|
434 | } |
---|
435 | } |
---|
436 | } |
---|
437 | } |
---|
438 | } |
---|
439 | $sumaf = 0; |
---|
440 | //validamos el financiamiento |
---|
441 | $first_field = FALSE; |
---|
442 | if (count($form['#fields_financiamiento'])) { |
---|
443 | foreach ($form['#fields_financiamiento'] as $field_id) { |
---|
444 | $start = (float) $form_state['values'][$field_id][0]['value']; |
---|
445 | $start = number_format($start, $form['#format_number']['format_number']['decimals'], '.', ''); |
---|
446 | $value = preg_replace('@[^-0-9]@', '', $start); |
---|
447 | if (!$first_field) { |
---|
448 | $first_field = $field_id; |
---|
449 | } |
---|
450 | if (isset($form_state['values'][$field_id][0]['value'])) { |
---|
451 | $sumaf += $form_state['values'][$field_id][0]['value']; |
---|
452 | } |
---|
453 | } |
---|
454 | } |
---|
455 | $sumaT = $form['#montos'] + $sumap; |
---|
456 | db_query("UPDATE {content_type_proyectos_operativos} SET field_proyecto_monto_anual_value = %d WHERE nid = %d", $sumaT, $form['#proyecto']->nid); |
---|
457 | db_query("UPDATE {content_type_accion_especifica} SET field_accion_total_financia_value = %d WHERE field_accion_esp_proyecto_nid = %d", $sumaT, $form['#proyecto']->nid); |
---|
458 | } |
---|
459 | } |
---|