protected void Button_GUARDAR_Click(object sender, EventArgs e)
    {
        tools _tools = new tools();
        SecureQueryString QueryStringSeguro;
        QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro(), Request["data"].ToString());

        Decimal ID_REQUERIMIENTO = Convert.ToDecimal(QueryStringSeguro["requerimiento"]);

        String SI_COPPIAR_REQ = QueryStringSeguro["copia"];
        if (String.IsNullOrEmpty(SI_COPPIAR_REQ) == true)
        {
            SI_COPPIAR_REQ = null;
        }
        else
        {
            SI_COPPIAR_REQ = "si";
        }

        String accion = QueryStringSeguro["accion"].ToString();

        requisicion _requisicion = new requisicion(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        String TIPO_REQ = DropDownList_TIP_REQ.SelectedValue;
        DateTime FECHA_REQUERIDA = Convert.ToDateTime(TextBox_FECHA_REQUERIDA.Text);

        DateTime FECHA_REFERENCIA_SISTEMA = new DateTime();
        if (String.IsNullOrEmpty(TextBox_FechaReferenciaSistema.Text) == false)
        {
            FECHA_REFERENCIA_SISTEMA = Convert.ToDateTime(TextBox_FechaReferenciaSistema.Text);
        }

        int ID_EMPRESA = Convert.ToInt32(DropDownList_ID_EMPRESA.SelectedValue);
        int CANTIDAD = Convert.ToInt32(TextBox_CANTIDAD.Text);
        Decimal SALARIO = Convert.ToDecimal(TextBox_SALARIO.Text);

        String HORARIO = DropDownList_HORARIO.SelectedValue;

        String CIUDAD_CONTRATO;

        cliente _cliente = new cliente(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoEmpresaSeleccionada = _cliente.ObtenerEmpresaConIdEmpresa(Convert.ToDecimal(ID_EMPRESA));
        if (tablaInfoEmpresaSeleccionada.Rows.Count <= 0)
        {
            CIUDAD_CONTRATO = "";
        }
        else
        {
            DataRow filaTablaInfoEmpresaSeleccionada = tablaInfoEmpresaSeleccionada.Rows[0];
            CIUDAD_CONTRATO = filaTablaInfoEmpresaSeleccionada["CIU_EMP"].ToString();
        }

        String DURACION = DropDownList_DURACION.SelectedValue;

        String OBS_REQUERIMIENTO = TextBox_OBS_REQUERIMIENTO.Text;
        String CIUDAD_REQ = DropDownList_CIUDAD_REQ.SelectedValue;
        Decimal REGISTRO_PERFIL = Convert.ToDecimal(DropDownList_PERFILES.SelectedValue);

        if(HiddenField_ID_SERVICIO_RESPECTIVO.Value == "")
        {
            configurarMensajes(true, System.Drawing.Color.Orange);
            Label_MENSAJE.Text = "Para poder guardar la requisición, primero debe seleccionar el Servicio Respectivo. (En la sección DATOS DE CONTRATO DE SERVICIO / SERVICIO RESPECTIVO).";
        }
        else
        {
            Decimal ID_SERVICIO_RESPECTIVO = Convert.ToDecimal(HiddenField_ID_SERVICIO_RESPECTIVO.Value);

            Decimal REGISTRO_ENVIO_CANDIDATOS = Convert.ToDecimal(DropDownList_ENVIO_CANDIDATOS.SelectedValue);

            Decimal REGISTRO_REQUISICION;
            QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro());
            QueryStringSeguro["img_area"] = "seleccion";
            QueryStringSeguro["nombre_area"] = "RECLUTAMIENTO, SELECCIÓN Y REQUISICIONES";
            QueryStringSeguro["nombre_modulo"] = "REGISTRO, ATENCIÓN DE REQUISICIONES";

            if (accion == "nuevo")
            {
                REGISTRO_REQUISICION = _requisicion.AdicionarConRequerimientos(TIPO_REQ, FECHA_REQUERIDA, ID_EMPRESA, CANTIDAD, SALARIO, HORARIO, CIUDAD_CONTRATO, DURACION, OBS_REQUERIMIENTO, CIUDAD_REQ, REGISTRO_PERFIL, ID_SERVICIO_RESPECTIVO, REGISTRO_ENVIO_CANDIDATOS, FECHA_REFERENCIA_SISTEMA);

                if (_requisicion.MensajeError == null)
                {
                    EnviarCorreoAColaboradoresInteresados(REGISTRO_REQUISICION);

                    QueryStringSeguro["accion"] = "cargarNuevo";
                    QueryStringSeguro["requerimiento"] = REGISTRO_REQUISICION.ToString();

                    Response.Redirect("~/seleccion/registroAtencionRequisiciones.aspx?data=" + HttpUtility.UrlEncode(QueryStringSeguro.ToString()));
                }
                else
                {
                    configurarMensajes(true, System.Drawing.Color.Red);
                    Label_MENSAJE.Text = _cliente.MensajeError;
                }
            }
            else
            {
                if (accion == "copiarReq")
                {
                    REGISTRO_REQUISICION = _requisicion.AdicionarConRequerimientos(TIPO_REQ, FECHA_REQUERIDA, ID_EMPRESA, CANTIDAD, SALARIO, HORARIO, CIUDAD_CONTRATO, DURACION, OBS_REQUERIMIENTO, CIUDAD_REQ, REGISTRO_PERFIL, ID_SERVICIO_RESPECTIVO, REGISTRO_ENVIO_CANDIDATOS, FECHA_REFERENCIA_SISTEMA);

                    if (_requisicion.MensajeError == null)
                    {
                        QueryStringSeguro["accion"] = "cargarNuevo";
                        QueryStringSeguro["requerimiento"] = REGISTRO_REQUISICION.ToString();

                        Response.Redirect("~/seleccion/registroAtencionRequisiciones.aspx?data=" + HttpUtility.UrlEncode(QueryStringSeguro.ToString()));
                    }
                    else
                    {
                        configurarMensajes(true, System.Drawing.Color.Red);
                        Label_MENSAJE.Text = _cliente.MensajeError;
                    }
                }
                else
                {
                    if (accion == "modificar")
                    {
                        DataTable tablaRequerimientoActual = _requisicion.ObtenerComRequerimientoPorIdRequerimiento(ID_REQUERIMIENTO);

                        Boolean verificador_fecha = true;

                        if (verificador_fecha == true)
                        {
                            if (tablaRequerimientoActual.Rows.Count <= 0)
                            {
                                configurarMensajes(true, System.Drawing.Color.Orange);
                                Label_MENSAJE.Text = "No se encontró la información previa del requerimineto que se desea actualizar.";
                            }
                            else
                            {
                                DataRow filaTablaRequerimientoActual = tablaRequerimientoActual.Rows[0];

                                Boolean verificador = true;
                                verificador = _requisicion.ActualizarConRequerimeintos(Convert.ToInt32(ID_REQUERIMIENTO), TIPO_REQ, FECHA_REQUERIDA, CANTIDAD, SALARIO, HORARIO, DURACION, OBS_REQUERIMIENTO, CIUDAD_REQ, REGISTRO_PERFIL, ID_SERVICIO_RESPECTIVO, REGISTRO_ENVIO_CANDIDATOS, FECHA_REFERENCIA_SISTEMA);

                                if (verificador == false)
                                {
                                    configurarMensajes(true, System.Drawing.Color.Red);
                                    Label_MENSAJE.Text = _requisicion.MensajeError;
                                }
                                else
                                {
                                    QueryStringSeguro["accion"] = "cargarModificado";
                                    QueryStringSeguro["requerimiento"] = ID_REQUERIMIENTO.ToString();

                                    Response.Redirect("~/seleccion/registroAtencionRequisiciones.aspx?data=" + HttpUtility.UrlEncode(QueryStringSeguro.ToString()));
                                }
                            }
                        }
                    }
                }
            }
        }
    }