array( 'name' => t('Acciones Especificas'), 'description' => '', 'has_title' => TRUE, 'title_label' => 'Nombre de la acción especifica', 'has_body' => FALSE, 'body_label' => 'Cuerpo', 'module' => 'accion_especifica', ), ); } /* * hook_form_alter() */ function accion_especifica_form_alter(&$form, $form_state, $form_id) { if ($form_id == 'proyectos_operativos_admin_settings') { $node_type = content_types('accion_especifica'); $fields = $node_type['fields']; $campos = array(); foreach($fields as $id => $field) { if ($field['module'] == 'number') { $campos[$id] = $field['widget']['label']; } } $form['accion_especifica'] = array( '#type' => 'fieldset', '#title' => t('Accion Específica'), '#collapsible' => TRUE, '#collapsed' => FALSE, '#weight' => 0, ); $form['accion_especifica']['accion_especifica_allow_ponderation'] = array( '#title' => t('Permitir Acciones Especificas con igual ponderación'), '#type' => 'checkbox', '#default_value' => variable_get('accion_especifica_allow_ponderation', 0), ); $form['accion_especifica']['accion_especifica_100_ponderation'] = array( '#title' => t('No permitir Acciones Especificas con ponderación mayor o igual a 100'), '#type' => 'checkbox', '#default_value' => variable_get('accion_especifica_100_ponderation', 0), ); $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4); $numbers = array(); for($i = 1; $i < 21; $i++) { $numbers[$i] = $i; } $form['accion_especifica']['financiamiento'] = array( '#type' => 'fieldset', '#title' => t('Financiamiento'), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['accion_especifica']['financiamiento']['accion_especifica_number_fields'] = array( '#title' => t('Cantidad de Campos'), '#type' => 'select', '#default_value' => $accion_especifica_number_fields, '#options' => $numbers, ); if ($accion_especifica_number_fields) { for($i = 0; $i < $accion_especifica_number_fields; $i++) { $form['accion_especifica']['financiamiento']['financiamiento_' . $i] = array( '#type' => 'fieldset', '#title' => t('field %number', array('%number' => $i + 1)), '#collapsible' => TRUE, '#collapsed' => FALSE, ); $form['accion_especifica']['financiamiento']['financiamiento_' . $i]['accion_especifica_financiamiento_label_' . $i] = array( '#type' => 'textfield', '#title' => t('Titulo del financiamiento'), //'#required' => TRUE, '#weight' => -9, '#default_value' => variable_get('accion_especifica_financiamiento_label_' . $i, ''), ); $form['accion_especifica']['financiamiento']['financiamiento_' . $i]['accion_especifica_financiamiento_options_' . $i] = array( '#type' => 'checkboxes', '#options' => $campos, '#default_value' => variable_get('accion_especifica_financiamiento_options_' . $i, array()), '#title' => t('Campos a recolectar'), '#multiple' => TRUE, ); //print_r(variable_get('accion_especifica_financiamiento_options_' . $i, array())); } } //print ""; /* print "
";
    print_r($campos);
    print "
"; */ } } /* * Implementation of hook_form() */ function accion_especifica_form(&$node, $form_state) { return node_content_form($node, $form_state); } /* * Implementation of hook_access() */ function accion_especifica_access($op, $node, $account) { if ($op == 'view') { return user_access('admin planificador'); } if ($op == 'create') { return user_access('admin planificador'); } if ($op == 'update') { return user_access('admin planificador'); } if ($op == 'delete') { return user_access('admin planificador'); } } /** * Implementation of hook_theme(). */ function accion_especifica_theme() { return array( 'proyectos_operativos_accion_especifica_crear_form' => array( 'arguments' => array('form' => NULL), ), ); } /** * Implementation of proyectos_operativos_accion_especifica_crear_form(). * Crear formulario de accion especifica */ function proyectos_operativos_accion_especifica_crear_form(&$form_state, $proyecto = 0, $ae = 0) { if (!$ae) { drupal_set_title('Nueva Acción Especifica'); $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; drupal_set_title(t('Acción Especifica: @titulo', array('@titulo' => $ae_leido->field_accion_titulo[0]['value']))); } $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos.js'); drupal_add_js($proyectos_operativos_path . '/js/accion_especifica.js'); $format_number = array( 'decimals' => 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 = array(); $form['#format_number'] = array('format_number' => $format_number); drupal_add_js($form['#format_number'], 'setting'); $form['#node'] = $ae_leido; $form['#proyecto'] = $proyecto; $fields_form = array(); $ejecucion = 0; $acciones_especificas = array(); $montos = 0; $porcentajes = array(); 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){ if ($id_value != 'tid') { $montos +=$mesp; } } } } $acciones_especificas[$accion_load->nid] = $accion_load; $porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1; $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; $et = 100 - $ejecucion; $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']))); $form['#monto_restante'] = $monto_restante; $form['#ejecucion'] = $ejecucion; $form['#porcentajes'] = $porcentajes; $form['#montos'] = $montos; $form['#acciones_especificas'] = $acciones_especificas; $node_type = content_types('accion_especifica'); $fields = $node_type['fields']; $field_form = array(); $arreglo = array( 'field_accion_titulo' => 'field_accion_titulo', 'field_accion_esp_fechai' => 'field_accion_esp_fechai', 'field_accion_esp_fechaf' => 'field_accion_esp_fechaf', 'field_accion_esp_ejecutor' => 'field_accion_esp_ejecutor', 'field_accion_esp_bien' => 'field_accion_esp_bien', ); 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_d_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $field_id; } } } /*caMBIAR*/ /* $form['title'] = array( '#type' => 'textfield', '#title' => t('Nombre de la Acción'), '#required' => TRUE, '#default_value' => $form['#node']->title, '#maxlength' => 255, '#weight' => -5, ); */ 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); } } $field_form = array(); $arreglo = array( 'field_accion_esp_unidadm' => 'field_accion_esp_unidadm', 'field_accion_esp_ponderacion' => 'field_accion_esp_ponderacion', 'field_accion_esp_metaf' => 'field_accion_esp_metaf', ); 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_di_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $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); } } $field_form = array(); $arreglo = array( 'field_accion_esp_programacion' => 'field_accion_esp_programacion', ); 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_p_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $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); } } //financiamiento $arreglo_financiamiento = array(); $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4); if ($accion_especifica_number_fields > 0) { for($i = 0; $i < $accion_especifica_number_fields; $i++) { $arreglo_financiamiento['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_label_' . $i, '') ? variable_get('accion_especifica_financiamiento_label_' . $i, '') : ''; $arreglo_financiamiento_fields['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_options_' . $i, array()); } } /* $arreglo_financiamiento = array( 'ordinarios' => t('Recursos Ordinarios'), 'propios' => t('Recursos Propios'), 'transferencias' => t('Transferencias'), 'otros' => t('Otros'), ); $arreglo_financiamiento_fields = array(); $arreglo_financiamiento_fields['ordinarios'] = array( 'field_accion_esp_transferencias' => 'field_accion_esp_transferencias', 'field_accion_esp_creditosa' => 'field_accion_esp_creditosa', 'field_accion_esp_mcti' => 'field_accion_esp_mcti', ); $arreglo_financiamiento_fields['propios'] = array( 'field_accion_esp_venta_act' => 'field_accion_esp_venta_act', 'field_accion_esp_activos' => 'field_accion_esp_activos', 'field_accion_esp_flujocaja' => 'field_accion_esp_flujocaja', 'field_accion_esp_ventapro' => 'field_accion_esp_ventapro', ); $arreglo_financiamiento_fields['transferencias'] = array( 'field_accion_esp_donaciones' => 'field_accion_esp_donaciones', ); $arreglo_financiamiento_fields['otros'] = array( 'field_accion_esp_gobernacion' => 'field_accion_esp_gobernacion', 'field_accion_esp_misionc' => 'field_accion_esp_misionc', 'field_accion_esp_bid_fona' => 'field_accion_esp_bid_fona', 'field_accion_esp_fonacit' => 'field_accion_esp_fonacit', 'field_accion_esp_fonden' => 'field_accion_esp_fonden', 'field_accion_esp_locti' => 'field_accion_esp_locti', 'field_accion_esp_fondoidi' => 'field_accion_esp_fondoidi', 'field_accion_esp_capitalrie' => 'field_accion_esp_capitalrie', 'field_accion_esp_infocentro' => 'field_accion_esp_infocentro', 'field_accion_esp_fidetel' => 'field_accion_esp_fidetel', ); */ $total_financiamiento = 0; $fields_financiamiento = array(); foreach($arreglo_financiamiento as $id_items => $titulo) { if (is_array($arreglo_financiamiento_fields[$id_items]) && count($arreglo_financiamiento_fields[$id_items])) { $form[$id_items] = array( '#type' => 'fieldset', '#title' => $titulo, ); $field_form = array(); /* $arreglo = array( 'field_accion_esp_transferencias' => 'field_accion_esp_transferencias', 'field_accion_esp_creditosa' => 'field_accion_esp_creditosa', 'field_accion_esp_mcti' => 'field_accion_esp_mcti', ); */ if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo_financiamiento_fields[$id_items]) && $arreglo_financiamiento_fields[$id_items][$field_id]) { $field_form[] = $field_id; $fields_form[] = $field_id; $fields_financiamiento[] = $field_id; } } } $total_local = 0; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { if (isset($form['#node']->{$field_id}[0]['value'])) { $total_local += $form['#node']->{$field_id}[0]['value']; } $field = content_fields($field_id, 'accion_especifica'); $form['#field_info'][$field_id] = $field; $form[$id_items] += (array) content_field_form($form, $form_state, $field); } } $form['#campo_' . $id_items] = $field_form; $form['total_' . $id_items] = array( '#type' => 'textfield', '#title' => t('SUBTOTAL'), '#default_value' => $total_local, '#size' => 25, '#attributes' => array('class' => 'totales-financieros subtotales'), ); $total_financiamiento += $total_local; } } /* $form['ordinarios'] = array( '#type' => 'fieldset', '#title' => t('Recursos Ordinarios'), ); $fields_financiamiento = array(); $field_form = array(); $arreglo = array( 'field_accion_esp_transferencias' => 'field_accion_esp_transferencias', 'field_accion_esp_creditosa' => 'field_accion_esp_creditosa', 'field_accion_esp_mcti' => 'field_accion_esp_mcti', ); 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; $fields_financiamiento[] = $field_id; } elseif (variable_get('proyectos_operativos_ac_fo_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $field_id; $fields_financiamiento[] = $field_id; } } } $total_ordinarios = 0; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { if (isset($form['#node']->{$field_id}[0]['value'])) { $total_ordinarios += $form['#node']->{$field_id}[0]['value']; } $field = content_fields($field_id, 'accion_especifica'); $form['#field_info'][$field_id] = $field; $form['ordinarios'] += (array) content_field_form($form, $form_state, $field); } } $form['#campo_ordinarios'] = $field_form; $form['total_ordinarios'] = array( '#type' => 'textfield', '#title' => t('SUBTOTAL'), '#default_value' => $total_ordinarios, '#size' => 25, '#attributes' => array('class' => 'totales-financieros subtotales'), ); $form['propios'] = array( '#type' => 'fieldset', '#title' => t('Recursos Propios'), ); $field_form = array(); $arreglo = array( 'field_accion_esp_venta_act' => 'field_accion_esp_venta_act', 'field_accion_esp_activos' => 'field_accion_esp_activos', 'field_accion_esp_flujocaja' => 'field_accion_esp_flujocaja', 'field_accion_esp_ventapro' => 'field_accion_esp_ventapro', ); 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; $fields_financiamiento[] = $field_id; } elseif (variable_get('proyectos_operativos_ac_fp_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $field_id; $fields_financiamiento[] = $field_id; } } } $total_propios = 0; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { if (isset($form['#node']->{$field_id}[0]['value'])) { $total_propios += $form['#node']->{$field_id}[0]['value']; } $field = content_fields($field_id, 'accion_especifica'); $form['#field_info'][$field_id] = $field; $form['propios'] += (array) content_field_form($form, $form_state, $field); } } $form['#campo_propios'] = $field_form; $form['total_propios'] = array( '#type' => 'textfield', '#title' => t('SUBTOTAL'), '#default_value' => $total_propios, '#size' => 25, '#attributes' => array('class' => 'totales-financieros subtotales'), ); $form['transferencias'] = array( '#type' => 'fieldset', '#title' => t('Transferencias'), ); $field_form = array(); $arreglo = array( 'field_accion_esp_donaciones' => 'field_accion_esp_donaciones', ); 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; $fields_financiamiento[] = $field_id; } elseif (variable_get('proyectos_operativos_ac_fd_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $field_id; $fields_financiamiento[] = $field_id; } } } $total_transferencias = 0; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { if (isset($form['#node']->{$field_id}[0]['value'])) { $total_transferencias += $form['#node']->{$field_id}[0]['value']; } $field = content_fields($field_id, 'accion_especifica'); $form['#field_info'][$field_id] = $field; $form['transferencias'] += (array) content_field_form($form, $form_state, $field); } } $form['#campo_transferencias'] = $field_form; $form['total_transferencias'] = array( '#type' => 'textfield', '#title' => t('SUBTOTAL'), '#default_value' => $total_transferencias, '#size' => 25, '#attributes' => array('class' => 'totales-financieros subtotales'), ); $form['otros'] = array( '#type' => 'fieldset', '#title' => t('Otros'), ); $field_form = array(); $arreglo = array( 'field_accion_esp_gobernacion' => 'field_accion_esp_gobernacion', 'field_accion_esp_misionc' => 'field_accion_esp_misionc', 'field_accion_esp_bid_fona' => 'field_accion_esp_bid_fona', 'field_accion_esp_fonacit' => 'field_accion_esp_fonacit', 'field_accion_esp_fonden' => 'field_accion_esp_fonden', 'field_accion_esp_locti' => 'field_accion_esp_locti', 'field_accion_esp_fondoidi' => 'field_accion_esp_fondoidi', 'field_accion_esp_capitalrie' => 'field_accion_esp_capitalrie', 'field_accion_esp_infocentro' => 'field_accion_esp_infocentro', 'field_accion_esp_fidetel' => 'field_accion_esp_fidetel', ); 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; $fields_financiamiento[] = $field_id; } elseif (variable_get('proyectos_operativos_ac_fo_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $field_id; $fields_financiamiento[] = $field_id; } } } $total_otros = 0; $clase = 'total_otros'; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { if (isset($form['#node']->{$field_id}[0]['value'])) { $total_otros += $form['#node']->{$field_id}[0]['value']; } $field = content_fields($field_id, 'accion_especifica'); $form['#field_info'][$field_id] = $field; $form['otros'] += (array) content_field_form($form, $form_state, $field); } } $form['#campo_otros'] = $field_form; $form['total_otros'] = array( '#type' => 'textfield', '#title' => t('SUBTOTAL'), '#default_value' => $total_otros, '#size' => 25, '#attributes' => array('class' => 'totales-financieros subtotales'), ); */ //$total_financiamiento = $total_otros + $total_transferencias + $total_propios + $total_ordinarios; $form['total_financiamiento'] = array( '#type' => 'textfield', '#default_value' => $total_financiamiento, '#size' => 25, '#attributes' => array('class' => 'totales-financieros'), ); $field_form = array(); $arreglo = array( 'field_accion_esp_localizacion' => 'field_accion_esp_localizacion', 'field_accion_esp_latitud' => 'field_accion_esp_latitud', 'field_accion_esp_longitud' => 'field_accion_esp_longitud', ); 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_fp_' . $field_id, FALSE)) { $field_form[] = $field_id; $fields_form[] = $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); } } $form['#arreglo_financiamiento'] = $arreglo_financiamiento; $form['#arreglo_financiamiento_fields'] = $arreglo_financiamiento_fields; $form['#fields_financiamiento'] = $fields_financiamiento; $form['#proyectos_operativos_fields'] = $fields_form; $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['registrar'] = array( '#type' => 'submit', '#default_value' => t('Aceptar'), '#weight' => 100, ); $form['buttons']['cancelar'] = array( '#type' => 'submit', '#default_value' => t('Cancelar'), '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'), '#weight' => 101, ); $form['#proyecto_completed'] = FALSE; $form['#after_build'] = array('proyectos_operativos_accion_especifica_crear_form_after_build'); if (!isset($form['#node']->nid) && $form['#ejecucion'] >= 100 && $form['#monto_restante'] == 0){ //add aditional variables $aux_form = array(); $aux_form['#node'] = $form['#node']; $aux_form['#proyecto'] = $form['#proyecto']; $aux_form['#mensaje_mostrar'] = $form['#mensaje_mostrar']; $aux_form['#ejecucion'] = $form['#ejecucion']; $aux_form['#porcentajes'] = $form['#porcentajes']; $aux_form['#montos'] = $form['#montos']; $aux_form['#acciones_especificas'] = $form['#acciones_especificas']; $aux_form['#campo_ordinarios'] = $form['#campo_ordinarios']; $aux_form['#campo_propios'] = $form['#campo_propios']; $aux_form['#campo_transferencias'] = $form['#campo_transferencias']; $aux_form['#campo_otros'] = $form['#campo_otros']; $aux_form['#fields_financiamiento'] = $form['#fields_financiamiento']; $form = $aux_form; $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['siguiente'] = array( '#type' => 'submit', '#default_value' => t('Terminar'), '#weight' => 100, ); $form['buttons']['cancelar'] = array( '#type' => 'submit', '#default_value' => t('Cancelar'), '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'), '#weight' => 101, ); $form['#proyecto_completed'] = TRUE; } $form['#submit'] = array('proyectos_operativos_accion_especifica_crear_form_submit'); return $form; } /* * proyectos_operativos_accion_especifica_crear_form_after_build * Funcion para agregar funciones javascript al formulario */ function proyectos_operativos_accion_especifica_crear_form_after_build($form, &$form_state) { if (is_array($form['#arreglo_financiamiento']) && count($form['#arreglo_financiamiento'])) { foreach ($form['#arreglo_financiamiento'] as $id => $macro) { $nuid = str_replace('_', '-', $id); if (is_array($form['#campo_' . $id]) && count($form['#campo_' . $id])) { foreach ($form['#campo_' . $id] as $field_id) { $form[$id][$field_id][0]['value']['#attributes']['class'] .= ' total-' . $nuid; if (!isset($form[$id][$field_id]['value']['#attributes']['onchange'])) { $form[$id][$field_id][0]['value']['#attributes']['onchange'] = "sumarff('" . $nuid . "');sumarff1('subtotales');"; } else { $form[$id][$field_id][0]['value']['#attributes']['onchange'] .= ";sumarff('" . $nuid . "');sumarff1('subtotales');"; } } } } } return $form; } /* * proyectos_operativos_accion_especifica_crear_form_validate * Validar accion especifica */ function proyectos_operativos_accion_especifica_crear_form_validate($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar') || $op == t('Terminar')) { return; } $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos.js'); drupal_add_js($proyectos_operativos_path . '/js/accion_especifica.js'); drupal_add_js($form['#format_number'], '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) { form_set_error('field_accion_esp_ponderacion', t('La ponderaciones de la Acción especifica debe ser mayor que cero')); } //validamos que la ponderacion no sea mayor a 100 $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 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']])) { form_set_error('field_accion_esp_ponderacion', t('Ya existe una acción especifica con esta ponderación')); } //validamos que las fechas esten dentro de la del proyecto if ($form_state['values']['field_accion_esp_fechai'][0]['value'] > $form_state['values']['field_accion_esp_fechai'][0]['value']) { 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')); } if ($form['#proyecto']->field_proyecto_fecha_i[0]['value'] > $form_state['values']['field_accion_esp_fechai'][0]['value']) { 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']))); } if ($form['#proyecto']->field_proyecto_fecha_f[0]['value'] < $form_state['values']['field_accion_esp_fechai'][0]['value']) { 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']))); } if ($form['#proyecto']->field_proyecto_fecha_i[0]['value'] > $form_state['values']['field_accion_esp_fechaf'][0]['value']) { 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']))); } if ($form['#proyecto']->field_proyecto_fecha_f[0]['value'] < $form_state['values']['field_accion_esp_fechaf'][0]['value']) { 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']))); } //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 (isset($form_state['values']['field_accion_esp_metaf'])) { $suma = 0; for ($i = 0; $i < 12; $i++) { if ($mes_inicio <= $i && $mes_final >= $i) { $valor = $i ? 'value_' . $i : 'value'; $suma += $form_state['values']['field_accion_esp_metaf'][0][$valor]; } } if (!$suma) { 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')); } } //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) { 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]; } } } } if (!$sumap) { form_set_error('field_accion_esp_programacion', t('La Programación Financiera de la Acción especifica debe tener al menos un valor')); } } $sumaf = 0; //validamos el financiamiento $first_field = FALSE; if (count($form['#fields_financiamiento'])) { 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'], '.', ''); $value = preg_replace('@[^-0-9]@', '', $start); if ($start && $start != $value) { form_set_error($field_id, t('Solo números enteros son permitidos en la fuente de financiamiento.')); } if ($value < 0) { form_set_error($field_id, t('Solo números positivos son permitidos en la fuente de financiamiento.')); } if (!$first_field) { $first_field = $field_id; } if (isset($form_state['values'][$field_id][0]['value'])) { $sumaf += $form_state['values'][$field_id][0]['value']; } } } 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 ($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 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'])))); } 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'])))); } } /* * proyectos_operativos_accion_especifica_crear_form_submit * Guardar accion especifica */ function proyectos_operativos_accion_especifica_crear_form_submit($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar')) { drupal_set_message(t('Se cancelo el ingreso de la AE.')); $form_state['redirect'] = 'proyectosopedit/' . $form['#proyecto']->nid; return; } if ($op == t('Terminar')) { $form_state['redirect'] = 'proyectosopedit/' . $form['#proyecto']->nid . '/finacieros'; return; } if (module_exists('hs_content_taxonomy')) { foreach ($form['#field_info'] as $field_name => $field_info) { if ($field_info['widget']['type'] == 'content_taxonomy_hs') { // Change format of values to the one Content Taxonomy expects if (is_array($form_state['values'][$field_name]['tids'])) { $values = array(); foreach($form_state['values'][$field_name]['tids'] as $tid) { $values[] = array('value' => $tid); array_unshift($form_state['values'][$field_name], array('value' => $tid)); } $form_state['values'][$field_name]['tids'] = $values; } else { $values[] = array('value' => $form_state['values'][$field_name]['tids']); array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids'])); $form_state['values'][$field_name]['tids'] = $values; } } } } global $user; $field_form = $form['#proyectos_operativos_fields']; module_load_include('inc', 'node', 'node.pages'); $node_load = $form['#node']; //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 (isset($form_state['values']['field_accion_esp_metaf'])) { $suma = 0; for ($i = 0; $i < 12; $i++) { $valor = $i ? 'value_' . $i : 'value'; if ($mes_inicio <= $i && $mes_final >= $i) { $suma += $form_state['values']['field_accion_esp_metaf'][0][$valor]; } else { $form_state['values']['field_accion_esp_metaf'][0][$valor] = 0; } } } if (isset($form_state['values']['field_accion_esp_programacion'])) { $suma = 0; foreach($form_state['values']['field_accion_esp_programacion'] as $id => $programacion) { for ($i = 0; $i < 12; $i++) { $valor = $i ? 'value_' . $i : 'value'; if ($mes_inicio <= $i && $mes_final >= $i) { $suma += $form_state['values']['field_accion_esp_metaf'][$id][$valor]; } else { $form_state['values']['field_accion_esp_programacion'][$id][$valor] = 0; } } } } $form_values = $form_state['values']; //cambiar $node_load->title = t('Acción Específica del proyecto @nombreproyecto', array('@nombreproyecto' => $form['#proyecto']->title)); if (is_array($field_form) && count($field_form)) { foreach ($field_form as $field_id) { if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) { foreach($form_values[$field_id] as $id => $value) { if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) { unset($form_values[$field_id][$id]['_error_element']); } } $node_load->{$field_id} = $form_values[$field_id]; } } } $nid = FALSE; if ($node_load->nid) { $nid = TRUE; $texto = t('Modificada la Acción especifica del proyecto'); $node_load->log = $texto; drupal_set_message($texto); } else { //se agrega el enlace al proyecto $node_load->uid = $user->uid; $node_load->field_accion_esp_proyecto = array(); $node_load->field_accion_esp_proyecto[] = array('nid' => $form['#proyecto']->nid); $node_load->field_accion_esp_ente = array(); $node_load->field_accion_esp_ente[] = array('nid' => $form['#proyecto']->field_proyecto_ente[0]['nid']); $texto = t('Agregada la Acción especifica del proyecto'); $node_load->log = $texto; drupal_set_message($texto); } $node_load->revision = 1; node_save($node_load); if (!$nid) { $proyecto = $form['#proyecto']; if (!$proyecto->field_proyecto_accion_esp[0]['nid']) { $proyecto->field_proyecto_accion_esp = array(); } $proyecto->field_proyecto_accion_esp[] = array('nid' => $node_load->nid); $proyecto->revision = 1; $proyecto->log = t('Agregada Acción especifica del proyecto'); node_save($proyecto); } if (!$_REQUEST['destination']) { // add redirect $form_state['redirect'] = 'proyectosopedit/' . $form['#proyecto']->nid . '/ae'; } } /** * @ingroup themeable * @see proyectos_operativos_accion_especifica_crear_form */ function theme_proyectos_operativos_accion_especifica_crear_form($form) { $output = ''; if (!$form['#proyecto_completed']) { $output .= '
' . $form['#mensaje_mostrar'] . '
'; $output .= '
' . t('Definición de la Acción Especifica') . '' . drupal_render($form['field_accion_titulo']) . drupal_render($form['field_accion_esp_fechai']) . drupal_render($form['field_accion_esp_fechaf']) . drupal_render($form['field_accion_esp_ejecutor']) . drupal_render($form['field_accion_esp_bien']) . '
'; $output .= '
' . t('Distribución de la Meta Fisica de la acción Especifica') . '' . drupal_render($form['field_accion_esp_unidadm']) . drupal_render($form['field_accion_esp_ponderacion']) . drupal_render($form['field_accion_esp_metaf']) . '
'; $output .= drupal_render($form['distribucion']); $output .= '
' . t('Programación Financiera de la Acción') . '' . drupal_render($form['field_accion_esp_programacion']); $ftypes = array( 'tid' => t('Account'), 'value' => t('Ene'), 'value_1' => t('Feb'), 'value_2' => t('Mar'), 'value_3' => t('Abr'), 'value_4' => t('May'), 'value_5' => t('Jun'), 'value_6' => t('Jul'), 'value_7' => t('Aug'), 'value_8' => t('Sep'), 'value_9' => t('Oct'), 'value_10' => t('Nov'), 'value_11' => t('Dic'), ); $output .= '
'; $i = -1; foreach ($ftypes as $ftype => $label) { if($ftype != 'tid') { $output .= '
0
'; } else { $output .= '
' . t('TOTAL') . '
'; } $i++; } $output .= '
0
'; $output .= '
'; $rows = array(); $row = array(); $row1 = array(); $cantidad_campos = count($form['#arreglo_financiamiento']); if (is_array($form['#arreglo_financiamiento']) && count($form['#arreglo_financiamiento'])) { foreach ($form['#arreglo_financiamiento'] as $id => $macro) { $row[] = array('data' => drupal_render($form[$id]), ); $row1[] = array('data' => drupal_render($form['total_' . $id]), ); } $rows[] = $row; $rows[] = $row1; $row = array(); $row[] = array('data' => '' . t('TOTAL') . ':', 'colspan' => $cantidad_campos - 1, 'align' => 'right'); $row[] = array('data' => drupal_render($form['total_financiamiento']), ); $rows[] = $row; $output .= '
' . t('Fuentes de Financiamiento') . '' . theme('table', array(), $rows) . '
'; } $output .= '
' . t('Localización Geográfica') . '' . 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); } $header = array(); $cab = 6; $header[] = array('data' => t('Nro')); $header[] = array('data' => t('Nombre')); $header[] = array('data' => t('Fecha de inicio')); $header[] = array('data' => t('Fecha de Fin')); $header[] = array('data' => t('%')); $header[] = array('data' => t('Acción')); $rows = array(); $i = 1; if (count($form['#acciones_especificas'])) { $suma = 0; foreach($form['#acciones_especificas'] as $accion) { if (isset($accion->nid)) { $row = array(); $row[] = array('data' => $i,); $row[] = array('data' => $accion->titulo_asignado,); //Se cambia el formato de la fecha $fecha = explode(' ', $accion->field_accion_esp_fechai[0]['value']); $formato = explode('-', $fecha[0]); $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],); //Se cambia el formato de la fecha $fecha = explode(' ', $accion->field_accion_esp_fechaf[0]['value']); $formato = explode('-', $fecha[0]); $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],); $suma += $accion->field_accion_esp_ponderacion[0]['value']; $row[] = array('data' => $accion->field_accion_esp_ponderacion[0]['value'],); $links = array(); $links[] = l(t('Modificar'), 'proyectosopedit/' . $form['#proyecto']->nid . '/ae/' . $accion->nid . '/edit'); $links[] = l(t('Eliminar'), 'proyectosopedit/' . $form['#proyecto']->nid . '/ae/' . $accion->nid . '/remove'); $row[] = array('data' => theme('item_list', $links),); $rows[] = $row; $i++; } } } if (count($rows)) { $output .= theme('table', $header, $rows); } //no mostrar el formulario si ya se alcanzo lo asignado if ($form['#proyecto_completed']) { $output .= drupal_render($form); } $output .= l('Agregar nueva Acción Especifica', 'proyectosopedit/' . $form['#proyecto']->nid . '/ae/'); return $output; }