Conjunto 23b8d65 en sipes


Ignorar:
Fecha y hora:
08/02/2017 15:37:39 (hace 7 años)
Autor:
Cenditel <root@…>
Branches:
version-3.0
Children:
0207ec1
Parents:
72bc6f4
Mensaje:

se agrego la estructura que permite cambiar de estado todas las acciones especificas en conjunto con el proyecto

Fichero:
1 editado

Leyenda

No modificado
Añadido
Eliminado
  • 0.3-modules/proyectos_operativos_seguimiento/includes/proyecto/cambiodeestado_seg_proyecto_paginaconfirmacion.forms.inc

    r303fae2 r23b8d65  
    11<?php
    2 
    32  /**
    43  * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana
     
    3029 * Implementation of acciones_centralizadas_seguimiento_wk_tab_page_form()
    3130 */
    32 function cambiodeestado_seg_proyecto_paginaconfirmacion_form($form_state, $node, $mes = 0, $state) {
     31function cambiodeestado_seg_proyecto_paginaconfirmacion_form($form_state, $proyecto, $mes = 0) {
     32  $form = array();
    3333  $estados = _obtener_estados_seguimiento_mes();
    34  
    35   $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($node, $mes);
    36  
    37   $form = array();
    38   $form['#node'] = $node;
     34  $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($proyecto, $mes);
     35  $choices = _obtener_transiciones_disponibles_proyecto($proyecto, $mes);
     36  $ente_planificador = ente_planificador_leer_ente_planificadores($proyecto->field_proyecto_ente[0]['nid']);
     37  $hierarchical = variable_get('ente_planificador_hierarchical_count', 2);
     38
     39  $form['#proyecto'] = $proyecto;
    3940  $form['#segmes'] = $consultaseguimientoactual['segmes'];
    4041  $form['#nuevo_estado'] = $state;
    4142  $form['#estados'] = $estados['states'];
    4243  $form['#mes'] = $mes;
     44  if (sizeof($choices['transic']) == 1) {
     45    $form['prox_estado'] = array(
     46      '#type' => 'hidden',
     47      '#value' => $form['#segmes']['estado'],
     48      '#required' => TRUE,
     49    );
     50  }
     51  else {
     52    $form['prox_estado'] = array(
     53      '#type' => 'radios',
     54      '#title' => 'Cambiar al Estado',
     55      '#options' => $choices['transic'],
     56      '#default_value' => $form['#segmes']['estado'],
     57      '#required' => TRUE,
     58      '#ahah' => array(
     59        'path' => 'proyectosop/seguimiento/workflow_ahah/callback',
     60        'wrapper' => 'box-comment-ahah',
     61      ),
     62    );
     63  }
     64
    4365  $form['comentario'] = array(
    44     '#title' => t('Comentario'),
     66    '#title' => t('Comentario del Proyecto'),
    4567    '#type' => 'textarea',
    4668    '#default_value' => '',
     69    '#required' => FALSE,
     70    '#prefix' => '<div id="box-comment-ahah">',
     71    '#suffix' => '</div>',
    4772  );
    48  
    49   $expr_mach = _nombres_estado_y_transiciones($estados['states'][$state]);
    50   if(isset($expr_mach['nombre_corto'])){
    51     $message = t('¿Está seguro(a) que desea %accionarealizar?', array('%accionarealizar' => $expr_mach['nombre_largo']));
    52     $caption = '<p>'. t('This action cannot be undone.') .'</p>';
    53     $return_path = 'node/' . $node->nid . '/seguimiento_aeproyecto';
    54     return confirm_form($form, $message, $return_path, $caption, t('Aceptar'));
    55   }else{
    56     $message = t('¿Está seguro(a) que desea cambiar el seguimiento al estado %nombre_estado?', array('%nombre_estado' => $estados['states'][$state]));
    57     $caption = '<p>'. t('This action cannot be undone.') .'</p>';
    58     $return_path = 'node/' . $node->nid . '/seguimiento_aeproyecto';
    59     return confirm_form($form, $message, $return_path, $caption, t('Cambiar'));
    60   }
     73
     74  //aplicar prefijos segun la configuración del modulo
     75  if (isset($form['prox_estado']['#options'])) {
     76    $current = $consultaseguimientoactual['segmes']['estado'];
     77    foreach ($form['prox_estado']['#options'] as $sid => $state) {
     78      if (variable_get('proyectos_operativos_state_d_' . $current . '_' . $sid, FALSE)) {
     79        $form['#proyectos_operativos_states_d'][$sid] = $sid;
     80        $form['prox_estado']['#options'][$sid] = t(variable_get('proyectos_operativos_state_tdevueltos', 'Devuelto a @state'), array('@state' => $form['prox_estado']['#options'][$sid]));
     81      }
     82      else {
     83        $form['prox_estado']['#options'][$sid] = t(variable_get('proyectos_operativos_state_tndevueltos', 'Enviado a @state'), array('@state' => $form['prox_estado']['#options'][$sid]));
     84      }
     85    }
     86  }
     87  //excluir los estados de mayor nivel al ente planificador que posee el usuario
     88  for ($i = 1; $i < $hierarchical + 1; $i++) {
     89    if ($ente_planificador->tipo != $i) {
     90      $estado = variable_get('proyectos_operativos_state_form_' . $i, 0);
     91      if (isset($form['prox_estado']['#options'][$estado])) {
     92        unset($form['prox_estado']['#options'][$estado]);
     93      }
     94    }
     95  }
     96  if (!variable_get('accion_especifica_de_proyecto_seguimiento_aesep', 0)) {
     97    $acciones = array();
     98    $acciones_estado = array();
     99    $form['ae'] = array(
     100      '#type' => 'fieldset',
     101      '#title' => t('Acciones Específicas'),
     102      '#collapsible' => TRUE,
     103      '#collapsed' => FALSE,
     104    );
     105    foreach($proyecto->field_proyecto_accion_esp as $accion) {
     106      $accion_load = node_load($accion['nid']);
     107      $acciones_estado[$accion_load->nid] = _seguimiento_mesactual_partida_ae_deproyecto_load($accion_load, $mes);
     108      $acciones[$accion_load->nid] = $accion_load;
     109      $form['ae']['comentario_' . $accion_load->nid] = array(
     110        '#title' => t('Comentario de la AE: @nombre', array('@nombre' => $accion_load->titulo_asignado)),
     111        '#type' => 'textarea',
     112        '#default_value' => '',
     113      );
     114    }
     115    $form['#acciones'] = $acciones;
     116    $form['#acciones_estados'] = $acciones_estado;
     117  }
     118
     119
     120  $message = t('¿Está seguro(a) que desea cambiar el estado "@nombrestado" del seguimiento?', array('@nombrestado' => $choices['nombre_estado_actual']));
     121  $caption = '<p>'. t('This action cannot be undone.') .'</p>';
     122  $return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'proyectosop/' . $proyecto->nid . '/seguimiento/proyecto';
     123  return confirm_form($form, $message, $return_path, $caption, t('Cambiar'));
    61124}
    62125
     
    67130function cambiodeestado_seg_proyecto_paginaconfirmacion_form_submit($form, &$form_state) {
    68131  global $user;
    69  
    70   db_query("INSERT INTO {seguimiento_proyecto_transiciones_estados} (estado, estado_ant, comentario, date, id_seg, uid) VALUES (%d, %d, '%s', %d, %d, %d)", $form['#nuevo_estado'], $form['#segmes']['estado'], check_plain($form_state['values']['comentario']), time(), $form['#segmes']['id_seg'], $user->uid);
    71  
    72   $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", $form['#segmes']['id_seg']);
    73   $seg_transicion_estado = db_fetch_object ( $ultima_id_transicion_seg ) ;
    74  
    75   db_query('UPDATE {seguimiento_proyecto} SET estado = %d, id_seg_transicion_estado = %d WHERE id_seg = %d', $form['#nuevo_estado'], $seg_transicion_estado->id, $form['#segmes']['id_seg']);
    76  
    77   drupal_set_message(t('El seguimiento fue cambiado al estado @nombre_estado', array('@nombre_estado' => $form['#estados'][$form['#nuevo_estado']])));
    78   $form_state['redirect'] = 'node/' . $form['#node']->nid . '/fase_de_seguimiento_proyecto_y_aes/mes/'.$form['#mes'];
    79  
     132  $wid = workflow_get_workflow_for_type('proyectos_operativos');
     133  $states = workflow_get_states($wid);
     134  $mes_seguimiento =     $mes_fase_seg = _obtener_mes_fase_seguimiento_proyecto($form['#proyecto']);
     135
     136  $cnt_mes_seguimiento = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
     137
     138  for ($i=$mes_seguimiento; $i<=$cnt_mes_seguimiento; $i++) {
     139    $consultaseguimientoactual = _seguimiento_mesactual_proyecto_load($form['#proyecto'], $i);
     140    $form['#segmes'] = $consultaseguimientoactual['segmes'];
     141    db_query("INSERT INTO {seguimiento_proyecto_transiciones_estados} (estado, estado_ant, comentario, date, id_seg, uid) VALUES (%d, %d, '%s', %d, %d, %d)", $form_state['values']['prox_estado'], $form['#segmes']['estado'], check_plain($form_state['values']['comentario']), time(), $form['#segmes']['id_seg'], $user->uid);
     142
     143    $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", $form['#segmes']['id_seg']);
     144    $seg_transicion_estado = db_fetch_object($ultima_id_transicion_seg) ;
     145
     146    db_query('UPDATE {seguimiento_proyecto} SET estado = %d, id_seg_transicion_estado = %d WHERE id_seg = %d', $form_state['values']['prox_estado'], $seg_transicion_estado->id, $form['#segmes']['id_seg']);
     147    //Se actualiza el estado de las AE si no estan separadas
     148    if (!variable_get('accion_especifica_de_proyecto_seguimiento_aesep', 0)) {
     149      foreach($form['#acciones'] as $accion) {
     150        $acciones_estado[$accion->nid] = _seguimiento_mesactual_partida_ae_deproyecto_load($accion, $i);
     151        $form['#acciones_estados'] = $acciones_estado;
     152        db_query("INSERT INTO {seguimiento_aeproyecto_transiciones_estados} (estado, estado_ant, comentario, date, id_seg, uid) VALUES (%d, %d, '%s', %d, %d, %d)", $form_state['values']['prox_estado'], $form['#segmes']['estado'], check_plain($form_state['values']['comentario_' . $accion->nid]), time(), $form['#acciones_estados'][$accion->nid]['segmes']['id_seg'], $user->uid);
     153        $ultima_id_transicion_seg = db_query("SELECT max(a.id_seg_transicion_estado) AS id FROM {seguimiento_aeproyecto_transiciones_estados} AS a WHERE a.id_seg = %d", $form['#acciones_estados'][$accion->nid]['segmes']['id_seg']);
     154        $seg_transicion_estado = db_fetch_object($ultima_id_transicion_seg);
     155        db_query('UPDATE {seguimiento_aeproyecto} SET estado = %d, id_seg_transicion_estado = %d WHERE id_seg = %d', $form_state['values']['prox_estado'], $seg_transicion_estado->id, $form['#acciones_estados'][$accion->nid]['segmes']['id_seg']);
     156      }
     157    }
     158  }
     159  drupal_set_message(t('El seguimiento fue cambiado al estado @nombre_estado', array('@nombre_estado' => $form['#estados'][$form_state['values']['prox_estado']])));
     160  if (!$_REQUEST['destination']) {
     161    $form_state['redirect'] = 'proyectosop/' . $form['#proyecto']->nid . '/seguimiento';
     162  }
    80163}
     164
     165/**
     166 * Ahah for coment workflow
     167 */
     168function ahah_proyectosop_seguimiento_workflow_callback() {
     169  $form_state = array('storage' => NULL, 'submitted' => FALSE);
     170  $form_build_id = $_POST['form_build_id'];
     171  $form = form_get_cache($form_build_id, $form_state);
     172  $args = $form['#parameters'];
     173  $form_id = array_shift($args);
     174  $form['#post'] = $_POST;
     175  $form['#programmed'] = FALSE;
     176  $form_state['post'] = $_POST;
     177
     178  //field not required
     179  if ($_POST['prox_estado']) {
     180    $current = $form['#segmes']['estado'];
     181    if (variable_get('proyectos_operativos_state_d_' . $current . '_' . trim($_POST['prox_estado']), FALSE)) {
     182      $form['comentario']['#required'] = TRUE;
     183    }
     184    else {
     185      $form['comentario']['#required'] = FALSE;
     186    }
     187  }
     188
     189  form_set_cache($form_build_id, $form, $form_state);
     190  $form += array(
     191    '#post' => $_POST,
     192    '#programmed' => FALSE,
     193  );
     194  // Rebuild the form.
     195  $form = form_builder($_POST['form_id'], $form, $form_state);
     196
     197  $segui_form = array();
     198  $segui_form = $form['comentario'];
     199
     200  unset($segui_form['#prefix'], $segui_form['#suffix']); // Prevent duplicate wrappers.
     201  $output = drupal_render($segui_form);
     202
     203  print drupal_to_js(array('data' => $output, 'status' => true));
     204  exit();
     205}
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.