Index: 0.3-modules/proyectos_operativos_mcti/accion_especifica_mcti.module
===================================================================
--- 0.3-modules/proyectos_operativos_mcti/accion_especifica_mcti.module	(revision 303fae2a76df6c94a837b5a1db128c463f40e3ea)
+++ 0.3-modules/proyectos_operativos_mcti/accion_especifica_mcti.module	(revision 7d9e4beac05a18fc4af0e3a2ca3eb6867ae2e4ff)
@@ -43,62 +43,17 @@
     $node_type = content_types('accion_especifica');
     $fields = $node_type['fields'];
-		foreach ($form['#parameters'] as $id => $proyecto) {
-      if ($proyecto->type == 'accion_especifica') {
-        $ae = $proyecto;
-      }
-    }
-    if (!$ae) {
-   		$ae_leido = new stdClass();
-    	$ae_leido->type = 'accion_especifica';
-    	$nid = 0;
- 	  }
-  	else {
-    	$ae_leido = $ae;
-   		$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'];
-    	$nid = $ae->nid;
-  	}
-    //nid node
-    foreach ($form['#parameters'] as $id => $proyectos) {
-      if ($proyectos->type == 'proyectos_operativos') {
-        $proyecto = $proyectos;
-      }
-    }
-    if (!$proyecto) {
-      $proyecto = new stdClass();
-      $proyecto->type = 'proyectos_operativos';
-    }
-    else {
-      $proyecto = $proyecto;
-    }
-    $geo = variable_get('proyectos_operativos_muestra_proyecto_ubicacion_geografica', TRUE);
-    if ($geo) {
-      //agregando el campo geo
-      $arreglo = array(
-        'field_accion_esp_geo' => 'field_accion_esp_geo',
-      );
-    }
-    if (is_array($fields) && count($fields)) {
-      foreach ($fields as $field_id => $field) {
-        if (array_key_exists($field_id, $arreglo)) {
-          $field_form[] = $field_id;
-          $fields_form[] = $field_id;
-        }
-        elseif (variable_get('proyectos_operativos_ac_muestra_geo_' . $field_id, FALSE)) {
-          $field_form[] = $field_id;
-          $fields_form[] = $field_id;
-        }
-      }
-    }
-		$ejecucion = 0;
- 	  $acciones_especificas = array();
+
+    $proyecto = $form['#proyecto'];
+    $ae_leido = $form['#node'];
+    $ejecucion = 0;
     $montos = 0;
     $porcentajes = array();
-    foreach ($proyecto->field_proyecto_accion_esp as $accion) {
+    foreach($proyecto->field_proyecto_accion_esp as $accion) {
       if ($accion['nid'] && $nid != $accion['nid']) {
         $accion_load = node_load($accion['nid']);
         if ($accion_load && $accion_load->type == 'accion_especifica') {
           if ($accion_load->field_accion_esp_programacion[0]['tid']) {
-            foreach ($accion_load->field_accion_esp_programacion as $programacion) {
-              foreach ($programacion as $id_value => $mesp){
+            foreach($accion_load->field_accion_esp_programacion as $programacion) {
+              foreach($programacion as $id_value => $mesp){
                 if ($id_value != 'tid') {
                   $montos +=$mesp;
@@ -111,32 +66,53 @@
           $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value'];
         }
-   	  }
-      elseif ($nid == $accion['nid']) {
-     	  $acciones_especificas[$ae->nid] = $ae;
-   	  }
-    }
-	  $monto_restante = $form['#proyecto']->field_proyecto_monto_anual[0]['value'] - $montos;
+      }
+      elseif($nid == $accion['nid']) {
+        $acciones_especificas[$ae->nid] = $ae;
+      }
+    }
     $et = 100 - $ejecucion;
-    if ($et != 100) {
-	    $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'])));
-    }
-    else {
-      $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'])));
-    }
-		$form['#proyectos_operativos_fields'] = array_merge($form['#proyectos_operativos_fields'] , $fields_form);
-    if (is_array($field_form) && count($field_form)) {
-      module_load_include('inc', 'content', 'includes/content.node_form');
-      foreach ($field_form as $field_id) {
-        $field = content_fields($field_id, 'accion_especifica');
-        $form['#field_info'][$field_id] = $field;
-        $form += (array) content_field_form($form, $form_state, $field);
-      }
-    }
-    foreach ($form['#validate'] as $id => $name) {
-	    if ($name == 'proyectos_operativos_accion_especifica_crear_form_validate') {
-		  	$form['#validate'][$id] = 'proyectos_operativos_mcti_accion_especifica_crear_form_validate';
-	    }
-   	}
-   	$form['#submit'][] = 'proyectos_operativos_mcti_accion_especifica_crear_form_submit';
+    $form['#mensaje_mostrar'] =  t('Quedan @asignar% de ponderaciÃ³n en las Acciones EspecÃ­ficas.', array('@asignar' => $et));
+
+    //agregando el campo geo
+    if (variable_get('proyectos_operativos_muestra_proyecto_ubicacion_geografica', TRUE)) {
+      $arreglo = array(
+        'field_accion_esp_geo' => 'field_accion_esp_geo',
+      );
+      if (is_array($fields) && count($fields)) {
+        foreach ($fields as $field_id => $field) {
+          if (array_key_exists($field_id, $arreglo)) {
+            $field_form[] = $field_id;
+            $form['#proyectos_operativos_fields'][] = $field_id;
+          }
+          elseif (variable_get('proyectos_operativos_ac_muestra_geo_' . $field_id, FALSE)) {
+            $field_form[] = $field_id;
+            $form['#proyectos_operativos_fields'][] = $field_id;
+          }
+        }
+      }
+
+     if (is_array($field_form) && count($field_form)) {
+       module_load_include('inc', 'content', 'includes/content.node_form');
+       foreach ($field_form as $field_id) {
+         $field = content_fields($field_id, 'accion_especifica');
+         $form['#field_info'][$field_id] = $field;
+         $form += (array) content_field_form($form, $form_state, $field);
+       }
+     }
+   }
+   foreach ($form['#validate'] as $id => $name) {
+     if ($name == 'proyectos_operativos_accion_especifica_crear_form_validate') {
+       $form['#validate'][$id] = 'proyectos_operativos_mcti_accion_especifica_crear_form_validate';
+     }
+   }
+   $nuevo_submit = array(); 
+   foreach ($form['#submit'] as $id => $name) {
+     if ($name == 'proyectos_operativos_accion_especifica_crear_form_submit') {
+       $nuevo_submit[] = 'proyectos_operativos_mcti_accion_especifica_crear_form_submit';
+     }
+     $nuevo_submit[] = $name;
+   }
+   $form['#esplurianual'] = ($proyecto->field_proyecto_plurianual['value'] == 'SI') ? 1 : 0;
+   $form['#submit'] = $nuevo_submit; 
   }
 }
@@ -155,8 +131,10 @@
   drupal_add_js($proyectos_operativos_path . '/js/accion_especifica.js');
   drupal_add_js($form['#format_number'], 'setting');
+  drupal_add_js(array('accion_esp' => array('unidadmpers' => $form['#personas'])), 'setting');
   //validamos que el porc sea mayor que cero
   if (!$form_state['values']['field_accion_esp_ponderacion'][0]['value'] && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] >= 100) {
     form_set_error('field_accion_esp_ponderacion', t('La ponderaciones de la AcciÃ³n especifica debe ser menor que 100'));
   }
+
   //validamos que el porc sea mayor que cero
   if (!$form_state['values']['field_accion_esp_ponderacion'][0]['value'] && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] <= 0) {
@@ -166,6 +144,10 @@
   $suma_porc = $form['#ejecucion'] + $form_state['values']['field_accion_esp_ponderacion'][0]['value'];
   if ($suma_porc > 100) {
-    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%'));
-  }
+    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%'));
+  }
+  // validamos que la cantidad de acciones permitidas cumpla con la minima permitida
+  if (variable_get('accion_especifica_100_ponderation', 0) && $form_state['values']['field_accion_esp_ponderacion'][0]['value'] >= 100) {
+    form_set_error('field_accion_esp_ponderacion', t('La ponderaciÃ³n de la AcciÃ³n especifica debe ser menor o igual a 100%'));
+  } 
   //validamos que la ponderacion no se encuentre repetida
   if (!variable_get('accion_especifica_allow_ponderation', 0) && isset($form['#porcentajes'][$form_state['values']['field_accion_esp_ponderacion'][0]['value']])) {
@@ -211,9 +193,18 @@
       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'));
     }
+    /*
+    $personas = $form['#personas'];
+    if (count($personas) && isset($personas[$form_state['values']['field_accion_esp_unidadm'][0]['value']])) {
+      $totalpersonas = $form_state['values']['field_accion_esp_meta_m'][0]['value'] + $form_state['values']['field_accion_esp_meta_f'][0]['value'];
+      if ($totalpersonas != $suma) {
+        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'));
+      }
+    }
+   */
   }
   //validamos la accion especifica
   if (isset($form_state['values']['field_accion_esp_programacion']) && count($form_state['values']['field_accion_esp_programacion'])) {
     $sumap = 0;
-    foreach ($form_state['values']['field_accion_esp_programacion'] as $id_programacion => $programacion) {
+    foreach($form_state['values']['field_accion_esp_programacion'] as $id_programacion => $programacion) {
       if (is_numeric($id_programacion)) {
         for ($i = 0; $i < 12; $i++) {
@@ -233,5 +224,5 @@
   $first_field = FALSE;
   if (count($form['#fields_financiamiento'])) {
-    foreach ($form['#fields_financiamiento'] as $field_id) {
+    foreach($form['#fields_financiamiento'] as $field_id) {
       $start = (float) $form_state['values'][$field_id][0]['value'];
       $start = number_format($start, $form['#format_number']['format_number']['decimals'], '.', '');
@@ -253,12 +244,4 @@
   if ($first_field && $sumaf != $sumap) {
     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']))));
-  }
-  //validamos que la suma de la programacion financiera sea + las otras acciones sean inferiores o iguales a la suma total del proyecto
-  $sumaT = $form['#montos'] +$sumap;
-  if ($suma_porc == 100 && $sumaT < $form['#proyecto']->field_proyecto_monto_anual[0]['value']) {
-    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']))));    
-  }
-  elseif ($suma_porc < 100 && $sumaT == $form['#proyecto']->field_proyecto_monto_anual[0]['value']) {
-    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']))));
   }
 }
@@ -277,5 +260,5 @@
  */
 function theme_proyectos_operativos_accion_especifica_mcti_crear_form($form) {
-$output = '';
+  $output = '';
   if (!$form['#proyecto_completed']) {
     $output .= '<div id="mensaje-mostrar" class="mensaje mensaje-mostrar" style="color:red;font-weight: bold;">' . $form['#mensaje_mostrar'] . '</div>';
@@ -342,5 +325,5 @@
       $output .= '<fieldset><legend>' . t('Fuentes de Financiamiento') . '</legend>' . theme('table', array(), $rows) . '</fieldset>';
     }
-    $localizacion = variable_get('proyectos_operativos_muestra_localizacion_accion', TRUE);
+    $localizacion = variable_get('proyectos_operativos_muestra_accion_esp', TRUE);
     if ($localizacion) {
       $output .= '<fieldset><legend>' . t('LocalizaciÃ³n GeogrÃ¡fica') . '</legend>'; 
@@ -353,5 +336,4 @@
     if ($geo) {
       $output .= '<fieldset><legend>' . t('LocalizaciÃ³n GeogrÃ¡fica de EjecuciÃ³n') . '</legend>'; 
-     // $output .= drupal_render($form['field_accion_esp_localizacion']) . drupal_render($form['field_accion_esp_latitud']) . drupal_render($form['field_accion_esp_longitud']);
       $output .= drupal_render($form['field_accion_esp_geo']);
       $output .= '</fieldset>';
@@ -412,30 +394,4 @@
   $node_type = content_types('accion_especifica');
   if ($op != t('Cancelar')) {
-    if (isset($form_state['values']['field_accion_esp_programacion']) && count($form_state['values']['field_accion_esp_programacion'])) {
-      $sumap = 0;
-      foreach ($form_state['values']['field_accion_esp_programacion'] as $id_programacion => $programacion) {
-				//obtener la fecha de inicio y fin
-  			$mes = explode('-', $form_state['values']['field_accion_esp_fechai'][0]['value']);
-  			$mes_inicio = 0;
-  			if (count($mes)) {
-    			$mes_inicio = $mes[1] - 1;
-  			}
- 			 //obtener la fecha de inicio y fin
-  		 $mes = explode('-', $form_state['values']['field_accion_esp_fechaf'][0]['value']);
-  		 $mes_final = 0;
-  		 if (count($mes)) {
-    		 $mes_final = $mes[1] - 1;
-  		 }
-       if (is_numeric($id_programacion)) {
-         for ($i = 0; $i < 12; $i++) {
-            if ($mes_inicio <= $i && $mes_final >= $i) {
-              $valor = $i ? 'value_' . $i : 'value';
-              $sumap += (float) $programacion[$valor];
-            }
-          }
-        }
-      }
-    }
-    $sumaf = 0;
     //validamos el financiamiento
     $first_field = FALSE;
@@ -453,7 +409,10 @@
       }
     }
-    $sumaT = $form['#montos'] + $sumap;
-    db_query("UPDATE {content_type_proyectos_operativos} SET field_proyecto_monto_anual_value = %d WHERE nid = %d", $sumaT, $form['#proyecto']->nid);
-    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);
+    $sumaT = $form['#montos'] + $sumaf;
+//drupal_set_message('la suma' . $sumaT . '. la suma' . ',' . $sumaf . ', montos' . $form['#montos']);
+    $form['#proyecto']->field_proyecto_monto_anual[0]['value'] = $sumaT;
+    if (!$form['#esplurianual']) {
+      $form['#proyecto']->field_proyecto_total[0]['value'] = $sumaT;
+    }
   }
 }
