source: sipes/0.3-modules/proyectos_operativos/accion_especifica.module @ 9ea43e0

stableversion-3.0
Last change on this file since 9ea43e0 was 9c32b86, checked in by lhernandez <lhernandez@…>, 8 años ago

se agrego la corrección para los montos de las acciones en varias pestanhas del navegador

  • Propiedad mode establecida a 100755
File size: 56.1 KB
Línea 
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&#241;o-mes-dia)
25  * @version 0.1 // (0.1)
26  *
27  */
28
29/*
30 * Implementation of hook_node_info()
31 */
32function accion_especifica_node_info() {
33  return array(
34    'accion_especifica' => array(
35      'name' => t('Acciones Especificas'),
36      'description' => '',
37      'has_title' => TRUE,
38      'title_label' => 'Nombre de la acción especifica',
39      'has_body' => FALSE,
40      'body_label' => 'Cuerpo',
41      'module' => 'accion_especifica',
42    ),
43  );
44}
45
46/*
47 * Implementation of hook_menu()
48 */
49function accion_especifica_menu() {
50  $items = array();
51  $items['admin/settings/ente_planificador/proyectos_operativos/ae'] = array(
52    'title' => t('Acciones Específicas'),
53    'page callback' => 'drupal_get_form',
54    'page arguments' => array('proyectos_operativos_admin_ae_settings'),
55    'access arguments' => array('admin planificador'),
56    'weight' => -5,
57    'type' => MENU_LOCAL_TASK,
58  );
59  return $items;
60
61}
62
63/**
64 * Implementation of proyectos_operativos_admin_settings().
65 * COnfigurar proyectos operativos.
66 */
67function proyectos_operativos_admin_ae_settings() {
68  $node_type = content_types('accion_especifica');
69  $fields = $node_type['fields'];
70  $campos = array();
71  foreach($fields as $id => $field) {
72    if ($field['module'] == 'number') {
73      $campos[$id] = $field['widget']['label'];
74    }
75  }
76  $form['accion_especifica'] = array(
77    '#type' => 'fieldset',
78    '#title' => t('Accion Específica'),
79    '#collapsible' => TRUE,
80    '#collapsed' => FALSE,
81    '#weight' => 0,
82  );
83  $form['accion_especifica']['accion_especifica_allow_ponderation'] = array(
84    '#title' => t('Permitir Acciones Especificas con igual ponderación'),
85    '#type' => 'checkbox',
86    '#default_value' => variable_get('accion_especifica_allow_ponderation', 0),
87  );
88  $form['accion_especifica']['accion_especifica_100_ponderation'] = array(
89    '#title' => t('No permitir Acciones Especificas con ponderación mayor o igual a 100'),
90    '#type' => 'checkbox',
91    '#default_value' => variable_get('accion_especifica_100_ponderation', 0),
92  );
93  $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
94  $numbers = array();
95  for($i = 1; $i < 21; $i++) {
96    $numbers[$i] = $i;
97  }
98  $form['accion_especifica']['financiamiento'] = array(
99    '#type' => 'fieldset',
100    '#title' => t('Financiamiento'),
101    '#collapsible' => TRUE,
102    '#collapsed' => FALSE,
103  );
104  $form['accion_especifica']['financiamiento']['accion_especifica_number_fields'] = array(
105    '#title' => t('Cantidad de Campos'),
106    '#type' => 'select',
107    '#default_value' => $accion_especifica_number_fields,
108    '#options' => $numbers,
109  );
110  if ($accion_especifica_number_fields) {
111    for($i = 0; $i < $accion_especifica_number_fields; $i++) {
112      $form['accion_especifica']['financiamiento']['enable_financiamiento_' . $i] = array(
113        '#type' => 'radios',
114        '#title' => t('Enable Field'),
115        '#options' => array(
116          1 => t('true'),
117          0 => t('false')
118        ),
119        '#default_value' => variable_get('enable_financiamiento_' . $i, true),
120      );
121     $form['accion_especifica']['financiamiento']['financiamiento_' . $i] = array(
122        '#type' => 'fieldset',
123        '#title' => t('field %number', array('%number' => $i + 1)),
124        '#collapsible' => TRUE,
125        '#collapsed' => FALSE,
126      );
127      $form['accion_especifica']['financiamiento']['financiamiento_' . $i]['accion_especifica_financiamiento_label_' . $i] = array(
128        '#type' => 'textfield',
129        '#title' => t('Titulo del financiamiento'),
130        //'#required' => TRUE,
131        '#weight' => -9,
132        '#default_value' => variable_get('accion_especifica_financiamiento_label_' . $i, ''),
133      );
134      $form['accion_especifica']['financiamiento']['financiamiento_' . $i]['accion_especifica_financiamiento_options_' . $i] = array(
135        '#type' => 'checkboxes',
136        '#options' => $campos,
137        '#default_value' => variable_get('accion_especifica_financiamiento_options_' . $i, array()),
138        '#title' => t('Campos a recolectar'),
139        '#multiple' => TRUE,
140      );
141    }
142  }
143  $vid = $fields['field_accion_esp_unidadm']['vid'];
144  $tree = taxonomy_get_tree($vid);
145  $option_unidadm = array();
146  if ($tree) {
147    foreach ($tree as $term) {
148      $choice = new stdClass();
149      $choice->option = array($term->tid => str_repeat('-', $term->depth) . $term->name);
150      $option_unidadm[] = $choice;
151    }
152  }
153  $form['accion_especifica']['accion_especifica_allow_unidpersona'] = array(
154    '#type' => 'select',
155    '#options' => $option_unidadm,
156    '#default_value' => variable_get('accion_especifica_allow_unidpersona', array()),
157    '#title' => t('Campos de las unidades de medida que deben relacionarse con personas'),
158    '#multiple' => TRUE,
159  );
160  $form['accion_especifica']['proyectos_operativos_muestra_accion_esp'] = array(
161    '#type' => 'checkbox',
162    '#title' => t('Recolectar la ubicacion de ejecución del proyecto.'),
163    '#default_value' => variable_get('proyectos_operativos_muestra_accion_esp', TRUE),
164  );
165
166  return system_settings_form($form);
167}
168
169/*
170 * Implementation of hook_form()
171 */
172function accion_especifica_form(&$node, $form_state) {
173  return node_content_form($node, $form_state);
174}
175
176/*
177 * Implementation of hook_access()
178 */
179function accion_especifica_access($op, $node, $account) {
180  if ($op == 'view') {
181    return user_access('admin planificador');
182  }
183  if ($op == 'create') {
184    return user_access('admin planificador');
185  }
186  if ($op == 'update') {
187    return user_access('admin planificador');
188  }
189  if ($op == 'delete') {
190    //return user_access('admin planificador');
191    return (user_access('admin planificador') || _proyectos_operativos_edita_datos_ae_access($node));
192  }
193}
194
195/**
196 * Implementation of hook_theme().
197 */
198function accion_especifica_theme() {
199  return array(
200    'proyectos_operativos_accion_especifica_crear_form' => array(
201      'arguments' => array('form' => NULL),
202    ),
203  );
204}
205
206/**
207 * Implementation of proyectos_operativos_accion_especifica_crear_form().
208 * Crear formulario de accion especifica
209 */
210function proyectos_operativos_accion_especifica_crear_form(&$form_state, $proyecto = 0, $ae = 0) {
211  if (!$ae) {
212    $ae_leido = new stdClass();
213    $ae_leido->type = 'accion_especifica';
214    $nid = 0;
215  }
216  else {
217    $ae_leido = $ae;
218    $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'];
219    $nid = $ae->nid;
220  }
221  //add breadcrumb
222  $breadcrumb = array();
223  $breadcrumb[] = l(t('Home'), '<front>');
224  $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos');
225  if ($proyecto->nid) {
226    $breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid);
227  }
228  if ($ae->nid) {
229    $breadcrumb[] = check_plain($ae->title);
230  }
231  else {
232    $breadcrumb[] = t('Agregar Acción Específica'); // Link to current URL
233  }
234  drupal_set_breadcrumb($breadcrumb);
235
236  $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
237  drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
238  drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos.js');
239  drupal_add_js($proyectos_operativos_path . '/js/accion_especifica.js');
240  $format_number = array(
241    'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
242    'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
243    'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
244  );
245  $form = array();
246  $form['#format_number'] = array('format_number' => $format_number);
247  drupal_add_js($form['#format_number'], 'setting');
248  $form['#year_current'] = array('year_current' => $proyecto->anhoproyectos_operativos);
249  drupal_add_js($form['#year_current'], 'setting');
250  $form['#esplurianual'] = ($proyecto->field_proyecto_plurianual[0]['value'] == variable_get('proyectos_operativos_plurianual', 0)) ? 1 : 0;
251  $form['#node'] = $ae_leido;
252  $form['#proyecto'] = $proyecto;
253  $fields_form = array();
254  $ejecucion = 0;
255  $acciones_especificas = array();
256  $montos = 0;
257  $montos_financiamiento = 0;
258  $montos_afinan = 0;
259  $porcentajes = array();
260  foreach($proyecto->field_proyecto_accion_esp as $accion) {
261    if ($accion['nid'] && $nid != $accion['nid']) {
262      $accion_load = node_load($accion['nid']);
263      if ($accion_load && $accion_load->type == 'accion_especifica') {
264        if ($accion_load->field_accion_esp_programacion[0]['tid']) {
265          foreach($accion_load->field_accion_esp_programacion as $programacion) {
266            foreach($programacion as $id_value => $mesp){
267              if ($id_value != 'tid') {
268                $montos +=$mesp;
269              }
270            }
271          }
272        }
273        if ($accion_load->nid != $ae->nid) {
274          if ($accion_load->field_accion_esp_total_fuent[0]['value']) {
275            $montos_financiamiento += $accion_load->field_accion_esp_total_fuent[0]['value'];
276          }
277          if ($accion_load->field_accion_esp_monto_finan[0]['value']) {
278            $montos_afinan += $accion_load->field_accion_esp_monto_finan[0]['value'];
279          }
280        }
281        $acciones_especificas[$accion_load->nid] = $accion_load;
282        $porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1;
283        $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
284      }
285    }
286    elseif($nid == $accion['nid']) {
287      $acciones_especificas[$ae->nid] = $ae;
288    }
289  }
290  $monto_restante = $form['#proyecto']->field_proyecto_monto_anual[0]['value'] - $montos;
291  $et = 100 - $ejecucion;
292  $form['#mensaje_mostrar'] =  t('Quedan @asignar % de ponderación a asignar y @montos Bs por asignar 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'])));
293  $form['#monto_restante'] =  $monto_restante;
294  $form['#montos_financiamiento'] =  $montos_financiamiento;
295  $form['#montos_afinan'] =  $montos_afinan;
296  $form['#ejecucion'] =  $ejecucion;
297  $form['#porcentajes'] =  $porcentajes;
298  $form['#montos'] =  $montos;
299  $form['#acciones_especificas'] =  $acciones_especificas;
300  $node_type = content_types('accion_especifica');
301  $fields = $node_type['fields'];
302  $field_form = array();
303  $arreglo = array(
304    'field_accion_titulo' => 'field_accion_titulo',
305    'field_accion_esp_fechai' => 'field_accion_esp_fechai',
306    'field_accion_esp_fechaf' => 'field_accion_esp_fechaf',
307    'field_accion_esp_ejecutor' => 'field_accion_esp_ejecutor',
308    'field_accion_esp_bien' => 'field_accion_esp_bien',
309  );
310  if (is_array($fields) && count($fields)) {
311    foreach($fields as $field_id => $field) {
312      if (array_key_exists($field_id, $arreglo)) {
313        $field_form[] = $field_id;
314        $fields_form[] = $field_id;
315      }
316      elseif (variable_get('proyectos_operativos_ac_d_' . $field_id, FALSE)) {
317        $field_form[] = $field_id;
318        $fields_form[] = $field_id;
319      }
320    }
321  }
322  /*caMBIAR*/
323/*
324  $form['title'] = array(
325    '#type' => 'textfield',
326    '#title' => t('Nombre de la Acción'),
327    '#required' => TRUE,
328    '#default_value' => $form['#node']->title,
329    '#maxlength' => 255,
330    '#weight' => -5,
331  );
332*/
333  if (is_array($field_form) && count($field_form)) {
334    module_load_include('inc', 'content', 'includes/content.node_form');
335    foreach ($field_form as $field_id) {
336      $field = content_fields($field_id, 'accion_especifica');
337      $form['#field_info'][$field_id] = $field;
338      $form += (array) content_field_form($form, $form_state, $field);
339    }
340  }
341  $field_form = array();
342  $arreglo['field_accion_esp_unidadm'] = 'field_accion_esp_unidadm';
343  $personas = variable_get('accion_especifica_allow_unidpersona', array());
344  if (count($personas)) {
345    $arreglo['field_accion_esp_meta_m'] = 'field_accion_esp_meta_m';
346    $arreglo['field_accion_esp_meta_f'] = 'field_accion_esp_meta_f';
347  }
348  $form['#personas'] = $personas;
349  drupal_add_js(array('accion_esp' => array('unidadmpers' => $personas)), 'setting');
350  $arreglo['field_accion_esp_ponderacion'] = 'field_accion_esp_ponderacion';
351  $arreglo['field_accion_esp_metaf'] = 'field_accion_esp_metaf';
352
353  if (is_array($fields) && count($fields)) {
354    foreach($fields as $field_id => $field) {
355      if (array_key_exists($field_id, $arreglo)) {
356        $field_form[] = $field_id;
357        $fields_form[] = $field_id;
358      }
359      elseif (variable_get('proyectos_operativos_ac_di_' . $field_id, FALSE)) {
360        $field_form[] = $field_id;
361        $fields_form[] = $field_id;
362      }
363    }
364  }
365  if (is_array($field_form) && count($field_form)) {
366    module_load_include('inc', 'content', 'includes/content.node_form');
367    foreach ($field_form as $field_id) {
368      $field = content_fields($field_id, 'accion_especifica');
369      $form['#field_info'][$field_id] = $field;
370      $form += (array) content_field_form($form, $form_state, $field);
371    }
372  }
373  $field_form = array();
374  $arreglo = array(
375    'field_accion_esp_programacion' => 'field_accion_esp_programacion',
376  );
377  if (is_array($fields) && count($fields)) {
378    foreach($fields as $field_id => $field) {
379      if (array_key_exists($field_id, $arreglo)) {
380        $field_form[] = $field_id;
381        $fields_form[] = $field_id;
382      }
383      elseif (variable_get('proyectos_operativos_ac_p_' . $field_id, FALSE)) {
384        $field_form[] = $field_id;
385        $fields_form[] = $field_id;
386      }
387    }
388  }
389  if (is_array($field_form) && count($field_form)) {
390    module_load_include('inc', 'content', 'includes/content.node_form');
391    foreach ($field_form as $field_id) {
392      $field = content_fields($field_id, 'accion_especifica');
393      $form['#field_info'][$field_id] = $field;
394      $form += (array) content_field_form($form, $form_state, $field);
395    }
396  }
397  //financiamiento
398  $arreglo_financiamiento = array();
399  $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
400  if ($accion_especifica_number_fields > 0) {
401    for($i = 0; $i < $accion_especifica_number_fields; $i++) {
402      $arreglo_financiamiento['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_label_' . $i, '') ? variable_get('accion_especifica_financiamiento_label_' . $i, '') : '';
403      $arreglo_financiamiento_fields['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_options_' . $i, array());
404    }
405  }
406/*
407  $arreglo_financiamiento = array(
408    'ordinarios' => t('Recursos Ordinarios'),
409    'propios' => t('Recursos Propios'),
410    'transferencias' => t('Transferencias'),
411    'otros' => t('Otros'),
412  );
413  $arreglo_financiamiento_fields = array();
414  $arreglo_financiamiento_fields['ordinarios'] = array(
415    'field_accion_esp_transferencias' => 'field_accion_esp_transferencias',
416    'field_accion_esp_creditosa' => 'field_accion_esp_creditosa',
417    'field_accion_esp_mcti' => 'field_accion_esp_mcti',
418  );
419  $arreglo_financiamiento_fields['propios'] = array(
420    'field_accion_esp_venta_act' => 'field_accion_esp_venta_act',
421    'field_accion_esp_activos' => 'field_accion_esp_activos',
422    'field_accion_esp_flujocaja' => 'field_accion_esp_flujocaja',
423    'field_accion_esp_ventapro' => 'field_accion_esp_ventapro',
424  );
425  $arreglo_financiamiento_fields['transferencias'] = array(
426    'field_accion_esp_donaciones' => 'field_accion_esp_donaciones',
427  );
428  $arreglo_financiamiento_fields['otros'] = array(
429    'field_accion_esp_gobernacion' => 'field_accion_esp_gobernacion',
430    'field_accion_esp_misionc' => 'field_accion_esp_misionc',
431    'field_accion_esp_bid_fona' => 'field_accion_esp_bid_fona',
432    'field_accion_esp_fonacit' => 'field_accion_esp_fonacit',
433    'field_accion_esp_fonden' => 'field_accion_esp_fonden',
434    'field_accion_esp_locti' => 'field_accion_esp_locti',
435    'field_accion_esp_fondoidi' => 'field_accion_esp_fondoidi',
436    'field_accion_esp_capitalrie' => 'field_accion_esp_capitalrie',
437    'field_accion_esp_infocentro' => 'field_accion_esp_infocentro',
438    'field_accion_esp_fidetel' => 'field_accion_esp_fidetel',
439  );
440*/
441  $total_financiamiento = 0;
442  $fields_financiamiento = array();
443
444  foreach($arreglo_financiamiento as $id_items => $titulo) {
445    if (variable_get('enable_' . $id_items, false)) {
446      if (is_array($arreglo_financiamiento_fields[$id_items]) && count($arreglo_financiamiento_fields[$id_items])) {
447        $form[$id_items] = array(
448          '#type' => 'fieldset',
449          '#title' => $titulo,
450        );
451        $field_form = array();
452/*
453  $arreglo = array(
454    'field_accion_esp_transferencias' => 'field_accion_esp_transferencias',
455    'field_accion_esp_creditosa' => 'field_accion_esp_creditosa',
456    'field_accion_esp_mcti' => 'field_accion_esp_mcti',
457  );
458*/
459        if (is_array($fields) && count($fields)) {
460          foreach($fields as $field_id => $field) {
461            if (array_key_exists($field_id, $arreglo_financiamiento_fields[$id_items]) && $arreglo_financiamiento_fields[$id_items][$field_id]) {
462              $field_form[] = $field_id;
463              $fields_form[] = $field_id;
464              $fields_financiamiento[] = $field_id;
465            }
466          }
467        }
468        $total_local = 0;
469        if (is_array($field_form) && count($field_form)) {
470          module_load_include('inc', 'content', 'includes/content.node_form');
471          foreach ($field_form as $field_id) {
472            if (isset($form['#node']->{$field_id}[0]['value'])) {
473              $total_local += $form['#node']->{$field_id}[0]['value'];
474            }
475            $field = content_fields($field_id, 'accion_especifica');
476            $form['#field_info'][$field_id] = $field;
477            $form[$id_items] += (array) content_field_form($form, $form_state, $field);
478          }
479        }
480        $form['#campo_' . $id_items] = $field_form;
481        $form['total_' . $id_items] = array(
482          '#type' => 'textfield',
483         '#title' => t('SUBTOTAL'),
484          '#default_value' => $total_local,
485          '#size' => 25,
486          '#attributes' => array('class' => 'totales-financieros subtotales'),
487        );
488        $total_financiamiento += $total_local;
489      }
490    }
491  }
492/*
493
494
495
496
497
498
499
500
501
502
503  $form['ordinarios'] = array(
504    '#type' => 'fieldset',
505    '#title' => t('Recursos Ordinarios'),
506  );
507  $fields_financiamiento = array();
508  $field_form = array();
509  $arreglo = array(
510    'field_accion_esp_transferencias' => 'field_accion_esp_transferencias',
511    'field_accion_esp_creditosa' => 'field_accion_esp_creditosa',
512    'field_accion_esp_mcti' => 'field_accion_esp_mcti',
513  );
514  if (is_array($fields) && count($fields)) {
515    foreach($fields as $field_id => $field) {
516      if (array_key_exists($field_id, $arreglo)) {
517        $field_form[] = $field_id;
518        $fields_form[] = $field_id;
519        $fields_financiamiento[] = $field_id;
520      }
521      elseif (variable_get('proyectos_operativos_ac_fo_' . $field_id, FALSE)) {
522        $field_form[] = $field_id;
523        $fields_form[] = $field_id;
524        $fields_financiamiento[] = $field_id;
525      }
526    }
527  }
528  $total_ordinarios = 0;
529  if (is_array($field_form) && count($field_form)) {
530    module_load_include('inc', 'content', 'includes/content.node_form');
531    foreach ($field_form as $field_id) {
532      if (isset($form['#node']->{$field_id}[0]['value'])) {
533        $total_ordinarios += $form['#node']->{$field_id}[0]['value'];
534      }
535      $field = content_fields($field_id, 'accion_especifica');
536      $form['#field_info'][$field_id] = $field;
537      $form['ordinarios'] += (array) content_field_form($form, $form_state, $field);
538    }
539  }
540  $form['#campo_ordinarios'] = $field_form;
541  $form['total_ordinarios'] = array(
542    '#type' => 'textfield',
543    '#title' => t('SUBTOTAL'),
544    '#default_value' => $total_ordinarios,
545    '#size' => 25,
546    '#attributes' => array('class' => 'totales-financieros subtotales'),
547  );
548
549
550
551
552
553  $form['propios'] = array(
554    '#type' => 'fieldset',
555    '#title' => t('Recursos Propios'),
556  );
557  $field_form = array();
558  $arreglo = array(
559    'field_accion_esp_venta_act' => 'field_accion_esp_venta_act',
560    'field_accion_esp_activos' => 'field_accion_esp_activos',
561    'field_accion_esp_flujocaja' => 'field_accion_esp_flujocaja',
562    'field_accion_esp_ventapro' => 'field_accion_esp_ventapro',
563  );
564  if (is_array($fields) && count($fields)) {
565    foreach($fields as $field_id => $field) {
566      if (array_key_exists($field_id, $arreglo)) {
567        $field_form[] = $field_id;
568        $fields_form[] = $field_id;
569        $fields_financiamiento[] = $field_id;
570      }
571      elseif (variable_get('proyectos_operativos_ac_fp_' . $field_id, FALSE)) {
572        $field_form[] = $field_id;
573        $fields_form[] = $field_id;
574        $fields_financiamiento[] = $field_id;
575      }
576    }
577  }
578  $total_propios = 0;
579  if (is_array($field_form) && count($field_form)) {
580    module_load_include('inc', 'content', 'includes/content.node_form');
581    foreach ($field_form as $field_id) {
582      if (isset($form['#node']->{$field_id}[0]['value'])) {
583        $total_propios += $form['#node']->{$field_id}[0]['value'];
584      }
585      $field = content_fields($field_id, 'accion_especifica');
586      $form['#field_info'][$field_id] = $field;
587      $form['propios'] += (array) content_field_form($form, $form_state, $field);
588    }
589  }
590  $form['#campo_propios'] = $field_form;
591  $form['total_propios'] = array(
592    '#type' => 'textfield',
593    '#title' => t('SUBTOTAL'),
594    '#default_value' => $total_propios,
595    '#size' => 25,
596    '#attributes' => array('class' => 'totales-financieros subtotales'),
597  );
598  $form['transferencias'] = array(
599    '#type' => 'fieldset',
600    '#title' => t('Transferencias'),
601  );
602  $field_form = array();
603  $arreglo = array(
604    'field_accion_esp_donaciones' => 'field_accion_esp_donaciones',
605  );
606  if (is_array($fields) && count($fields)) {
607    foreach($fields as $field_id => $field) {
608      if (array_key_exists($field_id, $arreglo)) {
609        $field_form[] = $field_id;
610        $fields_form[] = $field_id;
611        $fields_financiamiento[] = $field_id;
612      }
613      elseif (variable_get('proyectos_operativos_ac_fd_' . $field_id, FALSE)) {
614        $field_form[] = $field_id;
615        $fields_form[] = $field_id;
616        $fields_financiamiento[] = $field_id;
617      }
618    }
619  }
620  $total_transferencias = 0;
621  if (is_array($field_form) && count($field_form)) {
622    module_load_include('inc', 'content', 'includes/content.node_form');
623    foreach ($field_form as $field_id) {
624      if (isset($form['#node']->{$field_id}[0]['value'])) {
625        $total_transferencias += $form['#node']->{$field_id}[0]['value'];
626      }
627      $field = content_fields($field_id, 'accion_especifica');
628      $form['#field_info'][$field_id] = $field;
629      $form['transferencias'] += (array) content_field_form($form, $form_state, $field);
630    }
631  }
632  $form['#campo_transferencias'] = $field_form;
633  $form['total_transferencias'] = array(
634    '#type' => 'textfield',
635    '#title' => t('SUBTOTAL'),
636    '#default_value' => $total_transferencias,
637    '#size' => 25,
638    '#attributes' => array('class' => 'totales-financieros subtotales'),
639  );
640  $form['otros'] = array(
641    '#type' => 'fieldset',
642    '#title' => t('Otros'),
643  );
644  $field_form = array();
645  $arreglo = array(
646    'field_accion_esp_gobernacion' => 'field_accion_esp_gobernacion',
647    'field_accion_esp_misionc' => 'field_accion_esp_misionc',
648    'field_accion_esp_bid_fona' => 'field_accion_esp_bid_fona',
649    'field_accion_esp_fonacit' => 'field_accion_esp_fonacit',
650    'field_accion_esp_fonden' => 'field_accion_esp_fonden',
651    'field_accion_esp_locti' => 'field_accion_esp_locti',
652    'field_accion_esp_fondoidi' => 'field_accion_esp_fondoidi',
653    'field_accion_esp_capitalrie' => 'field_accion_esp_capitalrie',
654    'field_accion_esp_infocentro' => 'field_accion_esp_infocentro',
655    'field_accion_esp_fidetel' => 'field_accion_esp_fidetel',
656  );
657  if (is_array($fields) && count($fields)) {
658    foreach($fields as $field_id => $field) {
659      if (array_key_exists($field_id, $arreglo)) {
660        $field_form[] = $field_id;
661        $fields_form[] = $field_id;
662        $fields_financiamiento[] = $field_id;
663      }
664      elseif (variable_get('proyectos_operativos_ac_fo_' . $field_id, FALSE)) {
665        $field_form[] = $field_id;
666        $fields_form[] = $field_id;
667        $fields_financiamiento[] = $field_id;
668      }
669    }
670  }
671  $total_otros = 0;
672  $clase = 'total_otros';
673  if (is_array($field_form) && count($field_form)) {
674    module_load_include('inc', 'content', 'includes/content.node_form');
675    foreach ($field_form as $field_id) {
676      if (isset($form['#node']->{$field_id}[0]['value'])) {
677        $total_otros += $form['#node']->{$field_id}[0]['value'];
678      }
679      $field = content_fields($field_id, 'accion_especifica');
680      $form['#field_info'][$field_id] = $field;
681      $form['otros'] += (array) content_field_form($form, $form_state, $field);
682    }
683  }
684  $form['#campo_otros'] = $field_form;
685  $form['total_otros'] = array(
686    '#type' => 'textfield',
687    '#title' => t('SUBTOTAL'),
688    '#default_value' => $total_otros,
689    '#size' => 25,
690    '#attributes' => array('class' => 'totales-financieros subtotales'),
691  );
692*/
693  //$total_financiamiento = $total_otros + $total_transferencias + $total_propios + $total_ordinarios;
694  $form['total_financiamiento'] = array(
695    '#type' => 'textfield',
696    '#default_value' => $total_financiamiento,
697    '#size' => 25,
698    '#attributes' => array('class' => 'totales-financieros'),
699  );
700  $field_form = array();
701  $localizacion = variable_get('proyectos_operativos_muestra_accion_esp', TRUE);
702  if ($localizacion) {
703    $arreglo = array(
704      'field_accion_esp_localizacion' => 'field_accion_esp_localizacion',
705      'field_accion_esp_latitud' => 'field_accion_esp_latitud',
706      'field_accion_esp_longitud' => 'field_accion_esp_longitud',
707    );
708  }
709  if (is_array($fields) && count($fields)) {
710    foreach($fields as $field_id => $field) {
711      if (array_key_exists($field_id, $arreglo)) {
712        $field_form[] = $field_id;
713        $fields_form[] = $field_id;
714      }
715      elseif (variable_get('proyectos_operativos_ac_fp_' . $field_id, FALSE)) {
716        $field_form[] = $field_id;
717        $fields_form[] = $field_id;
718      }
719    }
720  }
721  if (is_array($field_form) && count($field_form)) {
722    module_load_include('inc', 'content', 'includes/content.node_form');
723    foreach ($field_form as $field_id) {
724      $field = content_fields($field_id, 'accion_especifica');
725      $form['#field_info'][$field_id] = $field;
726      $form += (array) content_field_form($form, $form_state, $field);
727    }
728  }
729  $form['#arreglo_financiamiento'] = $arreglo_financiamiento;
730  $form['#arreglo_financiamiento_fields'] = $arreglo_financiamiento_fields;
731
732  $form['#fields_financiamiento'] = $fields_financiamiento;
733  $form['#proyectos_operativos_fields'] = $fields_form;
734  $form['buttons'] = array(
735    '#prefix' => '<div class="container-inline">',
736    '#suffix' => '</div>',
737  );
738  $form['buttons']['registrar'] = array(
739    '#type' => 'submit',
740    '#default_value' => t('Aceptar'),
741    '#weight' => 100,
742  );
743  $form['buttons']['cancelar'] = array(
744    '#type' => 'submit',
745    '#default_value' => t('Cancelar'),
746    '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'),
747    '#weight' => 101,
748  );
749  $form['#proyecto_completed'] = FALSE;
750  $form['#after_build'] = array('proyectos_operativos_accion_especifica_crear_form_after_build');
751  if (!isset($form['#node']->nid) && $form['#ejecucion'] >= 100 && $form['#monto_restante'] == 0){
752    //add aditional variables
753    $aux_form = array();
754    $aux_form['#node'] = $form['#node'];
755    $aux_form['#proyecto'] = $form['#proyecto'];
756    $aux_form['#mensaje_mostrar'] = $form['#mensaje_mostrar'];
757    $aux_form['#ejecucion'] =  $form['#ejecucion'];
758    $aux_form['#porcentajes'] =  $form['#porcentajes'];
759    $aux_form['#montos'] =  $form['#montos'];
760    $aux_form['#acciones_especificas'] =  $form['#acciones_especificas'];
761
762    $aux_form['#campo_ordinarios'] = $form['#campo_ordinarios'];
763    $aux_form['#campo_propios'] = $form['#campo_propios'];
764    $aux_form['#campo_transferencias'] = $form['#campo_transferencias'];
765    $aux_form['#campo_otros'] = $form['#campo_otros'];
766
767    $aux_form['#fields_financiamiento'] = $form['#fields_financiamiento'];
768
769    $form = $aux_form;
770    $form['buttons'] = array(
771      '#prefix' => '<div class="container-inline">',
772      '#suffix' => '</div>',
773    );
774    $form['buttons']['siguiente'] = array(
775      '#type' => 'submit',
776      '#default_value' => t('Terminar'),
777      '#weight' => 100,
778    );
779    $form['buttons']['cancelar'] = array(
780      '#type' => 'submit',
781      '#default_value' => t('Cancelar'),
782      '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'),
783      '#weight' => 101,
784    );
785    $form['#proyecto_completed'] = TRUE;
786  }
787  $form['#submit'] = array('proyectos_operativos_accion_especifica_crear_form_submit');
788  return $form;
789}
790
791/*
792 * proyectos_operativos_accion_especifica_crear_form_after_build
793 * Funcion para agregar funciones javascript al formulario
794 */
795function proyectos_operativos_accion_especifica_crear_form_after_build($form, &$form_state) {
796  if (is_array($form['#arreglo_financiamiento']) && count($form['#arreglo_financiamiento'])) {
797    foreach ($form['#arreglo_financiamiento'] as $id => $macro) {
798      $nuid = str_replace('_', '-', $id);
799      if (is_array($form['#campo_' . $id]) && count($form['#campo_' . $id])) {
800        foreach ($form['#campo_' . $id] as $field_id) {
801          $form[$id][$field_id][0]['value']['#attributes']['class'] .= ' total-' . $nuid;
802          if (!isset($form[$id][$field_id]['value']['#attributes']['onchange'])) {
803            $form[$id][$field_id][0]['value']['#attributes']['onchange'] = "sumarff('" . $nuid . "');sumarff1('subtotales');";
804          }
805          else {
806            $form[$id][$field_id][0]['value']['#attributes']['onchange'] .= ";sumarff('" . $nuid . "');sumarff1('subtotales');";
807          }
808        }
809      }
810    }
811  }
812  $form['field_accion_esp_meta_m'][0]['value']['#attributes']['class'] .= ' unidad_personas';
813  $form['field_accion_esp_meta_f'][0]['value']['#attributes']['class'] .= ' unidad_personas';
814  $form['field_accion_esp_meta_m'][0]['value']['#attributes']['onchange'] .= ";accionEspecificasumunidpersonas('unidad_personas');";
815  $form['field_accion_esp_meta_f'][0]['value']['#attributes']['onchange'] .= ";accionEspecificasumunidpersonas('unidad_personas');";
816  return $form;
817
818}
819
820/*
821 * proyectos_operativos_accion_especifica_crear_form_validate
822 * Validar accion especifica
823 */
824function proyectos_operativos_accion_especifica_crear_form_validate($form, &$form_state) {
825  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
826  if ($op == t('Cancelar') || $op == t('Terminar')) {
827    return;
828  }
829  $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
830  drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
831  drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos.js');
832  drupal_add_js($proyectos_operativos_path . '/js/accion_especifica.js');
833  drupal_add_js($form['#format_number'], 'setting');
834  drupal_add_js(array('accion_esp' => array('unidadmpers' => $form['#personas'])), 'setting');
835  //validamos que el porc sea mayor que cero
836  if (!$form_state['values']['field_accion_esp_ponderacion'][0]['value'] && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] >= 100) {
837    form_set_error('field_accion_esp_ponderacion', t('La ponderaciones de la Acción especifica debe ser menor que 100'));
838  }
839
840  //validamos que el porc sea mayor que cero
841  if (!$form_state['values']['field_accion_esp_ponderacion'][0]['value'] && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] <= 0) {
842    form_set_error('field_accion_esp_ponderacion', t('La ponderaciones de la Acción especifica debe ser mayor que cero'));
843  }
844  //validamos que la ponderacion no sea mayor a 100
845  $suma_porc = $form['#ejecucion'] + $form_state['values']['field_accion_esp_ponderacion'][0]['value'];
846  if ($suma_porc > 100) {
847    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%'));
848  }
849  // validamos que la cantidad de acciones permitidas cumpla con la minima permitida
850  if (variable_get('accion_especifica_100_ponderation', 0) && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] >= 100) {
851    form_set_error('field_accion_esp_ponderacion', t('La ponderación de la Acción especifica debe ser menor o igual a 100%'));
852  }
853  //validamos que la ponderacion no se encuentre repetida
854  if (!variable_get('accion_especifica_allow_ponderation', 0) && isset($form['#porcentajes'][$form_state['values']['field_accion_esp_ponderacion'][0]['value']])) {
855    form_set_error('field_accion_esp_ponderacion', t('Ya existe una acción especifica con esta ponderación'));
856  }
857  //validamos que las fechas esten dentro de la del proyecto
858  if ($form_state['values']['field_accion_esp_fechai'][0]['value'] > $form_state['values']['field_accion_esp_fechai'][0]['value']) {
859    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'));
860  }
861  if ($form['#proyecto']->field_proyecto_fecha_i[0]['value'] > $form_state['values']['field_accion_esp_fechai'][0]['value']) {
862    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'])));
863  }
864  if ($form['#proyecto']->field_proyecto_fecha_f[0]['value'] < $form_state['values']['field_accion_esp_fechai'][0]['value']) {
865    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'])));
866  }
867  if ($form['#proyecto']->field_proyecto_fecha_i[0]['value'] > $form_state['values']['field_accion_esp_fechaf'][0]['value']) {
868    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'])));
869  }
870  if ($form['#proyecto']->field_proyecto_fecha_f[0]['value'] < $form_state['values']['field_accion_esp_fechaf'][0]['value']) {
871    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'])));
872  }
873  //obtener la fecha de inicio y fin
874  $mes = explode('-', $form_state['values']['field_accion_esp_fechai'][0]['value']);
875  $mes_inicio = 0;
876  $year_inicio = 0;
877  if (count($mes)) {
878    $mes_inicio = $mes[1] - 1;
879    $year_inicio = $mes[0];
880  }
881  //obtener la fecha de inicio y fin
882  $mes = explode('-', $form_state['values']['field_accion_esp_fechaf'][0]['value']);
883  $mes_final = 0;
884  $year_final = 0;
885  if (count($mes)) {
886    $mes_final = $mes[1] - 1;
887    $year_final = $mes[0];
888  }
889  //validamos los proyectos plurianuales
890  if ($form['#esplurianual']) {
891    //se valida que el anho de inicio sea <= año del proyecto
892    if ($form['#year_current']['year_current'] < $year_inicio) {
893      form_set_error('field_accion_esp_fechai', t('El año de la fecha de inicio de la Acción especifica (@year_i) debe ser menor o igual a la fecha de ejecución del proyecto (@year_p)', array('@year_i' => $year_inicio, '@year_p' => $form['#year_current']['year_current'])));
894    }
895    elseif ($form['#year_current']['year_current'] > $year_inicio) {
896      $mes_inicio = 0;
897    }
898    if ($form['#year_current']['year_current'] > $year_final) {
899      form_set_error('field_accion_esp_fechai', t('El año de la fecha de finalización de la Acción especifica (@year_i) debe ser mayor o igual al año de ejecución del proyecto (@year_p)', array('@year_i' => $year_final, '@year_p' => $form['#year_current']['year_current'])));
900    }
901    elseif ($form['#year_current']['year_current'] < $year_final) {
902      $mes_final = 12;
903    }
904  }
905  else {
906    if ($form['#year_current']['year_current'] != $year_inicio) {
907      form_set_error('field_accion_esp_fechai', t('El año de la fecha de inicio de la Acción especifica (@year_i) debe ser igual a la fecha de ejecución del proyecto (@year_p)', array('@year_i' => $year_inicio, '@year_p' => $form['#year_current']['year_current'])));
908    }
909    if ($form['#year_current']['year_current'] > $year_final) {
910      form_set_error('field_accion_esp_fechai', t('El año de la fecha de finalización de la Acción especifica (@year_i) debe ser igual al año de ejecución del proyecto (@year_p)', array('@year_i' => $year_final, '@year_p' => $form['#year_current']['year_current'])));
911    }
912  }
913
914  if (isset($form_state['values']['field_accion_esp_metaf'])) {
915    $suma = 0;
916    for ($i = 0; $i < 12; $i++) {
917      if ($mes_inicio <= $i && $mes_final >= $i) {
918        $valor = $i ? 'value_' . $i : 'value';
919        $suma += $form_state['values']['field_accion_esp_metaf'][0][$valor];
920      }
921    }
922    if (!$suma) {
923      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'));
924    }
925    $personas = $form['#personas'];
926    if (count($personas) && isset($personas[$form_state['values']['field_accion_esp_unidadm'][0]['value']])) {
927      $totalpersonas = $form_state['values']['field_accion_esp_meta_m'][0]['value'] + $form_state['values']['field_accion_esp_meta_f'][0]['value'];
928      if ($totalpersonas != $suma) {
929        form_set_error('field_accion_esp_meta_m', t('El total de Distribución de la Meta Fisíca de la Acción especifica debe ser igual a la cantidad de personas'));
930      }
931    }
932  }
933  //validamos la accion especifica
934  if (isset($form_state['values']['field_accion_esp_programacion']) && count($form_state['values']['field_accion_esp_programacion'])) {
935    $sumap = 0;
936    foreach($form_state['values']['field_accion_esp_programacion'] as $id_programacion => $programacion) {
937      if (is_numeric($id_programacion)) {
938        for ($i = 0; $i < 12; $i++) {
939          if ($mes_inicio <= $i && $mes_final >= $i) {
940            $valor = $i ? 'value_' . $i : 'value';
941            $sumap += (float) $programacion[$valor];
942          }
943        }
944      }
945    }
946    if (!$sumap) {
947      form_set_error('field_accion_esp_programacion', t('La Programación Financiera de la Acción especifica debe tener al menos un valor'));
948    }
949  }
950  $sumaf = 0;
951  //validamos el financiamiento
952  $first_field = FALSE;
953  if (count($form['#fields_financiamiento'])) {
954    foreach($form['#fields_financiamiento'] as $field_id) {
955      $start = (float) $form_state['values'][$field_id][0]['value'];
956      $start = number_format($start, $form['#format_number']['format_number']['decimals'], '.', '');
957      $value = preg_replace('@[^-0-9]@', '', $start);
958      if ($start && $start != $value) {
959        form_set_error($field_id, t('Solo números enteros son permitidos en la fuente de financiamiento.'));
960      }
961      if ($value < 0) {
962        form_set_error($field_id, t('Solo números positivos son permitidos en la fuente de financiamiento.'));
963      }
964      if (!$first_field) {
965        $first_field = $field_id;
966      }
967      if (isset($form_state['values'][$field_id][0]['value'])) {
968        $sumaf += $form_state['values'][$field_id][0]['value'];
969      }
970    }
971  }
972  if ($first_field && $sumaf > $sumap) {
973    form_set_error($first_field, t('Las fuentes de financiamiento (@f_financiamiento) deben ser menor o 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']))));
974  }
975  //validamos que la suma de la programacion financiera sea + las otras acciones sean inferiores o iguales a la suma total del proyecto
976  $sumaT = $form['#montos'] +$sumap;
977  if ($sumaT > $form['#proyecto']->field_proyecto_monto_anual[0]['value']) {
978    form_set_error('field_accion_esp_programacion', t('La suma de los montos de las acciones especificas (@monto) debe ser menor o igual al monto anual del proyecto (@fuente)', 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']))));
979  }
980  if ($suma_porc == 100 && $sumaT < $form['#proyecto']->field_proyecto_monto_anual[0]['value']) {
981    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']))));   
982  }
983  elseif($suma_porc < 100 && $sumaT == $form['#proyecto']->field_proyecto_monto_anual[0]['value']) {
984    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']))));
985  }
986
987}
988
989/*
990 * proyectos_operativos_accion_especifica_crear_form_submit
991 * Guardar accion especifica
992 */
993function proyectos_operativos_accion_especifica_crear_form_submit($form, &$form_state) {
994  $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
995  if ($op == t('Cancelar')) {
996    drupal_set_message(t('Se cancelo el ingreso de la AE.'));
997    $form_state['redirect'] = 'proyectosopedit/' . $form['#proyecto']->nid;
998    return;
999  }
1000  if ($op == t('Terminar')) {
1001    $form_state['redirect'] = 'proyectosopedit/' . $form['#proyecto']->nid . '/finacieros';
1002    return;
1003  }
1004  if (module_exists('hs_content_taxonomy')) {
1005    foreach ($form['#field_info'] as $field_name => $field_info) {
1006      if ($field_info['widget']['type'] == 'content_taxonomy_hs') {
1007        // Change format of values to the one Content Taxonomy expects
1008        if (is_array($form_state['values'][$field_name]['tids'])) {
1009          $values = array();
1010          foreach($form_state['values'][$field_name]['tids'] as $tid) {
1011            $values[] = array('value' => $tid);
1012            array_unshift($form_state['values'][$field_name], array('value' => $tid));
1013          }
1014          $form_state['values'][$field_name]['tids'] = $values;
1015        }
1016        else {
1017          $values[] = array('value' => $form_state['values'][$field_name]['tids']);
1018          array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids']));
1019          $form_state['values'][$field_name]['tids'] = $values;
1020        }
1021      }
1022    }
1023  }
1024  global $user;
1025  $field_form = $form['#proyectos_operativos_fields'];
1026  module_load_include('inc', 'node', 'node.pages');
1027  $node_load = $form['#node'];
1028  //obtener la fecha de inicio y fin
1029  $mes = explode('-', $form_state['values']['field_accion_esp_fechai'][0]['value']);
1030  $mes_inicio = 0;
1031  $year_inicio = 0;
1032  if (count($mes)) {
1033    $mes_inicio = $mes[1] - 1;
1034    $year_inicio = $mes[0];
1035  }
1036  //obtener la fecha de inicio y fin
1037  $mes = explode('-', $form_state['values']['field_accion_esp_fechaf'][0]['value']);
1038  $mes_final = 0;
1039  $year_final = 0;
1040  if (count($mes)) {
1041    $mes_final = $mes[1] - 1;
1042    $year_final = $mes[0];
1043  }
1044  if ($form['#year_current']['year_current'] > $year_inicio) {
1045    $mes_inicio = 0;
1046  }
1047  if ($form['#year_current']['year_current'] < $year_final) {
1048    $mes_final = 12;
1049  }
1050  $suma = 0;
1051  if (isset($form_state['values']['field_accion_esp_metaf'])) {
1052    for ($i = 0; $i < 12; $i++) {
1053      $valor = $i ? 'value_' . $i : 'value';
1054      if ($mes_inicio <= $i && $mes_final >= $i) {
1055        $suma += $form_state['values']['field_accion_esp_metaf'][0][$valor];
1056      }
1057      else {
1058        $form_state['values']['field_accion_esp_metaf'][0][$valor] = 0;
1059      }
1060    }
1061  }
1062  $sumaep = 0;
1063  if (isset($form_state['values']['field_accion_esp_programacion'])) {
1064    foreach($form_state['values']['field_accion_esp_programacion'] as $id => $programacion) {
1065      for ($i = 0; $i < 12; $i++) {
1066        $valor = $i ? 'value_' . $i : 'value';
1067        if ($mes_inicio <= $i && $mes_final >= $i) {
1068          $sumaep += $form_state['values']['field_accion_esp_programacion'][$id][$valor];
1069        }
1070        else {
1071          $form_state['values']['field_accion_esp_programacion'][$id][$valor] = 0;
1072        }
1073      }
1074    }
1075  }
1076  //sumamos las fuentes d financiamiento
1077  $sumaf = 0;
1078  $first_field = FALSE;
1079  if (count($form['#fields_financiamiento'])) {
1080    foreach($form['#fields_financiamiento'] as $field_id) {
1081      if (isset($form_state['values'][$field_id][0]['value'])) {
1082        $sumaf += $form_state['values'][$field_id][0]['value'];
1083      }
1084    }
1085  }
1086
1087  $form_values = $form_state['values'];
1088  //cambiar
1089  $node_load->title = t('Acción Específica del proyecto @nombreproyecto', array('@nombreproyecto' => $form['#proyecto']->title));
1090  if (is_array($field_form) && count($field_form)) {
1091    foreach ($field_form as $field_id) {
1092      if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) {
1093        foreach($form_values[$field_id] as $id => $value) {
1094          if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) {
1095            unset($form_values[$field_id][$id]['_error_element']);
1096          }
1097        }
1098        $node_load->{$field_id} = $form_values[$field_id];
1099      }
1100    }
1101  }
1102
1103
1104  $node_load->field_accion_esp_monto_finan[0]['value'] = $sumaep - $sumaf;
1105  $node_load->field_accion_esp_total_fuent[0]['value'] = $sumaf;
1106  $node_load->field_accion_esp_total_meta[0]['value'] = $suma;
1107  $form['#proyecto']->field_proyecto_esp_monto_finan[0]['value'] = $form['#montos_afinan'] + $node_load->field_accion_esp_monto_finan[0]['value'];
1108  $form['#proyecto']->field_proyecto_esp_total_fuent[0]['value'] = $form['#montos_financiamiento'] + $node_load->field_accion_esp_total_fuent[0]['value'];
1109
1110  $nid = FALSE;
1111  if ($node_load->nid) {
1112    $nid = TRUE;
1113    $texto = t('Modificada la Acción especifica del proyecto');
1114    $node_load->log = $texto;
1115    drupal_set_message($texto);
1116  }
1117  else {
1118    //se agrega el enlace al proyecto
1119    $node_load->uid = $user->uid;
1120    $node_load->field_accion_esp_proyecto = array();
1121    $node_load->field_accion_esp_proyecto[] = array('nid' => $form['#proyecto']->nid);
1122    $node_load->field_accion_esp_ente = array();
1123    $node_load->field_accion_esp_ente[] = array('nid' => $form['#proyecto']->field_proyecto_ente[0]['nid']);
1124    $texto = t('Agregada la Acción especifica del proyecto');
1125    $node_load->log = $texto;
1126    drupal_set_message($texto);
1127  }
1128  $node_load->revision = 1;
1129  node_save($node_load);
1130  //Se agregan los totales a financiar y fuentes de financiamiento
1131  if (!$nid) {
1132    $proyecto = $form['#proyecto'];
1133    if (!$proyecto->field_proyecto_accion_esp[0]['nid']) {
1134      $proyecto->field_proyecto_accion_esp = array();
1135    }
1136    $proyecto->field_proyecto_accion_esp[] = array('nid' => $node_load->nid);
1137    $proyecto->revision = 1;
1138    $proyecto->log = t('Agregada Acción especifica del proyecto');
1139    node_save($proyecto);
1140  }
1141  else {
1142    $proyecto = $form['#proyecto'];
1143    $proyecto->revision = 1;
1144    $proyecto->log = t('Modificada la Acción especifica del proyecto');
1145    node_save($proyecto);
1146  }
1147  if (!$_REQUEST['destination']) {
1148    // add redirect
1149    $form_state['redirect'] = 'proyectosopedit/' . $form['#proyecto']->nid . '/ae';
1150  }
1151
1152}
1153
1154/**
1155 * @ingroup themeable
1156 * @see proyectos_operativos_accion_especifica_crear_form
1157 */
1158function theme_proyectos_operativos_accion_especifica_crear_form($form) {
1159  $output = '';
1160  if (!$form['#proyecto_completed']) {
1161    $output .= '<div id="mensaje-mostrar" class="mensaje mensaje-mostrar" style="color:red;font-weight: bold;">' . $form['#mensaje_mostrar'] . '</div>';
1162    $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>';
1163    $output .= '<fieldset><legend>' . t('Distribución de la Meta Fisica de la acción Especifica') . '</legend>';
1164    $output .= drupal_render($form['field_accion_esp_unidadm']);
1165    if (isset($form['field_accion_esp_meta_m']) && $form['field_accion_esp_meta_f']) {
1166      $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>';
1167      $form['field_accion_esp_meta_m'][0]['value']['#title'] = '';
1168      $form['field_accion_esp_meta_f'][0]['value']['#title'] = '';
1169      $total = $form['field_accion_esp_meta_m'][0]['#value']['value'] + $form['field_accion_esp_meta_f'][0]['#value']['value'];
1170      $output .= '<td>' . drupal_render($form['field_accion_esp_meta_m']) . '</td>';
1171      $output .= '<td>' . drupal_render($form['field_accion_esp_meta_f']) . '</td>';
1172      $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>';
1173    }
1174    $output .= drupal_render($form['field_accion_esp_ponderacion']);
1175    $output .= drupal_render($form['field_accion_esp_metaf']);
1176    $output .= '</fieldset>';
1177    $output .= drupal_render($form['distribucion']);
1178    $output .= '<fieldset><legend>' . t('Programación Financiera de la Acción') . '</legend>' . drupal_render($form['field_accion_esp_programacion']);
1179    $ftypes = array(
1180      'tid' => t('Account'),
1181      'value' => t('Ene'),
1182      'value_1' => t('Feb'),
1183      'value_2' => t('Mar'),
1184      'value_3' => t('Abr'),
1185      'value_4' => t('May'),
1186      'value_5' => t('Jun'),
1187      'value_6' => t('Jul'),
1188      'value_7' => t('Aug'),
1189      'value_8' => t('Sep'),
1190      'value_9' => t('Oct'),
1191      'value_10' => t('Nov'),
1192      'value_11' => t('Dic'),
1193    );
1194    $output .= '<div style="width:2250px">';
1195    $i = -1;
1196    foreach ($ftypes as $ftype => $label) {
1197      if($ftype != 'tid') {
1198        $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>';
1199      }
1200      else {
1201        $output .= '<div style = "width:180px;float:left;margin-left:5px;text-align:right"><b>' . t('TOTAL') . '</b></div>';
1202      }
1203      $i++;
1204    }
1205    $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>';
1206    $output .= '</div></fieldset>';
1207    $rows = array();
1208    $row = array();
1209    $row1 = array();
1210    $cantidad_campos = count($form['#arreglo_financiamiento']);
1211    if (is_array($form['#arreglo_financiamiento']) && count($form['#arreglo_financiamiento'])) {
1212      foreach ($form['#arreglo_financiamiento'] as $id => $macro) {
1213        $row[] = array('data' => drupal_render($form[$id]), );
1214        $row1[] = array('data' => drupal_render($form['total_' . $id]), );
1215      }
1216      $rows[] = $row;
1217      $rows[] = $row1;
1218      $row = array();
1219      $row[] = array('data' => '<b>' . t('TOTAL FUENTES DE FINANCIAMIENTO') . ': </b>' . drupal_render($form['total_financiamiento']), 'colspan' => $cantidad_campos, 'align' => 'center');
1220      $rows[] = $row;
1221      $output .= '<fieldset class="width-fieldset"><legend>' . t('Fuentes de Financiamiento (Bs.)') . '</legend>' . theme('table', array(), $rows) . '</fieldset>';
1222    }
1223    $localizacion = variable_get('proyectos_operativos_muestra_accion_esp', TRUE);
1224    if ($localizacion) {
1225      $output .= '<fieldset><legend>' . t('Localización Geográfica') . '</legend>';
1226      $output .= drupal_render($form['field_accion_esp_localizacion']) . drupal_render($form['field_accion_esp_latitud']) . drupal_render($form['field_accion_esp_longitud']);
1227      $output .= '</fieldset>';
1228      $output .= drupal_render($form);
1229    }
1230  }
1231  $header = array();
1232  $cab = 6;
1233  $header[] = array('data' => t('Nro'));
1234  $header[] = array('data' => t('Nombre'));
1235  $header[] = array('data' => t('Fecha de inicio'));
1236  $header[] = array('data' => t('Fecha de Fin')); 
1237  $header[] = array('data' => t('%'));
1238  $header[] = array('data' => t('Acción'));
1239  $rows = array();
1240  $i = 1;
1241  if (count($form['#acciones_especificas'])) {
1242    $suma = 0;
1243    foreach($form['#acciones_especificas'] as $accion) {
1244      if (isset($accion->nid)) {
1245        $row = array();
1246        $row[] = array('data' => $i,);
1247        $row[] = array('data' => $accion->titulo_asignado,);
1248        //Se cambia el formato de la fecha
1249        $fecha = explode(' ', $accion->field_accion_esp_fechai[0]['value']);
1250        $formato = explode('-', $fecha[0]);
1251        $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],);
1252        //Se cambia el formato de la fecha
1253        $fecha = explode(' ', $accion->field_accion_esp_fechaf[0]['value']);
1254        $formato = explode('-', $fecha[0]);
1255        $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],);
1256        $suma += $accion->field_accion_esp_ponderacion[0]['value'];
1257        $row[] = array('data' => $accion->field_accion_esp_ponderacion[0]['value'],);
1258        $links = array();
1259        $links[] = l(t('Modificar'), 'proyectosopedit/' . $form['#proyecto']->nid . '/ae/' . $accion->nid . '/edit');
1260        $links[] = l(t('Eliminar'), 'proyectosopedit/' . $form['#proyecto']->nid . '/ae/' . $accion->nid . '/remove');
1261        $row[] = array('data' => theme('item_list', $links),);
1262        $rows[] = $row;
1263        $i++;
1264      }
1265    }
1266  }
1267  if (count($rows)) {
1268    $output .= theme('table', $header, $rows);
1269  }
1270  //no mostrar el formulario si ya se alcanzo lo asignado
1271  if ($form['#proyecto_completed']) {
1272    $output .= drupal_render($form);
1273  }
1274  return $output;
1275}
1276
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.