source: sipes/0.3-modules/proyectos_operativos_seguimiento/includes/proyecto/seguimiento_proyecto_datospormes_modificar.forms.inc~ @ 669d26e

stable
Last change on this file since 669d26e was 669d26e, checked in by Sipes Apn <root@…>, 7 años ago

se realizaron las correciones relacionadas al contador de fechas

  • Propiedad mode establecida a 100755
File size: 26.2 KB
Línea 
1<?php
2  /**
3  * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana
4  * @file proyecto_operativo_seguimiento.module
5  * Drupal part Module to code proyectos operativos module
6  * Copyright 2012 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL)
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21  *
22  * @author CENDITEL Merida - Ing. Diego Uzcategui
23  * @date 2013-02-07 // (anno-mes-dia)
24  * Modificado
25  * @author CENDITEL Merida - Msc. Juan Vizcarrondo
26  * @date 2013-11-19 // (anno-mes-dia)
27  * Correccion de meses y formato numerico
28  * @version 0.1
29  *
30  */
31
32/**
33 * Definicion del Formulario
34 */
35function seguimiento_proyecto_datospormes_modificar_form($form_state, $node, $mes = 0, $field = 'full') {
36  if (!_mes_habilitado_para_seguimiento($mes)) {
37    return FALSE;
38  }
39  $mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
40
41  $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
42  drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
43  $modulo_seguimiento_proyecto_y_aes_path = drupal_get_path('module', 'accion_especifica_de_proyecto_seguimiento');
44  drupal_add_js($modulo_seguimiento_proyecto_y_aes_path . '/js/seg_proyecto_validaciones_original.js');
45  $settings['accion_especifica_de_proyecto_seguimiento'] = _cargarconfiguracioncolorimetria();
46  drupal_add_js($settings, 'setting');
47  $format_number = array(
48    'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
49    'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
50    'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
51  );
52  $form['#format_number'] = array('format_number' => $format_number);
53  drupal_add_js($form['#format_number'], 'setting');
54  $meses = json_decode(MESES);
55
56  drupal_set_title(t('Seguimiento y Control de Proyecto Operativo'.' (mes de '.$meses[$mes -1].')'));
57  $form = array();
58
59  $campo = '';
60  $form['#node'] = $node;
61  $form['#mes'] = $mes -1;
62 
63  $form['#ftypes'] = array(
64    'value' => t('January'),
65    'value_1' => t('February'),
66    'value_2' => t('March'),
67    'value_3' => t('April'),
68    'value_4' => t('May'),
69    'value_5' => t('June'),
70    'value_6' => t('July'),
71    'value_7' => t('August'),
72    'value_8' => t('September'),
73    'value_9' => t('Octuber'),
74    'value_10' => t('November'),
75    'value_11' => t('December'),
76  );
77  $output = '';
78
79  $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes);
80
81  //estado
82  $estado = ((isset($consultaseguimientoactual['segmes']['estado'])) && ($consultaseguimientoactual['segmes']['estado'] > 0) )? $consultaseguimientoactual['segmes']['estado'] : -1;
83  $form['#state_creation'] = $estado;
84  //get first state
85  if ($estado == -1 && module_exists('workflow')) {
86    $wid = workflow_get_workflow_for_type('proyectos_operativos');
87    if ($wid) {
88      $form['#state_creation'] = _workflow_creation_state($wid);
89    }
90  }
91  $fecha = explode('-', $node->field_proyecto_fecha_i[0]['value']);
92  $mes_inicio = (int) $fecha[1];
93  $mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
94  if ($mes_inicio <= ($mes_final + 1)) {
95    $form['es_acumulativo'] = array(
96      '#type' => 'select',
97      '#options' => array('No', 'Si'),
98      '#default_value' => ($node->es_acumulativo) ? 1 : 0,
99    );
100  }
101
102  $header = array();
103  $header[] = array('data' => t('Partida'));
104  $header[] = array('data' => t('Asignado'));
105  $header[] = array('data' => t('Comprometido'));
106  $header[] = array('data' => t('Causado'));
107  $header[] = array('data' => t('Pagado'));
108  $header[] = array('data' => t('% de Inversión'));
109  $header[] = array('data' => t('Estatus de la Inversión'));
110  $header[] = array('data' => t('Información Complementaria'));
111 
112  //calcular variacion por reformulacion
113  $variacion_planificado_mes = _seguimiento_mesactual_metafisica_proyecto_reformulaciones_load($node, $mes);
114  $valor_texto = $mes > 0 ? 'value_' . $mes : 'value';
115 
116  $cant_metafisica_planif = $node->field_proyecto_meta_fisica[0][$valor_texto] + $variacion_planificado_mes;
117  $disabled = $cant_metafisica_planif == 0 ? TRUE : FALSE;
118  $form['#metafisica_con_planificado_cero'] = $cant_metafisica_planif == 0 ? 1 : 0;
119 
120  $form['cantidad_metafisica_planificado'] = array(
121    //'#title' => t('Ejecutado Meta Fisica'),
122    '#type' => 'textfield',
123    '#size' => 15,
124    '#default_value' => $cant_metafisica_planif,
125    '#attributes' => array('class' => 'number campo-asignado'),
126  ); 
127 
128  $seg_proyecto_path = drupal_get_path('module', 'accion_especifica_de_proyecto_seguimiento');
129  drupal_add_js($seg_proyecto_path . '/js/seguimiento_proyecto.js');
130 
131  $cant_metafisica_ej = isset($consultaseguimientoactual['segmes']['ejecutadometafisica']) ? $consultaseguimientoactual['segmes']['ejecutadometafisica'] : 0;
132  //op field show
133  $form['#op_fields'] = $field;
134
135  if ($field == 'comentario_metafisica' || $field == 'full') {
136    $form['cantidad_metafisica_ejecutado'] = array(
137      //'#title' => t('Ejecutado Meta Fisica'),
138      '#type' => 'textfield',
139      '#size' => 15,
140      '#default_value' => $cant_metafisica_ej,
141     // '#disabled' => $disabled,
142      '#attributes' => array('class' => 'number', 'onchange' => "valpositivo('" . 'cantidad-metafisica-ejecutado' . "');calculaporc_metafisica('" . "');valenterometafisica('cantidad-metafisica-ejecutado')"),
143    );
144 
145    $zonacritica1 = $cant_metafisica_planif ? $cant_metafisica_ej/$cant_metafisica_planif : -1;
146  //  $porczonacritica1 = $zonacritica1 >= 0 ? ($zonacritica1 * 100) . '%' : 'N/A';
147    $porczonacritica1 = $zonacritica1 >= 0 ? ($zonacritica1 * 100) . '%' : $cant_metafisica_ej ? 'N/D' : 'N/A';     
148    $form['cantidad_metafisica_porcen'] = array(
149      '#type' => 'textfield',
150      '#default_value' => $porczonacritica1,
151      '#size' => 15,
152      '#disabled' => TRUE,
153      '#attributes' => array('class' => 'number',),
154    );
155 
156    $infocomplementaria_fisica = isset($consultaseguimientoactual['segmes']['infocomplementaria_metafisica']) ? $consultaseguimientoactual['segmes']['infocomplementaria_metafisica'] : '';
157    $form['comentario_metafisica'] = array(
158      '#title' => t('Información Complementaria (Meta Física)'),
159      '#type' => 'textarea',
160      '#default_value' => $infocomplementaria_fisica,
161    );
162  }
163  if ($field == 'comentario_informacionfinanciera' || $field == 'full') {
164    $infocomplementaria_financiera = isset($consultaseguimientoactual['segmes']['infocomplementaria_metafinanciera']) ? $consultaseguimientoactual['segmes']['infocomplementaria_metafinanciera'] : '';
165    $form['comentario_informacionfinanciera'] = array(
166      '#title' => t('Información Complementaria (Financiera)'),
167      '#type' => 'textarea',
168      '#default_value' => $infocomplementaria_financiera,
169    );
170  }
171
172  if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE) && $field == 'comentario_metafisica' || $field == 'full') { 
173    $header3 = array();
174    $header3[] = array('data' => t('Beneficiario'));
175    $header3[] = array('data' => t('Cantidad de Beneficiarios'));
176    $cantbeneficiario_mes = 0;
177    foreach($node->field_proyecto_beneficiario as $id => $beneficiarios) {
178      foreach($consultaseguimientoactual['seguimientos_beneficiarios'] as $seg_benef){
179        if($id == $seg_benef['posicion_beneficiario']){
180          $cantbeneficiario_mes = isset($seg_benef['cant_beneficiarios_mes'])? $seg_benef['cant_beneficiarios_mes']:0;
181          break;
182        }
183      }
184      $form['tipobeneficiario_'.$id] = array(
185        '#type' => 'textfield',
186        '#default_value' => $cantbeneficiario_mes,
187        '#size' => 15,
188        '#disabled' => FALSE,
189        '#attributes' => array('class' => 'number', 'onchange' => "valpositivo('tipobeneficiario-". $id . "');valenterometafisica('tipobeneficiario-". $id . "')"),
190      );
191    }
192  }
193
194 
195  $form['buttons'] = array(
196    '#prefix' => '<div class="container-inline">',
197    '#suffix' => '</div>',
198  );
199
200  $form['buttons']['submit'] = array(
201    '#type' => 'submit',
202    '#value' => t('Guardar'),
203  );
204  $form['buttons']['cancel'] = array('#value' => l('Cancelar', 'node/' . $form['#node']->nid . '/seguimiento_proyecto'));
205  return $form;
206}
207
208
209/**
210 * Implementation of hook_theme().
211 */
212function proyecto_operativo_seguimiento_theme() {
213  return array(
214    'seguimiento_proyecto_datospormes_modificar_form' => array(
215      'arguments' => array('form' => NULL),
216    ),
217  );
218}
219/**
220 * Formato para el formulario (campos en tablas y carga de algunos datos)
221 */
222function theme_seguimiento_proyecto_datospormes_modificar_form($form) {
223  $meses = json_decode(MESES);
224  $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
225  drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
226  $modulo_seguimiento_proyecto_y_aes_path = drupal_get_path('module', 'accion_especifica_de_proyecto_seguimiento');
227  drupal_add_js($modulo_seguimiento_proyecto_y_aes_path . '/js/seg_proyecto_validaciones_original.js');
228  drupal_add_js($form['#format_number'], 'setting');
229  $header = array();
230  $header[] = array('data' => t('AE'));
231  $header[] = array('data' => t('Asignado'));
232  $header[] = array('data' => t('Comprometido'));
233  $header[] = array('data' => t('Causado'));
234  $header[] = array('data' => t('Pagado'));
235  $header[] = array('data' => t('% de Inversión'));
236  $header[] = array('data' => t('Estatus de la Inversión'));
237 
238  $rows = array();
239  $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($form['#node'], $form['#mes']);
240  $transiciones_dispo = _obtener_transiciones_disponibles($form['#node'], $form['#mes']);
241
242  $status_actual = t('Por ingresar');
243  if (isset($transiciones_dispo['nombre_estado_actual'])) {
244    $status_actual = $transiciones_dispo['nombre_estado_actual'];
245  }
246  $seguimiento_financiero_proyecto = _cargar_totales_seguimiento_aes_delproyecto($form['#node'], $form['#mes']);
247
248  foreach ($seguimiento_financiero_proyecto['seg_financiero_aes'] as $acciones_especif) {
249      $asignadov = $acciones_especif['totalAsignadoAEs'];
250      $causadov = $acciones_especif['totalCausadoAEs'];
251      $estatus_ejecucion = _calcularzonacritica($asignadov, $causadov);
252      $porczonacritica = $estatus_ejecucion['porczonacritica'];
253      $textozona = $estatus_ejecucion['textozona'];
254      $colorzona = $estatus_ejecucion['colorzona'];
255      $colorfontzona = $estatus_ejecucion['colorfontzona'];
256     
257      $nodo_ae = node_load($acciones_especif['idnodosAEs']);
258
259      $row = array();
260      $row[] = array('data' =>  $acciones_especif['nombreAEs'],);
261      if(_mes_dentro_de_duracion_ae_proyecto($nodo_ae, $form['#mes'])){
262       
263        $row[] = array('data' => number_format($acciones_especif['totalAsignadoAEs'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
264        $row[] = array('data' => number_format($acciones_especif['totalComprometidoAEs'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
265        $row[] = array('data' => number_format($acciones_especif['totalCausadoAEs'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
266        $row[] = array('data' => number_format($acciones_especif['totalPagadoAEs'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
267        $row[] = array('data' => $porczonacritica,);
268        $row[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona, 'id' => $partida['tid'] . '-inversion-form',);
269      }else{
270        $row[] = array('data' => '-',);
271        $row[] = array('data' => '-',);
272        $row[] = array('data' => '-',);
273        $row[] = array('data' => '-',);
274        $row[] = array('data' => '-',);
275        $row[] = array('data' => '-',);
276      }
277      $rows[] = $row;
278  }
279      $row = array();
280      $row[] = array('data' =>  'Acumulado',);
281      $row[] = array('data' => number_format($seguimiento_financiero_proyecto['seg_financiero_proyecto']['TotalAsignadoProyecto'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
282      $row[] = array('data' => number_format($seguimiento_financiero_proyecto['seg_financiero_proyecto']['TotalComprometidoProyecto'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
283      $row[] = array('data' => number_format($seguimiento_financiero_proyecto['seg_financiero_proyecto']['TotalCausadoProyecto'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
284      $row[] = array('data' => number_format($seguimiento_financiero_proyecto['seg_financiero_proyecto']['TotalPagadoProyecto'], $form['#format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']),);
285      $row[] = array('data' => '', 'colspan' => 2);
286      $rows[] = $row;
287   
288  $node= $form['#node'];
289 
290  $header2 = array();
291  $header2[] = array('data' => t('Planificado'));
292  $header2[] = array('data' => t('Ejecutado'));
293  $header2[] = array('data' => t('% de Logro'));
294  $header2[] = array('data' => t('Estatus de la Inversión'));
295  $rows2 = array();
296 
297      $planificadov = $form['cantidad_metafisica_planificado']['#value'];
298      $ejecutadov = $form['cantidad_metafisica_ejecutado']['#value'];
299      $estatus_ejecucion = _calcularzonacritica($planificadov, $ejecutadov);
300      $porczonacritica = $estatus_ejecucion['porczonacritica'];
301      $textozona = $estatus_ejecucion['textozona'];
302      $colorzona = $estatus_ejecucion['colorzona'];
303      $colorfontzona = $estatus_ejecucion['colorfontzona'];
304     
305  $row2 = array();
306      $row2[] = array('data' => drupal_render($form['cantidad_metafisica_planificado']),);
307      $row2[] = array('data' => drupal_render($form['cantidad_metafisica_ejecutado']),);
308      $row2[] = array('data' => drupal_render($form['cantidad_metafisica_porcen']),);
309      $row2[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona, 'id' => 'metafisica-inversion-form',);
310  $rows2[] = $row2;
311 
312 
313  $output = '';
314 
315  $output .= '<br>';
316
317  $seguimiento_proyecto = _seguimiento_mesactual_proyecto_load($node, $i);
318  $state_name = t("Por ingresar");
319  if (workflow_get_state_name($seguimiento_proyecto['segmes']['estado'])) {
320    $state_name = workflow_get_state_name($seguimiento_proyecto['segmes']['estado']);
321  }
322
323  $grupo = explode('-', $form['#grupo']['label']);
324  $output .= '<fieldset><legend>Datos del Proyecto Operativo</legend>';
325  $output .= '<b>Código del Proyecto:</b> '. $node->field_proyecto_codigo[0]['value'].'<br>';
326  $output .= '<b>Nombre del Proyecto:</b> '. $node->titulo_asignado.'<br>';
327
328  $output .= '<b>' . t('Estado del Seguimiento: ') . '</b>' . $state_name . '<br>';
329  $output .= '</fieldset>';
330
331  $fecha = explode('-', $node->field_proyecto_fecha_i[0]['value']);
332  $mes_inicio = (int) $fecha[1];
333  $mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
334
335  if ($form['#op_fields'] == 'comentario_metafisica' || $form['#op_fields'] == 'full') {
336    $output .= '<fieldset><legend>' . t('Indicadores de Meta Física del Proyecto') . '</legend>';
337
338  if ($node->field_proyecto_unidadm) {
339    $output .= '<b>' . t("Unidad de Medida del Proyecto: ") . '</b>';
340    $count = 0;
341    $output .= '<ul>';
342    foreach ($node->field_proyecto_unidadm as $key => $value) {
343      $count++;
344      $tid = $value['value'];
345      $term = taxonomy_get_term($tid);
346        $output .=  '<li>' . $count . '-) ' . $term->name . '</li>';
347    }
348    $output .= '</ul>';
349  }
350  if ($mes_inicio <= ($mes_final + 1)) {
351    $title[] = '<b>' . t('La unidad de medida se considera acumulativa:') . '</b>';
352    $column[] =  array('data' => drupal_render($form['es_acumulativo']));
353    $columns[] = $column;
354    $output .= theme('table', $title, $columns) . '<br>';
355  }
356    $output .=  '<div class="field-label"><b>' . t('Mes de Seguimiento Actual:') . '</b> ' . $meses[$form['#mes']] . '</div>' . theme('table', $header2, $rows2) ;
357    if($form['#metafisica_con_planificado_cero'] == 1){
358      $output .= '<br><b>Nota</b>: Si desea ingresar una cantidad de ejecutado de meta física mayor que cero, <i>primero</i> debe realizar una reformulación a la meta física de este mes.<br>';
359    }
360    $output .= drupal_render($form['comentario_metafisica']);
361    $output .= '</fieldset>';
362  }
363 
364  if ($form['#op_fields'] == 'comentario_informacionfinanciera') {
365    if ($mes_inicio <= ($mes_final + 1)) {
366      $title[] = '<b>' . t('La unidad de medida se considera acumulativa:') . '</b>';
367      $column[] =  array('data' => drupal_render($form['es_acumulativo']));
368      $columns[] = $column;
369      $output .= theme('table', $title, $columns) . '<br>';
370    }
371    $output .= '<fieldset><legend>' . t('Indicadores Financieros (por Acciones Específicas) del Proyecto') . '</legend>' . '<div class="field-label"><b>' . t('Mes de Seguimiento Actual:') . '</b> ' . $meses[$form['#mes']] . '</div>' . theme('table', $header, $rows) ;
372    $output .= '<br><b>Nota</b>: Para modificar los valores de <b>\'Comprometido\'</b>, <b>\'Causado\'</b> y <b>\'Pagado\'</b> debe ingresar por el Seguimiento de cada Acción Específica.<br>';
373    $output .= drupal_render($form['comentario_informacionfinanciera']);
374    $output .= '</fieldset>';
375  }
376
377  //beneficiarios
378  $muestra_beneficiarios = variable_get('proyectos_operativos_muestra_beneficiario', TRUE);
379  $muestra = false;
380  if ($muestra_beneficiarios && isset($form['comentario_metafisica'])) {
381    $header3 = array();
382    $header3[] = array('data' => t('Beneficiario'));
383    $rows3 = array();
384    foreach($node->field_proyecto_beneficiario as $id => $beneficiarios) {
385      if (isset($form['tipobeneficiario_'.$id])) {
386        $row3 = array();
387        $row3[] = array('data' => $beneficiarios['value'],);
388        $row3[] = array('data' => drupal_render($form['tipobeneficiario_'.$id]),);
389        $rows3[] = $row3;
390        $muestra = true;
391      }
392    }
393  }
394
395  if ($muestra_beneficiarios && $muestra || $form['#op_fields'] == 'full') {
396    $header3[] = array('data' => t('Cantidad de Beneficiarios durante el mes de ') . $meses[$form['#mes']]);
397    $output .= '<fieldset><legend>' . t('Beneficiarios del Proyecto (Durante la Ejecución)') . '</legend>' . '<div class="field-label"></div>' . theme('table', $header3, $rows3) ;
398    $output .= '</fieldset>';
399  }
400 
401  $output .= _mostrarleyendazonacritica();
402  $output .= '<br>';
403 
404  $output .= drupal_render($form);
405  return $output;
406}
407
408/*
409 * validacion del formulario
410 * Implementation of seguimiento_proyecto_datospormes_modificar_form_validate()
411 */
412function seguimiento_proyecto_datospormes_modificar_form_validate($form, &$form_state) {
413  $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
414  drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
415  $modulo_seguimiento_proyecto_y_aes_path = drupal_get_path('module', 'accion_especifica_de_proyecto_seguimiento');
416  drupal_add_js($modulo_seguimiento_proyecto_y_aes_path . '/js/seg_proyecto_validaciones_original.js');
417  drupal_add_js($form['#format_number'], 'setting');
418  //valores positivos meta física
419  if (isset($form_state['values']['cantidad_metafisica_ejecutado'])) {
420    if ($form_state['values']['cantidad_metafisica_ejecutado'] < 0) {
421      form_set_error('cantidad_metafisica_ejecutado', t('El valor \'Ejecutado\' en la meta física debe ser mayor o igual a cero.'));
422    }
423  }
424 
425  //valores positivos cantidad de beneficiarios durante el mes
426  if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE) && isset($form['comentario_metafisica'])) {
427    if (isset($form['#node']->field_proyecto_beneficiario)) {
428      foreach($form['#node']->field_proyecto_beneficiario as $id => $beneficiarios) {
429        if ($form_state['values']['tipobeneficiario_'.$id] < 0) {
430          form_set_error('tipobeneficiario_'.$id, t('La cantidad de beneficiarios debe ser mayor o igual a cero.'));
431        }
432      }
433    }
434  }
435}
436
437/*
438 * procesamiento del formulario
439 * Implementation of seguimiento_proyecto_datospormes_modificar_form_submit()
440 */
441function seguimiento_proyecto_datospormes_modificar_form_submit($form, &$form_state) {
442  global $user;
443  $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($form['#node'], $form['#mes']);
444  $es_acumulativo = isset($form_state['values']['es_acumulativo']) ? $form_state['values']['es_acumulativo'] : $form['#node']->es_acumulativo;
445  if (isset($consultaseguimientoactual['segmes']['id_seg'])) {
446    //actualizar
447    if ($form['#op_fields'] == 'comentario_metafisica' || $form['#op_fields'] == 'full' && isset($form_state['values']['cantidad_metafisica_ejecutado'])) {
448      $ss1=check_plain($form_state['values']['comentario_metafisica']);
449      $exe_query = db_query("UPDATE {seguimiento_proyecto} SET ejecutadometafisica = %d, infocomplementaria_metafisica = '%s' WHERE id_seg = %d", $form_state['values']['cantidad_metafisica_ejecutado'], $ss1, $consultaseguimientoactual['segmes']['id_seg']);
450    }
451    if($form['#op_fields'] == 'comentario_informacionfinanciera' || $form['#op_fields'] == 'full' && isset($form_state['values']['comentario_informacionfinanciera'])) {
452      $sss=check_plain($form_state['values']['comentario_informacionfinanciera']);
453      $exe_query = db_query("UPDATE {seguimiento_proyecto} SET infocomplementaria_metafinanciera = '%s' WHERE id_seg = %d", $sss, $consultaseguimientoactual['segmes']['id_seg']);
454    }
455    $id_seg = $consultaseguimientoactual['segmes']['id_seg'];
456    $exe_query = db_query("UPDATE {seguimiento_proyecto} SET acumulativo = %d WHERE nid = %d", $es_acumulativo, $form['#node']->nid);
457  }
458  else{
459    //insertar
460    if (isset($form_state['values']['cantidad_metafisica_ejecutado'])) {
461      $exe_query = db_query("INSERT INTO {seguimiento_proyecto} (nid, mes, ejecutadometafisica, infocomplementaria_metafisica, fecha, estado, uid, acumulativo) VALUES (%d, %d, %d, '%s', %d, %d, %d, %d)", $form['#node']->nid, $form['#mes'], $form_state['values']['cantidad_metafisica_ejecutado'], check_plain($form_state['values']['comentario_metafisica']), time(), $form['#state_creation'], $user->uid, $es_acumulativo);
462    }
463    else {
464      $exe_query = db_query("INSERT INTO {seguimiento_proyecto} (nid, mes, infocomplementaria_metafinanciera, fecha, estado, uid, acumulativo) VALUES (%d, %d, '%s', '%s', '%s', %d, %d)", $form['#node']->nid, $form['#mes'], check_plain($form_state['values']['comentario_informacionfinanciera']), time(), $form['#state_creation'], $user->uid, $es_acumulativo);
465    }
466      $id_seg = db_last_insert_id('seguimiento_proyecto', 'id_seg');
467      //construir transicion (creacion) -> ingresado
468      if (module_exists('workflow')) {
469        $wid = workflow_get_workflow_for_type('proyectos_operativos');
470        if ($wid) {
471          $estadoInicialFlujo = _workflow_creation_state($wid);
472          if($estadoInicialFlujo==$form['#state_creation']){
473         
474            //Siguiente estado
475            $transitions = workflow_allowable_transitions($estadoInicialFlujo);
476            unset($transitions[$estadoInicialFlujo]);
477
478            db_query("INSERT INTO {seguimiento_proyecto_transiciones_estados} (estado, estado_ant, comentario, date, id_seg, uid) VALUES (%d, %d, '%s', %d, %d, %d)", key($transitions), $estadoInicialFlujo, 'Creación del Seguimiento', time(), $id_seg, $user->uid);
479 
480            $ultima_id_transicion_seg = db_query("SELECT max(a.id_seg_transicion_estado) AS id FROM {seguimiento_proyecto_transiciones_estados} AS a WHERE a.id_seg = %d", $id_seg);
481            $seg_transicion_estado = db_fetch_object($ultima_id_transicion_seg);
482 
483            db_query('UPDATE {seguimiento_proyecto} SET estado = %d, id_seg_transicion_estado = %d WHERE id_seg = %d', key($transitions), $seg_transicion_estado->id, $id_seg);       
484          }     
485        }
486      }
487    }
488  if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE) && isset($form['comentario_metafisica'])) {
489    if (isset($form['#node']->field_proyecto_beneficiario)) {
490      foreach($form['#node']->field_proyecto_beneficiario as $id => $beneficiarios) {
491        $actualizada=0;
492        foreach($consultaseguimientoactual['seguimientos_beneficiarios'] as $seg_benef){
493          if($id == $seg_benef['posicion_beneficiario']){
494            //actualizar
495            $exe_query = db_query("UPDATE {seguimiento_proyecto_beneficiarios} SET cant_beneficiarios_mes = %d WHERE id_seg_beneficiario = %d", $form_state['values']['tipobeneficiario_'.$id], $seg_benef['id_seg_beneficiario']);
496              $actualizada=1;
497          }
498        }
499        if($actualizada==0){//revisar
500          //insertar
501          $exe_query = db_query("INSERT INTO {seguimiento_proyecto_beneficiarios} (id_seg, posicion_beneficiario, cant_beneficiarios_mes) VALUES (%d, %d, %d)", $id_seg, $id, $form_state['values']['tipobeneficiario_'.$id]);
502        }
503      }
504    }
505  }
506
507  if ($exe_query == true) {
508   
509    $meses = json_decode(MESES);
510   
511    $mes =$form['#mes'];
512    drupal_set_message(t('Se ha guardado el seguimiento del mes de ').strval($meses[$mes]).' para el proyecto operativo.');
513  }
514  if (!$_REQUEST['destination']) {
515    $form_state['redirect'] = 'proyectosop/' . $form['#node']->nid . '/seguimiento/proyecto';
516  }
517}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.