variable_get('proyectos_operativos_number_decimals', 0),
'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
);
$form['#format_number'] = array('format_number' => $format_number);
drupal_add_js($form['#format_number'], 'setting');
//reformulaciones aprobadas
$ref_aprob = _seguimiento_mesactual_partida_ae_deproyecto_reformulaciones_load($ae, $mes);
$meses = json_decode(MESES);
drupal_set_title(t('Seguimiento y Control de Acción Específica de Proyecto Operativo (Mes de '.$meses[$mes].')'));
$form = array();
$campo = '';
$form['#accion_especifica_de_proyecto_seguimiento'] = $settings['accion_especifica_de_proyecto_seguimiento'];
$form['#node'] = $ae;
$form['#proyecto'] = $proyecto;
$form['#mes'] = $mes;
$form['#ftypes'] = array(
'value' => t('January'),
'value_1' => t('February'),
'value_2' => t('March'),
'value_3' => t('April'),
'value_4' => t('May'),
'value_5' => t('June'),
'value_6' => t('July'),
'value_7' => t('August'),
'value_8' => t('September'),
'value_9' => t('Octuber'),
'value_10' => t('November'),
'value_11' => t('December'),
);
$output = '';
$consultaseguimientoactual = _seguimiento_mesactual_partida_ae_deproyecto_load($ae, $mes);
//estado
$estado = (isset($consultaseguimientoactual['segmes']['estado'])) ? $consultaseguimientoactual['segmes']['estado'] : -1;
$form['#state_creation'] = $estado;
//get first state
$form['#estado_inicial'] = 0;
if ($estado == -1 && module_exists('workflow')) {
$estados = _proyectos_operativos_reformulacion_obtiene_estados();
$estado_inicial = variable_get('proyectos_operativos_state_seguimiento', 0);
$form['#estado_inicial'] = _workflow_creation_state($estados['wid']);
if ($estados['wid']) {
if ($estado_inicial && $estados['states'][$estado_inicial]) {
$form['#state_creation'] = $estado_inicial;
}
else {
$form['#state_creation'] = $form['#estado_inicial'];
}
}
}
$header = array();
$header[] = array('data' => t('Partida'));
$header[] = array('data' => t('Asignado'));
$header[] = array('data' => t('Comprometido'));
$header[] = array('data' => t('Causado'));
$header[] = array('data' => t('Pagado'));
$header[] = array('data' => t('% de Inversión'));
$header[] = array('data' => t('Estatus de la Inversión'));
$header[] = array('data' => t('Información Complementaria'));
$grupos_form = array();
$alguna_partida_con_asignado_cero = 0;//bandera para verificar que si se muestra el mensajes sobre reformulaciones
$partidas_accion_especifica = $ae->field_accion_esp_programacion;
foreach ($partidas_accion_especifica as $partida) {
if ($partida['tid']) {
//calcular la variacion si existe
$variacion_por_ref = 0;
foreach ($ref_aprob as $id => $ref_aprob_i){
if(($ref_aprob_i['partida']==$partida['tid'])&&($ref_aprob_i['tomado_en_cuenta']==0)){
$variacion_por_ref += $ref_aprob_i['asignado_mes'];
$ref_aprob[$id]['tomado_en_cuenta']=1;
}
}
$term = taxonomy_get_term($partida['tid']);
// If this term's vocabulary supports localization.
if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
$term->name = tt("taxonomy:term:$term->tid:name", $term->name);
}
$valor1 = $mes > 0 ? 'value_' . $mes : 'value';
$comprometidov = 0;
$causadov = 0;
$pagadov = 0;
$asignadov = $partida[$valor1] + $variacion_por_ref;
// if($asignadov){
foreach ($consultaseguimientoactual['segmespartidas'] as $consultapartida) {//colocando valor por omision (consultado de base de datos si esta)
if($partida['tid']==$consultapartida['partida']){
$comprometidov = isset($consultapartida['comprometido']) && $consultapartida['comprometido'] > 0? $consultapartida['comprometido'] : 0;
$causadov = isset($consultapartida['causado']) && $consultapartida['causado'] > 0 ? $consultapartida['causado'] : 0;
$pagadov = isset($consultapartida['pagado']) && $consultapartida['pagado'] > 0 ? $consultapartida['pagado'] : 0;
}
}
/* }else{
$alguna_partida_con_asignado_cero = 1;
}
*/
$desabilitarasignado = $asignadov == 0 ? TRUE : FALSE;
$zonacritica = $asignadov ? ($causadov/$asignadov)*100 : -1;
$porczonacritica = $zonacritica >= 0 ? ($zonacritica * 100) . '%' : 'N/A';
$porczonacritica = round($porczonacritica, 2);
//$porczonacritica = $zonacritica >= 0 ? ($zonacritica) . '%' : $causadov ? 'N/D' : 'N/A'; //no definido|no agregado
$form[$partida['tid'] . '_asignado'] = array(
'#type' => 'textfield',
'#default_value' => $asignadov,
'#size' => 15,
'#disabled' => $desabilitarasignado,
'#attributes' => array('class' => 'number campo-asignado'),
);
$disabled = $asignadov == 0 ? TRUE : FALSE;
$form[$partida['tid'] . '_comprometido'] = array(
'#type' => 'textfield',
'#default_value' => $comprometidov,
'#size' => 15,
// '#disabled' => $disabled,
'#attributes' => array('class' => 'number', 'onchange' => "valpositivo('" . $partida['tid'] . '-comprometido' . "'); valentero('" . $partida['tid'] . '-comprometido' . "');"),
);
$form[$partida['tid'] . '_causado'] = array(
'#type' => 'textfield',
'#default_value' => $causadov,
'#size' => 15,
// '#disabled' => $disabled,
'#attributes' => array('class' => 'number indicadores-financieros-por-partidas', 'onchange' => "valpositivo('" . $partida['tid'] . '-causado' . "');calculaporc('" . $partida['tid'] . "');valentero('" . $partida['tid'] . '-causado' . "');"),
);
$form[$partida['tid'] . '_pagado'] = array(
'#type' => 'textfield',
'#default_value' => $pagadov,
'#size' => 15,
// '#disabled' => $disabled,
'#attributes' => array('class' => 'number', 'onchange' => "valpositivo('" . $partida['tid'] . '-pagado' . "');valentero('" . $partida['tid'] . '-pagado' . "');"),
);
$form[$partida['tid'] . '_porcen'] = array(
'#type' => 'textfield',
'#default_value' => $porczonacritica,
'#size' => 5,
'#disabled' => TRUE,
);
}
}
$form['#alguna_partida_con_asignado_cero']= $alguna_partida_con_asignado_cero;
$partidas_nuevas_por_ref = array();
//colocar partidas nuevas por reformulacion **********************************************************************************
foreach ($ref_aprob as $id_0 => $ref_aprob_i_0) {
if($ref_aprob_i_0['tomado_en_cuenta']==0){
$ref_aprob[$id_0]['tomado_en_cuenta']=1;
$partida_actual = $ref_aprob_i_0['partida'];
$partidas_nuevas_por_ref[] = $partida_actual;
//buscar todas las reformulaciones sobre esa partida en el mes actual
$variacion_por_ref = $ref_aprob_i_0['asignado_mes'];
foreach ($ref_aprob as $id => $ref_aprob_i){
if(($ref_aprob_i['partida']==$partida_actual)&&($ref_aprob_i['tomado_en_cuenta']==0)){
$variacion_por_ref += $ref_aprob_i['asignado_mes'];
$ref_aprob[$id]['tomado_en_cuenta']=1;
}
}
$term = taxonomy_get_term($partida_actual);
// If this term's vocabulary supports localization.
if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
$term->name = tt("taxonomy:term:$term->tid:name", $term->name);
}
$asignadov = $variacion_por_ref;
$comprometidov = 0;
$causadov = 0;
$pagadov = 0;
foreach ($consultaseguimientoactual['segmespartidas'] as $consultapartida) {//colocando valor por omision (consultado de base de datos si esta)
if($partida_actual==$consultapartida['partida']){
$comprometidov = isset($consultapartida['comprometido']) && $consultapartida['comprometido'] > 0? $consultapartida['comprometido'] : 0;
$causadov = isset($consultapartida['causado']) && $consultapartida['causado'] > 0 ? $consultapartida['causado'] : 0;
$pagadov = isset($consultapartida['pagado']) && $consultapartida['pagado'] > 0 ? $consultapartida['pagado'] : 0;
}
}
$desabilitarasignado = $asignadov == 0 ? TRUE : FALSE;
$zonacritica = $asignadov ? $causadov/$asignadov : -1;
$porczonacritica = $zonacritica >= 0 ? ($zonacritica * 100) . '%' : 'N/A';
$porczonacritica = round($porczonacritica, 2);
//$porczonacritica = $zonacritica >= 0 ? ($zonacritica * 100) . '%' : $causadov ? 'N/D' : 'N/A';
$form[$partida_actual . '_asignado'] = array(
'#type' => 'textfield',
'#default_value' => $asignadov,
'#size' => 15,
'#disabled' => $desabilitarasignado,
'#attributes' => array('class' => 'number campo-asignado'),
);
$disabled = $asignadov == 0 ? TRUE : FALSE;
$form[$partida_actual . '_comprometido'] = array(
'#type' => 'textfield',
'#default_value' => $comprometidov,
'#size' => 15,
// '#disabled' => $disabled,
'#attributes' => array('class' =>'number', 'onchange' => "valpositivo('" . $partida_actual . '-comprometido' . "'); valentero('" . $partida_actual . '-comprometido' . "');"),
);
$form[$partida_actual . '_causado'] = array(
'#type' => 'textfield',
'#default_value' => $causadov,
'#size' => 15,
'#disabled' => $disabled,
'#attributes' => array('class' =>'number indicadores-financieros-por-partidas','onchange' => "valpositivo('" . $partida_actual . '-causado' . "');calculaporc('" . $partida_actual . "');valentero('" . $partida_actual . '-causado' . "');"),
);
$form[$partida_actual . '_pagado'] = array(
'#type' => 'textfield',
'#default_value' => $pagadov,
'#size' => 15,
// '#disabled' => $disabled,
'#attributes' => array('class' =>'number','onchange' => "valpositivo('" . $partida_actual . '-pagado' . "');valentero('" . $partida_actual . '-pagado' . "');"),
);
$form[$partida_actual . '_porcen'] = array(
'#type' => 'textfield',
'#default_value' => $porczonacritica,
'#size' => 15,
'#disabled' => TRUE,
);
}
}
$form['#partidas_nuevas_por_ref'] = $partidas_nuevas_por_ref;
//***************************************************************************************************************************
//calcular variacion en el planificado de la meta fisica
$variacion_planificado_mes = _seguimiento_mesactual_metafisica_ae_deproyecto_reformulaciones_load($ae, $mes);
$valor_texto = $mes > 0 ? 'value_' . $mes : 'value';
$cant_metafisica_planif = $ae->field_accion_esp_metaf[0][$valor_texto] + $variacion_planificado_mes;
$disabled = $cant_metafisica_planif == 0 ? TRUE : FALSE;
$form['#metafisica_con_planificado_cero'] = $cant_metafisica_planif == 0 ? 1 : 0;
$form['cantidad_metafisica_planificado'] = array(
//'#title' => t('Ejecutado Meta Fisica'),
'#type' => 'textfield',
'#size' => 15,
'#default_value' => $cant_metafisica_planif,
'#attributes' => array('class' => 'number campo-asignado'),
);
$fecha = explode('-', $proyecto->field_proyecto_fecha_i[0]['value']);
$mes_inicio = (int) $fecha[1];
$mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
if ($mes_inicio <= ($mes_final + 1)) {
$form['acumulativo_metafisica_planificado'] = array(
//'#title' => t('Es acumulativo'),
'#type' => 'select',
'#options' => array(t('NO'), t('SI')),
'#default_value' => ($ae->es_acumulativo) ? 1 : 0,
'#required' => TRUE,
);
}
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
$seg_proyecto_path = drupal_get_path('module', 'accion_especifica_de_proyecto_seguimiento');
drupal_add_js($seg_proyecto_path . '/js/seguimiento_proyecto.js');
$cant_metafisica_ej = isset($consultaseguimientoactual['segmes']['ejecutadometafisica']) ? $consultaseguimientoactual['segmes']['ejecutadometafisica'] : 0;
$form['cantidad_metafisica_ejecutado'] = array(
//'#title' => t('Ejecutado Meta Fisica'),
'#type' => 'textfield',
'#size' => 15,
'#default_value' => $cant_metafisica_ej,
// '#disabled' => $disabled,
'#attributes' => array('class' => 'number cantidad_metafisica_ejecutado', 'onchange' => "valpositivo('" . 'cantidad-metafisica-ejecutado' . "');calculaporc_metafisica('" . "');valenterometafisica('cantidad-metafisica-ejecutado')"),
);
$zonacritica1 = $cant_metafisica_planif ? $cant_metafisica_ej/$cant_metafisica_planif : -1;
$porczonacritica1 = $zonacritica1 >= 0 ? ($zonacritica1 * 100) . '%' : 'N/A';
$porczonacritica1 = round($porczonacritica1, 2);
//$porczonacritica1 = $zonacritica1 >= 0 ? ($zonacritica1 * 100) . '%' : $cant_metafisica_ej ? 'N/D' : 'N/A';
$form['cantidad_metafisica_porcen'] = array(
'#type' => 'textfield',
'#default_value' => $porczonacritica1,
'#size' => 15,
'#disabled' => TRUE,
);
if ($field == 'comentario_metafisica' || $field == 'full') {
$infocomplementaria_fisica = isset($consultaseguimientoactual['segmes']['infocomplementaria_metafisica']) ? $consultaseguimientoactual['segmes']['infocomplementaria_metafisica'] : '';
$form['comentario_metafisica'] = array(
'#title' => t('Información Complementaria (Meta Física)'),
'#type' => 'textarea',
'#default_value' => $infocomplementaria_fisica,
);
}
$infocomplementaria_financiera = isset($consultaseguimientoactual['segmes']['infocomplementaria_metafinanciera']) ? $consultaseguimientoactual['segmes']['infocomplementaria_metafinanciera'] : '';
if ($field == 'comentario_informacionfinanciera' || $field == 'full') {
$form['comentario_informacionfinanciera'] = array(
'#title' => t('Información Complementaria (Financiera)'),
'#type' => 'textarea',
'#default_value' => $infocomplementaria_financiera,
);
}
$form['buttons'] = array(
'#prefix' => '
',
'#suffix' => '
',
);
$form['buttons']['submit'] = array(
'#type' => 'submit',
'#value' => t('Guardar'),
);
$form['buttons']['cancel'] = array('#value' => l('Cancelar', 'proyectosop/' . $form['#proyecto']->nid . '/seguimiento/ae' . $form['#node']->nid . '/partidas/' . $form['#mes']));
return $form;
}
/**
* Implementation of hook_theme().
*/
function accion_especifica_de_proyecto_seguimiento_theme() {
return array(
'seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form' => array(
'arguments' => array('form' => NULL),
),
);
}
/**
* Formato para el formulario (campos en tablas y carga de algunos datos)
*/
function theme_seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form($form) {
$node= $form['#node'];
$meses = json_decode(MESES);
$header = array();
$header[] = array('data' => t('Partida'));
$header[] = array('data' => t('Asignado'));
$header[] = array('data' => t('Comprometido'));
$header[] = array('data' => t('Causado'));
$header[] = array('data' => t('Pagado'));
$header[] = array('data' => t('% de Inversión'));
$header[] = array('data' => t('Estatus de la Inversión'));
$rows = array();
$partidas_accion_especifica = $node->field_accion_esp_programacion;
foreach ($partidas_accion_especifica as $partida) {
if ($partida['tid']) {
$term = taxonomy_get_term($partida['tid']);
// If this term's vocabulary supports localization.
if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
$term->name = tt("taxonomy:term:$term->tid:name", $term->name);
}
$asignadov = $form[$partida['tid'] . '_asignado']['#value'];
$causadov = $form[$partida['tid'] . '_causado']['#value'];
$estatus_ejecucion = _calcularzonacritica($asignadov, $causadov);
$porczonacritica = $estatus_ejecucion['porczonacritica'];
$textozona = $estatus_ejecucion['textozona'];
$colorzona = $estatus_ejecucion['colorzona'];
$colorfontzona = $estatus_ejecucion['colorfontzona'];
$row = array();
$row[] = array('data' => $term->name,);
$row[] = array('data' => drupal_render($form[$partida['tid'] . '_asignado']),);
$row[] = array('data' => drupal_render($form[$partida['tid'] . '_comprometido']),);
$row[] = array('data' => drupal_render($form[$partida['tid'] . '_causado']),);
$row[] = array('data' => drupal_render($form[$partida['tid'] . '_pagado']),);
$row[] = array('data' => drupal_render($form[$partida['tid'] . '_porcen']),);
$row[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona, 'id' => $partida['tid'] . '-inversion-form',);
$rows[] = $row;
}
}
$partidas_nuevas_por_ref = $form['#partidas_nuevas_por_ref'];
//colocar partidas nuevas por reformulacion **********************************************************************************
foreach ($partidas_nuevas_por_ref as $id_0 => $ref_aprob_i_0){
//buscar todas las reformulaciones sobre esa partida
$partida_actual = $ref_aprob_i_0;
$term = taxonomy_get_term($partida_actual);
// If this term's vocabulary supports localization.
if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) {
$term->name = tt("taxonomy:term:$term->tid:name", $term->name);
}
$asignadov = $form[$partida_actual . '_asignado']['#value'];
$causadov = $form[$partida_actual . '_causado']['#value'];
$estatus_ejecucion = _calcularzonacritica($asignadov, $causadov);
$porczonacritica = $estatus_ejecucion['porczonacritica'];
$textozona = $estatus_ejecucion['textozona'];
$colorzona = $estatus_ejecucion['colorzona'];
$colorfontzona = $estatus_ejecucion['colorfontzona'];
$row = array();
$row[] = array('data' => $term->name,);
$row[] = array('data' => drupal_render($form[$partida_actual . '_asignado']),);
$row[] = array('data' => drupal_render($form[$partida_actual . '_comprometido']),);
$row[] = array('data' => drupal_render($form[$partida_actual . '_causado']),);
$row[] = array('data' => drupal_render($form[$partida_actual . '_pagado']),);
$row[] = array('data' => drupal_render($form[$partida_actual . '_porcen']),);
$row[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona, 'id' => $partida_actual . '-inversion-form',);
$rows[] = $row;
}
$header2 = array();
$header2[] = array('data' => t('Planificado'));
$fecha = explode('-', $proyecto->field_proyecto_fecha_i[0]['value']);
$mes_inicio = (int) $fecha[1];
$mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
$header2[] = array('data' => t('Ejecutado'));
$header2[] = array('data' => t('% de Logro'));
$header2[] = array('data' => t('Estatus de la Inversión'));
$rows2 = array();
$planificadov = $form['cantidad_metafisica_planificado']['#value'];
$ejecutadov = $form['cantidad_metafisica_ejecutado']['#value'];
$estatus_ejecucion = _calcularzonacritica($planificadov, $ejecutadov);
$porczonacritica = $estatus_ejecucion['porczonacritica'];
$textozona = $estatus_ejecucion['textozona'];
$colorzona = $estatus_ejecucion['colorzona'];
$colorfontzona = $estatus_ejecucion['colorfontzona'];
$row2 = array();
$row2[] = array('data' => drupal_render($form['cantidad_metafisica_planificado']),);
$fecha = explode('-', $proyecto->field_proyecto_fecha_i[0]['value']);
$mes_inicio = (int) $fecha[1];
$mes_final = variable_get('seguimiento_proyectos_cantidad_meses_seguimiento', 0);
$row2[] = array('data' => drupal_render($form['cantidad_metafisica_ejecutado']),);
$row2[] = array('data' => drupal_render($form['cantidad_metafisica_porcen']),);
$row2[] = array('data' => $textozona, 'style' => 'font-weight: bold;background:' . $colorzona . '; color:' . $colorfontzona, 'id' => 'metafisica-inversion-form',);
$rows2[] = $row2;
$output = '';
$output .= '
';
$grupo = explode('-', $form['#grupo']['label']);
//cargar el nodo del proyecto al que pertenece
$nodoproyecto = $form['#proyecto'];
$output .= '';
$output .= '';
$add = false;
if (isset($form['comentario_metafisica'])) {
$output .= '';
}
if (isset($form['comentario_informacionfinanciera'])) {
if ($mes_inicio <= ($mes_final + 1) && empty($add)) {
$title[] = '' . t('La unidad de medida se considera acumulativa:') . '';
$column[] = array('data' => drupal_render($form['acumulativo_metafisica_planificado']));
$columns[] = $column;
$output .= theme('table', $title, $columns) . '
';
}
$output .= '';
}
$output .= _mostrarleyendazonacritica();
$output .= '
';
$output .= drupal_render($form);
return $output;
}
/*
* validacion del formulario
* Implementation of seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form_validate()
*/
function seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form_validate($form, &$form_state) {
//valores positivos meta fisica
if ($form_state['values']['cantidad_metafisica_ejecutado'] < 0) {
form_set_error('cantidad_metafisica_ejecutado', t('El valor \'Ejecutado\' en la meta física debe ser mayor o igual a cero'));
}
$proyectos_reformulacion_path = drupal_get_path('module', 'proyectos_reformulacion');
$proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos');
drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js');
drupal_add_js($proyectos_reformulacion_path . '/js/proyectos_reformulacion.js');
drupal_add_js($form['#format_number'], 'setting');
$modulo_seguimiento_proyecto_y_aes_path = drupal_get_path('module', 'accion_especifica_de_proyecto_seguimiento');
drupal_add_js($modulo_seguimiento_proyecto_y_aes_path . '/js/seg_proyecto_validaciones_original.js');
/*
print '';
print_r($form);
print '
';
asas();
*/
$node= $form['#node'];
$partidas_accion_especifica = $node->field_accion_esp_programacion;
foreach ($partidas_accion_especifica as $partida) {
if ($partida['tid']) {
//comprometido < causado
if ($form_state['values'][$partida['tid'] . '_comprometido'] < $form_state['values'][$partida['tid'] . '_causado']) {
//$output .= '
Nota: La relacion entre las cantidades debe ser: \'Comprometido\' >= \'Causado\' >= \'Pagado\'';
form_set_error($partida['tid'] . '_comprometido', t("El valor 'Comprometido @comprometido' debe ser mayor o igual que el valor de 'Causado @causado'.", array("@comprometido" => $form_state['values'][$partida['tid'] . '_comprometido'], "@causado" => $form_state['values'][$partida['tid'] . '_causado'])));
}
//causado < pagado
if ($form_state['values'][$partida['tid'] . '_causado'] < $form_state['values'][$partida['tid'] . '_pagado']) {
//$output .= '
Nota: La relacion entre las cantidades debe ser: \'Comprometido\' >= \'Causado\' >= \'Pagado\'';
form_set_error($partida['tid'] . '_causado', t("El valor 'Causado @causado' debe ser mayor o igual que el valor de 'Pagado @pagado'.", array("@causado" => $form_state['values'][$partida['tid'] . '_causado'], "@pagado" => $form_state['values'][$partida['tid'] . '_pagado'])));
}
//asignado < comprometido
if ($form_state['values'][$partida['tid'] . '_asignado'] || $form_state['values'][$partida['tid'] . '_comprometido']) {
if ($form_state['values'][$partida['tid'] . '_asignado'] < $form_state['values'][$partida['tid'] . '_comprometido']) {
form_set_error($partida['tid'] . '_comprometido', t("El valor 'Comprometido @comprometido' debe ser menor o igual al valor de 'Asignado @asignado.", array("@comprometido" => $form_state['values'][$partida['tid'] . '_asignado'], "@asignado" => $form_state['values'][$partida['tid'] . '_comprometido'])));
}
}
//asignado < causado
if ($form_state['values'][$partida['tid'] . '_asignado'] || $form_state['values'][$partida['tid'] . '_causado']) {
if ($form_state['values'][$partida['tid'] . '_asignado'] < $form_state['values'][$partida['tid'] . '_causado']) {
form_set_error($partida['tid'] . '_causado', t("El valor 'Causado @causado' debe ser menor o igual al valor de 'Asignado @asignado'.", array("@causado" => $form_state['values'][$partida['tid'] . '_asignado'], "@asignado" => $form_state['values'][$partida['tid'] . '_causado'])));
}
}
//asignado < pagado
if ($form_state['values'][$partida['tid'] . '_asignado'] || $form_state['values'][$partida['tid'] . '_pagado']) {
if ($form_state['values'][$partida['tid'] . '_asignado'] < $form_state['values'][$partida['tid'] . '_pagado']) {
form_set_error($partida['tid'] . '_pagado', t("El valor 'Pagado @pagado' debe ser menor o igual al valor de 'Asignado @asignado'.", array("@pagado" => $form_state['values'][$partida['tid'] . '_pagado'], "@asignado" => $form_state['values'][$partida['tid'] . '_asignado'])));
}
}
//valores positivos
if ($form_state['values'][$partida['tid'] . '_comprometido'] < 0) {
form_set_error($partida['tid'] . '_comprometido', t("El valor 'Comprometido @comprometido' debe ser mayor o igual a cero", array("@comprometido" => $form_state['values'][$partida['tid'] . '_comprometido'])));
}
if ($form_state['values'][$partida['tid'] . '_causado'] < 0) {
form_set_error($partida['tid'] . '_causado', t("El valor 'Causado @causado' debe ser mayor o igual a cero", array("@causado" => $form_state['values'][$partida['tid'] . '_causado'])));
}
if ($form_state['values'][$partida['tid'] . '_pagado'] < 0) {
form_set_error($partida['tid'] . '_pagado', t("El valor 'Pagado @pagado' debe ser mayor o igual a cero", array("@pagado" => $form_state['values'][$partida['tid'] . '_pagado'])));
}
}
}
/*
//partidas nuevas
$partidas_nuevas_por_ref = $form['#partidas_nuevas_por_ref'];
foreach ($partidas_nuevas_por_ref as $id_0 => $ref_aprob_i_0) {
//comprometido < causado
if ($form_state['values'][$ref_aprob_i_0 . '_comprometido'] < $form_state['values'][$ref_aprob_i_0 . '_causado']) {
//$output .= '
Nota: La relacion entre las cantidades debe ser: \'Comprometido\' >= \'Causado\' >= \'Pagado\'';
form_set_error($ref_aprob_i_0 . '_comprometido', t('El valor \'Comprometido\' debe ser mayor o igual que el valor de \'Causado\'. '));
}
//causado < pagado
if ($form_state['values'][$ref_aprob_i_0 . '_causado'] < $form_state['values'][$ref_aprob_i_0 . '_pagado']) {
//$output .= '
Nota: La relacion entre las cantidades debe ser: \'Comprometido\' >= \'Causado\' >= \'Pagado\'';
form_set_error($ref_aprob_i_0 . '_causado', t('El valor \'Causado\' debe ser mayor o igual que el valor de \'Pagado\'. '));
}
//asignado < comprometido
if ($form_state['values'][$ref_aprob_i_0 . '_asignado'] < $form_state['values'][$ref_aprob_i_0 . '_comprometido']) {
form_set_error($ref_aprob_i_0 . '_comprometido', t('El valor \'Comprometido\' debe ser menor o igual al valor de \'Asignado\'.'));
}
//asignado < causado
if ($form_state['values'][$ref_aprob_i_0 . '_asignado'] < $form_state['values'][$ref_aprob_i_0 . '_causado']) {
form_set_error($ref_aprob_i_0 . '_causado', t('El valor \'Causado\' debe ser menor o igual al valor de \'Asignado\'. '));
}
//asignado < pagado
if ($form_state['values'][$ref_aprob_i_0 . '_asignado'] < $form_state['values'][$ref_aprob_i_0 . '_pagado']) {
form_set_error($ref_aprob_i_0 . '_pagado', t('El valor \'Pagado\'debe ser menor o igual al valor de \'Asignado\'. '));
}
//valores positivos
if ($form_state['values'][$ref_aprob_i_0 . '_comprometido'] < 0) {
form_set_error($ref_aprob_i_0 . '_comprometido', t('El valor \'Comprometido\' debe ser mayor o igual a cero'));
}
if ($form_state['values'][$ref_aprob_i_0 . '_causado'] < 0) {
form_set_error($partida['tid'] . '_causado', t('El valor \'Causado\' debe ser mayor o igual a cero'));
}
if ($form_state['values'][$ref_aprob_i_0 . '_pagado'] < 0) {
form_set_error($partida['tid'] . '_pagado', t('El valor \'Pagado\' debe ser mayor o igual a cero'));
}
}
*/
}
/*
* procesamiento del formulario
* Implementation of seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form_submit()
*/
function seguimiento_accion_especifica_deproyecto_partidaspormes_modificar_form_submit($form, &$form_state) {
$consultaseguimientoactual = _seguimiento_mesactual_partida_ae_deproyecto_load($form['#node'], $form['#mes']);
global $user;
if(isset($consultaseguimientoactual['segmes']['id_seg'])) {
//actualizar
$es_acumulativo = isset($form_state['values']['acumulativo_metafisica_planificado']) ? $form_state['values']['acumulativo_metafisica_planificado'] : $form['#node']->es_acumulativo;
if (isset($form_state['values']['comentario_metafisica'])) {
$ss1=check_plain($form_state['values']['comentario_metafisica']);
$exe_query = db_query("UPDATE {seguimiento_aeproyecto} SET ejecutadometafisica = %d, infocomplementaria_metafisica = '%s', acumulativa = %d WHERE id_seg = %d", $form_state['values']['cantidad_metafisica_ejecutado'], $ss1, $es_acumulativo, $consultaseguimientoactual['segmes']['id_seg']);
}
if (isset($form_state['values']['comentario_informacionfinanciera'])) {
$sss=check_plain($form_state['values']['comentario_informacionfinanciera']);
$exe_query = db_query("UPDATE {seguimiento_aeproyecto} SET ejecutadometafisica = %d, infocomplementaria_metafinanciera = '%s', acumulativa = %d WHERE id_seg = %d", $form_state['values']['cantidad_metafisica_ejecutado'], $sss, $es_acumulativo, $consultaseguimientoactual['segmes']['id_seg']);
}
$id_seg = $consultaseguimientoactual['segmes']['id_seg'];
$exe_query = db_query("UPDATE {seguimiento_aeproyecto} SET acumulativa = %d WHERE nid = %d", $es_acumulativo, $form['#node']->nid);
}else{
$es_acumulativo = isset($form_state['values']['acumulativo_metafisica_planificado']) ? $form_state['values']['acumulativo_metafisica_planificado'] : $form['#node']->es_acumulativo;
//insertar
$exe_query = db_query("INSERT INTO {seguimiento_aeproyecto} (nid, mes, ejecutadometafisica, infocomplementaria_metafisica, infocomplementaria_metafinanciera, fecha, estado, uid, acumulativa) VALUES (%d, %d, %d, '%s', '%s', %d, %d, %d, %d)", $form['#node']->nid, $form['#mes'], $form_state['values']['cantidad_metafisica_ejecutado'], check_plain($form_state['values']['comentario_metafisica']), check_plain($form_state['values']['comentario_informacionfinanciera']), time(), $form['#state_creation'], $user->uid, $es_acumulativo);
$id_seg = db_last_insert_id('seguimiento_aeproyecto', 'id_seg');
//construir transicion (creacion) -> ingresado
if (module_exists('workflow') && $form['#estado_inicial']) {
$wid = workflow_get_workflow_for_type('proyectos_operativos');
$estadoInicialFlujo = _workflow_creation_state($wid);
//Siguiente estado
$transitions = workflow_allowable_transitions($estadoInicialFlujo);
unset($transitions[$estadoInicialFlujo]);
db_query("INSERT INTO {seguimiento_aeproyecto_transiciones_estados} (estado, estado_ant, comentario, date, id_seg, uid) VALUES (%d, %d, '%s', %d, %d, %d)", key($transitions), $form['#estado_inicial'], t('Creación del Seguimiento del mes @mes de la AE: @nodo ', array('@mes' => $form['#mes'], '@nodo' => check_plain($form['#node']->titulo_asignado))), time(), $id_seg, $user->uid);
$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", $id_seg);
$seg_transicion_estado = db_fetch_object ( $ultima_id_transicion_seg ) ;
db_query('UPDATE {seguimiento_aeproyecto} SET estado = %d, id_seg_transicion_estado = %d WHERE id_seg = %d', key($transitions), $seg_transicion_estado->id, $id_seg);
}
}
//echo $id_seg.'
';
$node= $form['#node'];
$partidas_accion_especifica = $node->field_accion_esp_programacion;
foreach ($partidas_accion_especifica as $partida) {
$suma = $form_state['values'][$partida['tid'] . '_comprometido'] + $form_state['values'][$partida['tid'] . '_causado'] +$form_state['values'][$partida['tid'] . '_pagado'];
$actualizada=0;
foreach ($consultaseguimientoactual['segmespartidas'] as $consultapartida) {//colocando valor por omision (consultado de base de datos si esta)
if($partida['tid']==$consultapartida['partida']){
//actualizar
$exe_query = db_query("UPDATE {seguimiento_aeproyecto_partida} SET comprometido = %d, causado = %d, pagado = %d WHERE id_seg_partida = %d", $form_state['values'][$partida['tid'] . '_comprometido'], $form_state['values'][$partida['tid'] . '_causado'], $form_state['values'][$partida['tid'] . '_pagado'], $consultapartida['id_seg_partida']);
$actualizada=1;
}
}
if($actualizada==0){//revisar
//insertar
if ($partida['tid'] && $suma) {
$exe_query = db_query("INSERT INTO {seguimiento_aeproyecto_partida} (id_seg, partida, comprometido, causado, pagado) VALUES (%d, %d, %d, %d, %d)", $id_seg, $partida['tid'], $form_state['values'][$partida['tid'] . '_comprometido'], $form_state['values'][$partida['tid'] . '_causado'], $form_state['values'][$partida['tid'] . '_pagado']);
}
}
}
//partidas nuevas
$partidas_nuevas_por_ref = $form['#partidas_nuevas_por_ref'];
foreach ($partidas_nuevas_por_ref as $id_0 => $ref_aprob_i_0) {
$suma = $form_state['values'][$ref_aprob_i_0 . '_comprometido'] + $form_state['values'][$ref_aprob_i_0 . '_causado'] +$form_state['values'][$ref_aprob_i_0 . '_pagado'];
$actualizada=0;
foreach ($consultaseguimientoactual['segmespartidas'] as $consultapartida) {//colocando valor por omision (consultado de base de datos si esta)
if($ref_aprob_i_0==$consultapartida['partida']){
//actualizar
$exe_query = db_query("UPDATE {seguimiento_aeproyecto_partida} SET comprometido = %d, causado = %d, pagado = %d WHERE id_seg_partida = %d", $form_state['values'][$ref_aprob_i_0 . '_comprometido'], $form_state['values'][$ref_aprob_i_0 . '_causado'], $form_state['values'][$ref_aprob_i_0 . '_pagado'], $consultapartida['id_seg_partida']);
$actualizada=1;
}
}
if($actualizada==0){//revisar
//insertar
if ($ref_aprob_i_0 && $suma) {
$exe_query = db_query("INSERT INTO {seguimiento_aeproyecto_partida} (id_seg, partida, comprometido, causado, pagado) VALUES (%d, %d, %d, %d, %d)", $id_seg, $ref_aprob_i_0, $form_state['values'][$ref_aprob_i_0 . '_comprometido'], $form_state['values'][$ref_aprob_i_0 . '_causado'], $form_state['values'][$ref_aprob_i_0 . '_pagado']);
}
}
}
if ($exe_query == true) {
$meses = json_decode(MESES);
$mes =$form['#mes'];
drupal_set_message(t('Se ha guardado el seguimiento del mes de @mes para la AE: @title', array('@mes' => $meses[$mes], '@title' => check_plain($form['#node']->titulo_asignado))));
}
if (!$_REQUEST['destination']) {
$form_state['redirect'] = 'proyectosop/' . $form['#proyecto']->nid . '/seguimiento';
}
}